Claude Code v2.1.288: Ctrl+C draft recovery, a dangerous-rm prompt, and a structured-outputs off switch#

Published by

Part of the Claude Code Version Tracker series. | Official Env Vars | Official Changelog

Claude Code v2.1.288 brings back a prompt you cleared with Ctrl+C: press Up on the empty prompt and the draft returns, pasted text and images included. It also asks before a dangerous rm buried in a bash -c script runs under bypass or shell-allow rules, and adds CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS for gateways that reject structured outputs. It follows v2.1.287.

What you can do now#

The draft-recovery fix is the one most people will hit. Pressing Ctrl+C on a prompt clears it; pressing Up on the now-empty prompt restores what you had typed, including pasted text and images.[1]

/code-review takes a new --max-findings <n>|all to report more or fewer findings than the usual limit, and it reuses your choice until you pass --max-findings default. The agents view adds Ctrl+F to find a session by name and Alt+↑/↓ to jump between groups; both, along with rename, can be rebound in keybindings.json.

For mods, $.ui.selection() returns the text you last selected in fullscreen mode, and when that selection sits within a single transcript row, the row as well. An MCP server that asks for more OAuth scope during a tool call now triggers a re-authenticate prompt instead of failing. Screen reader users hear the new permission mode announced when they approve a plan, including through Shift+Tab.

A tighter check on dangerous rm#

This build closes a gap where a dangerous rm, such as one targeting / or the home directory, ran without a prompt when it was hidden inside a bash -c or sh -c script and the session was in bypassPermissions mode or covered by a shell allow rule.[1] Such a command now asks first. A related check prompts before a BASHPID assignment whose value the shell would evaluate as arithmetic, rather than allowing it silently. The inline-shell prompt has an off switch (below).

New Environment Variables#

VariableWhat It Does
CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTSTurns structured outputs off for gateways or providers (such as Mantle) that reject them. The changelog ties this to session titles, memory recall and prompt hooks failing in that setup; with the variable set, Claude Code skips the structured-outputs path those features use. Added in v2.1.288.
CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPTTurns off the new prompt that catches a dangerous rm inside an inline bash -c or sh -c script. Left unset, such a command asks before running even under bypassPermissions or a shell allow rule; setting it restores the prior silent behavior. Added in v2.1.288.

Reliability on long and resumed sessions#

A large share of the release is reliability work. Mid-response API timeouts no longer fail the turn: non-interactive sessions and subagents continue from the partial response, and thinking-only responses are retried.[1] Long conversations whose last reply reported zero token usage now auto-compact instead of failing with "Prompt is too long". --resume no longer drops files and context that a compaction had just restored, no longer loses the last response of a turn, and no longer loads a transcript cut short when the same session rewrote the file mid-load.

What These Tell Us#

Two themes run through the fixes. One is keeping a turn alive through transient failures, from partial-response continuation to zero-usage auto-compaction and resume paths that hold on to restored context. The other is tightening what runs without a prompt, with the inline-shell rm check and the BASHPID arithmetic check both closing paths that previously ran silently.

The two new environment variables read as opt-outs rather than features to switch on. CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS unblocks gateways that reject structured outputs, and CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT restores the old silent rm behavior. Both let an operator step back from a default this release changed.

Sources#

  1. Claude Code Official Changelog, v2.1.288 release notes

This analysis is conducted for educational and research purposes under fair use principles. All trademarks and software referenced belong to their respective owners.


Previous Claude Code analysis: v2.1.287 (October 1, 2026)

All 62 Claude Code analyses: Claude Code Version Tracker · Official Claude Code changelog