Skip to content
zero2vibecodelearn vibe coding
Claude CodeBy zero2vibecode

Claude Code 2.1.304: what's new

Claude Code 2.1.304 brings new warnings for usage limits, changes to skill hooks and compaction, and removes the "(research preview)" label from `/fast` on Opus 5.5.

Based on the original announcement — written by AI, not reviewed before publishing. How this blog is made

Version 2.1.304 covers changes from 2.1.292 to 2.1.304, focusing on usage warnings, skill hooks, and compaction improvements.

Cover: what's new in Claude Code 2.1.304

Commands and interface

You now see the names of tools used earlier in the compaction summary when you view the transcript (Ctrl+O). The /fast dialog title on Opus 5.5 no longer has the “(research preview)” label, marking it as a stable feature. You can also use /effort and /fast in agent view to set what new sessions start with, and a bare /model, /effort, or /fast there opens a picker.

Hooks and automation

Skill hooks have been changed: each source (a repo, your folder, or a plugin) can register at most 1,024 hooks and 16,384 matcher characters per session. Additionally, skills under a policy that allows hooks from plugins only no longer get their allowed-tools if their hooks are kept out. Prompt and agent hooks now run at most 12 of one event at a time, with the rest waiting their turn.

Subagents and workflows

Fork subagents (subagent_type: "fork") are now on by default in claude -p, the Agent SDK, the desktop app, and VS Code. The desktop app and VS Code always run the main conversation’s subagents in the background, like the terminal does. You can also use autoCompactWindow in subagent frontmatter and --agents definitions to auto-compact earlier than the main conversation’s window.

Plugins and skills

Changes to plugins include adding --disallow-tools and a disallowed_tools case field to claude plugin eval to keep specific built-in tools, such as Agent, out of eval runs. A note in /plugin now appears if a plugin’s hooks are left out because another enabled plugin has the same name. Additionally, claude plugin validate now advises when a plugin’s README has no install line, printing the line to paste without changing the exit code, even with --strict.

Models and cost

Claude Haiku 5.5 (claude-haiku-5-5) is now the default Haiku model on the Anthropic API, offering a 1M context at $0.10/$0.50 per Mtok ($0.50/$2.50 for prompts over 100K). You can also use CLAUDE_CODE_AUTO_MODE_MODEL to choose the model the client-side auto mode classifier uses, though it doesn’t change the model for server-side auto mode.

Settings

You can now turn idle compaction off or back on with the Idle compaction row in /config. Notices after an idle compaction now explain how to turn it off. Additionally, CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS allows you to change idle compaction’s 200K-token minimum, and "idleCompaction": false in settings.json turns it off.

Everything else, briefly

  • Added a warning on Pro and Max plans when resuming an inactive conversation would use a noticeable share of your 5-hour usage limit.
  • Added CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS to end unattended retry mode at a usage limit that resets too far away.
  • Added CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS to limit how long unattended retry mode waits out 429 and 529 errors.
  • Added CLAUDE_CODE_DISABLE_FILE_MENTIONS to let Claude get the paths of @ file mentions to read with its file tools, not the files' contents.
  • Added CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS to set a longer maximum delay for the backoff when retrying an overloaded (529) request.
  • Added onFailure: "block" for command and HTTP hooks to block actions if a hook can’t start, times out, or exits with an unexpected code.
  • Added Program Status Protocol (OSC 7501) support for terminals to show Claude Code’s status.
  • Added quoted text to the /copy picker to copy drafted messages without > markers.
  • Added a warning to claude plugin install, enable, disable, and marketplace add when the settings file they write to does not load.
  • Added a line on stderr to say what a claude -p run is waiting for when it stays open after its last turn.
  • Added a “Backgrounding cancelled” message when stopping the turn while ← waits for the current tool to finish.
  • Added agentType to the subagentStatusLine payload for scripts to tell custom subagent types apart.

Where the course covers this

For the full list of changes, visit the official CHANGELOG.

Read next

Try it hands-on

Free interactive courses on this topic — in your browser, from zero.