Claude Code は Anthropic のエージェント型コーディングソリューションである。Anthropic は自らが推奨する コンテキストエンジニアリング の手法のいくつかについて、これを実例として用いており、完全なデータ オブジェクトを一度もコンテキストに読み込むことなく、大規模なデータベースに対して複雑なデータ分析を実行するものと 説明している。モデルは対象を絞ったクエリを書き、その結果を保存し、head や tail といった Bash コマンドを 活用して大量のデータを分析する。

Anthropic は Claude Code がハイブリッドなコンテキスト戦略を採用していると特徴づけている。速度のために一部の データは事前に取得しつつ、それ以上の探索は自らの判断で自律的に進めるというものである。CLAUDE.md ファイルは 事前にそのままコンテキストへ投入される一方、glob や grep といったプリミティブによって環境内を移動し、必要な時点で ファイルを取得する。Anthropic によれば、これによって古くなったインデックスや複雑な構文木の問題を実質的に 回避できるという。

機能

Anthropic のドキュメントは Claude Code を、ターミナルで動作するエージェント型アシスタントであり、コーディングを 得意としつつも、コマンドラインから行うあらゆる作業を手助けできるものと説明している。タスクを与えられると、 コンテキストの収集、アクションの実行、結果の検証という 3 つのフェーズを通じて作業を進める。 ドキュメントによれば、これらのフェーズは互いに溶け合っており、Claude は直前のステップで得た知見から次の各ステップを 選び、ユーザーはいつでも割り込んで方向を修正できる。このループは、推論するモデルと行動するツールという 2 つの 構成要素によって駆動される。ドキュメントは Claude Code 自体を、モデルの周囲にあってツールを提供し、モデルが 見るコンテキストを管理する層と位置づけており、エージェント型ハーネスという用語が指すのはこの層だとしている (エージェントハーネス を参照)。組み込みツールは、ファイル操作、検索、実行、Web、コードインテリジェンス (最後のものはコードインテリジェンスプラグインを必要とする)の 5 つのカテゴリーに分類され、それに加えて サブエージェントを起動するツールとユーザーに質問するツールがある。

この説明によれば、あるディレクトリで claude を実行すると、プロジェクトのファイル、ターミナル、現在の git の状態、 CLAUDE.md(および他のコーディングエージェント向けに書かれた AGENTS.md。単独でも CLAUDE.md と 併せても読み込める)、そして作業しながら学んだことを保存するオートメモリにアクセスできるようになる。オートメモリに ついては、MEMORY.md の最初の 200 行または 25KB が各セッションの開始時に読み込まれる。同じループが 3 つの実行環境で 動作する。ローカル、Anthropic が管理する VM またはセルフホスト環境上のクラウド、そして Remote Control である。 Remote Control では、ブラウザがセッションを操作する一方で、実行とファイルはユーザーのマシン上に留まる。また、 ターミナル、デスクトップアプリ、IDE 拡張機能、Web、Slack、CI/CD パイプラインなど、複数のインターフェースの背後でも 同じループが動く。

