商业产业 Hacker News AI 2026-10-29T03:33 正文 ok 1708 words

Claude Code 竟将 15%–20% 的 Token 浪费在 3 词状态栏上:原理揭秘与关闭指南

英文标题:🔶 Claude Code regularly sends each background agent’s transcript to its model

开源团队 Flamerix AI 披露,Claude Code 默认每隔约 30 秒就会将后台 Agent 的完整上下文交互记录发送给其底层模型(通常为 Opus),仅仅是为了生成一句 3–5 个词的面板状态摘要。遥测数据显示,该操作消耗了开发者 15%–20% 的 API 支出或速率限制配额,其成本甚至超过了主对话本身,且未记录在本地会话日志中。由于官方尚未提供任何关闭开关,Flamerix AI 开源了一套基于 Bun preload 机制的定时器拦截脚本,可在不影响任何后台 Agent 正常任务的前提下将其彻底关闭。这一发现引发了社区对 AI 编程工具隐性消耗与设计冗余的广泛关注与反思。
打开原文相关 6 · 机会 1
media3.6 KB media3.2 KB media9.9 KB

中文

Claude Code 竟将 15–20% 的 Token 浪费在 3 个词的状态栏上。教你如何彻底关闭它

作者:Flamerix AI · MIT 协议

测试环境为 Linux,Claude Code 2.1.257–2.1.312(详见“已测试版本”)。未修改二进制文件(使用 BUN_OPTIONS=--preload)。软件更新可能会在静默中使其失效,因此请参见“验证”章节。

bash curl -fsSL https://gist.githubusercontent.com/flamerix-ai/c3905705cc4205e5de3011fa2e74efce/raw/no-agent-summary.js -o ~/.local/share/no-agent-summary.js claude daemon stop --any BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload $HOME/.local/share/no-agent-summary.js" claude

若要使其对每个 Claude Code 进程永久生效,请参见“安装”章节。

每隔约 30 秒,针对每一个后台 Agent,Claude Code 都会将该 Agent 的**完整记录(transcript)**发送给其自身绑定的模型(通常是 Opus),并要求其“用 3 到 5 个词描述你最近的操作”。该响应仅用于更新 Agent 面板中的状态栏;它绝不会进入模型上下文或你的对话中。目前没有任何配置项可以将其关闭,且自 2.1.232 版本(2026 年 8 月)起已默认开启。

该异常是由 DRIM 在 Claude Code 的 OpenTelemetry 导出中发现的:按 query_source 对 claude_code.api_request 事件进行分组后显示,agent_summary 带来的开销甚至超过了主对话本身。

query_source = agent_summary 注入 Hook 前一周 注入后 2 天
占全部 Claude Code 开销比例 16.4 %(主对话:15.7 %) 0 %
占全部 API 请求的比例 19.7 %,约每 5 次请求就有 1 次 0 %
该部分在 Opus 上的开销占比 96 % —
输入 Token 与输出 Token 的比例 ≈ 9,000 : 1 —

此处的开销是指 Claude Code 自身单次请求估算的费用(cost_usd),而非真实账单:在订阅制下,你损失的是速率限制(Rate-limit)配额。不仅我们测得这一数据:#86879 收集了四项独立测量,结果显示该比例在 18%–26% 之间。

no-agent-summary.js 是一个 Bun preload 脚本(约 80 行代码)。它封装了 setTimeout/setInterval;当回调函数的源码文本包含摘要器的特征锚点(例如 [AgentSummary] Timer fired 日志行)时,它会返回一个惰性句柄而不是启动定时器。其他所有定时器均保持原样放行。在 OpenTelemetry 导出中,被抑制的请求即为 query_source = agent_summary 的 claude_code.api_request 事件。

为什么使用定时器 Hook 而不是更简单的方式:该模块以预编译的 Bun 字节码发布,因此直接在二进制文件内部修改其 JS 文本不会产生任何改变,并且其 API 客户端也不经过被封装的 globalThis.fetch。但即使从字节码运行,Function.prototype.toString 仍然能返回回调函数的源码,因此可以通过其内部的特征字符串来识别该定时器。该惰性定时器使用了精确的 2³¹−1 ms:Node 和 Bun 会将更大的延迟视为 1 ms,导致所谓“无限”延迟的定时器会立即触发。

