Claude Code 2.1.97 just landed with 46 CLI changes, 1 flag change, and 2 system prompt changes. This is one of the heaviest patch releases in recent memory — and most of the weight is in fixes. If you've been running NO_FLICKER mode and hitting weird rendering glitches, or if MCP connections have been quietly leaking memory, this one is for you.
I've been running Claude Code daily since the early betas, and this release fixes at least three issues I've personally hit in the last two weeks. Let me walk through what matters.
Focus View: Finally, a Clean Review Mode
The headline new feature is Focus View, toggled with Ctrl+O in NO_FLICKER mode. It strips the interface down to three elements: the prompt, a one-line tool summary with edit diffstats, and the final response.
If you've ever tried to review what Claude actually did across a long session with dozens of tool calls, you know the pain — scrolling through walls of file reads, grep results, and intermediate reasoning. Focus View cuts all of that away and shows you just the decisions and outcomes.
This is the kind of UX improvement that sounds minor but changes how you interact with the tool. I find myself using it at the end of every major task now — a quick Ctrl+O to verify what was actually modified before I commit.
Deferred Tools Get a Safety Gate
A significant system prompt change: deferred tools now require the ToolSearch schema to load before they can run. Tools without schema metadata simply won't execute.
This is a guardrail for plugin ecosystems and MCP integrations where tool definitions might be stale, incomplete, or malformed. It prevents Claude from blindly invoking a tool it doesn't fully understand — which, if you've ever had a misconfigured MCP server, you know can lead to unexpected behavior.
MCP: Memory Leak Fixed, OAuth Hardened
Two MCP fixes stand out:
Memory leak on reconnect — HTTP/SSE connections were accumulating approximately 50 MB per hour of unreleased buffers on server reconnect. If you've had Claude Code sessions running for hours with MCP servers (which many of us do — persistent database connections, Slack integrations, etc.), this was silently eating RAM. Fixed.
OAuth token refresh — the oauth.authServerMetadataUrl wasn't being honored on token refresh, which broke flows with ADFS and similar identity providers. If you're in an enterprise environment with federated auth, this was a blocker.
Permissions: Several Sharp Edges Smoothed
The permissions system got meaningful attention:
--dangerously-skip-permissionswas being silently downgraded to accept-edits mode after approving a write to a protected path. The flag now persists as intended. If you set it, you meant it.- Bash tool permissions got tightened checks around environment variable prefixes and network redirects.
- Permission rules with names matching JavaScript prototype properties (like
toString) were causingsettings.jsonto be silently ignored. An edge case, but a nasty one if you hit it. permissions.additionalDirectorieschanges now apply mid-session without a restart.- Managed-settings allow rules now properly deactivate after removal without requiring a process restart.
Resume and Transcript: Long-Standing Irritations Fixed
The /resume picker got a batch of fixes addressing issues that have been accumulating:
--resume <name>was opening sessions as uneditableCtrl+Areload was wiping search state- Empty list was swallowing keyboard navigation
- Task-status text was replacing conversation summaries
- Cross-project staleness was showing wrong sessions
Additionally, file-edit diffs were disappearing on resume when the edited file was larger than 10 KB — a threshold that most real codebases hit constantly. Messages typed while Claude is working are now persisted to the transcript, so you don't lose context if you type ahead during a long operation.
NO_FLICKER Mode: The Rendering Overhaul
NO_FLICKER mode (which I run exclusively — the visual stability is worth it) got seven fixes in a single release:
- Copying wrapped URLs no longer inserts spaces at line breaks
- Scroll rendering artifacts in zellij are fixed
- Hovering over MCP tool results no longer crashes the session
- Memory leak from API retries leaving stale streaming state — fixed
- Slow mouse-wheel scrolling on Windows Terminal — fixed
- Custom status line now displays on terminals shorter than 24 rows
- Shift+Enter and Alt/Cmd+arrow shortcuts now work in Warp
If you haven't tried NO_FLICKER mode yet, set CLAUDE_CODE_NO_FLICKER=1 — it was introduced in 2.1.88, and with this round of fixes, it's getting close to production-solid for all terminal environments.
Rate Limiting: Smarter Backoff
A subtle but important fix: 429 retries were burning all attempts in approximately 13 seconds. Exponential backoff now applies as the minimum wait between retries. If you're hitting rate limits during heavy usage, your session is much less likely to exhaust retries and fail outright.
Other Notable Changes
- Status line
refreshInterval— re-run the status line command every N seconds, useful for dynamic indicators workspace.git_worktreein status line JSON — set when working inside a linked git worktree- Agent status indicator —
N runningcount next to agent types in/agents - Cedar policy file syntax highlighting —
.cedarand.cedarpolicyfiles get proper highlighting - CJK input improvement — slash command and
@-mention completion now triggers after CJK sentence punctuation - Image compression — pasted and attached images are now compressed to the same token budget as Read tool images
- Bridge sessions — local git repo, branch, and working directory shown on the claude.ai session card
- Improved auto mode — auto-approves sandbox network access prompts and filesystem commands with safe env vars
Upgrade
claude update
Verify with claude --version — you should see 2.1.97.