Functions
query()
SDK のメインエントリ関数です。async generator を作成し、メッセージの到着順に SDKMessage をストリーム出力します。
パラメータ
| パラメータ | 型 | 説明 |
|---|---|---|
prompt | string | AsyncIterable<SDKUserMessage> | シングルターンは文字列、マルチターンは非同期イテラブルオブジェクト |
options | Options | オプションのセッション設定 |
戻り値
Query を返します。これは AsyncGenerator<SDKMessage, void> であり、for await で消費します。
Types
Options
query() の設定オブジェクトです。
| フィールド | 型 | デフォルト値 | 説明 |
|---|---|---|---|
abortController | AbortController | new AbortController() | セッションをキャンセルするコントローラー |
additionalDirectories | string[] | [] | AI がアクセス可能な追加ディレクトリ |
agent | string | undefined | メインセッションで使用する Agent 名。Agents Reference を参照 |
agents | Record<string, AgentDefinition> | undefined | プログラムで定義するサブエージェント。Agents Reference を参照 |
allowDangerouslySkipPermissions | boolean | false | 権限チェックのスキップを許可。permissionMode: 'bypassPermissions' と併用 |
allowedTools | string[] | [] | ツールホワイトリスト。事前承認で通過。組み込みツール名は Tools Reference を参照 |
auth | AuthOptions | undefined | 認証設定。query() で必須 |
canUseTool | CanUseTool | undefined | カスタムツール権限コールバック |
continue | boolean | false | 最後のセッションを継続 |
cwd | string | process.cwd() | 作業ディレクトリ |
disallowedTools | string[] | [] | ツールブラックリスト。allowedTools および permissionMode より優先。組み込みツール名は Tools Reference を参照 |
enableFileCheckpointing | boolean | false | ファイルチェックポイントの有効化。rewindFiles() と併用。Checkpoint を参照 |
env | Record<string, string | undefined> | process.env | CLI プロセスに渡す環境変数 |
executable | 'bun' | 'deno' | 'node' | 自動検出 | JavaScript ランタイム |
executableArgs | string[] | [] | ランタイムに渡す引数 |
experimentalCloudAgent | CloudAgentOptions | undefined | Qoder Cloud Agent ランタイム(experimental)に切り替え。Cloud Agent を参照 |
extraArgs | Record<string, string | null> | {} | CLI に渡す追加引数 |
fallbackModel | string | undefined | メインモデル失敗時の代替モデル |
forkSession | boolean | false | resume と併用時に新しいセッション ID にフォーク |
hooks | Partial<Record<HookEvent, HookCallbackMatcher[]>> | {} | ライフサイクルフック。Hooks を参照 |
includeHookEvents | boolean | false | メッセージストリームに hook ライフサイクルイベントを含める |
includePartialMessages | boolean | false | stream_event ストリームフラグメントを含める。ストリーム出力 を参照 |
maxTurns | number | undefined | 最大対話ターン数(ツール呼び出しのラウンドトリップ数) |
mcpServers | Record<string, McpServerConfig> | {} | MCP サーバー設定。MCP を参照 |
model | string | CLI デフォルト | 使用モデル。選択肢: 'auto' / 'ultimate' / 'performance' / 'efficient' / 'lite' |
pathToQoderCLIExecutable | string | バンドル済みバイナリを自動解決 | qodercli 実行ファイルパス |
permissionMode | PermissionMode | 'default' | セッション権限モード |
permissionPromptToolName | string | undefined | 権限プロンプト用の MCP ツール名。canUseTool と排他 |
planModeInstructions | string | undefined | permissionMode: 'plan' 時に計画モードのワークフロー本文を上書き |
plugins | SdkPluginConfig[] | [] | ローカルプラグインの読み込み。Plugins を参照 |
promptSuggestions | boolean | false | 各ターンの result 後に prompt_suggestion メッセージを発行 |
resolveModel | ModelPolicyProvider | undefined | 動的モデル選択コールバック。渡した時点で動的コールバックモードに切り替わる。Model Policy を参照 |
resolveModelTimeoutMs | number | 500 | コールバックタイムアウト(ミリ秒)。resolveModel を渡したときのみ有効 |
resume | string | undefined | 復元するセッション ID |
resumeSessionAt | string | undefined | 指定メッセージ UUID から復元 |
sandbox | SandboxSettings | undefined | サンドボックス設定 |
sessionId | string | 自動生成 | セッション UUID の指定 |
settings | string | Settings | undefined | インライン settings オブジェクトまたは settings ファイルパス |
settingSources | SettingSource[] | CLI デフォルト | ロードする filesystem settings。[] で user/project/local をスキップ |
skills | string[] | 'all' | undefined | 有効にする Skill。'all' で全て有効化。Skills を参照 |
spawnQoderCLIProcess | (options: SpawnOptions) => SpawnedProcess | undefined | カスタムプロセス spawn 関数 |
strictMcpConfig | boolean | false | 厳密な MCP 検証 |
systemPrompt | string | { type: 'preset'; preset: 'qodercli'; append?: string } | undefined | システムプロンプト。文字列で上書き、preset 形式では qodercli プリセットの後に append |
toolConfig | ToolConfig | undefined | 組み込みツール動作設定。Tools を参照 |
tools | string[] | { type: 'preset'; preset: 'qodercli' } | undefined | ツール集合。文字列配列で利用可能ツールを制限。空配列で全ツール無効化。組み込みツール名は Tools Reference を参照 |
AuthOptions
| 形式 | 説明 |
|---|---|
{ type: 'accessToken'; accessToken: string } | PAT を直接渡す |
{ type: 'accessToken'; accessToken: { envVar } } | 指定環境変数から PAT を読み取り。デフォルト QODER_PERSONAL_ACCESS_TOKEN |
{ type: 'qodercli' } | ローカルの qodercli login 状態を再利用 |
accessToken(token) / accessTokenFromEnv(envVar?) / qodercliAuth()。SDK 認証 を参照。
options.agents
型: Record<string, AgentDefinition>
現在の query() セッションで利用できるカスタム Agent を登録します。オブジェクトの key が Agent 名、value がその Agent 定義です。
Agentツールが必要です: カスタムサブエージェントは、メインセッションから組み込みAgentツール経由で委任されます。Qoder は Agent ツールを通じてサブエージェントを起動するため、allowedToolsにAgentを含める必要があります。
Agent ツールを通じてこれらのサブエージェントを呼び出せます。メインセッションがタスクを委任するには、ツール集合に Agent が含まれている必要があります。allowedTools: ['Agent'] は必須の事前承認指定です。options.tools でメインセッションの利用可能ツールを絞る場合も、Agent を含めてください。
options.agent
型: string
メインセッションをどの Agent 身分で実行するかを指定します。値には options.agents に登録した名前、または現在の CLI が検出した組み込み / プラグイン Agent 名を指定できます。
prompt、model、ツール制限を使用します。省略時はデフォルトのメインセッション動作になります。
AgentDefinition
カスタム Agent の定義です。以下のフィールドは、現行 SDK でカバーされ、機能テストで検証されている安定機能です。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
description | string | はい | Agent の用途説明。モデルはこれを見ていつ呼び出すかを判断します |
prompt | string | はい | Agent のシステムプロンプト |
tools | string[] | いいえ | Agent が使用できるツールのホワイトリスト |
disallowedTools | string[] | いいえ | Agent のツール集合から除外するツール |
model | string | いいえ | モデル上書き。'inherit' はメインセッションのモデルを継承します |
mcpServers | AgentMcpServerSpec[] | いいえ | Agent が使用できる MCP server 仕様 |
skills | string[] | いいえ | Agent コンテキストへプリロードする skill 名 |
initialPrompt | string | いいえ | この Agent がメインセッション Agent として使われるときに自動送信される最初のユーザー入力 |
maxTurns | number | いいえ | Agent の最大 API ターン数 |
effort | EffortLevel | いいえ | 推論努力レベル |
permissionMode | PermissionMode | いいえ | この Agent 内でのツール実行の権限モード |
description
Agent がどのようなタスクに適しているかを説明します。モデルがこの Agent を選ぶかどうかに影響します。
Helpful assistant のような広すぎる説明は避けてください。
prompt
Agent のシステムプロンプトです。役割、制約、出力形式を定義します。
tools
Agent が使用できるツールのホワイトリストです。設定すると、Agent は列挙されたツールだけを使用できます。
tools を省略すると、サブエージェントのデフォルトツール表が使われます。サブエージェントのツール表は、メインセッションの allowedTools による絞り込みを継承しません。
disallowedTools
Agent のツール集合から指定ツールを除外します。
disallowedTools を省略しても、サブエージェントはメインセッションの disallowedTools による絞り込みを継承しません。最終的なツール集合を明確に把握している場合を除き、通常は tools と disallowedTools を同時に設定しないでください。
model
Agent に使用するモデルを指定します。省略時はセッションのデフォルトモデルを使います。対応するモデル階層は次の通りです。
| 値 | 階層 | 説明 | 適した用途 | Credit 消費 |
|---|---|---|---|---|
auto | スマートルーティング | 能力とコストのバランスを取り、最適なモデルを自動選択 | 大半の日常開発作業。デフォルト推奨 | ~1.0x |
ultimate | Ultimate | エキスパート級の深い推論と思考能力 | 複雑なシステム設計、高難度の問題分析 | ~1.6x |
performance | Performance | 高度な推論能力と高品質な出力 | 中核機能実装、アーキテクチャ設計、リファクタリング | ~1.1x |
efficient | Efficient | 標準推論能力と高いコスト効率 | 基本的なコード生成、単体テスト、日常 Q&A | ~0.3x |
lite | Lite | 基本推論能力。無料利用 | クイック検証、単純なロジック、短い質問 | 0x |
| 値 | 説明 |
|---|---|
inherit | メインセッションのモデルを継承 |
| 完全なモデル ID | 現在の CLI / backend がサポートするモデル ID を直接指定 |
mcpServers
この Agent が利用できる MCP server を制限または追加します。
skills
Agent コンテキストにプリロードする skill 名の一覧です。通常の skill 名とプラグイン修飾名の両方をサポートします。
initialPrompt
この Agent が options.agent によってメインセッション Agent になったとき、最初のユーザー入力として自動送信されます。
Agent ツール経由でサブエージェントとして呼ばれる場合は無視されます。
maxTurns
Agent の最大 API ターン数を制限します。コスト、実行時間、ループリスクを制御するのに適しています。
effort
effort は、複雑なレビュー、アーキテクチャ分析、高リスク変更に適していますが、レイテンシと token 消費が増えます。
permissionMode
この Agent 内部のツール実行に対する権限モードを制御します。セッションレベルの permissionMode と同じ意味体系を使いますが、作用範囲はこの Agent に限定されます。セッションレベルの権限チェーン、allowedTools / disallowedTools / canUseTool の優先順位と例は 権限制御 を参照してください。
| 値 | 意味 | 適した用途 |
|---|---|---|
'default' | 標準権限動作。ツール呼び出しはツール集合、allow / deny ルール、ランタイム承認、CLI デフォルトポリシーを通ります | 大半の対話型サブエージェント |
'acceptEdits' | ファイル編集系操作を自動承認します。その他の機密操作は通常の権限フローに従います | ワークスペースファイルの変更を許可したサブエージェント |
'bypassPermissions' | 権限チェックをスキップします。高リスクモードで、通常は信頼済み自動化やテスト環境に限定します | 制御された CI、一時検証、一回限りの自動化 |
'yolo' | 'bypassPermissions' の互換エイリアス。同様に権限チェックをスキップします | 旧設定との互換。新規コードでの優先使用は非推奨 |
'plan' | 計画モード。まず実行計画を出す用途に適し、デフォルトでは実変更を行いません | 計画、設計、レビュー、サブエージェントにファイルを変更させたくない場合 |
'dontAsk' | 対話確認を行いません。事前承認されていない、またはルールで許可されていない操作は拒否されます | 非対話環境、または確認ではなく失敗させたいワークフロー |
'auto' | ランタイム能力が allow / deny を自動判断します。安全なワークスペース内ファイル編集は自動許可される場合があります | 確認の中断を減らしつつランタイム判断を残したい場合 |
AgentInfo
q.supportedAgents() が返す Agent の概要です。
| フィールド | 型 | 説明 |
|---|---|---|
name | string | Agent 名 |
description | string | Agent の用途説明 |
model | string | undefined | Agent のモデル上書き。未設定または model: 'inherit' の場合は通常空です |
options.agents で登録した Agent が含まれるほか、現在の CLI が検出した組み込み、プロジェクト、ユーザー、プラグイン Agent が含まれる場合があります。実際に利用できる項目は qodercli のバージョンと現在の設定に依存します。
コンテキストと呼び出し境界
- サブエージェントは独立したコンテキストを使用し、親セッションの完全な履歴を受け取りません。
- 親セッションからサブエージェントへ渡される主な情報は、
Agentツール呼び出し時に渡すタスク prompt です。 - サブエージェントの中間ツール結果は親セッションに直接入りません。親セッションが受け取るのはサブエージェントの最終応答です。
- サブエージェントはさらに自分のサブエージェントを生成できないため、サブエージェントの
toolsにAgentを入れないでください。 initialPromptはoptions.agentで指定したメインセッション Agent にのみ有効です。
Model Policy
query() の動的モデル選択能力。二つのモードがあります:固定モデルモード(resolveModel を渡さず、options.model またはバックエンドのデフォルトを使用)と動的コールバックモード(resolveModel を渡し、LLM 呼び出しの都度コールバックがモデルを決定)。詳細な概念・トリガー・エラー処理は Model Policy を参照。
options.resolveModel
型: ModelPolicyProvider
動的コールバックモードのエントリポイント。渡した瞬間にこのモードに切り替わり、SDK は LLM リクエスト前に毎回コールバックを呼んでモデルを取得します。コールバックが返す model がそのリクエストの最終モデルであり、自動フォールバックはありません。
options.resolveModelTimeoutMs
型: number、デフォルト 500
コールバックのタイムアウト(ミリ秒)。タイムアウトすると ModelPolicyTimeoutError がスローされ、クエリは失敗します(フォールバックなし)。resolveModel を渡したときのみ有効。
ModelPolicyProvider
コールバック関数のシグネチャ。同期・非同期どちらでも構いません。
QoderModelPurpose で区別されます:
| シナリオ | purpose | 説明 |
|---|---|---|
| メイン会話 | 'main' | 各ターン / ツール間で再呼び出され、1 セッションで複数回発火する可能性あり |
| サブエージェント | 'subagent' | サブエージェントは同じプロバイダを共有 |
| WebFetch ツール | 'web_fetch' | WebFetch がコンテンツ取得後に二次 LLM 呼び出しで要約 |
| ImageGen ツール | 'image_gen' | 画像生成モデル選択用 |
| コンテキスト圧縮 | 'compact' | 圧縮開始前にコールバックへ圧縮用モデルを問い合わせ |
| BYOK | 任意 | model に CustomModel オブジェクトを渡してサードパーティ LLM 経路へ |
- 同じセッション内で複数回発火します(各ターン / ツール / サブタスク前に再度問い合わせ)。
- コールバックが返す
modelがそのリクエストの最終モデルであり、SDK は再検証しません。 - 例外スローや空
modelはクエリを直接失敗させます。詳細は Model Policy — エラー処理 を参照。
ModelPolicyContext
コールバックが毎回受け取るコンテキスト。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
purpose | QoderModelPurpose | はい | 当該 LLM 呼び出しの用途 |
sessionId | string | はい | 現在のセッション ID。同じセッション内の複数回コールバックで同じ値を受け取るため、キャッシュ / テレメトリキーとして使える |
availableModels | ModelInfo[] | はい | 現在のアカウントで利用可能なモデル一覧(CLI が get_model_policy リクエストごとに同梱) |
QoderModelPurpose
| 値 | 発火シナリオ |
|---|---|
'main' | メイン会話の LLM 呼び出し |
'subagent' | サブエージェント呼び出し |
'web_fetch' | WebFetch ツールが起こす二次 LLM 呼び出し |
'image_gen' | ImageGen ツールが起こす画像生成呼び出し |
'compact' | コンテキスト圧縮 / 要約 |
ModelPolicyResult
コールバックの戻り値。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
model | string | (CustomModel & { model: string }) | はい | 文字列: モデル識別子 / オブジェクト: BYOK 認証情報 + モデル識別子 |
parameters | Record<string, unknown> | いいえ | モデルパラメータ上書き(temperature / max_tokens など) |
model の形式:
- 文字列 — バックエンドが対応する任意のモデル ID(
auto/performance/glm51など)。有効値はq.getAvailableModels()が実時間で返します。空文字不可で、空だとクエリが失敗します。 CustomModelオブジェクト(BYOK) — SDK はオブジェクトのmodelフィールドを抽出してこの呼び出しのモデル識別子として扱い、それ以外のフィールドは認証情報として CLI に転送し、サードパーティ LLM へルーティングします。
CustomModel
BYOK 認証情報。resolveModel コールバック内で model フィールドにこのオブジェクトを直接設定すると、その LLM リクエストはサードパーティプロバイダへルーティングされます。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
provider | string | はい | プロバイダ識別子。BYOKProviderInfo.key と一致する必要あり |
model | string | はい | モデル識別子。SDK がこの呼び出しのモデル ID として抽出 |
api_key | string | はい | ユーザーが提供する API Key |
url | string | いいえ | provider base URL の上書き |
style | string | いいえ | 上流プロトコル形式。"openai" / "anthropic" など。デフォルト "openai" |
providerはカタログのkeyと一致しなければバックエンド認証に失敗します。api_keyが誤っていると認証失敗としてクエリが直接失敗します(動的コールバックモードはフォールバックしません)。- BYOK 呼び出しはプラットフォーム上で
total_cost_usdが 0 として計上され、トークン使用量は実際の値で報告され、プロバイダ側で課金されます。
BYOK カタログ型
q.listByokProviders() が返す provider/model カタログ。
BYOKProviderInfo
| フィールド | 型 | 説明 |
|---|---|---|
key | string | プロバイダ識別子。BYOK 時は CustomModel.provider に設定 |
display_name | string | 表示名 |
api_key_url | string | ユーザーに API Key の取得先を案内する URL |
url | string | provider の推論リクエスト base URL |
fields | BYOKFieldInfo[] | ユーザーが入力する必要のあるフィールド |
types | BYOKModelTypeInfo[] | このプロバイダ配下のモデルグループ |
BYOKFieldInfo
| フィールド | 型 | 説明 |
|---|---|---|
key | string | フィールド key。例: api_key |
display_name | string | 表示名 |
type | string | フィールド入力タイプ |
mandatory | boolean | undefined | 必須かどうか |
BYOKModelTypeInfo
| フィールド | 型 | 説明 |
|---|---|---|
key | string | undefined | グループ識別子。よく見る値:cp / tp / pg |
display_name | string | グループ表示名 |
models | BYOKModelInfo[] | グループ配下のモデル |
BYOKModelInfo
| フィールド | 型 | 説明 |
|---|---|---|
key | string | モデル ID。CustomModel.model に設定 |
display_name | string | 表示名 |
is_vl | boolean | ビジョン / マルチモーダル入力の対応可否 |
is_reasoning | boolean | 推論型モデルかどうか |
format | string | 上流プロトコル形式(openai など) |
max_input_tokens | number | 最大入力トークン数 |
efforts | string[] | undefined | 明示的に対応する reasoning effort レベル |
supports_disabled | boolean | undefined | thinking の明示的な無効化に対応するか |
BYOKModelValidationInput
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
provider | string | はい | provider 識別子。例: openai |
model | string | はい | 検証するサードパーティモデル識別子 |
api_key | string | はい | ユーザー提供のサードパーティ API Key |
url | string | いいえ | provider base URL の上書き |
style | string | いいえ | provider wire format。例: openai |
ModelInfo
q.getAvailableModels() が返す利用可能モデルのサマリ。ModelPolicyContext.availableModels の要素型としても使われます。
| フィールド | 型 | 説明 |
|---|---|---|
value | string | モデル識別子。ModelPolicyResult.model や q.setModel() の引数に使用可 |
displayName | string | 表示名 |
description | string | モデル説明テキスト |
isEnabled | boolean | undefined | 現時点で利用可能か。undefined は利用可能扱い |
isNew | boolean | undefined | 新しく利用可能になったモデルか |
isFree | boolean | undefined | 無料で利用できるモデルか |
priceFactor | number | undefined | 価格係数 |
context_config | ModelContextConfig | undefined | コンテキストウィンドウ設定(階層ラベルから token 数へ) |
thinking_config | ModelThinkingConfig | undefined | thinking / reasoning 設定 |
ModelContextConfig
モデルのコンテキストウィンドウ設定。"200K" や "1M" などの階層ラベルで参照します。
| フィールド | 型 | 説明 |
|---|---|---|
token_count | number | この階層の token 数 |
is_default | boolean | undefined | デフォルト階層かどうか |
ModelThinkingConfig
モデルの thinking / reasoning 設定。
| フィールド | 型 | 説明 |
|---|---|---|
disabled | ModelThinkingDisabled | undefined | thinking 無効時の設定 |
enabled | ModelThinkingEnabled | undefined | thinking 有効時の設定。effort レベルを含む |
enabled.efforts | Record<string, ModelEffortEntry> | undefined | 各 effort レベルの説明とデフォルト指定 |
ModelPolicyTimeoutError
resolveModel コールバックが options.resolveModelTimeoutMs を超えても返さないときに SDK がスローします。クエリは直接失敗し、フォールバックはしません。
q.setModel()
ModelInfo.value を参照。
q.generateSessionTitle()
ai-title transcript entry は引き続き listSessions() と getSessionInfo() から取得できます。
q.getAvailableModels()
ModelPolicyContext.availableModels がすでに同等のリストを実時間で運ぶため、明示的に呼ぶ必要はありません。
q.listByokProviders()
nullを返す場合:CLI がこの API をサポートしていない(グレースフルフォールバック、例外なし)。- 配列を返す場合(空の場合あり):現在のアカウントで利用可能な provider リスト(空配列はアカウントが BYOK 未開通)。
q.validateByokModel()
true、サーバーが組み合わせを拒否した場合は false、実行中の CLI が validate_byok_model control request に対応していない場合は null を返します。
Session Transcript APIs
これらの helper はローカルに永続化された CLI transcript を読み取ります。検索対象の作業ディレクトリを限定する場合はoptions.dir を渡します。
listSubagents() は <project>/<sessionId>/subagents/agent-*.jsonl を走査し、親セッションに紐づく subagent ID を返します。getSubagentMessages() は指定した subagent transcript を読み取り、最新メッセージから parentUuid チェーンをたどって、user / assistant メッセージ列を時系列で返します。
CanUseTool
ホストがカスタムするツール権限承認コールバックです。
CanUseToolOptions
options フィールド | 型 | 説明 |
|---|---|---|
signal | AbortSignal | キャンセル時に abort される |
suggestions | PermissionUpdate[] | CLI が提案する権限更新 |
blockedPath | string | 承認をトリガーしたファイルパス(ファイル関連シーンのみ) |
decisionReason | string | CLI が提供する人間が読める承認理由 |
decisionReasonType | PermissionDecisionReasonType | 権限理由の分類 |
classifierApprovable | boolean | 現在の呼び出しがランタイム分類器で自動承認可能かどうか |
title / displayName / description | string | ランタイムで生成された人間が読める承認テキスト |
toolUseID | string | 今回のツール呼び出し ID |
agentID | string | 呼び出しを発行したサブエージェント ID |
exitPlanMode | ExitPlanModeApprovalDetails | 計画モードを終了するときの承認詳細 |
PermissionMode
| 値 | 意味 | 適した用途 |
|---|---|---|
'default' | 標準権限動作。ツール呼び出しは tools、allow / deny ルール、動的承認、ランタイムポリシーで処理されます | 大半の対話型セッション |
'acceptEdits' | ファイル編集系操作を自動承認します。その他の機密操作は通常の権限フローに従います | ワークスペースファイルの変更を許可したセッション |
'bypassPermissions' | 権限チェックをスキップします。allowDangerouslySkipPermissions: true も必要です | 信頼済み自動化またはテスト環境 |
'yolo' | 'bypassPermissions' の互換エイリアス。allowDangerouslySkipPermissions: true も必要です | 旧設定との互換。新規コードでの優先使用は非推奨 |
'plan' | 計画モード。まず実行計画を出す用途に適し、デフォルトでは実変更を行いません | 計画、設計、レビュー |
'dontAsk' | 対話確認を行いません。事前承認されていない、またはルールで許可されていない操作は拒否されます | 非対話環境、または確認ではなく失敗させたいワークフロー |
'auto' | ランタイム能力が allow / deny を自動判断します。安全なワークスペース内ファイル編集は自動許可される場合があります | 確認の中断を減らしつつランタイム判断を残したい場合 |
PermissionResult
CanUseTool の戻り値です。
allow.updatedInput を変更すると、ツールが実際に受け取る入力パラメータが置き換わります。deny.interrupt: true は拒否と同時にエージェントを中断します。
McpServerConfig
MCP サーバー設定。Options.mcpServers に渡します。
McpStdioServerConfig
McpSSEServerConfig
McpHttpServerConfig
McpSdkServerConfigWithInstance
createSdkMcpServer() ファクトリから返されます。MCP - In-Process Server を参照。
SdkPluginConfig
ローカルプラグインの読み込みです。
| フィールド | 型 | 説明 |
|---|---|---|
type | 'local' | 現在は local のみサポート |
path | string | プラグインディレクトリの絶対パスまたは相対パス |
CloudAgentOptions
Options.experimentalCloudAgent の型です。Cloud ランタイムの agent / session 参照を構成します。詳しい使い方は Cloud Agent を参照してください。
| フィールド | 型 | 説明 |
|---|---|---|
agent.id | string | 既存の Cloud Agent を再利用。agent.create と相互排他 |
agent.create | AgentCreateParams | 新しい Cloud Agent を作成。agent.id と相互排他 |
session.id | string | 既存の Cloud session を再利用。agent を併せて渡してはならない |
session.create | CloudSessionCreateParams | 新しい Cloud session を作成。environment_id は必須 |
stream.afterId | string | SSE replay の起点となるイベント ID |
stream.deltaFlushIntervalMs | number | デルタ内容のマージ / フラッシュ間隔(ミリ秒) |
AgentCreateParams
新しい Cloud Agent を作成するためのリクエストボディです。Qoder Cloud OpenAPI の agent create フィールドに対応します。
| フィールド | 型 | 説明 |
|---|---|---|
model | string | モデル識別子。使用可能な値:'auto' / 'ultimate' / 'performance' / 'efficient' / 'lite' |
name | string | 人間可読の agent 名 |
description | string | null | 説明 |
system | string | null | system prompt |
tools | 上記参照 | ビルトインツールセット。enabled_tools で許可リストを指定 |
mcp_servers | 上記参照 | URL 形式の MCP server 接続 |
skills | 上記参照 | ユーザー定義のカスタム Skill |
metadata | Record<string, string> | 任意のキー / 値メタデータ |
CloudSessionCreateParams
新しい Cloud session を作成するためのリクエストボディです。
| フィールド | 型 | 説明 |
|---|---|---|
environment_id | string | コンテナ環境 ID。必須 |
resources | 上記参照 | session コンテナにマウントするリソース(現状は file のみ) |
title | string | null | セッションタイトル |
vault_ids | string[] | 認証情報の vault ID |
memory_store_ids | string[] | memory store ID |
SandboxSettings
サンドボックス動作設定です。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
enabled | boolean | false | サンドボックスの有効化 |
autoAllowBashIfSandboxed | boolean | true | サンドボックス有効時に bash を自動通過 |
excludedCommands | string[] | [] | サンドボックスを静的にバイパスするコマンド(例: ['docker']) |
allowUnsandboxedCommands | boolean | true | モデルがサンドボックス外でコマンドを実行することを許可(canUseTool に落ちる) |
network | SandboxNetworkConfig | undefined | ネットワーク制限 |
filesystem | SandboxFilesystemConfig | undefined | ファイルシステム制限 |
ignoreViolations | { file?, network? } | undefined | パターンで無視する違反 |
SandboxNetworkConfig
SandboxFilesystemConfig
SettingSource
ロードする filesystem settings を制御します。
| 値 | 意味 | 場所 |
|---|---|---|
'user' | ユーザーレベルのグローバル settings | ~/.qoder/settings.json |
'project' | プロジェクト共有 settings(バージョン管理) | .qoder/settings.json |
'local' | プロジェクトローカル settings(gitignore) | .qoder/settings.local.json |
[] を渡すと完全にスキップします。
ToolConfig
組み込みツール動作設定です。
組み込みツール一覧
tools、allowedTools、disallowedTools、canUseTool、hooks matcher、Agent のツールホワイトリストでは、組み込みツールは下表のランタイムツール名を使用します。
| カテゴリ | ツール名 | 説明 |
|---|---|---|
| コマンド実行 | Bash | shell コマンドを実行 |
| ファイル操作 | Read | ファイル内容を読む |
| ファイル操作 | Edit | 文字列一致に基づいてファイルを編集 |
| ファイル操作 | Write | ファイルを作成または上書き |
| 検索 | Glob | ファイル名パターンで検索 |
| 検索 | Grep | 内容の正規表現で検索 |
| ネットワーク | WebFetch | URL 内容を取得して処理 |
| ネットワーク | WebSearch | Web 検索 |
| Agent | Agent | サブエージェントを呼び出す |
| 対話 | AskUserQuestion | ユーザーに質問する |
| Notebook | NotebookEdit | Notebook セルを編集 |
| バックグラウンドタスク | TaskOutput | バックグラウンドタスクへ出力を送る |
| バックグラウンドタスク | TaskStop | バックグラウンドタスクを停止 |
| 計画 / worktree | ExitPlanMode | 計画モードを終了 |
| 計画 / worktree | EnterWorktree | git worktree に入る |
| 計画 / worktree | ExitWorktree | worktree を終了 |
| 設定 | Config | 設定を読み書き |
| Todo | TodoWrite | Todo 項目を管理 |
| MCP リソース | ListMcpResources | MCP resources を列挙 |
| MCP リソース | ReadMcpResource | MCP resource を読む |
| MCP 呼び出し | Mcp | 汎用 MCP ツール呼び出し |
tool()
型安全な SDK MCP ツール定義を作成します。
| パラメータ | 型 | 必須 | 意味 | 現在の Qoder の挙動 |
|---|---|---|---|---|
name | string | はい | 現在の MCP server 内で一意なツール識別子 | モデルから見える完全なツール名 mcp__{serverName}__{name} を構成します。登録時は空文字不可 |
description | string | はい | モデルに見せるツール説明。いつ使うか、何をするか、何を返すかを説明します | ツール一覧へそのまま渡され、モデルが正しく呼び出すかに直接影響します。登録時は空文字不可 |
inputSchema | Schema extends AnyZodRawShape | はい | ツール入力パラメータを定義する Zod raw shape | SDK はこれを使って MCP input schema を生成し、handler の args を InferShape<Schema> として推論します |
handler | (args, extra) => Promise<CallToolResult> | はい | ツール呼び出し時に実行される非同期関数 | モデルがツールを呼ぶと SDK が実行します。戻り値は tool result としてモデルへ返されます |
extras | ToolExtras | いいえ | ツール追加メタ情報。現在は annotations に使用 | SDK は対応する annotations を MCP server に登録します。権限設定の代替にはなりません |
tool() 自体はツールを定義する factory 関数です。name、description、重複ツール名などの登録制約は、createSdkMcpServer() がツール登録時に検証します。
AnyZodRawShape
AnyZodRawShape は Zod 3 / Zod 4 と互換です。これはフィールドオブジェクトを表し、z.object(...) ではありません。
InferShape
InferShape は Zod raw shape から handler の args 型を推論します。
SdkMcpToolDefinition
ToolExtras
ToolAnnotations
| フィールド | 型 | 任意 | 意味 | 現在の Qoder の挙動 |
|---|---|---|---|---|
title | string | はい | ツールの人間向けタイトル | MCP メタ情報。現在は検証済み Qoder 挙動能力としては説明していません |
readOnlyHint | boolean | はい | ツールが状態を変更しないことを示す | 現在観測できる効果は、読み取り専用ツールが同一 batch の tool calls 内で並行実行可能になる条件を満たせることです。権限スイッチではありません |
destructiveHint | boolean | はい | ツールが破壊的更新を行う可能性を示す | リスクメタ情報。承認済みツールの実行を自動的に止めるものではありません |
openWorldHint | boolean | はい | ツールが外部の open world とやり取りするかを示す | 外部やり取りのメタ情報。承認済みツールの実行を自動的に止めるものではありません |
tools、allowedTools、disallowedTools、permissionMode、canUseTool、hooks によって決まります。機能ドキュメントで検証済み挙動能力として扱うのは readOnlyHint、destructiveHint、openWorldHint です。title は MCP メタ情報として型リファレンスに残しています。
createSdkMcpServer()
SDK と同一プロセスで動作する MCP server を作成します。
CreateSdkMcpServerOptions
| フィールド | デフォルト | 説明 |
|---|---|---|
name | 必須 | MCP server 名。mcp__{serverName}__{toolName} に入ります |
version | '1.0.0' | server バージョン情報 |
tools | undefined | この server に登録するツール一覧 |
戻り値
McpSdkServerConfigWithInstance を返します。これは options.mcpServers の値としてそのまま渡せます。完全な MCP server 設定は McpServerConfig を参照してください。
CallToolResult
ツール handler は MCP プロトコルの CallToolResult を返します。
McpToolResultContent
| フィールド | 説明 |
|---|---|
content | モデルへ返す content block 配列 |
isError | true の場合、ツールが意味的に失敗したことを示します |
_meta | ツール結果メタデータ。MCP レスポンスとともに透過的に渡されます |
組み込みツール入力出力型
SDK は型レベルで組み込みツールの入力 / 出力構造を提供します。注意: これらは TypeScript の型名です。権限設定では引き続き上記のランタイムツール名を使用します。AgentInput / AgentOutput
BashInput / BashOutput
FileReadInput / FileReadOutput
ランタイムツール名は Read です。型名は FileReadInput / FileReadOutput のままです。
FileEditInput / FileEditOutput
ランタイムツール名は Edit です。
FileWriteInput / FileWriteOutput
ランタイムツール名は Write です。
GlobInput / GlobOutput
GrepInput / GrepOutput
WebFetchInput / WebFetchOutput
WebSearchInput / WebSearchOutput
AskUserQuestionInput / AskUserQuestionOutput
NotebookEditInput / NotebookEditOutput
TaskOutputInput
TaskStopInput / TaskStopOutput
ExitPlanModeInput / ExitPlanModeOutput
ConfigInput / ConfigOutput
EnterWorktreeInput / EnterWorktreeOutput
ExitWorktreeInput / ExitWorktreeOutput
TodoWriteInput / TodoWriteOutput
ListMcpResourcesInput / ListMcpResourcesOutput
ReadMcpResourceInput
McpInput / McpOutput
ToolInputSchemas
ToolOutputSchemas
Hooks リファレンス
使用ガイドとサンプルは Hooks を参照してください。イベント概要
| イベント | トリガー | 制御可能な動作 |
|---|---|---|
PreToolUse | ツール呼び出し前 | インターセプト / 許可 / 入力の変更 |
PostToolUse | ツール成功後 | 監査 / コンテキスト注入 / 出力の上書き |
PostToolUseFailure | ツール失敗後 | エラーハンドリング / ロギング |
UserPromptSubmit | ユーザープロンプト送信前 | コンテキスト注入 / インターセプト |
SessionStart | セッション開始時 | 初期化 / コンテキスト注入 |
SessionEnd | セッション終了時 | クリーンアップ / ロギング |
Stop | AI が生成を停止した時 | 停止の防止、続行の強制 |
SubagentStart | サブエージェント開始時 | 監視 / ロギング |
SubagentStop | サブエージェント停止時 | 監視 / ロギング |
PreCompact | コンテキスト圧縮前 | 監視 / ロギング |
PostCompact | コンテキスト圧縮後 | 監視 / ロギング |
CwdChanged | 作業ディレクトリ変更時 | 監視 / ロギング |
InstructionsLoaded | 命令ファイルロード時 | 監視 / ロギング |
FileChanged | ファイルの作成/変更/削除時 | 監視 / ロギング |
PermissionRequest | パーミッション要求時 | パーミッション要求を自動承認 / 拒否 |
HookEvent
登録可能な hook イベントの共用体型です。
HookCallback
HookCallbackMatcher
| フィールド | 型 | 説明 |
|---|---|---|
matcher | string | オプションの正規表現。tool_name でフィルタリング |
hooks | HookCallback[] | マッチ時に実行されるコールバックリスト |
timeout | number | オプション。タイムアウト(秒)、デフォルト 60 |
BaseHookInput
すべての hook イベントで共有される入力フィールドです。
| フィールド | 型 | 説明 |
|---|---|---|
hook_event_name | string | イベントタイプ識別子(例:"PreToolUse") |
session_id | string | 現在のセッションの一意識別子 |
transcript_path | string | セッション記録ファイルパス(JSONL 形式) |
cwd | string | セッションの現在の作業ディレクトリ |
HookJSONOutput
Hook コールバックの戻り値の型です。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
continue | boolean | true | false に設定するとセッションを終了。PreToolUse、PostToolUse、PostToolUseFailure、UserPromptSubmit、Stop、SubagentStop のみ有効 |
stopReason | string | — | 停止理由(continue: false と併用) |
decision | string | — | "approve" または "block"。"block" はツール実行を阻止。Stop イベントでは停止を防止し続行を強制 |
reason | string | — | 決定理由(モデルに表示。Stop イベントの "block" では続行プロンプトとして注入) |
hookSpecificOutput | object | — | イベント固有の出力(各イベント型を参照) |
複数の hook が競合するdecision値を返した場合、"deny"/"block"が優先されます(最も厳格なルールが適用)。
PreToolUseHookInput
| フィールド | 型 | 説明 |
|---|---|---|
permission_mode | string | undefined | 現在のセッションのパーミッションモード |
tool_name | string | 呼び出されるツール名 |
tool_input | unknown | ツールに渡される引数 |
hookSpecificOutput:
| フィールド | 型 | 説明 |
|---|---|---|
hookEventName | "PreToolUse" | 必須 |
permissionDecision | string | "allow" / "deny" / "ask" / "defer" |
permissionDecisionReason | string | パーミッション決定理由 |
updatedInput | Record<string, unknown> | 変更されたツール入力。元の tool_input を置換 |
additionalContext | string | モデルの次のターンに注入される追加コンテキスト |
PostToolUseHookInput
| フィールド | 型 | 説明 |
|---|---|---|
tool_name | string | 呼び出されたツール名 |
tool_input | unknown | ツールに渡された引数 |
tool_response | unknown | ツールの実行結果 |
| フィールド | 場所 | 動作 |
|---|---|---|
hookSpecificOutput.updatedToolOutput | イベント固有出力 | tool_response を上書き。モデルは上書き後の値のみ参照 |
hookSpecificOutput.additionalContext | イベント固有出力 | 補足コンテキストを追加。元の結果は変更しない |
decision: "block" + reason | トップレベル出力 | エージェントがこのツール結果をさらに処理することを阻止 |
hookSpecificOutput:
| フィールド | 型 | 説明 |
|---|---|---|
hookEventName | "PostToolUse" | 必須 |
updatedToolOutput | string | ツールレスポンスの内容を上書き |
additionalContext | string | ツール結果に付加される追加コンテキスト |
複数の hook が updatedToolOutput を設定した場合、最後の非空値が有効になります。チェーン変換が必要な場合は、単一のコールバック内で順次実行してください。
PostToolUseFailureHookInput
| フィールド | 型 | 説明 |
|---|---|---|
tool_name | string | 失敗したツール名 |
tool_input | unknown | ツールに渡された引数 |
error | string | エラーメッセージ |
is_interrupt | boolean | undefined | 中断/中止によるものかどうか |
UserPromptSubmitHookInput
| フィールド | 型 | 説明 |
|---|---|---|
prompt | string | ユーザー入力テキスト |
hookSpecificOutput:
| フィールド | 型 | 説明 |
|---|---|---|
hookEventName | "UserPromptSubmit" | 必須 |
additionalContext | string | ユーザープロンプトに追加される追加コンテキスト |
SessionStartHookInput
| フィールド | 型 | 説明 |
|---|---|---|
source | string | セッション開始理由:"startup" / "resume" / "clear" / "compact" |
hookSpecificOutput:
| フィールド | 型 | 説明 |
|---|---|---|
hookEventName | "SessionStart" | 必須 |
additionalContext | string | セッション開始時に注入されるコンテキスト |
SessionEndHookInput
| フィールド | 型 | 説明 |
|---|---|---|
reason | string | セッション終了理由:"clear" / "resume" / "logout" / "prompt_input_exit" / "other" / "bypass_permissions_disabled" |
StopHookInput
| フィールド | 型 | 説明 |
|---|---|---|
stop_hook_active | boolean | Stop hook が現在停止を防止しているかどうか |
{ decision: 'block', reason: '...' } を返すと AI の停止を防止し続行を強制します。reason は続行プロンプトとしてモデルコンテキストに注入されます。
SubagentStartHookInput
| フィールド | 型 | 説明 |
|---|---|---|
agent_id | string | サブエージェントインスタンスの一意識別子 |
agent_type | string | サブエージェントのタイプ/ロール |
SubagentStopHookInput
| フィールド | 型 | 説明 |
|---|---|---|
stop_hook_active | boolean | Stop hook が現在停止を防止しているかどうか |
PreCompactHookInput
| フィールド | 型 | 説明 |
|---|---|---|
trigger | string | トリガー理由:"manual" / "auto" |
custom_instructions | string | null | 圧縮サマリーのカスタム命令 |
PostCompactHookInput
| フィールド | 型 | 説明 |
|---|---|---|
trigger | string | トリガー理由:"manual" / "auto" |
compact_summary | string | コンテキスト圧縮後に生成されたサマリー |
CwdChangedHookInput
| フィールド | 型 | 説明 |
|---|---|---|
old_cwd | string | 変更前の作業ディレクトリ |
new_cwd | string | 変更後の作業ディレクトリ |
InstructionsLoadedHookInput
| フィールド | 型 | 説明 |
|---|---|---|
load_reason | string | ロード理由:"nested_traversal" / "path_glob_match" |
FileChangedHookInput
| フィールド | 型 | 説明 |
|---|---|---|
file_path | string | 変更されたファイルのパス |
event | string | ファイルシステムイベント:"change" / "add" / "unlink" |
PermissionRequestHookInput
| フィールド | 型 | 説明 |
|---|---|---|
tool_name | string | パーミッションを要求するツール |
tool_input | unknown | ツール入力引数 |
permission_suggestions | PermissionUpdate[] | undefined | 提案されるパーミッションルール |
hookSpecificOutput:
| フィールド | 型 | 説明 |
|---|---|---|
hookEventName | "PermissionRequest" | 必須 |
decision | object | パーミッション決定(下記参照) |
decision は以下のいずれかです:
- 承認:
{ behavior: "allow", updatedInput?: Record<string, unknown>, updatedPermissions?: PermissionUpdate[] } - 拒否:
{ behavior: "deny", message?: string }
Message Types
SDKMessage
Query からストリーム出力されるすべてのメッセージの判別ユニオンです。
message.type で分岐し、次に subtype でさらに細分化します(system / result 型のみ subtype を持ちます)。
SDKAssistantMessage
AI の完全な応答。ターンごとに1回到達します。
SDKUserMessage
ユーザーメッセージまたはツール結果のフィードバックです。
SDKUserMessageReplay
セッション復元時にリプレイされる履歴ユーザーメッセージです。
SDKResultMessage
セッション全体が終了した時の最終メッセージです。
SDKSystemMessage
セッション初期化メッセージ(subtype: 'init')。その他のシステムイベントは個別のメッセージ型で送達されます。以下の各 SDK*Message を参照してください。
SDKPartialAssistantMessage
includePartialMessages: true の有効化が必要です。トークン単位で増分ストリーム出力されます。完全な使用法は ストリーム出力 を参照してください。
SDKCompactBoundaryMessage
コンテキスト圧縮完了の境界マーカーです。
SDKStatusMessage
セッション実行ステータスの変化(例: 圧縮中)です。
SDKMcpStatusChangeMessage
MCP コネクションプールのステータス変化です。
SDKAPIRetryMessage
ネットワーク/サービス異常時の自動リトライです。
SDKLocalCommandOutputMessage
ローカル slash command の出力です。
SDKHookStartedMessage
Hook の実行開始です。
SDKHookProgressMessage
Hook 実行中の出力です。
SDKHookResponseMessage
Hook の終了です。
SDKTaskStartedMessage
サブエージェントタスクの開始です。
SDKTaskProgressMessage
サブエージェントタスクの進捗です。
SDKTaskNotificationMessage
サブエージェントタスクの終了です。
SDKSessionStateChangedMessage
メインセッションの実行ステータス変化です。
SDKSessionTitleChangedMessage
セッションタイトルの変化です。
SDKBridgeStateMessage
Bridge 接続ステータスの変化です。
SDKFilesPersistedEvent
ファイルチェックポイントの永続化結果です。
SDKElicitationCompleteMessage
MCP elicitation の完了です。
SDKPermissionDeniedMessage
ツール呼び出しが権限ポリシーによりショートサーキット拒否された場合(dontAsk / auto / deny rule など)です。
SDKPromptSuggestionMessage
promptSuggestions: true 有効化後、各ターンの result 後に受信可能な次ステップの提案です。
SDKCloudAgentEventMessage
Cloud ランタイム(options.experimentalCloudAgent)下で、Qoder Cloud session の SSE ストリームから転送されるイベントです。詳しい使い方は Cloud Agent を参照してください。
| フィールド | 型 | 説明 |
|---|---|---|
event | string | Cloud イベント名(例:user.message、agent.message、session.status_idle) |
id | string | SSE イベント ID。stream.afterId の replay 起点として使用可能 |
data | unknown | Cloud イベント payload(turn_id などのフィールドを含む) |
session_id | string | このイベントが属する Cloud session ID |
SDKPermissionDenial
SDKResultMessage.permission_denials 配列内の要素です。