[{"data":1,"prerenderedAt":605},["ShallowReactive",2],{"content-/claude-code-subagent-cache-ttl":3,"all-pages-for-dir":585,"related-/claude-code-subagent-cache-ttl":586,"og-image-/claude-code-subagent-cache-ttl":604},{"id":4,"title":5,"body":6,"category":569,"concepts":570,"description":571,"extension":572,"meta":573,"navigation":574,"ogImage":570,"path":575,"project_name":570,"published":576,"publishedAt":577,"seo":578,"source":570,"stem":579,"tags":580,"todo":570,"unpublished":576,"updatedAt":570,"__hash__":584},"pages/2026-10/2026-10-10/claude-code-subagent-cache-ttl.md","Claude Code のサブエージェントはキャッシュが5分で切れる、は本当か。手元のログで測った",{"type":7,"value":8,"toc":561},"minimark",[9,14,18,24,27,32,44,59,103,110,114,127,163,166,173,176,183,187,190,193,196,242,245,252,256,259,262,265,281,284,287,554,557],[10,11,13],"h1",{"id":12},"claude-code-のサブエージェントはキャッシュが5分で切れるは本当か","Claude Code のサブエージェントはキャッシュが5分で切れる、は本当か",[15,16,17],"p",{},"こんな話を目にした。",[19,20,21],"blockquote",{},[15,22,23],{},"Claude のサブエージェントのプロンプトキャッシュは5分しか持たない（本体は1時間）。5分を過ぎたら、フルプライスのコストがドカンドカンとのしかかってくる。だからサブエージェント、とくに Agent Teams の使いすぎには気をつけたほうがいい。",[15,25,26],{},"前半は本当だった。手元のログで、本体とサブエージェントのキャッシュの寿命がはっきり分かれていた。後半は言い過ぎで、切れても定価には戻らない。サブエージェントが高くつく理由は別のところにあった。",[28,29,31],"h2",{"id":30},"手元のログで-ttl-を数えた","手元のログで TTL を数えた",[15,33,34,35,39,40,43],{},"Claude Code はセッションの記録を ",[36,37,38],"code",{},"~/.claude/projects/\u003Cプロジェクト>/\u003CセッションID>.jsonl"," に残す。サブエージェントの記録は、同じ場所の ",[36,41,42],{},"\u003CセッションID>/subagents/agent-*.jsonl"," に別ファイルで残る。",[15,45,46,47,50,51,54,55,58],{},"API の応答に含まれる ",[36,48,49],{},"usage.cache_creation"," には、キャッシュに書き込んだトークン数が寿命ごとに分けて入っている。",[36,52,53],{},"ephemeral_5m_input_tokens"," が5分キャッシュで、",[36,56,57],{},"ephemeral_1h_input_tokens"," が1時間キャッシュだ。直近7日に更新された記録ファイルを選び、本体とサブエージェントに分けて足し合わせた。ファイル単位で選んでいるので、7日より前に始めて最近また使ったセッションは、古い分も含めて数えている。",[60,61,62,78],"table",{},[63,64,65],"thead",{},[66,67,68,71,75],"tr",{},[69,70],"th",{},[69,72,74],{"align":73},"right","5分キャッシュへの書き込み",[69,76,77],{"align":73},"1時間キャッシュへの書き込み",[79,80,81,93],"tbody",{},[66,82,83,87,90],{},[84,85,86],"td",{},"本体セッション",[84,88,89],{"align":73},"0",[84,91,92],{"align":73},"2.33億トークン",[66,94,95,98,101],{},[84,96,97],{},"サブエージェント（129本）",[84,99,100],{"align":73},"1.14億トークン",[84,102,89],{"align":73},[15,104,105,109],{},[106,107,108],"strong",{},"本体はすべて1時間、サブエージェントはすべて5分だった","。混ざっているものは1件もない。最近のサブエージェントを8本選んで1本ずつ見ても、全部が5分のほうに入っていた。",[28,111,113],{"id":112},"切れても定価には戻らない","切れても「定価」には戻らない",[15,115,116,117,126],{},"ここからが後半の話になる。料金の倍率は Anthropic のプロンプトキャッシュの説明ページ（",[118,119,125],"a",{"href":120,"target":121,"rel":122},"https://platform.claude.com/docs/en/build-with-claude/prompt-caching","_blank",[123,124],"noopener","noreferrer","→ Prompt caching","）に書いてある。通常の入力単価を1としたときの値だ。",[60,128,129,139],{},[63,130,131],{},[66,132,133,136],{},[69,134,135],{},"操作",[69,137,138],{"align":73},"単価",[79,140,141,148,155],{},[66,142,143,145],{},[84,144,74],{},[84,146,147],{"align":73},"1.25",[66,149,150,152],{},[84,151,77],{},[84,153,154],{"align":73},"2",[66,156,157,160],{},[84,158,159],{},"キャッシュからの読み取り",[84,161,162],{"align":73},"0.1",[15,164,165],{},"キャッシュが切れたあとの呼び出しでは、同じ内容をもう一度キャッシュに書き込む。払うのは書き込みの単価で、5分キャッシュなら1.25倍になる。1時間キャッシュの書き込み（2倍）よりは安い。",[15,167,168,169,172],{},"もう1つ大事なのが、寿命の数え方だ。同じページに「キャッシュは使うたびに無料で寿命が延びる」とある。5分というのは作ってからの時間ではなく、",[106,170,171],{},"最後に使ってから次に使うまでの間隔","のことだ。",[15,174,175],{},"サブエージェントは、ふつう数秒から数十秒の間隔で次の呼び出しをする。5分も空くのは、1回のツール実行が5分を超えたときくらいだろう。長いビルドやテスト、応答の遅いブラウザ操作などがそれにあたる。そういう待ちがなければ、ほとんどの呼び出しは0.1倍の読み取りで済む。",[15,177,178,179,182],{},"損得の分かれ目も計算できる。5分キャッシュは最初の書き込みが1時間キャッシュより0.75倍ぶん安い。そのかわり、5分を超えて1時間に満たない空きが1回でもあると、5分キャッシュだけが書き直しになり、読み取りで済んだ場合より1.15倍ぶん余計にかかる。",[106,180,181],{},"1体のサブエージェントが一度でも5分以上（1時間未満）止まれば、1時間キャッシュより高くつく","。止まらなければ5分のほうが安い。1時間を超えて止まった場合は、どちらのキャッシュも切れて書き直しになるので、書き込み単価の安い5分のほうがやはり安い。",[28,184,186],{"id":185},"本当に効いていたのは1体ごとの初期費用","本当に効いていたのは「1体ごとの初期費用」",[15,188,189],{},"ログをもう少し見ると、サブエージェントが高くつく理由は別のところにあった。",[15,191,192],{},"サブエージェントは、本体のキャッシュを使えない。起動するたびに、システムプロンプト、CLAUDE.md、ツール定義などを最初から書き込み直す。しかも仕事が終われば消えるので、書いたキャッシュを長く使い回せない。",[15,194,195],{},"同じファイルで、読み取り量が書き込み量の何倍あるかを比べた。",[60,197,198,213],{},[63,199,200],{},[66,201,202,204,207,210],{},[69,203],{},[69,205,206],{"align":73},"書き込み",[69,208,209],{"align":73},"読み取り",[69,211,212],{"align":73},"読み取り ÷ 書き込み",[79,214,215,228],{},[66,216,217,219,222,225],{},[84,218,86],{},[84,220,221],{"align":73},"2.33億",[84,223,224],{"align":73},"244億",[84,226,227],{"align":73},"約105倍",[66,229,230,233,236,239],{},[84,231,232],{},"サブエージェント",[84,234,235],{"align":73},"1.14億",[84,237,238],{"align":73},"27億",[84,240,241],{"align":73},"約24倍",[15,243,244],{},"本体は、書き込んだ量の100倍以上を読み取りに回せている。サブエージェントは24倍ほどで終わっている。単価を掛けて入力のコストに直すと、書き込みが占める割合は本体で約6分の1、サブエージェントで約3分の1になる。サブエージェントは、入力のコストのうちかなりの部分を「準備」に払っている。",[15,246,247,248,251],{},"なお、記録ファイルには同じ応答の ",[36,249,250],{},"usage"," が複数行に重複して入ることがあるので、トークン数の絶対値は実際より大きく出ているかもしれない。本体とサブエージェントで条件は同じなので、比率の比較には影響しないと考えている。",[28,253,255],{"id":254},"agent-teams-はどうか","Agent Teams はどうか",[15,257,258],{},"Agent Teams のチームメイトは、ほかのメンバーからの連絡を待って長く止まる使い方になりやすい。もしチームメイトもサブエージェントと同じく5分キャッシュなら、5分を超える待ちのたびに書き直しが起きる。「Agent Teams はとくに気をつけたほうがいい」という話は、この点ではうなずける。",[15,260,261],{},"ただし、手元には Agent Teams の記録がなかったので、チームメイトのキャッシュ寿命は測れていない。ここは推測にとどまる。",[28,263,264],{"id":264},"まとめ",[266,267,268,272,275,278],"ul",{},[269,270,271],"li",{},"サブエージェントのキャッシュが5分で、本体が1時間なのは本当だった（手元の記録では例外なし）",[269,273,274],{},"5分は「最後に使ってから」の時間で、切れても定価ではなく1.25倍の書き込みになる。止まらずに動いているサブエージェントなら、ほとんど問題にならない",[269,276,277],{},"サブエージェントが高くつくのは、1体ごとにキャッシュを作り直す初期費用のせいだ。数ファイルを読むだけの仕事なら、本体で読んだほうが安い",[269,279,280],{},"長いツール実行や連絡待ちで5分以上止まる使い方をすると、書き直しが繰り返される。並べて動かすなら、止まらない仕事を任せるのがよい",[28,282,283],{"id":283},"自分の記録で確かめる方法",[15,285,286],{},"Git Bash や macOS のターミナルで、次のように数えられる。",[288,289,294],"pre",{"className":290,"code":291,"language":292,"meta":293,"style":293},"language-bash shiki shiki-themes vitesse-light vitesse-light","cd ~/.claude/projects\nsum() {\n  [ $# -eq 0 ] && { echo \"5m=0 1h=0（記録なし）\"; return; }\n  grep -ho '\"ephemeral_5m_input_tokens\":[0-9]*' \"$@\" | awk -F: '{s+=$2} END{printf \"5m=%d \", s}'\n  grep -ho '\"ephemeral_1h_input_tokens\":[0-9]*' \"$@\" | awk -F: '{s+=$2} END{printf \"1h=%d\\n\", s}'\n}\necho \"サブエージェント:\"; sum $(find . -path '*subagents*' -name '*.jsonl' -mtime -7)\necho \"本体:\"; sum $(find . -maxdepth 2 -name '*.jsonl' -mtime -7)\n","bash","",[36,295,296,309,323,375,417,450,456,512],{"__ignoreMap":293},[297,298,301,305],"span",{"class":299,"line":300},"line",1,[297,302,304],{"class":303},"sz8Xr","cd",[297,306,308],{"class":307},"sdGka"," ~/.claude/projects\n",[297,310,312,316,320],{"class":299,"line":311},2,[297,313,315],{"class":314},"senZ8","sum",[297,317,319],{"class":318},"shFtX","()",[297,321,322],{"class":318}," {\n",[297,324,326,329,333,337,341,344,347,350,353,357,360,363,366,370,372],{"class":299,"line":325},3,[297,327,328],{"class":318},"  [",[297,330,332],{"class":331},"snbK4"," $#",[297,334,336],{"class":335},"stQ0i"," -eq",[297,338,340],{"class":339},"sM54T"," 0",[297,342,343],{"class":318}," ]",[297,345,346],{"class":318}," &&",[297,348,349],{"class":318}," {",[297,351,352],{"class":303}," echo",[297,354,356],{"class":355},"sMJiu"," \"",[297,358,359],{"class":307},"5m=0 1h=0（記録なし）",[297,361,362],{"class":355},"\"",[297,364,365],{"class":318},";",[297,367,369],{"class":368},"sHkkW"," return",[297,371,365],{"class":318},[297,373,374],{"class":318}," }\n",[297,376,378,381,384,387,390,393,395,398,400,403,406,409,411,414],{"class":299,"line":377},4,[297,379,380],{"class":314},"  grep",[297,382,383],{"class":331}," -ho",[297,385,386],{"class":355}," '",[297,388,389],{"class":307},"\"ephemeral_5m_input_tokens\":[0-9]*",[297,391,392],{"class":355},"'",[297,394,356],{"class":355},[297,396,397],{"class":307},"$@",[297,399,362],{"class":355},[297,401,402],{"class":335}," |",[297,404,405],{"class":314}," awk",[297,407,408],{"class":331}," -F:",[297,410,386],{"class":355},[297,412,413],{"class":307},"{s+=$2} END{printf \"5m=%d \", s}",[297,415,416],{"class":355},"'\n",[297,418,420,422,424,426,429,431,433,435,437,439,441,443,445,448],{"class":299,"line":419},5,[297,421,380],{"class":314},[297,423,383],{"class":331},[297,425,386],{"class":355},[297,427,428],{"class":307},"\"ephemeral_1h_input_tokens\":[0-9]*",[297,430,392],{"class":355},[297,432,356],{"class":355},[297,434,397],{"class":307},[297,436,362],{"class":355},[297,438,402],{"class":335},[297,440,405],{"class":314},[297,442,408],{"class":331},[297,444,386],{"class":355},[297,446,447],{"class":307},"{s+=$2} END{printf \"1h=%d\\n\", s}",[297,449,416],{"class":355},[297,451,453],{"class":299,"line":452},6,[297,454,455],{"class":318},"}\n",[297,457,459,462,464,467,469,471,474,477,480,483,486,488,491,493,496,498,501,503,506,509],{"class":299,"line":458},7,[297,460,461],{"class":303},"echo",[297,463,356],{"class":355},[297,465,466],{"class":307},"サブエージェント:",[297,468,362],{"class":355},[297,470,365],{"class":318},[297,472,473],{"class":314}," sum",[297,475,476],{"class":318}," $(",[297,478,479],{"class":314},"find",[297,481,482],{"class":307}," .",[297,484,485],{"class":331}," -path",[297,487,386],{"class":355},[297,489,490],{"class":307},"*subagents*",[297,492,392],{"class":355},[297,494,495],{"class":331}," -name",[297,497,386],{"class":355},[297,499,500],{"class":307},"*.jsonl",[297,502,392],{"class":355},[297,504,505],{"class":331}," -mtime",[297,507,508],{"class":331}," -7",[297,510,511],{"class":318},")\n",[297,513,515,517,519,522,524,526,528,530,532,534,537,540,542,544,546,548,550,552],{"class":299,"line":514},8,[297,516,461],{"class":303},[297,518,356],{"class":355},[297,520,521],{"class":307},"本体:",[297,523,362],{"class":355},[297,525,365],{"class":318},[297,527,473],{"class":314},[297,529,476],{"class":318},[297,531,479],{"class":314},[297,533,482],{"class":307},[297,535,536],{"class":331}," -maxdepth",[297,538,539],{"class":339}," 2",[297,541,495],{"class":331},[297,543,386],{"class":355},[297,545,500],{"class":307},[297,547,392],{"class":355},[297,549,505],{"class":331},[297,551,508],{"class":331},[297,553,511],{"class":318},[15,555,556],{},"使っているプランや設定によっては結果が変わるかもしれない。自分の環境で一度数えてみるのがいちばん確実だ。",[558,559,560],"style",{},"html pre.shiki code .sz8Xr, html code.shiki .sz8Xr{--shiki-default:#998418;--shiki-dark:#998418}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}html pre.shiki code .snbK4, html code.shiki .snbK4{--shiki-default:#A65E2B;--shiki-dark:#A65E2B}html pre.shiki code .stQ0i, html code.shiki .stQ0i{--shiki-default:#AB5959;--shiki-dark:#AB5959}html pre.shiki code .sM54T, html code.shiki .sM54T{--shiki-default:#2F798A;--shiki-dark:#2F798A}html pre.shiki code .sMJiu, html code.shiki .sMJiu{--shiki-default:#B5695977;--shiki-dark:#B5695977}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":293,"searchDepth":311,"depth":311,"links":562},[563,564,565,566,567,568],{"id":30,"depth":311,"text":31},{"id":112,"depth":311,"text":113},{"id":185,"depth":311,"text":186},{"id":254,"depth":311,"text":255},{"id":264,"depth":311,"text":264},{"id":283,"depth":311,"text":283},"dev",null,"「サブエージェントのプロンプトキャッシュは5分しか持たず、切れると定価がのしかかる」という話を、手元のセッションログで確かめた。TTL が本体1時間・サブエージェント5分なのは本当だった。ただし切れても定価には戻らない。本当に効くのは、1体ごとにキャッシュを作り直す初期費用のほうだった。","md",{},true,"/claude-code-subagent-cache-ttl",false,"2026-10-10T00:00:00.000Z",{"title":5,"description":571},"2026-10/2026-10-10/claude-code-subagent-cache-ttl",[581,232,582,583],"Claude Code","プロンプトキャッシュ","コスト","YpJ-do9ekC1N8iEXVb4Zss54li-EiN5Pgbaf7-sNXfw",[],[587,591,594,597,600],{"title":588,"path":589,"publishedAt":590},"計算モジュールの動画化：Excel画面再現とマインドマップを分割画面にまとめるまで","/sim-modules-video-split-mindmap","2026-10-11T00:00:00.000Z",{"title":592,"path":593,"publishedAt":577},"2026年10月10日の開発日記 - 講座3本の制作を引き継ぎファイルでつなぎ、Actionsの枠切れの原因を突き止めた","/2026-10-10-diary",{"title":595,"path":596,"publishedAt":577},"財務諸表のテキストを節ごとの動画にする：Claude Codeのサブエージェント5体で1〜5章の台本と画をそろえた","/fs-textbook-video-scenes",{"title":598,"path":599,"publishedAt":577},"Excelの人生計画モデルを計算モジュール講座に作り替える：Claude Code の3セッションを引き継ぎファイルでつないで19本の下書きまで","/lifeplan-sim-modules-course",{"title":601,"path":602,"publishedAt":603},"Excel講座のデューデリジェンス52件を git worktree で仕分け、サブエージェントで並行して直した記録","/excel-course-due-diligence-worktree-split","2026-10-06T00:00:00.000Z","https://log.eurekapu.com/og/blog/claude-code-subagent-cache-ttl.png?v=2026-10-10T00%3A00%3A00.000Z&title=Claude%20Code%20%E3%81%AE%E3%82%B5%E3%83%96%E3%82%A8%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E3%81%AF%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%8C5%E5%88%86%E3%81%A7%E5%88%87%E3%82%8C%E3%82%8B%E3%80%81%E3%81%AF%E6%9C%AC%E5%BD%93%E3%81%8B%E3%80%82%E6%89%8B%E5%85%83%E3%81%AE%E3%83%AD%E3%82%B0%E3%81%A7%E6%B8%AC%E3%81%A3%E3%81%9F&author=Kei%20Komatsu&sig=e8226b3433329193",1791766734801]