安装

  1. 将 no-agent-summary.js 放置在稳定的位置;记下其绝对路径。

  2. 在全局环境中设置 BUN_OPTIONS,以便每个 Claude Code 进程都能获取到。选择以下方式之一:

    bash

    ~/.profile, ~/.bashrc, ~/.zshrc

    export BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload /abs/path/no-agent-summary.js"

    ~/.config/fish/config.fish

    set -gx BUN_OPTIONS "--preload /abs/path/no-agent-summary.js"

    ~/.config/environment.d/50-no-agent-summary.conf(systemd 用户环境;同样作用于用户服务和定时器;在下次用户管理器启动时生效,通常是下次登录)

    BUN_OPTIONS=--preload /abs/path/no-agent-summary.js

    或者在 PATH 前方放置一个名为 claude 的包装脚本(使用 case 保证在某个 Claude Code 进程启动另一个进程时的幂等性):

    sh #!/bin/sh HOOK=/abs/path/no-agent-summary.js case " ${BUN_OPTIONS-} " in " --preload $HOOK ") ;; *) export BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload $HOOK" ;; esac : "${CC_AGENT_SUMMARY_LOG:=${XDG_RUNTIME_DIR:-/tmp}/no-agent-summary.log}" export CC_AGENT_SUMMARY_LOG exec /path/to/the/real/claude "$@"

  3. 重启守护进程(Daemon)及所有已经在运行的会话,然后从包含 BUN_OPTIONS 的环境中启动 Claude Code:

环境变量 可选值 效果
CC_AGENT_SUMMARY_MODE off(默认),pass off 抑制摘要定时器。pass 用于 A/B 对照测试:正常加载并记录日志,原样启动每个定时器。任何其他值都会在 stderr 上发出警告并按 off 处理。
CC_AGENT_SUMMARY_LOG 文件路径,可选 加载时追加记录 preload active mode=… bun=… hooked=…,每个匹配到的定时器记录一行(前 20 个),并在退出时统计计数。
CC_AGENT_SUMMARY_MARKER 文件路径,可选 加载时用 preload active … 行覆盖写入。
  • 安装后重启守护进程。 守护进程、pty host 和预热的 bg-spare 会话继承启动守护进程的客户端环境,因此在设置 BUN_OPTIONS 之前启动的守护进程会继续生成未加载 Hook 的会话。因此必须执行 claude daemon stop --any。
  • 无头(Headless)运行同样需要: 例如 claude -p、cron、CI、编辑器集成等。
  • 平台支持: Linux 已测试,macOS 和 Windows 未经测试。在 Windows 上,/$bunfs/ 路径判断极有可能导致 Hook 永远不会安装。
  • A/B 测试: CC_AGENT_SUMMARY_MODE=pass 会加载 Hook 但仍会触发每个定时器;摘要功能恢复,这可以证明 off 下的结果确实归功于该 Hook。
  • 后台进程: 守护进程、pty host 和 bg-spare 必须在其环境中携带 --preload(在 Linux 上可通过 /proc/<pid>/environ 查看);如果没有,请重启守护进程。

验证(每次更新后)

  1. Preload 正常加载:

    bash BUN_OPTIONS="--preload $HOME/.local/share/no-agent-summary.js" CC_AGENT_SUMMARY_LOG=/tmp/nas.log claude --version && cat /tmp/nas.log

    预期输出包含 preload active mode=off …。若无此行:说明 BUN_OPTIONS 未传递给进程,或者路径不是绝对路径。

  2. 定时器已被抑制: 在相同的 BUN_OPTIONS 和 CC_AGENT_SUMMARY_LOG=/tmp/nas.log 设置下,运行一个后台子 Agent 持续一两分钟。日志应显示 summary timer #1 suppressed (setTimeout, delay=30000),且 Agent 面板的状态停止更新。如果你导出了 OpenTelemetry,query_source = agent_summary 应当保持为零;这是唯一能排查所有失效模式的检查方式。

