Skip to content

fix(sandbox): pass shell=False explicitly in bubblewrap capability probe - #2497

Draft
seonghobae wants to merge 1 commit into
mainfrom
fix/sandboxed-web-e2e-explicit-shell-false
Draft

seonghobae wants to merge 1 commit into
mainfrom
fix/sandboxed-web-e2e-explicit-shell-false

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Minimal successor to #2129 (closed: its branch deleted 16,869 lines across 123 files unrelated to the stated fix; the closing comment asked for a fresh minimal PR).

  • scripts/ci/sandboxed_web_e2e.py: _probe_isolation_capability passes shell=False explicitly to subprocess.run. Behavior is unchanged (it is already the default); this matches the other two subprocess.run calls in the file and removes a Bandit-style ambiguity.
  • tests/test_sandboxed_web_e2e.py: both probe tests assert kwargs["shell"] is False.
  • .jules/sentinel.md: records the learning.

Evidence

  • git diff --stat origin/main...HEAD: 3 files, +11/-0.
  • pytest tests/test_sandboxed_web_e2e.py: 68 passed.

Developer experience: every subprocess call in the sandbox helper now states its shell posture explicitly.
User experience: no observable change.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Hc6PJfasfUdUFzngfdMpWJ

Summary by CodeRabbit

  • 보안 개선
    • 격리 기능을 확인하는 과정에서 명령이 셸을 거치지 않고 직접 실행되도록 변경했습니다. 입력된 인자가 셸 해석을 거치지 않아 안전하게 처리됩니다.
    • 관련 검증 과정에서 셸을 사용하지 않는 설정이 적용되었는지 확인하도록 점검을 보완했습니다. 기존 격리 기능 점검과 셸 선택 확인도 유지됩니다.

Minimal successor to closed #2129, whose branch carried an unrelated
123-file deletion. Only the explicit shell=False argument, its mock
assertions, and the sentinel learning are kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Hc6PJfasfUdUFzngfdMpWJ
@coderabbitai

coderabbitai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: e12efea6-311a-44c9-bd3e-150b6f5ce008

📥 Commits

Reviewing files that changed from the base of the PR and between 3295c25 and 0f10fb4.

📒 Files selected for processing (3)
  • .jules/sentinel.md
  • scripts/ci/sandboxed_web_e2e.py
  • tests/test_sandboxed_web_e2e.py

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

Bubblewrap 격리 기능 검사에서 subprocess 호출에 shell=False를 명시합니다. 관련 테스트 두 개가 이 설정을 확인하며, 보안 기록도 갱신합니다.

Changes

격리 기능 검사

Layer / File(s) Summary
검사 실행 및 검증
scripts/ci/sandboxed_web_e2e.py, tests/test_sandboxed_web_e2e.py, .jules/sentinel.md
Bubblewrap 검사 호출에 shell=False를 지정합니다. 두 테스트가 해당 옵션을 검증하며, 보안 기록에 변경 내용을 추가합니다.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Refactor

Suggested reviewers: cursoragent

Merge Risk: ⚪ Minimal · up to 0f10f

The probe’s execution behavior is unchanged, and the tests check that shell execution remains disabled. No material merge risk is identified.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 60.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 2 files. (1 skipped: 1… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 bubblewrap capability probe에 shell=False를 명시하는 핵심 변경을 정확하고 간결하게 설명합니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 60.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 5 functions across 2 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copy link
Copy Markdown
Contributor Author

Exact-head admission correction — 0f10fb43fd810e35ca085328a52a3c3154136619

Ready is review admission only. Fresh audit against base 3295c259bcb688673170a1902f46d1d6c775bad4 found:

  • latest terminal workflow blockers: SAST Semgrep 36451941442=failure, Python Security 36451941378=failure, Security Scan 36451941328=failure, CodeQL PR 36451941370=failure

This PR is moved to Draft/Proposed until the causal owner repair is present on a successor exact head and re-audited. Queued/pending work is neither an additional blocker nor passing evidence. No Close, force push, destructive rebase, manual rerun, synthetic status/approval, merge, auto-merge, or bypass was performed.

@seonghobae
seonghobae marked this pull request as draft September 30, 2026 05:23

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant