--- 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]]