Problem
Claude Code loads ~30 built-in system tools at startup, consuming approximately 16,000+ tokens (8% of a 200K context window) before any conversation begins. This is fixed overhead that cannot be configured.
Many of these tools are unused by specific users/workflows:
NotebookEdit — irrelevant for non-Jupyter users
EnterWorktree / ExitWorktree — git worktree users are a minority
CronCreate / CronDelete / CronList / ScheduleWakeup — scheduling tools rarely used
ListMcpResourcesTool / ReadMcpResourceTool — MCP resource browsing rarely needed
TaskCreate / TaskUpdate / TaskList / TaskGet / TaskOutput / TaskStop — task management used by some, not all
Proposal
Add a disabledTools configuration option in settings.json:
{
"disabledTools": [
"NotebookEdit",
"EnterWorktree",
"ExitWorktree",
"CronCreate",
"CronDelete",
"CronList",
"ScheduleWakeup",
"ListMcpResourcesTool",
"ReadMcpResourceTool"
]
}
Disabled tools would not have their JSON Schema definitions loaded into the system prompt, saving 2,000-4,000+ tokens per conversation turn.
Impact
- Token savings: ~2-4K tokens per turn. Over a 50-turn conversation, that is 100K-200K tokens saved.
- Cost savings: At $5/M input tokens (Opus), disabling 5 unused tools saves ~$0.50-1.00 per long conversation.
- Attention quality: Fewer tool definitions means less context dilution and better instruction adherence (per "Lost in the Middle" research).
- Zero risk: Only hides tools the user explicitly opts out of. No behavior change for users who don not configure this.
Alternative Considered
MCP servers are already configurable (add/remove per project scope). Built-in tools should have similar opt-out capability for parity.
Environment
- Claude Code version: latest
- Model: glm-5.1
- OS: macOS Darwin 25.4.0
Problem
Claude Code loads ~30 built-in system tools at startup, consuming approximately 16,000+ tokens (8% of a 200K context window) before any conversation begins. This is fixed overhead that cannot be configured.
Many of these tools are unused by specific users/workflows:
NotebookEdit— irrelevant for non-Jupyter usersEnterWorktree/ExitWorktree— git worktree users are a minorityCronCreate/CronDelete/CronList/ScheduleWakeup— scheduling tools rarely usedListMcpResourcesTool/ReadMcpResourceTool— MCP resource browsing rarely neededTaskCreate/TaskUpdate/TaskList/TaskGet/TaskOutput/TaskStop— task management used by some, not allProposal
Add a
disabledToolsconfiguration option insettings.json:{ "disabledTools": [ "NotebookEdit", "EnterWorktree", "ExitWorktree", "CronCreate", "CronDelete", "CronList", "ScheduleWakeup", "ListMcpResourcesTool", "ReadMcpResourceTool" ] }Disabled tools would not have their JSON Schema definitions loaded into the system prompt, saving 2,000-4,000+ tokens per conversation turn.
Impact
Alternative Considered
MCP servers are already configurable (add/remove per project scope). Built-in tools should have similar opt-out capability for parity.
Environment