各セッションは ~/.claude/projects/ 以下にプレーンテキストの JSONL ファイルとしてローカルに書き込まれ、セッション 同士は独立している。新しいセッションは新しいコンテキストウィンドウで始まる。--continue や --resume による 再開は同じ ID のままセッションを開き直し、--fork-session や /branch によるフォークはその履歴を新しいセッションに コピーする。ドキュメントによれば、コンテキストが埋まってくると Claude Code はまず古いツール出力を消去し、必要なら 会話を要約する。また、単一の巨大なファイルや出力が毎回コンテキストを埋め直してしまう場合には、数回試みた後に 自動コンパクションを停止してエラーを表示する。MCP のツール定義はデフォルトで遅延され、ツール検索を通じて 必要に応じて読み込まれる。安全機構としては 2 つが挙げられている。1 つはチェックポイントで、Claude がファイルを 編集する前にそのスナップショットを取り、Esc を 2 回押すと巻き戻せる。ただし、データベース、API、デプロイメント といったリモートシステム上のアクションはカバーできない。もう 1 つは Shift+Tab で切り替える パーミッションモード であり、ドキュメントは Auto、Manual、Accept edits、Plan を挙げている。

  • 大規模なデータセットに対する ジャストインタイムのコンテキスト取得。結果を保存する対象を絞ったクエリと、 大量のデータを丸ごと読み込まずに処理するための head や tail といった Bash プリミティブ。
  • glob と grep によるファイルシステムの移動。事前に構築されたインデックスからではなく、必要になった時点で ファイルを取得する。
  • CLAUDE.md ファイル。ハイブリッド戦略の固定部分として、事前にコンテキストへ投入される。
  • メッセージ履歴の コンパクション。履歴をモデルに渡して最も重要な詳細を要約・圧縮させ、 アーキテクチャ上の決定、未解決のバグ、実装の詳細は保持しつつ、冗長なツール出力やメッセージは破棄する。 エージェントはその後、圧縮されたコンテキストと直近にアクセスした 5 つのファイルを使って作業を続ける。 Anthropic によれば、これによってユーザーはコンテキストウィンドウの制限を気にすることなく継続性を得られる。
  • ToDo リスト。Anthropic はこれを 構造化ノートテイキング の一例として挙げている。
  • オンデマンドの計画モード。一部の競合エージェントより後に追加されたもので、エージェントが計画を生成し、 人間のレビューを待ってから先に進む。エージェント型ソフトウェアエンジニアリング:基盤となる柱と研究ロードマップ は これを、当初から計画ステップを備えていた Google の Google Jules と対比している。
  • 代替案同士ではなく別々の選択肢としてドキュメント化された一連の拡張機構。スキル(.claude/skills/ 以下の SKILL.md ファイル。ドメイン知識がすべての会話を占有しないようオンデマンドで読み込まれる。 Agent Skills を参照)、ワークフロー内の決まった時点でスクリプトを実行するフック (エージェントフック)、独自のコンテキストとツールセットを持ち .claude/agents/ 以下で定義される カスタムサブエージェント(サブエージェントアーキテクチャ)、MCP サーバー (Model Context Protocol)、そしてこれらのいくつかを束ねたプラグインである。
  • コンテキストの制約に対処しながら作業するためのセッション制御。無関係なタスクの間でリセットする /clear、 任意で焦点を指示できる /compact、そしてターンを開始するすべてのプロンプトで作成され、巻き戻しメニューから 復元できるチェックポイント。ドキュメントは、チェックポイントが追跡するのはファイル編集ツールを通じて行われた 変更のみであり、Bash や外部プロセスによる変更は記録されないこと、そしてこれが git の代わりにはならないことを 明言している。
  • claude -p "prompt" による非対話的な操作。プレーンテキスト、JSON、ストリーミング JSON の出力形式を備え、 CI パイプライン、pre-commit フック、多数のファイルにまたがるスクリプトによるファンアウトを想定している。

アーキテクチャ

Dive into Claude Code:現在および将来の AI エージェントシステムの設計空間 は、公開されている TypeScript ソースのバージョン 2.1.88 をもとに このシステムを記述している。その全体像についての要約は、中核はモデルを呼び出し、ツールを実行し、それを繰り返す 単純な while ループであり、コードの大部分はそのループを取り巻くシステムにある、というものである。本節の内容は すべて、同研究がそのバージョンで調べたコードについての解釈であり、Anthropic が述べるドキュメント化された挙動では ない。

同研究はこのシステムを、ユーザー、インターフェース、エージェントループ、パーミッションシステム、ツール、状態と 永続化、実行環境の 7 つの構成要素として示し、さらにサーフェス、コア、安全/アクション、状態、バックエンドの 5 つの 層として示している。同研究が挙げる 4 つのサーフェス、すなわち対話型 CLI、ヘッドレス CLI、Agent SDK、 IDE/デスクトップ/ブラウザは、いずれも同じループに入力を送るとされる。

