{"slug": "i-asked-my-ai-who-are-you-it-cost-42000-tokens-to-answer", "title": "I Asked My AI \"Who Are You\" — It Cost 42,000 Tokens to Answer", "summary": "A developer discovered that asking Claude Code 'who are you' triggered a 118,693-byte request, with the actual 19-byte question comprising just 0.016% of the payload. The bulk consisted of 38 tool JSON schemas (78,935 bytes), a system prompt (22,178 bytes), and deferred tool listings (16,844 bytes), none of which were used to answer the query.", "body_md": "I typed a 19-character question into Claude Code:\n\nwho are you?\n\nThen I opened the network logs of what my machine actually sent over the wire. I recommend you never do this. It ruins something in you.\n\nMy question was **19 bytes**. The request that carried it was **118,693 bytes**.\n\nThat's a 6,200x amplification before the model reads a single word I wrote. My actual message was **0.016%** of the payload. If this were a letter, I'd be mailing a phone book with a Post-it note inside.\n\nHere's the pie, byte for byte:\n\n| What | Bytes | Share |\n|---|---|---|\n| 38 tool JSON schemas | 78,935 | 66.8% |\n| System prompt (behavior manual, safety rules, my git status) | 22,178 | 18.8% |\nA list of 60 more tools it could load, plus 25 skill descriptions |\n16,844 | 14.3% |\n| My memory files, my email address, today's date | 1,126 | 1.0% |\nMy question |\n19 |\n0.016% |\n\nAnd the tool schemas aren't even schemas, mostly. Of those 78,935 bytes, only 29,164 are machine-readable JSON schema. The other **44,392 bytes are English prose** — instruction manuals for the model, shipped on every single request. One tool alone, `Workflow`\n\n, carries a 19,012-byte description. That's a small essay. It rides along on every message I send, forever, whether I orchestrate a multi-agent workflow or just say \"hi.\"\n\nSixteen of the 38 tools are for driving a browser preview I never opened. There's an iOS Simulator controller in there. I was asking a chatbot its name.\n\nEvery tool schema in that request, largest first. \"Prose\" is the English description; \"schema\" is the actual machine-readable part. Approximate tokens = bytes ÷ 4.\n\n| Tool | Bytes | Prose | Schema | ~Tokens | Did I need it? |\n|---|---|---|---|---|---|\n| Workflow (multi-agent orchestration) | 21,609 | 19,012 | 1,833 | ~5,400 | No |\n| Artifact (publish web pages) | 10,679 | 6,358 | 4,002 | ~2,670 | No |\n| AskUserQuestion | 4,371 | 1,097 | 3,149 | ~1,090 | No |\n| iOS Simulator control | 3,976 | 1,307 | 2,518 | ~990 | No |\n| ScheduleWakeup (self-pacing loops) | 3,942 | 2,685 | 1,068 | ~985 | No |\n| visualize show_widget | 3,038 | 648 | 2,259 | ~760 | No |\n| Agent (spawn subagents) | 3,037 | 1,574 | 1,342 | ~760 | No |\n| Bash | 2,860 | 1,290 | 1,456 | ~715 | No (but fair) |\n| ReportFindings (code review UI) | 2,314 | 574 | 1,646 | ~580 | No |\n| Browser computer (mouse/keyboard) | 2,141 | 193 | 1,837 | ~535 | No |\n| Skill | 1,699 | 1,244 | 345 | ~425 | No |\n| Read | 1,670 | 790 | 776 | ~420 | No |\n| Browser preview_start | 1,656 | 1,328 | 143 | ~415 | No |\n| spawn_task (background task chips) | 1,553 | 664 | 765 | ~390 | No |\n| ToolSearch (loads MORE tools) | 1,522 | 953 | 427 | ~380 | No |\n| mark_chapter (session table of contents) | 1,092 | 699 | 256 | ~275 | No |\n| Edit | 1,037 | 360 | 584 | ~260 | No |\n| dismiss_task | 918 | 560 | 234 | ~230 | No |\n| + 20 more (browser tabs, navigation, console readers, form filler, widget reader, Write…) | ~9,800 | — | — | ~2,450 | No |\nTotal |\n78,935 |\n44,392 |\n29,164 |\n~19,700 |\n0 of 38 used |\n\nRead that last column again. The model answered my question using **zero** of the 38 tools it was handed. Then notice `ToolSearch`\n\n: a tool whose only purpose is to fetch *even more tools* — there are ~60 additional ones (WebSearch, WebFetch, cron schedulers, task managers, notebook editors, a whole second browser that drives my real Chrome, password-manager integration) waiting behind it, listed by name in that 16.8KB deferred-tools block. The request contains a tool for requesting tools. We have achieved tool-calling recursion.\n\nThe prose-to-schema ratio is the tell. `Workflow`\n\n's description is 19KB of instruction manual — pipeline semantics, barrier vs. no-barrier philosophy, seven design patterns with code examples, a \"smell test\" for when you're using it wrong. It's genuinely well-written documentation. It is also transmitted to a datacenter every time I type \"ok\".\n\nI audited my own machine after this. Here's the honest control surface, verified against my actual config files — with guesses labeled as guesses.\n\n**Things I verified you CAN control:**\n\n`~/.claude/settings.json`\n\n). Delete the hook block, it's gone.`~/.claude/projects/<project>/memory/`\n\n. Delete them, they stop being sent. (The app injecting my email address alongside them — that part has no knob.)`anthropic-skills`\n\nplugin. Uninstalling it removes ~25 skill descriptions from every request.`DISABLE_TELEMETRY=1`\n\n, `DISABLE_ERROR_REPORTING=1`\n\n, `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`\n\nare documented switches for the ~600KB `tengu_*`\n\nfirehose. (Documented — I haven't packet-captured a session with them on yet. Trust, but HAR-verify.)`claude`\n\ndoesn't load. Using the terminal is the single biggest schema diet available to a normal user.**Things you CANNOT control, period:**\n\n`tengu_workflows_enabled: true`\n\n, `tengu_report_findings_tool: true`\n\n, `tengu_chrome_auto_enable: true`\n\n). There is a `--disallowedTools`\n\nlaunch flag on the CLI, but the desktop app exposes no such thing in its UI.`.claude.json`\n\n) is a cache that re-syncs on their schedule. I found flags in mine for experiments I've never seen, promo banners, A/B copy tests, per-model \"velvet hammer\" variants (twenty-two of those, whatever they are), and two remote kill switches — `tengu-off-switch`\n\nand `tengu-fable-off-switch`\n\n— that Anthropic can flip and I cannot.`metadata`\n\nof every model call. OS, arch, node version, shell, package managers go in the telemetry. None of it optional.The asymmetry is the story. The user's levers — a hook, some markdown files, one plugin, an env var — govern maybe 3% of the payload. The other 97% is decided by people you've never met, toggled by flags with names like `tengu_amber_moleskin`\n\n, shipped to you on every keystroke, and cached with a straight face.\n\nThe response to my question was **127 tokens** — 47 of them the model privately thinking \"user's being blunt, keep it brief,\" and 80 tokens of actual answer.\n\nGenerating those 127 tokens takes well under a second. The other ~8 seconds? The model had to ingest **42,270 tokens of context** first — and 13,445 of them weren't in the prompt cache yet, because this was the session's first message. I paid an eight-second cold-start tax so the model could re-read the operating manual for a browser I never launched.\n\nThe economics in one line: **42,270 tokens in, 127 tokens out.** A 333:1 read-to-write ratio. To say hello.\n\nWhile answering me, the app quietly made a **second, parallel model call** — to a different, smaller model — whose entire job was to invent a title for the sidebar. Input: my rude question. Output: `\"Clarify Claude agent identity\"`\n\n. Five hundred twenty-one tokens of prompt to produce four polite words I never asked for.\n\nAfter the answer landed, the client fired **40 more API calls in one burst** — all to a token-counting endpoint. Why 40? It was measuring itself: one call per slice of its own system prompt, plus one call per tool sending the string `\"foo\"`\n\nnext to a single schema, so it could subtract the baseline and learn each tool's exact token weight. The app literally runs a scientific experiment on its own bloat, every session, to render a little context meter.\n\nAnd the telemetry. Oh, the telemetry. In the same 15-second window: **~600KB across 184+ events**, every one namespaced `tengu_`\n\n— Anthropic's internal codename for Claude Code. `tengu_feature_ok`\n\nfired 72 times, once per remote feature-flag check. `tengu_skill_loaded`\n\nfired 48 times. The telemetry shipped to log my question *outweighed the question* by a factor of thirty thousand. (To be fair: I grepped every event — my actual words appear in none of them.)\n\nI went looking for the config file where I'd opted into all this. It doesn't exist. My settings contain a theme and one hook. My MCP server list is empty in every project. Every fat tool, every schema, every deferred-tool stub is switched on by **~370 server-side feature flags** with names like `tengu_velvet_hammer_opus_4_8`\n\nand `tengu_amber_moleskin`\n\n, cached to my disk and re-synced whenever the mothership pleases. There's even a complete 5KB onboarding-guide prompt template embedded *inside the flag cache*, sitting on my SSD in case a feature I've never used ever wants it.\n\nThere are two kill switches in that file: `tengu-off-switch`\n\nand `tengu-fable-off-switch`\n\n. Neither is mine to flip.\n\nHere's the part that annoys me most: it's not even stupid. The 100KB of scaffolding is prompt-cached — I pay full prefill once per session, then it's cheap cache reads. The deferred-tool list I mocked exists precisely to *avoid* sending 60 more schemas. The 8.7 seconds is a one-time tax; turn two is fast. Every individual decision is defensible. The system is locally rational and globally deranged — a machine that ships a library with every postcard and has optimized the shipping.\n\nBut step back. A human answering \"who are you\" needs zero context refresh, no tool manifest, no telemetry burst, no second brain generating a title. We've built agents that must be handed their entire identity, capabilities, safety rules, and worldview from scratch on every request, because the underlying model remembers nothing. Statelessness is the original sin; everything else — the caching, the deferral, the 40-call self-measurement — is increasingly elaborate penance.\n\n19 bytes in. 118,693 bytes of context, 600KB of telemetry, 43 API calls, two models, and 8.7 seconds later: \"I'm Claude Code.\"\n\nI know. I read the packet capture.", "url": "https://wpnews.pro/news/i-asked-my-ai-who-are-you-it-cost-42000-tokens-to-answer", "canonical_source": "https://dev.to/therabbithole/-i-asked-my-ai-who-are-you-it-cost-42000-tokens-to-answer-44jp", "published_at": "2026-07-24 09:43:22+00:00", "updated_at": "2026-07-24 10:04:16.715962+00:00", "lang": "en", "topics": ["large-language-models", "ai-tools", "developer-tools", "ai-infrastructure"], "entities": ["Claude Code"], "alternates": {"html": "https://wpnews.pro/news/i-asked-my-ai-who-are-you-it-cost-42000-tokens-to-answer", "markdown": "https://wpnews.pro/news/i-asked-my-ai-who-are-you-it-cost-42000-tokens-to-answer.md", "text": "https://wpnews.pro/news/i-asked-my-ai-who-are-you-it-cost-42000-tokens-to-answer.txt", "jsonld": "https://wpnews.pro/news/i-asked-my-ai-who-are-you-it-cost-42000-tokens-to-answer.jsonld"}}