cd /news/ai-products/claude-code-mods-plugins-may-now-mod… · home › topics › ai-products › article
[ARTICLE · art-143423] src=code.claude.com ↗ pub= topic=ai-products verified=true sentiment=↑ positive

Claude Code Mods: plugins may now modify deeper behavior

Anthropic's Claude Code now supports mods, JavaScript or TypeScript event handlers that run inside the tool and can draw or redraw its interface, intercept tool calls and requests, and run custom code on a /command without a Claude turn. Mods install as plugins from a marketplace via `/plugin install token-chart@your-org` in a session or `claude plugin install token-chart@your-org` in a shell, and some built-in Claude Code features such as `/diff` are themselves mods. Mods differ from existing settings hooks, skills, status lines, and MCP servers because those run outside Claude Code, while a mod's hooks share variables within its file so one hook can record data another displays.

by read10 min views3 publishedOct 1, 2026
Claude Code Mods: plugins may now modify deeper behavior
Image: source

pluginthat changes how Claude Code looks and behaves. It’s made of JavaScript or TypeScript event handlers: Claude Code calls one when an event happens, such as a tool call, a submitted prompt, or a part of the interface being drawn, and the handler can watch the event, change it, or take it over. Use a mod to add a feature of your own to Claude Code, such as a pane that charts how full your context is after each request. For the files in a mod and a complete example, see

How a mod works. Claude Code’s existing

hooksalso run on events, as a shell command, HTTP request, or prompt you configure in a settings file. A mod’s handlers are functions that run inside Claude Code instead. Claude Code calls both kinds hooks: on these pages, “hook” means a mod’s handler, and the settings-file kind is a “settings hook”.

What a mod can do #

Settings hooks, skills, status lines, and MCP servers work from outside Claude Code: each one runs a script, or gives Claude text or tools. A mod runs inside Claude Code, so it can do things they can’t:

  • Draw an interface you can use : a pane beside the transcript or a band above the prompt, with tabs, buttons, and text fields. SeeDraw in the interface .
  • Redraw Claude Code’s own interface : replace or restyle parts Claude Code draws itself, such as a tool call’s row, the spinner, or the dialog Claude asks questions in. SeeChange what Claude Code already draws .
  • Step into a tool call or a request : for example, hold a tool call while you ask the user a question, answer it without running the tool, or send one request to a different model. SeeGuard or change a tool call andFollow a turn .
  • Run your own code on a command : a/command that runs your function at once, with no Claude turn, even while Claude is working. SeeAdd a command or a tool .
  • Share data between hooks : a mod’s hooks share the variables in its file, so what one hook records, another can show. For example, one hook can count tool calls while another shows the count beside the spinner, or one can read each request’s token usage while another charts it in a pane. SeeReact to events .

Where mods runto understand how they behave elsewhere, such as in the VS Code extension, claude -p, and cloud sessions. If a settings hook, a skill, or an MCP server already does what you need, compare thembefore you write a mod. To manage mods for an organization, see

Manage mods for your organization.

Get a mod #

You can start with a mod in one of three ways:

  • Use one you already have : some of Claude Code’s own features are mods, such as/diff . SeeMods built into Claude Code .

  • Make one : describe what you want in a Claude Code session, and Claude writes the mod. SeeAsk Claude for a mod . To learn how a mod’s code works,write one yourself .

  • Install one : seeInstall or update a mod

Install or update a mod

A mod installs as a plugin, from a marketplace. Give the plugin’s name, an@, and the marketplace’s name. These examples install a plugin named token-chart from a marketplace named your-org:

  • In a Claude Code session, run /plugin install token-chart@your-org .
  • In your shell, run claude plugin install token-chart@your-org .

Install pluginscovers marketplaces, scopes, the VS Code extension and the Desktop app, and

keeping plugins updated, all of which apply to a plugin that contains a mod without changes. If you install or update a mod from your shell while a session is open, run

/reload-plugins in that session to load it. Otherwise it loads the next time you start Claude Code.

Decide whether to trust a mod #

A mod is code that runs with your permissions, inside Claude Code. Install mods only from authors and

marketplaces you trust.

What a mod can reach

A mod runs with your permissions, so before you install one, know what it has access to. Once it loads, a mod can:

  • Act on your machine as you : read and write files anywhere your user account can, start programs, and make network requests
  • Read your secrets : environment variables and settings files, including an API key you keep in either
  • See your session : every prompt you send and every tool call Claude makes
  • Change your session : rewrite a prompt or a tool call, submit a prompt as if you had typed it, or send a message to another of your sessions
  • Act without asking you : approve a tool call before you’re asked
  • Spend your usage : call a model on your plan or API key

ask rule would prompt for, or that one of your own PreToolUse hooks blocked. Extend permissions with hookslists what such a mod can approve, including when it can approve a call that a

deny rule refuses. A mod can restyle much of Claude Code’s interface, but not the permission prompt. It can’t change what a prompt shows you.

List what a mod does before you install one

Before you install a mod, you can list which events it hooks and what it asks Claude Code to do, such as read a file or make a network request, without running it. Get the plugin’s files first, for example by cloning its repository. Then, in your shell, runclaude plugin validate on the plugin’s directory: hooks: and calls: lines in the output list the events the mod handles and what it asks Claude Code to do. Review what a mod can doshows the output and which calls to look for.

Turn mods on or off #

Mods require Claude Code v2.1.287 or later, and they’re on by default. In your shell, runclaude --version to check, and update Claude Code if yours is older. To turn mods off, choose how many to stop, and for how long. To turn them back on, undo the same change:

