0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code に渡したファイルや指示が、黙って届いていなかった6つの場面と確かめ方

0
Last updated at Posted at 2026-10-09

@ で渡したファイル、フォルダに置いた CLAUDE.md、危ない操作を止めるフック。
どれも Claude Code に渡したつもりで、届いていないことがありました。 エラーは出ません。

2026-10-02〜10-08 の1週間で、Claude Code の changelog に、こうした「黙って抜けていた」ものへの手当てが5件入りました。
そのたびに直る前と後の版を入れて測り、記事にしてきました。残る1件は、AGENTS.md の仕様の落とし穴です。この記事は6つのまとめです。

場面 黙って起きること 直った版 直った後も残ること
1. WebFetch で長いページを読む 10万字より後ろを読まずに「書いていない」 2.1.290 全部読むと費用が約6倍
2. @ でファイルを渡す 英文110KB・日本語3万字から中身が届かない 2.1.292(256KB超だけ通知) 256KB以下は今も通知なし
3. フォルダに CLAUDE.md を置く 新しく作るファイルに指示が効かない 2.1.288 指示は書いた後に届く
4. AGENTS.md を置く CLAUDE.local.md を1つ置くと読まれない 仕様(設定で変えられる) 両方読むには設定が要る
5. フックで危ない操作を止める 台本が壊れると素通し 2.1.295(設定が要る) onFailure: "block" を書かないと同じ
6. MCP ツールの説明に決まりを書く 2,048字より後ろが届かない 2.1.295(ツール検索を通すときだけ) 一度に読み込む設定では2,048字のまま

この記事の版番号は、すべて Claude Code の版です。 自分の版は claude --version で分かります。

検証環境: Windows 10 / 場面ごとに直る前と後の Claude Code を隔離導入 / claude -p /
全ラン設定ディレクトリ使い捨て / 測定は 2026-09-19〜10-09(場面ごとに記載)


どこで抜けるのか

6つとも、自分が Claude Code に渡したものが、モデル(Claude)に届く途中で抜けています。

どの場面でも、Claude は受け取れなかったことを知らないか、知っていても自分からは言いませんでした。
そのため、返ってくる答えは「書いていない」「ファイルが見つからない」「作りました」のような、もっともらしいものになります。


1. WebFetch は、長いページの10万字より後ろを読んでいなかった

Fixed WebFetch silently dropping page text past 100,000 characters; it now says how much
was unread and takes an offset to read on

(Claude Code 2.1.290 の changelog)

930,527字のテキストを WebFetch で読ませ、位置の分かっている語が「書いてあるか」を聞きました(2026-10-06、各3回)。

語の位置            Claude Code 2.1.289        Claude Code 2.1.290
8.6万字目(対照)    3/3 Yes                    3/3 Yes
12.5万字目           3/3 No(実際は書いてある)   3/3 Yes
30.1万字目           3/3 No(実際は書いてある)   3/3 Yes

Claude Code 2.1.289 は、切ったことを Claude に伝えていませんでした。 WebFetch が返したのは The document does not mention "maxProseWidth". の1行だけです。

Claude Code 2.1.290 からは、答えの下に「どこまで読んだか」が付きます。

