---
title: Agent config
description: Agent config の全フィールド。
---

Agent のバージョンは 1 つの JSON ドキュメントです。コンソールの [バージョンの編集画面](/ja/console/agents#バージョンの編集画面) はこのドキュメントを編集するフォームで、[`subako agent publish`](/ja/build/cli#agent) はこれをファイルから読み込みます。API では `POST /v1/agents/{agent_id}/versions` がこのドキュメントを受け取り、Model Provider はドキュメントと並べて `model_provider_id` で指定します。

```json agent.json
{
  "system_prompt": "You triage support tickets for Acme.",
  "model": { "format": "openai_responses", "model": "hawk", "max_tokens": 8192, "context_window": 128000 },
  "mcp": [{ "name": "orders", "url": "https://mcp.acme.example/orders", "default_policy": "require_approval" }],
  "skills": [{ "name": "refund-policy", "skill_id": "<skill-id>", "version": { "type": "latest" } }],
  "functions": [{ "name": "files", "source": { "type": "platform", "package": "files" }, "default_policy": "allow" }],
  "volume": { "data": { "type": "enabled" } },
  "builtin": { "session_display_name": { "when": "empty" }, "ask_user": { "widgets": [{ "type": "select" }] } }
}
```

`subako agent config-example --format <format>` は、公開できる最小のドキュメントを出力します。サーバーが知らないキーはエラーにならず無視されるので、公開後にバージョンのページで内容を確認してください。

## トップレベル

| フィールド | | |
| --- | --- | --- |
| `system_prompt` | 文字列 | 毎回の会話の前にモデルに与える指示です。省略すると何も指示しません。 |
| `model` | オブジェクト、必須 | モデルとその設定です。 |
| `mcp` | 配列 | MCP サーバーの Grant です。 |
| `skills` | 配列 | Skill の Grant です。 |
| `sandboxes` | 配列 | Sandbox の Grant です。 |
| `functions` | 配列 | Function package の Grant です。 |
| `volume` | オブジェクト | Session Volume の領域です。 |
| `builtin` | オブジェクト | Subako 自身が提供する Tool です。 |

Model Provider はドキュメントに含めません。編集画面の **Model Provider**、CLI の `--model-provider`、API の `model_provider_id` で指定するので、同じファイルを同じ形式のどの Model Provider にも公開できます。CORS の Origin はバージョンではなく Agent に設定します。詳しくは [API から Session を使う](/ja/build/sessions-api#ブラウザーから呼び出す) を参照してください。

## `model`

`format` で種類を区別します。値は Model Provider の形式と一致させてください。

**openai_responses**

| フィールド | | |
| --- | --- | --- |
| `model` | 文字列、必須 | モデルの ID です。Platform の Model Provider では価格が設定されているモデルでなければならず、公開時に確認されます。自分の Model Provider のモデルは、Session が最初に呼び出したときに確認されます。 |
| `max_tokens` | 整数、必須 | モデルが 1 ステップで書けるトークン数の上限です。 |
| `context_window` | 整数、必須 | モデルが一度に読み込めるトークン数です。 |
| `image_input` | `supported` \| `unsupported` | モデルに画像を渡すかどうかです。既定は `supported` です。 |
| `reasoning_effort` | `none` \| `minimal` \| `low` \| `medium` \| `high` \| `xhigh` | 省略するとモデルの既定値を使います。 |

**anthropic**

| フィールド | | |
| --- | --- | --- |
| `model` | 文字列、必須 | モデルの ID です (例: `claude-sonnet-5`)。 |
| `max_tokens` | 整数、必須 | モデルが 1 ステップで書けるトークン数の上限です。Thinking の分も含みます。 |
| `context_window` | 整数、必須 | モデルが一度に読み込めるトークン数です。 |
| `image_input` | `supported` \| `unsupported` | モデルに画像を渡すかどうかです。既定は `supported` です。 |
| `thinking` | オブジェクト | `{"type": "adaptive"}`、`{"type": "disabled"}`、`{"type": "between_tools"}`、`{"type": "enabled", "budget_tokens": N}` のいずれかです。N は 1,024 以上、`max_tokens` 未満にします。省略するとモデルの既定値を使います。モデルによっては使えないモードもあります。 |
| `effort` | `low` \| `medium` \| `high` \| `xhigh` \| `max` | 省略するとモデルの既定値を使います。 |

## Grant

Grant にはどれも `name` を付けます。英小文字、数字、`-` からなる 1~32 文字で、同じ配列の中で一意にします。`parent` は使えません。Grant の Tool は、モデルには `<kind>__<name>__<tool>` という名前で見えます。詳しくは [Tool](/ja/concepts/tools) を参照してください。

MCP サーバー、Sandbox、Function の Grant には Policy も指定します。

| フィールド | | |
| --- | --- | --- |
| `default_policy` | `allow` \| `require_approval` \| `deny`、必須 | どの Tool rule にも指定されていない Tool すべてに適用されます。後から追加された Tool も含みます。 |
| `tools` | `[{"name", "policy"}]` | Tool 名の完全一致で指定する Tool rule です。 |

### `mcp`

```json
{ "name": "orders", "url": "https://mcp.acme.example/orders", "default_policy": "allow", "tools": [{ "name": "refund", "policy": "require_approval" }] }
```

`url` はサーバーの URL で、そのサーバー用の Vault の Credential に指定した URL と完全に一致させます。リソースを提供するサーバーには、`list_resources` と `read_resource` の Tool も追加されます。

### `skills`

```json
{ "name": "refund-policy", "skill_id": "<skill-id>", "version": { "type": "pinned", "number": 2 } }
```

`version` は `{"type": "latest"}` (各 Session の作成時に解決されます) か `{"type": "pinned", "number": N}` です。同じ Skill を付与できるのは一度だけです。

### `sandboxes`

```json
{ "name": "build", "environment": { "type": "platform", "release": "2026" }, "network": { "type": "unrestricted" }, "default_policy": "allow" }
```

| フィールド | | |
| --- | --- | --- |
| `environment` | `{"type": "platform", "release": "2026"}`、必須 | 起動する Platform image の系列です。 |
| `network` | `{"type": "unrestricted"}` \| `{"type": "none"}` | インターネットに接続するか、どこにも接続しないかです。既定は `unrestricted` です。 |

Sandbox の Tool は `exec` の 1 つだけです。

### `functions`

```json
{
  "name": "billing",
  "source": { "type": "workspace", "function_id": "<function-id>", "version": { "type": "latest" } },
  "default_policy": "allow",
  "timeout_secs": 120,
  "network": { "type": "allowlist", "hosts": ["billing.acme.example"] },
  "http_credentials": ["https://billing.acme.example"]
}
```

| フィールド | | |
| --- | --- | --- |
| `source` | 必須 | `{"type": "platform", "package": "files" \| "http"}`、または `{"type": "workspace", "function_id", "version"}` です。`version` の書き方は Skill と同じです。 |
| `timeout_secs` | 1~300 | 既定は 60 秒です。 |
| `network` | | `{"type": "none"}` (既定)、`{"type": "unrestricted"}`、`{"type": "allowlist", "hosts": [...]}` のいずれかです。`hosts` には `api.example.com` や `*.example.com` のような Host を 1~64 個指定します。 |
| `http_credentials` | 最大 16 個 | Vault の Credential をリクエストに付ける Origin (`https://host[:port]`) です。どの Origin も `network` で接続できる必要があります。 |

詳しくは [Function の付与](/ja/functions/granting) を参照してください。

## `volume`

```json
{ "data": { "type": "enabled" } }
```

既定は `{"type": "disabled"}` です。有効にすると、Function は常に使える `/volume/tmp` に加えて、Session を削除するまで残る `/volume/data` を使えます。

## `builtin`

### `session_display_name`

`{"when": "never" | "empty" | "until_user_edits"}` で指定し、既定は `never` です。`never` 以外にすると、Agent が自分の Session に名前を付けられます。`empty` では名前がない間だけ付けられ、`until_user_edits` では、人が名前を変えるまで自分で付けた名前を直すこともできます。人が付けた名前が上書きされることはありません。

### `ask_user`

`{"widgets": [...]}` で、Widget を 1~32 個、それぞれ一度ずつ指定します。省略すると、Agent は人に質問できません。

| Widget | |
| --- | --- |
| `{"type": "select"}` | 選択肢から選ぶ |
| `{"type": "text"}` | 自由入力のテキスト |
| `{"type": "confirm"}` | はい・いいえ |
| `{"type": "custom", "id", "description", "props", "answer"}` | アプリが描画する Widget です。`id` (`a`–`z`、`0`–`9`、`_`、`-` からなる 1~64 文字)、モデルがこの Widget を選ぶときに読む `description`、Agent が埋める内容 (`props`) と回答の内容 (`answer`) を表す JSON Schema を指定します |

詳しくは [承認とフォーム](/ja/build/approvals-and-forms#フォーム) を参照してください。

## 公開したバージョンを読み出す

`GET /v1/agents/{agent_id}/versions` は、各バージョンの `config` を Subako が保存している形で返します。この形は公開時のものと少し異なり、モデルの設定は `model.config` の下にまとめられ、既定値も省略されずに書かれます。TypeScript SDK の `readAgentConfig` を使うと、公開時の形に戻せます。
