32 lines
1.7 KiB
Markdown
32 lines
1.7 KiB
Markdown
|
|
---
|
|||
|
|
summary: Claude Code's non-deferred built-in tool schemas cost ~18k tokens/session; the Workflow schema alone is ~6k, and a permissions.deny block in settings.json removes unused tools' schemas entirely (measured −6.5k for four never-used tools).
|
|||
|
|
tags:
|
|||
|
|
- type/reference
|
|||
|
|
- tool/claude-code
|
|||
|
|
scope: global
|
|||
|
|
type: reference
|
|||
|
|
source: cc-os docs/plans/b2-profile-overlays.md (follow-on section, 2026-07-08)
|
|||
|
|
date: 2026-07-08
|
|||
|
|
last_updated: 2026-07-08
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# Claude Code tool schemas: where the ~18k goes, and the YAGNI deny lever
|
|||
|
|
|
|||
|
|
Measured 2026-07-08 (headless haiku, `--output-format json` usage totals).
|
|||
|
|
|
|||
|
|
- The ~29k empty-dir context floor = ~6.3k system-prompt text + **~18k built-in tool
|
|||
|
|
schemas** + ~4.8k user stack. ToolSearch deferral only covers the optional tier
|
|||
|
|
(Cron, LSP, NotebookEdit, Monitor, web tools…) — core schemas ship every request.
|
|||
|
|
- **Workflow's schema alone is ~6k tokens** (−5,982 when disallowed) — about the size
|
|||
|
|
of the entire system-prompt text.
|
|||
|
|
- `"permissions": {"deny": ["Workflow", ...]}` in `~/.claude/settings.json` removes the
|
|||
|
|
denied tools' schemas from context, identical to `--disallowedTools` (22,532 vs
|
|||
|
|
22,536 measured) — so a global deny needs no wrapper or flags.
|
|||
|
|
- Ground truth for "which tools do I actually use": count `tool_use` names across
|
|||
|
|
`~/.claude/projects/**/*.jsonl` transcripts. Five weeks of data (2026-06→07) showed
|
|||
|
|
zero-or-one lifetime calls to Workflow, Artifact, SendUserFile, ReportFindings →
|
|||
|
|
denied globally (−6.5k/session). Revert by removing the deny entry if Workflow
|
|||
|
|
("ultracode" multi-agent orchestration) is ever wanted.
|
|||
|
|
|
|||
|
|
Related: [[claude-code-setting-sources-silent-plugin-drop]], [[cc-os-hub]]
|