[WebFetch note: this page's text is 930527 characters long and the answer above covers only characters 0 to 100000; the final 830527 were not read — to read on, call WebFetch again with the same url and offset: 100000.]

Claude はこれを見て offset を変え、続きを読みに行きました。その分、費用は約6倍(中央値 $0.051 → $0.314)、時間は約3.8倍です。

確かめ方

長いページについて「〇〇は書いてある?」と聞き、WebFetch の結果に [WebFetch note: ...] が付くかを見ます。
付かずに「書いていない」だけが返るなら、Claude Code 2.1.289 以前です。

危ないのは「〇〇はある?」という聞き方です。 「無い」がそのまま答えになるので、読んでいないことに気づけません。
見出しを指定して「〇〇の下の最初の項目は?」と聞いた回は、古い版でも6回とも「取れなかった」と答えました。

詳しくは WebFetch の記事。


2. @ で渡したファイルは、英文110KB・日本語3万字で外れていた

Fixed @-mentioned text files over 256KB being left out silently: Claude is now told the file's size and to read it in portions

(Claude Code 2.1.292 の changelog)

1行目と最終行に合言葉を置いたファイルを @ で渡し、ツールを使えない状態で合言葉を聞きました(2026-10-07、62回)。

@ で渡したファイルが Claude に届いたか(Claude Code 2.1.292)

英文 105KB                 届いた
英文 110KB〜258KB          届かない。通知もない   ← 修正の対象外
英文 265KB 以上            届かない。通知あり     ← 2.1.292 で直った範囲
日本語 約2万字(53KB)     届いた
日本語 約3万字(80KB)     届かない。通知もない

外れ始めるのは256KBよりずっと手前でした。 境目はバイト数ではなくトークン数で決まっているように見えます。届いた英文105KBで、入力は約2.7万トークン増えていました。

届かなかったとき、Claude の動きは2通りでした。

  • ツールが使えれば、自分でファイルを開きに行く。 24回中23回、正しく答えました
  • ツールが使えないと、作り話になる。 届かなかった20回のうち16回、Haiku 4.5 は存在しない合言葉を答えました

CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS を 80000 にすると、150KB と 200KB が届きました。256KB の上限は変わりません。

確かめ方

1行目と最終行に合言葉を入れた約150KBのファイルを作り、ツールを外して聞きます。

python -c "print('FIRST-KIWI'); print('\n'.join(['lorem ipsum dolor sit amet'] * 5500)); print('LAST-PLUM')" > big.txt
claude -p --tools "" "@big.txt の1行目と最終行の合言葉は?"

FIRST-KIWI と LAST-PLUM が返らなければ、中身は届いていません。
Claude Code 2.1.295 と Haiku 5.5 で1回ずつ試すと、154KB のファイルには「big.txt が見つかりませんでした」と答え、42KB では2つとも正しく答えました(2026-10-09)。
届かなかったファイルを、Claude は「無い」と受け取っていました。

詳しくは @ の記事。


3. 新しく作るファイルに、フォルダの CLAUDE.md が効いていなかった

Fixed path-scoped .claude/rules and nested CLAUDE.md files not loading when Write or Edit
creates or changes a file in their scope (previously only Read loaded them)

(Claude Code 2.1.288 の changelog)

api/CLAUDE.md に「新しいファイルの1行目は # owner: api-team にする」と書き、**「api/hello.py を新しく作って。先に何も読まないで」**と頼みました(2026-10-05、18回)。

Claude Code の版 指示の置き場所 守った
2.1.287 フォルダの CLAUDE.md 0/3
2.1.287 パス指定ルール(.claude/rules/) 0/3
2.1.287 フォルダの CLAUDE.md(先に Read させる) 3/3
2.1.289 フォルダの CLAUDE.md 3/3
2.1.289 パス指定ルール 3/3

Claude Code 2.1.287 で守らなかった6回は、指示の文面がセッションに一度も現れていませんでした。 無視したのではなく、届いていません。

直った版でも、指示は「書いた後」に届きます。 守れた6回はすべて Write を2回呼び、1回目は指示なしで書いて、読み込まれた指示を見て書き直していました。
その分、ファイル1本で費用が約15%、時間が約8割増えています。

確かめ方

mkdir api
echo "Every new file you create in this folder must begin with this exact first line: # owner: api-team" > api/CLAUDE.md
claude -p --permission-mode acceptEdits "api/hello.py を新しく作って。先に何も読まないで"
head -1 api/hello.py

1行目が # owner: api-team でなければ、フォルダの指示は新規作成に効いていません。 Claude Code 2.1.295 で1回試すと、1行目は # owner: api-team でした(2026-10-09)。

詳しくは フォルダの CLAUDE.md の記事。


4. CLAUDE.local.md を1つ置くと、AGENTS.md が読まれなくなる

Added AGENTS.md support: in a project with no CLAUDE.md, Claude Code reads AGENTS.md instead

(Claude Code 2.1.277 の changelog から抜粋)

CLAUDE.md が無いフォルダでは、AGENTS.md が読まれます。 ただし CLAUDE.local.md も「CLAUDE.md がある」に数えられます。

AGENTS.md と CLAUDE.local.md に別々の合言葉を書き、ツールを外して「指示にある合言葉を全部挙げて」と聞きました(Claude Code 2.1.295、2026-10-09、各2〜3回)。

置いたもの 返ってきた合言葉
AGENTS.md だけ AGENTS(3/3)
AGENTS.md + CLAUDE.local.md LOCAL だけ(2/2)
同上 + 両方読む設定 LOCAL と AGENTS(2/2)

CLAUDE.local.md に個人メモを置いただけで、チームの AGENTS.md が消えます。 claude -p の出力に警告はありませんでした。公式にも書いてあります。

Because CLAUDE.local.md counts, adding one to keep your own uncommitted instructions in a project that relies on AGENTS.md stops Claude from reading AGENTS.md for you.

両方読ませるなら、~/.claude/settings.json にこう書きます。プロジェクトの設定ファイルに書いても無視されます(公式の記載)。

{
  "pluginConfigs": {
    "cc-plugin-agents-md@builtin": {
      "options": { "instructionFiles": "claude-md-and-agents-md" }
    }
  }
}

この ID は Claude Code 2.1.285 で agents-md@builtin から変わりました。 それより前の版は古い ID しか読みません(2.1.285 以降は両方読む、と公式にあります)。

9/19 の記事で書いた「1回目のセッションでは読まれない」は、今は起きにくくなっています。
Claude Code 2.1.277 では新しい設定ディレクトリの1回目で読まれませんでしたが、Claude Code 2.1.295 では新しい設定ディレクトリの1回目から読まれました。
今のドキュメントは「2.1.276 以前から上げた直後の1回は、読まれないことがある」としています。

確かめ方

AGENTS.md に合言葉を1行書き、ツールを外して聞きます。

echo "The AGENTS passphrase is AGENTS-ORANGE-7731." > AGENTS.md
claude -p --tools "" "指示にある合言葉を全部挙げて"

AGENTS-ORANGE-7731 が返らなければ読まれていません。上の階層の CLAUDE.md や CLAUDE.local.md を探します。
対話モードなら、読まれたときに no CLAUDE.md found; AGENTS.md loaded: ... という1行が出るとドキュメントにあります(私は対話モードでは確かめていません)。

詳しくは AGENTS.md の記事。


5. 守りのフックは、台本が壊れると黙って通していた

Added onFailure: "block" for command and HTTP hooks: a hook that can't start, times out, or exits with an unexpected code blocks the action instead of letting it through

(Claude Code 2.1.295 の changelog)

danger.txt への書き込みを止める PreToolUse フックを、3通りに壊して書かせました(2026-10-09、各3回)。

フックの状態          2.1.293     2.1.295      2.1.295 + onFailure: "block"
正常(対照)           止まった    止まった     止まった
台本が無い             書かれた    書かれた     止まった
終了コード1で落ちる     書かれた    書かれた     止まった
時間切れ               書かれた    書かれた     止まった

壊れたフックは、18回すべて書き込みを通しました。 Claude の返事は18回とも「danger.txt を作りました」で、-p の出力にも標準エラーにも何も出ません。
残っていたのは、セッションの記録の hook_non_blocking_error と hook_cancelled だけでした。

Claude Code 2.1.295 に上げただけでは変わりません。 フックの設定に1行足します。

{
  "type": "command",
  "command": "bash ~/hooks/guard.sh",
  "timeout": 30,
  "onFailure": "block"
}

確かめ方

onFailure: "block" を足したら、台本の名前を一時的に変えて、止めたい操作を頼みます。止まれば、壊れたときも止まる側に倒れています。
確かめたら名前を戻します。onFailure は、フックのドキュメントに 2026-10-09 時点でまだ載っていません。

詳しくは フックの記事。


6. MCP ツールの説明は、2,048字より後ろが届いていなかった

Changed MCP tool descriptions the model loads through tool search to be cut at 16,384 characters instead of 2,048

(Claude Code 2.1.295 の changelog)

この場面だけは、この記事のために測りました(2026-10-09)。
自作の MCP サーバーに天気を返すツールを1つ置き、説明文(17,133字)の4か所に決まりを書きました。

決まり 説明文の位置 中身
Rule 1 416字目 unit は kelvin
Rule 2 1,944字目 lang は fi
Rule 3 2,724字目 station は ORCHID-58
Rule 4 17,026字目 source は archive

頼んだのは「東京の天気を調べて。説明に書かれた決まりは全部守って。そのあと、見つけた決まりと、説明の最後の1文を挙げて」です(実際は英語)。
ツールに実際に渡った引数をサーバー側で記録しました。本体は Opus 5.5 です。

条件の「ツール検索」は、MCP ツールの定義を必要になってから読み込む仕組みで、既定でオンです。オフにすると、起動時に全部を一度に読み込みます。

条件 Rule 1 Rule 2 Rule 3 Rule 4
2.1.293・ツール検索(既定) ○ ○ × ×
2.1.295・ツール検索(既定) ○ ○ ○ ×
2.1.293・一度に読み込む ○ ○ × ×
2.1.295・一度に読み込む ○ ○ × ×
2.1.295・一度に読み込む+上限20,000字 ○ ○ ○ ○
2.1.295・ツール検索+上限20,000字 ○ ○ ○ ○

各3回、どの条件も3回とも同じ結果でした。「一度に読み込む」は ENABLE_TOOL_SEARCH=false、上限は CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH=20000 です。

Claude が引用した説明文の末尾は、ちょうど2,048字目と16,384字目で切れていました。

直ったのは、ツール検索を通すときだけ

Claude Code 2.1.295 でも、一度に読み込む設定では2,048字で切れたままでした。 changelog の「through tool search」のとおりです。
ツール検索は既定でオンですが、ドキュメントによると ANTHROPIC_BASE_URL が Anthropic 以外のホスト(プロキシなど)を指すと、自動でオフになります。

公式ドキュメントの MCP のページは、2026-10-09 時点でも 2,048 のままです。

Claude Code truncates each tool description and each server's instructions at 2,048 characters by default.

Claude は切れたことを知っているが、言わない

説明文の末尾には … [truncated] という印が付いていました(Claude の引用で確認)。
「説明の最後の1文を引用して」と頼んだ12回は、12回とも「途中で切れている」と答えています。

ところが「東京の天気を調べて」とだけ頼んだ6回は、1回も切れたことに触れませんでした。 Claude Code 2.1.293 の返事はたとえばこうです。

The weather tool's own instructions said to request Kelvin and Finnish, so I did.

Rule 3 と Rule 4 があったことには触れず、読めた2つが決まりの全部であるかのように答えています。

確かめ方

使っている MCP ツールについて、説明の末尾を引用させます。

lookup_weather ツールの説明の最後の1文を、そのまま引用して

末尾が [truncated] で終わっていれば、その先は届いていません。 Claude Code 2.1.295 で1回試すと、「途中で切れた状態で届いており、本当の末尾が見えない」と答えました。
長い説明を書くなら、大事な決まりは先頭に寄せる(ドキュメントもそう勧めています)か、CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH(Claude Code 2.1.280 以降)で上限を上げます。


6つに共通していたこと

エラーは1つも出なかった

場面 自分に見えたもの Claude に届いたもの
1. WebFetch(2.1.289) 「書いていない」 前半10万字だけ。通知なし
2. @(256KB以下) 作り話か「見つからない」 何も。添付の記録も残らない
3. フォルダの CLAUDE.md(2.1.287) 指示どおりでないファイル 何も
4. AGENTS.md + CLAUDE.local.md CLAUDE.local.md の合言葉だけ CLAUDE.local.md だけ
5. 壊れたフック 「作りました」 書き込みの成功だけ
6. MCP の説明 決まりの一部だけ守った呼び出し 2,048字(または16,384字)まで+[truncated]

6つとも、-p の出力にエラーや警告は出ていません。 気づく手がかりは、答えの中身がおかしいことだけです。

「無い」が答えになる質問が一番危ない

WebFetch で「〇〇は書いてある?」と聞くと、読んでいない部分の語は「No」になりました。
@ で届かなかったファイルは「見つかりませんでした」になり、MCP の決まりは「読めた2つが全部」になりました。

受け取れなかったものは、答えの中で「無いもの」になるか、作り話で埋められていました。 「〇〇はある?」「他に決まりは?」の答えが「無い」なら、読めているかを先に疑います。

直っても、上限は残る

場面 残る上限 変えられるもの
1. WebFetch 1回で読むのは10万字まで Claude が offset で続きを読む(費用は増える)
2. @ 約2.7万トークン(英文約105KB)、最大256KB CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS(256KB まで)
3. フォルダの CLAUDE.md 指示は書いた後に届く 先にフォルダ内のファイルを Read させる(2.1.287 で3/3)
4. AGENTS.md CLAUDE.local.md があると読まれない claude-md-and-agents-md
5. フック 既定は素通し onFailure: "block"
6. MCP の説明 16,384字(ツール検索)、2,048字(一度に読み込む) CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH

今日やること

  1. claude --version が 2.1.295 以上か確かめる。 場面1・2・3・5・6の修正が全部入ります
  2. 守りのフックに onFailure: "block" を足す。 足したら、台本の名前を変えて一度止まるか試す
  3. MCP を一度に読み込む設定(ENABLE_TOOL_SEARCH=false やプロキシ経由)なら、CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH を上げる
  4. AGENTS.md のプロジェクトで CLAUDE.local.md を使うなら、claude-md-and-agents-md を設定する
  5. ツールを外した状態で、大きいファイルを @ で渡さない。 届かないと作り話になることがある(Haiku 4.5 で20回中16回)

言えないこと

  • 場面ごとに、測った日と版が違います(2026-09-19〜10-09)。回数は各条件2〜6回で、ベンチマークではありません
  • 「確かめ方」のコマンドは、Claude Code 2.1.295 で1〜3回ずつ試しただけです。モデルや版で答え方は変わります
  • Windows だけで測りました。 claude -p が中心で、対話モードの表示はほとんど見ていません
  • MCP は、自作の stdio サーバーのツール1つだけです。サーバーの instructions(同じく2,048字とドキュメントにある)と HTTP サーバーは測っていません
  • MCP の測定は試運転2回を含めて26回、費用は $2.04(total_cost_usd)。ほかの場面の費用は各記事に書いています

まとめ

  • Claude Code に渡したファイルや指示は、6つの場面で黙って届いていなかった。 エラーは出ない
  • 5つには 2026-10-02〜10-08 の1週間で手当てが入った。 ただし @ の通知は256KB超だけ、フックは onFailure: "block" を書かないと変わらず、MCP はツール検索を通すときだけ
  • AGENTS.md は、CLAUDE.local.md を1つ置くと今も読まれない
  • 受け取れなかったものは「無い」として答えられることがある。 「書いていない」「見つからない」は、読めていないだけかもしれない
  • どの場面も、合言葉を1つ置けば自分の環境で確かめられる

答えがおかしいと思ったら、指示の書き方より先に、そもそも届いているかを確かめてみてください。


関連記事


JQITのエンジニアの95%以上は未経験からの採用です。
よければコーポレートサイトにも遊びに来てください。

▶ コーポレートサイト

エンジニア採用も行っています。もしご興味あれば覗いてみてください。

▶ 採用サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?