# Codex

Source: https://aiand-docs-staging.pages.dev/ja/integrations/codex/

[Codex](https://developers.openai.com/codex) は OpenAI の Responses API と通信します。ai& は OpenAI 互換の `/v1/responses` エンドポイントを公開しているため、[カタログ](/ja/models/catalog/) 内の `tool_calling` 対応モデルであればエージェントループを駆動できます。

<Aside type="note">
  Codex 0.141 以降は **Responses API のみ** に対応しています(旧来の chat-completions ワイヤは廃止されました)。そのため、以下の設定では `wire_api = "responses"` が必須です。
</Aside>

## 1. Codex をインストール

前提: [Node.js 18 以降](https://nodejs.org/)。

<Tabs syncKey="os">
<TabItem label="macOS / Linux">

```bash
npm install -g @openai/codex
```

インストールを確認 — `codex --version` がバージョン番号を表示するはずです:

```bash
codex --version
```

</TabItem>
<TabItem label="Windows (PowerShell)">

```powershell
npm install -g @openai/codex
```

インストールを確認 — `codex --version` がバージョン番号を表示するはずです:

```powershell
codex --version
```

</TabItem>
</Tabs>

## 2. API キーを設定

以下の設定はキーを環境変数 `AIAND_API_KEY` から読み取るため、Codex がキーをディスクに保存することはありません。

<Tabs syncKey="os">
<TabItem label="macOS / Linux">

```bash
export AIAND_API_KEY="sk-your-aiand-api-key"
```

ターミナルをまたいで有効にするには、この行を `~/.zshrc` または `~/.bashrc` に追記してください。

</TabItem>
<TabItem label="Windows (PowerShell)">

```powershell
$env:AIAND_API_KEY = "sk-your-aiand-api-key"
```

セッションをまたいで永続化するには: `setx AIAND_API_KEY "sk-your-aiand-api-key"`(その後ターミナルを開き直してください)。

</TabItem>
</Tabs>

## 3. ai& プロファイルを追加

Codex 0.141 以降は、各プロファイルを専用ファイル `~/.codex/<name>.config.toml` に保存します。`~/.codex/aiand.config.toml` を作成してください:

```toml
model = "moonshotai/kimi-k3"
model_reasoning_effort = "high"
model_provider = "aiand"
web_search = "disabled"

[model_providers.aiand]
name = "ai&"
base_url = "https://api.aiand.com/v1"
wire_api = "responses"

[model_providers.aiand.auth]
command = "sh"
args = ["-c", "echo $AIAND_API_KEY"]

[tools]
view_image = false

[features]
unified_exec = false
apps = false
browser_use = false
browser_use_external = false
computer_use = false
image_generation = false
multi_agent = false
in_app_browser = false
```

`model_reasoning_effort` の行は重要です。Codex の組み込みデフォルトは `medium` ですが、サポートされる推論レベルはモデルごとに異なり、モデルの `reasoning_efforts` にないレベルはエラーになります。`moonshotai/kimi-k3` は `high` を受け付けるため、ここでは `high` を明示的に指定するのが安全な選択です。モデルを切り替える前に [`GET /v1/models`](/ja/api/models/) の `reasoning_efforts` を確認してください。

`[model_providers.aiand.auth]` ブロックは、Codex に ai& のモデルカタログを取得させるためのものです。Codex 0.157 以降は、コマンドで認証するプロバイダーに対してのみカスタムプロバイダーのモデル一覧を取得します。単に `env_key = "AIAND_API_KEY"` とした場合もリクエスト自体は動作しますが、Codex は同梱のメタデータにフォールバックし、`/model` に「Unknown model」の警告が表示され、各 ai& モデルがサポートする推論レベルも提示されません。このコマンドは、手順 2 で設定した環境変数からキーを出力するだけです。

`[features]` ブロックも重要です。ai& は標準的な **関数ツール(function tools)** を提供しており、コーディングのエージェントループに必要なのはこれだけです。一方で Codex のホスト型・組み込みツール(ウェブ検索、画像生成、ブラウザ・コンピューター操作)やツールをまとめるラッパーには対応していません。有効のままだと Codex は API に拒否されうるツール種別を送信し(`tool type … not supported`)てしまうため、プロファイルでこれらを無効化します。

1 ステップで保存できます:

<Tabs syncKey="os">
<TabItem label="macOS / Linux">

```bash
mkdir -p ~/.codex && cat > ~/.codex/aiand.config.toml <<'EOF'
model = "moonshotai/kimi-k3"
model_reasoning_effort = "high"
model_provider = "aiand"
web_search = "disabled"

[model_providers.aiand]
name = "ai&"
base_url = "https://api.aiand.com/v1"
wire_api = "responses"

[model_providers.aiand.auth]
command = "sh"
args = ["-c", "echo $AIAND_API_KEY"]

[tools]
view_image = false

[features]
unified_exec = false
apps = false
browser_use = false
browser_use_external = false
computer_use = false
image_generation = false
multi_agent = false
in_app_browser = false
EOF
```

</TabItem>
<TabItem label="Windows (PowerShell)">

```powershell
New-Item -ItemType Directory -Force -Path $HOME\.codex | Out-Null
@'
model = "moonshotai/kimi-k3"
model_reasoning_effort = "high"
model_provider = "aiand"
web_search = "disabled"

[model_providers.aiand]
name = "ai&"
base_url = "https://api.aiand.com/v1"
wire_api = "responses"

[model_providers.aiand.auth]
command = "cmd"
args = ["/c", "echo %AIAND_API_KEY%"]

[tools]
view_image = false

[features]
unified_exec = false
apps = false
browser_use = false
browser_use_external = false
computer_use = false
image_generation = false
multi_agent = false
in_app_browser = false
'@ | Set-Content -Encoding utf8 $HOME\.codex\aiand.config.toml
```

</TabItem>
</Tabs>

<Aside type="tip">
  [カタログ](/ja/models/catalog/) 内で `tool_calling` 対応のモデルであれば利用でき、`model` 行を書き換えるだけで切り替えられます。その際は `model_reasoning_effort` を、そのモデルの `reasoning_efforts` に含まれるレベルに設定してください。
</Aside>

## 4. Codex を実行

```bash
codex --profile aiand
```

または非対話モードで実行 — `--sandbox workspace-write` を付けるとエージェントがワークスペース内のファイルを編集できます:

```bash
codex exec --profile aiand --sandbox workspace-write "src/math.js の失敗しているテストを修正して"
```

## 動作確認

シェルからワイヤレベルの経路を確認します — 一致すればキーが認証され、そのモデルが組織で利用可能なことを意味します:

<Tabs syncKey="os">
<TabItem label="macOS / Linux">

```bash
curl -sS https://api.aiand.com/v1/models \
  -H "Authorization: Bearer $AIAND_API_KEY" \
  | grep -o 'moonshotai/kimi-k3'
```

</TabItem>
<TabItem label="Windows (PowerShell)">

```powershell
(Invoke-RestMethod https://api.aiand.com/v1/models `
  -Headers @{ Authorization = "Bearer $env:AIAND_API_KEY" }).data.id `
  | Select-String "moonshotai/kimi-k3"
```

</TabItem>
</Tabs>

<Aside type="caution">
  いくつか想定される挙動があります:

  - **`ERROR: Reconnecting…` が 5 回続いた後の `We're currently experiencing high demand`** — 多くの場合、負荷が原因ではありません。これはモデルがリクエストを拒否したときの Codex の表示で、最も多い原因はモデルが対応していない `model_reasoning_effort` です(この行がない場合、Codex は `medium` を送信します)。モデルがサポートするレベルを指定してください — このページで推奨しているモデルはすべて `high` で動作します。
  - **`tool type … not supported`** — 組み込みツールがまだ有効です。プロファイルに `[features]` ブロックと `web_search = "disabled"` が含まれているか確認してください。
  - **`warning: Model metadata for '…' not found`**、または `/model` に **「Unknown model」** — Codex が ai& からモデル一覧を取得できていません。0.144 より古い Codex の場合は更新してください。0.157 以降の場合は、プロファイルが `env_key` ではなく上記の `[model_providers.aiand.auth]` で認証していることを確認してください。[openai/codex#46561](https://github.com/openai/codex/pull/46561) 以降、`env_key` のプロバイダーは `model_catalog_url` が設定され、かつ `api_key_model_discovery` 機能が有効な場合にしかカタログを取得しません。コマンド認証のプロファイルであれば、Codex は実際のモデルメタデータ(コンテキストウィンドウ、推論レベル、ツール機能)を受け取るため、ローカルの `model_catalog_json` ファイルなしで `/model` に正しい値が表示されます。
  - **``Automatic approval review failed: … The model `codex-auto-review` does not exist``** — Codex の自動承認レビューは、ai& のモデル一覧が指定するモデルで実行されるため、Codex がその一覧を取得して初めて動作します。上記のコマンド認証のプロファイルを使うか、Codex が毎回確認するように変更してください。`/permissions` でその確認方法を選ぶか、プロファイルに `approvals_reviewer = "user"` を設定します。
  - **ログ中の `unsupported call: apply_patch`** — 無害です。ホストがパッチツールを公開していない場合、Codex はシェルコマンドにフォールバックしてファイルを編集します。
</Aside>