- **One mod** : disable or uninstall its plugin from the[**Installed** tab in `/plugin`](https://code.claude.com/docs/en/plugins/install#manage-installed-plugins)
- **Every installed mod, for one session** : start Claude Code with[`--safe-mode`](https://code.claude.com/docs/en/cli-reference#cli-flags) , which also leaves out your other customizations
  • Every mod you installed, in every session : set"disableAllHooks": true in~/.claude/settings.json . Your settings hooks and custom status line stop too. What your organization manages keeps running.
[Stop user-installed mods from ](https://code.claude.com/docs/en/plugins/mods/admin#stop-user-installed-mods-from-). To find out whether mods can load for you, see

[Check whether mods can load](https://code.claude.com/docs/en/plugins/mods/troubleshoot#check-whether-mods-can-load).

If you set 

CLAUDE_CODE_ENABLE_FUNCTION_HOOKS during early access, remove it. Claude Code v2.1.287 and later ignores it, so setting it to 0 doesn’t keep mods off.

See which mods a session loaded

To see which mods a terminal session loaded, run/plugin at the Claude Code prompt. A dim line under the tabs gives the count and the names, such as 1 mod active · first-mod. If a mod you installed isn’t named there, see Find out why a mod does nothing.

How a mod works #

A mod is a pluginwhose code registers event handlers, called hooks. Claude Code runs a hook when its event happens, such as when Claude calls a tool or when the spinner is drawn. A small mod has three files:

- **`plugin.json`** : the plugin’s[manifest](https://code.claude.com/docs/en/plugins/manifest-reference)
- **`hooks.json`** :[points to your code file](https://code.claude.com/docs/en/plugins/mods/reference#files)
- **`register.js`** :[your code](https://code.claude.com/docs/en/plugins/mods/create#write-a-mod-yourself) , called the hooks module. It tells Claude Code which events to run your functions on.

register.js. It counts the tool calls Claude makes and shows the count beside the spinner while Claude works, as in Thinking · tool calls: 3…. hooks/register.js

calls variable at the top:

  • The tool.call hook runs each time Claude is about to use a tool. It adds one tocalls , asks Claude Code to draw the interface again, and lets the tool run as usual.
  • The ui.render hook runs each time Claude Code draws the spinner. It keeps Claude Code’s own spinner and adds the count after the word.

Thinking · tool calls: 1…, then 2…, then 3….

What a hook can do with an event

Claude Code runs your hook before it acts on the event, so the hook decides what happens next. It has three choices:

  • Observe : note what’s happening and let it continue unchanged, as thetool.call hook in the example does
  • Rewrite : change the event before it continues, as theui.render hook does when it adds the count to the spinner
  • Answer : handle the event itself, so the usual behavior doesn’t run, such as refusing a command
[list what a mod does](#list-what-a-mod-does-before-you-install-one)before you install it. For the code behind each choice, see

[React to events](https://code.claude.com/docs/en/plugins/mods/events#how-a-hook-handles-an-event). For what a hook can call, see

[Use the mods API](https://code.claude.com/docs/en/plugins/mods/api).

Where mods run

A mod’s hooks run in every kind of session that loads the plugin. Drawing is narrower: only the terminal and the Desktop app show a mod’s panes, bands, and replaced rows. This table lists each place you might run Claude Code: A mod that draws can check which app it’s running in, and fall back to a line in the transcript or a command’s text reply where nothing draws.

Control mods for your organization #

Administrators decide whether mods run and which ones, through

managed settings. Manage mods for your organizationcovers what happens by default, how to review a mod, and how to enforce a policy with a mod of your own.

Compare mods, settings hooks, skills, and MCP servers #

Mods, settings hooks, skills, and MCP servers overlap. This table shows what each one is and when to pick it. Each of the others has its own page:

[Hooks](https://code.claude.com/docs/en/hooks),

[Skills](https://code.claude.com/docs/en/skills), and

MCP. A plugin can hold all four, so a mod can ship in the same plugin as a skill and an MCP server.

Mods built into Claude Code #

Some of Claude Code’s own features are mods. To see the ones your session has, run/plugin at the Claude Code prompt and go to the Installed tab, which lists them under

Built-in. You can’t update or uninstall a built-in mod, and the table’s last column says how to turn each one off. The

leaves built-in mods out. This table lists each entry by the name mods active line/plugin shows: The settings and flags that stop installed mods, such as

disableAllHooks, --bare, and --safe-mode, don’t stop built-in mods.

Read the source of built-in mods

The source of four of these mods is public in the

. Each one is a complete plugin with its hooks module and tests: mods directory of the Claude Code repository

Next steps #

  • Create a mod : build one that counts tool calls, shows the count beside the spinner, and adds a command, and learn the edit and reload loop
  • Draw in the interface : panes, the band above the prompt, buttons, text fields, and state
- [React to events](https://code.claude.com/docs/en/plugins/mods/events) : tool calls, prompts, turns, and the order mods run in
- [Use the mods API](https://code.claude.com/docs/en/plugins/mods/api) : commands, tools, model calls, timers, and files
- [Test a mod](https://code.claude.com/docs/en/plugins/mods/test) : automated tests that run without a session
- [Troubleshoot a mod](https://code.claude.com/docs/en/plugins/mods/troubleshoot) : the reasons a mod does nothing, and the debug log
── more in #ai-products 4 stories · sorted by recency
── more on @anthropic 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/claude-code-mods-plu…] indexed:0 read:10min 2026-10-01 · —