安全性は 7 つの独立した層として説明されており、そのどれか 1 つでもリクエストをブロックできる。一律に拒否された ツールを、モデルが試みる前にモデルの視界から取り除くこと。拒否ルールを優先する評価であり、許可ルールのほうが 具体的であっても拒否ルールが許可ルールに優先すること。どのルールにも一致しないリクエストの基準を、有効な パーミッションモード(パーミッションモード を参照)が定めること。ルールシステムが許可するものでも 拒否できる、ML ベースのオートモード分類器。パーミッションシステムとは独立にファイルシステムとネットワークへの アクセスを制限するシェルのサンドボックス化。再開やフォークの際にセッションスコープのパーミッションを復元しない こと。そしてフックベースのインターセプトである。同研究の集計では、パーミッションモードは最大 7 つ、組み込み ツールは最大 54 個(うち 19 個は無条件、35 個は機能フラグとユーザー種別に依存)、フックパイプラインは 27 種類の イベントにわたり、そのうち 5 種類が安全関連、22 種類がライフサイクルとオーケストレーションの目的に供される。

コンテキストの逼迫は、モデル呼び出しのたびにその前に実行される 5 つの逐次的な整形処理のパイプラインによって 対処される。予算削減、snip、microcompact、コンテキスト折りたたみ、自動コンパクションである。委任も他のすべてと 同じツールファクトリーを通じて行われる。エージェントツールは隔離されたコンテキストウィンドウでループに再突入し、 親には要約だけを返す。同研究はこれを、CLAUDE.md の遅延読み込み、遅延されたツールスキーマ、ツール結果ごとの予算と 並べて、コンテキストを拘束条件として扱うことから導かれる設計判断として挙げている。

永続化は 3 つの独立したチャネルからなる。セッションごとに 1 ファイルをプロジェクト固有のパスに置く、大部分が 追記専用の JSONL セッショントランスクリプト。ユーザーのプロンプトのみを保持するグローバルなプロンプト履歴 ファイル。そして各サブエージェントの会話のための別個のサイドチェーンファイルである。同研究は追記専用の JSONL 形式を、クエリ能力よりも監査可能性と単純さを優先した意図的な選択と読んでいる。記録されたすべてのイベントは 人間が読め、バージョン管理でき、専用のツールなしに検査できるからであり、データベースを用いたストアであれば より豊かなクエリが可能になる代わりに、デプロイ上の依存関係と透明性を犠牲にすることになる。また同研究は、 Claude Code がチェックポイントと呼ぶものは汎用のチェックポイントストアではなく、ファイルシステムの変更を元に戻す ためのファイル履歴スナップショットであること、そして再開とフォークが意図的にセッションスコープのパーミッションを 復元せず、セッションを隔離された信頼ドメインとして扱うことで、古い信頼判断が変化したコンテキストに持ち込まれない ようにしていることも指摘している。

同研究はこれらすべてを、設計に帰せられる 5 つの人間的価値、すなわち人間の意思決定権限、安全性/セキュリティ/ プライバシー、信頼できる実行、能力の増幅、文脈への適応性から導かれるものと位置づけ、13 の設計原則を経て具体的な 実装上の選択へとたどっている。同研究自身の結びの懸念は、このシステムはプログラマーやエンドユーザーの短期的な 能力を増幅する一方で、長期的な人間の向上、より深い理解、持続的なコードベースの一貫性を明示的に支える仕組みは 限られている、というものである。

作業上のプラクティス

Anthropic のベストプラクティスのドキュメントは、明示された単一の制約を軸にガイダンスを構成している。すなわち、 コンテキストウィンドウは会話全体、つまりすべてのメッセージ、読み込んだすべてのファイル、すべてのコマンド出力を 保持し、すぐに埋まり、埋まるにつれてモデルの性能が低下する、というものである。残りの助言の大半は、そこから 導かれるものとして示されている。

最初の推奨は、エージェントが実行できるチェック、すなわちテストスイート、ビルドの終了コード、リンター、デザインと 比較するスクリーンショットなどを与え、人間を介さずにループが閉じるようにすることである。そのチェックを 組み込む方法として、拘束力が強くなる順に 4 つを挙げている。プロンプトで求めること、毎ターン後に再評価される セッションの目標にすること、Stop フックで強制すること、そして別のサブエージェントに結果の反証を試みさせる ことである。また、成功したという主張ではなく証拠を求めることも推奨しており、その理由として、証拠をレビューする ほうが検証をやり直すより速いことを挙げている。

