feat: configurable sandboxing for bash commands on linux/macos#20316
Open
kyuz0 wants to merge 3 commits intoanomalyco:devfrom
Open
feat: configurable sandboxing for bash commands on linux/macos#20316kyuz0 wants to merge 3 commits intoanomalyco:devfrom
kyuz0 wants to merge 3 commits intoanomalyco:devfrom
Conversation
added 2 commits
March 31, 2026 16:25
…d configuration support
…erns and update tests to verify full file access blocking
Contributor
|
Hey! Your PR title Please update it to start with one of:
Where See CONTRIBUTING.md for details. |
Contributor
|
Thanks for updating your PR! It now meets our contributing guidelines. 👍 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issue for this PR
Closes none
Type of change
What does this PR do?
Adds bash sandboxing to OpenCode via Anthropic's Sandbox Runtime (
srt). This executes agent commands in an isolated environment (bubblewrapon Linux,sandbox-execon macOS).The architecture is built around an abstract
SandboxProviderinterface so that other sandbox backends (like nativebubblewrap,nsjail, orgVisor) can be easily implemented and selected in the configuration file in the future.The sandbox is configured in
opencode.jsonand supports:domains.process.envand injects only theenv_whitelist.cwdand/tmp. Matches indeny_workspace_patternsare bind-mounted to/dev/nullallowing neither read nor write access.deny_binaries.Example Configuration (
opencode.json):{ "$schema": "https://opencode.ai/config.json", "bash_sandbox": { "enabled": true, "provider": "srt", "domains": ["github.com", "registry.npmjs.org"], "env_whitelist": ["PATH", "HOME", "USER", "SHELL", "TERM"], "deny_workspace_patterns": [ "**/*.env", "**/*.secret", "**/*_rsa" ], "deny_binaries": ["terraform", "aws", "docker"] } }How did you verify your code works?
Ran local tests (
bun test test/sandbox/srt.test.ts) that check:~/.bash_history) fail..envblock read, write, rm, and chmod syscalls, including files created dynamically by the agent.Note for reviewers: I am not sure if the tests as written fit the repository's standard CI flow, as they require
srtto be installed on the host machine to pass.Screenshots / recordings
If this is a UI change, please include a screenshot or recording.
Checklist