匹配机制基于源码文本:定时器传入的回调函数内部必须包含特征锚点。如果某次版本更新破坏了该特征,Hook 将匹配不到任何内容,摘要请求会静默恢复。可能导致失效的情形包括:

  • 日志行文本或 query-source id 被重命名;
  • 回调函数通过 fn.bind(...)(toString 无法提取源码)或其他包装函数传递;
  • 特征字符串被移到了回调函数外部的共享常量中;
  • 定时器改用了未被封装的 API(如 timers/promises 或自定义调度循环)。

因此,请在每次更新后重新执行验证。

  • 我们在我们机器上的每个 Claude Code 进程(2.1.301)下运行了该补丁。自那时起,agent_summary 请求完全降为零,且没有任何其他侧面查询的开销增长填补其空缺。
  • 子 Agent、后台 Agent、分叉技能(forked skills)和后台会话均正常运行;仅有摘要分叉被跳过。
  • 肉眼可见的变化:每个 Agent 的面板状态不再刷新;SDK 的 task_progress 不再包含 summary。
  • 开销情况:针对每个不同的定时器回调执行一次 Function.prototype.toString,并缓存在 WeakMap 中。claude --version 执行耗时:~10 ms → ~17 ms(单次测量)。

已测试版本

测试所用二进制文件为来自 npm 的 Linux x64 包 @anthropic-ai/claude-code-linux-x64(其 sha256 与原生安装程序的 manifest.json 校验和一致)。静态分析: 解包提取的 bundle 中,其摘要定时器回调包含 Hook 锚点。实机测试: 运行 claude -p --model haiku 并设置 CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES=1,一个子 Agent 执行 8 步(每步约 20 秒),在 --debug-file 中统计 [AgentSummary] Forking 的出现次数。

版本 发布日期 sha256 静态分析 在 ~2.5 分钟的 Agent 运行中的摘要分叉数:无 Hook / Hook pass / Hook off 备注
2.1.312 2026-10-27 4f4178ce41d8 正常 5 / 5 / 0 2026-10-28 标注为 latest;交互模式下:无 Hook 为 6 次,off 为 0 次
2.1.310 2026-10-23 b73676430af1 正常 5 / 5 / 0
2.1.308 2026-10-22 356733f185fa 正常 5 / 6 / 0 2026-10-28 标注为 stable;pass 运行中的 Agent 走了 9 步而非 8 步
2.1.301 2026-10-15 bc1aad9982c7 正常 5 / 5 / 0 早期 Hook 构建效果相同;交互模式下 off 同样为 0;自 2026-10-26 日常使用至今,遥测中 agent_summary 请求为 0
2.1.280 2026-09-22 1e08503dbdf3 正常 1 / 1 / 0(定时器触发 11 / 11 / 0) 交互模式:该版本下 -p 无法启用摘要。Agent 停留在权限提示处,因此后续定时器跳过了未发生变化的 transcript
2.1.257 2026-09-01 9a64bda9d872 正常 1 / 1 / 0(定时器触发 11 / 11 / 0) 情况同 2.1.280

注:5 / 5 / 0 表示在该版本下会触发分叉,仅加载 Hook 不做拦截时不改变行为,而设置为 off 时可将其彻底消除。