2 つ目の推奨は、計画モードによって探索と計画を実装から切り離すことである。ただし、計画はオーバーヘッドを 伴うので、変更が一文で説明できる場合は省略すべきだと注意している。CLAUDE.md については網羅性よりも簡潔さを 推奨し、「これを削除したら Claude がミスをするか?」という判定基準を示すとともに、肥大化したファイルは実際の 指示が無視される原因になると警告している。その実践的な診断として、ルールで禁じているにもかかわらず Claude が ある行動を繰り返すなら、ファイルがおそらく長すぎてルールが埋もれていると述べている。また、Claude が繰り返し 無視する単一の指示については、その行だけに強調を加えることを提案している。多くの行を強調すると、どれも 目立たなくなるからである。繰り返し現れる失敗パターンとして 5 つを挙げている。無関係なタスクを 1 つのセッションで 混在させること、より良いプロンプトでやり直す代わりに何度も修正を重ねること、過剰に詳細な CLAUDE.md、もっともらしく 見える出力を検証せずに信頼すること、そしてコンテキストを埋め尽くす範囲の定まらない調査である。ドキュメントは 最後に、これらすべてを規則ではなく出発点として示し、それぞれが当てはまらないのはどんなときかについての直感を 養うよう助言している。

セッションとコンテキストの設定

Claude Code のトークン節約ガイド:1M コンテキストは慎重に使え、新しいセッションを開かないのも常に開くのも正しくない は第 2 のプラクティス群を記述しているが、それはエージェントに何を させるべきかではなく、セッションの入力がどのように組み立てられ、課金されるかを軸に構成されている。その出発点は、 セッションが大きな不変のプレフィックス、すなわちシステム指示、ツール定義、CLAUDE.md、プロジェクト設定を 抱えており(同記事はこれをおよそ 50,000 トークンとしている)、トークンキャッシュ がそれをカバーするのは セッションがアクティブな間だけだということである。同記事は、キャッシュの保持期間がメインエージェントでは 1 時間、 サブエージェントでは 5 分であること、そしてキャッシュはモデルごとに別々に保持されるため、セッションの途中で モデルを切り替えるとゼロから再構築されることを報告している。

そこからいくつかの制御が導かれる。同記事は ~/.claude/settings.json の 2 つの環境設定を報告している。1M コンテキスト ウィンドウを無効にする CLAUDE_CODE_DISABLE_1M_CONTEXT と、セッションがコンパクションを行うしきい値を設定する CLAUDE_CODE_AUTO_COMPACT_WINDOW であり、どちらかを選ぶのではなく、大きいウィンドウを維持しつつ控えめに コンパクションを行うことを推奨している。これとは別に、ユーザーのグローバル設定ではなくプロジェクトレベルの設定として、 .claude/settings.json の permissions.deny を、node_modules、ビルド出力、大きなデータファイルといったパス全体を ファイル探索、検索結果、直接の読み込みから除外する手段として報告している。その理由は、明示的なパスを与えられて いても、エージェントはそうしなければ無関係なファイルを読み直すためにターンを費やしてしまうからだという。同記事が 記録している細かな仕組みは 2 つある。CLAUDE.md 内の HTML コメントはファイルが注入される前に取り除かれるため、 メンテナー向けのメモはコストがかからないこと。そしてスキルはコンテキストに保持されるのではなく呼び出されたときに 読み込まれることであり、これが状況に応じた指示を CLAUDE.md からスキルへ移すことを推奨する理由になっている。 ただし同記事は同じ文脈で、スキルは多ければ良いというものではなく、多数のスキルやエージェントを読み込むこと自体が 隠れた消耗になるという注意も述べている。

これらはドキュメントではなく、ベンダーの発言やコミュニティの報告を伝える実践者の記述であり、同記事自身も、この 助言のきっかけとなった消費挙動は執筆時点でまだ調査中だったと記している。

エフォートのデフォルトとその見直し

