Problem Statement
On Claude Code v2.1.123 with a Pro plan (200k cap), a fresh session has a baseline context usage of ~41k tokens before any real work begins. Of that, 20.2k (10.1%) comes from built-in deferred tools — TodoWrite, Cron*, Enter/ExitPlanMode, Enter/ExitWorktree, Monitor, NotebookEdit, PushNotification, RemoteTrigger, TaskOutput, TaskStop, WebFetch, WebSearch, AskUserQuestion. These are listed by name and short description in the system reminder so ToolSearch can discover them.
Listing them by default is a reasonable design choice for discoverability. The problem is there's no way to opt out of the ones I never use.
My workflow:
- Solo Delphi/Firebird development on Windows
- No notebook work →
NotebookEdit unused
- No scheduled tasks →
Cron*, RemoteTrigger, PushNotification, Monitor, TaskOutput, TaskStop unused
- No worktree usage →
Enter/ExitWorktree unused
That's ~10 tools I never invoke, each contributing to the 20.2k baseline. Combined with built-in MCP integrations (~21k more) and plugins (~10k), the working budget shrinks meaningfully — re-caching after the 5-minute prompt cache TTL costs more, and autocompact triggers earlier in long sessions.
This is distinct from #48680 (claude.ai marketplace MCP instruction blocks loading unconditionally) and #47645 (ToolSearch env var bug, closed as duplicate). Both cover MCP-side issues. This request is specifically about built-in tools shipped with the binary — there's no MCP config to remove and no extension to disable for these.
Proposed Solution
A ~/.claude/settings.json field to opt out of built-in deferred tools by name:
{
"disabledBuiltinTools": [
"CronCreate",
"CronDelete",
"CronList",
"Monitor",
"NotebookEdit",
"PushNotification",
"RemoteTrigger",
"TaskOutput",
"TaskStop"
]
}
Behavior:
- Listed tools are removed from the system reminder entirely (not just hidden from
ToolSearch)
ToolSearch cannot discover them
- Calling them returns the standard "tool not available" error
- Wildcards (
Cron*) optional but convenient
- Default behavior unchanged — opt-in only
Alternative shape with allowlist mode:
{
"deferredTools": {
"mode": "allowlist",
"include": ["TodoWrite", "WebSearch", "WebFetch"]
}
}
Either shape works. The key requirement is that the tool's name and description are removed from the system reminder, not just deferred — that's what reduces baseline tokens.
Alternative Solutions
None of these address the built-in tools surface. The only "workaround" today is to accept the 20k tax.
Priority
High - Significant impact on productivity
Feature Category
Configuration and settings
Use Case Example
Scenario: starting a long debugging session on a legacy Delphi codebase.
- Open Claude Code in the project directory.
/context shows 41k baseline (20.2k from built-in deferred tools, of which I use only TodoWrite, WebSearch, and WebFetch).
- Working budget after the 33k autocompact buffer is ~125k.
- After 30 minutes of active debugging, I'm near the autocompact threshold and lose conversational context I'd rather keep.
With disabledBuiltinTools configured to drop the ~10 tools I never use:
/context shows ~21k baseline (50% reduction in deferred tools).
- Working budget grows to ~145k.
- Autocompact triggers later or not at all in a typical session.
- Re-caching after the 5-minute TTL is cheaper because the cache prefix is smaller.
The same pattern helps users on Free/Pro plans with tighter caps, and users with many memory files or MCPs who are already close to limits.
Additional Context
Screenshot of /context on a fresh session (one greeting exchange) showing the 20.2k cost of built-in deferred system tools — see image attached below.
Related issues:
Environment:
- Claude Code: v2.1.123
- Platform: Windows 11
- Plan: Pro
- Plugins: caveman, context-mode, skill-creator
- Note: Chrome extension was disabled before taking the screenshot, but
MCP tools (deferred) is still ~21k from other built-in MCPs (Claude_Preview, ccd_*, mcp-registry, scheduled-tasks, plugin MCPs).
Happy to provide repro logs, test a prototype, or refine the proposed schema if helpful.