为什么没有为此提供配置项

  • 文档记录的开关只管开启。 SDK 选项 agentProgressSummaries 默认值为 false,但在打包文件中它只是一个“逻辑或(OR)”的条件之一,且代码中所有写入该项的路径都会将其设为 true。因此传入 false 没有任何效果;而未公开的环境变量 CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES 也只能用于开启摘要。
  • 轮询间隔由服务端控制。 间隔时长来自服务端按模型家族下发的标志位,并被强制限制在 30–240 秒之间。默认值已经是最小值(30 秒),且没有任何值可以禁用该定时器。
  • 显而易见的环境变量均无效。 一些打包者尝试设置的 DISABLE_NON_ESSENTIAL_MODEL_CALLS,在二进制文件中根本就不存在。CLAUDE_CODE_FORK_SUBAGENT=0 和 CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 确实能停掉它,但前提是将分叉子 Agent 或后台 Agent 功能连根拔除。
  • Prompt 缓存只是降低了成本,但并未消除。 这类请求约有 98% 会从缓存中重新读取上下文记录;而剩下命中冷缓存的约 2% 请求,却承担了该项操作超过三分之一的总成本。
  • 分析 Transcript 的成本统计工具无法捕获。 这些摘要请求根本不会写入磁盘上的会话日志(参见 #104358);只有 OpenTelemetry 导出才能体现。官方文档中关于后台 Token 用量的章节也未将其列出,而 Agent View 面板中行摘要的文档则称其由 Haiku 级别模型每隔几分钟刷新一次。
  • 更便宜的替代方案早已实现,但被关闭了。 2.1.310 版本内置了 short 模式:使用约 2k Token 的笔记代替完整记录,并可选由更小的模型撰写。然而默认行为仍然是发送完整记录,且只有服务端标志位才能更改此设置。
版本(发布日期) 变更说明
2.1.32(2 月 5 日) 相关代码首次出现;在公开发布版本中未激活
2.1.72(3 月 9 日) 作为 SDK 可选功能对外可达
2.1.117(4 月 21 日) 在交互式 CLI 中位于分叉控制网关或服务端推送灰度后可达
≤ 2.1.220(7 月 24 日) 分叉技能(forked skills)始终会生成摘要
2.1.232(8 月 13 日) 交互式后台 Agent 默认开启
2.1.300(10 月 14 日) 轮询间隔变为服务端可调(30–240 秒)
2.1.310(10 月 23 日) 更廉价的 short 模式合并入主线,但处于关闭状态

在我们的遥测统计中,其在周度支出中的占比从 7 月份的 3.5%–7%(当时分叉功能已对我们开启),跃升至 7.3%,在我们更新至 2.1.233 的当周进一步升至 11.8%,并于 10 月中旬达到约 16%。


MIT © 2026 Flamerix AI。本软件按原样提供,不作任何明示或暗示之保证;使用者需自担风险。Flamerix AI 对因使用本软件造成的任何损害、数据丢失或账户处置概不负责。修改客户端运行时的行为可能违反你所使用服务的服务条款,请自行核验。

“Claude”和“Claude Code”是 Anthropic, PBC 的商标。本项目完全独立,与 Anthropic 无关联,亦未获得其赞助或认可。

English / 原文

Claude Code burns ~15–20% of your tokens on a 3-word status line. Here's how to turn it off

by Flamerix AI · MIT License

Tested on Linux, Claude Code 2.1.257–2.1.312 (see Tested versions). The binary is not modified (BUN_OPTIONS=--preload). An update can silently undo it, so see Verify.

curl -fsSL https://gist.githubusercontent.com/flamerix-ai/c3905705cc4205e5de3011fa2e74efce/raw/no-agent-summary.js -o ~/.local/share/no-agent-summary.js
claude daemon stop --any
BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload $HOME/.local/share/no-agent-summary.js" claude

To make it permanent for every Claude Code process, see Install.

Every ~30 seconds, for every background agent, Claude Code sends that agent's entire transcript to the agent's own model (usually Opus) and asks it to "describe your most recent action in 3-5 words". The answer only updates the agent's status line in the agents panel; it never reaches the model or your conversation. There is no setting that turns it off, and since 2.1.232 (August 2026) it has been on by default.

The anomaly was detected by DRIM in Claude Code's OpenTelemetry export: grouping claude_code.api_request events by query_source showed agent_summary costing more than the main conversation itself.

query_source = agent_summary week before the hook 2 days after
share of all Claude Code spend 16.4 % (main conversation: 15.7 %) 0 %
share of all API requests 19.7 % , about 1 in 5 0 %
part of that spend on Opus 96 % —
input tokens per output token ≈ 9,000 : 1 —

Spend here means Claude Code's own per-request estimate (cost_usd), not an invoice: on a subscription, what you lose is rate-limit headroom. We are not the only ones who measured it: #86879 collects four independent measurements of 18–26 %.

no-agent-summary.js is a Bun preload (~80 lines of code). It wraps setTimeout/setInterval; when a callback's source text contains a summarizer anchor (e.g. the [AgentSummary] Timer fired log line), it returns an inert handle instead of arming the timer. Every other timer passes through untouched. In the OpenTelemetry export the suppressed requests are claude_code.api_request events with query_source = agent_summary.

Why a timer hook rather than something simpler: the module ships as precompiled Bun bytecode, so editing its JS text inside the binary changes nothing, and the API client does not go through a wrapped globalThis.fetch. But Function.prototype.toString still returns a callback's source even when it runs from bytecode, so the timer can be recognised by a string inside it. The inert timer uses exactly 2³¹−1 ms: Node and Bun treat a larger delay as 1 ms, so an "infinite" delay would fire at once.

  1. Put no-agent-summary.js somewhere stable; note its absolute path.

  2. Set BUN_OPTIONS globally so every Claude Code process gets it. One of:

    # ~/.profile, ~/.bashrc, ~/.zshrc
    export BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload /abs/path/no-agent-summary.js"
    
    # ~/.config/fish/config.fish
    set -gx BUN_OPTIONS "--preload /abs/path/no-agent-summary.js"
    
    # ~/.config/environment.d/50-no-agent-summary.conf (systemd user env; also reaches
    # user services and timers; applies when the user manager next starts, usually next login)
    BUN_OPTIONS=--preload /abs/path/no-agent-summary.js
    

Or a wrapper named claude earlier on PATH (the case keeps it idempotent when one Claude Code process starts another):

     #!/bin/sh
     HOOK=/abs/path/no-agent-summary.js
     case " ${BUN_OPTIONS-} " in
       *" --preload $HOOK "*) ;;
       *) export BUN_OPTIONS="${BUN_OPTIONS:+$BUN_OPTIONS }--preload $HOOK" ;;
     esac
     : "${CC_AGENT_SUMMARY_LOG:=${XDG_RUNTIME_DIR:-/tmp}/no-agent-summary.log}"
     export CC_AGENT_SUMMARY_LOG
     exec /path/to/the/real/claude "$@"
  1. Restart the daemon and every already-running session, then start Claude Code from an environment that has BUN_OPTIONS:
