Claude

Claude Code 2.1.0の変更点|context: forkの仕組みと現行仕様との違い

Claude Code 2.1.0の変更点|context: forkの仕組みと現行仕様との違い

Claude Code 2.1.0は2026年1月7日にnpmで公開された版で、公式CHANGELOGの2.1.0節には109項目が並んでいます。設定ファイルの書き方に関わる変更のうち、本記事で取り上げるのは、スキルをサブエージェントで動かす context: fork、スキルのホットリロード、フロントマターの hooks、Bash権限のワイルドカード、language 設定の5つです。この記事では2.1.0で入った機能を、2026年10月時点の公式ドキュメント(v2.1.287)と突き合わせて、その後に変わった点まで含めて整理します。現在の最新版と更新手順はClaude Codeの最新バージョンと確認・アップデート手順にまとめています。

まとめ|Claude Code 2.1.0で入った機能と現在の扱い

  • 公開日:2.1.0のnpm公開は2026年1月7日(UTC 02:43)。直前の版は2025年12月22日の2.0.76で、同じ1月7日のうちに2.1.1が出ています。
  • context: fork:SKILL.mdの本文をプロンプトにしてサブエージェントを起動します。会話履歴は渡りません。v2.1.218からはバックグラウンド実行が既定になり、待ちたい場合は background: false を書きます。
  • /forkとは別物:会話ごと複製する「フォーク」は、現行では /subtask(v2.1.212以降)です。名前が似ているだけで、context: fork は会話を引き継ぎません。
  • ホットリロード:~/.claude/skills/ と .claude/skills/ のSKILL.mdは再起動なしで反映されます。セッション開始後に作ったトップレベルのskillsディレクトリは監視されないため、/reload-skills(v2.1.152以降)で読み直します。
  • フロントマターのhooks:スキルに書いたフックは、スキル呼び出し後もセッション終了まで動き続けます。once: true が効くのはスキルのフロントマターだけです。
  • Bashワイルドカード:2.1.0のCHANGELOGが例に挙げた Bash(git * main) は、v2.1.246から起動時に警告が出る書き方になりました。* はサブコマンドの後ろに置きます。

2.1.0で追加された主な機能と2026年10月時点の状態

2.1.0の追加項目は、その後の版で既定値や名前が変わったものが少なくありません。2.1.0当時の解説記事をそのまま設定に写すと、動きが記事と合わない箇所が出ます。主要な項目の現状を表にしました。

2.1.0で追加 その後の変化 変化した版
context: fork バックグラウンド実行が既定に v2.1.218
スキルの agent フィールド 省略時は general-purpose(変化なし) -
スキルのホットリロード 監視外のフォルダ用に /reload-skills v2.1.152
スキルのホットリロード 変更したスキルだけを再通知 v2.1.174
Bashのワイルドカード権限 サブコマンド前の * に起動時警告 v2.1.246
Task(AgentName) 構文 Taskツールが Agent に改称(旧記法も有効) v2.1.63
フロントマターの hooks プロジェクトのサブエージェントはフォルダ信頼が必要に v2.1.218
language 設定 セッション名と音声入力の言語にも適用 -
/teleport クラウドセッション内で打つと手元用のコマンドを返す v2.1.223

2.1.0の変更には、ほかに Ctrl+B でのバックグラウンド化の統合、MCPの list_changed 通知への対応、対話モードでの --tools フラグ、/plan コマンド、Vimモーションの追加があります。デバッグログにOAuthトークンやAPIキーが出力されるセキュリティ上の問題の修正もこの版です。2.0系から上げていない環境は、この修正のためだけでも更新する理由になります。

context: forkでスキルをサブエージェントとして実行する仕組み

context: fork は、SKILL.mdのフロントマターに1行足すと、そのスキルをメインの会話とは別のコンテキストで実行する指定です。2.1.0のCHANGELOGでは「スキルとスラッシュコマンドをフォークしたサブエージェントのコンテキストで実行する」機能として追加されました。サブエージェントの途中のツール呼び出しはメインの会話に残らず、結果だけが戻ります。

SKILL.mdへの書き方とagentフィールドの選び方

公式ドキュメントの例は、読み取り専用の Explore エージェントでコード調査を走らせるスキルです。フロントマターの下の本文が、そのままサブエージェントへのタスクになります。

---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---

Research $ARGUMENTS thoroughly:

1. Find relevant files using Glob and Grep
2. Read and analyze the code
3. Summarize findings with specific file references

agent には組み込みの Explore・Plan・general-purpose か、.claude/agents/ に置いたカスタムサブエージェントの名前を書けます。省略すると general-purpose です。agent で決まるのはモデル・ツール・権限の組み合わせで、スキル側の model フィールドを書いた場合は、フォーク先サブエージェントのモデル指定として扱われます。

