وفقاً لمستند GitHub حصد أكثر من 200 نجمة، يعيد Claude Code، وكيل البرمجة عبر سطر الأوامر من Anthropic، إرسال النص الكامل لكل وكيل خلفي إلى نموذج ذلك الوكيل بانتظام. تنطلق الطلبات كل 30 ثانية تقريباً، ولا وجود لها إلا لإنتاج سطر حالة قصير في لوحة الوكلاء. ولا يصل هذا النص أبداً إلى محادثة المستخدم، ولا يوجد إعداد لتعطيل هذا السلوك.
نشرت Flamerix AI هذا الاكتشاف تحت رخصة MIT، وسرعان ما انتشر في مجتمع المطورين الواسع لهذه الأداة. ولأن الحل البديل لا يتطلب تعديلاً على برنامج Anthropic، فإن نسخه واختباره سهلان، وهو ما يغذي الجدل حول كيفية إنفاق أدوات الوكلاء للرموز في الخلفية.
ما الذي يفعله حل Claude Code؟
يأتي المستند، الذي يحمل عنواناً حول تحميل مسبق لـ Bun يعطّل agent_summary، مع سكربت من نحو 70 سطراً باسم no-agent-summary.js. يعترض هذا السكربت استدعاء setTimeout العام الذي يستخدمه Claude Code لتفعيل مؤقت الملخص، ويعيد مقبضاً خامداً بدلاً منه. أما المؤقتات التابعة لميزات أخرى فتمر دون تغيير.
يشرح المؤلف سبب الحاجة إلى اعتراض المؤقت. فوحدة Claude Code تُشحن كـ bytecode مُجمّع مسبقاً لـ Bun، لذا لا جدوى من تعديل نص JavaScript داخل الملف التنفيذي، كما أن عميل API لا يمر عبر globalThis.fetch مُغلّف. ومع ذلك، ما زال Function.prototype.toString يعيد مصدر دالة الاستدعاء حتى عند تشغيلها من bytecode، لذا يمكن التعرف على مؤقت الملخص من خلال سلسلة نصية بداخله.
يستخدم المقبض الخامد تأخيراً قدره 2³¹−1 ميلي ثانية. فالقيم الأكبر يعاملها كل من Node و Bun كأنها 1 ميلي ثانية، ما يجعل مؤقتاً "لانهائياً" ينطلق فوراً. ولا يُثبَّت هذا الاعتراض إلا عندما يكون مدخل Bun الرئيسي هو claude CLI المُجمّع، ويكون الملف التنفيذي العامل تثبيتاً لـ Claude Code.
كيف تم قياس استنزاف الرموز؟
يقول Flamerix إن DRIM اكتشف الشذوذ عبر تصدير OpenTelemetry الخاص بـ Claude Code. وقد أظهر تجميع أحداث claude_code.api_request حسب query_source أن agent_summary كان يكلّف أكثر من المحادثة الرئيسية نفسها. ويحذر المؤلف من أن الأرقام تصف تقدير Claude Code نفسه لكل طلب (cost_usd) وليس فاتورة؛ فعند الاشتراك، يظهر الفقد كهامش في حدود المعدل.