最近の Claude Code の品質に関する報告についての最新情報 は、Claude Code における 推論エフォート(Reasoning Effort) の設定方法を記述している。エフォートレベルはモデルごとにテスト時計算量の曲線上の 点として較正され、プロダクト層はそのうちの 1 つをデフォルトとして選んで effort パラメータとして Messages API に 送り、/effort で残りのレベルを選べるようにしている。同記事は、Claude の品質が低下したという 1 か月にわたる報告に ついての Anthropic のポストモーテムであり、その原因を単一の退行ではなく互いに無関係な 3 つの変更にたどっている。 いずれも 2026 年 4 月 20 日時点で、バージョン 2.1.116 において解決済みである。3 つの変更は Claude Code、 Claude Agent SDK、Claude Cowork に影響し、API には影響しなかったとされている。以下は、その記述のうち Claude Code に 関わる部分である。

エフォートのデフォルトは 3 つのうちの 1 つ目である。インターフェースがフリーズしたように見えるほど思考時間が 長くなることが時折あった問題に対処するため、2026 年 3 月 4 日に high から medium に引き下げられたが、 ユーザーのフィードバックを受けて 4 月 7 日に元に戻された。現在のデフォルトは Opus 4.7 では xhigh、それ以外の すべてのモデルでは high とされている。Anthropic は、まず通知、インラインのエフォート選択、ultrathink の復活を 試みたが、ほとんどのユーザーは結局デフォルトのままだったと報告している。

2 つ目は、Anthropic が Claude Code のコンテキスト管理、Anthropic API、拡張思考の交差する部分に位置づける 不具合である。3 月 26 日にリリースされた最適化は、1 時間以上アイドル状態だったセッションから古い思考を一度だけ 消去し、セッション再開のコストを減らすことを意図していた。ところが実装ではセッションの残りの期間、毎ターン 消去してしまい、エージェントは自分がなぜその選択をしたのかについての記憶を次第に失いながら作業を続けることに なった。Anthropic によれば、これは物忘れ、繰り返し、奇妙なツール選択として表面化し、その結果生じたキャッシュ ミスが、使用量の上限が予想より早く消費されるという別の報告に対する最も有力な説明であり、4 月 10 日に バージョン 2.1.101 で修正された。発見までに 1 週間以上かかった理由についての Anthropic 自身の説明は、上述の アーキテクチャと併せて記録しておく価値がある。この変更は複数の人間と自動によるコードレビュー、ユニットテストと エンドツーエンドテスト、自動検証、ドッグフーディングを通過しており、さらに無関係な 2 つの変更によって当初は問題の 再現が困難だった。メッセージのキューイングに関する社内限定のサーバーサイドの実験と、思考の表示方法に関する 直交する変更であり、Anthropic によれば後者がほとんどの CLI セッションでこのバグを抑制していた。

3 つ目は、ツール呼び出しの間のテキストを 25 語、最終応答を 100 語に制限するシステムプロンプトの指示であり、 Opus 4.7 の冗長さを抑えるために 4 月 16 日に追加された。この指示はリリース前に数週間の社内テストを通過していたが、 調査の過程でより広範な評価セットに対して追加のアブレーションを実施したところ、そのうちの 1 つの評価で Opus 4.6 と 4.7 の両方に 3% の低下が見られ、4 月 20 日に取り消された。Anthropic が付け加えたプロセス上の 取り組み、すなわちシステムプロンプトのあらゆる変更に対するモデルごとの広範な評価スイート、アブレーションの継続、 プロンプト変更をレビュー・監査するためのツール、モデル固有の変更をその対象モデルに限定する CLAUDE.md のルール、 そして知能とのトレードオフが生じうるものについての段階的ロールアウトを伴うソーク期間は、Claude Code 自体の 開発に適用されるものとされている。

導入とエコシステム

サーフェス、インストール、スケジューリング