サブエージェントが受け取る情報と受け取らない情報

フォークされたサブエージェントが見るのは、エージェント種別のシステムプロンプトとSKILL.mdの本文、それにCLAUDE.mdです。ただし Explore と Plan はコンテキストを小さく保つためにCLAUDE.mdとgit statusを読み込まないので、agent: Explore のスキルはSKILL.mdとエージェント自身のプロンプトしか持ちません。

メインの会話でそれまでに話した内容、読んだファイル、呼び出したスキルは渡りません。「さっき直したバグの続きを確認して」のように会話の文脈に頼る指示はサブエージェント側で意味を失うため、スキル本文だけで完結する手順を書く必要があります。

v2.1.218で既定がバックグラウンド実行に変わった点

2.1.0からv2.1.217までは、フォークしたスキルが終わるまでそのターンが止まっていました。v2.1.218で既定がバックグラウンド実行になり、作業を続けている間に結果が会話へ届く動きに変わっています。従来どおり結果を待たせたいスキルには、フロントマターに background: false を書きます(v2.1.218以降で有効)。

次の場合は background: false を書かなくても結果を待ちます。

  • -p を付けた非対話モードとAgent SDKからの実行
  • 環境変数 CLAUDE_CODE_DISABLE_BACKGROUND_TASKS を 1 にしたとき
  • 同じスキルの前回の呼び出しがまだ動いているとき
  • スケジュールタスクがそのスキルをプロンプトとして起動したとき

-p と --output-format stream-json でフォークしたスキルの途中経過を拾っている場合は、版に注意が要ります。/<スキル名> をプロンプトに渡して起動したフォークのターンがstream-jsonとSDKに流れない不具合はv2.1.287で、--forward-subagent-text がフォークしたスキルのサブエージェントのメッセージを落とす不具合はv2.1.275で修正されました。それより前の版では、出力が欠けていてもスキル側の問題とは限りません。

バックグラウンドで動くフォークには、バックグラウンドのサブエージェント向けの絞り込まれたツールセットが適用されます。さらに、その編集はセッションのチェックポイントの外で行われるため、/rewind では取り消せません。ファイルを書き換えるスキルは、git で戻せる状態にしてから呼び出すのが安全です。

context: forkと会話のフォーク(/subtask・/fork)の違い

公式ドキュメントのSkillsのページは「名前に反して、context: fork のスキルは現在の会話のフォークでは実行されない」と注記しています。Claude Codeには、会話履歴をまるごと引き継ぐ別の「フォーク」があり、2.1.0以降にコマンド名が2回入れ替わっています。日本語の解説で両者が混ざりやすいのはこのためです。

方式 会話履歴 結果の戻り先
スキルの context: fork 渡らない 元の会話
/subtask(会話を引き継ぐサブエージェント) すべて引き継ぐ 元の会話
/fork(v2.1.212以降) コピーする 別のバックグラウンドセッション
/branch 分岐点までを保持 分岐先へ切り替え

コマンド名の変遷は次のとおりです。v2.1.77で当時の /fork が /branch に改称され、v2.1.161からv2.1.211までは /fork が「会話を引き継ぐサブエージェントの起動」でした。v2.1.212でその役割が /subtask に移り、/fork は会話を新しいバックグラウンドセッションへ複製するコマンドになっています。ただしエージェントビューをオフにした環境では /subtask が使えず、/fork が従来どおり会話を引き継ぐサブエージェントを起動します。Claude自身がフォークを起動できる「fork mode」は、v2.1.232から対話セッションで既定オンです(-p とAgent SDKでは既定オフで、CLAUDE_CODE_FORK_SUBAGENT=1 で有効化)。

使い分けの基準は、タスクが会話の文脈に依存するかどうかです。レビュー手順・調査手順のように毎回同じ指示で完結する作業は context: fork のスキルにし、「ここまでの議論を踏まえてテストケースを書いて」のような作業は /subtask で渡します。

なお、2026年前半の解説には「サブエージェントはサブエージェントを起動できない」と書かれたものがあります。現行ドキュメントでは、サブエージェントはメインの会話から3階層下まで自分のサブエージェントを起動でき、上限は CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH で変えられます。

context: forkを付けないほうがよいスキル

context: fork は付ければ得をする設定ではありません。次の3種類のスキルでは外すべきです。

  • 規約やガイドラインだけを書いたスキル:「このAPI規約に従う」のようにタスクを含まない本文をフォークすると、サブエージェントは実行すべき指示を持たず、意味のある出力なしで戻ります。公式ドキュメントが警告として明記している失敗です。参照用の知識はフォークせず、メインの会話に読み込ませます。
  • 直前のやり取りを前提にするスキル:会話履歴が渡らないため、「会話で先ほど選んだ変更だけをレビュー」のように、対象の特定を過去のやり取りに依存するスキルは、そのままでは対象を判断できません。対象を $ARGUMENTS で明示するか、/subtask を使います。
  • 編集結果をすぐ取り消したい作業:バックグラウンドのフォークによる編集は /rewind の対象外です。試行錯誤しながら書き換える作業は、フォークせずメインのセッションで行います。

スキルのホットリロードが効く範囲と再起動が要るケース

2.1.0で、~/.claude/skills と .claude/skills に作成・変更したスキルが、セッションを再起動せずに使えるようになりました。現行ドキュメントでは、起動時に --add-dir で渡したディレクトリ内の .claude/skills/ も監視対象です。スキルの削除も現在のセッションの /skills から即座に消えます。

自動では反映されないのは次の3つです。

  • セッション開始時に存在しなかったトップレベルのskillsディレクトリを新しく作った場合(/reload-skills で読み直す。監視対象にはならないため、以後の変更のたびに実行が必要)
  • --add-dir のディレクトリ内の .claude/commands/ と .claude/agents/ の変更(再起動が必要)
  • プラグインを兼ねるスキルフォルダの hooks/・.mcp.json・agents/・output-styles/ の変更(/reload-plugins が必要)

監視対象はSKILL.mdのテキストで、bareモードではホットリロード自体が働きません。スキルの書き方と置き場所の全体はClaude SkillsとSKILL.mdの書き方、旧 .claude/commands 形式との関係はClaude Codeカスタムコマンドの作り方で扱っています。

スキル・エージェントのフロントマターに書くhooksとonce: true

フック機能そのものは2.1.0より前からsettings.jsonで使えました。2.1.0で加わったのは、エージェントとスキル(スラッシュコマンドを含む)のフロントマターにフックを書ける機能と、一度だけ動かす once: true です。書式はsettings.jsonのフックと同じです。次の例の ./scripts/security-check.sh は別途用意するスクリプトで、この設定だけではセキュリティチェックの処理は実装されません。

---
name: secure-operations
description: Perform operations with security checks
hooks:
  PreToolUse:
    - matcher: "Bash"
      hooks:
        - type: command
          command: "./scripts/security-check.sh"
---

登録されている期間は、書いた場所で異なります。

  • スキルのフロントマター:スキルが呼び出された時点で登録され、そのスキルのターンが終わった後もセッション終了まで動き続けます。一度だけでよいフックには once: true を付けます。
  • サブエージェントのフロントマター:そのサブエージェントの実行中だけ動きます。ここに書いた Stop は SubagentStop に変換されます。

2.1.0のCHANGELOGは once: true を「フックの設定」として紹介していますが、現行ドキュメントではスキルのフロントマターに書いたフックでしか効かず、settings.jsonとエージェントのフロントマターでは無視されます(Hooksリファレンスの once の項)。また、失敗・exit code 2でのブロック・タイムアウトで終わった実行は「成功」に数えられず、フックは残ります。

もう一点、プロジェクトのサブエージェントに書いたフックは、そのフォルダのワークスペース信頼ダイアログを承認するまで動きません(-p のセッションは承認に数えられません)。v2.1.218より前は、信頼していないフォルダからも動いていました。フックのイベント一覧と終了コードの扱いはClaude Code Hooksの設定方法を参照してください。

Bashツール権限のワイルドカード指定と起動時警告

2.1.0で、Bashの権限ルールに * をどの位置にも書けるようになりました。CHANGELOGの例は Bash(npm *)・Bash(* install)・Bash(git * main) の3つです。このうち Bash(git * main) は、現在では避けるべき書き方になっています。

* はスペースを含む任意の文字列に一致するため、Bash(git * main) は git merge main だけでなく git push origin main にも、git に任意のプログラムを実行させる -c オプションを挟んだ git -c core.fsmonitor=<script> diff main にも一致します。v2.1.246で、サブコマンドより前に * を置いたallowルールには起動時に警告が出るようになりました。一致例の一覧は公式ドキュメントの権限設定のページにあり、次の表はそこから抜き出したものです。

ルール 一致する例 一致しない例
Bash(git log * main) git log -5 main git log main
Bash(git * main) git push origin main git log
Bash(ls *) ls -la、ls lsof
Bash(ls*) ls -la、lsof -
Bash(* --help *) npm --help x npm --help

表から読み取れる規則は3つです。末尾の * の前のスペースはルールの一部で、Bash(ls *) は lsof に一致しません。末尾の * がルール内で唯一のワイルドカードなら、引数なしの ls にも一致します。旧来の :* は末尾に置いたときだけ * と同じ意味になり、Bash(git:* push) のように途中に置くとコロンが文字として扱われて一致しません。

許可ダイアログで「今後は確認しない」を選ぶと、スペース区切りの形式でルールが書き込まれます。allow・deny・askの書式と設定ファイルの優先順位はClaude Codeの使い方|導入から権限とCLAUDE.md設定まで実務手順、パーミッションモードとの関係はClaude Codeのパーミッションモードの違いと設定方法で解説しています。

language設定・エージェント無効化・/teleportの現行仕様

language設定による日本語応答の指定

2.1.0で追加された language 設定は、Claudeの応答言語を既定で英語以外にする項目です。どの設定ファイルにも書けます。

{
  "language": "japanese"
}

設定リファレンスによると、値はチェックされず、書いた文字列のまま「常にこの言語で応答する」という指示としてClaudeに渡されます。綴りを間違えてもエラーにはなりません。同じ値は音声入力の言語と自動生成されるセッション名にも使われ、音声入力の側には対応言語の決まった一覧があります。

Task(AgentName)からAgent(…)への改称

2.1.0では、settings.jsonの権限か --disallowedTools で Task(AgentName) と書くと、特定のサブエージェントを無効化できるようになりました。v2.1.63でTaskツールはAgentに改称され、現行ドキュメントの書き方は Agent(Explore) です。既存の Task(...) は別名として引き続き動きます。新しく書く設定は Agent(...) に揃えておくと、ドキュメントと照合しやすくなります。

/teleportと/remote-envの利用条件

/teleport(別名 /tp)は、クラウドセッション(v2.1.274で画面上の呼び名が「Claude Code on the web」から変更)を手元のターミナルに取り込むコマンドで、claude.aiのサブスクリプションが必要です。取り込むとリポジトリの一致を確認したうえでクラウド側のブランチをチェックアウトし、会話履歴を読み込みます。方向は一方通行で、CLIから既存のターミナルセッションをWebへ送ることはできません。/remote-env はクラウドエージェントの既定の実行環境を選ぶコマンドです。

よくある質問

Claude Code 2.1.0はいつリリースされましたか?

npmへの公開は2026年1月7日(UTC 02:43)です。直前の版は2025年12月22日公開の2.0.76で、翌版の2.1.1も同じ1月7日に公開されています。

context: forkを付けたスキルに会話履歴は引き継がれますか?

引き継がれません。サブエージェントが受け取るのはSKILL.mdの本文とエージェント種別のシステムプロンプト、CLAUDE.md(ExploreとPlanを除く)です。会話の文脈を渡したい場合は /subtask で会話ごとフォークします。

context: forkとagentsディレクトリのサブエージェントはどう違いますか?

context: fork はスキル本文をタスクにして、agent で指定した種別のエージェントに実行させます。.claude/agents/ のサブエージェントは本文がシステムプロンプトになり、タスクはClaudeの委任メッセージで渡されます。どちらも会話履歴は持たずに始まります。

スキルを編集したらClaude Codeの再起動は必要ですか?

~/.claude/skills/ と .claude/skills/ の中のSKILL.mdであれば不要です。セッション開始後に新しくトップレベルのskillsディレクトリを作った場合は /reload-skills を実行し、--add-dir 先の .claude/commands/ や .claude/agents/ を変更した場合は再起動します。

Claude Codeの最新バージョンはいくつですか?

2.1系で更新が続いており、2026年10月2日時点のnpmのlatestタグは2.1.287、stableタグは2.1.285です。確認コマンドとアップデート手順はClaude Codeの最新バージョンと確認・アップデート手順にまとめています。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2025.02.27 コラム トラッキングビーコン(Webビーコン)とは?仕組み・用途・確認と対策を徹底解説
  2. 2026.10.27 テックブログ Brotli 脆弱性:CVE-2026-111497の影響確認とNode.js・Python・.NETの更新手順
  3. 2026.07.09 テックブログ Muse Imageとは?Metaの画像生成AIの使い方・API料金(1枚0.01ドル)と日本での提供状況【2026年10月】
  4. 2026.10.27 テックブログ Joshin(ジョーシン)不正アクセス:最大600万件の対象とサブスク初期パスワードの対処
  5. 2026.10.21 テックブログ ユミルリンク不正アクセス第二報で延べ5,162万件:Cuenote FC利用企業と受信者の確認点

RELATED POSTS 関連記事

目次