Problem Statement
On Claude Code v2.1.123 with a Pro plan (200k cap), a fresh session has a baseline context usage of ~41k tokens before any real work begins. Of that, 20.2k (10.1%) comes from built-in deferred tools —
TodoWrite,Cron*,Enter/ExitPlanMode,Enter/ExitWorktree,Monitor,NotebookEdit,PushNotification,RemoteTrigger,TaskOutput,TaskStop,WebFetch,WebSearch,AskUserQuestion. These are listed by name and short description in the system reminder soToolSearchcan discover them.Listing them by default is a reasonable design choice for discoverability. The problem is there's no way to opt out of the ones I never use.
My workflow:
NotebookEditunusedCron*,RemoteTrigger,PushNotification,Monitor,TaskOutput,TaskStopunusedEnter/ExitWorktreeunusedThat's ~10 tools I never invoke, each contributing to the 20.2k baseline. Combined with built-in MCP integrations (~21k more) and plugins (~10k), the working budget shrinks meaningfully — re-caching after the 5-minute prompt cache TTL costs more, and autocompact triggers earlier in long sessions.
This is distinct from #48680 (claude.ai marketplace MCP instruction blocks loading unconditionally) and #47645 (
ToolSearchenv var bug, closed as duplicate). Both cover MCP-side issues. This request is specifically about built-in tools shipped with the binary — there's no MCP config to remove and no extension to disable for these.Proposed Solution
A
~/.claude/settings.jsonfield to opt out of built-in deferred tools by name:{ "disabledBuiltinTools": [ "CronCreate", "CronDelete", "CronList", "Monitor", "NotebookEdit", "PushNotification", "RemoteTrigger", "TaskOutput", "TaskStop" ] }Behavior:
ToolSearch)ToolSearchcannot discover themCron*) optional but convenientAlternative shape with allowlist mode:
{ "deferredTools": { "mode": "allowlist", "include": ["TodoWrite", "WebSearch", "WebFetch"] } }Either shape works. The key requirement is that the tool's name and description are removed from the system reminder, not just deferred — that's what reduces baseline tokens.
Alternative Solutions
Claude_in_ChromeMCP — works for that specific MCP, but doesn't help with built-in system tools.settings.json— saves ~500 tokens, marginal.CLAUDE_CODE_DISABLE_1M_CONTEXT=1to avoid the 1M tier — separate issue ([BUG] 2.1.63 silently defaults to 1M context model without UI indication, causing excessive usage consumption and a BILLING issue. #30033), but related theme of context inflation./clear,/compact, end-session more frequently — manages active context but doesn't change the baseline floor.None of these address the built-in tools surface. The only "workaround" today is to accept the 20k tax.
Priority
High - Significant impact on productivity
Feature Category
Configuration and settings
Use Case Example
Scenario: starting a long debugging session on a legacy Delphi codebase.
/contextshows 41k baseline (20.2k from built-in deferred tools, of which I use onlyTodoWrite,WebSearch, andWebFetch).With
disabledBuiltinToolsconfigured to drop the ~10 tools I never use:/contextshows ~21k baseline (50% reduction in deferred tools).The same pattern helps users on Free/Pro plans with tighter caps, and users with many memory files or MCPs who are already close to limits.
Additional Context
Screenshot of
/contexton a fresh session (one greeting exchange) showing the 20.2k cost of built-in deferred system tools — see image attached below.Related issues:
ToolSearchenv var ignored, MCP tools load eagerly (closed as duplicate)ExitPlanModenot available viaToolSearch(evidence of edge cases in the deferred tools system)Environment:
MCP tools (deferred)is still ~21k from other built-in MCPs (Claude_Preview,ccd_*,mcp-registry,scheduled-tasks, plugin MCPs).Happy to provide repro logs, test a prototype, or refine the proposed schema if helpful.