Build1 distinct publisher3 min readUpdated
A Claude Code user's fix for 50-plus plugins is a weekly auto-disable job. The arithmetic behind his 4,000-token estimate is shakier than the problem it describes.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
The deferred block exists because the alternative is worse. Full schemas for every tool on every connected server would dwarf the names, so Claude Code ships the index and holds the schemas back: the reminder states that schemas are not loaded, that calling a tool directly returns InputValidationError, and that ToolSearch has to fetch the schema first [3]. That design already took the cheap win. What remains in the window is a directory of identifiers of the form mcp__plugin_playwright_playwright__browser_click, and the only way to shrink a directory is to have fewer entries in it [2][4].
The 4,000-token figure deserves less deference than the headline gives it. It comes from 100-plus lines at an assumed 50 characters each, so 5,000 characters [6]. Divide, and the two numbers imply 1.25 characters per token [13]. Elsewhere the same post describes the loss as the first few thousand characters of input tokens [7], which is not the same claim. Treat 4,000 as the top of an estimate rather than a reading off a meter.
The more interesting number runs the other way. The 100-line count came from four servers [5] out of more than 50 enabled plugins [1], under a tenth of the installed set [14]. Whatever the real per-line rate is, the block being paid for was larger than the block that got counted, and it is emitted before the first user message exists [2].
The disable rule reads usage out of session JSONL, counting tool_use events on assistant messages: Skill invocations are split on the colon, everything else has to start with mcp__plugin_ [11]. That is a narrow definition of use. A plugin whose value arrives as a slash command, a hook or a subagent emits neither pattern, scores zero, and on the next Sunday pass gets written out of settings.json with the cache cleared [11][9][10]. Nothing in the pipeline separates that case from abandonment.
Two numbers in the schedule also fail to line up. The daily report is generated with a 14-day lookback while the disabler acts on 30 days of silence [10][9], a 16-day gap [16] in which the artifact a human actually reads cannot show what the script is about to do. And because a 30-day threshold is evaluated once a week, a plugin can sit as long as 36 days between its last call and its removal [15].
The transferable part is not the shell script. It is that an MCP plugin carries a per-session cost that manual review does not scale to at 50 items [12], which makes enabling one a decision with a renewal date rather than a one-second convenience [1]. The author's ordering, environment maintenance before the work [17], is the part worth copying. The 30 days is a knob.
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
The author accumulated more than 50 plugins enabled in Claude Code, adding them one at a time (context7, playwright, expose) because each addition takes a second.
Every time Claude Code starts, a deferred tools section expands inside a system-reminder block, enumerating every tool name owned by the connected MCP servers; the more plugins enabled, the larger that section.
The deferred tools block states that the listed tools' schemas are NOT loaded, that calling them directly will fail with InputValidationError, and that ToolSearch must be used with query "select:<name>[,<name>...]" to load schemas before calling.
The playwright plugin alone lines up close to 30 tool names, from browser_click to browser_wait_for, listed as identifiers such as mcp__plugin_playwright_playwright__browser_click.
Adding chrome-devtools, expo and sequential-thinking to playwright makes the enumeration alone run past 100 lines.
The author's rule: every Sunday morning, automatically disable any plugin that has had zero MCP calls and zero Skill calls for 30 days.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Verbatim artifacts, unmeasured magnitude
The mechanism is well evidenced for a single-source story: the deferred-tools system-reminder text, the jq counting pipeline, the enabledPlugins diff, and a plist fragment are all reproduced. The quantitative core is not: the 4,000-token headline comes from an estimated line count over four of 50-plus servers with no token measurement, and the claimed accuracy degradation rests on subjective recall. Everything traces to one self-published post with no independent corroboration.
One workstation, one practitioner
Observed adoption is a single individual's macOS setup: two LaunchAgents, a report file, and a weekly settings.json rewrite. No second user, team rollout, repository release, download count, or vendor endorsement appears in the supplied source. The underlying Claude Code deferral behavior is vendor-shipped and observed in use, but that is product behavior rather than adoption of the practice described.
Real problem, overstated number
The framing device — a '4,000-Token Tax' — is more precise than the arithmetic supporting it. The author's own figures imply roughly 1.25 characters per token, a conversion he never states or sources, and the 100-plus line count covers under 8 percent of his enabled plugins while the conclusion is drawn about every session. The claimed accuracy degradation is asserted without measurement, and the piece is bracketed by an unverified ¥1.2M/month income narrative. The gap is positive but moderate rather than severe, because the mechanism being described is quoted directly from the tool and the remediation scripts are real and inspectable.
Personal-brand income framing
The author's incentive structure is partly visible in the text: the piece opens and closes on a self-reported income progression to ¥1.2M/month attributed to his autonomous Claude Code environment, which rewards a memorable, quantified headline more than a conservative one. This is a personal-brand and audience-growth incentive on a developer publishing platform, not a disclosed vendor or commercial relationship — no sponsorship, product, or affiliate interest appears in the source, so the score reflects visible self-promotional framing only.
Mechanism solid, single unverified source
Confidence is limited by the cluster having one publisher, one item, and no independent corroboration of any quantitative claim. What can be assessed with reasonable certainty is the platform mechanism and the shape of the author's scripts, both reproduced in the text; what cannot is the token magnitude, the accuracy impact, the durability of the setup, or the income context.
build
Config rot has a latency bill: a 70-line weekly audit for agent environments1 distinct publisher
build
26 launchd jobs, one log directory: how scheduled automation rots quietly1 distinct publisher
build
A cost monitor overcounted 4.9x, then went dark for a week when set -e did its job1 distinct publisher
build
When the changelog reaches for your README's word: MCP memory and the price of filling a gap1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 22, 2026