Conversation
pakrym-oai
approved these changes
Feb 25, 2026
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Why
Zsh fork execution was still able to bypass the
WorkspaceWritemodel in edge cases because the fork path reconstructed command execution without preserving sandbox wrappers, and command extraction only accepted shell invocations in a narrow positional shape. This can allow commands to run with broader filesystem access than expected, which breaks the sandbox safety model.What changed
ExecRequestproduced byattempt.env_for(...)when entering the zsh fork path inunix_escalation.rs.CoreShellCommandExecutorto execute the sandboxed command and working directory captured fromattempt.env_for(...), instead of re-running a freshly reconstructed shell command.-c/-lcrather than only matching the first positional form.unix_escalation.rsto lock in wrapper-tolerant parsing behavior and keep unsupported shell forms rejected.skill_approval.rs:shell_zsh_fork_still_enforces_workspace_write_sandboxnow uses an explicitWorkspaceWritepolicy withexclude_tmpdir_env_var: trueandexclude_slash_tmp: true./tmp/..., which is only reliably outside writable roots with those explicit exclusions set.Verification
extract_shell_scriptparsing behavior with wrapped command shapes.extract_shell_script_supports_wrapped_command_prefixesextract_shell_script_rejects_unsupported_shell_invocationshell_zsh_fork_still_enforces_workspace_write_sandbox.Manual Testing
Prior to this change, if I ran Codex via:
and asked:
it would run it, even though the default sandbox should prevent the agent from running
/bin/psbecause it is setuid on MacOS.But with this change, I now see the expected failure because it is blocked by the sandbox: