---
title: "Claude Code 2.1.0の変更点｜context: forkの仕組みと現行仕様との違い"
url: "https://www.issoh.co.jp/tech/details/10536/"
published: 2026-01-09
updated: 2026-10-02
categories: ["Claude"]
publisher: "株式会社一創"
---

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

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

## まとめ｜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のページ](https://code.claude.com/docs/en/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の書き方](/tech/details/9396/)、旧 `.claude/commands` 形式との関係は[Claude Codeカスタムコマンドの作り方](/tech/details/7071/)で扱っています。

## スキル・エージェントのフロントマターに書く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リファレンス](https://code.claude.com/docs/en/hooks)の `once` の項）。また、失敗・exit code 2でのブロック・タイムアウトで終わった実行は「成功」に数えられず、フックは残ります。

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

## 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ルールには起動時に警告が出るようになりました。一致例の一覧は[公式ドキュメントの権限設定のページ](https://code.claude.com/docs/en/permissions)にあり、次の表はそこから抜き出したものです。

| ルール                    | 一致する例                  | 一致しない例         |
| ---------------------- | ---------------------- | -------------- |
| `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設定まで実務手順](/tech/details/17375/)、パーミッションモードとの関係は[Claude Codeのパーミッションモードの違いと設定方法](/tech/details/11246/)で解説しています。

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

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

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

```
{
  "language": "japanese"
}
```

[設定リファレンス](https://code.claude.com/docs/en/settings-reference)によると、値はチェックされず、書いた文字列のまま「常にこの言語で応答する」という指示として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の最新バージョンと確認・アップデート手順](/tech/details/10625/)にまとめています。

## 関連記事

- [Claude Codeの最新バージョンは2.1系｜確認方法・アップデート手順とstable版の違い](/tech/details/10625/)
- [Claude Skillsとは？SKILL.mdの書き方とclaude.ai・Claude Code・APIでの使い方【2026年最新】](/tech/details/9396/)
- [Claude Code Hooksの設定方法｜全33イベント一覧とsettings.jsonの書き方【2026年9月版】](/tech/details/9864/)
- [Claude Codeのパーミッションモードの違いと設定方法｜auto・acceptEdits・bypassPermissionsの使い分け](/tech/details/11246/)
- [Claude Codeの使い方｜導入から権限とCLAUDE.md設定まで実務手順](/tech/details/17375/)

---

出典: [Claude Code 2.1.0の変更点｜context: forkの仕組みと現行仕様との違い](<https://www.issoh.co.jp/tech/details/10536/>)（株式会社一創）
