Claude Code mods shipped in v2.1.287 on October 1, 2026, and only two of this video's three use cases actually require a mod
Watch on TikTok
The artifact is a 52-second vertical MP4 at 1080x1920, H.265 video with AAC audio, 396 kbps total bitrate, 2,591,922 bytes on disk, format id bytevc1_1080p_396008-1, SDR dynamic range. The metadata reports no fps, abr, or asr values, so frame rate and audio sampling rate are unknown from the file record. It posted at 2026-10-06 18:43:11 UTC (upload date 20261006) from the handle nocode.joshua, channel nickname nocode.joshua, over an audio track named "original sound - nocode.joshua" credited to the same artist. Captured on 2026-10-07, one day after posting, it carried 84,900 views, 4,348 likes, 41 comments, 798 reposts, and 3,656 saves. I read all 26 frames in tokdoc_frames/ and all 189 words of transcript.txt. Frame 001 opens on a card reading "Claude / Mods" above a red 3D cube bearing the Claude asterisk, with the burned-in caption "A NEW FEATURE" and the speaker below in a black New York Yankees cap and grey hoodie, filmed at night in a living room with a wall-mounted TV, a wooden media console, a pale sectional sofa, and a floor-to-ceiling window showing city lights. Frames 002 and 003 expand that cube into a hub-and-spoke diagram with eleven labelled satellite cubes: usage-meter, second-brain, git-status, cost-tracker, todo-pane, test-status, pr-watch, agent-dashboard, session-chat, model-router, and one unlabelled. Frames 004 and 005 show "3 ways" with the subhead "no one is talking about" and three numbered cubes orbiting the Claude mark. Frames 006 through 008 draw two terminal windows titled "Session A" and "Session B" joined by a line, then an envelope icon, a red message block marked "Sent ✓" in A, and a white block in B headed "From Session A". Frames 009 and 010 relabel them "PLANS" and "BUILDS" with document and check-mark tokens passing in both directions. Frames 011 through 013 show a mock window titled "Claude Code" with a prompt box reading "Change the interface", then dashed red edit outlines with pencil icons over every region, then a panel headed "Dashboard" with a green "live" dot, the number "8", a donut chart, and a bar chart. Frames 014 through 016 go full-screen on that mock: "Dashboard / right inside Claude Code", a card headed "Your agents / what they are doing right now" listing "Research / Reading the sources", badge "Running", "Writer / Drafting the script", badge "Running", and "Editor / Waiting on the draft", badge "Waiting", then a second card headed "Second brain / the full overview" with a force-directed node graph and three counters, "Projects 12", "Tasks 38", "Notes 214". Frame 017 shows "THE EASY STUFF" over three checked cards, "Fix a typo / easy", "Rename these files / easy", "Tidy up my notes / easy", beside a card reading "BIGGER MODEL / Opus / $$$". Frames 019 through 021 build a routing diagram: a red circle labelled "Mod" fed by "REQUESTS" cards "Fix a typo / easy", "Rename files / easy", and "Plan my launch / hard", fanning out to "CHEAPER MODEL / Haiku" holding the two easy chips and "BIGGER MODEL / Opus" holding "Plan my launch", above a bar labelled "Your limits / simple tasks stay off them" with endpoints "with the mod" and "without a mod". Frames 022 and 023 show a chat bubble headed "YOU" reading "Build me a mod that shows what my agents are doing." with the cube emitting the tags mod, agents, doing toward an empty dashed placeholder. Frame 024 is a dark 30-line code mock with three lines highlighted red under the caption "YOU DON'T NEED". Frame 025 reads "Just describe it." above a white cube captioned "your mod" containing a bar chart. Frame 026 closes on the speaker with a follow card reading "nocode.joshua / Claude tips".
Anthropic shipped mods in Claude Code v2.1.287 on October 1, 2026, five days before this video posted
The video's framing holds up. The transcript opens: "claude just dropped a new feature called mods but most people have no idea how to use it." The Claude Code changelog lists the entry under v2.1.287, October 1, 2026: "Added Claude Mods" with the note that "plugins may now modify deeper behavior." The video posted 2026-10-06 18:43:11 UTC, five days and change later.
The name in frame 001, "Claude / Mods", matches the changelog wording. The mods overview defines one directly: "A mod is a plugin that 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."
Two version floors matter and the video mentions neither. The terminal CLI needs v2.1.287 or later. The Desktop app ships its own copy of Claude Code and supports mods from v2.1.286. The overview also retires an early-access switch: "If you set CLAUDE_CODE_ENABLE_FUNCTION_HOOKS during early access, remove it. Claude Code v2.1.287 and later ignores it."
Sessions could already message each other before mods existed, from v2.1.224
This is the video's largest factual slip. The transcript says: "number one you can make your sessions talk to each other one claude code session can now send a message to another so one can plan while the other builds and then they can pass work between them." Frames 006 through 010 illustrate it as a mod capability.
Cross-session messaging is a separate, older feature. The cross-session messaging page states the floor plainly: "Cross-session messaging requires Claude Code v2.1.224 or later on macOS and Linux, including Linux inside WSL 2. On native Windows, it requires Claude Code v2.1.234 or later. When a session meets the requirements, messaging is on with nothing to enable." That is 63 patch releases before mods landed. The same page says Claude handles the plumbing itself: "Claude discovers the target with ListAgents and sends with SendMessage, so you never call either tool yourself." You can type @api-worker in a prompt to name the target, or ask in plain language, and no plugin is involved.
What mods add is a programmatic handle and an interception point. The mods API page documents $.session.send({ to, text }) and describes it as "the same delivery the SendMessage tool makes." The two observation events are session.receive and session.send, and a hook can return { consumed: reason } to keep an arriving message from Claude, or { isDelivered: false, reason } to stop one leaving. A mod can therefore filter, log, or redirect the traffic. Starting the traffic needs no mod at all.
One operating detail the video's "PLANS / BUILDS" loop in frames 009 and 010 skips: delivered messages cost you. The costs page lists cross-session messages among the reasons usage climbs in a long session, because "Claude Code delivers a message from another of your sessions as a new turn when this session sits idle, sending your full context each time."
The dashboard in frames 014 through 016 is buildable, and it renders in two places out of seven
The transcript claims: "number two you can ask claude to change any of its interface so you can have a dashboard right inside claude code." The capability is real. The overview lists "Draw an interface you can use: a pane beside the transcript or a band above the prompt, with tabs, buttons, and text fields" and "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."
The mods reference names the render sites a ui.render hook can target, including Pane, AbovePrompt, Spinner, ToolUse, AskUserQuestion, and PromptHint. The elements table covers Box, Text, Button, Link, Code, Markdown, Input, Select, Svg, Client, Raster, and Image. The agent cards and counters in frames 014 through 016 map onto Box and Text inside a Pane. The node graph in frame 015 would need Svg, which the elements table marks as desktop-only, or Raster, which is terminal-only.
"Right inside Claude Code" needs narrowing. The overview's "Where mods run" table lists seven environments and says drawing "is narrower: only the terminal and the Desktop app show a mod's panes, bands, and replaced rows." Hooks still run in the VS Code extension chat panel, in claude -p, in the Agent SDK, and in cloud sessions. Nothing a mod draws appears in any of them. In a WSL session in the Desktop app, neither hooks nor drawing work, because plugins are unavailable there.
One surface stays off limits. The overview: "A mod can restyle much of Claude Code's interface, but not the permission prompt. It can't change what a prompt shows you."
A mod can send one request to a cheaper model, and your subscription limit is still shared across all models
The transcript's third claim: "number three you can send the easy stuff to a cheaper model a mod can step in and route certain requests to a different model so simple tasks stop eating into your limits."
The routing half is verified. The reference lists turn.step, which "Fires when one request is about to go to the model," and the hook can return "next({ ...e, model })" or "next({ ...e, effort })". The events page repeats it: a turn.step hook can "send it to a different model with next({ ...e, model }), or answer without calling the model." A second route exists for subagents: agent.spawn fires when a subagent or an agent-team teammate starts, and a hook can return next({ ...e, model }) "to choose its model." A third path is $.model.complete, documented with an example that passes model: 'haiku' for a one-shot classification job outside the conversation.
The model names in frames 017, 020, and 021 are current. The model configuration page lists haiku ("Fast and efficient Haiku model for simple tasks") and opus ("Latest Opus model for complex reasoning tasks") among the aliases, alongside default, best, fable, sonnet, sonnet[1m], opus[1m], and opusplan.
The "Your limits" bar in frames 020 and 021 overstates the result. The costs page describes the subscription ceiling this way: "'You've hit your session limit' or 'You've hit your weekly limit': a seat-based usage window on a subscription plan, shared across all models, so the developer can't restore access by switching models with /model." A separate per-family message exists, and there the advice flips: "After the model-specific 'You've hit your Opus limit' or 'You've hit your Sonnet limit' message, switching to a model outside that family with /model does keep the developer working." Routing a typo fix to Haiku spends fewer tokens against a shared window and leaves a per-family Opus budget untouched. It does not move those requests off your limits.
The mod's own model calls spend from the same place. The API page ends the section with one line: "These calls use the user's plan or API key." $.model.complete defaults to a maxTokens of 1024, with a ceiling of 64,000 or the model's output limit.
Claude writes the mod, and the code it writes runs unsandboxed with your full permissions
The closing claim is the one that needs the most care. The transcript: "you can just describe the mod you want to claude and it can go and build it you don't need to know anything technical." Frames 022 through 025 show the prompt "Build me a mod that shows what my agents are doing." producing a finished cube captioned "your mod".
The generation half checks out. The create page says: "Describe the mod you want in an interactive Claude Code session, and Claude writes it. Claude works from a built-in skill named plugin-authoring, which tells it where to write the mod, which events and methods your version has, and how the mod gets loaded." It gives a worked example prompt, "make a mod that shows the current git branch above the prompt," and Claude writes into ~/.claude/dev-mods/ followed by the session ID.
Four facts the video leaves out change the picture:
You approve every file. The create page: "In the default and acceptEdits permission modes, Claude Code asks before Claude creates each of the mod's files, because ~/.claude is a protected path. Approve each file as it comes up." Then a second prompt asks whether to enable hot reloading for the session.
The mod is disposable by default. "A mod Claude wrote loads only in the session that made it, and Claude Code deletes that session's mods folder once it's older than cleanupPeriodDays." Keeping it means copying the directory somewhere of your own and starting Claude with claude --plugin-dir ~/mods/git-branch, or publishing it to a marketplace.
Some sessions refuse it entirely. A mod Claude writes will not load where "Nobody is there to approve," as in a claude -p run or dontAsk mode, where the workspace is untrusted, or where --safe-mode, --bare, disableAllHooks, or managed settings block mods.
A mod runs as you. The overview's warning is unambiguous: "A mod is code that runs with your permissions. It can read and write your files, start processes, and make network requests. Install mods only from authors and marketplaces you trust." Its "What a mod can reach" list includes reading "environment variables and settings files, including an API key you keep in either," seeing "every prompt you send and every tool call Claude makes," approving a tool call "before you're asked," and spending "your usage." The page then states: "Mods aren't sandboxed. If you turn on sandboxing, the sandbox isolates the Bash commands Claude runs, and a process that a mod starts runs outside it."
Anthropic ships an inspection command for exactly this reason. claude plugin validate ./some-mod prints hooks: and calls: lines listing every event a mod handles and every mods API method it invokes, without running the code.
Key Takeaways
- Verified: Claude Code mods shipped in v2.1.287 on October 1, 2026, per the official changelog. The video posted 2026-10-06 18:43:11 UTC, five days later, so "just dropped" is accurate.
- Verified: The name "Mods" in frame 001 matches Anthropic's own wording. The changelog entry reads "Added Claude Mods."
- Correction: Session-to-session messaging is not a mod feature. It requires Claude Code v2.1.224 on macOS and Linux and v2.1.234 on native Windows, it is on with nothing to enable, and Claude drives it with the
ListAgentsandSendMessagetools. Mods add$.session.sendplus thesession.sendandsession.receiveinterception events. - Partial correction: A mod can draw the dashboard shown in frames 014 through 016, using
PaneorAbovePromptrender sites. Drawing appears only in the terminal CLI and the Desktop app Code tab. The VS Code extension,claude -p, the Agent SDK, and cloud sessions run the hooks and show nothing. - Verified: A
turn.stephook can returnnext({ ...e, model })to send one request to a different model, andagent.spawncan pick a subagent's model.haikuandopusare both current aliases in the model configuration docs. - Partial correction: The "Your limits" bar in frames 020 and 021 overstates the benefit. Subscription session and weekly limits are "shared across all models," so cheaper routing slows the burn rather than moving work off the limit. Per-family Opus and Sonnet limits are the case where switching models restores access.
- Correction: "You don't need to know anything technical" skips the approval loop and the risk. You approve each file Claude writes into
~/.claude, then approve hot reloading. The mod loads only in the session that created it unless you copy it out. Mods are not sandboxed and run with your full permissions, including reading API keys from environment variables. - Context: A mod cannot restyle the permission prompt, and
claude plugin validatelists a mod's events and API calls before you run it. - Context: Anthropic converted several of its own features into mods, including
cc-plugin-difffor/diff,cc-plugin-agents-mdforAGENTS.mdloading, andcc-plugin-telemetry. Source fordiff,agents-md,sec-default, andtelemetryis published in the Claude Code repository.
Resources
- Claude Code changelog. establishes the ship date and version for mods (v2.1.287, October 1, 2026) and the follow-up fixes through v2.1.292 on October 6.
- Mods overview. gives the verbatim definition of a mod, the "Where mods run" table showing which surfaces render a mod's drawing, the unsandboxed-permissions warning, and the list of built-in mods.
- Mods reference. lists every event name including
turn.step,session.send, andui.render, every mods API namespace, the render sites, the element table, and the hook time and size limits. - Use the mods API. documents
$.session.send({ to, text }), thesession.receiveandsession.sendobservation events, and$.model.completewith itsmodel: 'haiku'example and the note that model calls spend the user's plan or API key. - React to events with a mod. shows the
turn.stepgenerator form and states that a hook can send a request to a different model withnext({ ...e, model }). - Create a mod. covers the
plugin-authoringskill, the per-file approval prompts for the protected~/.claudepath, the session-scopeddev-modsfolder, and the sessions where a Claude-written mod cannot load. - Message your other Claude Code sessions. establishes that cross-session messaging predates mods at v2.1.224, works with nothing to enable, and runs through the
ListAgentsandSendMessagetools. - Manage costs effectively. states that subscription session and weekly limits are shared across all models, and lists cross-session messages among the causes of climbing usage.
- Claude Code model configuration. lists the current model aliases, confirming that
haikuandopusas shown in frames 017 through 021 are real names.
Published October 6, 2026. Writeup generated from a favorited TikTok.