Skip to content

anthropic

Claude Code plugins become Claude Mods, shipping in weeks

Claude News

On September 3 a proposal for TypeScript function hooks in Claude Code told developers plainly that the response from the community likely dictates whether this ships or not. Six days later, in the same issue thread on Github, it has a commitment to ship "on the scale of weeks in lieu of days or months" and a product name: Claude Mods.

At a glance

  • The September 9 update says much of the semantics is set in place, publishes source listings for the first three built-in mods, and states an intent to migrate more Claude Code features into mod form.
  • Hooks are TypeScript functions that compose like Express middleware: every side effect runs through a parameterised $ object, and registration order decides which hook nests inside which one.
  • The ship window is weeks rather than a date, the interface and design are still being iterated on, and testing today runs behind the flag CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude.

If you missed the first week: the proposal landed on September 3 as issue #91870 on anthropics/claude-code, filed, according to Aitoolsreview, by community contributor @poteat rather than by Anthropic itself. Claude Code already had a plugin system for commands, agents, hooks and MCP servers installed from marketplaces, shipped as its own changelog milestone in version 2.0.12, per the GitHub changelog.

Claude Mods is the product name, function hook stays the primitive

The September 9 update says the product-level name for all this is Claude Mods, while "function hook" survives as the documented implementation primitive mods are built on. A mod is just a plugin that uses function hooks, and nothing about plugins themselves changes. The update adds a line hoping the ontology is not too confusing.

Much of the semantics is now set, and the team expects fewer breaking changes than in the first week, though interface and design are still moving. The source listings for the first three built-in mods are public, and Anthropic says it intends to take further existing Claude Code features and migrate them to mod form.

Testing is open to anyone who wants to give feedback: run CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude. A cheat sheet enumerates affordances on v267 and v268, which the update glosses as today and tomorrow.

Every side effect travels through a $ object that admins can shrink

Function hooks are TypeScript functions with full type definitions and LSP support. They compose the way Express or Koa middleware does: each hook gets a next continuation, and the order of registration is the order of nesting. The first one registered wraps all the rest, so admins prepend for control and append for defaults.

Think of a form passed down a row of desks. Each desk can stamp it, change it, refuse it, or pass it along, and whoever sits first sees it first and sees it last.

Every side effect a hook can perform arrives through the parameterised $ object, which is what makes restriction cheap. An admin hook can remove an affordance from $, and every plugin below it is unable to invoke that side effect. Existing Claude Code hooks, by contrast, are shell commands reacting from outside the process, with no real access to internals beyond what gets serialised to stdin, which Aitoolsreview calls a fairly blunt instrument.

One hook on ui.press catches the button in the terminal and in the desktop app

Claude Code uses React across the board, so hooks can attach to components and either modify their props or wrap the render nodes they return. Interactions are covered too: one hook on ui.press sees the same button pressed in the terminal and in the desktop app. A hook registered on * sees every event, including every plugin's own calls on $, which turns an audit log into one function.

Two case studies show longer uses. In one, a short sentence gets Claude to write, validate and load a plugin that replaces secrets in tool output before the model reads them. In the other, a plugin hides sensitive values in Claude Code Desktop until you hover over them, so you can share your screen without showing your data.

The basic and advanced clips run 60 seconds each, the case studies around two minutes. Anthropic discloses that the thumbnails are AI-generated, while the demos and code are real, running on actual binaries.

What the update does not give is a date. Weeks is a window, not a checkpoint, and the interface is still being reshaped even as the semantics settle. In our view the naming is the awkward part: the update itself hopes the ontology is not too confusing, and the ecosystem now carries mods, plugins and function hooks for what its own description treats as a single thing.

After the first three mods

No release date has been given beyond the weeks framing, and the update does not say which version turns mods on by default; the cheat sheet covers v267 and v268 only. Migrating further Claude Code features into mod form is stated as intent, with no list and no schedule attached. Until then the environment flag is the whole distribution channel, and the team is asking for critical feedback while the shape is still movable.

Related stories

  1. Function Hooks would wrap Claude Code like middleware
  2. In Claude Code hooks, exit 1 blocks nothing
  3. Claude Tag takes the first pass at Anthropic's CI alerts
  4. Claude Code 2.1.247 drafts its own feedback reports
  5. Perf win of the day: Claude Code CLI now uses 2x less CPU at p99. Bun's garbage collector was running on a fixed tim…
  6. Claude Code 2.1.233 splits proxy spend by user

Comments

No comments yet. Be the first.

Join the conversation

Sign in with Google to leave a comment. Your name and avatar come from your Google profile, and the comment appears after moderation.

We only use your name and avatar from Google. We never store your email address.