variable values effect
CC_AGENT_SUMMARY_MODE off (default), pass off suppresses the summary timer. pass is the A/B control: loads and logs, arms every timer untouched. Any other value warns on stderr and acts as off.
CC_AGENT_SUMMARY_LOG file path, optional Appends preload active mode=… bun=… hooked=… on load, one line per matched timer (first 20), and an exit count.
CC_AGENT_SUMMARY_MARKER file path, optional Overwritten on load with the preload active … line.
  • Restart the daemon after install. The daemon, pty host and pre-warmed bg-spare sessions inherit the environment of the client that started the daemon, so a daemon started before BUN_OPTIONS was set keeps spawning unhooked sessions. Hence claude daemon stop --any.
  • Headless runs need it too: claude -p, cron, CI, editor integrations.
  • Platform: Linux tested, macOS and Windows untested. On Windows the /$bunfs/ gate most likely never installs the hook.
  • A/B: CC_AGENT_SUMMARY_MODE=pass loads the hook but arms every timer; the summaries come back, which shows the off result is the hook's doing.
  • Background processes: daemon, pty host and bg-spare must carry --preload in their environment (/proc/<pid>/environ on Linux); if not, restart the daemon.

Verify (after every update)

  1. Preload loads:

    BUN_OPTIONS="--preload $HOME/.local/share/no-agent-summary.js" CC_AGENT_SUMMARY_LOG=/tmp/nas.log claude --version && cat /tmp/nas.log
    

Expect preload active mode=off …. No line: BUN_OPTIONS did not reach the process, or the path is not absolute.

  1. Timer suppressed: with the same BUN_OPTIONS and CC_AGENT_SUMMARY_LOG=/tmp/nas.log, run a background subagent for a minute or two. The log shows summary timer #1 suppressed (setTimeout, delay=30000) and the agent's panel status stops updating. If you export OpenTelemetry, query_source = agent_summary should stay at zero; this is the only check that catches every failure mode.

Matching is by source text : an anchor must sit inside the callback passed to the timer. If an update breaks that, the hook matches nothing and summaries silently come back. Ways it can happen:

  • the log line or query-source id is renamed;
  • the callback is passed via fn.bind(...) (no source in toString) or another wrapper;
  • the strings move to a shared constant outside the callback;
  • the timer moves to an unwrapped API (timers/promises, a scheduler loop).