Anthropic の概要ドキュメントは Claude Code を、コードベースを読み、ファイルを編集し、コマンドを実行し、開発 ツールと統合するエージェント型コーディングツールと説明し、動作するサーフェスとして、ターミナル、IDE 拡張機能 (VS Code と、CLI を別途インストールする必要がある JetBrains プラグイン)、デスクトップアプリ、Web を挙げている。 すべてのサーフェスは同じ基盤エンジンに接続しているため、リポジトリの CLAUDE.md ファイル、設定、MCP サーバーは そのすべてで機能するとされている。ほとんどのサーフェスでは Claude のサブスクリプションまたは Anthropic Console の アカウントが必要とされる一方、ターミナル CLI、VS Code、JetBrains はサードパーティのプロバイダーにも対応している。

同じページは CLI の 3 つのインストール方法を示している。ネイティブインストーラーはバックグラウンドで自身を更新 するが、Homebrew と WinGet によるインストールはそうではなく、手動でアップグレードする必要がある。Homebrew には 2 つの cask がある。claude-code は、ドキュメントによれば通常約 1 週間遅れで、重大な退行のあるリリースを スキップする安定チャネルを追跡し、claude-code@latest は新しいバージョンがリリースされ次第それを受け取る。 ネイティブの Windows では、Claude Code が Bash ツールを使えるよう Git for Windows が推奨されており、それがない場合 Claude Code はシェルツールとして PowerShell を使用する。

対話的な利用にとどまらず、ドキュメントはこれを Unix 流に組み合わせ可能なものとして示している。ログを claude -p に パイプで渡す、CI で呼び出す、他のツールと連結するといった使い方であり、コードレビューと issue のトリアージを 自動化する手段として GitHub Actions と GitLab CI/CD を挙げている。定期的な作業については 3 つの仕組みを区別している。 クラウドで実行されるためユーザーのコンピューターの電源が切れていても継続し、API 呼び出しや GitHub のイベントに よってトリガーすることもできる Routines、ユーザーのマシン上で実行されローカルのファイルやツールにアクセスできる Desktop のスケジュールタスク、そして CLI セッション内でプロンプトを繰り返し、手軽なポーリングに使う /loop である。 作業をサーフェス間で移すこともできる。Remote Control を通じてスマートフォンやブラウザから継続する、Web や モバイルアプリで始めて claude --teleport でターミナルに取り込む、/desktop でターミナルからデスクトップアプリに 引き継ぐ、といった形である。完全にカスタムなワークフローについては、Claude Code のツールと機能の上にエージェントを 構築する手段として Agent SDK(Claude Agent SDK)を示している。

エージェント型ソフトウェアエンジニアリング:基盤となる柱と研究ロードマップ は、Claude Code のアーキテクチャがモノリシックな エージェントから、特定のタスクのために専門化したサブエージェントを起動するマルチエージェント型へと移行したと 説明している。同論文はまた、開発者に大きな制御と柔軟性を与える一方で、やり取りが一過性のものになってしまう強力な コマンドライン型エージェントプラットフォームの例としてこれを挙げている。同論文の説明によれば、人間とエージェントの 間の計画、明確化、洗練といった会話のコンテキストはターミナルのスクロールバックバッファにしか存在せず、 エージェントの推論や人間の指示が体系的にアーカイブされることはないため、同論文の言葉を借りれば、設計判断の変遷を 再構成したり特定の結果を再現したりすることはほぼ不可能になる。

この点で 2 つの情報源は食い違っており、本ページはソースレベルの研究のほうに従う。同論文はより広い論点を主張する中で、 いくつかのプラットフォームのうちの 1 つの例として Claude Code に触れているにすぎないのに対し、 Dive into Claude Code:現在および将来の AI エージェントシステムの設計空間 はシステム自体の永続化設計を主題の 1 つとして扱い、上記のアーキテクチャの 節で述べた永続的な記録、すなわちイベントの発生とともにディスクに書き込まれるセッショントランスクリプト、グローバルな プロンプト履歴、サブエージェントごとのサイドチェーンを記録している。同研究が未解決のまま残しているのは、アーカイブが 存在するかどうかではなく、静的な指示の階層と単一セッションのトランスクリプトとの間に何が位置するかである。 セッションをまたぐ永続化は同研究が挙げる将来の研究の 6 つの方向性の 1 つであり、静的な指示でも単一セッションの トランスクリプトでもない永続的な状態という問題を、未解決のものとして挙げている。