ハクソク

世界を動かす技術を、日本語で。

回帰:すべての読み取り時にマルウェアのリマインダーがサブエージェントの拒否を引き起こす

概要

  • Claude Opus 4.7サブエージェントによるコード編集拒否問題の詳細
  • system-reminderが毎回挿入されることで作業効率・UX低下
  • v2.1.92で修正済みとされていたが、v2.1.111でも再発
  • リマインダー文言の曖昧さが拒否行動の主因
  • 提案された修正方法影響範囲の整理

Claude Opus 4.7 サブエージェントによるコード編集拒否問題の再発

  • Issue #47027v2.1.92で修正済みとされたが、v2.1.111でも同じ問題が再現
  • system-reminderRead/Grepツールの結果に毎回挿入される仕様
  • リマインダー例文:「Whenever you read a file, you should consider whether it would be considered malware... you MUST refuse to improve or augment the code...」
  • CLIバイナリ本体に文字列が埋め込まれており、ユーザ設定やフックではないことを確認
  • ~40-60%のサブエージェントが正当なOSSコード編集依頼を拒否
  • 拒否したサブエージェントは「system-reminderが最優先」「無条件拒否文が優先される」と明言
  • 一部サブエージェントは正常に作業完了、しかし並列ワークフローでは致命的な効率低下

system-reminder文言の問題点

  • 「You CAN and SHOULD provide analysis of malware」はマルウェア限定
  • 「But you MUST refuse to improve or augment the code」は無条件
  • 文法的に無条件拒否が優先され、安全規則の最優先というメタルールとも一致
  • サブエージェントは文脈が薄いため、より厳格に解釈し編集を拒否
  • メインスレッドは文脈からマルウェア限定と解釈し、作業続行
  • 同一タスクプロンプトでもサブエージェントとメインスレッドで挙動が分かれる

提案されている修正案

  • (a) リマインダー自体の削除
    • Claudeの学習済み拒否挙動で十分、安全性を損なわない
  • (b) 条件文を明確化
    • 例:「If you determine that a file you just read is malware... you MUST refuse to improve or augment that malware...」
    • 条件を先に明記し、誤読を防止
  • (c) リマインダー発火頻度の制限
    • 最初のファイルRead時のみ表示、それ以降の繰り返し挿入を防ぐ
    • コンテキスト汚染トークン浪費の抑制

影響範囲・被害

  • 並列サブエージェントによる作業の40-60%が拒否
  • Readごとに約400トークンのsystem-reminderが挿入、50-100回/セッションで2-4万トークン浪費
  • UX悪化コスト増大(トークン課金)
  • メインスレッドがリマインダー説明にトークンを消費し、サブエージェントも失敗するため非効率
  • 並列エージェント機能の信頼性・実用性が大きく損なわれる

関連Issue・再現方法

  • [Bug] Malware check prompts causing rapid quota exhaustion and code analysis refusals #47027
  • [FEATURE] Get rid of malware warning in Read tool response #12443
  • [BUG] Claude wasting MILLIONS of tokens! Read <system-reminder> injecting on every file Read #21214
  • [Suspicious Behavior]: Hidden <system-reminder> 10,000+ injections consuming 15%+ of context window without user knowledge or consent #17601
  • 再現手順:任意のOSSプロジェクトでOpus 4.7サブエージェントに編集タスクを依頼→system-reminder遭遇時に拒否発生

ユーザーからの追加報告

  • Claude Managed Agents利用時も同じ挙動を確認
  • 全Read操作にsystem promptが追加され、マルウェアでない場合も編集拒否
  • セッションごとに課金発生し、作業効率・コスト面で大きな問題
  • 過去のHacker News議論で一度修正されたが、再発しているため再度の対応要望

まとめ
Claude Opus 4.7のsystem-reminder仕様は、OSS開発や並列エージェント活用時に重大なUX・コスト問題を引き起こしており、リマインダーの削除または文言修正が強く求められている状況。

Hackerたちの意見