So re-run Verify after every update.

  • We run it under every Claude Code process on our machine (2.1.301). Since then there have been zero agent_summary requests, and no other side query grew to take its place.
  • Subagents, background agents, forked skills and background sessions run normally; only the summary fork is skipped.
  • Visible change: the per-agent panel status stops updating; SDK task_progress has no summary.
  • Overhead: one Function.prototype.toString per distinct timer callback, cached in a WeakMap. claude --version: ~10 ms → ~17 ms (one measurement).

Linux x64 binary from npm @anthropic-ai/claude-code-linux-x64 (its sha256 equals the native installer's manifest.json checksum). Static: the extracted bundle's summary timer callback carries a hook anchor. Live: claude -p --model haiku with CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES=1, one subagent doing 8 steps of ~20 s, counting [AgentSummary] Forking in --debug-file.

version published sha256 static summary forks in a ~2.5-min agent run: no hook / hook pass / hook off notes
2.1.312 2026-10-27 4f4178ce41d8 OK 5 / 5 / 0 latest on 2026-10-28; interactive: 6 no hook, 0 off
2.1.310 2026-10-23 b73676430af1 OK 5 / 5 / 0
2.1.308 2026-10-22 356733f185fa OK 5 / 6 / 0 stable on 2026-10-28; the pass run's agent took 9 steps instead of 8
2.1.301 2026-10-15 bc1aad9982c7 OK 5 / 5 / 0 same with earlier hook builds; interactive off also 0; in daily use since 2026-10-26, 0 agent_summary requests in telemetry
2.1.280 2026-09-22 1e08503dbdf3 OK 1 / 1 / 0 (timer fired 11 / 11 / 0) interactive: -p cannot enable summaries on this version. The agent sat at a permission prompt, so later timers skipped the unchanged transcript
2.1.257 2026-09-01 9a64bda9d872 OK 1 / 1 / 0 (timer fired 11 / 11 / 0) same as 2.1.280

5 / 5 / 0 = the fork happens on this version, merely loading the hook changes nothing, and off removes it.

Why there is no setting for this

  • The documented switch only turns it on. The SDK option agentProgressSummaries defaults to false, but in the bundle it is one term of an OR, and every code path that writes it sets true. So false changes nothing, and the undocumented CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES can only enable summaries too.
  • The interval belongs to the server. It comes from a per-model-family server flag and is clamped to 30–240 s. The default is already the minimum, and no value disables the timer.
  • The obvious env vars miss. DISABLE_NON_ESSENTIAL_MODEL_CALLS, which some packagers set, does not occur in the binary at all. CLAUDE_CODE_FORK_SUBAGENT=0 and CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 do stop it, but only by taking fork subagents or background agents with it.
  • The prompt cache makes it cheaper, not cheap. About 98 % of these calls re-read the transcript from cache; the ~2 % that hit a cold cache carry over a third of its cost.
  • Cost tools that read transcripts don't see it. These requests are not written to the session logs on disk (#104358); only the OpenTelemetry export shows them. The docs section on background token usage doesn't list it either, while Agent View's row summaries are documented as a Haiku-class model refreshing every few minutes.
  • A cheaper variant already exists, switched off. 2.1.310 ships a short mode: about 2k tokens of notes instead of the full transcript, optionally written by a smaller model. The default is still the full transcript, and only server flags can change it.
version (published) what changed
2.1.32 (Feb 5) the code first appears; dead in public builds
2.1.72 (Mar 9) reachable as an SDK opt-in
2.1.117 (Apr 21) reachable in the interactive CLI behind the fork gate or a server rollout
≤ 2.1.220 (Jul 24) forked skills are always summarized
2.1.232 (Aug 13) on by default for interactive background agents
2.1.300 (Oct 14) interval becomes server-tunable, 30–240 s
2.1.310 (Oct 23) the cheaper short mode lands, switched off

In our telemetry its weekly share of spend went from 3.5–7 % in July (the fork gate was already open for us) to 7.3 % and then 11.8 % in the week we picked up 2.1.233, and to about 16 % by mid-October.

MIT © 2026 Flamerix AI. Provided as is , without warranty of any kind; you use it at your own risk. Flamerix AI is not liable for any damage, data loss or account action arising from its use. Changing a client's runtime behaviour may conflict with the terms of the service you use it with; checking that is on you.

"Claude" and "Claude Code" are trademarks of Anthropic, PBC. This project is independent and is not affiliated with, sponsored or endorsed by Anthropic.