[BUG] /sandbox seccomp filter instructions don't work, paths not read from settings
Status Fixed / completed
Reported on v2.1.37
Maintainer reply None cached
Activity 8 comments · opened Feb 8, 2026 · closed Aug 19, 2026
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
/sandbox reports that seccomp filter is not installed, despite the files present in the system and configured in settings.json:
$jq . ~/.claude/settings.json
{
"applyPath": "/usr/lib/claude-code-seccomp/apply-seccomp",
"sandbox": {
"seccomp": {
"bpfPath": "/usr/lib/claude-code-seccomp/vendor/seccomp/x64/unix-block.bpf",
"applyPath": "/usr/lib/claude-code-seccomp/vendor/seccomp/x64/apply-seccomp"
}
}
}
$ls /usr/lib/claude-code-seccomp/vendor/seccomp/x64/
apply-seccomp unix-block.bpf
What Should Happen?
seccomp filter dependency should show as installed
Error Messages/Logs
Sandbox: Mode Dependencies Overrides Config (←/→ or tab to cycle)
bubblewrap (bwrap): installed
socat: installed
seccomp filter: not installed (required to block unix domain sockets)
· npm install -g @anthropic-ai/sandbox-runtime
· or copy vendor/seccomp/* from sandbox-runtime and set
sandbox.seccomp.bpfPath and applyPath in settings.json
Steps to Reproduce
- configure as above
claude /sandboxand navigate right to dependencies
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.37 (Claude Code)
Platform
Anthropic API
Operating System
Other Linux
Terminal/Shell
Other
Additional Information
_No response_
Showing cached comments. Read the full discussion on GitHub ↗
7 Comments
Same here. Seems like the config gets ignored...
It seems sandboxing in general works - "only" socket sandboxing is affected -
I put following stupid script into my project folder (calling it
formatter.sh...):So this bash script writes to the
foofile in my home folder, which is not part of my project folder obviously.When I tell claude to run this script - with strict sandbox mode enabled - I get:
With "Allow unsandboxed fallback" I can write the fall after confirming permission:
So this shows at least filesystem sandboxing is working.
I did some more research:
@anthropic-ai/sandbox-runtimeinstalled vianpm(runnpm uninstall -g @anthropic-ai/sandbox-runtime)NPM_CONFIG_PREFIXis not set when starting claude - or set it to some non-existing path like/does/not/exist(e.g. by runningNPM_CONFIG_PREFIX=/does/not/exist claude.Those both requirements are important for reproduction because claude will fallback to search for the files in the most common npm locations and also tries to figure out the root of the current node installation by running
npm -g rootand then trying to locate the files from there.So make sure that you have sandbox enabled and the paths set to the files. (On arch linux for example there is the
claude-code-seccompAUR that installs just the two files to/usr/lib/claude-code-seccomp/:Confirm both files exist and are readable/executable.
Use the
SRT_DEBUG=1env varible to debug logs regardingSeccompFilterwill be written and then inspect the debug log:Output:*
After looking at the pretty-formatted (but still obfuscated) claude source code from its npm package, I think that the problem has something to do with how the config and sandbox gets initialized when starting claude.
(updated my previous comment with more relevant information how to reproduce)
We are also seeing this issue.
Confirming this is still present on v2.1.87 (Linux/WSL2 x86_64).
Now that the Claude Code source code leaked and is all over the internet, it is possible to trace the exact code path involved here and identify the root cause precisely instead of guessing from behavior alone.
I traced this through both
claude-codeand the actual@anthropic-ai/sandbox-runtimesource, and the root cause appears to be in Claude Code’s adapter layer.The problem is not that the seccomp paths are invalid. The problem is that Claude Code was not forwarding
sandbox.seccompinto the runtime config thatsandbox-runtimeactually uses.What I found:
In
sandbox-runtime,checkDependencies()does not accept seccomp config as an argument. It only accepts ripgrep config, and on Linux it reads seccomp paths from the runtime’s internal config:sandbox-manager.ts:checkDependencies(ripgrepConfig?: { command: string; args?: string[] })checkLinuxDependencies(config?.seccomp)Then in
checkLinuxDependencies(seccompConfig), the runtime resolves:seccompConfig?.bpfPathseccompConfig?.applyPathto determine whether seccomp is available.
So for
/sandboxto show seccomp as installed, Claude Code must first ensure thatsandbox-runtime’s internal config includes:The bug in Claude Code is that its adapter never did that.
Specifically:
convertToSandboxRuntimeConfig()did not includesettings.sandbox.seccomp, so the runtime never received the configured seccomp paths for actual sandbox execution either.SandboxManager.checkDependencies()in Claude Code called intoBaseSandboxManager.checkDependencies(...)without first updating the runtime’s internal config from current settings, so the dependency UI had no way to see the configured seccomp paths.There is also a staleness problem:
checkDependencies()wrapper, so even after settings changed, the dependency tab could keep showing old results until process restart.The fix is:
seccomp: settings.sandbox?.seccompto the config returned byconvertToSandboxRuntimeConfig()BaseSandboxManager.checkDependencies(...), callBaseSandboxManager.updateConfig(convertToSandboxRuntimeConfig(currentSettings))checkDependencies()wrapper so dependency status reflects current settingssandbox.seccompexplicit in Claude Code’s local settings schema instead of relying on passthrough behaviorIn other words, the issue is a config handoff bug between Claude Code and
sandbox-runtime, not a problem with the seccomp files themselves.This also means the bug affects more than just the
/sandboxdependency tab: customsandbox.seccomp.bpfPath/applyPathwere also being ignored by actual sandbox setup, because the runtime config was missingseccompentirely.Patch diff: