Unclear It is not clear what triggers the new path or what it changes in how a command behaves.
What
The Bash tool is how Claude runs commands in a terminal shell for you. Before this release, Claude Code always handed the shell the command as a string for the shell to evaluate. It can now "carry" the command text into the shell another way:
buildExecCommand, the step that builds the shell launch, now returnscarriedCommandText, and that text is passed into the environment the shell is started with. The command text can also be added to the shell's startup arguments.- The carrier is used only in one case: no sandbox (the restricted environment Claude Code can run commands in), no scrubbing of credentials from the environment, and a shell snapshot (a saved copy of your shell's setup) is present. In that case an extra setup step is added in front of the command and a different evaluation step runs.
- If the shell exits with code 126 and a matching error, Claude Code calls
stopCarryingCommandText, stops using the carrier, and records that the carrier was lost. - A
noBashEnvoption is also passed, set to true whenBASH_ENVis not set.BASH_ENVis an environment variable that names a file bash runs when it starts.
The Bash tool's own description, as shown to Claude, is 10,545 characters at its longest in the capture taken under this release, unchanged from the release before.
Why
This changes how commands reach the shell in that one setup, so it can affect how a command is run. If a shell refuses the new form with exit code 126, Claude Code switches back to the old method on its own.
It is not clear what triggers the new path or what it changes in how a command behaves.