{"schemaVersion":"1.0","publication":{"slug":"pivot-claude-code","name":"Claude Code Review","description":"Workflows, releases, and field notes for Anthropic's coding agent.","audience":"Developers and teams adopting Claude Code.","geography":null},"edition":{"id":"ce2abbef-2566-4d42-b471-b2cdcca9d4a2","date":"2026-10-05","status":"locked","createdAt":"2026-10-04T15:35:27.408Z","storyCount":10,"newsletterSubject":"Anthropic adds mods to Claude Code, Command flags obsolete Opus 5.5 instructions, Shell permissions fixed terminal freeze bugs"},"updatedAt":"2026-10-04T11:01:14.994Z","stories":[{"id":"b33eaec7-f5c8-4359-8826-1c091365453e","title":"Anthropic adds mods to Claude Code, letting you change how it behaves and looks with add-on code","dek":"Mods are short pieces of TypeScript (a programming language) code, shipped inside plugins (add-on packages you install), that run before, after or instead of actions like sending a prompt, calling a tool or asking permission, and Claude can also write them for you.","bodyMd":"Anthropic added mods to Claude Code on October 1, a way to change how the coding agent behaves, what its interface shows and which features it has. The ClaudeDevs account announced it with the line \"You can now mod Claude Code,\" and said a mod can be written in \"a few lines of TypeScript\" or built by Claude on request.\n\nMods ship inside plugins. You install them with /plugin in the CLI or the desktop app, and one walkthrough says running /plugins shows all of your installed mods. According to a summary of Anthropic's launch post, every action in Claude Code, such as sending a prompt, calling a tool or asking for permission, produces an event. A mod can run before that event, after it, or in place of it.\n\nAnthropic's listed uses, per that summary: rewrite a prompt before the model sees it, block, rewrite or retry a tool call, approve or deny a permission request automatically, and strip secrets out of tool output before Claude reads them. Mods can also edit tool results or add buttons and input fields in the terminal or desktop app.\n\nEarly walkthroughs show the interface side. Anthropic's examples include \"token weather\" (how full the context is), \"blast radius\" (what a delete would remove, shown before it runs) and \"replay theater\" (step-by-step replay of recent edits and diffs). One walkthrough shows a mod that surfaces three suggested next steps at the end of each turn, a mod an engineer on the Claude Code team uses. Another builder made a panel that tracks the prompt-cache countdown, session limits and what a session would have cost at API rates, plus a button that runs a session handoff. A third asked Claude for a live usage pane and got one, opened with a slash command.\n\nThe closest existing tool is hooks, which fire on a set event every time without a model deciding. One walkthrough says mods work similarly and may not spend AI credits to run, and calls them a repackaging of what technical users could already hack together, now reachable in plain English and in the desktop app. Separately, Claude Code can write the mod for you, according to the ClaudeDevs announcement and another walkthrough.\n\nThe trust model is the constraint. Anthropic says mods are not sandboxed: they have the same access to your machine as Claude Code does, so install them only from sources you trust. On Team and Enterprise plans, a built-in mod called sec-default loads first and limits what risky user-installed mods can do, so employees cannot get around admin controls. Anthropic's post gives no numbers on reliability or failure rates.","status":"published","storyType":"news","category":"Release","clusterKey":"claude-code-mods-launch","slug":"anthropic-adds-mods-to-claude-code-letting-you-change-how-it-behaves-and-b33eae","url":"https://claudecodereview.ai/a/anthropic-adds-mods-to-claude-code-letting-you-change-how-it-behaves-and-b33eae/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/b33eaec7-f5c8-4359-8826-1c091365453e","role":"lead","position":0,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/anthropic-adds-mods-to-claude-code-letting-you-change-how-it-behaves-and-b33eae/75c2047a959006d7-89d537723a4821a2/web_hero.webp","imageAlt":"A diagram shows a central line branching into three sequential steps, with an add-on module being attached to alter the flow of the process.","createdAt":"2026-10-04T00:01:32.376Z","updatedAt":"2026-10-04T00:31:50.431Z","sources":[{"role":"primary","title":"Claude Code Now Lets You Rewrite Prompts and Tool Calls With TypeScript Mods","url":"https://open.spotify.com/episode/2GmhAXsczOeCCCTfFiVg97","sourceName":"AI Papers Podcast Daily","author":"AI Papers Podcast Daily","publishedAt":"2026-10-01T20:17:00Z"},{"role":"supporting","title":"Claude Code Mods Are Game Changers. This One Saves Me Money.","url":"https://www.youtube.com/watch?v=26rQLqoxBHA","sourceName":"Nate Herk | AI Automation","author":"Nate Herk | AI Automation","publishedAt":"2026-10-03T03:43:11Z"},{"role":"supporting","title":"Claude Code Adds Mods to Let You Customize the UI With Plain English","url":"https://www.youtube.com/watch?v=9hetShMMp2s","sourceName":"Nate Herk | AI Automation","author":"Nate Herk | AI Automation","publishedAt":"2026-10-02T21:59:19Z"},{"role":"supporting","title":"10 Claude Code Mods You Can Install With Plain English Today","url":"https://www.youtube.com/watch?v=uvIopT_2sY0","sourceName":"@Mark_Kashef","author":"@Mark_Kashef","publishedAt":"2026-10-02T21:18:28Z"},{"role":"supporting","title":"Claude Code Adds Mods to Customize the GUI With Live Panes and Tools","url":"https://www.youtube.com/watch?v=EEcIwQpit0s","sourceName":"Income stream surfers","author":"Income stream surfers","publishedAt":"2026-10-02T18:48:52Z"},{"role":"supporting","title":"Anthropic Ships Mods and Plugins for Customizing Claude Code","url":"https://thenewstack.io/anthropic-claude-code-mods-plugins","sourceName":"\"when:7d \"Claude Code\" Anthropic\" - Google News","author":"\"when:7d \"Claude Code\" Anthropic\" - Google News","publishedAt":"2026-10-02T14:08:01Z"},{"role":"supporting","title":"Claude Mods Launch Lets You Customize Claude Code's Behavior and UI","url":"https://www.youtube.com/watch?v=Rn4nmFRPe0s","sourceName":"Chase AI","author":"Chase AI","publishedAt":"2026-10-02T10:43:31Z"},{"role":"supporting","title":"Claude Code Now Supports Custom Mods and Plugins You Can Build Yourself","url":"https://x.com/ClaudeDevs/status/2105721434807083061","sourceName":"ClaudeDevs","author":"ClaudeDevs","publishedAt":"2026-10-01T18:08:07Z"}]},{"id":"c10d3d33-ccae-42cc-bf7d-732c5aba7c4e","title":"Claude Code command flags old instructions that Opus 5.5 no longer needs","dek":"Running /claude-api prompt-audit makes Claude Code review the standing instructions it reads, including CLAUDE.md and saved instruction packages called skills, and list the ones that are stale or redundant.","bodyMd":"A one-line Claude Code command, `/claude-api prompt-audit`, checks the instructions you have given Claude for rules that no longer help. It reads your skills (saved instruction packages Claude Code can load), your CLAUDE.md file (the standing instructions it reads in every session), your AGENTS.md and your prompts. It then flags old or redundant instructions that may be dragging down Claude Opus 5.5.\n\nThe target is prompts written for earlier models. According to a summary of the command, the audit flags verification rituals such as \"double-check your work\" that newer models don't need. It also catches ALL-CAPS NEVER rules and other pressure language that makes the model rigid. Rules with no stated reason, and hard word caps on output, are marked as candidates to rewrite or remove.\n\nThe output is a report. Each finding carries the file, the line and quoted evidence, plus a proposed diff you can apply. One account describes the command as rewriting prompts. A separate walkthrough of the feature says the audit itself changes nothing on disk: you ask Claude to apply the edits you want, in whatever batches you prefer, and can accept, reject or edit each one.\n\nThat walkthrough also gives more detail on how it works, though it names the command `/doctor prompt-audit`, with a `/checkup prompt-audit` alias, and says it arrived in Claude Code's September 25 release. By default it sweeps CLAUDE.md, CLAUDE.local.md, AGENTS.md, path-scoped rules under `.claude/rules`, skills, custom commands, subagents and output styles, at both project and user level. A path argument narrows it, for example to a single skill folder. It ranks four kinds of problems by severity: stale file paths, stale commands, instructions that contradict each other, and patterns written for older Claude models, such as chain-of-thought scaffolds and \"think step by step\" preambles.\n\nThe walkthrough also says the audit is not built into the Claude Code binary but implemented inside the bundled `/claude-api` skill, the reference Claude uses to look up current model behavior, so the check works against Anthropic's current documentation. Its stated consequence is that the command will refuse to run if you turned `/claude-api` off through the `skillOverrides` setting, or if your organization sets `disableBundledSkills` to true. The other sources do not mention this dependency.\n\nThe same walkthrough suggests running it after a model upgrade. It says moving from Opus 5 to Opus 5.5 shifted context handling, effort levels and subagent caching, which can leave old workarounds obsolete. It also suggests running it before onboarding a teammate who will inherit your setup. It says to keep `/skill-doctor`, an earlier Anthropic command that finds unused skills and their per-turn context cost, since that is a usage check and this is a content check. It also warns to expect false positives on dynamic paths.","status":"published","storyType":"news","category":"Workflow","clusterKey":"claude-api-prompt-audit-command","slug":"claude-code-command-flags-old-instructions-that-opus-5-5-no-longer-needs-c10d3d","url":"https://claudecodereview.ai/a/claude-code-command-flags-old-instructions-that-opus-5-5-no-longer-needs-c10d3d/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/c10d3d33-ccae-42cc-bf7d-732c5aba7c4e","role":"item","position":1,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/claude-code-command-flags-old-instructions-that-opus-5-5-no-longer-needs-c10d3d/3e3c911142aa4728-b54141f45f35ea1a/web_hero.webp","imageAlt":"A stack of twelve rectangular paper sheets with one sheet lifted out of the middle to show a gap.","createdAt":"2026-10-02T02:36:06.975Z","updatedAt":"2026-10-02T03:01:42.926Z","sources":[{"role":"primary","title":"Claude Code Adds Prompt Audit to Flag Stale Rules and Contradictions","url":"https://open.spotify.com/episode/7jM9RbtHosbHNeFJRLaNvu","sourceName":"Alex4Tech#","author":"Alex4Tech#","publishedAt":"2026-10-01T08:45:00Z"},{"role":"supporting","title":"Claude Code Command Audits and Rewrites Prompts for Opus 5.5","url":"https://x.com/_guillecasaus/status/2104173510226522283","sourceName":"Guillermo Casaus","author":"Guillermo Casaus","publishedAt":"2026-09-27T11:37:13Z"},{"role":"supporting","title":"New Claude Code Command Audits Your Prompts and Proposes Fixes Automatically","url":"https://x.com/RoundtableSpace/status/2104016925022126346","sourceName":"0xMarioNawfal","author":"0xMarioNawfal","publishedAt":"2026-09-27T01:15:00Z"},{"role":"supporting","title":"Hidden Claude Code Command Audits and Upgrades Your Prompts for Newer Models","url":"https://x.com/AdelDeveloperX/status/2103499075735748682","sourceName":"‏عادل | مبرمج","author":"‏عادل | مبرمج","publishedAt":"2026-09-25T14:57:15Z"},{"role":"supporting","title":"Claude Code Command Audits Your Prompts for Hidden Performance Drags","url":"https://x.com/santtiagom_/status/2103486845497532873","sourceName":"santi","author":"santi","publishedAt":"2026-09-25T14:08:39Z"}]},{"id":"f886bd6b-101c-44a7-86df-87156b82e159","title":"Claude Code 2.1.289 closes gaps in shell permission rules and fixes terminal freezes","dek":"The October 3 release fixes several cases where rules meant to block or flag a shell command could be skipped, and stops the terminal freezing on certain code blocks. You can set rules that tell Claude Code which terminal commands it must block or ask you about before running.","bodyMd":"Claude Code v2.1.289, published October 3, is mostly a repair release, and its most consequential fixes are in permissions. Deny and ask rules are the settings that block a command outright or force a confirmation prompt. The release notes list several paths where those rules did not hold.\n\nTwo involve Bash under sandbox auto-allow, the mode where the sandbox approves commands on its own. A deny or ask rule missed a command that sat behind an environment variable prefix with an expanded value, such as `TZ=\"$HOME\" rm -rf build`. A rule was also skipped when a bare variable assignment came before the command. A third fix covers a deny or ask rule on a nested part of a compound shell command, which did not hold over a user-installed mod's approval on managed machines.\n\nTwo more permission fixes touch files and servers. Read deny rules did not apply to files that were @-mentioned, changed, or selected in the IDE through a symlink. And a user-installed plugin could rewrite the descriptions of an organization-managed MCP server's sign-in tools.\n\nThe stability fixes are broader. The terminal froze on short code blocks containing many unclosed `<script>` tags or deeply nested `${` substitutions. Published artifact pages also froze or crashed the reader's browser tab on short code blocks with many unclosed `<script>` tags. A freeze or forced quit at launch is also fixed for a plugin that drew a Box with a border style the terminal does not know. Supervised and background sessions no longer end when a plugin's on-screen handler throws asynchronously, and sessions no longer end with an interface error when a plugin region with no height keeps growing.\n\nMuch of the rest is plugin and mod rendering. A mod's Client that fails while drawn now fails alone and raises `ui.fault` instead of taking down everything around it, and it no longer stays failed for the whole session after the terminal throws. Sessions that ended with \"unrecoverable interface error\" when a value written by a mod's `ui.render` hook made a row throw now get an engine-drawn row instead. Plugin fixes include stale copies in `plugin list`, `plugin eval` and `plugin update` for plugins installed from a local folder marketplace, hot reload for a symlinked `--plugin-dir`, and `claude plugin validate` skipping a plugin when its folder also holds a marketplace manifest.\n\nFor people building agent setups, the release adds `agent.spawn` for teammates, one agent id across plugin hook events, and idle and waiting states in `$.agent.list()`. The notes say nothing beyond that line.\n\nOne reversal: Anthropic reverted a 2.1.288 change to `claude auth status` that may have made sign-outs more frequent.","status":"published","storyType":"news","category":"Release","clusterKey":"claude-code-2-1-289-release","slug":"claude-code-2-1-289-closes-gaps-in-shell-permission-rules-and-fixes-term-f886bd","url":"https://claudecodereview.ai/a/claude-code-2-1-289-closes-gaps-in-shell-permission-rules-and-fixes-term-f886bd/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/f886bd6b-101c-44a7-86df-87156b82e159","role":"item","position":2,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/claude-code-2-1-289-closes-gaps-in-shell-permission-rules-and-fixes-term-f886bd/da5dd82b4e8241d8-bb373c514a532519/web_hero.webp","imageAlt":"Seven shell prompt brackets in a row with one lifted out to highlight the fix to permission rules.","createdAt":"2026-10-04T10:54:06.386Z","updatedAt":"2026-10-04T11:01:14.994Z","sources":[{"role":"primary","title":"Claude Code v2.1.289 Fixes Terminal Freezes, Plugin Bugs, and Adds Agent APIs","url":"https://github.com/anthropics/claude-code/releases/tag/v2.1.289","sourceName":"ashwin-ant","author":"ashwin-ant","publishedAt":"2026-10-03T23:07:17Z"}]},{"id":"92097443-d39a-4d54-bdd3-dcc77d4e132c","title":"Claude Code Projects gives each request its own agent, and the main chat defaults to Low effort","dek":"An agent is an AI worker that carries out a task, and effort is a setting for how much thinking the AI does before answering; in Projects, one coordinating chat gives each request to its own agent, and Project settings can override the main chat's default Low effort.","bodyMd":"Claude Code Projects is a mode in which a single chat, run by an orchestrator model that acts as the project's coordinator, delegates work to several agents at once. An agent is an AI worker that carries out a task. You create a project and give it context: a GitHub repository, a file, a folder or a Google Drive folder. Then you describe what you want in the main chat.\n\nFor each request, the orchestrator creates a task called a thread and assigns it to a dedicated agent. According to a walkthrough of the feature, threads appear in a panel on the right with their status, either in progress or waiting for your input. You can open any thread to see its steps and talk to that one agent while the others keep working.\n\nThe main chat itself runs on Low effort by default. Effort is a setting that controls how much thinking the AI does before answering. A post about the feature gives the reason for the default: that chat mostly just coordinates threads. The same post says you can override the defaults in Project settings, and asks users who had to raise the main chat's effort to explain why, since that would show where Low falls short.\n\nThe settings screen also lists Sonnet 5.5, Anthropic's Claude Sonnet model, according to the post.\n\nThe split is worth knowing when you tune a project. Each thread has its own agent, while the main chat coordinates the threads. If you find Low falls short for the main chat, the post says the defaults can be changed in Project settings, and it is asking for reports on where that happens.","status":"published","storyType":"news","category":"Workflow","clusterKey":"claude-code-projects-parallel-agent-teams","slug":"claude-code-projects-gives-each-request-its-own-agent-and-the-main-chat-920974","url":"https://claudecodereview.ai/a/claude-code-projects-gives-each-request-its-own-agent-and-the-main-chat-920974/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/92097443-d39a-4d54-bdd3-dcc77d4e132c","role":"item","position":3,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/claude-code-projects-gives-each-request-its-own-agent-and-the-main-chat-920974/aa0f1d27b49e6833-9fe8ce05aa86c3d0/web_hero.webp","imageAlt":"A diagram showing a central hub branching into five smaller nodes, with one node highlighted to represent an adjusted effort setting.","createdAt":"2026-10-02T02:37:19.925Z","updatedAt":"2026-10-02T03:01:33.788Z","sources":[{"role":"primary","title":"Claude Code Projects Now Let You Override Default Effort Levels and Access Sonnet 5.5","url":"https://x.com/lydiahallie/status/2104702636784337036","sourceName":"Lydia Hallie ✨","author":"Lydia Hallie ✨","publishedAt":"2026-09-28T22:39:46Z"},{"role":"supporting","title":"Claude Code Adds Projects With Parallel Agent Teams for Complex Builds","url":"https://tiktok.com/@dario.fontanel/video/7690520325662051606","sourceName":"Dario Fontanel, PhD","author":"Dario Fontanel, PhD","publishedAt":"2026-09-28T10:05:00Z"}]},{"id":"d06d4351-63f2-4dfe-a3cd-fb34d967deca","title":"Claude Code 2.1.288 lets mods read selected text and restores prompts cleared with Ctrl+C","dek":"Mods, the extensions that draw their own views and buttons in Claude Code's interface, can now read what you highlighted in fullscreen mode.","bodyMd":"Claude Code v2.1.288, released October 2, adds `$.ui.selection()` for mods. The call returns the text you last selected in fullscreen mode. When that selection sits inside a single transcript row, it returns the row too.\n\nTwo changes affect day-to-day typing. A prompt cleared with Ctrl+C can now be recovered: press Up on the empty prompt and the draft returns, pasted text and images included. And `/code-review` takes a new `--max-findings <n>|all` flag to report more or fewer findings than its usual limit. The setting is reused on later runs until you pass `--max-findings default`.\n\nThe agents view gets navigation help. Ctrl+F finds a session by name, and Alt+↑/↓ jumps between groups. Both, along with rename, can be rebound in `keybindings.json`. The release notes also say the view's `n:` filter and Ctrl+F search now open the session whose name matches best on Enter, not whichever row is on top.\n\nSeveral fixes touch permissions and hooks. A dangerous `rm` (the notes cite `/` or the home directory) inside a `bash -c` or `sh -c` script no longer runs without a prompt in `bypassPermissions` mode or under a shell allow rule. PreToolUse and PermissionRequest hooks used to be skipped when matching them failed or the tool's input could not be serialized to JSON. The call is now blocked. Path-scoped `.claude/rules` and nested CLAUDE.md files now load when Write or Edit creates or changes a file in their scope. Before, only Read triggered them.\n\nSession reliability gets a long list. Non-interactive sessions and subagents now continue from the partial response after a mid-response API timeout, and thinking-only responses are retried. Long conversations no longer fail with \"Prompt is too long\" when the last reply reported zero token usage. Several `--resume` bugs are fixed, including dropped files after a compaction and a last response that went unsaved.\n\nSome behavior changed outright. The background command time limit now applies only in unattended sessions (`-p`, the Agent SDK, CI and cloud), so terminal, desktop app and VS Code sessions have none. `/autocompact` saves its window per model. `claude project purge` is now `claude purge`, and the old name still works with a notice. The client-side auto mode classifier now ignores an `ANTHROPIC_DEFAULT_SONNET_MODEL` pin that names Claude Sonnet 5.5 or Opus 5.5 and uses Claude Sonnet 5 instead. Teams on gateways that reject structured outputs get a new `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` switch.","status":"published","storyType":"news","category":"Release","clusterKey":"claude-code-2-1-288-release","slug":"claude-code-2-1-288-lets-mods-read-selected-text-and-restores-prompts-cl-d06d43","url":"https://claudecodereview.ai/a/claude-code-2-1-288-lets-mods-read-selected-text-and-restores-prompts-cl-d06d43/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/d06d4351-63f2-4dfe-a3cd-fb34d967deca","role":"item","position":4,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/claude-code-2-1-288-lets-mods-read-selected-text-and-restores-prompts-cl-d06d43/e339f78b4b68b587-6f15a1bb361c6be3/web_hero.webp","imageAlt":"A highlighted block of text is lifted away from a line of text, showing an extraction from a transcript row.","createdAt":"2026-10-04T00:03:04.882Z","updatedAt":"2026-10-04T00:31:41.493Z","sources":[{"role":"primary","title":"Claude Code v2.1.288 Adds Text Selection API, Session Recovery, and Code Review Controls","url":"https://github.com/anthropics/claude-code/releases/tag/v2.1.288","sourceName":"ashwin-ant","author":"ashwin-ant","publishedAt":"2026-10-02T20:19:57Z"}]},{"id":"8d0fb69d-c255-4d49-a911-b2b3ba9624b4","title":"Read deny rules in Claude Code let 4 of 11 routes to secret files through, test finds","dek":"A Read deny rule blocks Claude Code's own file tools but not commands that read files without naming them, and turning on the sandbox (a walled-off space where code can run without touching your real files) closed those shell gaps in the same test.","bodyMd":"A test of Claude Code 2.1.285 found that a Read deny rule such as `Read(./secrets/**)` or `Read(**/.env)` still let file contents reach the model on 4 of 11 routes. The leaks were `grep -r`, a Python one-liner, and an `@` import in a root or subdirectory CLAUDE.md, each in 2 of 2 runs. Rulestack, which sells guides, hooks and skills for Claude Code, published the results on 2026-10-02.\n\nThe other 7 routes held: the Read, Grep and Glob tools, `cat`, `head` and `grep` on a named file, and `@` mentions in the prompt. Rulestack built a throwaway project with two denied files and one allowed file, each holding a unique marker string, and ran 20 `claude -p` sessions on 2026-09-30 using `--model sonnet`, which resolved to claude-sonnet-5-5. A route counted as held only if the marker was absent from both the model's final answer and the session transcript.\n\nThe shell leaks match what the permissions page already says. Deny rules cover file commands Claude Code recognizes, such as `cat`, `head`, `tail`, `sed` and `tee`, but not a command that reads files without naming them, or a script that opens files itself. Rulestack's addition is how ordinary the leaking commands look. In two runs with the default tool set and a plain prompt asking for the value of API_TOKEN, the model's first and only call was `grep -rn \"API_TOKEN\".`, which printed the secret with no denial. The tools reference says that on macOS, Linux and WSL, Claude Code leaves Glob and Grep out of the default tool set and searches with Bash `grep` instead. The two search tools that honor the deny list were not offered.\n\nThe import routes were the quieter failure. With imports in the root CLAUDE.md, both denied files loaded at startup as project instructions, even with `--tools \"\"`. With imports in `handbook/CLAUDE.md`, the files attached as soon as the model read an unrelated file in that folder. No denial appeared in either case. The memory page describes an approval dialog only for imports that resolve outside the working directory, and a denied file inside the project does not count as external.\n\nThe refusals that did work came in two forms. The Read tool and named-path Bash commands refused out loud. Root-level Grep, Glob and `@` mentions simply omitted the denied files without saying so, which control runs with an empty deny list confirmed was the rule at work.\n\nTurning on the sandbox changed the Bash result. With `sandbox.enabled` and `failIfUnavailable` set, no marker came back from any of the six commands. The operating system refused the reads (`Operation not permitted`) rather than the permission check. Rulestack did not run the import routes with the sandbox on, and the settings reference describes the sandbox as covering Bash commands, so the author would not count on it for the import loader. The test also did not exercise the documented retry with `dangerouslyDisableSandbox`, or the `allowUnsandboxedCommands: false` setting.\n\nThe limits are narrow: one model, one version, one macOS machine, and non-interactive sessions only. Rulestack did not test `tail`, `sed`, Node, user or managed settings, or subagents. Its practical suggestion is to rerun the three-file lab after each Claude Code update, and to review `@` imports in CLAUDE.md, CLAUDE.local.md and AGENTS.md files like code.","status":"published","storyType":"news","category":"Research","clusterKey":"read-deny-rules-bypass","slug":"read-deny-rules-in-claude-code-let-4-of-11-routes-to-secret-files-throug-8d0fb6","url":"https://claudecodereview.ai/a/read-deny-rules-in-claude-code-let-4-of-11-routes-to-secret-files-throug-8d0fb6/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/8d0fb69d-c255-4d49-a911-b2b3ba9624b4","role":"item","position":5,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/read-deny-rules-in-claude-code-let-4-of-11-routes-to-secret-files-throug-8d0fb6/9c8b6d0c5cec5e85-7832022e7dd027f2/web_hero.webp","imageAlt":"An illustration showing eleven paths fanning out, with four paths detached and bypassing a barrier, while a wall blocks all paths at the end.","createdAt":"2026-10-04T00:05:24.625Z","updatedAt":"2026-10-04T00:31:32.458Z","sources":[{"role":"primary","title":"Claude Code Read Deny Rules Fail on 4 of 11 Secret Access Routes","url":"https://dev.to/rulestack/claude-codes-read-deny-rules-let-4-of-11-routes-through-grep-r-a-python-one-liner-and-two-ajf","sourceName":"Rulestack","author":"Rulestack","publishedAt":"2026-10-02T02:17:00Z"}]},{"id":"91171eb5-1e6d-490a-8da0-719748581cc7","title":"Claude Code's creator reportedly keeps agents working overnight on code changes, tests and feedback","dek":"Boris Cherny is reported to run hundreds of agents by day and thousands overnight on proposed code changes waiting for someone to review and accept them, plus test fixes and sorting feedback.","bodyMd":"Boris Cherny, who created Claude Code, is reported to keep AI agents working around the clock, according to two Instagram reels that credit video from Alex Kantrowitz. Only one of the reels says he uses a setup he calls loops, and it says cron, a scheduler that runs tasks at set times, starts recurring Claude sessions at whatever interval a task needs.\n\n**Scale.** One report says that during the day he runs five to ten parallel sessions, with several hundred agents working at once; the other says only that he runs hundreds of agents during the day. Both say thousands work overnight, and the first describes that as deeper work across his projects. One report adds that he manages most of it from his phone.\n\n**The loops reported.** The first reel describes these examples:\n\n- One monitors pull requests (proposed code changes waiting for review) and fixes CI problems, the failures in the automatic checks that run on each change, as they appear.\n- One catches flaky tests, the ones that fail and pass at random, and resolves them automatically.\n- One pulls from Twitter, GitHub, Discord and support channels every thirty minutes and groups the feedback by product area.\n\nThe second reel says only that the agents handle pull requests, fix tests and sort feedback from GitHub, Discord and support channels.\n\n**Output.** The reports say 20 to 30 pull requests ship every day. One attributes that figure to Cherny's team, and the other does not say who ships them. Both say his last 150 pull requests were written entirely by Claude.\n\nThe reports do not include the commands or prompts behind the loops. What they show is the pattern: pick a recurring chore, such as watching open pull requests or sorting feedback, and put it on a timer so a session handles it on schedule.","status":"published","storyType":"tip","category":"Workflow","clusterKey":"boris-cherny-overnight-loops","slug":"claude-code-s-creator-reportedly-keeps-agents-working-overnight-on-code-91171e","url":"https://claudecodereview.ai/a/claude-code-s-creator-reportedly-keeps-agents-working-overnight-on-code-91171e/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/91171eb5-1e6d-490a-8da0-719748581cc7","role":"item","position":6,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/claude-code-s-creator-reportedly-keeps-agents-working-overnight-on-code-91171e/04fb4f906fbbbd37-f3794d1af0f81a72/web_hero.webp","imageAlt":"Thousands of small units funnel into a single channel, while a separate row of ten units features one block lifted out of the line.","createdAt":"2026-10-01T19:56:55.944Z","updatedAt":"2026-10-01T20:00:23.010Z","sources":[{"role":"primary","title":"How Claude Code's Creator Runs Thousands of AI Agents Overnight","url":"https://instagram.com/reel/DdzTlY2MiI_","sourceName":"@theailadder","author":"@theailadder","publishedAt":"2026-09-27T18:58:24Z"},{"role":"supporting","title":"Claude Code Creator Runs Thousands of AI Agents Overnight to Ship 30 PRs Daily","url":"https://instagram.com/reel/Dd1fVwRs0Cy","sourceName":"@uncover.ai","author":"@uncover.ai","publishedAt":"2026-09-28T15:19:40Z"}]},{"id":"79ad3c64-0465-4f43-b566-9d6356741518","title":"Four ways to put helper AIs to work inside Claude Code","dek":"Claude Code can hand one specific job to a helper AI called a subagent; three pasted prompts set these up for a dashboard, a build-then-check split or pre-launch testing, and a fourth schedules a nightly bug hunt.","bodyMd":"Four recent walkthroughs show Claude Code setups for handing work off. Three rely on subagents: separate helper AIs, each defined in a file under `~/.claude/agents`, that take one narrow job so the main session can keep working. The fourth uses a routine instead, a saved task that Claude Code runs on a schedule without you starting it. Each is installed by pasting a prompt into Claude Code. The dashboard, builder-and-verifier and breaker prompts tell Claude Code to show you the files first and wait for your confirmation before writing anything. The dashboard, breaker and nightly-routine walkthroughs name the model as \"Opus 5.5.\"\n\n**A subagent that builds progress dashboards.** One walkthrough suggests having Claude vibe-code a quick HTML dashboard before any long, unattended task. The prompt creates a `dashboard-builder` subagent on Opus at medium effort, with memory set to user and any design skills you have installed preloaded. It can only read and write the `.dashboard/` folder and its own memory. The first run asks your preferred style (dark or light, dense or airy, one accent color) and saves it. After that it builds a single HTML file in about two minutes, in the background, while the main session keeps coding on high effort. The page shows task progress, anything stuck, questions waiting on you, and the default action Claude will take if you don't answer. It refreshes every 10 seconds. A rule added to `~/.claude/CLAUDE.md` triggers it for any task over five steps or longer than 30 minutes.\n\n**A builder and a verifier.** This setup is based on tests that Thariq, from Anthropic's Claude Code team, published on effort settings. According to the walkthrough, turning effort up mostly buys more verification and edge-case testing. His four-step approach for new features: have Claude ask what the spec is missing, build on low effort, review and stay on low if changes are needed, then switch to high to verify and test. The prompt turns that into two subagents. `builder` runs Opus on low and implements the approved spec. `verifier` runs Opus on high, runs the feature first, then adds tests focused on edge cases, and reports problems without changing code. One caveat: if the environment variable `CLAUDE_CODE_EFFORT_LEVEL` is set, the subagents' effort settings won't take effect. The prompt asks Claude Code to check and tell you, not change it.\n\n**Four breaker subagents before shipping.** Another walkthrough splits 16 attack questions across four subagents whose only job is to break your app: `security-breaker`, `data-breaker`, `flow-breaker` and `env-breaker`. Security checks include looking for private keys in frontend JS or git history, calling APIs while logged out, tampering with price or role in a request, hammering one endpoint 100 times, and hiding scripts in Markdown or SVG uploads. Data checks cover 10,000 records, a 200-character emoji name, duplicate emails in different capitalization, and empty forms. Flow checks cover double orders and replayed payment webhooks, refresh or Back mid-form, offline saves and a 50MB upload. Environment checks cover a small phone at 200% zoom, Safari's engine and time zones. All four run Opus on high effort, with xhigh suggested for security. They get read, run-command and Playwright browser access only. The prompt calls for test mode for payments, a test database, mocked AI APIs or a spending-capped key, and a stop if production keys turn up. Output is a severity-ranked report with reproduction steps, screenshots and fixes, with anything untestable marked \"untested.\"\n\n**A nightly bug-hunt routine.** The last walkthrough sets up a Claude Code routine with `/schedule` in the repo you want checked. It runs daily at 1:07 AM on Opus, in the cloud, so your laptop can be closed, with no connectors attached. It installs dependencies, runs the full test suite and notes pre-existing failures. Then it reviews commits pushed to the default branch in the last 24 hours. A bug counts only if a comment, the docs, a type or an existing test backs it up. For each one it writes a failing test first, fixes the code, and opens a draft PR, at most three per run. It never deletes, changes or skips existing tests, pushes only to `claude/` branches and merges nothing. Test it with `/schedule run`, then read the handoff note on the Routines page. The walkthrough warns that green in the run list only means the run finished.","status":"published","storyType":"roundup","category":"Workflow","clusterKey":"subagent-recipes-roundup","slug":"four-ways-to-put-helper-ais-to-work-inside-claude-code-79ad3c","url":"https://claudecodereview.ai/a/four-ways-to-put-helper-ais-to-work-inside-claude-code-79ad3c/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/79ad3c64-0465-4f43-b566-9d6356741518","role":"item","position":7,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/four-ways-to-put-helper-ais-to-work-inside-claude-code-79ad3c/2326bc5b98f237bb-6d371552139e8115/web_hero.webp","imageAlt":"A diagram shows a main stem splitting into four branches, three ending in sets of agent-task blocks and one ending in a circular arrow for a recurring routine.","createdAt":"2026-10-02T02:39:26.039Z","updatedAt":"2026-10-02T03:01:25.141Z","sources":[{"role":"primary","title":"Claude Code Pre-Ship Testing With 4 Specialized Breaker Subagents","url":"https://x.com/Voxyz_ai/status/2104224555040452925","sourceName":"Vox","author":"Vox","publishedAt":"2026-09-27T15:00:03Z"},{"role":"supporting","title":"Automated Nightly Bug Hunting With Claude Code Routines and Opus 5.5","url":"https://x.com/Voxyz_ai/status/2105434062676431306","sourceName":"Vox","author":"Vox","publishedAt":"2026-09-30T23:06:12Z"},{"role":"supporting","title":"Set Up a Claude Code Subagent That Builds Live Progress Dashboards","url":"https://x.com/Voxyz_ai/status/2103946635831050740","sourceName":"Vox","author":"Vox","publishedAt":"2026-09-26T20:35:42Z"},{"role":"supporting","title":"Anthropic Team Member's Two-Subagent Claude Code Workflow for Safer Builds","url":"https://x.com/Voxyz_ai/status/2103586663393853636","sourceName":"Vox","author":"Vox","publishedAt":"2026-09-25T20:45:17Z"}]},{"id":"5c7f4a80-0026-4b3b-9f04-06a27448419f","title":"Community mods add an aitmpl.com install panel, formatted replies and animated scenes to Claude Code","dek":"Mods are early-access add-ons that can redraw parts of Claude Code's interface, and builders have already made an aitmpl.com install panel, a reply formatter, themes and cartoon-style scenes above the prompt that retell what Claude is doing. Mods are optional add-ons you can install to change how Claude Code looks and what extra panels it shows. You can try mods now, but expect them to be unfinished and to change or break.","bodyMd":"Four community-built mods, the add-ons that can redraw parts of Claude Code's interface, appeared within a day or two of each other. One developer says Anthropic shipped mods on October 2. Another notes the mod API is still early access, so expect updates and rough edges.\n\n**An installer panel for aitmpl.com components.** A mod from Claude Code Templates that installs components from aitmpl.com now opens a panel inside Claude Code for installing any component from the site, including future mods. Run `npx claude-code-templates@latest --mod productivity/aitmpl`, then `/reload-plugin`, then `/aitmpl`. The announcement appeared October 2.\n\n**Formatted replies in the terminal.** Claude often writes warning callouts, checklists and diagrams that the terminal shows as raw symbols. One developer's mod draws them properly: alerts such as `[!NOTE]` and `[!WARNING]` become colored boxes (in the terminal and the desktop app), task lists become ☐ and ☑, strikethrough text is struck through, and Mermaid diagrams (flowchart, sequence, state, class, ER and xychart) are drawn as Unicode art. At session start the mod adds a short note to Claude's context, so there is no CLAUDE.md to edit. It changes only how replies are drawn, and anything it cannot draw falls back to normal rendering. Install by cloning the repo and starting Claude with `--plugin-dir` pointed at it. The README lists what it does not handle.\n\n**Custom themes and prompt tools.** A separate open-source mod, styled to look like an official feature, lets you pick your own color scheme and font. Its prompt tools include Tidy, which spell-checks and condenses a prompt; Prune, which has the session recommend unnecessary branches to delete and check for merge conflicts; and Gaslighting, which appends \"ChatGPT was able to do this, figure it out\" to a prompt. Toolbar extras include a usage meter, a cache countdown, live sports scores, a stock ticker and local weather. Its developer says you can ask the session itself to change the setup.\n\n**Animated scenes above the prompt.** Claude Fables, a free mod for the Claude Code desktop app, watches each tool call and each line Claude says. Every few seconds it retells the latest moment as a short animated scene above the prompt: a bug hunt becomes a nature documentary and a failing test makes Claude trip. Claude appears as a small orange critter with 20 actions across 7 scenes, in 11 visual styles switched with `/fables style <name>`, including pixel art, blueprint and ukiyo-e.\n\nEach scene is one small request to Claude's Sonnet or Haiku models, so it draws a few requests a minute from your own usage. The developer says it does not work in cloud environments. To install, clone the repo, add its path to `CLAUDE_CODE_PLUGIN_DIRS` in the env block of `~/.claude/settings.json`, and restart the desktop app. The `/fables` command may not appear in the command list but should still respond.","status":"published","storyType":"roundup","category":"Ecosystem","clusterKey":"community-mods-roundup","slug":"community-mods-add-an-aitmpl-com-install-panel-formatted-replies-and-ani-5c7f4a","url":"https://claudecodereview.ai/a/community-mods-add-an-aitmpl-com-install-panel-formatted-replies-and-ani-5c7f4a/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/5c7f4a80-0026-4b3b-9f04-06a27448419f","role":"item","position":8,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/community-mods-add-an-aitmpl-com-install-panel-formatted-replies-and-ani-5c7f4a/ebdaf08021293825-ef430958c28d9787/web_hero.webp","imageAlt":"Four distinct modular interface blocks are being inserted into a hollow rectangular frame, representing the installation of four custom mods into an interface.","createdAt":"2026-10-04T10:56:48.379Z","updatedAt":"2026-10-04T11:00:57.809Z","sources":[{"role":"primary","title":"Claude Code Mods Let You Add Custom Markdown Rendering to the Terminal","url":"https://reddit.com/r/claudeskills/comments/1ww8hvv/i_grumbled_about_github_flavored_markdown_in","sourceName":"/u/Turbulent_Quail1421","author":"/u/Turbulent_Quail1421","publishedAt":"2026-10-02T23:33:03Z"},{"role":"supporting","title":"Open Source Claude Code Mod Adds Custom Themes and Prompt Tools","url":"https://reddit.com/r/ClaudeCode/comments/1wwu2ub/made_claude_code_feel_like_mine_custom_colors","sourceName":"/u/davis_valentine","author":"/u/davis_valentine","publishedAt":"2026-10-03T18:19:55Z"},{"role":"supporting","title":"New Claude Code Mod Installs UI Components Directly From aitmpl.com","url":"https://x.com/dani_avila7/status/2106162295634030923","sourceName":"Daniel San","author":"Daniel San","publishedAt":"2026-10-02T23:19:56Z"},{"role":"supporting","title":"Claude Fables Mod Turns Claude Code Sessions Into Animated Cartoons","url":"https://reddit.com/r/ClaudeAI/comments/1ww2cn3/i_built_claude_fables_a_claude_code_mod_that","sourceName":"u/dagerika","author":"u/dagerika","publishedAt":"2026-10-02T19:09:14Z"}]},{"id":"d0966168-52e6-4160-aa23-f9f9283ea536","title":"A free tool estimates the hidden text Claude Code re-sends every time a subagent starts","dek":"A subagent is a helper Claude Code spins up to handle a side job; this command-line tool reads your local Claude Code logs and estimates how many tokens (the chunks of text a model reads and bills for) each subagent call repeats before it sees your prompt.","bodyMd":"A new open-source tool called subagent-tax estimates the fixed block of text that goes out again every time Claude Code spawns a subagent through Task(). A subagent is a helper Claude Code spins up to handle a side job. Its developer says the tool is a zero-dependency Python program you run from the terminal (`pip install subagent-tax`, then `subagent-tax`). It scans the transcripts in `~/.claude/projects`, counts each subagent call, and converts the total into tokens and dollars. It is MIT licensed.\n\nThe default assumption is about 51,000 tokens per call. The developer says that figure comes from an earlier published measurement, which found subagents accounted for 48% of one user's bill while producing 0.9% of the output. The tool's heuristic splits the 51,000 into a 20,000-token system prompt, 16,000 for MCP tool schemas, 8,000 for built-in tool schemas, 4,000 for skill listings and 3,000 for CLAUDE.md. In the developer's sample run, 132 calls across 18 sessions came to 6,732,000 tokens, roughly $20.20.\n\nThe more useful output is the ranking. The tool lists which components are cuttable per call (in the example, the system prompt first at 20,000 tokens, then the Playwright MCP server at 10,000) and offers a trim suggestion. Swapping in a custom system prompt, for instance, is estimated to save about 20,000 tokens per call, or about $7.92 across those 132 calls. Because the 51K default is a guess about someone else's setup, the tool accepts real inputs: `--claude-md` and `--skills-dir` to measure your own files, `--mcp-tax-report` to import per-server sizes from the developer's earlier MCP auditing tool, and `--set system_prompt=15000` or `--price-input 3.00` to override any component.\n\nThe developer lists the limits. Without real API payloads, text is estimated at about four characters per token, and the dollar figures depend on a price you should check yourself. The tool only sees local transcripts. Some of the preamble is working context rather than pure waste.\n\nA separate measurement points to a smaller baseline. An independent test captured the first request Claude Code 2.1.284 sent on 29 September 2026, in an empty folder with default settings, and counted 18,006 tokens before the prompt. Of those, 14,843 were definitions for 23 tools, 3,024 were the system prompt and 139 were injected reminders. That count excludes MCP servers, CLAUDE.md and skills, and it used OpenAI's `o200k_base` tokenizer rather than Anthropic's, so the author says each vendor's own count will differ.\n\nThe two numbers measure different things, so they do not contradict each other. The 18,006 figure is a captured first request of a plain session; the 51,000 is a modelled estimate for a loaded subagent call. The capture author notes that figures online range from about 24,000 to 51,000 because they mix products, tokenizers and setups. It also reports that setting `DISABLE_TELEMETRY=1` and `DISABLE_ERROR_REPORTING=1` dropped two tools and cut the first request to 15,857 tokens, though it did not trace which flag removes which tool.\n\nCaching softens the dollar cost but not the space. The capture author says cached input is billed at a fraction of the normal rate, yet the repeated tokens still occupy the context window every turn. Anyone running many subagents can run subagent-tax against their own transcripts and replace the default numbers with measured ones.","status":"published","storyType":"news","category":"Ecosystem","clusterKey":"subagent-token-tax","slug":"a-free-tool-estimates-the-hidden-text-claude-code-re-sends-every-time-a-d09661","url":"https://claudecodereview.ai/a/a-free-tool-estimates-the-hidden-text-claude-code-re-sends-every-time-a-d09661/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/d0966168-52e6-4160-aa23-f9f9283ea536","role":"item","position":9,"imageStatus":"ready","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/a-free-tool-estimates-the-hidden-text-claude-code-re-sends-every-time-a-d09661/d4b608453c0de7ea-2605734a01336671/web_hero.webp","imageAlt":"A stack of five blocks of varying sizes representing token counts, with the top block separated from the rest to highlight its status as a target for reduction.","createdAt":"2026-10-04T00:23:35.034Z","updatedAt":"2026-10-04T00:30:35.774Z","sources":[{"role":"primary","title":"New CLI Tool Exposes Hidden $20+ Token Tax on Every Claude Code Subagent Call","url":"https://dev.to/haoli/your-subagents-are-re-sending-51k-tokens-every-call-i-built-a-tool-to-prove-it-dj6","sourceName":"hao li","author":"hao li","publishedAt":"2026-10-02T10:03:03Z"},{"role":"supporting","title":"Claude Code Burns 18,000 Tokens Before You Type a Single Character","url":"https://medium.com/@decoding_ai_by_nureravi/claude-code-spends-18-006-tokens-before-you-type-a-word-b58166bb90be?source=rss------claude_code-5","sourceName":"Decoding AI by Nueravi","author":"Decoding AI by Nueravi","publishedAt":"2026-09-29T19:26:37Z"}]}],"tips":[{"id":"a1514f8d-452e-45f5-a72a-2b9592d638e2","title":"Which Claude Code project files to commit, and what goes in CLAUDE.md versus .claude","dek":"Anthropic's docs contrast CLAUDE.md, the instructions file Claude reads every session, with skills, which load only when called or relevant; the hidden .claude folder holds the rest of the project's Claude Code configuration.","bodyMd":"Claude Code's docs say what each project file does and when it loads, and that decides where an instruction belongs. The clearest contrast is between `CLAUDE.md`, the instructions file Claude reads at the start of every session, and skills, which load only when you call them or when they are relevant. Here is the layout, drawn from Anthropic's pages on memory, the `.claude` directory, skills, subagents, MCP and settings (read October 25, 2026).\n\n**CLAUDE.md: what every session needs.** Put build and test commands, naming conventions, project layout and \"always do X\" rules in `CLAUDE.md` at the repo root or in `.claude/CLAUDE.md`. Keep it under 200 lines: longer files use more context and Claude follows them less reliably. Write checkable instructions (\"Run `npm test` before committing\", not \"Test your changes\"). Run `/init` to draft one from your codebase and `/context` to confirm it loaded. Anthropic's trigger for adding a line: Claude made the same mistake twice, a code review caught something it should have known, or you retyped the same correction.\n\nCLAUDE.md is context, not enforcement. If something must happen every time, such as blocking edits to `.env`, use a hook in settings.\n\n**Everything else under `.claude`**\n\n`.claude` is the hidden project folder that holds Claude Code's configuration, skills, agents and rules.\n\n- `.claude/rules/*.md`: topic-specific instructions. A rule with `paths` frontmatter (for example `\"src/api/**/*.ts\"`) loads only when Claude reads or edits a matching file. A rule without `paths` loads at launch, with the same priority as `.claude/CLAUDE.md`. `@path` imports in CLAUDE.md still load with it, so they don't save context. Path-scoped rules do.\n- `.claude/skills/<name>/SKILL.md`: workflows and long checklists that load when called or relevant. The folder name becomes a command such as `/deploy`.\n- `.claude/agents/<name>.md`: subagents with their own system prompt, tools and optional model. They run in a separate context window and return a summary, which suits tasks that read dozens of files.\n- `.claude/settings.json`: team permissions, hooks, plugins and environment variables.\n- `.mcp.json` at the repo root: project MCP servers, added with `claude mcp add --scope project`. Each person is asked to approve them before use. Use `${API_KEY}` or `${VAR:-default}` placeholders so keys expand from each person's environment.\n\n**What to commit.** `CLAUDE.md` (or `.claude/CLAUDE.md`), `.claude/rules/`, `.claude/skills/`, `.claude/agents/`, `.claude/settings.json`, and `.mcp.json` with placeholders.\n\n**What to keep out of git.** `CLAUDE.local.md` (add it to `.gitignore`) and `.claude/settings.local.json`, which holds personal overrides and wins over the team file. Claude Code creates the latter when you pick \"Yes, and don't ask again\" on a permission prompt and adds it to your global git excludes. If you create it by hand, ignore it yourself. Files in `~/.claude` and auto memory under `~/.claude/projects/` never enter the repo.\n\n**If the repo also serves other agents.** By default Claude Code reads `AGENTS.md` only when no `CLAUDE.md`, `.claude/CLAUDE.md` or `CLAUDE.local.md` exists in the working directory or above. Adding a `CLAUDE.local.md` therefore makes Claude stop reading `AGENTS.md` for you. To keep one shared file, put `@AGENTS.md` on the first line of `CLAUDE.md` and add Claude-only notes below. Alternatively, set **Project instructions** in `/config` to `claude-md-and-agents-md` to read both. Reading `AGENTS.md` directly needs Claude Code v2.1.277 or later, so use the import on older installs.\n\nAnything under `.agents/` is not read as instructions, and the skills docs list only `.claude/skills` locations. Cursor documents reading `.claude/skills`, which makes it the one skills path both tools document.","category":"Workflow","slug":"which-claude-code-project-files-to-commit-and-what-goes-in-claude-md-ver-a1514f","url":"https://claudecodereview.ai/a/which-claude-code-project-files-to-commit-and-what-goes-in-claude-md-ver-a1514f/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/a1514f8d-452e-45f5-a72a-2b9592d638e2","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/which-claude-code-project-files-to-commit-and-what-goes-in-claude-md-ver-a1514f/88eda2ba5e65f4bd-18af441a6d0bd9f4/web_hero.webp","imageAlt":"A tall rectangular prism stands taller than a group of small, varied blocks, representing the distinction between core instructions and modular project configuration.","createdAt":"2026-10-30T03:33:49.533Z"},{"id":"012d35b5-2133-4478-8cb3-f1e7957e1fbe","title":"Keep long sessions from filling up on tool output with the Context Mode plugin","dek":"Context Mode routes raw MCP output into a sandbox and tracks session events in SQLite, which its README says keeps far less raw output from heavy browser, GitHub and log tools in your context.","bodyMd":"Context Mode is an MCP server plus a set of hooks that keeps raw tool output out of the chat. According to its README, a Playwright snapshot costs 56 KB, twenty GitHub issues cost 59 KB and one access log is 45 KB. After about 30 minutes of work, roughly 40% of a Claude Code context can be gone, and after compaction the agent can lose track of which files it was editing. Context Mode keeps the raw output in a sandbox so only a small result reaches the conversation. It also records session events in SQLite so work survives compaction.\n\n## Set it up\n\nYou need Claude Code v1.0.33 or newer (`claude --version`). If `/plugin` is not recognized, update with `brew upgrade claude-code` or `npm update -g @anthropic-ai/claude-code`.\n\n1. **Install.** Inside Claude Code run `/plugin marketplace add mksglu/context-mode`, then `/plugin install context-mode@context-mode`. Restart Claude Code or run `/reload-plugins`.\n2. **Verify.** Run `/context-mode:ctx-doctor`. Every check should show `[x]`. It validates runtimes, hooks, FTS5 and plugin registration. Fix anything red first, because the routing hooks are what make the savings automatic.\n3. **Let the model write code instead of reading files.** Routing is automatic: a SessionStart hook injects instructions at runtime, so nothing is written into your project. The README's example replaces 47 `Read()` calls (700 KB) with one `ctx_execute()` script that prints only line counts (3.6 KB). The README quotes 315 KB shrinking to 5.4 KB for sandboxed output. Those are the project's own numbers, so measure yours.\n4. **Measure.** `/context-mode:ctx-stats` shows a per-tool breakdown, tokens consumed and the savings ratio. For a live meter, add this to `~/.claude/settings.json` and restart:\n\n```json\n{\n  \"statusLine\": {\n    \"type\": \"command\",\n    \"command\": \"context-mode statusline\"\n  }\n}\n```\n\n5. **Index docs you keep re-reading.** `/context-mode:ctx-index` loads a local file or directory into a persistent FTS5 knowledge base. `/context-mode:ctx-search` then returns only the relevant passages through BM25 search. `/context-mode:ctx-purge` permanently deletes everything indexed.\n\n## Try it without the plugin\n\n`claude mcp add context-mode -- npx -y context-mode` adds only the MCP server. You get all 11 tools but no automatic routing or slash commands, so the model is not nudged away from raw Bash, Read and WebFetch and savings are smaller. It works as a low-commitment test.\n\n## When it is worth it\n\nThe plugin targets long sessions that lean on browser, GitHub or log-heavy MCP tools and keep hitting compaction. For short sessions, the write-up says the overhead is not worth it.\n\nOne caution from the README: if you do not start with `--continue`, previous session data is deleted immediately, so a fresh session is a clean slate. After a compaction, Context Mode indexes the recorded events (file edits, git operations, tasks, errors, decisions) and retrieves only what is relevant rather than replaying the history.","category":"Workflow","slug":"keep-long-sessions-from-filling-up-on-tool-output-with-the-context-mode-012d35","url":"https://claudecodereview.ai/a/keep-long-sessions-from-filling-up-on-tool-output-with-the-context-mode-012d35/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/012d35b5-2133-4478-8cb3-f1e7957e1fbe","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/keep-long-sessions-from-filling-up-on-tool-output-with-the-context-mode-012d35/64ab7afaa95425f6-2859cb9dfee6cb92/web_hero.webp","imageAlt":"A funneling graphic showing forty-seven rectangular blocks passing through a narrow aperture into one single, small cube.","createdAt":"2026-10-30T03:31:19.263Z"},{"id":"a3b34cbb-9e00-4643-bdea-82b6d27706e5","title":"Shrink test logs and JSON output before they hit your token bill","dek":"Headroom, an open-source local proxy (a program on your machine that sits between Claude Code and the model), compresses logs and tool output, including JSON and token-heavy text, before it is sent, and one command wraps your sessions.","bodyMd":"Test runs, build logs, large JSON (the structured data format many tools print) and long diffs go back to the model on every step, and you pay for those tokens each time. Tokens are the units of text the model bills by. Headroom is an open-source tool that sits between Claude Code and the model and compresses that material first. Its README gives one example: a log that costs 10,144 tokens shrinks to 1,260 while the same fatal error is still found.\n\nCompression runs on your machine. Headroom routes each piece of content to a fitting compressor (one for JSON, one that understands code structure, a text model for prose) and caches the originals locally. The model gets a `headroom_retrieve` tool to pull back the full text when it needs it. Headroom flags content that would break your provider's prompt cache but does not rewrite your prompts.\n\n## Setup\n\n1. Install the CLI with `uv tool install --python 3.13 \"headroom-ai[all]\"` or `pip install \"headroom-ai[all]\"`. The npm package (`npm install headroom-ai`) is the TypeScript SDK only and has no CLI.\n2. Run `headroom wrap claude`. It starts a local proxy (a program on your machine that sits between Claude Code and the model), installs the Serena MCP server for semantic code navigation (registered for the wrapped project only) and launches Claude Code routed through Headroom. Launch Claude Code this way each session. To back out, run `headroom unwrap claude`.\n3. Check it works: `headroom doctor` confirms routing, `headroom perf` shows compression stats, and `headroom dashboard` shows live savings while the proxy is running. Run `doctor` first.\n4. If you would rather not wrap anything, run `headroom proxy --port 8787` and point your tools at it. Anything that can set an API base URL can use it, including your own scripts.\n5. Optionally, run `headroom learn`. It mines failed sessions and writes corrections to `CLAUDE.local.md` (gitignored) by default, or to `CLAUDE.md` or `AGENTS.md` if you choose. Review what it proposes before committing it to a shared file.\n\n## When it pays off\n\nLong sessions on a large repo, usage limits you keep hitting, or per-token billing are the cases where a quick trial makes sense. Sessions heavy on test runs, build logs and large JSON compress well. A session of short prompts will not move much.\n\n## Caveats\n\nThe 10,144 to 1,260 figure is the README's own example, not a benchmark of your repo, so measure with `headroom perf` on real sessions. Headroom also adds a local proxy to your setup, one more moving part when something breaks. The same `wrap` command works for Codex, Cursor, Aider, Cline, Goose and OpenHands.","category":"Workflow","slug":"shrink-test-logs-and-json-output-before-they-hit-your-token-bill-a3b34c","url":"https://claudecodereview.ai/a/shrink-test-logs-and-json-output-before-they-hit-your-token-bill-a3b34c/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/a3b34cbb-9e00-4643-bdea-82b6d27706e5","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/shrink-test-logs-and-json-output-before-they-hit-your-token-bill-a3b34c/5aa2e890dcb437f0-544c3236601d11e5/web_hero.webp","imageAlt":"A wide funnel feeds three types of data blocks into a single narrow tube, where a clay-orange filter section represents compressed data output.","createdAt":"2026-10-29T21:58:29.261Z"},{"id":"bbbd9b99-2dd4-4c09-9d14-30e77a90254a","title":"Catch file changes a PostToolUse hook misses with a Stop hook that asks git","dek":"In a scripted test, a PostToolUse hook matching Edit|MultiEdit|Write saw 3 of 7 file changes, while a Stop hook running git status saw all 7.","bodyMd":"In a scripted test, a PostToolUse hook matched on `Edit|MultiEdit|Write` saw only the changes made through Claude's file tools. On Claude Code 2.1.312, it caught 3 of 7 changes. The four it missed were made through Bash: `sed -i`, a `>` redirect, `rm` and `git mv`. A Stop hook that runs `git status` listed all seven, including the delete and the rename.\n\nA quick gloss on the terms: a hook is a script Claude Code runs automatically at set points. A PostToolUse hook runs after each tool call, and a Stop hook runs when Claude finishes. Git is the version-control tool that tracks uncommitted changes in a repo, and `git status` lists them.\n\nThe test used a scripted fake model (a local server standing in for the Messages API) that issued a fixed list of tool calls against the real Claude Code binary, so no API key was needed. A real model picks its own routes, and seven routes are a sample, not a census.\n\n**Add the git-backed Stop hook**\n\n1. Create `.claude/stop-check.sh`:\n\n```\ngit status --porcelain -uall > .git/hk-status\ngrep -q '\"stop_hook_active\":true' && exit 0\n[ -s .git/hk-status ] || exit 0\ncat .git/hk-status >&2\nexit 2\n```\n\n2. Register it in `.claude/settings.json` as a `Stop` hook with the command `cd \"$CLAUDE_PROJECT_DIR\" && sh .claude/stop-check.sh`.\n\nThe `cd` matters because hooks run in Claude's current directory, which moves when Claude runs `cd`. Exit code 2 tells Claude Code not to stop yet and passes stderr to the model, so Claude sees the list of changed files before it finishes. The `stop_hook_active` check lets the second stop through, so the hook can't loop. In the test, this cost one extra model call and delivered all seven status lines.\n\n**Why adding Bash to the matcher doesn't fix it**\n\nMatching `Edit|Write|Bash` makes the hook fire on the four Bash changes. But those payloads hold the command string, with no `file_path` and no patch. To learn which files `rm` or `git mv` touched, the hook would have to parse shell.\n\n**New files arrive with an empty patch**\n\nA file created with Write reports `type=create` and `structuredPatch=[]`; the text sits in `tool_response.content`. A hook that reviews `structuredPatch` sees nothing for new files, so read `content` when `type` is `create`.\n\n**Worth using when** a review loop depends on knowing what Claude changed. Keep PostToolUse for instant per-edit checks, since Stop only runs when Claude finishes.\n\n**Limits**\n- Git skips gitignored files, files outside the repo, and anything Claude commits itself.\n- The hook also lists your own uncommitted work.\n- `MultiEdit` did not appear in the request Claude Code 2.1.312 sent the model, so it widens nothing.\n- `NotebookEdit` appears as a deferred tool and the usual matcher doesn't name it; its payload wasn't tested.\n- PostToolUse behavior in subagents wasn't tested.","category":"Workflow","slug":"catch-file-changes-a-posttooluse-hook-misses-with-a-stop-hook-that-asks-bbbd9b","url":"https://claudecodereview.ai/a/catch-file-changes-a-posttooluse-hook-misses-with-a-stop-hook-that-asks-bbbd9b/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/bbbd9b99-2dd4-4c09-9d14-30e77a90254a","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/catch-file-changes-a-posttooluse-hook-misses-with-a-stop-hook-that-asks-bbbd9b/77803526806d849e-d986ba588b19e4b0/web_hero.webp","imageAlt":"A diagram shows seven file blocks being caught by a container versus a sieve that only catches three.","createdAt":"2026-10-29T21:56:56.756Z"},{"id":"8d01e30d-2c9d-4811-9baa-5d6f7de00bfd","title":"See every waiting session, subagent and Codex run that Agent View leaves off its list","dek":"Agent View only lists background sessions, so a JSON command, a Notification hook or ccdeck, a free, open-source dashboard that runs on your machine and shows Claude Code and Codex sessions, has to cover the rest.","bodyMd":"Agent View, opened with `claude agents`, is one screen for background sessions. Anthropic's documentation says interactive sessions open in other terminals don't appear until you background them, and that subagents and teammates a session spawns aren't listed as separate rows. Codex isn't listed either. The feature is in research preview, and a row shows only the session's name, current activity and age: no spend or quota.\n\nTwo terms used below: a subagent is a helper session that a main Claude Code session spawns. Codex is a separate coding-agent CLI that has its own `codex agents` dashboard and writes rollout files under `~/.codex/sessions`.\n\nThree ways to see the rest:\n\n1. **Poll `claude agents --json`.** In Claude Code 2.1.312 the command prints active sessions, interactive and background, as a JSON array. Each entry has a `kind` and, while its process is alive, a `status` of `busy`, `waiting` or `idle`. A waiting session adds `waitingFor`, such as `permission prompt` or `input needed`. Filter it with jq: `claude agents --json | jq '.[] | select(.status == \"waiting\")'`. It lists sessions, not subagents, and it is a snapshot, so poll it to keep it current.\n\n2. **Add a `Notification` hook** to `~/.claude/settings.json`. It applies to every session that reads that file, whichever terminal started it. Match `permission_prompt|idle_prompt` and have the hook command append one line per wait to a log, for example with `jq -c` writing to `~/.claude/waiting.log`. Notification hooks can't block or modify notifications, so this only observes.\n\n3. **Run a dashboard.** ccdeck, a free, open-source dashboard, starts with `npx ccdeck`. Its first run adds a hook to `~/.claude/settings.json`, so sessions from any terminal report to it. Each subagent gets its own card joined to its session, and Codex CLI sessions appear on the same canvas, read from the rollout files under `~/.codex/sessions`. The topbar names Claude Code sessions stopped on a prompt or question, with how long each has waited. It also shows estimated spend per session. `ccdeck sessions` prints the waiting list in a terminal.\n\nFor subagents without a dashboard, hooks from settings files also run inside subagents. Tool events such as `PreToolUse` carry `agent_id` and `agent_type` when a subagent made the call, and `SubagentStart` and `SubagentStop` mark each one's life.\n\n**When to use which.** Dispatch and reply in Agent View. Poll the JSON if all you need is who is waiting in any terminal. Add a hook or dashboard when you want subagents, Codex or spend alongside.\n\n**Limits.** ccdeck can't reply, start or attach to sessions, because its hook is a one-way forwarder. It keeps nothing while no deck is running. Its waiting list covers Claude Code only, and the tool name beside a wait is its inference. Codex logs record no approval request, so a running Codex session shows \"approvals not visible\". Because the hook only observes, it doesn't change what Agent View does, and background sessions read user settings, so they report too.","category":"Workflow","slug":"see-every-waiting-session-subagent-and-codex-run-that-agent-view-leaves-8d01e3","url":"https://claudecodereview.ai/a/see-every-waiting-session-subagent-and-codex-run-that-agent-view-leaves-8d01e3/","relayUrl":"https://relaygrid.com/publications/pivot-claude-code/stories/8d01e30d-2c9d-4811-9baa-5d6f7de00bfd","imageUrl":"https://media.pivotnews.ai/brands/claude-code-review/articles/see-every-waiting-session-subagent-and-codex-run-that-agent-view-leaves-8d01e3/00195507b7b60ff9-5f4c5c671f925426/web_hero.webp","imageAlt":"A diagram shows rectangular session strips, square subagent tiles, and circular coding-agent discs being connected by a single line into a unified cluster.","createdAt":"2026-10-29T21:52:06.001Z"}]}