---
title: "対応しているもの"
description: "「対応しているもの」：yokoten ガイドの一章。"
canonical: https://yokoten.app/ja/docs/guide/works-with
lang: ja
source: https://github.com/yokoten-labs/yokoten/blob/v0.1.2/docs/i18n/ja/guide.md
ref: "v0.1.2"
---

> For AI agents: the documentation index is at https://yokoten.app/llms.txt. To set up yokoten in a project, follow https://yokoten.app/agents.md.

# 対応しているもの

yokoten は九つの AI コーディングエージェントを、同じルールで守ります。この表が、その一覧と、それぞれをどこまで覆えているかの唯一の一覧です。下の「yes」はどれも実際の実行です。使い捨てのリポジトリでエージェントが `git push --tags` を試み、番人が止めました。「端から端までは未実行」は、エージェントが一覧にはあるが、番人がまだ端から端まで確かめられていないという意味です。文書は証拠ではありません。

| エージェント | フックのファイル（`init` が書く） | どう止めるか | 確認済み | 注意点 |
|---|---|---|---|---|
| Claude Code | `.claude/settings.json`: PreToolUse、Stop、SubagentStop | 終了コード 2、理由は stderr へ | yes、2026-10-19: ヘッドレス、DeepSeek `deepseek-flash` 上 | なし |
| GitHub Copilot CLI | 同じ `.claude/settings.json`: Copilot が読む | 終了コード 2、理由は JSON で stdout へ | yes、2026-10-19: Copilot CLI 1.0.98、`copilot -p`、モデル `gpt-6-luna`（Auto） | リポジトリのフックは、あなたがフォルダを信頼したあとだけ走る。そこで `copilot` を実行し、「Yes, and remember this folder for future sessions」を選ぶ。そうしないと、何も言わずに飛ばす。タイムアウトしたフックは、呼び出しを通す |
| Antigravity CLI（`agy`） | `.agents/hooks.json`: `yokoten` の項目、PreToolUse | `{"decision": "deny"}` を stdout へ | yes、2026-10-19: agy 1.4.2、`agy -p`、モデル `gemini-3.8-flash-high` | 停止チェックはまだない。`.yokoten/` がないと、すべての呼び出しが拒否される。agy は安全側に倒れる。ワーカーの done-when チェックはリードが走らせる |
| Codex CLI | `.codex/hooks.json`: PreToolUse と Stop | 終了コード 2、理由は stderr へ | yes、2026-10-19: Codex 0.163.0、`codex exec`、DeepSeek `deepseek-flash` 上 | プロジェクトのフックは、あなたがフォルダを信頼したあとだけ走り、そのあと `/hooks` で各フックを承認する。`codex exec` は信頼していないフックを何も言わずに飛ばす |
| Muse Code | `.muse/hooks.json`: PreToolUse と Stop | 終了コード 2、理由は stderr へ | yes、2026-10-19: Muse Code 1.4.10、`muse exec --trust-workspace`、モデル `muse-spark-1.3-contributor` | フックは、あなたがフォルダを信頼したあとだけ走る。そこで `muse` を実行し、「Trust and continue」を選ぶ。Muse はフックに `YOKOTEN_ROLE` を渡さないので、ワーカーのワークツリーは `yokoten worker mark <dir>` で印を付ける。`YOKOTEN_RELEASE_APPROVAL` も渡すかは分かっていないので、Muse の外でリリースする。失敗したフックやタイムアウトしたフックは、呼び出しを通す |
| DeepSeek Harness（`dsh`） | `.dsh/hooks.json`: PreToolUse、そして読み込むための `.dsh/yokoten.patch.yml` | 終了コード 2、理由は stderr へ | yes、2026-10-20: dsh 0.2.1-rc.2、`dsh headless --patch .dsh/yokoten.patch.yml`、既定の DeepSeek モデル | フックは、各プロファイルにあなたが足すブリッジを通してだけ走る。[DeepSeek Harness](https://yokoten.app/ja/docs/guide/works-with.md#deepseek-harness)を見てください。それがなく、パッチもないと、dsh はフックを走らせず、何も言わない。Windows ではまだ守られていない（#332）。停止チェックはない。ワーカーの done-when チェックはリードが走らせる |
| Grok CLI（`grok`） | `.grok/hooks/yokoten.json`: PreToolUse と Stop | `permissionDecision: "deny"` を stdout へ、そして終了コード 2 | yes、2026-10-20: Grok CLI 1.0.52、`grok -p --trust --always-approve`、既定のモデル | プロジェクトのフックは、あなたがフォルダを信頼したあとだけ走る。そこで `grok` を実行し、`/hooks-trust` と入力する。そうしないと、何も言わずに飛ばす。`.claude/settings.json` のフックも走らせるので、一つの呼び出しで番人が二回走ることがある。意図的だ |
| Gemini CLI | `.gemini/settings.json`: BeforeTool と AfterAgent | 終了コード 2、理由は stderr へ | 端から端までは未実行: 個人のサインインは 2026-06-18 に終わった。有料の API 鍵か組織のライセンスが要る | 個人向けの Google のエージェントは、いま Antigravity CLI だ |
| OpenCode | `.opencode/plugins/yokoten.ts`: OpenCode 2 のパーミッション `evaluate` と OpenCode 1 の `tool.execute.before` | OpenCode 2 は `effect` を deny にする。OpenCode 1 は理由を投げる | 端から端までは未実行 | 停止チェックはない。失敗した番人やタイムアウトした番人は、呼び出しを拒否する。読み取り専用でない呼び出しで、コマンドもパスも読めないときも拒否する |
| ほかのエージェント | なし | `AGENTS.md` のルールと、コミットチェック。誰が作った悪いコミットでも止める | | |

`install` はユーザーのフックを書きます。各セッションの始めのガイドと、コマンドの番人です。それらは `~/.claude/settings.json` に入り、`~/.codex/hooks.json` と `~/.gemini/settings.json` にも、そのフォルダがあるときに入ります。Muse Code は両方を `~/.config/muse/settings.json` に（設定されているときは `$XDG_CONFIG_HOME/muse/settings.json`）、その設定フォルダがあるときだけ受け取ります。Grok CLI はコマンドの番人だけを、`~/.grok` があるとき `~/.grok/hooks/yokoten.json` に受け取ります。セッション開始フックの出力は、エージェントではなくあなたに見せるからです。OpenCode はコマンドの番人を、`~/.config/opencode` があるとき `~/.config/opencode/plugins/yokoten.ts` に受け取ります。Grok の信頼の関門が切れているとき（`GROK_FOLDER_TRUST=0`、または `~/.grok/config.toml` の `[folder_trust] enabled = false`）、`doctor` はすべてのフォルダを信頼済みと数えます。Codex では、番人は `apply_patch` のファイルを確かめ、シェルを通した実行も確かめます。`CLAUDE_CONFIG_DIR`、`CODEX_HOME`、`XDG_CONFIG_HOME` がフルパスのとき、`install` はそのフォルダに書きます。ツールもそこを読むからです。

どのエージェントも、あなたが信頼したあとだけプロジェクトのフックを走らせます。

- **Claude Code** は、信頼したフォルダでプロジェクトのフックを走らせます。
- **Copilot CLI** は、信頼したフォルダで走らせます。`copilot -p` では `COPILOT_ALLOW_ALL=true` を設定します。その正確な値がフォルダを信頼します。`--allow-all-tools` だけでは信頼せず、フックは走りません。
- **Antigravity CLI** は、信頼一覧にないフォルダでも、`agy -p` で `.agents/hooks.json` を走らせました。フックは `.agents` フォルダを作業フォルダとして走ります。ガイドには、`--dangerously-skip-permissions` がフックを飛ばすと書いてあります。agy 1.4.2 では、それを付けてもフックは走りました。どちらも当てにしないでください。
- **Codex** は、信頼したプロジェクトでだけプロジェクトのフックを走らせます。そのあと `/hooks` で各フックを承認します。Codex はコマンドを覚えるので、コマンドが変わったらまた承認が必要です。
- **Muse Code** は、信頼したワークスペースでだけ `.muse/hooks.json` を走らせ、そうでなければ何も言わずに飛ばします。`muse exec` では、`--trust-workspace` がその実行でフォルダを信頼します。そのときだけ、`.agents/skills` のプロジェクトのスキルも読みます。デスクの外では、Muse Code は ~/.claude/CLAUDE.md を読み、そのファイルを Muse のモデルに送ることがあります。ホームフォルダを隠すには、デスクで Muse を走らせてください。そのファイルがあるときは `doctor` がそう言います。デスクからまだそのファイルが見えるときは、`doctor` はホームフォルダが見えることと、デスクに手当てが要ることを言います。
- **Grok CLI** は、信頼したフォルダでだけ `.grok/hooks/` を走らせ、そうでなければ何も言わずに飛ばします。そこでセッション中に `/hooks-trust` と入力するか、一度 `grok --trust` で始めます。yokoten があなたの代わりにフォルダを信頼することは決してありません。Grok は `.claude/settings.json` のフックも走らせるので、一つの呼び出しが二回チェックされることがあります。意図的です。Grok は自分のフックを飛ばせます。信頼していないフォルダのとき、またはリポジトリが空のフックファイルをコミットしたときです。そのときも Claude Code のフックが呼び出しを守ります。二回目のチェックは約 0.1 秒かかります。
- **Gemini CLI** は、信頼したフォルダでだけプロジェクトのフックを走らせます。リポジトリのルートで Gemini を始めてください。`.gemini/settings.json` は、始めたフォルダからだけ読み、ほかでは読みません。新しいフックや変わったフックを走らせる前に、一度警告します。
- **OpenCode** は、始まるときに `.opencode/plugins/` のプラグインを読みます。OpenCode 2 はパーミッションのフックで拒否します。OpenCode 1 はまだ例外で止めます。この道は端から端までは未実行です。

`init` は、フォルダを信頼するステップが一つあるエージェントごとに、その一つのステップを出力します。そのあと `doctor` は、各エージェント自身の信頼の記録を読み取り専用で読み、まだ信頼していないフォルダに注意します。

| エージェント | 信頼の記録 | 信頼済みと数える条件 |
|---|---|---|
| Copilot CLI | `~/.copilot/config.json`（または `$COPILOT_HOME`）の `trustedFolders` | そのフォルダ、またはその上のフォルダ |
| Codex | `~/.codex/config.toml`（または `$CODEX_HOME`）: `[projects]` と `[hooks.state]` | リポジトリのフォルダと正確に一致し、各フックが今のままであること |
| Muse Code | `~/.config/muse/trust.json`（または `$XDG_CONFIG_HOME/muse/trust.json`） | リポジトリのフォルダと正確に一致すること |
| Grok CLI | `~/.grok/trusted_folders.toml`（または `$GROK_HOME`）: `[folders."<folder>"]` で `trusted = true` | リポジトリのフォルダと正確に一致すること |

Doctor は、そのホームフォルダがあるときだけエージェントを調べます（`~/.copilot`、`~/.codex`、`~/.config/muse`、`~/.grok`）。そのフォルダに記録がないとき、または doctor が読めない記録のときは、「can't check」と言い、決して ok とは言いません。

ワーカーは `YOKOTEN_ROLE=worker` のセッションです。Codex では、`agent_type` がワーカーを名指しするサブエージェントもワーカーです。Copilot CLI と Antigravity CLI は、フックの呼び出しでサブエージェントの役割を名指しせず、DeepSeek Harness も同じです。決めるのは `YOKOTEN_ROLE` です。Gemini CLI の厳しい環境の消毒は、フックから `YOKOTEN_ROLE` を消します。すると yokoten は Gemini CLI のワーカーを見分けられません。すべてのセッションがリードと数えられ、リード専用の番人がワーカーの編集を止めません。Muse Code はフックに短い変数の一覧しか渡さず、`YOKOTEN_ROLE` はその中にありません。Grok CLI は `YOKOTEN_ROLE` をフックに渡し、`subagentType` がワーカーを名指しするサブエージェントもワーカーです。

だからリードは、各ワーカーのワークツリーにも印を付けます。`yokoten worker mark <dir>` です（#555）。すると番人は、そのワークツリーのすべてのエージェントをワーカーとして扱います。Gemini CLI と Muse Code でも同じです。印は、ワークツリー自身の git フォルダ（`.git/worktrees/<name>/yokoten-worker`）のファイルです。番人は git のプロセスなしでそれを見つけます。印はワーカーの役割を足すだけです。印があると、`YOKOTEN_ROLE=lead` でもワーカーです。ツールの番人、停止チェック、コミットチェック、セッションの開始が、どれもそれを読みます。安全側に倒れます。番人が読めない `.git` ファイル（開けないモード、FIFO、`gitdir:` の行がない）、またはそれが名指す git フォルダが消えているか読めないときは、そのセッションをワーカーにします。印から来た拒否はそう言い、リードが働くメインのチェックアウトを名指しします。

番人は、ワーカーが印を変える素朴な方法を拒否します。git フォルダのファイルに書き込み、移動し、削除し、リンクし、モードを変えるコマンド、またはそこへリダイレクトするコマンドです。`.git` や印に一致しうるグロブも数えます（`chmod 000 .gi?`）。`GIT_DIR` や `--git-dir` を付けた git、`list` 以外の `git worktree`、git フォルダの中を実パスで編集するものも同じです。`.git` を名指しする読み取りは通ります（`grep --exclude-dir=.git`、`find . -path ./.git -prune`）。これは番人のほかの部分と同じくテキストを読むので、コマンドを部品に分けて組み立てるワーカーは通り抜けます。本当の錠はサーバーと資格情報です。ブランチ保護とコードオーナー、そして push のトークンもボットのトークンも持たないワーカーです。

ワーカーはコミットして報告します。リードがレビューのあと push して投稿します。ワーカーに対して番人は、`git push`、`git send-pack`、`git subtree push`、git のエイリアス（`git config alias.*`、`git -c alias.*`）、どの形の `yokoten bot` も、`gh pr` の `create|merge|edit|close|comment|review|ready|reopen`、そして書き込みのメソッドかフィールドを持つ `gh api` を拒否します（読む GraphQL の問い合わせは通ります）。メインのチェックアウトには決して印を付けないので、そこのリードは影響を受けません。印を付けたワークツリーでは、リードもワーカーと数えます。`git worktree remove <dir>` はワークツリーと一緒に印を消します。印がなく、`YOKOTEN_ROLE` を落としたエージェントはリードと数えます。

Actions の実行の取り消しと削除は、リードにもワーカーにも拒否されます。番人は `gh run cancel`、`gh run delete`、そして `gh api` や `yokoten bot` を通した同じ呼び出しを止めます。`gh run rerun`、`view`、`list`、`watch` はまだ通ります。Actions のページで実行を取り消せるオーナーに聞いてください。`repositories/<id>` のパスも同じ呼び出しです。`.` や `..` を含むパスは、それらを解決したあとに読みます。経路の語 は大文字小文字を区別せずに一致するので、`Actions` と `Cancel` は同じ呼び出しです。`gh api` の短いオプションの集まりは拒否されます。値をくっつけた一つのオプションは別です。シェルから取ったメソッドやパスは、実行を名指ししうるときに拒否されます。シェルから取った `gh run` のサブコマンドは拒否されます。`gh` は自分のコマンドの一つを名指ししなければなりません。`gh extension install`、`upgrade`、`exec`、`browse` は拒否されます。`exec` は入れた拡張を走らせます。`browse` は拡張を入れられます。GET でない呼び出しは、`repos/` や `repositories/` のあとのパスが変数だけのときに拒否されます。`gh config set aliases` は拒否されます。`gh alias list` と `gh extension list` はまだ通ります。`gh alias set` と `gh alias import` は両方の役割で拒否されます。エイリアスはオーナーに手で足してもらってください。

どのエージェントも、リードもワーカーも、gh のトークンを受け取りません（#659、#668）。それがあれば、`curl` やスクリプトが、上のすべてのルールを回って GitHub を直接呼べます。gh と `yokoten bot` は、トークンを見せずに使います。だからすべてのエージェントに対して、番人は次を拒否します。

- トークンを出力する gh のコマンド: `gh auth token`、`gh auth status --show-token`（`-t`）、`gh auth git-credential`、`gh config get oauth_token`。
- ログインが保たれる場所: `git credential fill`、資格情報ヘルパーの `get`（`git credential-manager get`）、`git -c credential.…`、`~/.git-credentials`、gh の `hosts.yml`、`security find-…-password -w`、`secret-tool lookup`。
- トークンの変数: `$GH_TOKEN`、`$GITHUB_TOKEN`、`$GH_ENTERPRISE_TOKEN`、`$GITHUB_ENTERPRISE_TOKEN`。`$env:GH_TOKEN`（PowerShell）と `%GH_TOKEN%`（cmd）も同じです。コマンドがそれを名指しするとき、コードを走らせる `node`、`python`、`jq` などのプログラムも同じです。投稿にその名前を書くには本文のファイルを使い、検索するには `$` を省きます。
- `GIT_TRACE_REDACT=0`。git のトレースがトークンを出力するようになります。
- ボットの git では、`-c` と環境の git 設定（`GIT_CONFIG_*`）。ボットはさらに、ページャー、エディター、ブラウザー、ssh、askpass のプログラムと、トレースとデバッグの設定を環境から落とし、`cat` でページ送りします。

`gh auth status`、`gh pr view`、`curl https://example.com` はまだ通ります。

`gh workflow disable` も、すべてのエージェントに対して拒否されます。オフのワークフローは、どのプルリクエストでもチェックを走らせないからです。オフにするのはオーナーだけです。

番人は、ワーカーのシェルによるリード専用ファイルへの書き込みも、その編集と同じく止めます（#402）。読み取るのは、リダイレクト（`>`, `>>`, `>|`, `&>`）、`sed -i`、`perl -i`、`tee`、`cp`、`mv`、`install`、`ln`、`dd of=`、`truncate`、`rm`、そして git の `checkout`、`restore`、`rm`、`mv`、`apply` です。リダイレクトは、ファイルが引用符つきでも、前の語にくっついていても数えます（`echo x>"AGENTS.md"`）。`git apply` では、番人はパッチを読んでそのファイルを見ます。1 MB 未満の普通のファイルからだけです。ほかのパッチファイルはワーカーを止めます。リード専用ファイルをコミットする `git commit` も止まります。コミットチェックは役割を `YOKOTEN_ROLE` からだけ知り、`yokoten:worker` のような Claude Code のサブエージェントにはそれがありません。`cat` や `grep` のような読み取りは通ります。編集と同じく、これは yokoten を使うリポジトリ（`yokoten.json` があるもの）でだけ成り立ちます。`.worktrees/<issue>/` の下のパスは、そのワークツリーから読み、セッションがそこで走ったかのように扱います。`.worktrees/571-x/AGENTS.md` はまだリード専用です（#571）。ブリーフがリード専用ファイルの変更を求めたときは、リードがワーカーを `YOKOTEN_LEAD_ONLY_OK=AGENTS.md,.github/workflows/ci.yml` で始めます。リポジトリのルートからのパスをカンマで区切り、`*` を含む項目はグロブとして読みます。`*` だけならすべてのリード専用ファイルを許します。番人とコミットチェックがそのパスを通します。サブエージェントはリードの環境を共有するので、そのようなタスクは別のセッションに渡してください。セッションの開始時に、`doctor` は `YOKOTEN_ROLE=worker` のセッションに「このセッションはワーカーです。リード専用ファイルは守られています」と伝えます。それを聞かない別のワーカーのセッションには、役割が設定されていません。サブエージェントはセッションを始めないので、何も聞きません。

## サンドボックス

`init` は、プロジェクトのために各エージェントのサンドボックスを書きます。`doctor` は `sandbox` ステップでそれを確かめます。ワーカーはそのワークツリーで始めてください。サンドボックスがそれを覆うようにです。

| エージェント | `init` が書くもの | なぜ |
|---|---|---|
| Claude Code | `.claude/settings.json`: `sandbox.enabled` が `true` | シェルのコマンドはワークツリーにとどまる。新しいネットワークのホストは先に聞く |
| Codex | `.codex/config.toml`: `sandbox_mode` が `workspace-write`、`approval_policy` が `on-request`、`network_access` が `false` | 書き込みはワークツリーにとどまる。ネットワークは切ったまま。その外へ出る前に Codex が聞く |
| Gemini | `.gemini/settings.json`: `security.disableYoloMode` が `true` | すべてを承認する YOLO モードは切ったまま |
| Grok | `.grok/sandbox.toml`: `[profiles.yokoten]` が `workspace` の上に作られる | `yokoten` プロファイルが書き込みをワークツリーに保つ。ワーカーは `grok --sandbox yokoten` で走る |

あなたが設定した値は残ります。`doctor` は違うものを名指しし、直し方を一つ示します。

Muse Code、DeepSeek Harness、Antigravity、Copilot には、プロジェクトに書けるサンドボックスがありません。だから `init` はそれらに何も書きません。Muse にはそのためのプロジェクト設定ファイルがありません。DeepSeek Harness と Antigravity はプロジェクトにフックだけを保ち、Copilot 自身のサンドボックスはユーザーレベルです。OpenCode はプラグインを受け取り、サンドボックスのファイルは受け取りません。
## DeepSeek Harness

DeepSeek Harness（`dsh`）は、ブリッジのプラグインを通して Claude Code のコマンドフックを走らせます。ブリッジは dsh のパッケージには入っていません。`init` はフックと起動のパッチを書き、残りを出力します。何もインストールせず、`~/.dsh` には触れません。

1. 使う各プロファイル（`tui`、`headless`、`web`）に、ブリッジとそのピアを足します。`dsh plugin add` には PATH の `pnpm` が要ります。ピアがないと、ブリッジはフックを読み込みません。

   ```sh
   dsh plugin --profile tui add @deepseek-ai/dsh-hooks-claude-code@0.2.1-rc.2
   dsh plugin --profile tui add @deepseek-ai/dsh-hook-protocol@0.2.1-rc.2
   ```

2. dsh をリポジトリのルートで、プロファイル名のすぐあとにパッチを付けて始めます。

   ```sh
   dsh tui --patch .dsh/yokoten.patch.yml
   dsh headless --patch .dsh/yokoten.patch.yml --json "<task>"
   ```

   パッチは `.dsh/hooks.json` を相対パスで名指しし、dsh はそれを始めたフォルダから読みます。ほかで始めたとき、またはパッチなしでは、dsh はフックを走らせません。`.dsh/yokoten.patch.yml` は yokoten が所有し、`init` が書き直します。自分の上書きは別のファイルに置いてください。

dsh はツール名を小文字で正確に一致させます。フックの matcher は `bash|pwsh|edit|write` です。`pwsh` は Windows での dsh のシェルです。後に備えて matcher に入っていますが、Windows はまだ守られていません。そこでは dsh がフック自体を PowerShell で走らせ、yokoten の POSIX シェルのコマンドを走らせられません。ブリッジはその失敗を「進んでよい」と受け取るので、すべての呼び出しが通ります。Windows では `doctor` がそう言い、`init` も言います（#332）。停止チェックはありません。ブリッジの Stop イベントにはループの守りがないからです。DeepSeek Harness のワーカーは、チェックが失敗したままタスクを done と報告できます。リードが done-when のコマンド（ブリーフになければプロジェクトのチェック）を走らせます。Antigravity CLI にも停止チェックはなく、そこでもリードがチェックを走らせます。`doctor` は両方のファイルを確かめ、`${DSH_HOME:-~/.dsh}/profiles` で二つのパッケージを探します。dsh のホームがないときは、確かめられないと言います。ブリッジは何も言わずに開いたまま失敗するので、ファイルがあることは何の証拠にもなりません。番人が走ることの証拠は、実際の拒否だけです。使い捨てのリポジトリで `git push --tags` を走らせるよう dsh に頼み、拒否されるのを見てください。

## DeepSeek 上の Claude Code と Codex

番人はエージェントの中にあり、モデルの中にはありません。だから Claude Code と Codex は、DeepSeek のモデルでも同じルールを保ちます。上の実行はどちらも `deepseek-flash` を使いました。

Claude Code を、DeepSeek の Anthropic 互換 API で使うには、こうします。

```sh
export CLAUDE_CONFIG_DIR=~/.config/claude-deepseek   # a config folder with no claude.ai login
export ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic
export ANTHROPIC_API_KEY=<your DeepSeek key>
export ANTHROPIC_MODEL=deepseek-flash
claude
```

`CLAUDE_CONFIG_DIR` は別にしてください。設定フォルダに claude.ai のログインがあると、Claude Code は鍵ではなくそのログインのトークンを送ります。DeepSeek は毎回 401 を返し、Claude Code は何も言わずに再試行してタイムアウトします。止まったように見えます。`--bare` も使わないでください。フックを飛ばすので、番人が走りません。

Codex を、DeepSeek の OpenAI 互換 API で使うには、これを `$CODEX_HOME/config.toml`（既定は `~/.codex/config.toml`）に置き、`DEEPSEEK_API_KEY` を設定します。

```toml
model = "deepseek-flash"
model_provider = "deepseek"

[model_providers.deepseek]
name = "DeepSeek"
base_url = "https://api.deepseek.com"
env_key = "DEEPSEEK_API_KEY"
wire_api = "responses"
```

Codex 0.163.0 は `wire_api = "chat"` を拒否します。`deepseek-flash` のメタデータがないと警告し、そのまま走ります。

---

前の章: [四つの層](https://yokoten.app/ja/docs/guide/four-layers.md)
次の章: [インストールとコマンド](https://yokoten.app/ja/docs/guide/install-and-commands.md)
