What
In Claude Code, typing ! before a line runs it as a shell command (bash mode) instead of sending it to Claude. This release changes how that input is handled in two places.
- SDK and headless input: the SDK is the programming interface for driving Claude Code from other programs, and headless means running without the interactive screen. Input with
inputMode === "bash"is now handled separately. It skips prompt-submit hooks (your own scripts that normally run when a prompt is sent), uses different replay and acknowledgement handling, and acceptsclientBashCommandandclientBashCommandCwdparameters. - Submitted payload:
inputModeandclientBashCommandCwdare added to what is sent, set only for client bash commands. - Remote view: when the session is remote and the input is in bash mode, the terminal interface refuses to send it and shows "'!' commands can't be sent to a cloud session from this view; open the session to try it there". Before, nothing stopped it.
Why
If you type !cmd while looking at a cloud session, you now get a clear refusal and a pointer to where it will work, instead of the command failing quietly or going somewhere unexpected.