Conversation
5cbe1ac to
ad081f7
Compare
1659e2b to
c8e9422
Compare
arix-oai
approved these changes
Feb 23, 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
The zsh integration tests were still brittle in two ways:
CODEX_TEST_ZSH_PATH/ environment-specific setup, so they often did not exercise the patched zsh fork thatshell-tool-mcpshipsIn particular, the Linux failures were not just test noise:
ExecRequest.arg0, so Linuxcodex-linux-sandboxarg0 dispatch did not run and zsh wrapper-mode could receive malformed argumentsturn_start_shell_zsh_fork_subcommand_decline_marks_parent_declined_v2test uses the zsh exec bridge (which talks to the parent over a Unix socket), but Linux restricted sandbox seccomp deniesconnect(2), causing timeouts onubuntu-24.04x86/armThis PR makes the zsh tests consistently run against the intended vendored zsh fork and fixes/hardens the zsh-fork path so the Linux CI signal is meaningful.
What Changed
codex-rs/exec-server/tests/suite/zsh(analogous to the existingbashtest resource).CODEX_TEST_ZSH_PATHdependency).config.toml, using a test wrapper path where needed to forcezsh -df(and rewrite-lcto-c) for the subcommand-decline test./responsesPOST with a no-op mock response/usr/bin/trueapprovals and decline behaviorDangerFullAccesson Linux for this one test because it validates zsh approval flow, not Linux sandbox socket restrictionsreq.arg0inZshExecBridge::execute_shell_request(...)socodex-linux-sandboxarg0 dispatch continues to work.maybe_run_zsh_exec_wrapper_mode()underarg0_dispatch_or_else(...)inapp-serverandcliso wrapper-mode handling coexists correctly with arg0-dispatched helper modes.dotslash -- fetchresolution logic into shared test support (core/tests/common/lib.rs).codex-rs/exec-server/tests/suite/accept_elicitation.rsto use DotSlash zsh and hardened the zsh elicitation test for Bazel/zsh differences by:gitpathgit init --quiet ..gitcreation instead of relying on banner textVerification
cargo test -p codex-app-server turn_start_zsh_fork -- --nocapturecargo test -p codex-exec-server accept_elicitation -- --nocapturebazel test //codex-rs/exec-server:exec-server-all-test --test_output=streamed --test_arg=--nocapture --test_arg=accept_elicitation_for_prompt_rule_with_zshrust-ci) on the final cleaned commit:Tests — ubuntu-24.04 - x86_64-unknown-linux-gnuandTests — ubuntu-24.04-arm - aarch64-unknown-linux-gnupassed in run 22291424358