Skip to content
Claude News

Appearance

Appearance

Claude Code

Claude Code 2.1.302 adds an off switch for idle compaction

7 min read

Two days after idle compaction arrived, Claude Code gives it a switch you can reach without editing a JSON file, and "the notices shown after an idle compaction now say how to turn it off." That line comes from the v2.1.302 release notes on Github. If you run Claude Code headless, the bigger changes come further down the list: new defaults for permission mode, fork subagents and background agents.

The switch is a new Idle compaction row in /config that turns the feature off or back on. Idle compaction shipped in 2.1.299, which we covered on October 14. If a conversation of 200K tokens or more sits idle for about 54 minutes, it gets compacted before its one-hour prompt cache expires, so the next message doesn't have to reprocess the whole thing. That timing comes from the 2.1.299 write-ups at Releasebytes and Claudeupdates, and it leaves about six minutes before the cache expires. In 2.1.299 you controlled the feature through settings: "idleCompaction": false in settings.json turned it off, and CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS changed the 200K-token minimum. The /config row is easier to find mid-session.

The release also fixes a compaction edge case. If you stopped a turn while the conversation was being compacted, you could get a "Prompt is too long" error. That no longer happens.

Auto mode, two classifiers

CLAUDE_CODE_AUTO_MODE_MODEL sets the model for the client-side auto mode classifier. The release notes say plainly that it doesn't change the model for server-side auto mode, which keeps its own.

The server-side classifier gets a fix to how it behaves. Before, when a conversation got too long for the safety check, every checked tool call was denied. In 2.1.302 the conversation is compacted instead.

Auto mode telemetry gets two fixes. classifier_category was missing from OpenTelemetry tool_decision events for most auto mode classifier blocks. And when OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT was set low, new tool_decision attributes pushed out tool_use_id, tool_source and tool_parameters. Those events picked up the classifier_verdict and permission_mode attributes in 2.1.301, as we reported on October 16.

The default permission mode changes too. On third-party providers, claude -p and Agent SDK sessions that don't specify a permission mode now start in default mode. The same applies when telemetry is off or on a fresh install. Passing --permission-mode auto still keeps auto.

Subagent and hook defaults

Fork subagents (subagent_type: "fork") are now on by default in claude -p, the Agent SDK, the desktop app and VS Code. They were already on in the terminal. CLAUDE_CODE_FORK_SUBAGENT=0 turns them off, and claude mcp serve never offers them.

Subagents also run in a different place. The desktop app and VS Code now always run the main conversation's subagents in the background, as the terminal does, instead of letting Claude choose. One level down it goes the other way: in claude -p, the Agent SDK, the desktop app and VS Code, a subagent's own Agent calls now run in the foreground by default.

Prompt and agent hooks get a concurrency cap. At most 12 hooks for one event run at a time, and the rest wait their turn.

Startup is faster when many plugins are enabled, because loading plugin command and agent files now takes far fewer file system calls. Windows gains the most. The release notes give no timings.

Images, cache and credits

Several fixes affect memory, the prompt cache or billing:

  • The Read tool used to load an image file of any size entirely into memory, and did the same with a pipe or device named like an image. It now refuses image sources over 128 MB.
  • Prompt suggestions spent usage credits on models your plan pays for only with credits. After a reply billed to credits, they are now skipped.
  • Loading a tool that was added mid-session again, through ToolSearch or after compaction, caused a prompt cache miss. That's fixed.
  • A cloud session's cost and usage counters no longer restart from zero when the session resumes in a new process.

Separately, the Claude in Chrome instructions have moved within the system prompt so that new conversations can read them from the shared prompt cache.

Users of providers and gateways get their own fixes. After switching to Vertex or Bedrock mid-session, requests failed with "diagnostics: Extra inputs are not permitted". When a gateway named Opus 4 or 4.1 with a prefix, such as anthropic/claude-opus-4-1, /autocompact and /effort saved to the wrong model. And MCP servers showed no tools, or failed every tool call, when the server negotiated protocol version 2026-07-28 but left out resultType, ttlMs or cacheScope.

Several of the git fixes involve newer git versions and formats. When git defaulted to the reftable ref format, plugin marketplaces re-cloned on every refresh, and newly installed git plugins showed version "unknown". Self-hosted runner sessions that reused a checkout stored in reftable format hit "bad object refs/heads" errors on git fetches. Under git 2.56 or later, worktree isolation refused to create or resume worktrees when a stray .git file pointed at a directory that doesn't exist. On Windows, every file write was refused or prompted for projects on exFAT or FAT32 drives, including in sessions started with --plugin-dir. And claude plugin and other subcommands could exit before a queued settings or config write finished, which lost the change or left a .tmp file behind.

The PowerShell tool now finds commands in a plugin's bin/ folder. It also no longer reports an error when a search that finds nothing (rg, grep, findstr, git grep) is piped into Select-Object or another formatting cmdlet.

Cloud sessions and Claude Tag

Of the cloud session fixes, the one most likely to have done visible damage involves scheduled routines. A routine run that failed partway could start again from the beginning an hour or more later, which could repeat work such as posting the same report twice. Routine runs were also labeled wrongly: Completed after their cloud session stopped unexpectedly, and Cancelled when archived before they started, when both should have shown as failed. A new banner on a routine's page says why its last run didn't start, for example because your organization reached its limit on concurrent cloud sessions. "Rewind to here" now works on messages other than the newest, though self-hosted runners need Claude Code v2.1.246 or later for it. When a cloud session fails to start, the error now says "Connection lost" or "Server error" instead of "Something went wrong".

Claude Tag in Slack gets a long list of fixes. HEIC, SVG, TIFF and BMP images attached in Slack never reached Claude; they now arrive as files in its working files. When a single Slack lookup stalled, direct messages could be dropped with "DMs are temporarily unavailable"; Claude now retries first. In organizations that restrict Claude Tag by role, new channel managers lost access. The manager role now grants it. Repository search in the admin settings now covers up to 100 connected GitHub accounts and finds private repositories past the first 5,000 of a GitHub App install. Those settings are reorganized into four tabs: Bundles, Connectors, Skills and plugins, and Channels. The notice about a channel's monthly spend limit used to say a channel manager could raise it. It now names an organization owner and links the usage page.

Code Review left research preview on October 16. It gets one setup fix: if you leave to connect GitHub, setup now reopens at the repository picker when you return to admin settings.

The one item with a deadline is a notice rather than a fix. /design-sync and /design-login now warn that standalone Claude Design at claude.ai/design closes by December 14, 2026. If you use those commands, you have about eight weeks to move off them.

No comments yet. Be the first.

Join the conversation

Sign in to leave a comment. It appears after moderation.