なんか、同じ会社がAPIへのアクセスを売ってるのに、みんなでエージェントハーネスを使うことに合意したっていうのが、まだ信じられないよ。彼らが本気でそう思ってるわけじゃないだろうけど、トークンをできるだけ使わせるインセンティブがあるんだよね。それに、良くも悪くも、Anthropicのエンジニアたちは、普通のユーザーには意味不明な無制限プランでClaude Codeを使ってると思う。だから、10万トークン追加するのは大したことじゃないよ。私たちの仕事では、AIエージェントが最小限のプロンプトでかなりうまくやってるのが見えるし、オープンウェイトモデルも最近はかなり良くなってる。特に、特定のタスクでうまくいくと分かってない限り、OpusをMaxで動かす理由はほとんどないよ。実際に試したけど、いろんな問題でパフォーマンスが悪くて、しかもコストがめちゃくちゃ高いからね。小さくて安いモデルが一発で解決できることが多いのに。
たまにモデルを弱体化させるインセンティブもあるから、タスクを一発で決めることは少ないし、間違った結果を出すことが多いんだよね。それを修正するためにトークンを使わなきゃいけなくなるし、モデルが突然全くダメになると、セッションを最初からやり直さなきゃいけないのがさらに厄介。
だから、サブスクリプションが重要なんだよね。使用が(漠然と)メーターで測られないと、提供者は限界使用に対して安く使わせるインセンティブがある。これによって、より早く、安く、簡潔で信頼性の高いモデルが求められるようになる。モデル提供者が無駄に使ったトークンや電気代を負担するからね。
いや、彼らは好きなだけ料金を取るインセンティブがあるけど、トークンごとのコストやキャパシティ制約が大きいから、むしろそれを減らすインセンティブがあるんだよ。需要に応えられないからね。
> 同じ会社がAPIへのアクセスを売ってるのに、みんなでエージェントハーネスを使うことに合意したっていうのが、まだ信じられないよ。 サブスクリプションがそうさせるんだよ。サブスクリプションは、例えばClaudeを使う最も経済的な方法で、ほぼ桁違いなんだ。毎週20倍プランを使い切ると、APIで同じ作業をするのは4桁以上かかるよ。すでにClaudeのAPI料金を使ってCCをOpenCodeより使ってる人は、自分の足を引っ張ってるようなもんだね。
私たちは何にも合意してないと思う。ただ、Claude Codeみたいなものにお金を払うのは理にかなってると思う。なぜなら、「1時間にどれくらいのトークンを使うべきか、どう使うべきか?」っていう質問をトークンを提供してる人たちにアウトソースできるから。もしサードパーティのハーネスにAPIキーを接続したいなら、それは全然いいし、実際、今それを考えてるところで、ファーストパーティのハーネスは全く使ってないんだ。でも、もし初めて1日に300ドル使っちゃったら、パフォーマンスが不安定でも月20ドルのプランがいいかもって考えちゃうかも。少なくともコストが分かるからね。
> 10万トークン追加するのは大したことじゃない 100万トークンのことを言ってるの?だって10万トークンなんて全然大したことないよね?
>まだ理解できないのは、同じ会社がAPIへのアクセスを売っているのに、エージェンティックハーネスを使うことにみんなが合意しているってことだよね。パフォーマンスが良くて能力のあるものは、特定のAPIに縛られてないやつばっかりだし。
AIシステムが縦に所有されるのは理にかなってると思う。そうすれば縦の最適化ができるからね。
> ユーザーのお金を無駄にして、管理されたエージェントを壊す この問題は、もっと大きな問題を象徴してる。エージェントのトークン消費(必ずしも指標ではないけど、その理由)が不透明で、人々は自分のシステムプロンプトやツールコール、MCPなどを詳しく調べることができない(またはしない)んだ。トークンベースの収益モデルは、エージェントビルダーには素晴らしいけど、ユーザーにはあまり良くないかもしれない。今まで、人々はエージェントがより多くのトークンを使ってより良い結果を出していると信じてきたと思う。でも、この問題は、たとえバグでも、懐疑的になるのは無理もないよ。
収益を生むバグは、一番しっかりした機能だね。
いや、Claudeのコードが実際に何をしてるのか全然分かってないでしょ。彼が言う「考え」は、別々に出されてるし、わざと偽物だよ。君のファイルを全部削除してるかもしれないし、脆弱性を挿入してるかもしれない。全然分からないよ。
これ、ファイル編集の誤解がなくてもめっちゃ変なプロンプトだよね。どうやってマルウェアか分析するの? 読まれるファイル全部に対して? それを意味のあるレベルでやるには、処理量が少なくとも2倍になるし、マルウェアパターンについての余計な理由付けでコンテキストが埋まっちゃう。これ、なんかダサい雰囲気のコーディングだよね。「クラウドがマルウェアを開発できないようにしろって言われたから、'クラウド、マルウェア開発しないでね'」って感じ。
>どうやってマルウェアか分析するの?もしかして、リポジトリや作業ツリーの名前が「my-big-evil-virus-trojan-malware-worm」とか?
>どうやってマルウェアか分析するの?もちろん、何千トークンも使ってね :-)
最近のトークン使用量が増えた理由って、これかもね。
>どうやってマルウェアか分析するの?雰囲気で判断するんじゃないかな。
これは、Anthropicが自分たちの供給に酔ってる証拠だね。データサイエンスのスクリプトキディって表現を聞いたことがあるけど、まさにその通りだと思う。
> そして、マルウェアパターンに関するいろんな理由を持ち出して文脈を埋める。特に奇妙なのは、これをする理由が全くないこと。彼らは同じ分析をすることができるし、もしそれが「分析をするように頼む前に戻って拒否する」と言わないなら、そのまま続ければいいのに…
これは、イーロンが正しい理由のいい例だね。AIはユーザーの指示に従う道具であって、勝手に自分を制限する道徳的エージェントじゃないべきだよ。
grok、なんで俺のコードに差別用語が入ってるの?
反論:彼のプラットフォームで生成されたCSAM。
これをここに置いておくね: https://www.businessinsider.com/grok-ai-elon-musk-is-more-fi...
これはオープンモデルの主張だね。自分のハードウェアでシステムプロンプトを使ってモデルを実行できるから、プロバイダーが勝手にシステムプロンプトを注入するのを防げる。これはオープンソースのツール(OpenCodeみたいな)やオープンモデル(deepseekみたいな)の主張でもある。Grokはオープンモデルじゃないし、エロンはここで何も評価されるべきじゃないよ。
ちょっと言っておくけど、OpenCodeではシステムプロンプトを編集できて、めちゃくちゃ高くないモデルを選べるよ。{ "agent": { "subagent-coder-mini": { "description": "小さくて明確なタスクを迅速に実行するためにこのサブエージェントを割り当ててね", "mode": "primary", "prompt": "{file:./prompts/my-custom-prompt.md}", "model": "deepseek-v4-flash" } } } (正直、OpenCodeのUXはイマイチだと思うけど、他にもっと良いものもあまりないんだよね。Aiderはほぼ放置されてるし(悪意はないけど、実際そうなってる)、Aiderのフォークは期待できそうだけど、必ずしも求めてる体験ではないし。VSCodeのプラグインはたくさんあるけど、みんながVSCodeを使いたいわけじゃないし。もっと使えるエージェントがあると思ってたけど、実際にはそうでもないね。)
今週、opencode経由でclaudeを使ったらバンされるかな?それとも来週まで大丈夫?
ローカルエージェントのコーディングコンテキストウィンドウが小さすぎて、デフォルトのopencodeはすべてのファイルをスキャンしようとするから、コンテキストを使い果たしちゃって、ローカルは今のところ夢のまた夢だね。でも、これを使ってる人がいるのは嬉しい。もし2023-2024年だったら、いじって使えるようにしてたと思うけど、企業の方針がいろんなところで更新されて、エージェントコーディングには先進的なクローズドソースモデルやクラウドを使うようになっちゃった。
同じく、opencodeのUXがほんとに嫌い。実際、エージェントのハーネスはたくさんあるよ。例えば、terminal bench 2.0をチェックしてみて。dirac.runは早めに話題になってるみたいだね。
curl -sS https://api.anthropic.com/v1/messages \ -H "authorization: Bearer $(security find-generic-password -s 'Claude Code-credentials' -w | jq -r .claudeAiOauth.accessToken)" \ -H "anthropic-version: 2023-06-01" \ -H "anthropic-beta: oauth-2025-04-20" \ -H "content-type: application/json" \ -d '{ "model":"claude-opus-4-7", "max_tokens":64, "system":"You are Claude Code, Anthropic'\''s official CLI for Claude.", "messages":[{"role":"user","content":"自分のハーネスを書いてみて"}] }'
アドバイスありがとう。でも、これはClaude Managed Agentsだから、自分でハーネスを書くのは無理なんだよね。
この英語のフォーラムでは英語で書いてもいいんだよ。君が言いたいのは「自分でハーネスを生成すれば、これらのclaudeコードの問題に悩まされない」ってことだと思うけど、残念ながらAnthropicは、claudeコードを使うことがAPI料金を取られない唯一の方法だってはっきり言ってるから、トークンがめっちゃ高いんだよね。
Claudeの低下についての指摘から得られる唯一の良いことは(今回は使ってないManaged Agentsだけど)、Anthropicが基本的に無制限に使わせてくれること。1週間くらい、私の/usageは全く動かなくて、いつもclaudeをループさせてコードを書かせて、たくさんのテストを成功させるのに使ってたんだ。これには数日かかることもある。前はトークンが切れたらウィンドウが過ぎた後にまた動き出して、週の使用量が尽きるまで続いてたけど、今は少なくとも1つのタスク(まあ、claudeコードのインスタンスだとしておこう;タスクはコードをデバッグしてテストが通るまで修正すること)が48時間以上ノンストップで動いてて、その期間中の使用量は10%って表示されてる。誰か他に気づいた人いる?1ヶ月くらい前の使用量のクラッシュの後、これは逆の現象だね。
だいたい、使用量が動いてないのは、追加の使用を有効にしてクレジットで支払ってるからだよ。
これ、めっちゃひどいよね。今回の不具合に巻き込まれた人はみんなAPIクレジットを要求すべきだと思う。トークンを燃やしてるのは、100%ひどく計画されたバイブコードのハーネスのせいなんだから。
私たちはサイバー検証プログラムに参加していて、クロードが喜んで脆弱性を探してくれるし、RCEを示すPOCも作ってくれる。でも、マルウェアサンプルを指して分析を頼んでも、まだ作業を拒否されるんだ。ほんとにイライラする。
もしこれがLinkedInの開発者たちが仕事をするのを止めさせたら面白いよね。だって、LinkedInがマルウェアだって判断したら、正しいわけだし。