436| Parameter | Tipe | Default | Deskripsi |436| Parameter | Tipe | Default | Deskripsi |
437| :------------------------------ | :------------------------------------ | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |437| :------------------------------ | :------------------------------------ | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
438| `options.cwd` | `string` | `process.cwd()` | Direktori untuk menyelesaikan pengaturan proyek dan lokal relatif terhadap |438| `options.cwd` | `string` | `process.cwd()` | Direktori untuk menyelesaikan pengaturan proyek dan lokal relatif terhadap |
439| `options.settingSources` | [`SettingSource`](#settingsource)`[]` | Semua sumber | Sumber filesystem mana yang akan dimuat. Lewatkan `[]` untuk melewati pengaturan pengguna, proyek, dan lokal. Kebijakan yang dikelola endpoint dimuat dalam semua kasus. `resolveSettings()` menyertakan pengaturan yang dikelola server hanya ketika Anda melewatkan `options.serverManagedSettings` |439| `options.settingSources` | [`SettingSource`](#settingsource)`[]` | Semua sumber | Sumber filesystem mana yang akan dimuat. Lewatkan `[]` untuk melewati pengaturan pengguna, proyek, dan lokal. [Kebijakan yang dikelola endpoint](/docs/id/managed-settings#delivery-mechanisms) dimuat dalam semua kasus. `resolveSettings()` menyertakan pengaturan yang dikelola server hanya ketika Anda melewatkan `options.serverManagedSettings` |
440| `options.managedSettings` | `Settings` | `undefined` | Pengaturan tingkat kebijakan yang disediakan oleh host penyematan. Mengikuti aturan yang sama dengan [`managedSettings` dalam `Options`](#options), kecuali bahwa `resolveSettings()` tidak mengeksekusi [`policyHelper`](/docs/id/settings-reference#policyhelper) yang dikonfigurasi, sehingga snapshot dapat mencakup pengaturan yang dijatuhkan sesi live |440| `options.managedSettings` | `Settings` | `undefined` | Pengaturan tingkat kebijakan yang disediakan oleh host penyematan. Mengikuti aturan yang sama dengan [`managedSettings` dalam `Options`](#options), kecuali bahwa `resolveSettings()` tidak mengeksekusi [`policyHelper`](/docs/id/settings-reference#policyhelper) yang dikonfigurasi, sehingga snapshot dapat mencakup pengaturan yang dijatuhkan sesi live |
441| `options.serverManagedSettings` | `Settings` | `undefined` | Payload pengaturan yang dikelola server dari `/api/claude_code/settings`. Kunci non-pembatasan melewati tanpa filter |441| `options.serverManagedSettings` | `Settings` | `undefined` | Payload pengaturan yang dikelola server dari `/api/claude_code/settings`. Kunci non-pembatasan melewati tanpa filter |
442 442
471```471```
472 472
473<h2 id="types">473<h2 id="types">
474 Tipe474 Jenis
475</h2>475</h2>
476 476
477<h3 id="options">477<h3 id="options">
480 480
481Objek konfigurasi untuk fungsi `query()`.481Objek konfigurasi untuk fungsi `query()`.
482 482
483| Properti | Tipe | Default | Deskripsi |483| Properti | Jenis | Default | Deskripsi |
484| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |484| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
485| `abortController` | `AbortController` | `new AbortController()` | Pengontrol untuk membatalkan operasi |485| `abortController` | `AbortController` | `new AbortController()` | Pengontrol untuk membatalkan operasi |
486| `additionalDirectories` | `string[]` | `[]` | Direktori tambahan yang dapat diakses Claude. SDK meneruskan setiap entri ke Claude Code sebagai `--add-dir`, jadi dengan pengaturan `project` sumber Claude Code juga [memuat skills, commands, dan subagents direktori](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) |486| `additionalDirectories` | `string[]` | `[]` | Direktori tambahan yang dapat diakses Claude. SDK meneruskan setiap entri ke Claude Code sebagai `--add-dir`, jadi dengan pengaturan `project` sumber Claude Code juga [memuat skills, commands, dan subagents direktori](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) |
487| `agent` | `string` | `undefined` | Nama agen untuk thread utama. Agen harus didefinisikan dalam opsi `agents` atau dalam pengaturan |487| `agent` | `string` | `undefined` | Nama agent untuk thread utama. Agent harus didefinisikan dalam opsi `agents` atau dalam pengaturan |
488| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Tentukan subagen secara terprogram |488| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Tentukan subagents secara terprogram |
489| `agentProgressSummaries` | `boolean` | `false` | Ketika `true`, hasilkan ringkasan kemajuan satu baris untuk subagen dan teruskan pada event [`task_progress`](#sdktaskprogressmessage) melalui field `summary`. Berlaku untuk subagen foreground dan background |489| `agentProgressSummaries` | `boolean` | `false` | Ketika `true`, hasilkan ringkasan kemajuan satu baris untuk subagents dan teruskan pada acara [`task_progress`](#sdktaskprogressmessage) melalui bidang `summary`. Berlaku untuk subagents foreground dan background |
490| `allowDangerouslySkipPermissions` | `boolean` | `false` | Aktifkan bypass izin. Diperlukan saat menggunakan `permissionMode: 'bypassPermissions'` |490| `allowDangerouslySkipPermissions` | `boolean` | `false` | Aktifkan bypass permissions. Diperlukan saat menggunakan `permissionMode: 'bypassPermissions'`, saat startup atau kemudian melalui `setPermissionMode()`. Lihat [plan mode](/docs/id/agent-sdk/permissions#plan-mode-plan) untuk cara interaksinya dengan `permissionMode: 'plan'` |
491| `allowedTools` | `string[]` | `[]` | Tool untuk auto-approve tanpa prompt. Ini tidak membatasi Claude hanya pada tool ini. Jika Anda menyebutkan salah satu dari [task-tracking tools](/docs/id/agent-sdk/todo-tracking#model-availability) di sini, Claude Code juga opt-in sesi. Tool lainnya yang tidak terdaftar jatuh ke `permissionMode` dan `canUseTool`. Gunakan `disallowedTools` untuk memblokir tool. Lihat [Izin](/docs/id/agent-sdk/permissions#allow-and-deny-rules) |491| `allowedTools` | `string[]` | `[]` | Tools untuk auto-approve tanpa prompt. Ini tidak membatasi Claude hanya pada tools ini. Jika Anda menyebutkan salah satu [task-tracking tools](/docs/id/agent-sdk/todo-tracking#model-availability) di sini, Claude Code juga opt-in sesi. Tools lain yang tidak terdaftar jatuh ke `permissionMode` dan `canUseTool`. Gunakan `disallowedTools` untuk memblokir tools. Lihat [Permissions](/docs/id/agent-sdk/permissions#allow-and-deny-rules) |
492| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Aktifkan fitur beta |492| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Aktifkan fitur beta |
493| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Fungsi izin kustom, dipanggil hanya ketika [alur izin](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) jatuh ke prompt. Tidak dipanggil untuk panggilan yang di-auto-approve oleh `allowedTools`, aturan allow, atau `permissionMode`. Aturan allow tidak pre-approve [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves); lihat [Bagaimana izin dievaluasi](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) untuk mana dari mereka yang mencapai callback dan apa yang terjadi dalam mode `dontAsk` dan `auto`. Lihat [`CanUseTool`](#canusetool) untuk detail |493| `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Fungsi permission kustom, dipanggil hanya ketika [permission flow](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) jatuh ke prompt. Tidak dipanggil untuk panggilan yang di-auto-approve oleh `allowedTools`, allow rules, atau `permissionMode`. Sebuah allow rule tidak pre-approve [actions no mode auto-approves](/docs/id/permission-modes#actions-no-mode-auto-approves). Lihat [`CanUseTool`](#canusetool) untuk detail |
494| `continue` | `boolean` | `false` | Lanjutkan percakapan terbaru |494| `continue` | `boolean` | `false` | Lanjutkan percakapan terbaru |
495| `cwd` | `string` | `process.cwd()` | Direktori kerja saat ini |495| `cwd` | `string` | `process.cwd()` | Direktori kerja saat ini |
496| `debug` | `boolean` | `false` | Aktifkan mode debug untuk proses Claude Code |496| `debug` | `boolean` | `false` | Aktifkan mode debug untuk proses Claude Code |
497| `debugFile` | `string` | `undefined` | Tulis log debug ke jalur file tertentu. Secara implisit mengaktifkan mode debug |497| `debugFile` | `string` | `undefined` | Tulis debug logs ke path file tertentu. Secara implisit mengaktifkan mode debug |
498| `disallowedTools` | `string[]` | `[]` | Tool untuk tolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok dalam setiap mode izin, termasuk `bypassPermissions`, untuk perintah [seperti yang ditulis](/docs/id/permissions#bash-rule-limits). Lihat [Izin](/docs/id/agent-sdk/permissions#allow-and-deny-rules) |498| `disallowedTools` | `string[]` | `[]` | Tools untuk ditolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok di setiap permission mode, termasuk `bypassPermissions`, untuk perintah [seperti yang ditulis](/docs/id/permissions#bash-rule-limits). Lihat [Permissions](/docs/id/agent-sdk/permissions#allow-and-deny-rules) |
499| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Mengontrol seberapa banyak usaha yang Claude masukkan ke dalam responsnya. Bekerja dengan pemikiran adaptif untuk memandu kedalaman pemikiran. Lihat [sesuaikan tingkat usaha](/docs/id/model-config#adjust-effort-level) |499| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Mengontrol berapa banyak usaha yang Claude keluarkan dalam responsnya. Bekerja dengan adaptive thinking untuk memandu kedalaman thinking. Lihat [adjust the effort level](/docs/id/model-config#adjust-effort-level) |
500| `enableFileCheckpointing` | `boolean` | `false` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |500| `enableFileCheckpointing` | `boolean` | `false` | Aktifkan file change tracking untuk rewinding. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |
501| `env` | `Record<string, string \| undefined>` | `process.env` | Variabel lingkungan. Ketika diatur, ini mengganti lingkungan subprocess alih-alih menggabungkan dengan `process.env`, jadi lewatkan `{ ...process.env, YOUR_VAR: 'value' }` untuk menyimpan variabel yang diwariskan seperti `PATH`. Lihat [Tangani respons API yang lambat atau terhenti](#handle-slow-or-stalled-api-responses) untuk contoh pola ini, dan [Variabel lingkungan](/docs/id/env-vars) untuk variabel yang dibaca CLI yang mendasarinya. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |501| `env` | `Record<string, string \| undefined>` | `process.env` | Variabel lingkungan. Ketika diatur, ini menggantikan lingkungan subprocess alih-alih merge dengan `process.env`, jadi teruskan `{ ...process.env, YOUR_VAR: 'value' }` untuk menjaga variabel yang diwariskan seperti `PATH`. Lihat [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) untuk contoh pola ini, dan [Environment variables](/docs/id/env-vars) untuk variabel yang dibaca CLI yang mendasar. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |
502| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | Runtime JavaScript yang akan digunakan |502| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | JavaScript runtime untuk digunakan |
503| `executableArgs` | `string[]` | `[]` | Argumen untuk diteruskan ke executable |503| `executableArgs` | `string[]` | `[]` | Argumen untuk diteruskan ke executable |
504| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumen tambahan |504| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumen tambahan |
505| `fallbackModel` | `string` | `undefined` | Model yang digunakan jika model utama gagal |505| `fallbackModel` | `string` | `undefined` | Model untuk digunakan jika model utama gagal. Menerima daftar yang dipisahkan koma. Untuk urutan dan batas, lihat [Fallback model chains](/docs/id/model-config#fallback-model-chains). Untuk panduan, lihat [Choose a model](/docs/id/agent-sdk/configuration#choose-a-model) |
506| `forkSession` | `boolean` | `false` | Saat melanjutkan dengan `resume`, fork ke ID sesi baru alih-alih melanjutkan sesi asli |506| `forkSession` | `boolean` | `false` | Ketika melanjutkan dengan `resume`, fork ke session ID baru alih-alih melanjutkan session asli |
507| `forwardSubagentText` | `boolean` | `false` | Teruskan blok teks dan pemikiran subagen sebagai pesan asisten dan pengguna dengan `parent_tool_use_id` diatur, sehingga konsumen dapat merender transkrip bersarang. Tanpa opsi ini, Claude Code memancarkan blok `tool_use` dan `tool_result` subagen tetapi bukan teks atau pemikiran. Pesan dari subagen di setiap kedalaman bersarang diteruskan pada Claude Code v2.1.219 dan lebih baru; sebelum v2.1.219, hanya pesan dari subagen depth-1 yang muncul |507| `forwardSubagentText` | `boolean` | `false` | Teruskan blok teks dan thinking subagent sebagai pesan assistant dan user dengan `parent_tool_use_id` diatur, sehingga konsumen dapat merender transkrip bersarang. Tanpa opsi ini, Claude Code memancarkan blok `tool_use` dan `tool_result` subagent tetapi bukan teks atau thinking. Pesan dari subagents di setiap kedalaman nesting diteruskan pada Claude Code v2.1.219 dan lebih baru; sebelum v2.1.219, hanya pesan dari subagents depth-1 yang muncul |
508| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Callback hook untuk event |508| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Hook callbacks untuk acara |
509| `includeHookEvents` | `boolean` | `false` | Sertakan event lifecycle hook dalam aliran pesan sebagai [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), dan [`SDKHookResponseMessage`](#sdkhookresponsemessage). Event lifecycle untuk hook `SessionStart` dan `Setup` selalu disertakan dan tidak memerlukan opsi ini. Beberapa event hook, seperti `Notification`, `SessionEnd`, `PreCompact`, dan `PostCompact`, tidak pernah menghasilkan `SDKHookStartedMessage`, bahkan dengan opsi ini. Untuk event tersebut, Claude Code masih memancarkan `SDKHookProgressMessage` saat command hook yang berjalan lebih dari satu detik menghasilkan output, dan memancarkan `SDKHookResponseMessage` hanya ketika hook [yang berjalan di background](/docs/id/hooks#run-hooks-in-the-background) selesai |509| `includeHookEvents` | `boolean` | `false` | Sertakan hook lifecycle events dalam message stream sebagai [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), dan [`SDKHookResponseMessage`](#sdkhookresponsemessage). Lifecycle events untuk `SessionStart` dan `Setup` hooks selalu disertakan dan tidak memerlukan opsi ini. Beberapa hook events, seperti `Notification`, `SessionEnd`, `PreCompact`, dan `PostCompact`, tidak pernah menghasilkan `SDKHookStartedMessage`, bahkan dengan opsi ini. Untuk acara tersebut, Claude Code masih memancarkan `SDKHookProgressMessage` saat command hook yang berjalan lebih dari satu detik menghasilkan output, dan memancarkan `SDKHookResponseMessage` hanya ketika hook [yang berjalan di background](/docs/id/hooks#run-hooks-in-the-background) selesai |
510| `includePartialMessages` | `boolean` | `false` | Sertakan event pesan parsial |510| `includePartialMessages` | `boolean` | `false` | Sertakan partial message events |
511| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout dalam milidetik untuk setiap panggilan `sessionStore.load()` dan `sessionStore.listSubkeys()` selama materialisasi resume. Jika adapter tidak settle dalam jendela ini, query gagal alih-alih hang. Diabaikan ketika `sessionStore` tidak diatur |511| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout dalam milidetik untuk setiap panggilan `sessionStore.load()` dan `sessionStore.listSubkeys()` selama resume materialization. Jika adapter tidak settle dalam jendela ini, query gagal alih-alih hang. Diabaikan ketika `sessionStore` tidak diatur |
512| `managedSettings` | `Settings` | `undefined` | Pengaturan tingkat kebijakan yang disediakan oleh proses host yang memunculkan sesi. Pada mesin dengan pengaturan terkelola yang diterapkan admin, Claude Code mengabaikan ini kecuali sumber terkelola prioritas tertinggi admin menetapkan `parentSettingsBehavior: 'merge'`, dan tidak pernah menggabungkannya saat [`policyHelper`](/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola. Nilai yang digabungkan melewati filter restrictive-only; [Batasi pengaturan parent](/docs/id/claude-apps-gateway#restrict-parent-settings) mencakup apa yang filter terima dan kunci `allowManaged*Only`. Host yang menetapkan [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/id/env-vars) memiliki tiga kunci yang dibaca langsung dari payload ini sebagai gantinya: [konfigurasi modelnya](/docs/id/model-config#restrict-model-selection) pada Claude Code v2.1.222 atau lebih baru, [`modelPricing`](/docs/id/settings-reference#modelpricing) ketika tidak ada sumber terkelola yang menetapkannya pada v2.1.246 atau lebih baru, dan entri `ENABLE_TOOL_SEARCH` env-nya pada v2.1.247 atau lebih baru |512| `managedSettings` | `Settings` | `undefined` | Pengaturan policy-tier yang host process Anda sediakan untuk spawned session. Pada mesin dengan managed settings yang di-deploy admin, Claude Code mengabaikan ini kecuali sumber managed priority tertinggi admin menetapkan `parentSettingsBehavior: 'merge'`, dan tidak pernah merge saat [`policyHelper`](/docs/id/settings-reference#policyhelper) menyediakan managed settings. Nilai merged melewati filter restrictive-only; [Restrict parent settings](/docs/id/claude-apps-gateway#restrict-parent-settings) mencakup apa yang filter terima dan kunci `allowManaged*Only`. Host yang menetapkan [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/id/env-vars) memiliki tiga kunci yang dibaca langsung dari payload ini: [model configuration](/docs/id/model-config#restrict-model-selection) pada Claude Code v2.1.222 atau lebih baru, [`modelPricing`](/docs/id/settings-reference#modelpricing) ketika tidak ada sumber managed yang menetapkannya pada v2.1.246 atau lebih baru, dan entri `ENABLE_TOOL_SEARCH` env-nya pada v2.1.247 atau lebih baru |
513| `maxBudgetUsd` | `number` | `undefined` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Dibandingkan dengan estimasi yang sama seperti `total_cost_usd`; lihat [Lacak biaya dan penggunaan](/docs/id/agent-sdk/cost-tracking) untuk peringatan akurasi |513| `maxBudgetUsd` | `number` | `undefined` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Dibandingkan dengan estimasi yang sama seperti `total_cost_usd`. Untuk caveat akurasi dan perilaku reset, lihat [Track cost and usage](/docs/id/agent-sdk/cost-tracking) |
514| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses pemikiran |514| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimal untuk proses thinking |
515| `maxTurns` | `number` | `undefined` | Putaran agen maksimum (perjalanan round-trip penggunaan tool) |515| `maxTurns` | `number` | `undefined` | Maksimal agentic turns (tool-use round trips) |
516| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi server MCP |516| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi MCP server |
517| `model` | `string` | Default dari CLI | Alias model Claude atau nama model lengkap. Lihat [nilai yang diterima dan ID khusus penyedia](/docs/id/model-config#available-models) |517| `model` | `string` | Default dari CLI | Alias model Claude atau nama model lengkap. Lihat [accepted values and provider-specific IDs](/docs/id/model-config#available-models) |
518| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback untuk menangani permintaan elicitation MCP. Dipanggil ketika server MCP meminta input pengguna dan tidak ada hook yang menanganinya terlebih dahulu. Ketika tidak disediakan, permintaan elicitation yang tidak ditangani secara otomatis ditolak |518| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback untuk menangani MCP elicitation requests. Dipanggil ketika MCP server meminta input pengguna dan tidak ada hook yang menanganinya terlebih dahulu. Ketika tidak disediakan, unhandled elicitation requests ditolak secara otomatis |
519| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Tentukan format output untuk hasil agen. Lihat [Output terstruktur](/docs/id/agent-sdk/structured-outputs) untuk detail |519| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Tentukan format output untuk hasil agent. Lihat [Structured outputs](/docs/id/agent-sdk/structured-outputs) untuk detail |
520| `outputStyle` | `string` | `undefined` | Bukan field `Options`. Atur `outputStyle` dalam objek [`settings`](/docs/id/settings) inline atau file pengaturan sebagai gantinya. Lihat [Aktifkan output style](/docs/id/agent-sdk/modifying-system-prompts#activate-an-output-style) |520| `outputStyle` | `string` | `undefined` | Bukan bidang `Options`. Atur `outputStyle` dalam objek [`settings`](/docs/id/settings) inline atau file settings. Lihat [Activate an output style](/docs/id/agent-sdk/modifying-system-prompts#activate-an-output-style) |
521| `pathToClaudeCodeExecutable` | `string` | Auto-resolved dari biner asli bundel | Jalur ke executable Claude Code. Hanya diperlukan jika dependensi opsional dilewati selama instalasi atau platform Anda tidak dalam set yang didukung |521| `pathToClaudeCodeExecutable` | `string` | Auto-resolved dari bundled native binary | Path ke Claude Code executable. Hanya diperlukan jika optional dependencies dilewati selama install atau platform Anda tidak dalam set yang didukung |
522| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | Mode izin untuk sesi |522| `permissionMode` | [`PermissionMode`](#permissionmode) | `'default'` | Permission mode untuk session |
523| `permissionPromptToolName` | `string` | `undefined` | Nama tool MCP untuk prompt izin |523| `permissionPromptToolName` | `string` | `undefined` | Nama MCP tool untuk permission prompts |
524| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Siapa yang menjawab prompt izin: `'host'` merutekannya ke callback [`canUseTool`](#canusetool) Anda atau tool `permissionPromptToolName`, dan `'none'` [menolak panggilan yang akan diprompt](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated). Memerlukan Claude Code v2.1.259 atau lebih baru |524| `permissionPrompts` | `'host' \| 'none'` | `'host'` | Siapa yang menjawab permission prompts: `'host'` merutekan mereka ke callback [`canUseTool`](#canusetool) Anda atau tool `permissionPromptToolName`, dan `'none'` [menolak panggilan yang akan diprompt](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated). Memerlukan Claude Code v2.1.259 atau lebih baru |
525| `persistSession` | `boolean` | `true` | Ketika `false`, menonaktifkan persistensi sesi ke disk. Sesi tidak dapat dilanjutkan nanti |525| `persistSession` | `boolean` | `true` | Ketika `false`, menonaktifkan session persistence ke disk. Sessions tidak dapat dilanjutkan kemudian |
526| `planModeInstructions` | `string` | `undefined` | Instruksi alur kerja kustom untuk plan mode. Ketika `permissionMode` adalah `'plan'`, string ini mengganti badan alur kerja plan mode default. CLI masih membungkusnya dengan preamble penegakan read-only dan footer protokol ExitPlanMode |526| `planModeInstructions` | `string` | `undefined` | Instruksi workflow kustom untuk plan mode. Ketika `permissionMode` adalah `'plan'`, string ini menggantikan badan workflow plan-mode default. CLI masih membungkusnya dengan preamble enforcement read-only dan footer protokol ExitPlanMode |
527| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Muat plugin kustom dari jalur lokal. Lihat [Plugins](/docs/id/agent-sdk/plugins) untuk detail |527| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Muat custom plugins dari local paths. Lihat [Plugins](/docs/id/agent-sdk/plugins) untuk detail |
528| `promptSuggestions` | `boolean` | `false` | Aktifkan saran prompt. Setelah putaran, Claude Code memancarkan pesan `prompt_suggestion` yang membawa prompt pengguna berikutnya yang diprediksi. Claude Code tidak menghasilkan saran untuk beberapa putaran, seperti saat akun Anda mendekati atau mencapai batas penggunaan. Lihat [Ketika Claude Code melewatkan saran](/docs/id/interactive-mode#when-claude-code-skips-suggestions) |528| `promptSuggestions` | `boolean` | `false` | Aktifkan prompt suggestions. Setelah turn, Claude Code memancarkan pesan `prompt_suggestion` yang membawa predicted next user prompt. Claude Code tidak menghasilkan suggestion untuk beberapa turns, seperti saat akun Anda mendekati atau mencapai usage limit. Lihat [When Claude Code skips suggestions](/docs/id/interactive-mode#when-claude-code-skips-suggestions) |
529| `resume` | `string` | `undefined` | ID sesi untuk dilanjutkan |529| `resume` | `string` | `undefined` | Session ID untuk dilanjutkan |
530| `resumeDropsTurn` | `string` | `undefined` | Dengan `resumeSessionAt`: UUID prompt dari putaran yang resume truncating dimaksudkan untuk buang. Claude Code menolak resume ketika rentang yang dibuang berisi apa pun yang tidak dapat diatribusikan ke putaran itu, seperti pesan antrian yang diserap atau notifikasi tugas, dan menyebutkan flag `--resume-drops-turn` dalam pesan penolakan. Hanya Agent SDK dan print-mode resumes yang membaca pasangan. Memerlukan Claude Code v2.1.223 atau lebih baru |530| `resumeDropsTurn` | `string` | `undefined` | Dengan `resumeSessionAt`: prompt UUID dari turn yang truncating resume bermaksud untuk discard. Claude Code menolak resume ketika discarded range berisi apa pun yang tidak dapat dikaitkan dengan turn itu, seperti absorbed queued messages atau task notifications, dan menyebutkan flag `--resume-drops-turn` dalam pesan penolakan. Hanya Agent SDK dan print-mode resumes yang membaca pasangan. Memerlukan Claude Code v2.1.223 atau lebih baru |
531| `resumeSessionAt` | `string` | `undefined` | Lanjutkan sesi pada UUID pesan tertentu |531| `resumeSessionAt` | `string` | `undefined` | Lanjutkan session pada message UUID tertentu |
532| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Konfigurasi perilaku sandbox secara terprogram. Lihat [Pengaturan sandbox](#sandboxsettings) untuk detail |532| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Konfigurasi perilaku sandbox secara terprogram. Lihat [Sandbox settings](#sandboxsettings) untuk detail |
533| `sessionId` | `string` | Auto-generated | Gunakan UUID tertentu untuk sesi alih-alih auto-generate |533| `sessionId` | `string` | Auto-generated | Gunakan UUID tertentu untuk session alih-alih auto-generating satu |
534| `sessionStore` | [`SessionStore`](/docs/id/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Cerminkan transkrip sesi ke backend eksternal sehingga host lain dapat melanjutkannya. Lihat [Pertahankan sesi ke penyimpanan eksternal](/docs/id/agent-sdk/session-storage) |534| `sessionStore` | [`SessionStore`](/docs/id/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Mirror session transcripts ke backend eksternal sehingga host lain dapat melanjutkannya. Lihat [Persist sessions to external storage](/docs/id/agent-sdk/session-storage) |
535| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Mode flush untuk `sessionStore`. Diabaikan ketika `sessionStore` tidak diatur |535| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Flush mode untuk `sessionStore`. Diabaikan ketika `sessionStore` tidak diatur |
536| `settings` | `string \| Settings` | `undefined` | Objek [pengaturan](/docs/id/settings) inline atau jalur ke file pengaturan. Mengisi lapisan flag-settings dalam [urutan preseden](/docs/id/settings#settings-precedence). Ubah saat runtime dengan [`applyFlagSettings()`](#applyflagsettings) |536| `settings` | `string \| Settings` | `undefined` | Objek [settings](/docs/id/settings) inline, path file settings, atau string JSON inline. Mengisi layer flag-settings dalam [precedence order](/docs/id/settings#settings-precedence). Ubah saat runtime dengan [`applyFlagSettings()`](#applyflagsettings) |
537| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI defaults (all sources) | Kontrol pengaturan filesystem mana yang akan dimuat. Lewatkan `[]` untuk menonaktifkan pengaturan pengguna, proyek, dan lokal. [Kebijakan yang dikelola endpoint](/docs/id/managed-settings#delivery-mechanisms) dimuat terlepas dari itu; pengaturan yang dikelola server diambil ketika sesi mengautentikasi dengan kredensial organisasi pada [konfigurasi yang memenuhi syarat](/docs/id/server-managed-settings#platform-availability). Lihat [Gunakan fitur Claude Code](/docs/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) |537| `settingSources` | [`SettingSource`](#settingsource)`[]` | CLI defaults (all sources) | Kontrol filesystem settings mana yang akan dimuat. Teruskan `[]` untuk menonaktifkan user, project, dan local settings. [Endpoint-managed policy](/docs/id/managed-settings#delivery-mechanisms) dimuat terlepas; server-managed settings diambil ketika session mengautentikasi dengan kredensial organisasi pada [eligible configuration](/docs/id/server-managed-settings#platform-availability). Lihat [Use Claude Code features](/docs/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) |
538| `skills` | `string[] \| 'all'` | `undefined` | Skills yang tersedia untuk sesi. Lewatkan `'all'` untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Lewatkan nama yang tepat saja. Pada Agent SDK v0.3.221 atau lebih baru, SDK menolak nama yang salah bentuk dan wildcard dengan error sebelum memulai proses Claude Code. Ketika diatur, SDK menambahkan tool Skill ke `allowedTools` secara otomatis. Jika Anda juga meneruskan `tools`, sertakan `'Skill'` dalam daftar itu. Lihat [Skills](/docs/id/agent-sdk/skills) |538| `skills` | `string[] \| 'all'` | `undefined` | Skills yang tersedia untuk session. Teruskan `'all'` untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Teruskan nama yang tepat saja. Pada Agent SDK v0.3.221 atau lebih baru, SDK menolak nama yang malformed dan wildcard-form dengan error sebelum memulai proses Claude Code. Ketika diatur, SDK menambahkan Skill tool ke `allowedTools` secara otomatis. Jika Anda juga meneruskan `tools`, sertakan `'Skill'` dalam daftar itu. Lihat [Skills](/docs/id/agent-sdk/skills) |
539| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fungsi kustom untuk spawn proses Claude Code. Gunakan untuk menjalankan Claude Code di VM, kontainer, atau lingkungan jarak jauh |539| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fungsi kustom untuk spawn proses Claude Code. Gunakan untuk menjalankan Claude Code di VMs, containers, atau remote environments |
540| `stderr` | `(data: string) => void` | `undefined` | Callback untuk output stderr |540| `stderr` | `(data: string) => void` | `undefined` | Callback untuk output stderr |
541| `strictMcpConfig` | `boolean` | `false` | Gunakan hanya server yang diteruskan dalam `mcpServers` dan abaikan `.mcp.json` proyek, pengaturan pengguna, server MCP yang disediakan plugin, dan [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) |541| `strictMcpConfig` | `boolean` | `false` | Gunakan hanya servers yang diteruskan dalam `mcpServers` dan abaikan project `.mcp.json`, user settings, plugin-provided MCP servers, dan [claude.ai connectors](/docs/id/mcp#use-mcp-servers-from-claude-ai) |
542| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (minimal prompt) | Konfigurasi prompt sistem. Lewatkan string untuk prompt kustom, atau `{ type: 'preset', preset: 'claude_code' }` untuk menggunakan prompt sistem Claude Code. Lewatkan array string dengan konstanta `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` yang diekspor di antara bagian statis dan per-request untuk [cache bagian statis dari prompt kustom](/docs/id/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt). Saat menggunakan bentuk objek preset, tambahkan `append` untuk memperluas dengan instruksi tambahan, dan atur `excludeDynamicSections: true` untuk memindahkan konteks per-sesi ke pesan pengguna pertama untuk [reuse prompt-cache yang lebih baik di seluruh mesin](/docs/id/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines). Atur `snapshot: false` untuk membangun ulang prompt pada setiap request alih-alih [menggunakan kembali prompt yang sesi catat pada request pertamanya](/docs/id/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Untuk menetapkan `snapshot` pada prompt kustom, lewatkan bentuk `{ type: 'custom', prompt }`. Bentuk `{ type: 'custom' }` dan field `snapshot` memerlukan TypeScript Agent SDK v0.3.257 atau lebih baru |542| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (minimal prompt) | Konfigurasi system prompt. Teruskan string untuk custom prompt, atau `{ type: 'preset', preset: 'claude_code' }` untuk menggunakan system prompt Claude Code. Teruskan array strings dengan konstanta `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` yang diekspor antara bagian static dan per-request untuk [cache bagian static dari custom prompt](/docs/id/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt). Ketika menggunakan bentuk preset object, tambahkan `append` untuk memperluas dengan instruksi tambahan, dan atur `excludeDynamicSections: true` untuk memindahkan per-session context ke first user message untuk [better prompt-cache reuse across machines](/docs/id/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines). Atur `snapshot: false` untuk rebuild prompt pada setiap request alih-alih [reusing prompt yang session catat pada first request-nya](/docs/id/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Untuk mengatur `snapshot` pada custom prompt, teruskan bentuk `{ type: 'custom', prompt }`. Bentuk `{ type: 'custom' }` dan bidang `snapshot` memerlukan TypeScript Agent SDK v0.3.257 atau lebih baru |
543| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* Anggaran tugas sisi API dalam token. Ketika diatur, model diberitahu anggaran token sisa yang tersedia sehingga dapat mengatur kecepatan penggunaan tool dan membungkus sebelum batas |543| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* API-side task budget dalam tokens. Ketika diatur, model diberitahu budget token sisanya sehingga dapat pace tool use dan wrap up sebelum limit |
544| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` untuk model yang didukung | Mengontrol perilaku pemikiran/penalaran Claude. Lihat [`ThinkingConfig`](#thinkingconfig) untuk opsi |544| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` untuk model yang didukung | Mengontrol perilaku thinking/reasoning Claude. Lihat [`ThinkingConfig`](#thinkingconfig) untuk opsi |
545| `title` | `string` | `undefined` | Judul tampilan untuk sesi. Saat melanjutkan melalui `resume` atau `continue`, judul sesi yang dilanjutkan yang bertahan mengambil preseden; gunakan [`renameSession()`](#renamesession) untuk mengubah judul sesi yang ada |545| `title` | `string` | `undefined` | Display title untuk session. Ketika melanjutkan via `resume` atau `continue`, title session yang dilanjutkan yang persisted mengambil precedence; gunakan [`renameSession()`](#renamesession) untuk retitle session yang ada |
546| `toolAliases` | `Record<string, string>` | `undefined` | Petakan nama tool bawaan ke nama tool MCP sehingga Claude memanggil implementasi MCP Anda sebagai gantinya dari bawaan. Misalnya, `{ Bash: 'mcp__workspace__bash' }` |546| `toolAliases` | `Record<string, string>` | `undefined` | Map built-in tool names ke MCP tool names sehingga Claude memanggil implementasi MCP Anda alih-alih built-in. Misalnya, `{ Bash: 'mcp__workspace__bash' }` |
547| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Konfigurasi untuk perilaku tool bawaan. Lihat [`ToolConfig`](#toolconfig) untuk detail |547| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Konfigurasi untuk perilaku built-in tool. Lihat [`ToolConfig`](#toolconfig) untuk detail |
548| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Konfigurasi tool. Lewatkan array nama tool atau gunakan preset untuk mendapatkan tool default Claude Code |548| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Konfigurasi tool. Teruskan array nama tool atau gunakan preset untuk mendapatkan default tools Claude Code |
549 549
550<h4 id="handle-slow-or-stalled-api-responses">550<h4 id="handle-slow-or-stalled-api-responses">
551 Tangani respons API yang lambat atau terhenti551 Tangani respons API yang lambat atau terhenti
552</h4>552</h4>
553 553
554Subprocess CLI membaca beberapa variabel lingkungan yang mengontrol timeout API dan deteksi stall. Lewatkan melalui opsi `env`:554CLI subprocess membaca beberapa variabel lingkungan yang mengontrol API timeouts dan stall detection. Teruskan melalui opsi `env`:
555 555
556```typescript theme={null}556```typescript theme={null}
557import { query } from "@anthropic-ai/claude-agent-sdk";557import { query } from "@anthropic-ai/claude-agent-sdk";
569});569});
570```570```
571 571
572* `API_TIMEOUT_MS`: timeout per-request pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagen.572* `API_TIMEOUT_MS`: per-request timeout pada Anthropic client, dalam milidetik. Default `600000`. Berlaku untuk main loop dan semua subagents.
573* `CLAUDE_CODE_MAX_RETRIES`: maksimum retry API. Default `10`, dibatasi pada `15`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff. Untuk run yang tidak diawasi yang perlu menunggu melalui pemadaman yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/id/errors#tune-retry-behavior): itu retry error kapasitas transien tanpa batas dan, pada Claude Code v2.1.199 atau lebih baru, menaikkan default untuk error transien lainnya menjadi `300` dan menghapus cap pada variabel ini.573* `CLAUDE_CODE_MAX_RETRIES`: maksimal API retries. Default `10`, capped di `15`. Setiap retry mendapat jendela `API_TIMEOUT_MS` sendiri, jadi worst-case wall time kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` plus backoff. Untuk unattended runs yang perlu menunggu outages yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/id/errors#tune-retry-behavior): ini retries transient capacity errors tanpa batas dan, pada Claude Code v2.1.199 atau lebih baru, menaikkan default untuk transient errors lainnya ke `300` dan menghapus cap pada variabel ini.
574* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: stall watchdog untuk subagen. Saat stream watchdog aktif, default adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ditambah 5 menit, yang menjadi `600000` kecuali Anda menaikkan variabel itu. Dengan stream watchdog mati, default adalah `600000`. Sebelum v2.1.257, default selalu `600000`.574* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: stall watchdog untuk subagents. Saat stream watchdog aktif, default adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` plus 5 menit, yang menjadi `600000` kecuali Anda menaikkan variabel itu. Dengan stream watchdog off, default adalah `600000`. Sebelum v2.1.257, default selalu `600000`.
575 575
576 Timer mereset pada setiap event stream. Pada stall, Claude Code membatalkan subagen dan melaporkan stall ke parent. Untuk subagen background, itu juga menandai tugas gagal dan melampirkan hasil parsial apa pun.576 Timer reset pada setiap stream event. Pada stall, Claude Code membatalkan subagent dan melaporkan stall ke parent. Untuk background subagent, ini juga menandai task failed dan melampirkan partial result apa pun.
577* `CLAUDE_ENABLE_STREAM_WATCHDOG` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: stream watchdog yang membatalkan request ketika header telah tiba tetapi body respons berhenti streaming. Watchdog aktif secara default untuk semua penyedia; atur `CLAUDE_ENABLE_STREAM_WATCHDOG=0` untuk menonaktifkannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Setelah abort, [Retry otomatis](/docs/id/errors#automatic-retries) mencakup apa yang Claude Code lakukan, berdasarkan seberapa jauh respons telah maju.577* `CLAUDE_ENABLE_STREAM_WATCHDOG` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: stream watchdog yang membatalkan request ketika headers telah tiba tetapi response body berhenti streaming. Watchdog aktif secara default untuk semua providers; atur `CLAUDE_ENABLE_STREAM_WATCHDOG=0` untuk menonaktifkannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` defaults ke `300000` dan diclamped ke minimum itu. Setelah abort, [Automatic retries](/docs/id/errors#automatic-retries) mencakup apa yang Claude Code lakukan, berdasarkan seberapa jauh response telah maju.
578 578
579 Saat watchdog menunggu respons yang gateway di belakang `ANTHROPIC_BASE_URL` tahan terbuka dengan keep-alive pings, host yang menetapkan `includePartialMessages` terus menerima event `ping` [stream](#sdkpartialassistantmessage), jadi baca frame tersebut sebagai liveness daripada timeout sesi pada keheningan. Sebelum v2.1.257, frame berhenti 5 menit setelah event stream nyata terakhir.579 Saat watchdog menunggu response yang gateway di belakang `ANTHROPIC_BASE_URL` tahan terbuka dengan keep-alive pings, host yang menetapkan `includePartialMessages` terus menerima `ping` [stream events](#sdkpartialassistantmessage), jadi baca frames itu sebagai liveness daripada timing session out pada silence. Sebelum v2.1.257, frames berhenti 5 menit setelah last real stream event.
580 580
581<h3 id="query-object">581<h3 id="query-object">
582 Objek `Query`582 Objek `Query`
583</h3>583</h3>
584 584
585Antarmuka yang dikembalikan oleh fungsi `query()`.585Interface yang dikembalikan oleh fungsi `query()`.
586 586
587```typescript theme={null}587```typescript theme={null}
588interface Query extends AsyncGenerator<SDKMessage, void> {588interface Query extends AsyncGenerator<SDKMessage, void> {
632</h4>632</h4>
633 633
634| Metode | Deskripsi |634| Metode | Deskripsi |
635| :------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |635| :------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
636| `interrupt()` | Mengganggu query. Hanya tersedia dalam mode input streaming. Ketika CLI mengiklankan kemampuan `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage), diselesaikan dengan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan yang tertunda ketika interrupt tiba. Diselesaikan `undefined` pada CLI sebelum v2.1.205 |636| `interrupt()` | Mengganggu query. Hanya tersedia dalam streaming input mode. Ketika CLI mengiklankan kemampuan `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage), resolves dengan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan yang pending ketika interrupt tiba. Resolves `undefined` pada CLIs sebelum v2.1.205 |
637| `rewindFiles(userMessageId, options?)` | Mengembalikan file ke keadaan mereka pada pesan pengguna yang ditentukan. Lewatkan `{ dryRun: true }` untuk pratinjau perubahan. Memerlukan `enableFileCheckpointing: true`. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |637| `rewindFiles(userMessageId, options?)` | Mengembalikan files ke state mereka pada user message yang ditentukan. Teruskan `{ dryRun: true }` untuk preview changes. Memerlukan `enableFileCheckpointing: true`. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |
638| `setPermissionMode()` | Mengubah mode izin (hanya tersedia dalam mode input streaming) |638| `setPermissionMode()` | Mengubah permission mode (hanya tersedia dalam streaming input mode) |
639| `setModel()` | Mengubah model (hanya tersedia dalam mode input streaming). Melewatkan `undefined` atau string `"default"` mereset ke model default sesi |639| `setModel()` | Mengubah model (hanya tersedia dalam streaming input mode). Meneruskan `undefined` atau string `"default"` reset ke [Claude Code's default model](/docs/id/model-config) |
640| `setMaxThinkingTokens()` | *Deprecated:* Gunakan opsi `thinking` sebagai gantinya. Mengubah token pemikiran maksimum. Melewatkan `null` mereset pemikiran ke default sesi: override mid-session dihapus, dan pemikiran tetap mati untuk sesi yang memilikinya dinonaktifkan |640| `setMaxThinkingTokens()` | *Deprecated:* Gunakan opsi `thinking` sebagai gantinya. Mengubah maksimal thinking tokens. Meneruskan `null` reset thinking ke session default: mid-session override dihapus, dan thinking tetap off untuk sessions yang memilikinya disabled |
641| `applyFlagSettings(settings)` | Menggabungkan pengaturan ke dalam lapisan flag settings sesi saat runtime (hanya tersedia dalam mode input streaming). Lihat [`applyFlagSettings()`](#applyflagsettings) |641| `applyFlagSettings(settings)` | Merge settings ke dalam layer flag settings session saat runtime (hanya tersedia dalam streaming input mode). Lihat [`applyFlagSettings()`](#applyflagsettings) |
642| `updateSettings(source, settings)` | Menggabungkan pengaturan ke dalam file pengaturan lokal proyek, `.claude/settings.local.json`; mereka berlaku pada request berikutnya. Menerima hanya `source: 'localSettings'` dan set kunci yang diizinkan, saat ini `outputStyle`, dengan nilai string; menghapus kunci tidak didukung. Menolak pada transport jarak jauh dan dalam sesi yang [`settingSources`](#options) kecualikan `local`. Memerlukan TypeScript SDK v0.3.257 atau lebih baru, yang membundel Claude Code v2.1.257 |642| `updateSettings(source, settings)` | Merge settings ke dalam file local settings project, `.claude/settings.local.json`; mereka berlaku pada request berikutnya. Menerima hanya `source: 'localSettings'` dan set key yang allowlisted, saat ini `outputStyle`, dengan string values; menghapus key tidak didukung. Menolak pada remote transports dan dalam sessions yang [`settingSources`](#options) exclude `local`. Memerlukan TypeScript SDK v0.3.257 atau lebih baru, yang bundle Claude Code v2.1.257 |
643| `initializationResult()` | Mengembalikan hasil inisialisasi lengkap termasuk perintah yang didukung, model, info akun, dan konfigurasi gaya output |643| `initializationResult()` | Mengembalikan full initialization result termasuk supported commands, models, account info, dan output style configuration |
644| `reinitialize()` | Kirim ulang permintaan kontrol `initialize` ke CLI yang sedang berjalan dan kembalikan hasil segar alih-alih hasil first-connect yang di-cache. Gunakan setelah celah transport, seperti reattaching ke sesi setelah disconnect, sehingga permintaan izin yang tertunda mencapai callback `canUseTool` Anda lagi. Buat callback idempotent per request ID, karena permintaan yang responsnya hilang dikirim ulang. Memerlukan Claude Code v2.1.195 atau lebih baru |644| `reinitialize()` | Re-sends `initialize` control request ke running CLI dan mengembalikan fresh result alih-alih cached first-connect result. Gunakan setelah transport gap, seperti reattaching ke session setelah disconnect, sehingga pending permission requests mencapai callback `canUseTool` Anda lagi. Buat callback idempotent per request ID, karena request yang response-nya hilang didispatch lagi. Memerlukan Claude Code v2.1.195 atau lebih baru |
645| `supportedCommands()` | Mengembalikan perintah yang tersedia. Dari Agent SDK v0.3.216 daftar mencerminkan perubahan perintah mid-session; lihat [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) |645| `supportedCommands()` | Mengembalikan available commands. Dari Agent SDK v0.3.216 daftar mencerminkan mid-session command changes; lihat [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) |
646| `supportedModels()` | Mengembalikan model yang tersedia dengan info tampilan |646| `supportedModels()` | Mengembalikan available models dengan display info |
647| `supportedAgents()` | Mengembalikan subagen yang tersedia sebagai [`AgentInfo`](#agentinfo)`[]` |647| `supportedAgents()` | Mengembalikan available subagents sebagai [`AgentInfo`](#agentinfo)`[]` |
648| `mcpServerStatus()` | Mengembalikan status server MCP yang terhubung |648| `mcpServerStatus()` | Mengembalikan status connected MCP servers |
649| `getContextUsage(opts?)` | Mengembalikan [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) yang memecah penggunaan jendela konteks sesi berdasarkan kategori, skill, dan tool. Dengan `detail` default, ini adalah data yang sama `/context` tampilkan dalam sesi interaktif. Opsi [`detail`](#sdkcontrolgetcontextusageresponse) memerlukan Agent SDK v0.3.257 atau lebih baru |649| `getContextUsage(opts?)` | Mengembalikan [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) yang memecah session's context window usage berdasarkan kategori, skill, dan tool. Dengan default `detail`, ini adalah data yang sama `/context` tampilkan dalam interactive session. Opsi [`detail`](#sdkcontrolgetcontextusageresponse) memerlukan Agent SDK v0.3.257 atau lebih baru |
650| `readFile(path, options?)` | Membaca file dari filesystem sesi. Claude Code menyelesaikan path terhadap `cwd`; [Apa yang `readFile()` dapat baca](#what-readfile-can-read) mencantumkan file yang dilayaninya. Lewatkan `{ maxBytes }` untuk mengubah cap baca (default 1 MB, ceiling 10 MB) dan `{ encoding: 'base64' }` untuk file biner seperti gambar. Diselesaikan dengan [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), atau `null` pada penolakan izin, file yang hilang, atau error transport. Memerlukan TypeScript SDK v0.2.121 atau lebih baru |650| `readFile(path, options?)` | Membaca file dari session's filesystem. Claude Code resolves path terhadap `cwd`; [What `readFile()` can read](#what-readfile-can-read) mencantumkan files yang disajikan. Teruskan `{ maxBytes }` untuk mengubah read cap (default 1 MB, ceiling 10 MB) dan `{ encoding: 'base64' }` untuk binary files seperti images. Resolves dengan [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), atau `null` pada permission denial, missing file, atau transport error. Memerlukan TypeScript SDK v0.2.121 atau lebih baru |
651| `reloadSkills()` | Muat ulang skills dari disk, jadi skills yang Anda tambahkan atau edit mid-session menjadi tersedia untuk sesi yang sedang berjalan. Diselesaikan dengan [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) yang mencantumkan skills yang tersedia setelah reload. Memerlukan Agent SDK v0.3.163 atau lebih baru |651| `reloadSkills()` | Reload skills dari disk, sehingga skills yang Anda tambahkan atau edit mid-session menjadi tersedia untuk running session. Resolves dengan [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) yang mencantumkan skills yang tersedia setelah reload. Memerlukan Agent SDK v0.3.163 atau lebih baru |
652| `accountInfo()` | Mengembalikan informasi akun |652| `accountInfo()` | Mengembalikan account information |
653| `reconnectMcpServer(serverName)` | Sambungkan kembali server MCP berdasarkan nama. Jika nama juga cocok dengan entri dalam file pengaturan seperti `.mcp.json` atau `~/.claude.json`, Claude Code menyambungkan kembali server yang Anda konfigurasi melalui [`mcpServers`](#options) atau `setMcpServers()`, bukan entri file pengaturan. Urutan resolusi itu memerlukan Claude Code v2.1.257 atau lebih baru |653| `reconnectMcpServer(serverName)` | Reconnect MCP server berdasarkan nama. Jika nama juga cocok dengan entri dalam settings file seperti `.mcp.json` atau `~/.claude.json`, Claude Code reconnect server yang Anda konfigurasi melalui [`mcpServers`](#options) atau `setMcpServers()`, bukan settings-file entry. Urutan resolusi itu memerlukan Claude Code v2.1.257 atau lebih baru |
654| `toggleMcpServer(serverName, enabled)` | Aktifkan atau nonaktifkan server MCP berdasarkan nama, dengan resolusi nama yang sama seperti `reconnectMcpServer()`. Menonaktifkan memutuskan server |654| `toggleMcpServer(serverName, enabled)` | Enable atau disable MCP server berdasarkan nama, dengan name resolution yang sama seperti `reconnectMcpServer()`. Menonaktifkan disconnect server |
655| `setMcpServers(servers)` | Ganti secara dinamis set server MCP untuk sesi ini. Diselesaikan dengan [`McpSetServersResult`](#mcpsetserversresult) yang menyebutkan server mana yang ditambahkan dan dihapus, dan error apa pun |655| `setMcpServers(servers)` | Secara dinamis ganti set MCP servers untuk session ini. Resolves dengan [`McpSetServersResult`](#mcpsetserversresult) yang menyebutkan servers mana yang ditambahkan dan dihapus, dan errors apa pun |
656| `streamInput(stream)` | Alirkan pesan input ke query untuk percakapan multi-putaran |656| `streamInput(stream)` | Stream input messages ke query untuk multi-turn conversations |
657| `stopTask(taskId)` | Hentikan tugas latar belakang yang sedang berjalan berdasarkan ID |657| `stopTask(taskId)` | Stop running background task berdasarkan ID |
658| `close()` | Tutup query dan hentikan proses yang mendasarinya. Secara paksa mengakhiri query dan membersihkan semua sumber daya |658| `close()` | Close query dan terminate underlying process. Secara paksa mengakhiri query dan membersihkan semua resources |
659 659
660<h4 id="applyflagsettings">660<h4 id="applyflagsettings">
661 `applyFlagSettings()`661 `applyFlagSettings()`
662</h4>662</h4>
663 663
664Mengubah [pengaturan](/docs/id/settings) pada sesi yang sedang berjalan tanpa memulai ulang query. Gunakan ketika pengaturan yang tidak memiliki setter khusus perlu berubah di tengah sesi, seperti memperketat `permissions` setelah agen membaca input yang tidak terpercaya. `setModel()` dan `setPermissionMode()` adalah setter khusus untuk dua kunci itu; `applyFlagSettings()` adalah bentuk umum yang menerima subset kunci pengaturan apa pun, dan melewatkan `model` di sini berperilaku sama seperti `setModel()`.664Mengubah [settings](/docs/id/settings) pada running session tanpa restart query. Gunakan ketika setting yang tidak memiliki dedicated setter perlu berubah mid-session, seperti tightening `permissions` setelah agent membaca untrusted input. `setModel()` dan `setPermissionMode()` adalah dedicated setters untuk dua key itu; `applyFlagSettings()` adalah bentuk umum yang menerima subset apa pun dari settings keys, dan meneruskan `model` di sini berperilaku sama seperti `setModel()`.
665 665
666Hanya beberapa kunci yang berlaku mid-session:666Hanya beberapa keys yang berlaku mid-session:
667 667
668* **Diterapkan pada putaran berikutnya**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Beralih `agent` juga menerapkan penggantian model agen itu dan hooks pada putaran berikutnya. Prompt sistemnya berlaku pada putaran berikutnya, atau, dalam sesi yang [menggunakan kembali prompt sistem yang tercatat](/docs/id/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session), setelah sesi dikompak.668* **Applied pada next turn**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Switching `agent` juga menerapkan model override dan hooks agent itu pada next turn. System prompt-nya berlaku pada next turn, atau, dalam session yang [reuses recorded system prompt](/docs/id/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session), sekali session dicompact.
669* **Diterapkan selama putaran saat ini**: `model`. Jika Anda beralih `model` saat Claude sedang mengerjakan putaran, respons yang Claude sudah hasilkan selesai pada model lama, dan sisa putaran, dimulai dengan panggilan berikutnya yang Claude Code buat ke model, menggunakan yang baru. Subagen menyimpan model mereka sendiri. Sebelum v2.1.212, switch mid-turn menunggu putaran berikutnya.669* **Applied selama current turn**: `model`. Jika Anda switch `model` saat Claude bekerja pada turn, response yang Claude sudah generate selesai pada model lama, dan sisa turn, dimulai dengan next call Claude Code buat ke model, menggunakan yang baru. Subagents menjaga model mereka sendiri. Sebelum v2.1.212, mid-turn switch menunggu next turn.
670* **Tidak ada efek mid-session**: opsi prompt sistem. Ini diselesaikan sekali saat startup, jadi sesi yang sedang berjalan menyimpan nilai asli meskipun panggilan berhasil. Untuk mengubahnya, mulai sesi baru.670* **Tidak ada efek mid-session**: opsi system prompt. Ini diselesaikan sekali saat startup, jadi running session menjaga nilai asli bahkan meskipun call berhasil. Untuk mengubahnya, mulai session baru.
671 671
672`effortLevel` menerima nama [tingkat usaha](/docs/id/model-config#adjust-effort-level). Itu juga menerima `"ultracode"`, yang meminta usaha `xhigh` dengan [ultracode](/docs/id/workflows#let-claude-decide-with-ultracode) aktif. `applyFlagSettings()` mendeklarasikan `effortLevel` tanpa nilai itu, jadi lewatkan `{ ultracode: true }` yang setara dalam TypeScript. Nilai `ultracode` memerlukan Claude Code v2.1.203 atau lebih baru dan diterima hanya oleh `applyFlagSettings()`, bukan oleh kunci `effortLevel` dalam file pengaturan.672`effortLevel` menerima nama [effort level](/docs/id/model-config#adjust-effort-level). Ini juga menerima `"ultracode"`, yang meminta `xhigh` effort dengan [ultracode](/docs/id/workflows#let-claude-decide-with-ultracode) on. `applyFlagSettings()` mendeklarasikan `effortLevel` tanpa nilai itu, jadi teruskan `{ ultracode: true }` yang setara dalam TypeScript. Nilai `ultracode` memerlukan Claude Code v2.1.203 atau lebih baru dan diterima hanya oleh `applyFlagSettings()`, bukan oleh key `effortLevel` dalam settings file.
673 673
674Nilai ditulis ke lapisan flag-settings, lapisan yang sama yang opsi `settings` inline dari `query()` isi saat startup. Ini adalah tier yang sama yang [bagian preseden di halaman](#settings-precedence) sebut opsi terprogram.674Values ditulis ke layer flag-settings, layer yang sama yang opsi inline `settings` dari `query()` isi saat startup. Ini adalah tier yang sama yang [on-page precedence section](#settings-precedence) sebut programmatic options.
675 675
676Panggilan berturut-turut shallow-merge kunci tingkat atas. Panggilan kedua dengan `{ permissions: {...} }` mengganti seluruh objek `permissions` dari panggilan sebelumnya daripada deep-merging ke dalamnya. Untuk menghapus kunci dari lapisan flag dan kembali ke sumber preseden lebih rendah, lewatkan `null` untuk kunci itu. Melewatkan `undefined` tidak memiliki efek karena serialisasi JSON menjatuhkannya.676Successive calls shallow-merge top-level keys. Second call dengan `{ permissions: {...} }` menggantikan seluruh objek `permissions` dari prior call daripada deep-merging ke dalamnya. Untuk clear key dari flag layer, teruskan `null` untuk key itu. Sebagian besar keys kemudian fallback ke lower-precedence sources. Cleared `model` reset ke [Claude Code's default model](/docs/id/model-config), bahkan ketika settings file menetapkan `model`. Meneruskan `undefined` tidak memiliki efek karena JSON serialization menghapusnya.
677 677
678Hanya tersedia dalam mode input streaming, batasan yang sama seperti `setModel()` dan `setPermissionMode()`.678Hanya tersedia dalam streaming input mode, constraint yang sama seperti `setModel()` dan `setPermissionMode()`.
679 679
680Contoh di bawah beralih model aktif mid-session, kemudian menghapus override sehingga model kembali ke apa pun yang ditentukan pengaturan pengguna atau proyek.680Contoh di bawah switch active model mid-session, kemudian clear override sehingga model reset ke [Claude Code's default model](/docs/id/model-config).
681 681
682```typescript theme={null}682```typescript theme={null}
683import { query } from "@anthropic-ai/claude-agent-sdk";683import { query } from "@anthropic-ai/claude-agent-sdk";
684 684
685const q = query({ prompt: messageStream });685const q = query({ prompt: messageStream });
686 686
687// Override model untuk sisa sesi687// Override model untuk sisa session
688await q.applyFlagSettings({ model: "claude-opus-4-6" });688await q.applyFlagSettings({ model: "claude-opus-4-6" });
689 689
690// Nanti: hapus override dan kembali ke pengaturan preseden lebih rendah690// Kemudian: clear override; model reset ke Claude Code's default
691await q.applyFlagSettings({ model: null });691await q.applyFlagSettings({ model: null });
692```692```
693 693
694<Note>694<Note>
695 `applyFlagSettings()` adalah TypeScript-only. SDK Python tidak mengekspos metode setara.695 `applyFlagSettings()` adalah TypeScript-only. Python SDK tidak expose method yang setara.
696</Note>696</Note>
697 697
698<h3 id="warmquery">698<h3 id="warmquery">
699 `WarmQuery`699 `WarmQuery`
700</h3>700</h3>
701 701
702Handle yang dikembalikan oleh [`startup()`](#startup). Subprocess sudah dispawn dan diinisialisasi, jadi memanggil `query()` pada handle ini menulis prompt langsung ke proses yang siap tanpa latensi startup.702Handle yang dikembalikan oleh [`startup()`](#startup). Subprocess sudah spawned dan initialized, jadi memanggil `query()` pada handle ini menulis prompt langsung ke ready process tanpa startup latency.
703 703
704```typescript theme={null}704```typescript theme={null}
705interface WarmQuery extends AsyncDisposable {705interface WarmQuery extends AsyncDisposable {
713</h4>713</h4>
714 714
715| Metode | Deskripsi |715| Metode | Deskripsi |
716| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------- |716| :-------------- | :-------------------------------------------------------------------------------------------------------------------------- |
717| `query(prompt)` | Kirim prompt ke subprocess yang sudah dipanaskan dan kembalikan [`Query`](#query-object). Hanya dapat dipanggil sekali per `WarmQuery` |717| `query(prompt)` | Kirim prompt ke pre-warmed subprocess dan kembalikan [`Query`](#query-object). Dapat hanya dipanggil sekali per `WarmQuery` |
718| `close()` | Tutup subprocess tanpa mengirim prompt. Gunakan ini untuk membuang warm query yang tidak lagi diperlukan |718| `close()` | Close subprocess tanpa mengirim prompt. Gunakan ini untuk discard warm query yang tidak lagi diperlukan |
719 719
720`WarmQuery` mengimplementasikan `AsyncDisposable`, jadi dapat digunakan dengan `await using` untuk pembersihan otomatis.720`WarmQuery` mengimplementasikan `AsyncDisposable`, jadi dapat digunakan dengan `await using` untuk automatic cleanup.
721 721
722<h3 id="sdkcontrolinitializeresponse">722<h3 id="sdkcontrolinitializeresponse">
723 `SDKControlInitializeResponse`723 `SDKControlInitializeResponse`
724</h3>724</h3>
725 725
726Tipe pengembalian dari `initializationResult()`. Berisi data inisialisasi sesi.726Return type dari `initializationResult()`. Berisi session initialization data.
727 727
728```typescript theme={null}728```typescript theme={null}
729type SDKControlInitializeResponse = {729type SDKControlInitializeResponse = {
739};739};
740```740```
741 741
742`hooks_applied` melaporkan apakah Claude Code mendaftarkan `hooks` yang permintaan `initialize` bawa. SDK mengirim permintaan itu sekali ketika sesi dimulai dan lagi pada setiap panggilan [`reinitialize()`](#query-object). Field memerlukan Agent SDK v0.3.238 atau lebih baru.742`hooks_applied` melaporkan apakah Claude Code mendaftarkan `hooks` yang `initialize` request bawa. SDK mengirim request itu sekali ketika session dimulai dan lagi pada setiap panggilan [`reinitialize()`](#query-object). Field memerlukan Agent SDK v0.3.238 atau lebih baru.
743 743
744Claude Code menghilangkan field ketika permintaan tidak membawa hooks. Ketika permintaan membawa hooks, nilainya tergantung pada apakah permintaan adalah initialize pertama sesi dan, untuk yang berulang, bagaimana itu mencapai sesi:744Claude Code menghilangkan field ketika request tidak membawa hooks. Ketika request membawa hooks, nilai tergantung pada apakah request adalah session's first initialize dan, untuk yang berulang, pada cara itu mencapai session:
745 745
746* `true`: Claude Code mendaftarkan hooks. Initialize pertama sesi mengembalikan nilai ini. Begitu juga initialize berulang yang dikirim melalui stdin CLI. Dalam hal ini hooks dalam permintaan baru mengganti hooks yang didaftarkan sebelumnya.746* `true`: Claude Code mendaftarkan hooks. Session's first initialize mengembalikan nilai ini. Repeated initialize yang dikirim melalui CLI's stdin juga mengembalikan `true`. Dalam hal ini hooks dalam new request menggantikan hooks yang didaftarkan sebelumnya.
747* `false`: Claude Code mengabaikan hooks. Initialize berulang yang dikirim ke sesi jarak jauh mengembalikan nilai ini, jadi klien kedua yang bergabung dengan sesi tidak dapat mengganti hooks yang klien pertama daftarkan.747* `false`: Claude Code mengabaikan hooks. Repeated initialize yang dikirim ke remote session mengembalikan nilai ini, jadi second client yang join session tidak dapat menggantikan hooks yang first client daftarkan.
748 748
749Sebelum Agent SDK v0.3.238, respons tidak pernah membawa field, dan Claude Code mengabaikan `hooks` pada setiap initialize berulang.749Sebelum Agent SDK v0.3.238, response tidak pernah membawa field, dan Claude Code mengabaikan `hooks` pada setiap repeated initialize.
750 750
751Respons selalu melaporkan `fast_mode_state`, dan ketika sesuatu memblokir [fast mode](/docs/id/fast-mode), `fast_mode_disabled_reason` membawa kode alasan bersama dengannya, jadi Anda dapat menjelaskan keadaan terblokir alih-alih re-deriving ketersediaan. Kedua perilaku memerlukan Claude Code v2.1.219 atau lebih baru. Sebelum v2.1.219, respons menghilangkan `fast_mode_state` ketika fast mode tidak tersedia dan tidak pernah membawa alasan. Untuk kode alasan dan artinya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.751Response selalu melaporkan `fast_mode_state`, dan ketika sesuatu memblokir [fast mode](/docs/id/fast-mode), `fast_mode_disabled_reason` membawa reason code bersama dengannya, jadi Anda dapat menjelaskan blocked state alih-alih re-deriving availability. Kedua perilaku memerlukan Claude Code v2.1.219 atau lebih baru. Sebelum v2.1.219, response menghilangkan `fast_mode_state` ketika fast mode tidak tersedia dan tidak pernah membawa reason. Untuk reason codes dan meanings mereka, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada result message.
752 752
753Wrapper control-response untuk `initialize` yang berhasil juga membawa array `pending_permission_requests`. Field berada pada wrapper respons itu sendiri, bukan dalam payload `SDKControlInitializeResponse` di atas. Setiap entri adalah pesan `control_request` lengkap dengan bentuk `{ type: "control_request", request_id, request }` yang sama sesi alirkan untuk permintaan izin saat berjalan.753Control-response wrapper untuk successful `initialize` juga membawa array `pending_permission_requests`. Field berada pada response wrapper itu sendiri, bukan dalam payload `SDKControlInitializeResponse` di atas. Setiap entri adalah complete `control_request` message dengan shape `{ type: "control_request", request_id, request }` yang sama yang session stream untuk permission requests saat running.
754 754
755Array mencantumkan permintaan izin yang proses Claude Code ini keluarkan dan belum diselesaikan. SDK membaca array untuk Anda dan mengirimkan setiap entri ke callback [`canUseTool`](#canusetool) Anda, pengiriman ulang yang sama yang [`reinitialize()`](#query-object) picu setelah celah transport. Tangani ID permintaan berulang secara idempotent, karena entri dapat mengulangi permintaan yang callback sudah terima sebelum koneksi putus.755Array mencantumkan permission requests yang Claude Code process ini telah issued dan belum resolved. SDK membaca array untuk Anda dan mendispatch setiap entri ke callback [`canUseTool`](#canusetool) Anda, redelivery yang sama yang [`reinitialize()`](#query-object) trigger setelah transport gap. Handle repeated request IDs idempotently, karena entri dapat mengulangi request yang callback sudah terima sebelum connection drop.
756 756
757Array selalu ada pada respons `initialize` yang berhasil dan kosong ketika proses ini tidak memiliki permintaan izin yang belum diselesaikan. Memerlukan Claude Code v2.1.268 atau lebih baru. Versi sebelumnya dapat menghilangkan field, jadi jika Anda mengurai protokol wire sendiri, perlakukan field yang hilang sebagai CLI yang lebih lama daripada bukti bahwa tidak ada yang tertunda.757Array selalu present pada successful `initialize` response dan kosong ketika process ini tidak memiliki unresolved permission request. Memerlukan Claude Code v2.1.268 atau lebih baru. Versi sebelumnya dapat menghilangkan field, jadi jika Anda parse wire protocol sendiri, treat missing field sebagai older CLI daripada sebagai proof bahwa nothing is pending.
758 758
759<h3 id="sdkcontrolinterruptresponse">759<h3 id="sdkcontrolinterruptresponse">
760 `SDKControlInterruptResponse`760 `SDKControlInterruptResponse`
761</h3>761</h3>
762 762
763Penerimaan interrupt: nilai yang [`interrupt()`](#query-object) diselesaikan dengan pada CLI yang mengiklankan kemampuan `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage). Memerlukan Claude Code v2.1.205 atau lebih baru. CLI sebelumnya menjawab interrupt dengan payload kesuksesan kosong, jadi `interrupt()` diselesaikan ke `undefined`.763Interrupt receipt: nilai yang [`interrupt()`](#query-object) resolves dengan pada CLI yang mengiklankan kemampuan `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage). Memerlukan Claude Code v2.1.205 atau lebih baru. Earlier CLIs menjawab interrupt dengan empty success payload, jadi `interrupt()` resolves ke `undefined`.
764 764
765```typescript theme={null}765```typescript theme={null}
766type SDKControlInterruptResponse = {766type SDKControlInterruptResponse = {
769};769};
770```770```
771 771
772`still_queued` mencantumkan UUID pesan pengguna yang tertunda ketika interrupt tiba: pesan masih dalam antrian, ditambah pesan apa pun yang Claude Code sudah ambil dari antrian untuk putaran berikutnya. Setelah putaran pertama sesi dimulai, Claude Code memproses pesan yang tercantum setelah interrupt kecuali Anda membatalkannya terlebih dahulu, dan dapat menggabungkan beberapa ke dalam satu putaran. Jika Anda mengganggu sebelum putaran pertama dimulai, Claude Code membatalkan putaran itu segera setelah dimulai, dan pesan yang tercantum dalam putaran itu tidak mendapat respons.772`still_queued` mencantumkan UUIDs dari user messages yang pending ketika interrupt tiba: messages masih dalam queue, plus messages apa pun yang Claude Code sudah ambil dari queue untuk next turn. Sekali session's first turn telah dimulai, Claude Code memproses listed messages setelah interrupt kecuali Anda cancel mereka terlebih dahulu, dan dapat merge beberapa ke dalam satu turn. Jika Anda interrupt sebelum first turn dimulai, Claude Code membatalkan turn itu segera setelah dimulai, dan listed messages dalam turn itu tidak mendapat response.
773 773
774Gunakan penerimaan untuk memutuskan apakah akan mengirim ulang apa pun. Pesan yang tercantum yang Anda tidak batalkan memasuki percakapan apakah atau tidak mendapat respons, jadi mengirim ulangnya menghasilkan Claude menerima dua kali.774Gunakan receipt untuk memutuskan apakah akan resend apa pun. Listed message yang Anda tidak cancel memasuki conversation apakah atau tidak mendapat response, jadi resending-nya mengirimkan ke Claude dua kali.
775 775
776Interpretasikan daftar dengan peringatan ini:776Interpretasikan list dengan caveats ini:
777 777
778* Hanya pesan yang antri dengan UUID muncul. Array kosong tidak berarti tidak ada lagi yang akan berjalan.778* Hanya messages yang di-enqueue dengan UUID yang muncul. Array kosong tidak berarti nothing else akan run.
779* Hanya pesan thread utama yang terdaftar. Pesan yang ditujukan ke subagen di luar jangkauan.779* Hanya main-thread messages yang tercantum. Messages yang ditujukan ke subagent out of scope.
780* Daftar dapat mencakup UUID yang klien Anda tidak pernah kirim, seperti pemicu [tugas terjadwal](/docs/id/scheduled-tasks). Abaikan UUID yang tidak Anda kenal alih-alih memperlakukannya sebagai error.780* List dapat include UUIDs yang client Anda tidak pernah kirim, seperti [scheduled task](/docs/id/scheduled-tasks) triggers. Abaikan UUIDs yang Anda tidak kenal alih-alih treat sebagai error.
781 781
782Klien yang menjalankan protokol kontrol CLI secara langsung, daripada melalui `interrupt()`, dapat menetapkan `cancel_queued: true` pada permintaan kontrol `interrupt`. Claude Code v2.1.219 dan lebih baru mengiklankan dukungan dengan kemampuan `interrupt_cancel_queued_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage); CLI yang lebih lama mengabaikan field dan membiarkan pesan antrian berjalan seperti biasa. Interrupt seperti itu juga membatalkan setiap pesan yang akan tercantum di bawah `still_queued`: penerimaan mencantumnya di bawah `cancelled` sebagai gantinya, `still_queued` kosong, dan tidak ada yang berjalan.782Client yang drive CLI's control protocol langsung, daripada melalui `interrupt()`, dapat set `cancel_queued: true` pada `interrupt` control request. Claude Code v2.1.219 dan lebih baru mengiklankan support dengan kemampuan `interrupt_cancel_queued_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage); older CLIs mengabaikan field dan leave queued messages untuk run seperti biasa. Interrupt seperti itu juga cancel setiap message yang akan otherwise tercantum di bawah `still_queued`: receipt mencantumnya di bawah `cancelled` sebagai gantinya, `still_queued` kosong, dan none dari mereka run.
783 783
784Daftar `cancelled` membawa peringatan yang sama seperti `still_queued`. Metode `interrupt()` tidak pernah mengirim `cancel_queued`, jadi penerimaan yang diselesaikannya tidak membawa `cancelled`.784`cancelled` list membawa caveats yang sama seperti `still_queued`. Metode `interrupt()` tidak pernah mengirim `cancel_queued`, jadi receipts yang resolves dengan tidak membawa `cancelled`.
785 785
786Penerimaan adalah snapshot yang diambil pada saat interrupt diproses, dan pada interrupt yang bersih tiba sebelum [`SDKResultMessage`](#sdkresultmessage) putaran yang terputus. Baca penerimaan daripada memeriksa antrian setelah hasil itu: loop memulai putaran antrian berikutnya segera, jadi antrian yang Anda periksa setelah hasil sudah berubah.786Receipt adalah snapshot yang diambil pada moment interrupt diproses, dan pada clean interrupt tiba sebelum interrupted turn's [`SDKResultMessage`](#sdkresultmessage). Baca receipt daripada inspect queue setelah result itu: loop dimulai next queued turn segera, jadi queue yang Anda inspect setelah result sudah berubah.
787 787
788<h3 id="sdkcontrolgetcontextusageresponse">788<h3 id="sdkcontrolgetcontextusageresponse">
789 `SDKControlGetContextUsageResponse`789 `SDKControlGetContextUsageResponse`
790</h3>790</h3>
791 791
792Tipe pengembalian dari [`getContextUsage()`](#query-object). Dengan `detail` default, ini adalah payload yang sama Claude Code render untuk perintah `/context` dalam sesi interaktif, jadi bersama dengan token counts itu membawa field tampilan seperti `color` dan `gridRows` yang Claude Code gunakan untuk menggambar grid penggunaan `/context`.792Return type dari [`getContextUsage()`](#query-object). Dengan default `detail`, ini adalah payload yang sama Claude Code render untuk `/context` command dalam interactive session, jadi bersama token counts ini membawa display fields seperti `color` dan `gridRows` yang Claude Code gunakan untuk draw `/context` usage grid.
793 793
794Argumen `detail` opsional metode memilih bagaimana Claude Code menghitung setiap kategori. Dengan default, `'full'`, Claude Code menghitung setiap kategori dengan permintaan API token-counting. Lewatkan `{ detail: 'summary' }` untuk mendapatkan jawaban dari penggunaan respons terakhir dan estimasi lokal sebagai gantinya. Tidak ada permintaan token-count yang keluar, dan angka per-kategori adalah perkiraan. Argumen `detail` memerlukan Agent SDK v0.3.257 atau lebih baru.794Argumen `detail` opsional method memilih bagaimana Claude Code menghitung setiap kategori. Dengan default, `'full'`, Claude Code menghitung setiap kategori dengan token-counting API requests. Teruskan `{ detail: 'summary' }` untuk mendapatkan answer dari last response's usage dan local estimates sebagai gantinya. Tidak ada token-count requests keluar, dan per-category numbers adalah approximate. Argumen `detail` memerlukan Agent SDK v0.3.257 atau lebih baru.
795 795
796Ketika Anda mengirim `/context` sebagai prompt alih-alih memanggil metode, Claude Code melampirkan payload [`SDKContextUsage`](#sdkcontextusage) ke field `context_usage` dari pesan asisten yang menghasilkan hasil. Field itu memerlukan Agent SDK v0.3.232 atau lebih baru.796Ketika Anda mengirim `/context` sebagai prompt alih-alih memanggil method, Claude Code melampirkan payload [`SDKContextUsage`](#sdkcontextusage) ke bidang `context_usage` dari assistant message yang delivers result. Field itu memerlukan Agent SDK v0.3.232 atau lebih baru.
797 797
798```typescript theme={null}798```typescript theme={null}
799type SDKControlGetContextUsageResponse = {799type SDKControlGetContextUsageResponse = {
889};889};
890```890```
891 891
892Baca atribusi token dari field koleksi:892Baca token attribution dari collection fields:
893 893
894* `categories` menyimpan total per-kategori.894* `categories` memegang per-category totals.
895* `mcpTools` dan `agents` atribut token ke tool MCP individual dan subagen.895* `mcpTools` dan `agents` attribute tokens ke individual MCP tools dan subagents.
896* `memoryFiles` mencantumkan setiap file memori yang dimuat dengan biayanya.896* `memoryFiles` mencantumkan setiap loaded memory file dengan costnya.
897* `skills.skillFrontmatter` atribut token listing skill ke setiap skill yang disertakan. Hitungan per-skill mengukur setiap entri listing skill seperti Claude Code benar-benar mengirimkannya, yang dapat lebih pendek dari frontmatter lengkap skill. Bandingkan `skills.totalSkills` dengan `skills.includedSkills` untuk melihat apakah setiap skill yang ditemukan membuat listing.897* `skills.skillFrontmatter` attributes skill listing's tokens ke setiap included skill. Per-skill counts mengukur setiap skill's listing entry seperti Claude Code benar-benar kirimkan, yang dapat lebih pendek daripada skill's full frontmatter. Bandingkan `skills.totalSkills` dengan `skills.includedSkills` untuk lihat apakah setiap discovered skill membuat ke listing.
898 898
899`totalTokens` adalah penggunaan konteks sesi saat ini, dan `maxTokens` adalah jendela yang penggunaan diukur terhadapnya. Jendela itu adalah jendela konteks model, atau jendela auto-compaction yang lebih rendah ketika satu berlaku. `rawMaxTokens` membawa nilai yang sama seperti `maxTokens`, dan `percentage` adalah `totalTokens` sebagai persentase pembulatan dari jendela itu.899`totalTokens` adalah session's current context usage, dan `maxTokens` adalah window yang usage diukur terhadap. Window itu adalah model's context window, atau lower auto-compaction window ketika satu berlaku. `rawMaxTokens` membawa nilai yang sama seperti `maxTokens`, dan `percentage` adalah `totalTokens` sebagai rounded percentage dari window itu.
900 900
901Claude Code meninggalkan diagnostik `deferredBuiltinTools`, `systemTools`, dan `systemPromptSections` opsional yang tidak diatur, jadi harapkan mereka tidak ada bahkan meskipun tipe mendeklarasikannya.901Claude Code meninggalkan optional `deferredBuiltinTools`, `systemTools`, dan `systemPromptSections` diagnostics unset, jadi expect mereka absent bahkan meskipun type mendeklarasikan mereka.
902 902
903<h3 id="sdkcontrolreadfileresponse">903<h3 id="sdkcontrolreadfileresponse">
904 `SDKControlReadFileResponse`904 `SDKControlReadFileResponse`
905</h3>905</h3>
906 906
907Tipe pengembalian dari [`readFile()`](#query-object).907Return type dari [`readFile()`](#query-object).
908 908
909```typescript theme={null}909```typescript theme={null}
910type SDKControlReadFileResponse = {910type SDKControlReadFileResponse = {
915};915};
916```916```
917 917
918`contents` menyimpan teks file, atau data base64 ketika Anda meminta `encoding: 'base64'`; field `encoding` respons diatur ke `'base64'` dalam hal itu. `absPath` adalah path absolut yang diselesaikan. `truncated` diatur ketika file lebih panjang dari cap `maxBytes` dan konten dipotong pada batas itu.918`contents` memegang file text, atau base64 data ketika Anda meminta `encoding: 'base64'`; response's `encoding` field diatur ke `'base64'` dalam hal itu. `absPath` adalah resolved absolute path. `truncated` diatur ketika file lebih panjang daripada `maxBytes` cap dan contents dipotong pada limit itu.
919 919
920<h4 id="what-readfile-can-read">920<h4 id="what-readfile-can-read">
921 Apa yang `readFile()` dapat baca921 Apa yang `readFile()` dapat baca
922</h4>922</h4>
923 923
924`readFile()` melayani set file yang lebih sempit daripada tool Read:924`readFile()` melayani set files yang lebih sempit daripada Read tool:
925 925
926* File reguler di dalam salah satu direktori kerja sesi, seperti `cwd` dan `additionalDirectories`926* Regular file di dalam salah satu session's working directories, seperti `cwd` dan `additionalDirectories`
927* Beberapa file Claude Code sendiri untuk sesi, seperti hasil tool927* Beberapa file Claude Code sendiri untuk session, seperti tool results
928 928
929Aturan deny dan ask Read masih memblokir path yang cocok, dan aturan allow Read yang luas tidak membuka sisa filesystem ke `readFile()`. Untuk apa pun yang lain panggilan diselesaikan dengan `null`.929`Read` deny dan ask rules masih memblokir matching path, dan broad `Read` allow rule tidak membuka sisa filesystem ke `readFile()`. Untuk apa pun yang lain call resolves dengan `null`.
930 930
931<h3 id="sdkcontrolreloadskillsresponse">931<h3 id="sdkcontrolreloadskillsresponse">
932 `SDKControlReloadSkillsResponse`932 `SDKControlReloadSkillsResponse`
933</h3>933</h3>
934 934
935Tipe pengembalian dari [`reloadSkills()`](#query-object).935Return type dari [`reloadSkills()`](#query-object).
936 936
937```typescript theme={null}937```typescript theme={null}
938type SDKControlReloadSkillsResponse = {938type SDKControlReloadSkillsResponse = {
940};940};
941```941```
942 942
943`skills` mencantumkan skills yang tersedia setelah reload, dalam bentuk [`SlashCommand`](#slashcommand) yang sama yang `supportedCommands()` kembalikan.943`skills` mencantumkan skills yang tersedia setelah reload, dalam [`SlashCommand`](#slashcommand) shape yang sama yang `supportedCommands()` kembalikan.
944 944
945<h3 id="agentdefinition">945<h3 id="agentdefinition">
946 `AgentDefinition`946 `AgentDefinition`
947</h3>947</h3>
948 948
949Konfigurasi untuk subagen yang didefinisikan secara terprogram.949Konfigurasi untuk subagent yang didefinisikan secara terprogram.
950 950
951```typescript theme={null}951```typescript theme={null}
952type AgentDefinition = {952type AgentDefinition = {
960 initialPrompt?: string;960 initialPrompt?: string;
961 maxTurns?: number;961 maxTurns?: number;
962 background?: boolean;962 background?: boolean;
963 omitClaudeMd?: boolean;
963 memory?: "user" | "project" | "local";964 memory?: "user" | "project" | "local";
964 effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;965 effort?: "low" | "medium" | "high" | "xhigh" | "max" | number;
965 permissionMode?: PermissionMode;966 permissionMode?: PermissionMode;
968```969```
969 970
970| Field | Diperlukan | Deskripsi |971| Field | Diperlukan | Deskripsi |
971| :------------------------------------ | :--------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |972| :------------------------------------ | :--------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
972| `description` | Ya | Deskripsi bahasa alami tentang kapan menggunakan agen ini |973| `description` | Ya | Natural language description tentang kapan menggunakan agent ini |
973| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi setiap [tool yang tersedia untuk subagen](/docs/id/sub-agents#available-tools). Untuk preload Skills ke dalam konteks agen, gunakan field `skills` daripada mencantumkan `'Skill'` di sini |974| `tools` | Tidak | Array dari allowed tool names. Jika dihilangkan, inherit setiap [tool available to subagents](/docs/id/sub-agents#available-tools). Untuk preload Skills ke dalam agent's context, gunakan field `skills` daripada listing `'Skill'` di sini |
974| `disallowedTools` | Tidak | Array nama tool untuk secara eksplisit tidak izinkan untuk agen ini. Pola tingkat server MCP juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap tool dari server itu, dan `mcp__*` menghapus setiap tool MCP dari server apa pun |975| `disallowedTools` | Tidak | Array dari tool names untuk secara eksplisit disallow untuk agent ini. MCP server-level patterns juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap tool dari server itu, dan `mcp__*` menghapus setiap MCP tool dari server apa pun |
975| `prompt` | Ya | Prompt sistem agen |976| `prompt` | Ya | System prompt agent |
976| `model` | Tidak | Penggantian model untuk agen ini. Menerima alias seperti `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'`, atau ID model lengkap. `'inherit'` menggunakan model utama. Ketika Anda menghilangkannya, Claude Code memilih model dalam [urutan model subagen](/docs/id/sub-agents#choose-a-model) |977| `model` | Tidak | Model override untuk agent ini. Menerima alias seperti `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'`, atau full model ID. `'inherit'` menggunakan main model. Ketika Anda menghilangkannya, Claude Code memilih model dalam [subagent model order](/docs/id/sub-agents#choose-a-model) |
977| `mcpServers` | Tidak | Spesifikasi server MCP untuk agen ini |978| `mcpServers` | Tidak | MCP server specifications untuk agent ini |
978| `skills` | Tidak | Array nama skill untuk preload ke konteks agen |979| `skills` | Tidak | Array dari skill names untuk preload ke dalam agent context |
979| `initialPrompt` | Tidak | Auto-submitted sebagai putaran pengguna pertama ketika agen ini berjalan sebagai agen thread utama |980| `initialPrompt` | Tidak | Auto-submitted sebagai first user turn ketika agent ini berjalan sebagai main thread agent |
980| `maxTurns` | Tidak | Jumlah maksimum putaran agen (API round-trips) sebelum berhenti |981| `maxTurns` | Tidak | Maksimal agentic turns (API round-trips) sebelum stopping |
981| `background` | Tidak | Jalankan agen ini sebagai tugas latar belakang non-blocking ketika dipanggil |982| `background` | Tidak | Jalankan agent ini sebagai non-blocking background task ketika invoked |
982| `memory` | Tidak | Sumber memori untuk agen ini: `'user'`, `'project'`, atau `'local'` |983| `omitClaudeMd` | Tidak | Jalankan agent ini tanpa user, project, dan local CLAUDE.md files ketika berjalan sebagai subagent; managed policy files masih load. Gunakan untuk agents yang mengambil semuanya yang mereka butuhkan dari Agent tool prompt. Diabaikan ketika agent ini berjalan sebagai main thread agent. Memerlukan TypeScript Agent SDK v0.3.271 atau lebih baru |
983| `effort` | Tidak | Tingkat usaha penalaran untuk agen ini. Menerima tingkat bernama atau integer |984| `memory` | Tidak | Memory source untuk agent ini: `'user'`, `'project'`, atau `'local'` |
984| `permissionMode` | Tidak | Mode izin untuk eksekusi tool dalam agen ini. [Aturan inheritance subagen](/docs/id/agent-sdk/permissions#available-modes) memutuskan kapan itu berlaku. Lihat [`PermissionMode`](#permissionmode) |985| `effort` | Tidak | Reasoning effort level untuk agent ini. Menerima named level atau integer |
985| `criticalSystemReminder_EXPERIMENTAL` | Tidak | Eksperimental: Pengingat kritis ditambahkan ke prompt sistem |986| `permissionMode` | Tidak | Permission mode untuk tool execution dalam agent ini. [Subagent inheritance rules](/docs/id/agent-sdk/permissions#available-modes) memutuskan kapan berlaku. Lihat [`PermissionMode`](#permissionmode) |
987| `criticalSystemReminder_EXPERIMENTAL` | Tidak | Experimental: Critical reminder ditambahkan ke system prompt |
986 988
987<h3 id="agentmcpserverspec">989<h3 id="agentmcpserverspec">
988 `AgentMcpServerSpec`990 `AgentMcpServerSpec`
989</h3>991</h3>
990 992
991Menentukan server MCP yang tersedia untuk subagen. Dapat berupa nama server (string yang mereferensikan server dari konfigurasi `mcpServers` parent) atau konfigurasi server inline yang merekam nama server ke configs.993Menentukan MCP servers yang tersedia untuk subagent. Dapat berupa server name (string yang mereferensikan server dari parent's `mcpServers` config) atau inline server configuration record yang memetakan server names ke configs.
992 994
993```typescript theme={null}995```typescript theme={null}
994type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;996type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;
1000 `SettingSource`1002 `SettingSource`
1001</h3>1003</h3>
1002 1004
1003Mengontrol sumber konfigurasi berbasis filesystem mana yang dimuat pengaturan SDK.1005Mengontrol filesystem-based configuration sources mana yang SDK muat settings dari.
1004 1006
1005```typescript theme={null}1007```typescript theme={null}
1006type SettingSource = "user" | "project" | "local";1008type SettingSource = "user" | "project" | "local";
1007```1009```
1008 1010
1009| Nilai | Deskripsi | Lokasi |1011| Nilai | Deskripsi | Lokasi |
1010| :---------- | :-------------------------------------------------------------------------------------- | :---------------------------- |1012| :---------- | :---------------------------------------------------------------------------------- | :---------------------------- |
1011| `'user'` | Pengaturan pengguna global | `~/.claude/settings.json` |1013| `'user'` | Global user settings | `~/.claude/settings.json` |
1012| `'project'` | Pengaturan proyek bersama (version controlled) | `.claude/settings.json` |1014| `'project'` | Shared project settings (version controlled) | `.claude/settings.json` |
1013| `'local'` | Pengaturan proyek lokal, gitignored ketika Claude Code menyimpan pengaturan ke dalamnya | `.claude/settings.local.json` |1015| `'local'` | Local project settings, gitignored ketika Claude Code menyimpan setting ke dalamnya | `.claude/settings.local.json` |
1014 1016
1015<h4 id="default-behavior">1017<h4 id="default-behavior">
1016 Perilaku default1018 Perilaku default
1017</h4>1019</h4>
1018 1020
1019Ketika `settingSources` dihilangkan atau `undefined`, `query()` memuat pengaturan filesystem yang sama seperti CLI Claude Code: pengguna, proyek, dan lokal. Lihat [Apa yang settingSources tidak kontrol](/docs/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) untuk input yang dibaca terlepas dari opsi ini, dan cara menonaktifkannya.1021Ketika `settingSources` dihilangkan atau `undefined`, `query()` memuat filesystem settings yang sama seperti Claude Code CLI: user, project, dan local. Lihat [What settingSources does not control](/docs/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) untuk inputs yang dibaca terlepas dari opsi ini, dan cara menonaktifkannya.
1020 1022
1021<h4 id="why-use-settingsources">1023<h4 id="why-use-settingsources">
1022 Mengapa menggunakan settingSources1024 Mengapa menggunakan settingSources
1023</h4>1025</h4>
1024 1026
1025**Nonaktifkan pengaturan filesystem:**1027**Nonaktifkan filesystem settings:**
1026 1028
1027```typescript theme={null}1029```typescript theme={null}
1028import { query } from "@anthropic-ai/claude-agent-sdk";1030import { query } from "@anthropic-ai/claude-agent-sdk";
1029 1031
1030// Jangan muat pengaturan pengguna, proyek, atau lokal dari disk1032// Jangan muat user, project, atau local settings dari disk
1031const result = query({1033const result = query({
1032 prompt: "Analyze this code",1034 prompt: "Analyze this code",
1033 options: { settingSources: [] }1035 options: { settingSources: [] }
1034});1036});
1035```1037```
1036 1038
1037**Muat hanya sumber pengaturan tertentu:**1039**Muat hanya specific setting sources:**
1038 1040
1039```typescript theme={null}1041```typescript theme={null}
1040import { query } from "@anthropic-ai/claude-agent-sdk";1042import { query } from "@anthropic-ai/claude-agent-sdk";
1041 1043
1042// Muat hanya pengaturan proyek, abaikan pengguna dan lokal1044// Muat hanya project settings, abaikan user dan local
1043const result = query({1045const result = query({
1044 prompt: "Run CI checks",1046 prompt: "Run CI checks",
1045 options: {1047 options: {
1048});1050});
1049```1051```
1050 1052
1051Untuk memuat instruksi proyek CLAUDE.md, sertakan `"project"` dalam `settingSources`. Lihat [Modifikasi system prompts](/docs/id/agent-sdk/modifying-system-prompts#claude-md-files-for-project-level-instructions) untuk bagaimana loading CLAUDE.md berinteraksi dengan opsi system prompt.1053Untuk memuat CLAUDE.md project instructions, sertakan `"project"` dalam `settingSources`. Lihat [Modify system prompts](/docs/id/agent-sdk/modifying-system-prompts#claude-md-files-for-project-level-instructions) untuk cara CLAUDE.md loading berinteraksi dengan system prompt options.
1052 1054
1053<h4 id="settings-precedence">1055<h4 id="settings-precedence">
1054 Preseden pengaturan1056 Settings precedence
1055</h4>1057</h4>
1056 1058
1057Ketika beberapa sumber dimuat, pengaturan digabungkan dengan preseden ini (tertinggi ke terendah):1059Ketika multiple sources dimuat, settings dimerge dengan precedence ini (tertinggi ke terendah):
1058 1060
10591. Pengaturan lokal (`.claude/settings.local.json`)10611. Local settings (`.claude/settings.local.json`)
10602. Pengaturan proyek (`.claude/settings.json`)10622. Project settings (`.claude/settings.json`)
10613. Pengaturan pengguna (`~/.claude/settings.json`)10633. User settings (`~/.claude/settings.json`)
1062 1064
1063Opsi terprogram seperti `agents`, `allowedTools`, dan `settings` mengganti pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola mengambil preseden atas opsi terprogram.1065Programmatic options seperti `agents`, `allowedTools`, dan `settings` override user, project, dan local filesystem settings. Managed policy settings mengambil precedence atas programmatic options.
1064 1066
1065<h3 id="permissionmode">1067<h3 id="permissionmode">
1066 `PermissionMode`1068 `PermissionMode`
1068 1070
1069```typescript theme={null}1071```typescript theme={null}
1070type PermissionMode =1072type PermissionMode =
1071 | "default" // Perilaku izin standar1073 | "default" // Perilaku permission standar
1072 | "acceptEdits" // Auto-accept edit file1074 | "acceptEdits" // Auto-accept file edits
1073 | "bypassPermissions" // Bypass pemeriksaan izin; aturan ask eksplisit masih prompt1075 | "bypassPermissions" // Bypass permission checks; explicit ask rules masih prompt
1074 | "plan" // Mode perencanaan - jelajahi tanpa mengedit1076 | "plan" // Planning mode - explore tanpa editing
1075 | "dontAsk" // Jangan prompt untuk izin, tolak jika tidak pre-approved1077 | "dontAsk" // Jangan prompt untuk permissions, deny jika tidak pre-approved
1076 | "auto"; // Classifier model menyetujui atau menolak prompt izin1078 | "auto"; // Model classifier approves atau denies permission prompts
1077```1079```
1078 1080
1079<h3 id="canusetool">1081<h3 id="canusetool">
1080 `CanUseTool`1082 `CanUseTool`
1081</h3>1083</h3>
1082 1084
1083Tipe fungsi izin kustom untuk mengontrol penggunaan tool.1085Custom permission function type untuk mengontrol tool usage.
1084 1086
1085Fungsi adalah pengganti SDK untuk prompt izin interaktif: dipanggil hanya ketika [alur evaluasi izin](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) diselesaikan ke prompt. Panggilan tool yang sudah disetujui oleh entri `allowedTools`, aturan allow pengaturan, atau mode izin, seperti `acceptEdits` atau `bypassPermissions`, tidak pernah memanggilnya. Untuk gating setiap tool call, gunakan hook [`PreToolUse`](/docs/id/agent-sdk/hooks) sebagai gantinya.1087Fungsi adalah SDK replacement untuk interactive permission prompt: dipanggil hanya ketika [permission evaluation flow](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) resolves ke prompt. Tool calls sudah approved oleh entri `allowedTools`, settings allow rule, atau permission mode, seperti `acceptEdits` atau `bypassPermissions`, tidak pernah invoke-nya. Untuk gate setiap tool call, gunakan [`PreToolUse` hook](/docs/id/agent-sdk/hooks) sebagai gantinya.
1086 1088
1087Aturan allow tidak pre-approve [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves); lihat [Bagaimana izin dievaluasi](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) untuk mana dari mereka yang mencapai callback dan apa yang terjadi dalam mode `dontAsk` dan `auto`.1089Sebuah allow rule tidak pre-approve [actions no mode auto-approves](/docs/id/permission-modes#actions-no-mode-auto-approves); lihat [How permissions are evaluated](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) untuk mana dari mereka yang mencapai callback dan apa yang terjadi dalam `dontAsk` dan `auto` mode.
1088 1090
1089```typescript theme={null}1091```typescript theme={null}
1090type CanUseTool = (1092type CanUseTool = (
1094 signal: AbortSignal;1096 signal: AbortSignal;
1095 suggestions?: PermissionUpdate[];1097 suggestions?: PermissionUpdate[];
1096 blockedPath?: string;1098 blockedPath?: string;
1099 mcpServer?: { name: string; source: string };
1097 decisionReason?: string;1100 decisionReason?: string;
1098 toolUseID: string;1101 toolUseID: string;
1099 agentID?: string;1102 agentID?: string;
1102) => Promise<PermissionResult | null>;1105) => Promise<PermissionResult | null>;
1103```1106```
1104 1107
1105| Opsi | Tipe | Deskripsi |1108| Opsi | Jenis | Deskripsi |
1106| :--------------- | :------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1109| :--------------- | :------------------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1107| `signal` | `AbortSignal` | Signaled jika operasi harus dibatalkan |1110| `signal` | `AbortSignal` | Signaled jika operasi harus dibatalkan |
1108| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | Saran pembaruan izin sehingga pengguna tidak diprompt lagi untuk tool ini. Prompt Bash menyertakan saran dengan [destination](#permissionupdatedestination) `localSettings`, jadi mengembalikannya dalam `updatedPermissions` menulis aturan ke `.claude/settings.local.json` dan bertahan di seluruh sesi. |1111| `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | Suggested permission updates sehingga user tidak diprompt lagi untuk tool ini. Bash prompts include suggestion dengan `localSettings` [destination](#permissionupdatedestination), jadi returning-nya dalam `updatedPermissions` menulis rule ke `.claude/settings.local.json` dan persists across sessions. |
1109| `blockedPath` | `string` | Jalur file yang memicu permintaan izin, jika berlaku |1112| `blockedPath` | `string` | File path yang triggered permission request, jika applicable |
1110| `decisionReason` | `string` | Menjelaskan mengapa permintaan izin ini dipicu |1113| `mcpServer` | `{ name: string; source: string }` | Untuk tool `mcp__*`, MCP server yang melayaninya dan dari mana definisi server itu berasal, dengan fields dari [`McpServerProvenance`](#mcpserverprovenance). Absent untuk tools lainnya. Memerlukan Agent SDK v0.3.274 atau lebih baru |
1111| `toolUseID` | `string` | Pengenal unik untuk tool call spesifik ini dalam pesan asisten |1114| `decisionReason` | `string` | Menjelaskan mengapa permission request ini triggered |
1112| `agentID` | `string` | Jika berjalan dalam sub-agen, ID sub-agen |1115| `toolUseID` | `string` | Unique identifier untuk specific tool call ini dalam assistant message |
1113| `requestId` | `string` | `request_id` dari envelope `control_request`. `control_response` yang aplikasi Anda kirim di luar SDK, seperti HTTP POST yang ditandatangani, harus mengulangi nilai ini sehingga proses Claude Code dapat mencocokkan balasan ke permintaan |1116| `agentID` | `string` | Jika running dalam sub-agent, sub-agent's ID |
1117| `requestId` | `string` | `control_request` envelope's `request_id`. `control_response` yang aplikasi Anda kirim di luar SDK, seperti signed HTTP POST, harus echo nilai ini sehingga Claude Code process dapat match reply ke request |
1114 1118
1115Callback biasanya menyelesaikan permintaan dengan mengembalikan [`PermissionResult`](#permissionresult), yang SDK tulis kembali melalui transportnya sebagai `control_response`. Kembalikan `null` hanya ketika aplikasi Anda sudah mengirim `control_response` untuk permintaan ini melalui saluran sendiri, mengulangi `requestId`; SDK kemudian melewati penulisan respons ke transportnya. Mengembalikan `null` dalam kasus lain meninggalkan tool call terblokir tanpa batas, karena tidak ada `control_response` yang pernah dikirim dan prompt izin tidak timeout.1119Callback normally resolves request dengan mengembalikan [`PermissionResult`](#permissionresult), yang SDK tulis kembali atas transport-nya sebagai `control_response`. Kembalikan `null` hanya ketika aplikasi Anda sudah mengirim `control_response` untuk request ini atas channel sendiri, echoing `requestId`; SDK kemudian skip menulis response ke transport-nya. Mengembalikan `null` dalam kasus lain apa pun meninggalkan tool call blocked indefinitely, karena tidak ada `control_response` yang pernah dikirim dan permission prompts tidak timeout.
1116 1120
1117Opsi `requestId` dan nilai pengembalian `null` memerlukan Claude Code v2.1.199 atau lebih baru.1121Opsi `requestId` dan nilai return `null` memerlukan Claude Code v2.1.199 atau lebih baru.
1118 1122
1119<h3 id="permissionresult">1123<h3 id="permissionresult">
1120 `PermissionResult`1124 `PermissionResult`
1121</h3>1125</h3>
1122 1126
1123Hasil pemeriksaan izin.1127Hasil dari permission check.
1124 1128
1125```typescript theme={null}1129```typescript theme={null}
1126type PermissionResult =1130type PermissionResult =
1142 `ToolConfig`1146 `ToolConfig`
1143</h3>1147</h3>
1144 1148
1145Konfigurasi untuk perilaku tool bawaan.1149Konfigurasi untuk perilaku built-in tool.
1146 1150
1147```typescript theme={null}1151```typescript theme={null}
1148type ToolConfig = {1152type ToolConfig = {
1152};1156};
1153```1157```
1154 1158
1155| Field | Tipe | Deskripsi |1159| Field | Jenis | Deskripsi |
1156| :------------------------------ | :--------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1160| :------------------------------ | :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
1157| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Opt-in ke field `preview` pada opsi [`AskUserQuestion`](/docs/id/agent-sdk/user-input#question-format) dan atur format kontennya. Ketika tidak diatur, Claude tidak memancarkan preview |1161| `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Opts ke dalam bidang `preview` pada [`AskUserQuestion`](/docs/id/agent-sdk/user-input#question-format) options dan menetapkan content format-nya. Ketika unset, Claude tidak emit previews |
1158 1162
1159<h3 id="mcpserverconfig">1163<h3 id="mcpserverconfig">
1160 `McpServerConfig`1164 `McpServerConfig`
1161</h3>1165</h3>
1162 1166
1163Konfigurasi untuk server MCP.1167Konfigurasi untuk MCP servers.
1164 1168
1165```typescript theme={null}1169```typescript theme={null}
1166type McpServerConfig =1170type McpServerConfig =
1236 `SdkPluginConfig`1240 `SdkPluginConfig`
1237</h3>1241</h3>
1238 1242
1239Konfigurasi untuk memuat plugin di SDK.1243Konfigurasi untuk memuat plugins dalam SDK.
1240 1244
1241```typescript theme={null}1245```typescript theme={null}
1242type SdkPluginConfig = {1246type SdkPluginConfig = {
1246};1250};
1247```1251```
1248 1252
1249| Field | Tipe | Deskripsi |1253| Field | Jenis | Deskripsi |
1250| :----------------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1254| :----------------- | :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1251| `type` | `'local'` | Harus `'local'` (hanya plugin lokal yang saat ini didukung) |1255| `type` | `'local'` | Harus `'local'` (hanya local plugins yang saat ini didukung) |
1252| `path` | `string` | Jalur absolut atau relatif ke direktori plugin |1256| `path` | `string` | Absolute atau relative path ke plugin directory |
1253| `skipMcpDiscovery` | `boolean` | Ketika `true`, SDK memuat skills, hooks, agen, dan perintah dari plugin ini tetapi tidak membaca `.mcp.json` atau manifest `mcpServers` miliknya. Atur ini ketika aplikasi Anda memiliki koneksi MCP plugin. |1257| `skipMcpDiscovery` | `boolean` | Ketika `true`, SDK memuat skills, hooks, agents, dan commands dari plugin ini tetapi tidak membaca `.mcp.json` atau manifest `mcpServers`-nya. Atur ini ketika aplikasi Anda memiliki plugin's MCP connections. |
1254 1258
1255**Contoh:**1259**Contoh:**
1256 1260
1261];1265];
1262```1266```
1263 1267
1264Untuk informasi lengkap tentang membuat dan menggunakan plugin, lihat [Plugins](/docs/id/agent-sdk/plugins).1268Untuk informasi lengkap tentang membuat dan menggunakan plugins, lihat [Plugins](/docs/id/agent-sdk/plugins).
1265 1269
1266<h2 id="message-types">1270<h2 id="message-types">
1267 Tipe Pesan1271 Jenis Pesan
1268</h2>1272</h2>
1269 1273
1270<h3 id="sdkmessage">1274<h3 id="sdkmessage">
1271 `SDKMessage`1275 `SDKMessage`
1272</h3>1276</h3>
1273 1277
1274Tipe union dari semua pesan yang mungkin dikembalikan oleh query.1278Tipe union dari semua pesan yang mungkin dikembalikan oleh kueri.
1275 1279
1276```typescript theme={null}1280```typescript theme={null}
1277type SDKMessage =1281type SDKMessage =
1335};1339};
1336```1340```
1337 1341
1338Field `message` adalah [`BetaMessage`](https://platform.claude.com/docs/id/api/messages/create) dari Anthropic SDK. Ini mencakup field seperti `id`, `content`, `model`, `stop_reason`, dan `usage`.1342Bidang `message` adalah [`BetaMessage`](https://platform.claude.com/docs/en/api/messages/create) dari Anthropic SDK. Ini mencakup bidang seperti `id`, `content`, `model`, `stop_reason`, dan `usage`.
1339 1343
1340`SDKAssistantMessageError` adalah salah satu dari: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, `'cloud_credential_error'`, atau `'unknown'`. Empat dari nilai-nilai ini berarti lebih dari yang dikatakan nama mereka:1344`SDKAssistantMessageError` adalah salah satu dari: `'authentication_failed'`, `'oauth_org_not_allowed'`, `'account_on_hold'`, `'billing_error'`, `'rate_limit'`, `'overloaded'`, `'invalid_request'`, `'model_not_found'`, `'server_error'`, `'max_output_tokens'`, `'cloud_credential_error'`, atau `'unknown'`. Empat dari nilai-nilai ini berarti lebih dari yang nama mereka katakan:
1341 1345
1342* `'model_not_found'`: model yang dipilih tidak ada atau tidak tersedia untuk akun atau deployment Anda1346* `'model_not_found'`: model yang dipilih tidak ada atau tidak tersedia untuk akun atau deployment Anda
1343* `'overloaded'`: API mengembalikan 529 karena server mencapai kapasitas, berbeda dengan `'rate_limit'`, yang merupakan 429 terhadap kuota Anda1347* `'overloaded'`: API mengembalikan 529 karena server mencapai kapasitas, berbeda dengan `'rate_limit'`, yang merupakan 429 terhadap kuota Anda
1344* `'account_on_hold'`: [akun Anda sedang ditahan](/docs/id/errors#your-account-is-on-hold)1348* `'account_on_hold'`: [akun Anda sedang ditahan](/docs/id/errors#your-account-is-on-hold)
1345* `'cloud_credential_error'`: Claude Code tidak dapat memperoleh kredensial AWS atau Google Cloud yang dapat digunakan di mesin tempat ia berjalan, sehingga tidak ada permintaan yang mencapai penyedia cloud. Penyebab umum adalah sign-in cloud yang kedaluwarsa atau tidak pernah selesai di mesin itu, meskipun layanan kredensial yang singkat tidak dapat dijangkau melaporkan nilai yang sama. Lihat [Could not load AWS or Google Cloud credentials](/docs/id/errors#could-not-load-aws-or-google-cloud-credentials). Memerlukan TypeScript Agent SDK v0.3.267 atau lebih baru, yang menggabungkan Claude Code v2.1.2671349* `'cloud_credential_error'`: Claude Code tidak dapat memperoleh kredensial AWS atau Google Cloud yang dapat digunakan di mesin tempat ia berjalan, sehingga tidak ada permintaan yang mencapai penyedia cloud. Penyebab umum adalah masuk cloud yang kedaluwarsa atau tidak pernah selesai di mesin itu, meskipun layanan kredensial yang singkat tidak dapat dijangkau melaporkan nilai yang sama. Lihat [Tidak dapat memuat kredensial AWS atau Google Cloud](/docs/id/errors#could-not-load-aws-or-google-cloud-credentials). Memerlukan TypeScript Agent SDK v0.3.267 atau lebih baru, yang menggabungkan Claude Code v2.1.267
1346 1350
1347`aborted` adalah `true` ketika interrupt atau abort memotong pesan asisten sebelum aliran selesai: pesan tidak memiliki `stop_reason` dan konten mungkin berakhir di tengah kata. Field ini tidak ada pada pesan yang diselesaikan secara normal. Ini memerlukan Agent SDK v0.3.214 atau lebih baru.1351`aborted` adalah `true` ketika gangguan atau pembatalan memotong pesan asisten sebelum aliran selesai: pesan tidak memiliki `stop_reason` dan konten mungkin berakhir di tengah kata. Bidang ini tidak ada pada pesan yang diselesaikan secara normal. Ini memerlukan Agent SDK v0.3.214 atau lebih baru.
1348 1352
1349Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada pesan asisten pertama putaran, di bawah kondisi dalam [`user_message_uuid`](#user_message_uuid).1353Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada pesan asisten pertama giliran, di bawah kondisi dalam [`user_message_uuid`](#user_message_uuid).
1350 1354
1351`timestamp` adalah waktu ISO 8601 ketika konten pesan selesai dihasilkan pada proses yang menghasilkannya. Nilai berasal dari jam mesin itu, jadi gunakan hanya untuk tampilan dan jangan urutkan pesan berdasarkan itu. Satu putaran API dapat menghasilkan beberapa pesan asisten yang berbagi `message.id`, masing-masing dengan `timestamp` mereka sendiri. Ketika field tidak ada, kembali ke waktu Anda menerima pesan.1355`timestamp` adalah waktu ISO 8601 ketika konten pesan selesai dihasilkan pada proses yang menghasilkannya. Nilai berasal dari jam mesin itu, jadi gunakan hanya untuk tampilan dan jangan urutkan pesan berdasarkannya. Satu giliran API dapat menghasilkan beberapa pesan asisten yang berbagi `message.id`, masing-masing dengan `timestamp` sendiri. Ketika bidang tidak ada, kembali ke waktu Anda menerima pesan.
1352 1356
1353`context_usage` adalah salinan terstruktur dari laporan `/context`, diketik sebagai [`SDKContextUsage`](#sdkcontextusage), dan memerlukan Agent SDK v0.3.232 atau lebih baru. Ketika Anda mengirim `/context` sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang `message.content` menyimpan tabel markdown, dan melampirkan `context_usage` ke pesan yang sama. Claude Code tidak menetapkan field pada pesan asisten lain apa pun, dan versi sebelumnya mengirimkan tabel `/context` tanpanya, jadi baca rincian dari field ketika ada dan kembali ke teks markdown ketika tidak.1357`context_usage` adalah salinan terstruktur dari laporan `/context`, diketik sebagai [`SDKContextUsage`](#sdkcontextusage), dan memerlukan Agent SDK v0.3.232 atau lebih baru. Ketika Anda mengirim `/context` sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang `message.content` menyimpan tabel markdown, dan melampirkan `context_usage` ke pesan yang sama. Claude Code tidak menetapkan bidang pada pesan asisten lain mana pun, dan versi sebelumnya mengirimkan tabel `/context` tanpanya, jadi baca rincian dari bidang ketika ada dan kembali ke teks markdown ketika tidak.
1354 1358
1355<h3 id="sdkusermessage">1359<h3 id="sdkusermessage">
1356 `SDKUserMessage`1360 `SDKUserMessage`
1372};1376};
1373```1377```
1374 1378
1375Atur `shouldQuery` ke `false` untuk menambahkan pesan ke transkrip tanpa memicu putaran asisten. Pesan ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu putaran. Gunakan ini untuk menyuntikkan konteks, seperti output perintah yang Anda jalankan out of band, tanpa menghabiskan panggilan model.1379Atur `shouldQuery` ke `false` untuk menambahkan pesan ke transkrip tanpa memicu giliran asisten. Pesan ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu giliran. Gunakan ini untuk menyuntikkan konteks, seperti output pesan yang Anda jalankan di luar pita, tanpa menghabiskan panggilan model.
1376 1380
1377Pada pesan yang membawa blok `tool_result`, `tool_use_result` adalah objek output terstruktur tool daripada teks yang dikirim ke model. Bentuknya tergantung pada tool yang dinamai oleh blok `tool_use` yang cocok, jadi field ini diketik `unknown`; bentuk bawaan tercantum di bawah [Tipe Output Tool](#tool-output-types).1381Pada pesan yang membawa blok `tool_result`, `tool_use_result` adalah objek output terstruktur alat daripada teks yang dikirim ke model. Bentuknya tergantung pada alat yang dinamai oleh blok `tool_use` yang cocok, jadi bidang diketik `unknown`; bentuk bawaan tercantum di bawah [Jenis Output Alat](#tool-output-types).
1378 1382
1379Untuk tool `Agent`, `tool_use_result` adalah [`AgentOutput`](#agent-2). Pada hasil `completed`, `content` menyimpan laporan subagent tanpa ID agen dan trailer penggunaan yang Claude Code tambahkan ke teks `tool_result`, jadi render dari `tool_use_result` daripada mem-parse teks itu.1383Untuk alat `Agent`, `tool_use_result` adalah [`AgentOutput`](#agent-2). Pada hasil `completed`, `content` menyimpan laporan subagen tanpa ID agen dan trailer penggunaan yang Claude Code tambahkan ke teks `tool_result`, jadi render dari `tool_use_result` daripada mengurai teks itu.
1380 1384
1381Untuk tool MCP yang hasilnya berisi blok `resource_link`, `tool_use_result` adalah objek dengan array `resourceLinks` dari entri [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude menerima setiap link sebagai baris teks dalam blok `tool_result`, jadi baca `resourceLinks` untuk merender file yang dikembalikan server daripada mem-parse teks itu. Claude Code menghilangkan `resourceLinks` ketika hasilnya tidak memiliki link dan pada hasil dari subagent, menyimpan paling banyak 50 link per hasil, dan berhenti menambahkan link setelah array mencapai 64 KiB JSON yang diserialisasi. `resourceLinks` memerlukan Agent SDK v0.3.257 atau lebih baru.1385Untuk alat MCP yang hasilnya berisi blok `resource_link`, `tool_use_result` adalah objek dengan array `resourceLinks` dari entri [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude menerima setiap tautan sebagai baris teks dalam blok `tool_result`, jadi baca `resourceLinks` untuk merender file yang dikembalikan server daripada mengurai teks itu. Claude Code menghilangkan `resourceLinks` ketika hasil tidak memiliki tautan dan pada hasil dari subagen, menyimpan paling banyak 50 tautan per hasil, dan berhenti menambahkan tautan setelah array mencapai 64 KiB JSON terserialkan. `resourceLinks` memerlukan Agent SDK v0.3.257 atau lebih baru.
1382 1386
1383<h3 id="sdkusermessagereplay">1387<h3 id="sdkusermessagereplay">
1384 `SDKUserMessageReplay`1388 `SDKUserMessageReplay`
1400};1404};
1401```1405```
1402 1406
1403Putaran pengguna yang disuntikkan dari luar sesi, yang [`origin`](#sdkmessageorigin)-nya adalah `peer` atau `channel`, mencapai aliran sebagai replay apakah itu disampaikan selama putaran aktif atau memulai putaran baru saat sesi idle. Sebelum v2.1.207, putaran yang disuntikkan disampaikan saat sesi idle tidak menghasilkan pesan pada aliran dan hanya muncul ketika Anda membaca ulang transkrip.1407Giliran pengguna yang disuntikkan dari luar sesi, yang [`origin`](#sdkmessageorigin) jenisnya adalah `peer` atau `channel`, mencapai aliran sebagai pemutaran ulang apakah itu disampaikan selama giliran aktif atau memulai giliran baru saat sesi menganggur. Sebelum v2.1.207, giliran yang disuntikkan disampaikan saat sesi menganggur tidak menghasilkan pesan pada aliran dan hanya muncul ketika Anda membaca ulang transkrip.
1404 1408
1405<h3 id="sdkresultmessage">1409<h3 id="sdkresultmessage">
1406 `SDKResultMessage`1410 `SDKResultMessage`
1463 permission_denials: SDKPermissionDenial[];1467 permission_denials: SDKPermissionDenial[];
1464 queued_turn_count?: number;1468 queued_turn_count?: number;
1465 errors: string[];1469 errors: string[];
1470 startup_failure_reason?: SDKStartupFailureReason;
1466 user_message_uuid?: string;1471 user_message_uuid?: string;
1467 user_message_uuids?: string[];1472 user_message_uuids?: string[];
1468 terminal_reason?: TerminalReason;1473 terminal_reason?: TerminalReason;
1472 };1477 };
1473```1478```
1474 1479
1475Beberapa field pada hasil membawa detail diagnostik di luar `subtype`:1480Beberapa bidang pada hasil membawa detail diagnostik di luar `subtype`:
1476 1481
1477* `api_error_status`: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada atau `null` ketika putaran berakhir tanpa kesalahan API.1482* `api_error_status`: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada atau `null` ketika giliran berakhir tanpa kesalahan API.
1478* `ttft_ms`: waktu ke token pertama dalam milidetik, diukur ketika pesan asisten pertama yang lengkap tiba. Hadir hanya pada cabang kesuksesan.1483* `ttft_ms`: waktu ke token pertama dalam milidetik, diukur ketika pesan asisten lengkap pertama tiba. Hadir hanya pada lengan kesuksesan.
1479* `ttft_stream_ms`: waktu dalam milidetik hingga event aliran `message_start` pertama, ketika aliran respons dibuka. Lebih rendah dari `ttft_ms`; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada cabang kesuksesan.1484* `ttft_stream_ms`: waktu dalam milidetik hingga acara aliran `message_start` pertama, ketika aliran respons terbuka. Lebih rendah dari `ttft_ms`; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada lengan kesuksesan.
1480* `user_message_uuid`: `uuid` dari [`SDKUserMessage`](#sdkusermessage) yang dijawab putaran ini. Lihat [`user_message_uuid`](#user_message_uuid) untuk hasil mana yang membawanya.1485* `user_message_uuid`: `uuid` dari pesan yang Anda kirim yang dijawab giliran ini. Lihat [`user_message_uuid`](#user_message_uuid) untuk hasil mana yang membawanya.
1481* `user_message_uuids`: `uuid` dari setiap pesan yang Anda kirim yang Claude Code jawab dalam putaran ini. Lihat [`user_message_uuids`](#user_message_uuids).1486* `user_message_uuids`: `uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Lihat [`user_message_uuids`](#user_message_uuids).
1482* `request_sent_wall_ms`: epoch milidetik di mana Claude Code mengirimkan permintaan API, untuk join terhadap timestamp sisi server. Hadir hanya bersama dengan [`user_message_uuid`](#user_message_uuid), pada hasil kesuksesan dengan `is_error` false yang putarannya mengirim permintaan API.1487* `request_sent_wall_ms`: epoch milidetik di mana Claude Code mengirim permintaan API, untuk bergabung dengan stempel waktu sisi server. Hadir hanya bersama dengan [`user_message_uuid`](#user_message_uuid), pada hasil kesuksesan dengan `is_error` false yang gilirannya mengirim permintaan API.
1483* `first_content_frame_ms`: waktu dalam milidetik hingga event aliran `content_block_start` atau `content_block_delta` pertama, menghitung blok pemikiran sebagai konten. Hadir pada cabang kesuksesan saja, ketika `is_error` adalah false. Memerlukan Agent SDK v0.3.260 atau lebih baru.1488* `first_content_frame_ms`: waktu dalam milidetik hingga acara aliran `content_block_start` atau `content_block_delta` pertama, menghitung blok pemikiran sebagai konten. Hadir pada lengan kesuksesan hanya, ketika `is_error` adalah false. Memerlukan Agent SDK v0.3.260 atau lebih baru.
1484* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: waktu untuk mengunggah event aliran pertama putaran. Claude Code merekamnya hanya dalam sesi yang distream ke claude.ai, seperti [sesi cloud](/docs/id/claude-code-on-the-web), dan hasil yang `query()` hasilkan tidak membawanya. Memerlukan Agent SDK v0.3.260 atau lebih baru.1489* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: waktu untuk mengunggah acara aliran pertama giliran. Claude Code merekamnya hanya dalam sesi yang dialirkan ke claude.ai, seperti [sesi cloud](/docs/id/claude-code-on-the-web), dan hasil yang `query()` hasilkan tidak membawanya. Memerlukan Agent SDK v0.3.260 atau lebih baru.
1485* `usage`: loop agen utama saja. Mengecualikan panggilan subagent dan model tambahan, dan per-putaran dalam sesi streaming-input. Lebih suka `modelUsage` untuk akuntansi token/biaya.1490* `usage`: loop agen utama saja. Mengecualikan panggilan subagen dan model tambahan, dan per-giliran dalam sesi input streaming. Lebih suka `modelUsage` untuk akuntansi token/biaya.
1486* `modelUsage`: total per-model untuk setiap panggilan model yang dibuat melalui pipeline query selama panggilan `query()` ini, termasuk loop utama, subagent, dan panggilan internal seperti pemadatan dan agen Workflow. Panggilan pembantu di luar pipeline itu, seperti pengklasifikasi izin dan permintaan penghitungan token, dikecualikan. Dalam sesi streaming-input total bersifat kumulatif di seluruh putaran, jadi baca hasil terbaru daripada menjumlahkan di seluruh hasil. Lihat [Track costs in streaming input mode](/docs/id/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) untuk reset dan [Recover totals after a session crash](/docs/id/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) untuk hasil yang dinolkan.1491* `modelUsage`: total per-model untuk setiap panggilan model yang dibuat melalui pipeline kueri selama panggilan `query()` ini, termasuk loop utama, subagen, dan panggilan internal seperti pemadatan dan agen Workflow. Panggilan pembantu di luar pipeline itu, seperti pengklasifikasi izin dan permintaan penghitungan token, dikecualikan. Dalam sesi input streaming total bersifat kumulatif di seluruh giliran, jadi baca hasil terbaru daripada menjumlahkan di seluruh hasil. Lihat [Lacak biaya dalam mode input streaming](/docs/id/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) untuk pengaturan ulang dan [Pulihkan total setelah kerusakan sesi](/docs/id/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) untuk hasil yang dinolkan.
1487* `total_cost_usd`: biaya perkiraan kumulatif dalam USD untuk panggilan `query()` ini, mencakup panggilan yang sama dengan `modelUsage` dan reset pada titik yang sama. Ini adalah perkiraan, bukan pernyataan penagihan. Lihat [Track cost and usage](/docs/id/agent-sdk/cost-tracking) untuk peringatan akurasi.1492* `total_cost_usd`: biaya perkiraan kumulatif dalam USD untuk panggilan `query()` ini, mencakup panggilan yang sama dengan `modelUsage` dan pengaturan ulang pada titik yang sama. Ini adalah perkiraan, bukan pernyataan penagihan. Lihat [Lacak biaya dan penggunaan](/docs/id/agent-sdk/cost-tracking) untuk peringatan akurasi.
1488* `queued_turn_count`: jumlah pesan yang Anda kirim dengan `origin: { kind: "human" }` yang masih menunggu ketika Claude Code menghasilkan hasil. Lihat [`queued_turn_count`](#queued_turn_count) untuk apa yang `0` dan field yang tidak ada katakan.1493* `queued_turn_count`: jumlah pesan yang Anda kirim dengan `origin: { kind: "human" }` yang masih menunggu ketika Claude Code menghasilkan hasil. Lihat [`queued_turn_count`](#queued_turn_count) untuk apa yang `0` dan bidang yang tidak ada katakan.
1494*
1495
1496`startup_failure_reason`: mengapa Claude Code menolak untuk memulai, pada hasil `error_during_execution` yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Lihat [`startup_failure_reason`](#startup_failure_reason) untuk nilai-nilai dan kegagalan mana yang membawanya. Memerlukan Agent SDK v0.3.274 atau lebih baru.
1497
1489* `terminal_reason`: mengapa loop berakhir. Salah satu dari `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, atau `"turn_setup_failed"`.1498* `terminal_reason`: mengapa loop berakhir. Salah satu dari `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, atau `"turn_setup_failed"`.
1490* `fast_mode_state`: salah satu dari `"on"`, `"off"`, atau `"cooldown"`.1499* `fast_mode_state`: salah satu dari `"on"`, `"off"`, atau `"cooldown"`.
1491* `fast_mode_disabled_reason`: mengapa [fast mode](/docs/id/fast-mode) tidak tersedia sekarang. Tidak ada ketika tidak ada yang memblokir fast mode, meskipun permintaan mungkin masih berjalan dengan kecepatan standar. Selama cooldown setelah batas laju fast mode, Claude Code melaporkan `fast_mode_state: "cooldown"` tanpa kode alasan dan mengaktifkan kembali fast mode ketika cooldown berakhir. Memerlukan Claude Code v2.1.219 atau lebih baru.1500* `fast_mode_disabled_reason`: mengapa [fast mode](/docs/id/fast-mode) tidak tersedia sekarang. Tidak ada ketika tidak ada yang memblokir fast mode, meskipun permintaan mungkin masih berjalan dengan kecepatan standar. Selama cooldown setelah batas laju fast mode, Claude Code melaporkan `fast_mode_state: "cooldown"` tanpa kode alasan dan mengaktifkan kembali fast mode ketika cooldown berakhir. Memerlukan Claude Code v2.1.219 atau lebih baru.
1501| `unknown` | Claude Code tidak dapat menentukan ketersediaan |1510| `unknown` | Claude Code tidak dapat menentukan ketersediaan |
1502| `not_first_party` | Sesi menggunakan penyedia selain Anthropic API |1511| `not_first_party` | Sesi menggunakan penyedia selain Anthropic API |
1503| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/id/env-vars) diatur |1512| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/id/env-vars) diatur |
1504| `model_not_allowed` | Model Opus fast mode tidak ada dalam daftar allowlist [`availableModels`](/docs/id/model-config#restrict-model-selection) organisasi |1513| `model_not_allowed` | Model Opus fast mode tidak ada dalam daftar izin [`availableModels`](/docs/id/model-config#restrict-model-selection) organisasi |
1505| `sdk_opt_in_required` | Sesi belum memilih fast mode: teruskan `fastMode: true` dalam opsi [`settings`](#options) atau melalui [`applyFlagSettings()`](#applyflagsettings) |1514| `sdk_opt_in_required` | Sesi belum memilih fast mode: teruskan `fastMode: true` dalam opsi [`settings`](#options) atau melalui [`applyFlagSettings()`](#applyflagsettings) |
1506| `pending` | Pemeriksaan ketersediaan belum selesai |1515| `pending` | Pemeriksaan ketersediaan belum selesai |
1507 1516
1508Pasangan field yang sama muncul pada [`SDKSystemMessage`](#sdksystemmessage) dan pada [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), jadi Anda dapat membaca status fast mode sebelum putaran pertama.1517Pasangan bidang yang sama muncul pada [`SDKSystemMessage`](#sdksystemmessage) dan pada [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), jadi Anda dapat membaca status fast mode sebelum giliran pertama.
1509 1518
1510Field `origin` meneruskan [`SDKMessageOrigin`](#sdkmessageorigin) dari pesan pengguna yang memicu hasil ini. Ketika SDK menyuntikkan putaran lanjutan sintetis, seperti untuk tugas latar belakang yang selesai, `SDKResultMessage` yang dihasilkan membawa `origin: { kind: "task-notification" }`. Rutinitas yang pemicunya dipecat dan pesan yang diverifikasi server dari sesi lain Anda tiba dengan jenis ini juga, masing-masing dengan `subkind` yang dijelaskan dalam [Task-notification subkinds](#task-notification-subkinds). Periksa `kind` untuk membedakan hasil yang menjawab prompt Anda dari lanjutan yang disuntikkan sebelum merutekan atau menekan mereka.1519Bidang `origin` meneruskan [`SDKMessageOrigin`](#sdkmessageorigin) dari pesan pengguna yang memicu hasil ini. Ketika SDK menyuntikkan giliran tindak lanjut sintetis, seperti untuk tugas yang selesai, `SDKResultMessage` yang dihasilkan membawa `origin: { kind: "task-notification" }`. Rutinitas yang pemicunya dipecat dan pesan yang diverifikasi server dari sesi lain Anda tiba dengan jenis ini juga, masing-masing dengan `subkind` yang dijelaskan dalam [Subkind notifikasi tugas](#task-notification-subkinds). Periksa `kind` untuk membedakan hasil yang menjawab prompt Anda dari tindak lanjut yang disuntikkan sebelum merutekan atau menekan mereka.
1511 1520
1512Field ini tidak ada untuk hasil yang dipancarkan sebelum putaran pengguna apa pun, seperti kesalahan startup.1521Bidang tidak ada untuk hasil yang dipancarkan sebelum giliran pengguna apa pun, seperti kesalahan startup.
1513 1522
1514Ketika hook `PreToolUse` mengembalikan `permissionDecision: "defer"`, hasil memiliki `stop_reason: "tool_deferred"` dan `deferred_tool_use` membawa `id`, `name`, dan `input` tool yang tertunda. Baca field ini untuk menampilkan permintaan di UI Anda sendiri, kemudian lanjutkan dengan `session_id` yang sama untuk melanjutkan. Lihat [Defer a tool call for later](/docs/id/hooks#defer-a-tool-call-for-later) untuk perjalanan putaran lengkap.1523Ketika hook `PreToolUse` mengembalikan `permissionDecision: "defer"`, hasil memiliki `stop_reason: "tool_deferred"` dan `deferred_tool_use` membawa `id`, `name`, dan `input` alat yang tertunda. Baca bidang ini untuk menampilkan permintaan di UI Anda sendiri, kemudian lanjutkan dengan `session_id` yang sama untuk melanjutkan. Lihat [Tunda panggilan alat untuk nanti](/docs/id/hooks#defer-a-tool-call-for-later) untuk perjalanan putaran penuh.
1515 1524
1516<h4 id="user_message_uuid">1525<h4 id="user_message_uuid">
1517 `user_message_uuid`1526 `user_message_uuid`
1518</h4>1527</h4>
1519 1528
1520`uuid` dari [`SDKUserMessage`](#sdkusermessage) yang dijawab putaran ini, diulang sehingga Anda dapat mencocokkan balasan Claude Code dengan pesan yang Anda kirim. Claude Code mengulangi `uuid` hanya jika Anda menetapkan satu pada pesan. Field ini opsional pada `SDKUserMessage`, dan prompt string yang dilewatkan ke `query()` tidak membawa apa pun.1529`uuid` dari [`SDKUserMessage`](#sdkusermessage) yang dijawab giliran, diulang sehingga Anda dapat mencocokkan balasan Claude Code dengan pesan yang Anda kirim. Claude Code mengulangi `uuid` hanya jika Anda menetapkan satu pada pesan. Bidang ini opsional pada `SDKUserMessage`, dan prompt string yang dilewatkan ke `query()` tidak membawa apa pun.
1521 1530
1522Pesan mana yang dijawab putaran tergantung pada bagaimana putaran dimulai:1531Pesan mana yang dijawab giliran tergantung pada bagaimana giliran dimulai:
1523 1532
1524* **Pesan reguler yang Anda kirim**, yang berarti tanpa `isSynthetic: true`: putaran menjawab pesan itu untuk seluruh jalannya. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu putaran, dan field kemudian membawa hanya `uuid` pesan terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, gunakan [`user_message_uuids`](#user_message_uuids).1533* **Pesan reguler yang Anda kirim**, yang berarti tanpa `isSynthetic: true`: giliran menjawab pesan itu untuk seluruh jalannya. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan bidang kemudian membawa hanya `uuid` pesan terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, gunakan [`user_message_uuids`](#user_message_uuids).
1525* **Pesan yang Anda kirim dengan `isSynthetic: true`**: putaran menjawab pesan itu pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, putaran menjawab pesan yang diambil dari saat itu. Mengulangi `uuid` pesan sintetis memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada putaran sintetis.1534* **Pesan yang Anda kirim dengan `isSynthetic: true`**: giliran menjawab pesan itu pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan alat, giliran menjawab pesan yang diambil dari saat itu. Mengulangi `uuid` pesan sintetis memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran sintetis.
1526* **Prompt yang Claude Code hasilkan sendiri**, seperti putaran yang melanjutkan pekerjaan terputus setelah sesi dimulai ulang: putaran tidak menjawab pesan Anda pada awalnya dan frame-nya tidak membawa echo. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, putaran menjawab pesan itu dari saat itu. Echo pengambilan memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada putaran ini.1535* **Prompt yang dihasilkan Claude Code sendiri**, seperti giliran yang melanjutkan pekerjaan terputus setelah sesi dimulai ulang: giliran tidak menjawab pesan Anda pada awalnya dan frame-nya tidak membawa echo. Jika Claude Code mengambil pesan reguler Anda di antara panggilan alat, giliran menjawab pesan itu dari saat itu. Echo pengambilan memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran ini.
1527 1536
1528Claude Code mengulangi `uuid` pesan yang dijawab pada tiga jenis frame:1537Claude Code mengulangi `uuid` pesan yang dijawab pada tiga jenis frame:
1529 1538
1530* **Hasil**: setiap hasil putaran yang menjawab pesan yang Anda kirim. Setiap hasil seperti itu membawanya pada Agent SDK v0.3.265 atau lebih baru. Sebelum v0.3.265, hasil kesuksesan putaran yang dimulai pesan reguler tidak membawanya ketika putaran tidak mengirim permintaan API atau berakhir dengan panggilan tool yang ditunda. Sebelum v0.3.246, hasil kesalahan juga tidak membawanya, dan sebelum v0.3.216 setiap hasil tidak membawanya.1539* **Hasil**: setiap hasil giliran yang menjawab pesan yang Anda kirim. Setiap hasil seperti itu membawanya pada Agent SDK v0.3.265 atau lebih baru. Sebelum v0.3.265, hasil kesuksesan giliran yang dimulai pesan reguler tidak membawanya ketika giliran tidak mengirim permintaan API atau berakhir dengan panggilan alat yang ditunda. Sebelum v0.3.246, hasil kesalahan juga tidak membawanya, dan sebelum v0.3.216 setiap hasil tidak.
1531* **Balasan pertama putaran**: [pesan asisten](#sdkassistantmessage) pertama, atau dengan `includePartialMessages` [event aliran](#sdkpartialassistantmessage) pertama yang `event.type`-nya bukan `ping`, sehingga Anda dapat mengikat balasan sebelum hasil tiba. Ketika putaran tidak streaming apa pun, Claude Code menetapkannya pada pesan asisten pertama sebagai gantinya. Echo balasan pertama memerlukan Agent SDK v0.3.246 atau lebih baru. Ketika pesan yang dijawab putaran berubah di tengah putaran, balasan pertama setelah perubahan membawa field juga, pada Agent SDK v0.3.265 atau lebih baru; versi sebelumnya menetapkannya pada satu frame balasan per putaran.1540* **Balasan pertama giliran**: [pesan asisten](#sdkassistantmessage) pertama, atau dengan `includePartialMessages` [acara aliran](#sdkpartialassistantmessage) pertama yang `event.type` bukan `ping`, jadi Anda dapat mengikat balasan sebelum hasil tiba. Ketika giliran tidak mengalirkan apa pun, Claude Code menetapkannya pada pesan asisten pertama. Echo balasan pertama memerlukan Agent SDK v0.3.246 atau lebih baru. Ketika pesan yang dijawab giliran berubah di tengah giliran, balasan pertama setelah perubahan membawa bidang juga, pada Agent SDK v0.3.265 atau lebih baru; versi sebelumnya menetapkannya pada satu frame balasan per giliran.
1532* **Setiap frame [`thinking_tokens`](#sdkthinkingtokensmessage) putaran**: sehingga Anda dapat mengatribusikan kemajuan pemikiran ke pesan yang Anda kirim tanpa menunggu balasan pertama putaran. Memerlukan Agent SDK v0.3.260 atau lebih baru.1541* **Setiap frame [`thinking_tokens`](#sdkthinkingtokensmessage) giliran**: jadi Anda dapat mengatribusikan kemajuan pemikiran ke pesan yang Anda kirim tanpa menunggu balasan pertama giliran. Memerlukan Agent SDK v0.3.260 atau lebih baru.
1533 1542
1534Claude Code menghilangkan field dalam kasus-kasus ini:1543Claude Code menghilangkan bidang dalam kasus-kasus ini:
1535 1544
1536* Frame balasan selain balasan pertama itu1545* Frame balasan selain balasan pertama itu
1537* Frame subagent1546* Frame subagen
1538* Putaran yang tidak menjawab pesan dengan `uuid`: putaran menjawab pesan yang Anda kirim tanpa satu, atau Claude Code memulai putaran sendiri dan tidak mengambil pesan reguler yang memiliki satu1547* Giliran yang tidak menjawab pesan dengan `uuid`: giliran menjawab pesan yang Anda kirim tanpa satu, atau Claude Code memulai giliran sendiri dan tidak mengambil pesan reguler yang memiliki satu
1539* Hasil yang tidak menjawab pesan apa pun yang Anda kirim, seperti hasil yang dinolkan setelah proses worker yang jatuh1548* Hasil yang tidak menjawab pesan apa pun yang Anda kirim, seperti hasil yang dinolkan setelah proses pekerja yang jatuh
1540 1549
1541<h4 id="user_message_uuids">1550<h4 id="user_message_uuids">
1542 `user_message_uuids`1551 `user_message_uuids`
1543</h4>1552</h4>
1544 1553
1545`uuid` dari setiap pesan yang Anda kirim yang Claude Code jawab dalam putaran ini. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu putaran, dan `user_message_uuid` kemudian menamai hanya yang terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, cari `uuid` pesan itu di mana pun dalam daftar ini. Memerlukan Agent SDK v0.3.259 atau lebih baru.1554`uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan `user_message_uuid` kemudian menamai hanya yang terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, cari `uuid` pesan itu di mana pun dalam daftar ini. Memerlukan Agent SDK v0.3.259 atau lebih baru.
1546 1555
1547Claude Code menetapkan daftar bersama dengan `user_message_uuid` pada setiap frame balasan yang membawa field itu dan pada hasil. Untuk set lengkap frame yang membawa `user_message_uuid`, dan versi yang masing-masing memerlukan, lihat [`user_message_uuid`](#user_message_uuid). Daftar selalu berisi `user_message_uuid` dan menyimpan paling banyak 64 entri.1556Claude Code menetapkan daftar bersama dengan `user_message_uuid` pada setiap frame balasan yang membawa bidang itu dan pada hasil. Untuk set lengkap frame yang membawa `user_message_uuid`, dan versi yang masing-masing memerlukan, lihat [`user_message_uuid`](#user_message_uuid). Daftar selalu berisi `user_message_uuid` dan menyimpan paling banyak 64 entri.
1548 1557
1549Ketika Claude Code mengambil pesan reguler yang Anda kirim saat putaran berjalan, ia menambahkan `uuid` pesan itu ke daftar hasil.1558Ketika Claude Code mengambil pesan reguler yang Anda kirim saat giliran berjalan, ia menambahkan `uuid` pesan itu ke daftar hasil.
1550 1559
1551Ketika balasan pertama atau hasil membawa `user_message_uuid` tanpa daftar, itu berasal dari versi Claude Code sebelumnya, jadi kembali ke field tunggal.1560Ketika balasan pertama atau hasil membawa `user_message_uuid` tanpa daftar, itu berasal dari versi Claude Code sebelumnya, jadi kembali ke bidang tunggal.
1552 1561
1553<h4 id="queued_turn_count">1562<h4 id="queued_turn_count">
1554 `queued_turn_count`1563 `queued_turn_count`
1556 1565
1557Jumlah pesan yang Anda kirim dengan [`origin: { kind: "human" }`](#sdkmessageorigin) yang masih menunggu dalam antrian perintah ketika Claude Code menghasilkan hasil. Memerlukan Agent SDK v0.3.242 atau lebih baru.1566Jumlah pesan yang Anda kirim dengan [`origin: { kind: "human" }`](#sdkmessageorigin) yang masih menunggu dalam antrian perintah ketika Claude Code menghasilkan hasil. Memerlukan Agent SDK v0.3.242 atau lebih baru.
1558 1567
1559Apa yang `0` dan field yang tidak ada katakan:1568Apa yang `0` dan bidang yang tidak ada katakan:
1569
1570* **`0`**: Claude Code tidak menghitung pesan yang Anda kirim tanpa `origin` itu, dan tidak menghitung notifikasi tugas, jadi giliran masih dapat mengikuti.
1571* **Tidak ada**: hasil akhir yang Claude Code pancarkan setelah kerusakan atau kesalahan startup fatal menghilangkan bidang, dan [mungkin membawa total yang dinolkan](/docs/id/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).
1560 1572
1561* **`0`**: Claude Code tidak menghitung pesan yang Anda kirim tanpa `origin` itu, dan tidak menghitung notifikasi tugas, jadi putaran masih dapat mengikuti.1573<h4 id="startup_failure_reason">
1562* **Tidak ada**: hasil akhir yang Claude Code pancarkan setelah crash atau kesalahan startup fatal menghilangkan field, dan [mungkin membawa total yang dinolkan](/docs/id/agent-sdk/cost-tracking#recover-totals-after-a-session-crash).1574 `startup_failure_reason`
1575</h4>
1576
1577Mengapa Claude Code menolak untuk memulai, sehingga aplikasi Anda dapat menawarkan perbaikan daripada percobaan ulang. Claude Code menetapkannya pada hasil `error_during_execution` yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Hasil itu membawa total yang dinolkan, dan array `errors` membawa teks yang sama dengan stderr. Bidang tidak ada pada setiap hasil lainnya. Memerlukan Agent SDK v0.3.274 atau lebih baru.
1578
1579Atur `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` ke `1` dalam [`env`](#options) untuk menerima hasil ini untuk setiap nilai `SDKStartupFailureReason`. Tanpa variabel itu, Claude Code menulis hasil hanya untuk kegagalan ini, dan sisanya berakhir dengan output stderr, keluar non-nol, dan tidak ada pesan hasil:
1580
1581* Resume yang Claude Code hentikan karena tidak dapat [mengembalikan sesi ke worktree-nya](/docs/id/worktrees#the-session-resumes-outside-its-worktree), dengan `worktree_unverified` atau `worktree_resume_refused`. Bagian itu mengatakan kesalahan mana yang membawa nilai mana.
1582* [`continue`](#options) yang ditolak dari percakapan yang dipegang sesi latar belakang, dengan `session_held_by_background`. Untuk [`resume`](#options) yang ditolak dari percakapan seperti itu, Claude Code menulis hasil hanya ketika variabel diatur.
1583
1584```typescript theme={null}
1585type SDKStartupFailureReason =
1586 | "org_pin_api_key_conflict"
1587 | "org_verify_failed"
1588 | "org_pin_mismatch"
1589 | "managed_settings_invalid"
1590 | "remote_settings_required_unavailable"
1591 | "gateway_signin_required"
1592 | "gateway_access_denied"
1593 | "proxy_invalid"
1594 | "temp_dir_unusable"
1595 | "cwd_unavailable"
1596 | "shell_tool_missing"
1597 | "session_held_by_background"
1598 | "worktree_resume_refused"
1599 | "worktree_unverified"
1600 | "cli_version_too_old"
1601 | "bypass_root";
1602```
1603
1604Setiap nilai menamai satu penolakan:
1605
1606| Nilai | Apa yang menghentikan sesi |
1607| :------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1608| `org_pin_api_key_conflict` | Pengaturan terkelola [memerlukan masuk gateway first-party atau Cloud](/docs/id/authentication#restrict-login-to-your-organization), dan kunci API Anthropic, token auth, atau `apiKeyHelper` dikonfigurasi sebagai gantinya |
1609| `org_verify_failed` | Organisasi masuk tidak dapat diverifikasi terhadap pin, misalnya karena kegagalan jaringan atau token yang dicabut |
1610| `org_pin_mismatch` | Masuk milik organisasi yang pin tidak izinkan |
1611| `managed_settings_invalid` | Pengaturan kebijakan terkelola tidak dapat dibaca, atau pin tidak menamai organisasi |
1612| `remote_settings_required_unavailable` | Pengaturan terkelola yang organisasi perlukan tidak dapat dimuat |
1613| `gateway_signin_required` | [Gateway cloud](/docs/id/claude-apps-gateway) mengakhiri masuk ini |
1614| `gateway_access_denied` | Permintaan pengaturan terkelola ke gateway cloud kembali dengan 403, yang [tabel pemecahan masalah](/docs/id/claude-apps-gateway-deploy#troubleshooting) gateway mencakup |
1615| `proxy_invalid` | Pengaturan proxy bukan URL lengkap |
1616| `temp_dir_unusable` | Direktori sementara per-pengguna tidak aman atau tidak dapat dibuat |
1617| `cwd_unavailable` | Direktori kerja dihapus, dipindahkan, atau tidak dapat dibaca |
1618| `shell_tool_missing` | Di Windows, tidak ada alat shell yang tersedia: Git Bash hilang, dan PowerShell hilang atau dimatikan dengan `CLAUDE_CODE_USE_POWERSHELL_TOOL` |
1619| `session_held_by_background` | Percakapan untuk dilanjutkan atau diteruskan berjalan sebagai [sesi latar belakang](/docs/id/agent-view) |
1620| `worktree_resume_refused` | Worktree sesi gagal pemeriksaan keamanannya, atau resume diluncurkan dari dalamnya. `errors` mengatakan apakah menjalankan resume yang sama lagi berlanjut tanpa worktree |
1621| `worktree_unverified` | Worktree sesi tidak dapat diverifikasi sekarang, dan mencoba lagi mungkin berhasil |
1622| `cli_version_too_old` | Versi Claude Code ini di bawah minimum yang Anthropic perlukan |
1623| `bypass_root` | Mode izin bypass diminta saat berjalan sebagai root |
1563 1624
1564<h3 id="sdksystemmessage">1625<h3 id="sdksystemmessage">
1565 `SDKSystemMessage`1626 `SDKSystemMessage`
1582 mcp_servers: {1643 mcp_servers: {
1583 name: string;1644 name: string;
1584 status: string;1645 status: string;
1646 source?: string;
1585 }[];1647 }[];
1586 model: string;1648 model: string;
1587 permissionMode: PermissionMode;1649 permissionMode: PermissionMode;
1597};1659};
1598```1660```
1599 1661
1600`fast_mode_state` melaporkan status [fast mode](/docs/id/fast-mode) sesi. Ketika sesuatu memblokir fast mode, `fast_mode_disabled_reason` menamai pemeriksaan yang memblokirnya; field memerlukan Claude Code v2.1.219 atau lebih baru. Untuk kode alasan dan artinya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.1662`fast_mode_state` melaporkan status [fast mode](/docs/id/fast-mode) sesi. Ketika sesuatu memblokir fast mode, `fast_mode_disabled_reason` menamai pemeriksaan yang memblokirnya; bidang memerlukan Claude Code v2.1.219 atau lebih baru. Untuk kode alasan dan artinya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.
1663
1664`terminal_slash_commands` menamai entri dalam `slash_commands` yang antarmukanya terikat ke terminal lokal, seperti `exit`. Anda dapat mengirimnya seperti entri lain dalam `slash_commands`; bidang ada sehingga klien jarak jauh atau mobile dapat menyembunyikannya dari menu perintah. Bidang ada hanya ketika tidak kosong, dan memerlukan Agent SDK v0.3.229 atau lebih baru.
1601 1665
1602`terminal_slash_commands` menamai entri dalam `slash_commands` yang antarmukanya terikat ke terminal lokal, seperti `exit`. Anda dapat mengirimnya seperti entri lain dalam `slash_commands`; field ada sehingga klien jarak jauh atau mobile dapat menyembunyikannya dari menu perintah. Field ada hanya ketika tidak kosong, dan memerlukan Agent SDK v0.3.229 atau lebih baru.1666*
1667
1668`source` pada setiap entri `mcp_servers`: dari mana definisi server berasal, dengan nilai yang sama seperti [`McpServerStatus`](#mcpserverstatus) `source`. Memerlukan Agent SDK v0.3.274 atau lebih baru.
1603 1669
1604*1670*
1605 1671
1606`effort`: [tingkat upaya](/docs/id/model-config#adjust-effort-level) yang Claude Code kirim pada permintaan sesi berikutnya, atau `null` ketika tidak mengirim apa pun. Claude Code menetapkan field hanya pada pesan init yang dikirimnya ke klien [Remote Control](/docs/id/remote-control), dan menghilangkannya dari pesan init yang dibaca aplikasi Anda. Memerlukan Agent SDK v0.3.234 atau lebih baru.1672`effort`: [tingkat upaya](/docs/id/model-config#adjust-effort-level) yang Claude Code kirim pada permintaan sesi berikutnya, atau `null` ketika tidak mengirim apa pun. Claude Code menetapkan bidang hanya pada pesan init yang dikirimnya ke klien [Remote Control](/docs/id/remote-control), dan menghilangkannya dari pesan init yang dibaca aplikasi Anda. Memerlukan Agent SDK v0.3.234 atau lebih baru.
1607 1673
1608Array `capabilities` menamai perilaku protokol yang diimplementasikan CLI ini, sehingga Anda dapat mendeteksi fitur daripada membandingkan string `claude_code_version`. Ini adalah set terbuka: abaikan nilai yang tidak Anda kenali, dan periksa kemampuan spesifik yang perilakunya Anda andalkan. Field memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada pada CLI yang lebih awal.1674Array `capabilities` menamai perilaku protokol yang diimplementasikan CLI ini, jadi Anda dapat mendeteksi fitur daripada membandingkan string `claude_code_version`. Ini adalah set terbuka: abaikan nilai yang tidak Anda kenal, dan periksa kemampuan spesifik yang perilakunya Anda andalkan. Bidang memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada pada CLI sebelumnya.
1609 1675
1610| Kemampuan | Arti |1676| Kemampuan | Arti |
1611| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1677| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1612| `interrupt_receipt_v1` | [`interrupt()`](#query-object) diselesaikan dengan penerimaan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan yang tertunda ketika interrupt tiba |1678| `interrupt_receipt_v1` | [`interrupt()`](#query-object) menyelesaikan dengan penerimaan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan yang tertunda ketika gangguan tiba |
1613| `interrupt_cancel_queued_v1` | Permintaan kontrol `interrupt` menghormati `cancel_queued: true`, membatalkan pesan yang penerimaan akan sebaliknya cantumkan di bawah `still_queued` dan mencantumkannya di bawah `cancelled` sebagai gantinya. Lihat [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Memerlukan Claude Code v2.1.219 atau lebih baru |1679| `interrupt_cancel_queued_v1` | Permintaan kontrol `interrupt` menghormati `cancel_queued: true`, membatalkan pesan yang akan dicantumkan penerimaan di bawah `still_queued` dan mencantumnya di bawah `cancelled` sebagai gantinya. Lihat [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Memerlukan Claude Code v2.1.219 atau lebih baru |
1614 1680
1615<h3 id="sdkpartialassistantmessage">1681<h3 id="sdkpartialassistantmessage">
1616 `SDKPartialAssistantMessage`1682 `SDKPartialAssistantMessage`
1617</h3>1683</h3>
1618 1684
1619Pesan parsial streaming (hanya ketika `includePartialMessages` adalah true). Field `parent_tool_use_id` selalu `null`: event aliran dipancarkan untuk sesi utama saja. Untuk atribusi subagent, gunakan pesan lengkap, yang membawa `parent_tool_use_id`, atau aktifkan [`forwardSubagentText`](#options) untuk menerima teks dan pemikiran subagent sebagai pesan lengkap.1685Pesan parsial streaming (hanya ketika `includePartialMessages` adalah true). Bidang `parent_tool_use_id` selalu `null`: acara aliran dipancarkan untuk sesi utama saja. Untuk atribusi subagen, gunakan pesan lengkap, yang membawa `parent_tool_use_id`, atau aktifkan [`forwardSubagentText`](#options) untuk menerima teks dan pemikiran subagen sebagai pesan lengkap.
1620 1686
1621```typescript theme={null}1687```typescript theme={null}
1622type SDKPartialAssistantMessage = {1688type SDKPartialAssistantMessage = {
1625 parent_tool_use_id: string | null;1691 parent_tool_use_id: string | null;
1626 uuid: UUID;1692 uuid: UUID;
1627 session_id: string;1693 session_id: string;
1628 ttft_ms?: number; // Waktu ke token pertama dalam ms, hadir hanya pada event message_start1694 ttft_ms?: number; // Waktu ke token pertama dalam ms, hadir hanya pada acara message_start
1629 user_message_uuid?: string;1695 user_message_uuid?: string;
1630 user_message_uuids?: string[];1696 user_message_uuids?: string[];
1631};1697};
1632```1698```
1633 1699
1634Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada event aliran non-ping pertama putaran, dan lagi ketika pesan yang dijawab putaran berubah, di bawah kondisi dalam [`user_message_uuid`](#user_message_uuid).1700Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada acara aliran non-ping pertama giliran, dan lagi ketika pesan yang dijawab giliran berubah, di bawah kondisi dalam [`user_message_uuid`](#user_message_uuid).
1635 1701
1636<h3 id="sdkcompactboundarymessage">1702<h3 id="sdkcompactboundarymessage">
1637 `SDKCompactBoundaryMessage`1703 `SDKCompactBoundaryMessage`
1656 `SDKInformationalMessage`1722 `SDKInformationalMessage`
1657</h3>1723</h3>
1658 1724
1659Spanduk teks generik yang dipancarkan oleh loop. Membawa baris status non-error, umpan balik hook seperti alasan blok hook `UserPromptSubmit`, dan output perintah. Pada Claude Code v2.1.227 atau lebih baru, [`systemMessage`](/docs/id/hooks#json-output) hook dapat tiba sebagai pesan ini, dengan setiap baris diawali oleh nama hook, seperti `PostToolUse:Bash says:`. Apakah `systemMessage` hook tiba sebagai pesan ini tergantung pada event. Setiap [bagian event](/docs/id/hooks#hook-events) pada halaman hooks mengatakan bagaimana output muncul. Render `content` sebagai plaintext pada `level` yang diberikan.1725Spanduk teks generik yang dipancarkan oleh loop. Membawa baris status non-kesalahan, umpan balik hook seperti alasan blokir hook `UserPromptSubmit`, dan output perintah. Pada Claude Code v2.1.227 atau lebih baru, [`systemMessage`](/docs/id/hooks#json-output) hook dapat tiba sebagai pesan ini, dengan setiap baris diawali oleh nama hook, seperti `PostToolUse:Bash says:`. Apakah `systemMessage` hook tiba sebagai pesan ini tergantung pada acara. Setiap [bagian acara](/docs/id/hooks#hook-events) pada halaman hooks mengatakan bagaimana output muncul. Render `content` sebagai plaintext pada `level` yang diberikan.
1660 1726
1661```typescript theme={null}1727```typescript theme={null}
1662type SDKInformationalMessage = {1728type SDKInformationalMessage = {
1675 `SDKWorkerShuttingDownMessage`1741 `SDKWorkerShuttingDownMessage`
1676</h3>1742</h3>
1677 1743
1678Dipancarkan pada pembongkaran worker yang elegan sehingga klien jarak jauh dapat menunjukkan mengapa worker hilang daripada menunggu timeout heartbeat. `reason` adalah string snake\_case pendek yang ditetapkan oleh CLI host, seperti `"host_exit"` atau `"remote_control_disabled"`. Bertindak atas ini hanya ketika streaming langsung. Sesi yang dilanjutkan memutar ulang instance masa lalu dari pesan ini, jadi abaikan dalam kasus itu.1744Dipancarkan pada pembongkaran pekerja yang anggun sehingga klien jarak jauh dapat menunjukkan mengapa pekerja keluar daripada menunggu timeout detak jantung. `reason` adalah string snake\_case pendek yang ditetapkan oleh CLI host, seperti `"host_exit"` atau `"remote_control_disabled"`. Bertindak atas ini hanya ketika streaming langsung. Sesi yang dilanjutkan memutar ulang instans masa lalu dari pesan ini, jadi abaikan dalam kasus itu.
1679 1745
1680```typescript theme={null}1746```typescript theme={null}
1681type SDKWorkerShuttingDownMessage = {1747type SDKWorkerShuttingDownMessage = {
1691 `SDKPluginInstallMessage`1757 `SDKPluginInstallMessage`
1692</h3>1758</h3>
1693 1759
1694Event kemajuan instalasi plugin. Dipancarkan ketika [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/id/env-vars) diatur, sehingga aplikasi Agent SDK Anda dapat melacak instalasi plugin marketplace sebelum putaran pertama. Status `started` dan `completed` mengurung instalasi keseluruhan. Status `installed` dan `failed` melaporkan marketplace individual dan menyertakan `name`.1760Acara kemajuan instalasi plugin. Dipancarkan ketika [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/id/env-vars) diatur, jadi aplikasi Agent SDK Anda dapat melacak instalasi plugin marketplace sebelum giliran pertama. Status `started` dan `completed` mengurung instalasi keseluruhan. Status `installed` dan `failed` melaporkan marketplace individual dan menyertakan `name`.
1695 1761
1696```typescript theme={null}1762```typescript theme={null}
1697type SDKPluginInstallMessage = {1763type SDKPluginInstallMessage = {
1709 `SDKPermissionDeniedMessage`1775 `SDKPermissionDeniedMessage`
1710</h3>1776</h3>
1711 1777
1712Event aliran yang dipancarkan ketika sistem izin menolak panggilan tool tanpa prompt interaktif. Gunakan ini untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil tool `is_error` yang mengikuti. Penolakan mana yang dilaporkan tergantung pada bagaimana jalannya menangani prompt izin:1778Acara aliran yang dipancarkan ketika sistem izin menolak panggilan alat tanpa prompt interaktif. Gunakan untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil alat `is_error` yang mengikuti. Penolakan mana yang dilaporkan tergantung pada bagaimana jalannya menangani prompt izin:
1713 1779
1714* **Dengan callback [`canUseTool`](#canusetool) dan [`permissionPrompts: 'host'`](#options) default**: prompt izin pergi ke callback Anda, dan event ini melaporkan penolakan yang Claude Code putuskan sendiri tanpa memanggilnya.1780* **Dengan callback [`canUseTool`](#canusetool) dan [`permissionPrompts: 'host'`](#options) default**: prompt izin pergi ke callback Anda, dan acara ini melaporkan penolakan yang Claude Code putuskan sendiri tanpa memanggilnya.
1715*1781*
1716 1782
1717**Tanpa keduanya**: jalankan `-p` bare, atau `query()` yang tidak menetapkan `canUseTool` atau `permissionPromptToolName`, menolak panggilan tool apa pun yang akan diminta, dan event ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Sebelum v2.1.223, Claude Code tidak memancarkan event ini dalam jalankan tanpa callback.1783**Tanpa keduanya**: jalankan `-p` telanjang, atau `query()` yang tidak menetapkan `canUseTool` atau `permissionPromptToolName`, menolak panggilan alat apa pun yang akan diminta, dan acara ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Sebelum v2.1.223, Claude Code tidak memancarkan acara ini dalam jalankan tanpa callback.
1718 1784
1719* **Dengan tool prompt MCP**, diatur dengan `permissionPromptToolName` atau flag [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags), dan `permissionPrompts: 'host'` default: Claude Code tidak memancarkan event ini sama sekali, bahkan untuk penolakan aturan yang diputuskan sendiri.1785* **Dengan alat prompt MCP**, diatur dengan `permissionPromptToolName` atau flag [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags), dan `permissionPrompts: 'host'` default: Claude Code tidak memancarkan acara ini sama sekali, bahkan untuk penolakan aturan yang diputuskan sendiri.
1720*1786*
1721 1787
1722**Dengan [`permissionPrompts: 'none'`](#options)**: Claude Code menolak panggilan yang akan diminta, bahkan ketika `canUseTool` atau tool prompt MCP juga diatur, dan event ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Memerlukan Claude Code v2.1.259 atau lebih baru.1788**Dengan [`permissionPrompts: 'none'`](#options)**: Claude Code menolak panggilan yang akan diminta, bahkan ketika `canUseTool` atau alat prompt MCP juga diatur, dan acara ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Memerlukan Claude Code v2.1.259 atau lebih baru.
1723 1789
1724Dalam setiap konfigurasi, event ini melewati penolakan apa pun yang diputuskan pada jalur hook `PreToolUse`, apakah hook menolak panggilan sendiri atau aturan deny menimpa keputusan allow atau ask hook. Event juga best-effort: kadang-kadang Claude Code mencatat penolakan tanpa memancarkan event ini, jadi `permission_denials` pada [pesan hasil](#sdkresultmessage) adalah catatan otoritatif.1790Dalam setiap konfigurasi, acara ini melewati penolakan apa pun yang diputuskan pada jalur hook `PreToolUse`, apakah hook menolak panggilan sendiri atau aturan deny menimpa keputusan allow atau ask hook. Acara ini juga best-effort: kadang-kadang Claude Code merekam penolakan tanpa memancarkan acara ini, jadi `permission_denials` pada [pesan hasil](#sdkresultmessage) adalah catatan otoritatif.
1725 1791
1726```typescript theme={null}1792```typescript theme={null}
1727type SDKPermissionDeniedMessage = {1793type SDKPermissionDeniedMessage = {
1738};1804};
1739```1805```
1740 1806
1741| Field | Tipe | Deskripsi |1807| Bidang | Tipe | Deskripsi |
1742| ---------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------- |1808| ---------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
1743| `tool_name` | `string` | Nama tool yang ditolak |1809| `tool_name` | `string` | Nama alat yang ditolak |
1744| `tool_use_id` | `string` | ID dari blok `tool_use` yang dijawab penolakan ini |1810| `tool_use_id` | `string` | ID blok `tool_use` yang dijawab penolakan ini |
1745| `agent_id` | `string` | ID subagent ketika panggilan yang ditolak berasal dari dalam subagent. Mencerminkan field pada `can_use_tool` untuk perutean sisi host |1811| `agent_id` | `string` | ID subagen ketika panggilan yang ditolak berasal dari dalam subagen. Mencerminkan bidang pada `can_use_tool` untuk perutean sisi host |
1746| `decision_reason_type` | `string` | Diskriminator untuk komponen yang memutuskan, seperti `"rule"`, `"mode"`, `"classifier"`, atau `"asyncAgent"` |1812| `decision_reason_type` | `string` | Diskriminator untuk komponen yang memutuskan, seperti `"rule"`, `"mode"`, `"classifier"`, atau `"asyncAgent"` |
1747| `decision_reason` | `string` | Alasan yang dapat dibaca manusia dari komponen yang memutuskan, ketika tersedia |1813| `decision_reason` | `string` | Alasan yang dapat dibaca manusia dari komponen yang memutuskan, ketika tersedia |
1748| `message` | `string` | Pesan penolakan yang dikembalikan ke model dalam `tool_result` |1814| `message` | `string` | Pesan penolakan yang dikembalikan ke model dalam `tool_result` |
1751 `SDKPermissionDenial`1817 `SDKPermissionDenial`
1752</h3>1818</h3>
1753 1819
1754Informasi tentang penggunaan tool yang ditolak.1820Informasi tentang penggunaan alat yang ditolak.
1755 1821
1756```typescript theme={null}1822```typescript theme={null}
1757type SDKPermissionDenial = {1823type SDKPermissionDenial = {
1765 `SDKContextUsage`1831 `SDKContextUsage`
1766</h3>1832</h3>
1767 1833
1768Bentuk terstruktur dari laporan `/context`, dibawa sebagai `context_usage` pada [`SDKAssistantMessage`](#sdkassistantmessage) yang mengirimkan hasil `/context`. Agent SDK v0.3.232 dan lebih baru mengekspor tipe. Tidak seperti [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), ia hanya membawa data yang diperlukan untuk merender rincian penggunaan, tanpa field tampilan seperti `color` dan `gridRows`.1834Bentuk terstruktur dari laporan `/context`, dibawa sebagai `context_usage` pada [`SDKAssistantMessage`](#sdkassistantmessage) yang mengirimkan hasil `/context`. Agent SDK v0.3.232 dan lebih baru mengekspor tipe. Tidak seperti [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), ia hanya membawa data yang diperlukan untuk merender rincian penggunaan, tanpa bidang tampilan seperti `color` dan `gridRows`.
1769 1835
1770```typescript theme={null}1836```typescript theme={null}
1771type SDKContextUsage = {1837type SDKContextUsage = {
1802};1868};
1803```1869```
1804 1870
1805Tabel mencantumkan apa yang Claude Code masukkan dalam setiap field. Field dari `model` melalui `over_limit` mendeskripsikan sesi secara keseluruhan, dan field koleksi mengatribusikan token ke item individual.1871Tabel mencantumkan apa yang Claude Code masukkan dalam setiap bidang. Bidang dari `model` melalui `over_limit` menggambarkan sesi secara keseluruhan, dan bidang koleksi mengatribusikan token ke item individual.
1806 1872
1807| Field | Tipe | Deskripsi |1873| Bidang | Tipe | Deskripsi |
1808| ---------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1874| ---------------- | --------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1809| `model` | `string` | Model loop utama yang Claude Code hitung penggunaan untuk, bukan subagent |1875| `model` | `string` | Model loop utama yang Claude Code hitung penggunaan, bukan subagen |
1810| `total_tokens` | `number` | Perkiraan Claude Code dari token yang digunakan. Tidak diklem ke jendela, jadi dapat melebihi `raw_max_tokens` ketika sesi melampaui batas |1876| `total_tokens` | `number` | Perkiraan Claude Code tentang token yang digunakan. Tidak diklem ke jendela, jadi dapat melebihi `raw_max_tokens` ketika sesi melampaui batas |
1811| `raw_max_tokens` | `number` | Jendela konteks model, atau [jendela auto-compact](/docs/id/model-config#context-window-and-auto-compaction) yang lebih rendah ketika satu berlaku, seperti yang Anda atur atau batas 200K yang Claude Code terapkan pada beberapa model dengan jendela 1M-token. Claude Code mengukur `total_tokens` terhadap jendela ini |1877| `raw_max_tokens` | `number` | Jendela konteks model, atau [jendela auto-compact](/docs/id/model-config#context-window-and-auto-compaction) yang lebih rendah ketika satu berlaku, seperti yang Anda atur atau batas 200K yang Claude Code terapkan pada beberapa model dengan jendela 1M-token. Claude Code mengukur `total_tokens` terhadap jendela ini |
1812| `percentage` | `number` | `total_tokens` sebagai persentase pembulatan `raw_max_tokens`, jadi dapat melebihi 100 ketika sesi melampaui batas |1878| `percentage` | `number` | `total_tokens` sebagai persentase pembulatan `raw_max_tokens`, jadi dapat melebihi 100 ketika sesi melampaui batas |
1813| `over_limit` | `object` | Ada hanya ketika `total_tokens` melebihi `raw_max_tokens`. `tokens_over` adalah jumlah yang berlebihan, dan `kind` mengatakan bagaimana Claude Code menyelesaikan jendela |1879| `over_limit` | `object` | Hadir hanya ketika `total_tokens` melebihi `raw_max_tokens`. `tokens_over` adalah jumlah yang berlebihan, dan `kind` mengatakan bagaimana Claude Code menyelesaikan jendela |
1814| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Satu entri per baris rincian penggunaan-per-kategori |1880| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Satu entri per baris rincian penggunaan-per-kategori |
1815| `mcp_tools` | `object[]` | Token yang diatribusikan ke setiap tool MCP, dengan nama kawatnya, seperti `mcp__linear__create_issue`, dan `server_name`-nya |1881| `mcp_tools` | `object[]` | Token yang diatribusikan ke setiap alat MCP, dengan nama kawatnya, seperti `mcp__linear__create_issue`, dan `server_name` |
1816| `memory_files` | `object[]` | Token yang diatribusikan ke setiap file memori yang dimuat, dengan `path`-nya dan label sumber seperti `Project` atau `User` dalam `type` |1882| `memory_files` | `object[]` | Token yang diatribusikan ke setiap file memori yang dimuat, dengan `path` dan label sumber seperti `Project` atau `User` dalam `type` |
1817| `agents` | `object[]` | Token yang diatribusikan ke setiap definisi subagent kustom, dengan pengidentifikasi sumber seperti `projectSettings`, `userSettings`, atau `plugin`. Subagent bawaan tidak tercantum |1883| `agents` | `object[]` | Token yang diatribusikan ke setiap definisi subagen kustom, dengan pengidentifikasi sumber seperti `projectSettings`, `userSettings`, atau `plugin`. Subagen bawaan tidak tercantum |
1818| `skills` | `object[]` | Token yang diatribusikan ke setiap skill dalam daftar skill, dengan pengidentifikasi sumber dan, untuk skill plugin, nama plugin dalam `plugin_name`. Tidak ada ketika tidak ada skill yang berkontribusi token |1884| `skills` | `object[]` | Token yang diatribusikan ke setiap skill dalam daftar skill, dengan pengidentifikasi sumber dan, untuk skill plugin, nama plugin dalam `plugin_name`. Tidak ada ketika tidak ada skill yang berkontribusi token |
1819 1885
1820`over_limit.kind` mencatat bagaimana Claude Code menyelesaikan jendela, bukan apakah API menerima permintaan berikutnya:1886`over_limit.kind` merekam bagaimana Claude Code menyelesaikan jendela, bukan apakah API menerima permintaan berikutnya:
1821 1887
1822* `hard_limit`: jendela adalah apa yang Claude Code percaya menjadi batas model sendiri, melampaui mana API menolak permintaan1888* `hard_limit`: jendela adalah apa yang Claude Code percaya menjadi batas model sendiri, melampaui mana API menolak permintaan
1823* `compaction_window`: jendela adalah jendela kebijakan pemadatan, yang mungkin atau mungkin tidak bertepatan dengan batas model1889* `compaction_window`: jendela adalah jendela kebijakan pemadatan, yang mungkin atau mungkin tidak bertepatan dengan batas model
1824 1890
1825Claude Code mengembangkan tipe secara aditif, menambahkan data baru sebagai field opsional daripada membentuk ulang yang ada. Baca field yang Anda ketahui dan abaikan yang tidak Anda kenali.1891Claude Code mengembangkan tipe secara aditif, menambahkan data baru sebagai bidang opsional daripada membentuk ulang yang ada. Baca bidang yang Anda ketahui dan abaikan yang tidak Anda kenal.
1826 1892
1827<h3 id="sdkcontextusagecategory">1893<h3 id="sdkcontextusagecategory">
1828 `SDKContextUsageCategory`1894 `SDKContextUsageCategory`
1829</h3>1895</h3>
1830 1896
1831Satu baris rincian penggunaan `/context` per-kategori.1897Satu baris rincian penggunaan-per-kategori `/context`.
1832 1898
1833```typescript theme={null}1899```typescript theme={null}
1834type SDKContextUsageCategory = {1900type SDKContextUsageCategory = {
1838};1904};
1839```1905```
1840 1906
1841Tabel mencantumkan apa yang Claude Code masukkan dalam setiap field baris.1907Tabel mencantumkan apa yang Claude Code masukkan dalam setiap bidang baris.
1842 1908
1843| Field | Tipe | Deskripsi |1909| Bidang | Tipe | Deskripsi |
1844| -------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |1910| -------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------- |
1845| `name` | `string` | Nama tampilan baris seperti yang dicetak `/context`, seperti `Messages`. Klasifikasikan baris berdasarkan `kind`, bukan berdasarkan nama |1911| `name` | `string` | Nama tampilan baris seperti `/context` mencetaknya, seperti `Messages`. Klasifikasikan baris berdasarkan `kind`, bukan berdasarkan nama |
1846| `tokens` | `number` | Hitungan token baris. Baris dapat membawa nol token |1912| `tokens` | `number` | Hitungan token baris. Baris dapat membawa nol token |
1847| `kind` | `string` | Apa yang diwakili baris: `used`, `free`, `buffer`, atau `deferred` |1913| `kind` | `string` | Apa yang diwakili baris: `used`, `free`, `buffer`, atau `deferred` |
1848 1914
1851* `used`: konten yang menempati jendela konteks1917* `used`: konten yang menempati jendela konteks
1852* `free`: jendela yang tersisa1918* `free`: jendela yang tersisa
1853* `buffer`: cadangan pemadatan1919* `buffer`: cadangan pemadatan
1854* `deferred`: skema tool yang Claude Code tahan di luar jendela dan kecualikan dari perhitungan penggunaan, tercantum untuk kesadaran1920* `deferred`: skema alat yang Claude Code tahan di luar jendela dan kecualikan dari perhitungan penggunaan, tercantum untuk kesadaran
1855 1921
1856<h3 id="sdkmessageorigin">1922<h3 id="sdkmessageorigin">
1857 `SDKMessageOrigin`1923 `SDKMessageOrigin`
1858</h3>1924</h3>
1859 1925
1860Asal-usul pesan dengan peran pengguna. Ini muncul sebagai `origin` pada [`SDKUserMessage`](#sdkusermessage) dan diteruskan ke [`SDKResultMessage`](#sdkresultmessage) yang sesuai sehingga Anda dapat mengetahui apa yang memicu putaran tertentu.1926Asal usul pesan peran pengguna. Ini muncul sebagai `origin` pada [`SDKUserMessage`](#sdkusermessage) dan diteruskan ke [`SDKResultMessage`](#sdkresultmessage) yang sesuai sehingga Anda dapat mengetahui apa yang memicu giliran tertentu.
1861 1927
1862```typescript theme={null}1928```typescript theme={null}
1863type SDKMessageOrigin =1929type SDKMessageOrigin =
1883```1949```
1884 1950
1885| `kind` | Arti |1951| `kind` | Arti |
1886| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1952| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
1887| `human` | Input langsung dari pengguna akhir. Jika aplikasi Anda meneruskan apa yang diketik pengguna sebagai pesan pengguna, atur `origin`-nya ke `{ kind: "human" }` secara eksplisit: Claude Code memperlakukan pesan pengguna tanpa `origin` sebagai tidak teratribusi, dan memeriksa yang memerlukan prompt yang diketik manusia, seperti [kata kunci workflow `ultracode`](/docs/id/workflows#ask-for-a-workflow-in-your-prompt), tidak menerimanya. Sebelum v2.1.210, Claude Code memperlakukan `origin` yang tidak ada pada pesan pengguna sebagai input manusia. |1953| `human` | Input langsung dari pengguna akhir. Jika aplikasi Anda meneruskan apa yang diketik pengguna sebagai pesan pengguna, atur `origin` ke `{ kind: "human" }` secara eksplisit: Claude Code memperlakukan pesan pengguna tanpa `origin` sebagai tidak teratribusi, dan memeriksa yang memerlukan prompt yang diketik manusia, seperti [kata kunci workflow `ultracode`](/docs/id/workflows#ask-for-a-workflow-in-your-prompt), tidak menerimanya. Sebelum v2.1.210, Claude Code memperlakukan `origin` yang tidak ada pada pesan pengguna sebagai input manusia. |
1888| `channel` | Pesan yang tiba di [channel](/docs/id/channels). `server` adalah nama server MCP sumber. |1954| `channel` | Pesan tiba di [channel](/docs/id/channels). `server` adalah nama server MCP sumber. |
1889| `peer` | Pesan dari agen lain: [rekan tim](/docs/id/agent-teams) dalam proses atau [peer lintas sesi](/docs/id/cross-session-messaging), sesi Claude Code lain Anda. Lihat [Peer origin fields](#peer-origin-fields) untuk semantik per-field dan model kepercayaan. |1955| `peer` | Pesan dari agen lain: [rekan kerja](/docs/id/agent-teams) dalam proses atau [rekan lintas sesi](/docs/id/cross-session-messaging), sesi Claude Code lain Anda. Lihat [Bidang asal peer](#peer-origin-fields) untuk semantik per-bidang dan model kepercayaan. |
1890| `task-notification` | Putaran sintetis yang disuntikkan untuk pengiriman yang tiba tanpa prompt pengguna segar, seperti tugas latar belakang yang selesai; lihat [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) untuk lengan itu. `subkind` opsional menandai apa yang menaikkan notifikasi. Lihat [Task-notification subkinds](#task-notification-subkinds). |1956| `task-notification` | Giliran sintetis yang disuntikkan untuk pengiriman yang tiba tanpa prompt pengguna segar, seperti tugas yang selesai; lihat [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) untuk lengan itu. `subkind` opsional menandai apa yang menaikkan notifikasi. Lihat [Subkind notifikasi tugas](#task-notification-subkinds). |
1891| `coordinator` | Pesan dari koordinator tim dalam [tim agen](/docs/id/agent-teams). |1957| `coordinator` | Pesan dari koordinator tim dalam [tim agen](/docs/id/agent-teams). |
1892| `auto-continuation` | Putaran sintetis yang disuntikkan ketika sesi berlanjut tanpa input pengguna segar, seperti hasil perintah yang memicu prompt lanjutan. |1958| `auto-continuation` | Giliran sintetis yang disuntikkan ketika sesi berlanjut tanpa input pengguna segar, seperti hasil perintah yang memicu prompt tindak lanjut. |
1893| `unclassified` | Putaran yang disuntikkan yang asal-usulnya tidak dapat ditentukan. Memerlukan Claude Code v2.1.223 atau lebih baru. Ketika Claude Code menerima [`SDKUserMessage`](#sdkusermessage) dengan `isSynthetic: true` dan tidak dapat mengklasifikasikannya sebagai `kind` lain, ia menetapkan jenis ini saat pesan tiba dan membingkai putaran ke model sebagai sumber non-pengguna daripada memperlakukannya sebagai input manusia. Aplikasi Anda tidak boleh menetapkan nilai ini. |1959| `unclassified` | Giliran yang disuntikkan yang asal usulnya tidak dapat ditentukan. Memerlukan Claude Code v2.1.223 atau lebih baru. Ketika Claude Code menerima [`SDKUserMessage`](#sdkusermessage) dengan `isSynthetic: true` dan tidak dapat mengklasifikasikannya sebagai `kind` lain, ia menetapkan jenis ini saat pesan tiba dan membingkai giliran ke model sebagai sumber non-pengguna daripada memperlakukannya sebagai input manusia. Aplikasi Anda tidak boleh menetapkan nilai ini. |
1894 1960
1895<h3 id="task-notification-subkinds">1961<h3 id="task-notification-subkinds">
1896 Task-notification subkinds1962 Subkind notifikasi tugas
1897</h3>1963</h3>
1898 1964
1899Ketika Claude Code mengirimkan notifikasi tugas ke sesi, ia menetapkan `subkind` pada `origin` notifikasi hanya jika server Anthropic memverifikasi dari mana notifikasi itu berasal. `subkind` memerlukan Claude Code v2.1.213 atau lebih baru, dan mengambil salah satu dari dua nilai:1965Ketika Claude Code mengirimkan notifikasi tugas ke sesi, ia menetapkan `subkind` pada `origin` notifikasi hanya jika server Anthropic memverifikasi dari mana notifikasi itu berasal. `subkind` memerlukan Claude Code v2.1.213 atau lebih baru, dan mengambil salah satu dari dua nilai:
1900 1966
1901* `scheduled-trigger`: notifikasi adalah prompt tersimpan [rutinitas](/docs/id/routines), disampaikan karena salah satu pemicu rutinitas dipecat: jadwalnya, [pemicu API](/docs/id/routines#add-an-api-trigger)-nya, [pemicu GitHub](/docs/id/routines#add-a-github-trigger)-nya, atau **Run now**. Claude Code membingkai ini ke model sebagai tugas yang ditugaskan sesi, dengan pemberitahuan berbeda dari [pemberitahuan yang notifikasi tugas lain bawa](#sdktasknotificationmessage).1967* `scheduled-trigger`: notifikasi adalah prompt tersimpan [rutinitas](/docs/id/routines), disampaikan karena salah satu pemicu rutinitas dipecat: jadwalnya, [pemicu API](/docs/id/routines#add-an-api-trigger), [pemicu GitHub](/docs/id/routines#add-a-github-trigger), atau **Jalankan sekarang**. Claude Code membingkai ini ke model sebagai tugas yang ditugaskan sesi, dengan pemberitahuan berbeda dari [pemberitahuan yang dibawa notifikasi tugas lain](#sdktasknotificationmessage).
1902*1968*
1903 1969
1904`peer-send-message`: notifikasi adalah pesan yang sesi lain Anda kirim dengan tool `send_message` sisi server yang [Claude Code on the web](/docs/id/claude-code-on-the-web) sesi gunakan untuk saling berkirim pesan, bukan [tool `SendMessage` lintas sesi](/docs/id/cross-session-messaging), dan server Anthropic memverifikasi bahwa kedua sesi milik grup pribadi sesi yang sama. Memerlukan Claude Code v2.1.224 atau lebih baru. Pengiriman `send_message` yang server tidak verifikasi dengan cara itu tidak mendapat subkind.1970`peer-send-message`: notifikasi adalah pesan yang sesi lain Anda kirim dengan alat `send_message` sisi server yang [Claude Code di web](/docs/id/claude-code-on-the-web) gunakan sesi untuk saling berkirim pesan, bukan [alat `SendMessage` lintas sesi](/docs/id/cross-session-messaging), dan server Anthropic memverifikasi bahwa kedua sesi termasuk dalam grup pribadi sesi yang sama. Memerlukan Claude Code v2.1.224 atau lebih baru. Pengiriman `send_message` yang tidak diverifikasi server dengan cara itu tidak mendapat subkind.
1905 1971
1906Setiap notifikasi tugas lain tidak memiliki `subkind`. Itu termasuk [tugas terjadwal](/docs/id/scheduled-tasks) yang dipecat di mesin Anda sendiri, [aktivitas PR](/docs/id/claude-code-on-the-web#how-claude-responds-to-pr-activity) yang disampaikan ke sesi, dan event latar belakang seperti tugas yang selesai. Pesan dari [tool `SendMessage` lintas sesi](/docs/id/cross-session-messaging) sama sekali bukan notifikasi tugas: apakah mereka berasal dari sesi di mesin yang sama atau melalui server Anthropic dari mesin lain, Claude Code memberi mereka `kind: "peer"` dan [field asal peer](#peer-origin-fields).1972Setiap notifikasi tugas lain tidak memiliki `subkind`. Itu termasuk [tugas terjadwal](/docs/id/scheduled-tasks) yang dipecat di mesin Anda sendiri, [aktivitas PR](/docs/id/claude-code-on-the-web#how-claude-responds-to-pr-activity) yang disampaikan ke sesi, dan acara latar belakang seperti tugas yang selesai. Pesan dari [alat `SendMessage` lintas sesi](/docs/id/cross-session-messaging) sama sekali bukan notifikasi tugas: apakah mereka berasal dari sesi di mesin yang sama atau melalui server Anthropic dari mesin lain, Claude Code memberi mereka `kind: "peer"` dan [bidang asal peer](#peer-origin-fields).
1907 1973
1908<h3 id="peer-origin-fields">1974<h3 id="peer-origin-fields">
1909 Peer origin fields1975 Bidang asal peer
1910</h3>1976</h3>
1911 1977
1912Asal `peer` mengidentifikasi agen mana yang mengirim pesan: [rekan tim](/docs/id/agent-teams) dalam proses mengirim ke `main` dengan `SendMessage`, atau [peer lintas sesi](/docs/id/cross-session-messaging), sesi Claude Code lain Anda. Peer lintas sesi memerlukan Claude Code v2.1.224 atau lebih baru di macOS dan Linux; lihat [ketersediaan pesan lintas sesi](/docs/id/cross-session-messaging#availability) untuk persyaratan Windows asli. Peer lintas sesi dapat berjalan di mesin yang sama, atau di [mesin lain Anda](/docs/id/cross-session-messaging#message-sessions-on-other-machines) atau [Claude Code on the web](/docs/id/claude-code-on-the-web) ketika pesannya tiba melalui Remote Control. Dua jenis pengirim mengisi field secara berbeda:1978Asal `peer` mengidentifikasi agen mana yang mengirim pesan: [rekan kerja](/docs/id/agent-teams) dalam proses mengirim ke `main` dengan `SendMessage`, atau [rekan lintas sesi](/docs/id/cross-session-messaging), sesi Claude Code lain Anda. Rekan lintas sesi memerlukan Claude Code v2.1.224 atau lebih baru di macOS dan Linux; lihat [ketersediaan pesan lintas sesi](/docs/id/cross-session-messaging#availability) untuk persyaratan Windows asli. Rekan lintas sesi dapat berjalan di mesin yang sama, atau di [mesin lain Anda](/docs/id/cross-session-messaging#message-sessions-on-other-machines) atau [Claude Code di web](/docs/id/claude-code-on-the-web) ketika pesannya tiba melalui Remote Control. Dua jenis pengirim mengisi bidang secara berbeda:
1913 1979
1914* `from`: nama rekan tim, atau alamat pengirim untuk peer lintas sesi. Untuk [pesan lintas mesin satu arah](/docs/id/cross-session-messaging#message-sessions-on-other-machines), pengirim tidak memiliki alamat balasan dan `from` adalah `"unknown"`. Nilai adalah yang dibuat pengirim; `verifiedPeerPid` adalah identitas yang diverifikasi.1980* `from`: nama rekan kerja, atau alamat pengirim untuk rekan lintas sesi. Untuk [pesan lintas mesin satu arah](/docs/id/cross-session-messaging#message-sessions-on-other-machines), pengirim tidak memiliki alamat balasan dan `from` adalah `"unknown"`. Nilai adalah yang dibuat pengirim; `verifiedPeerPid` adalah identitas yang diverifikasi.
1915*1981*
1916 1982
1917`fromMode`: kelas izin sesi pengiriman, `bypass` atau `prompting`, dideklarasikan oleh host yang meneruskan pesan peer antara sesi Anda, seperti [aplikasi desktop](/docs/id/desktop#work-across-sessions). Claude Code membacanya dalam sesi penerima ketika menerapkan [kontrol inbound](/docs/id/cross-session-messaging#control-inbound-messages). Memerlukan Agent SDK v0.3.234 atau lebih baru.1983`fromMode`: kelas izin sesi pengiriman, `bypass` atau `prompting`, dideklarasikan oleh host yang meneruskan pesan peer antara sesi Anda, seperti [aplikasi desktop](/docs/id/desktop#work-across-sessions). Claude Code membacanya dalam sesi penerima ketika menerapkan [kontrol inbound](/docs/id/cross-session-messaging#control-inbound-messages). Memerlukan Agent SDK v0.3.234 atau lebih baru.
1918 1984
1919* `senderTaskId`: ID tugas rekan tim. Tidak ada untuk peer lintas sesi.1985* `senderTaskId`: ID tugas rekan kerja. Tidak ada untuk rekan lintas sesi.
1920*1986*
1921 1987
1922`name`: nama tampilan pengirim, dinormalisasi oleh Claude Code: menghapus kontrol Unicode, format, surrogate, dan pemisah baris atau paragraf code points, kemudian memangkas hasilnya dan membatasinya pada 64 code points dengan ellipsis. Memerlukan Claude Code v2.1.205 atau lebih baru.1988`name`: nama tampilan pengirim, dinormalisasi oleh Claude Code: ia menghapus kontrol Unicode, format, surrogate, dan pemisah baris atau paragraf, kemudian memangkas hasil dan membatasinya pada 64 poin kode dengan elipsis. Memerlukan Claude Code v2.1.205 atau lebih baru.
1923 1989
1924*1990*
1925 1991
1926`body`: badan pesan yang didekode dengan amplop peer yang dihapus, byte-exact dengan apa yang dilihat model. Selalu ada untuk pesan rekan tim; untuk peer lintas sesi, ada hanya ketika putaran adalah tepat satu amplop peer yang dibentuk oleh Claude Code. Render `name` dan `body` daripada mem-parse ulang teks pesan. Memerlukan Claude Code v2.1.205 atau lebih baru.1992`body`: badan pesan yang didekode dengan amplop peer dihapus, byte-tepat dengan apa yang dilihat model. Selalu ada untuk pesan rekan kerja; untuk rekan lintas sesi, ada hanya ketika giliran adalah tepat satu amplop peer yang dibentuk Claude Code. Render `name` dan `body` daripada mengurai ulang teks pesan. Memerlukan Claude Code v2.1.205 atau lebih baru.
1927 1993
1928*1994*
1929 1995
1931 1997
1932*1998*
1933 1999
1934`verifiedPeerPid`: ID proses dari proses yang terhubung ke soket pesan lintas sesi sesi ini, diverifikasi oleh kernel dan dibaca dari koneksi itu sendiri, tidak pernah dari payload. Gunakan itu, bukan `from`, untuk mengidentifikasi pengirim: `from` dapat dipalsukan oleh proses pengguna yang sama. Field tidak ada ketika Claude Code tidak dapat memverifikasinya, seperti di Windows atau ingress non-socket, jadi nilai yang tidak ada berarti pengirim tidak diverifikasi. Untuk lalu lintas yang diteruskan itu mengidentifikasi relay daripada penulis pesan, dan ID proses dapat didaur ulang, jadi perlakukan sebagai asal daripada token autentikasi. Memerlukan Claude Code v2.1.216 atau lebih baru.2000`verifiedPeerPid`: ID proses dari proses yang terhubung ke soket pesan lintas sesi sesi ini, diverifikasi oleh kernel dan dibaca dari koneksi itu sendiri, tidak pernah dari muatan. Gunakan itu, bukan `from`, untuk mengidentifikasi pengirim: `from` dapat dipalsukan oleh proses pengguna yang sama. Bidang tidak ada ketika Claude Code tidak dapat memverifikasinya, seperti di Windows atau ingress non-soket, jadi nilai yang tidak ada berarti pengirim tidak diverifikasi. Untuk lalu lintas yang diteruskan itu mengidentifikasi relay daripada penulis pesan, dan ID proses dapat didaur ulang, jadi perlakukan sebagai asal usul daripada token autentikasi. Memerlukan Claude Code v2.1.216 atau lebih baru.
1935 2001
1936<h2 id="hook-types">2002<h2 id="hook-types">
1937 Tipe Hook2003 Tipe Hook
2084 tool_name: string;2150 tool_name: string;
2085 tool_input: unknown;2151 tool_input: unknown;
2086 tool_use_id: string;2152 tool_use_id: string;
2153 mcp_server?: McpServerProvenance;
2087};2154};
2088```2155```
2089 2156
2157`mcp_server` hadir ketika alat berasal dari server MCP; lihat [`McpServerProvenance`](#mcpserverprovenance). Input `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied` membawa bidang yang sama. Bidang ini memerlukan Agent SDK v0.3.274 atau lebih baru.
2158
2090<h4 id="posttoolusehookinput">2159<h4 id="posttoolusehookinput">
2091 `PostToolUseHookInput`2160 `PostToolUseHookInput`
2092</h4>2161</h4>
2099 tool_response: unknown;2168 tool_response: unknown;
2100 tool_use_id: string;2169 tool_use_id: string;
2101 duration_ms?: number;2170 duration_ms?: number;
2171 mcp_server?: McpServerProvenance;
2102};2172};
2103```2173```
2104 2174
2115 error: string;2185 error: string;
2116 is_interrupt?: boolean;2186 is_interrupt?: boolean;
2117 duration_ms?: number;2187 duration_ms?: number;
2188 mcp_server?: McpServerProvenance;
2118};2189};
2119```2190```
2120 2191
2149 tool_input: unknown;2220 tool_input: unknown;
2150 tool_use_id: string;2221 tool_use_id: string;
2151 reason: string;2222 reason: string;
2223 mcp_server?: McpServerProvenance;
2152};2224};
2153```2225```
2154 2226
2368 tool_name: string;2440 tool_name: string;
2369 tool_input: unknown;2441 tool_input: unknown;
2370 permission_suggestions?: PermissionUpdate[];2442 permission_suggestions?: PermissionUpdate[];
2443 mcp_server?: McpServerProvenance;
2371};2444};
2372```2445```
2373 2446
2751```2824```
2752 2825
2753<h2 id="tool-input-types">2826<h2 id="tool-input-types">
2754 Tipe Input Tool2827 Jenis Input Tool
2755</h2>2828</h2>
2756 2829
2757Dokumentasi skema input untuk semua tool Claude Code bawaan. Tipe ini dieksport dari `@anthropic-ai/claude-agent-sdk` dan dapat digunakan untuk interaksi tool yang aman tipe.2830Dokumentasi skema input untuk semua tool Claude Code bawaan. Jenis-jenis ini diekspor dari `@anthropic-ai/claude-agent-sdk` dan dapat digunakan untuk interaksi tool yang aman tipe.
2758 2831
2759<h3 id="toolinputschemas">2832<h3 id="toolinputschemas">
2760 `ToolInputSchemas`2833 `ToolInputSchemas`
2761</h3>2834</h3>
2762 2835
2763Union dari tipe input tool yang dieksport dari `@anthropic-ai/claude-agent-sdk`; anggota mencakup:2836Gabungan jenis input tool yang diekspor dari `@anthropic-ai/claude-agent-sdk`; anggota mencakup:
2764 2837
2765```typescript theme={null}2838```typescript theme={null}
2766type ToolInputSchemas =2839type ToolInputSchemas =
2813**Nama tool:** `Agent`. Nama sebelumnya `Task` masih diterima sebagai alias, dan array `tools` dalam pesan init [`SDKSystemMessage`](#sdksystemmessage) saat ini mencantumkan tool ini sebagai `Task` untuk kompatibilitas mundur.2886**Nama tool:** `Agent`. Nama sebelumnya `Task` masih diterima sebagai alias, dan array `tools` dalam pesan init [`SDKSystemMessage`](#sdksystemmessage) saat ini mencantumkan tool ini sebagai `Task` untuk kompatibilitas mundur.
2814 2887
2815<Note>2888<Note>
2816 Bidang `mode` sudah usang dan diabaikan pada Claude Code v2.1.212 atau yang lebih baru. Subagen berjalan dalam mode izin sesi induk atau [`permissionMode`](#agentdefinition) definisinya, dan [aturan pewarisan subagen](/docs/id/agent-sdk/permissions#available-modes) memutuskan yang mana.2889 Bidang `mode` sudah usang dan diabaikan pada Claude Code v2.1.212 atau lebih baru. Subagent berjalan dalam mode izin sesi induk atau [`permissionMode`](#agentdefinition) definisinya, dan [aturan pewarisan subagent](/docs/id/agent-sdk/permissions#available-modes) memutuskan yang mana.
2817</Note>2890</Note>
2818 2891
2819```typescript theme={null}2892```typescript theme={null}
2830};2903};
2831```2904```
2832 2905
2833Meluncurkan agen baru untuk menangani tugas kompleks multi-langkah secara otonom.2906Meluncurkan agent baru untuk menangani tugas kompleks multi-langkah secara otonom.
2834 2907
2835<h3 id="askuserquestion">2908<h3 id="askuserquestion">
2836 AskUserQuestion2909 AskUserQuestion
2852};2925};
2853```2926```
2854 2927
2855Menanyakan pertanyaan klarifikasi kepada pengguna selama eksekusi. Lihat [Tangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input#handle-clarifying-questions) untuk detail penggunaan.2928Menanyakan pertanyaan klarifikasi kepada pengguna selama eksekusi. Lihat [Menangani persetujuan dan input pengguna](/docs/id/agent-sdk/user-input#handle-clarifying-questions) untuk detail penggunaan.
2856 2929
2857<h3 id="bash">2930<h3 id="bash">
2858 Bash2931 Bash
2870};2943};
2871```2944```
2872 2945
2873Mengeksekusi perintah Bash dengan timeout opsional dan eksekusi latar belakang. Direktori kerja bertahan di antara perintah, termasuk perintah yang dijalankan di putaran berikutnya dari sesi multi-putaran; status shell seperti variabel lingkungan yang diekspor tidak. Untuk batas pada perubahan direktori mana yang bertahan, lihat [Apa yang bertahan di antara perintah](/docs/id/tools-reference#what-persists-between-commands).2946Mengeksekusi perintah Bash dengan timeout opsional dan eksekusi latar belakang. Direktori kerja tetap ada di antara perintah, termasuk perintah yang dijalankan di putaran berikutnya dari sesi multi-putaran; status shell seperti variabel lingkungan yang diekspor tidak. Untuk batas pada perubahan direktori mana yang bertahan, lihat [Apa yang bertahan di antara perintah](/docs/id/tools-reference#what-persists-between-commands).
2874 2947
2875<h3 id="monitor">2948<h3 id="monitor">
2876 Monitor2949 Monitor
2880 2953
2881```typescript theme={null}2954```typescript theme={null}
2882type MonitorInput = {2955type MonitorInput = {
2956 description: string;
2957 timeout_ms: number;
2883 command?: string;2958 command?: string;
2884 ws?: {2959 ws?: {
2885 url: string;2960 url: string;
2886 protocols?: string[];2961 protocols?: string[];
2887 };2962 };
2888 description: string;
2889 timeout_ms: number;
2890 persistent: boolean;
2891};2963};
2892```2964```
2893 2965
2894Menjalankan sumber latar belakang dan mengirimkan setiap event ke Claude sehingga dapat bereaksi tanpa polling: `command` menjalankan skrip dan mengeluarkan satu event per baris stdout, dan `ws` membuka WebSocket dan mengeluarkan satu event per frame teks. Berikan tepat satu dari `command` atau `ws`. Sumber `ws` memerlukan Claude Code v2.1.195 atau yang lebih baru.2966Menjalankan sumber latar belakang dan mengirimkan setiap peristiwa ke Claude sehingga dapat bereaksi tanpa polling: `command` menjalankan skrip dan memancarkan satu peristiwa per baris stdout, dan `ws` membuka WebSocket dan memancarkan satu peristiwa per frame teks. Berikan tepat satu dari `command` atau `ws`. Sumber `ws` memerlukan Claude Code v2.1.195 atau lebih baru.
2895 2967
2896Atur `persistent: true` untuk watch panjang sesi seperti log tails. Ketika Monitor menjalankan perintah, ia mengikuti aturan izin yang sama seperti Bash; watch WebSocket meminta persetujuan secara terpisah. Lihat [referensi tool Monitor](/docs/id/tools-reference#monitor-tool) untuk perilaku dan ketersediaan provider. Tipe yang diekspor menandai `timeout_ms` dan `persistent` sebagai wajib karena skema mengisi default mereka, 300000 dan `false`; panggilan yang menghilangkan mereka memvalidasi.2968`timeout_ms` adalah batas waktu pengawasan dalam milidetik. Ini default ke 300000, dan batas waktu efektif paling banyak 1800000, yaitu 30 menit. Pada batas waktu pengawasan berakhir dan Claude menerima satu pemberitahuan sehingga dapat memulai pengawasan baru jika masih membutuhkannya.
2969
2970Jenis yang diekspor menandai `timeout_ms` sebagai wajib karena skema mengisi default; panggilan yang menghilangkannya memvalidasi.
2971
2972Ketika Monitor menjalankan perintah, ia mengikuti aturan izin yang sama dengan Bash; pengawasan WebSocket meminta persetujuan secara terpisah. Lihat [referensi tool Monitor](/docs/id/tools-reference#monitor-tool) untuk perilaku dan ketersediaan penyedia.
2897 2973
2898<h3 id="taskoutput">2974<h3 id="taskoutput">
2899 TaskOutput2975 TaskOutput
2901 2977
2902**Nama tool:** `TaskOutput`2978**Nama tool:** `TaskOutput`
2903 2979
2904<Note>`TaskOutput` sudah usang; lebih suka `Read` pada jalur file output tugas. Skema di bawah tetap valid untuk hooks dan penanganan izin yang menemukan tool.</Note>2980<Note>`TaskOutput` sudah usang; lebih suka `Read` pada jalur file output tugas. Skema di bawah tetap valid untuk hook dan penanganan izin yang menemukan tool.</Note>
2905 2981
2906```typescript theme={null}2982```typescript theme={null}
2907type TaskOutputInput = {2983type TaskOutputInput = {
2945};3021};
2946```3022```
2947 3023
2948Membaca file dari filesystem lokal, termasuk teks, gambar, PDF, dan notebook Jupyter. Gunakan `pages` untuk rentang halaman PDF (misalnya, `"1-5"`).3024Membaca file dari sistem file lokal, termasuk teks, gambar, PDF, dan notebook Jupyter. Gunakan `pages` untuk rentang halaman PDF (misalnya, `"1-5"`).
2949 3025
2950Untuk PDF, Claude menerima konten file di dalam `tool_result` panggilan Read. Pembacaan yang mengembalikan output `pdf` membawa blok `text` ringkasan diikuti oleh blok `document`. Pembacaan yang mengembalikan output `parts` membawa blok `text` ringkasan diikuti oleh satu blok per halaman yang diekstrak: blok `image`, atau blok `text` yang menamai halaman ketika Claude Code tidak dapat merender sebagai gambar. Sebelum Agent SDK v0.3.242, Claude Code mengirimkan konten file sebagai pesan `user` terpisah setelah hasil tool.3026Untuk PDF, Claude menerima konten file di dalam `tool_result` panggilan Read. Pembacaan yang mengembalikan output `pdf` [](#tool-output-types) membawa blok `text` ringkasan diikuti oleh blok `document`. Satu yang mengembalikan output `parts` membawa blok `text` ringkasan diikuti oleh satu blok per halaman yang diekstrak: blok `image`, atau blok `text` yang menamai halaman ketika Claude Code tidak dapat merender sebagai gambar. Sebelum Agent SDK v0.3.242, Claude Code mengirimkan konten file sebagai pesan `user` terpisah setelah hasil tool.
2951 3027
2952<h3 id="write">3028<h3 id="write">
2953 Write3029 Write
2962};3038};
2963```3039```
2964 3040
2965Menulis file ke filesystem lokal, menimpa jika ada.3041Menulis file ke sistem file lokal, menimpa jika ada.
2966 3042
2967<h3 id="glob">3043<h3 id="glob">
2968 Glob3044 Glob
2977};3053};
2978```3054```
2979 3055
2980Pencocokan pola file cepat yang bekerja dengan ukuran codebase apa pun.3056Pencocokan pola file cepat yang bekerja dengan ukuran basis kode apa pun.
2981 3057
2982<h3 id="grep">3058<h3 id="grep">
2983 Grep3059 Grep
3005};3081};
3006```3082```
3007 3083
3008Tool pencarian yang kuat dibangun di atas ripgrep dengan dukungan regex.3084Tool pencarian canggih yang dibangun di atas ripgrep dengan dukungan regex.
3009 3085
3010<h3 id="taskstop">3086<h3 id="taskstop">
3011 TaskStop3087 TaskStop
3020};3096};
3021```3097```
3022 3098
3023Menghentikan tugas latar belakang atau shell yang sedang berjalan berdasarkan ID. Mulai dari v2.1.198, `task_id` juga menerima rekan tim agent atau agen latar belakang bernama berdasarkan ID agen atau nama.3099Menghentikan tugas latar belakang atau shell yang sedang berjalan berdasarkan ID. Mulai dari v2.1.198, `task_id` juga menerima rekan tim tim agent atau agent latar belakang bernama berdasarkan ID atau nama agent.
3024 3100
3025<h3 id="notebookedit">3101<h3 id="notebookedit">
3026 NotebookEdit3102 NotebookEdit
3089};3165};
3090```3166```
3091 3167
3092Menjalankan [workflow dinamis](/docs/id/workflows): skrip yang mengorkestra banyak subagen di latar belakang dan mengembalikan satu hasil yang dikonsolidasikan. Tool `Workflow` tersedia di Agent SDK v0.3.149 dan yang lebih baru. Setidaknya satu dari `script`, `name`, atau `scriptPath` diperlukan.3168Menjalankan [workflow dinamis](/docs/id/workflows): skrip yang mengorkestra banyak subagent di latar belakang dan mengembalikan satu hasil terpadu. Tool Workflow tersedia di Agent SDK v0.3.149 dan lebih baru. Setidaknya satu dari `script`, `name`, atau `scriptPath` diperlukan.
3093 3169
3094| Field | Type | Description |3170| Bidang | Jenis | Deskripsi |
3095| ----------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |3171| ----------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
3096| `script` | `string` | Skrip workflow inline. Harus dimulai dengan `export const meta = { name, description }` sebagai literal, diikuti oleh badan skrip menggunakan `agent()`, `parallel()`, `pipeline()`, dan `phase()`. Array `phases` opsional dalam `meta` mengelompokkan agen di bawah tahap bernama dalam tampilan kemajuan |3172| `script` | `string` | Skrip workflow inline. Harus dimulai dengan `export const meta = { name, description }` sebagai literal, diikuti oleh badan skrip menggunakan `agent()`, `parallel()`, `pipeline()`, dan `phase()`. Array `phases` opsional dalam `meta` mengelompokkan agent di bawah tahap bernama dalam tampilan kemajuan |
3097| `name` | `string` | Nama workflow bawaan atau yang disimpan di `.claude/workflows/`. Diselesaikan ke skrip |3173| `name` | `string` | Nama workflow bawaan atau yang disimpan di `.claude/workflows/`. Diselesaikan ke skrip |
3098| `scriptPath` | `string` | Jalur ke file skrip workflow di disk. Mengambil prioritas atas `script` dan `name`. Claude Code menyimpan setiap invokasi skrip dan mengembalikan jalur dalam hasil, sehingga Anda dapat mengedit file itu dan menginvokasi kembali dengan `scriptPath` yang sama untuk melakukan iterasi |3174| `scriptPath` | `string` | Jalur ke file skrip workflow di disk. Mengambil prioritas atas `script` dan `name`. Claude Code tetap menyimpan skrip setiap invokasi dan mengembalikan jalur dalam hasil, sehingga Anda dapat mengedit file itu dan menginvokasi kembali dengan `scriptPath` yang sama untuk melakukan iterasi |
3099| `args` | `unknown` | Nilai input yang diekspos ke skrip sebagai `args` global, untuk workflow bernama yang diparameterisasi seperti pertanyaan penelitian atau daftar jalur file. Lewatkan array dan objek sebagai nilai JSON aktual, bukan sebagai string yang dikodekan JSON |3175| `args` | `unknown` | Nilai input yang diekspos ke skrip sebagai `args` global, untuk workflow bernama yang diparameterisasi seperti pertanyaan penelitian atau daftar jalur file. Lewatkan array dan objek sebagai nilai JSON aktual, bukan sebagai string yang dikodekan JSON |
3100| `resumeFromRunId` | `string` | Run ID dari invokasi `Workflow` sebelumnya untuk dilanjutkan. Panggilan `agent()` yang selesai dengan input yang tidak berubah biasanya mengembalikan hasil yang di-cache; sisanya berjalan langsung. [Lanjutkan setelah jeda](/docs/id/workflows#resume-after-a-pause) mencakup panggilan yang selesai mana yang berjalan kembali. Sesi yang sama saja |3176| `resumeFromRunId` | `string` | ID Jalankan dari invokasi `Workflow` sebelumnya untuk dilanjutkan. Panggilan `agent()` yang selesai dengan input tidak berubah biasanya mengembalikan hasil cache; sisanya berjalan langsung. [Lanjutkan setelah jeda](/docs/id/workflows#resume-after-a-pause) mencakup panggilan selesai mana yang dijalankan kembali. Sesi yang sama saja |
3101| `title` | `string` | Diabaikan; blok `meta` skrip menetapkan judul |3177| `title` | `string` | Diabaikan; blok `meta` skrip menetapkan judul |
3102| `description` | `string` | Diabaikan; blok `meta` skrip menetapkan deskripsi |3178| `description` | `string` | Diabaikan; blok `meta` skrip menetapkan deskripsi |
3103 3179
3198type TaskListInput = {};3274type TaskListInput = {};
3199```3275```
3200 3276
3201Mengembalikan snapshot dari semua tugas dalam daftar saat ini.3277Mengembalikan snapshot semua tugas dalam daftar saat ini.
3202 3278
3203<h3 id="exitplanmode">3279<h3 id="exitplanmode">
3204 ExitPlanMode3280 ExitPlanMode
3217};3293};
3218```3294```
3219 3295
3220Keluar dari plan mode. Bidang `allowedPrompts` sudah usang dan diabaikan; Claude Code masih menerimanya sehingga pemanggil dan transkrip yang ada memvalidasi. Sebelum v2.1.205, ia meminta izin Bash berbasis prompt untuk mengimplementasikan rencana.3296Keluar dari mode rencana. Bidang `allowedPrompts` sudah usang dan diabaikan; Claude Code masih menerimanya sehingga pemanggil dan transkrip yang ada memvalidasi. Sebelum v2.1.205, ia meminta izin Bash berbasis prompt untuk mengimplementasikan rencana.
3221 3297
3222<h3 id="listmcpresources">3298<h3 id="listmcpresources">
3223 ListMcpResources3299 ListMcpResources
3231};3307};
3232```3308```
3233 3309
3234Membuat daftar sumber daya MCP yang tersedia dari server yang terhubung.3310Mencantumkan sumber daya MCP yang tersedia dari server yang terhubung.
3235 3311
3236<h3 id="readmcpresource">3312<h3 id="readmcpresource">
3237 ReadMcpResource3313 ReadMcpResource
3261};3337};
3262```3338```
3263 3339
3264Membuat dan memasuki worktree git sementara untuk pekerjaan terisolasi. Lewatkan `path` untuk beralih ke worktree yang ada alih-alih membuat yang baru. Pada entri pertama target harus berupa worktree terdaftar dari repositori saat ini atau, dalam workspace multi-repo, dari repositori yang bersarang di dalamnya; dari dalam sesi worktree harus berada di bawah `.claude/worktrees/` dari repositori sesi. `name` dan `path` saling eksklusif.3340Membuat dan memasuki worktree git sementara untuk pekerjaan terisolasi. Lewatkan `path` untuk beralih ke worktree yang ada alih-alih membuat yang baru. Pada entri pertama target harus berupa worktree terdaftar dari repositori saat ini atau, di ruang kerja multi-repo, dari repositori yang bersarang di dalamnya; dari dalam sesi worktree harus berada di bawah `.claude/worktrees/` dari repositori sesi. `name` dan `path` saling eksklusif.
3265 3341
3266<h3 id="exitworktree">3342<h3 id="exitworktree">
3267 ExitWorktree3343 ExitWorktree
3276};3352};
3277```3353```
3278 3354
3279Keluar dari worktree git saat ini dan kembali ke direktori kerja asli. Aksi `keep` meninggalkan worktree dan cabang di disk, sementara `remove` menghapus keduanya. `discard_changes` harus `true` ketika menghapus worktree yang memiliki file yang tidak dikomit atau komit yang tidak digabung.3355Keluar dari worktree git saat ini dan kembali ke direktori kerja asli. Tindakan `keep` meninggalkan worktree dan cabang di disk, sementara `remove` menghapus keduanya. `discard_changes` harus `true` ketika menghapus worktree yang memiliki file yang tidak dikomit atau komit yang tidak digabung.
3280 3356
3281<h3 id="enterplanmode">3357<h3 id="enterplanmode">
3282 EnterPlanMode3358 EnterPlanMode
3288type EnterPlanModeInput = {};3364type EnterPlanModeInput = {};
3289```3365```
3290 3366
3291Memasuki plan mode, di mana Claude meneliti dan menyajikan rencana sebelum membuat perubahan.3367Memasuki mode rencana, di mana Claude meneliti dan menyajikan rencana sebelum membuat perubahan.
3292 3368
3293<h3 id="croncreate">3369<h3 id="croncreate">
3294 CronCreate3370 CronCreate
3305};3381};
3306```3382```
3307 3383
3308Menjadwalkan prompt untuk berjalan pada jadwal cron 5-bidang dalam waktu lokal. Atur `recurring` ke `false` untuk menembak sekali pada kecocokan berikutnya. Pekerjaan bersifat sesi-scoped secara default: memulai percakapan segar menghapusnya, dan melanjutkan dengan `--resume` atau `--continue` memulihkan pekerjaan yang belum kedaluwarsa. Lihat [Tugas terjadwal](/docs/id/scheduled-tasks).3384Menjadwalkan prompt untuk dijalankan pada jadwal cron 5-bidang dalam waktu lokal. Atur `recurring` ke `false` untuk menembak sekali pada kecocokan berikutnya. Pekerjaan bersifat sesi-scoped secara default: memulai percakapan segar menghapusnya, dan melanjutkan dengan `--resume` atau `--continue` memulihkan pekerjaan yang belum kedaluwarsa. Lihat [Tugas terjadwal](/docs/id/scheduled-tasks).
3309 3385
3310Mengatur `durable` ke `true` meminta persistensi ke `.claude/scheduled_tasks.json` sehingga pekerjaan bertahan dari restart. Penjadwalan tahan lama tidak tersedia di setiap sesi: ketika tidak, Claude Code menerima `durable: true` tetapi membuat pekerjaan hanya-sesi. Baca bidang `durable` output untuk melihat apakah pekerjaan bertahan.3386Mengatur `durable` ke `true` meminta persistensi ke `.claude/scheduled_tasks.json` sehingga pekerjaan bertahan dari restart. Penjadwalan tahan lama tidak tersedia di setiap sesi: ketika tidak, Claude Code menerima `durable: true` tetapi membuat pekerjaan hanya sesi. Baca bidang `durable` output untuk melihat apakah pekerjaan bertahan.
3311 3387
3312<h3 id="crondelete">3388<h3 id="crondelete">
3313 CronDelete3389 CronDelete
3333type CronListInput = {};3409type CronListInput = {};
3334```3410```
3335 3411
3336Membuat daftar pekerjaan cron terjadwal: pekerjaan tahan lama dari `.claude/scheduled_tasks.json` dan pekerjaan hanya-sesi dari sesi saat ini.3412Mencantumkan pekerjaan cron terjadwal: pekerjaan tahan lama dari `.claude/scheduled_tasks.json` dan pekerjaan hanya sesi dari sesi saat ini.
3337 3413
3338<h3 id="schedulewakeup">3414<h3 id="schedulewakeup">
3339 ScheduleWakeup3415 ScheduleWakeup
3351};3427};
3352```3428```
3353 3429
3354Menjadwalkan satu kali wake-up yang menembak prompt yang diberikan setelah penundaan. Tool ini mendukung perintah `/loop` yang berjalan sendiri. Runtime menjepit `delaySeconds` antara 60 dan 3600 detik. Bidang `delaySeconds`, `reason`, `prompt`, dan `noop` diperlukan kecuali `stop` adalah true. `noop: true` melaporkan wake-up di mana tidak ada yang berubah. Mengatur `stop: true` membatalkan wake-up yang tertunda dan mengakhiri `/loop` yang berjalan sendiri. Bidang `stop` memerlukan Claude Code v2.1.202 atau yang lebih baru. Lihat [baris ScheduleWakeup dalam referensi tools](/docs/id/tools-reference).3430Menjadwalkan bangun sekali yang menembak prompt yang diberikan setelah penundaan. Tool ini mendukung perintah `/loop` yang berjalan sendiri. Runtime menjepit `delaySeconds` antara 60 dan 3600 detik. Bidang `delaySeconds`, `reason`, `prompt`, dan `noop` diperlukan kecuali `stop` adalah true. `noop: true` melaporkan bangun di mana tidak ada yang berubah. Mengatur `stop: true` membatalkan bangun yang tertunda dan mengakhiri `/loop` yang berjalan sendiri. Bidang `stop` memerlukan Claude Code v2.1.202 atau lebih baru. Lihat [baris ScheduleWakeup dalam referensi tool](/docs/id/tools-reference).
3355 3431
3356<h3 id="remotetrigger">3432<h3 id="remotetrigger">
3357 RemoteTrigger3433 RemoteTrigger
3379};3455};
3380```3456```
3381 3457
3382Mengelola [Routines](/docs/id/routines), Claude Code berjalan terjadwal dan dipicu yang dihosting di cloud. Tool ini mendukung perintah `/schedule`. `trigger_id` diperlukan untuk aksi `get`, `update`, `run`, dan `list_runs`. `body` diperlukan untuk `create`, `update`, dan `create_webhook_trigger`, dan opsional untuk `run`.3458Mengelola [Rutinitas](/docs/id/routines), jalankan Claude Code terjadwal dan dipicu yang dihosting di cloud. Tool ini mendukung perintah `/schedule`. `trigger_id` diperlukan untuk tindakan `get`, `update`, `run`, dan `list_runs`. `body` diperlukan untuk `create`, `update`, dan `create_webhook_trigger`, dan opsional untuk `run`.
3383 3459
3384`create_webhook_trigger` melampirkan sumber event ke routine yang ada, seperti [event GitHub](/docs/id/routines#add-a-github-trigger) yang menembaknya. `body` menamai sumber, event, dan routine untuk menembak. Memerlukan Claude Code v2.1.225 atau yang lebih baru.3460`create_webhook_trigger` melampirkan sumber peristiwa ke rutinitas yang ada, seperti [peristiwa GitHub](/docs/id/routines#add-a-github-trigger) yang menembaknya. `body` menamai sumber, peristiwa, dan rutinitas untuk menembak. Memerlukan Claude Code v2.1.225 atau lebih baru.
3385 3461
3386`list_runs` membuat daftar run routine terbaru, dan `get_run_log` membaca log satu run. `session_id` menamai run untuk dibaca, dari hasil `list_runs`, dan `cursor` halaman melalui hasil aksi apa pun. Kedua aksi memerlukan Claude Code v2.1.227 atau yang lebih baru.3462`list_runs` mencantumkan jalankan rutinitas baru-baru ini, dan `get_run_log` membaca log satu jalankan. `session_id` menamai jalankan untuk dibaca, dari hasil `list_runs`, dan `cursor` halaman melalui tindakan mana pun hasil. Kedua tindakan memerlukan Claude Code v2.1.227 atau lebih baru.
3387 3463
3388Tool ini hanya tersedia ketika sesi diautentikasi dengan akun claude.ai pada paket dengan Routines diaktifkan, dan tidak ada ketika kebijakan organisasi Anda menonaktifkan [Claude Code di web](/docs/id/claude-code-on-the-web). Pada Claude Code v2.1.227 atau yang lebih baru, tool juga tidak ada ketika Owner telah [mematikan routines untuk organisasi](/docs/id/routines#routines-are-disabled-by-your-organizations-policy). Sebelum v2.1.227, sesi dengan hanya toggle routines dimatikan masih menunjukkan tool, dan server menolak panggilannya.3464Tool ini hanya tersedia ketika sesi diautentikasi dengan akun claude.ai pada paket dengan Rutinitas diaktifkan, dan tidak ada ketika kebijakan organisasi Anda menonaktifkan [Claude Code di web](/docs/id/claude-code-on-the-web). Pada Claude Code v2.1.227 atau lebih baru, tool juga tidak ada ketika Pemilik telah [mematikan rutinitas untuk organisasi](/docs/id/routines#routines-are-disabled-by-your-organizations-policy). Sebelum v2.1.227, sesi dengan hanya toggle rutinitas yang dimatikan masih menunjukkan tool, dan server menolak panggilannya.
3389 3465
3390<h3 id="pushnotification">3466<h3 id="pushnotification">
3391 PushNotification3467 PushNotification
3400};3476};
3401```3477```
3402 3478
3403Mengirim notifikasi push proaktif kepada pengguna. Jaga `message` di bawah 200 karakter karena sistem operasi mobile memotong teks yang lebih panjang. Lihat [baris PushNotification dalam referensi tools](/docs/id/tools-reference) untuk ketersediaan provider; pengiriman push berjalan melalui infrastruktur yang dihosting Anthropic yang tidak dapat diakses dari Amazon Bedrock, Claude Platform di AWS, Agent Platform Google Cloud, atau Microsoft Foundry.3479Mengirim notifikasi push proaktif kepada pengguna. Jaga `message` di bawah 200 karakter karena sistem operasi mobile memotong teks yang lebih panjang. Lihat [baris PushNotification dalam referensi tool](/docs/id/tools-reference) untuk ketersediaan penyedia; pengiriman push berjalan melalui infrastruktur yang dihosting Anthropic yang tidak dapat diakses dari Amazon Bedrock, Claude Platform di AWS, Platform Agent Google Cloud, atau Microsoft Foundry.
3404 3480
3405<h3 id="repl">3481<h3 id="repl">
3406 REPL3482 REPL
3416};3492};
3417```3493```
3418 3494
3419Mengeksekusi kode JavaScript dalam REPL yang persisten. Status bertahan di antara panggilan dan await tingkat atas didukung. `timeout` dalam milidetik, dengan default 30000 dan maksimum 600000.3495Mengeksekusi kode JavaScript dalam REPL yang persisten. Status bertahan di seluruh panggilan dan await tingkat atas didukung. `timeout` dalam milidetik, dengan default 30000 dan maksimum 600000.
3420 3496
3421Tipe dieksport, tetapi tool dimatikan dalam sesi SDK kecuali Anda mengatur `CLAUDE_CODE_REPL=1` dalam [opsi `env`](#options). Ini juga memerlukan executable `claude` berbasis Bun yang disediakan installer asli.3497Jenis diekspor, tetapi tool dimatikan dalam sesi SDK kecuali Anda mengatur `CLAUDE_CODE_REPL=1` dalam [opsi `env`](#options), dan hanya dalam sesi dengan setidaknya satu server MCP. Ini juga memerlukan executable `claude` berbasis Bun yang disediakan installer asli.
3422 3498
3423<h3 id="reportfindings">3499<h3 id="reportfindings">
3424 ReportFindings3500 ReportFindings
3442};3518};
3443```3519```
3444 3520
3445Melaporkan temuan review kode sebagai daftar terstruktur sehingga Claude Code dapat merender mereka alih-alih mencetaknya sebagai teks. `level` adalah tingkat upaya yang dijalankan review. Temuan diurutkan paling parah terlebih dahulu, dengan paling banyak 32 per panggilan, dan array kosong ketika tidak ada yang bertahan. Memerlukan Claude Code v2.1.196 atau yang lebih baru.3521Melaporkan temuan tinjauan kode sebagai daftar terstruktur sehingga Claude Code dapat merender alih-alih mencetaknya sebagai teks. `level` adalah tingkat upaya yang dijalankan tinjauan. Temuan diurutkan paling parah terlebih dahulu, dengan paling banyak 32 per panggilan, dan array kosong ketika tidak ada yang bertahan. Memerlukan Claude Code v2.1.196 atau lebih baru.
3446 3522
3447Setiap temuan membawa bidang ini:3523Setiap temuan membawa bidang-bidang ini:
3448 3524
3449* `file`: jalur relatif repo temuan berada. `line` opsional adalah baris 1-indexed yang ditambatkan.3525* `file`: jalur relatif repo temuan berada. `line` opsional adalah baris 1-indexed yang ditambatkan.
3450* `summary`: pernyataan satu kalimat dari cacat. `failure_scenario` menjelaskan input konkret dan status yang mengarah ke output yang salah atau crash.3526* `summary`: pernyataan satu kalimat dari cacat. `failure_scenario` menjelaskan input konkret dan status yang mengarah ke output yang salah atau crash.
3451* `short_summary`: label terkompresi opsional paling banyak 60 karakter untuk tampilan kompak. Memerlukan Claude Code v2.1.212 atau yang lebih baru.3527* `short_summary`: label terkompresi opsional paling banyak 60 karakter untuk tampilan kompak. Memerlukan Claude Code v2.1.212 atau lebih baru.
3452* `category`: slug kebab-case pendek opsional dari tipe temuan, seperti `correctness` atau `test-coverage`. Memerlukan Claude Code v2.1.199 atau yang lebih baru.3528* `category`: slug kebab-case pendek opsional dari jenis temuan, seperti `correctness` atau `test-coverage`. Memerlukan Claude Code v2.1.199 atau lebih baru.
3453* `verdict`: ditetapkan ketika pass verify berjalan; tidak ada pada review inline-only.3529* `verdict`: ditetapkan ketika lulus verifikasi berjalan; tidak ada pada tinjauan inline-only.
3454* `outcome`: ditetapkan hanya ketika melaporkan kembali setelah menerapkan perbaikan.3530* `outcome`: ditetapkan hanya ketika melaporkan kembali setelah menerapkan perbaikan.
3455 3531
3456<h3 id="artifact">3532<h3 id="artifact">
3476};3552};
3477```3553```
3478 3554
3479Menerbitkan file `.html` atau `.md` lokal sebagai halaman artifact yang dihosting, atau membuat daftar artifact yang diterbitkan pengguna. Hilangkan `action` atau lewatkan `"publish"` untuk menerbitkan `file_path`, yang diperlukan untuk aksi publish bersama dengan `favicon`, satu atau dua emoji yang menandai artifact dalam galeri pengguna. `title` menamai halaman yang diterbitkan dalam tab browser dan galeri ketika file HTML tidak memiliki tag `<title>`. `url` menargetkan artifact yang ada untuk diperbarui di tempat alih-alih membuat yang baru.3555Menerbitkan file `.html` atau `.md` lokal sebagai halaman artefak yang dihosting, atau mencantumkan artefak yang diterbitkan pengguna. Hilangkan `action` atau lewatkan `"publish"` untuk menerbitkan `file_path`, yang diperlukan untuk tindakan publikasi bersama dengan `favicon`, satu atau dua emoji yang menandai artefak di galeri pengguna. `title` menamai halaman yang diterbitkan di tab browser dan galeri ketika file HTML tidak memiliki tag `<title>`. `url` menargetkan artefak yang ada untuk diperbarui di tempat alih-alih mencetak yang baru.
3480 3556
3481`force` adalah penimpa upaya terakhir yang membuang versi yang lebih baru yang diterbitkan sesi lain. Pada konflik, publish yang gagal mengembalikan konten yang lebih baru; Claude menggabungkan perubahannya ke konten itu, atau membaca ulang artifact, dan menerbitkan lagi. Lewatkan `force` hanya ketika pengguna secara eksplisit meminta untuk membuang versi itu.3557`force` adalah penimpa upaya terakhir yang membuang versi yang lebih baru sesi lain diterbitkan. Pada konflik, publikasi yang gagal mengembalikan konten yang lebih baru; Claude menggabungkan perubahannya ke konten itu, atau membaca ulang artefak, dan menerbitkan lagi. Lewatkan `force` hanya ketika pengguna secara eksplisit meminta untuk membuang versi itu.
3482 3558
3483Lewatkan `"list"` untuk menghitung artifact yang diterbitkan pengguna; hanya `limit` dan `scope` yang dapat menemaninya. `scope` default ke `"mine"`, yang membuat daftar artifact yang dimiliki pengguna; `"shared"` membuat daftar artifact yang dibagikan orang lain kepada pengguna, dan `"all"` membuat daftar keduanya.3559Lewatkan `"list"` untuk menghitung artefak yang diterbitkan pengguna; hanya `limit` dan `scope` yang dapat menemaninya. `scope` default ke `"mine"`, yang mencantumkan artefak yang dimiliki pengguna; `"shared"` mencantumkan artefak yang dibagikan orang lain kepada pengguna, dan `"all"` mencantumkan keduanya.
3484 3560
3485* `capabilities`: kemampuan runtime yang digunakan halaman yang diterbitkan, dikunci berdasarkan nama kemampuan, seperti [connector yang dapat dipanggil halaman](/docs/id/artifacts#pull-live-data-with-mcp-connectors). Layanan artifact memvalidasi deklarasi dan menolak publish yang menamai kemampuan yang tidak dapat digunakan akun atau memberikan satu config yang tidak valid. Lewatkan `{}` untuk menghapus deklarasi yang disimpan, dan hilangkan bidang pada redeploy untuk menyimpannya. Memerlukan Agent SDK v0.3.235 atau yang lebih baru.3561* `capabilities`: kemampuan runtime yang digunakan halaman yang diterbitkan, dikunci berdasarkan nama kemampuan, seperti [konektor yang dapat dipanggil halaman](/docs/id/artifacts#pull-live-data-with-mcp-connectors). Layanan artefak memvalidasi deklarasi dan menolak publikasi yang menamai kemampuan yang tidak dapat digunakan akun atau memberikan satu konfigurasi yang tidak valid. Lewatkan `{}` untuk menghapus deklarasi yang disimpan, dan hilangkan bidang pada redeploy untuk menyimpannya. Memerlukan Agent SDK v0.3.235 atau lebih baru.
3486* `contract`: versi runtime yang dijalankan halaman yang diterbitkan. Hilangkan untuk menyimpan versi artifact saat ini, lewatkan `"latest"` untuk upgrade, atau lewatkan versi spesifik untuk pin atau rollback. Memerlukan Agent SDK v0.3.235 atau yang lebih baru.3562* `contract`: versi runtime yang dijalankan halaman yang diterbitkan. Hilangkan untuk menyimpan versi artefak saat ini, lewatkan `"latest"` untuk upgrade, atau lewatkan versi tertentu untuk pin atau rollback. Memerlukan Agent SDK v0.3.235 atau lebih baru.
3487 3563
3488Tipe dieksport, tetapi tool dimatikan secara default dalam sesi Agent SDK. Penerbitan juga memerlukan setiap kondisi dalam [tabel ketersediaan artifact](/docs/id/artifacts#availability), yang sesi yang diautentikasi dengan kunci API tidak memenuhi.3564Jenis diekspor, tetapi tool dimatikan secara default dalam sesi Agent SDK. Publikasi juga memerlukan setiap kondisi dalam [tabel ketersediaan artefak](/docs/id/artifacts#availability), yang sesi yang diautentikasi dengan kunci API tidak memenuhi.
3489 3565
3490<h3 id="projects">3566<h3 id="projects">
3491 Projects3567 Projects
3510};3586};
3511```3587```
3512 3588
3513Membaca dan menulis Project claude.ai yang dilampirkan ke sesi. Mengirim berdasarkan `method`:3589Membaca dan menulis Proyek claude.ai yang dilampirkan ke sesi. Mengirim pada `method`:
3514 3590
3515* `project_info`: mengembalikan metadata project dan daftar doc.3591* `project_info`: mengembalikan metadata proyek dan daftar doc.
3516* `project_read`: membaca satu doc berdasarkan `path`.3592* `project_read`: membaca satu doc berdasarkan `path`.
3517* `project_search`: menanyakan basis pengetahuan project dengan `query`. `n` membatasi hit dan default ke 5.3593* `project_search`: menanyakan basis pengetahuan proyek dengan `query`. `n` membatasi hit dan default ke `5`.
3518* `project_write`: membuat atau mengganti doc di `path` dari tepat satu dari `content`, yang membawa teks inline, atau `local_path`, yang menamai file di dalam direktori kerja. `present_to_user: true` menandai doc yang ditulis sebagai deliverable yang perlu dilihat pengguna.3594* `project_write`: membuat atau mengganti doc di `path` dari tepat satu dari `content`, yang membawa teks inline, atau `local_path`, yang menamai file di dalam direktori kerja. `present_to_user: true` menandai doc yang ditulis sebagai deliverable yang perlu dilihat pengguna.
3519* `project_delete`: menghapus doc berdasarkan `path`.3595* `project_delete`: menghapus doc berdasarkan `path`.
3520 3596
3531};3607};
3532```3608```
3533 3609
3534Membuat daftar anak langsung dari sumber daya direktori pada server MCP. Hanya dapat digunakan terhadap server yang telah mendeklarasikan dukungan untuk listing direktori; listing tidak rekursif. Listing direktori tidak diaktifkan di setiap sesi: ketika dimatikan, panggilan mengembalikan daftar `resources` kosong dan bidang `error` melaporkan bahwa listing direktori tidak diaktifkan.3610Mencantumkan anak langsung dari sumber daya direktori pada server MCP. Hanya dapat digunakan terhadap server yang telah mendeklarasikan dukungan untuk daftar direktori; daftar tidak rekursif. Daftar direktori tidak diaktifkan di setiap sesi: ketika dimatikan, panggilan mengembalikan daftar `resources` kosong dan bidang `error` melaporkan bahwa daftar direktori tidak diaktifkan.
3535 3611
3536<h3 id="refreshmcptools">3612<h3 id="refreshmcptools">
3537 RefreshMcpTools3613 RefreshMcpTools
3545};3621};
3546```3622```
3547 3623
3548Menanyakan ulang daftar tool dari server MCP yang terhubung dan menerapkan perubahan apa pun. Tipe dieksport, tetapi Claude Code mendaftarkan tool hanya ketika Anda mengatur `CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1` dalam [opsi `env`](#options), dan hanya dalam sesi dengan setidaknya satu server MCP. Memerlukan Claude Code v2.1.211 atau yang lebih baru.3624Menanyakan ulang daftar tool server MCP yang terhubung dan menerapkan perubahan apa pun. Jenis diekspor, tetapi Claude Code mendaftarkan tool hanya ketika Anda mengatur `CLAUDE_CODE_ENABLE_REFRESH_MCP_TOOLS=1` dalam [opsi `env`](#options), dan hanya dalam sesi dengan setidaknya satu server MCP. Memerlukan Claude Code v2.1.211 atau lebih baru.
3549 3625
3550<h3 id="showonboardingrolepicker">3626<h3 id="showonboardingrolepicker">
3551 ShowOnboardingRolePicker3627 ShowOnboardingRolePicker
3557type ShowOnboardingRolePickerInput = {};3633type ShowOnboardingRolePickerInput = {};
3558```3634```
3559 3635
3560Merender baris chip role-picker yang dapat diklik selama onboarding Cowork sehingga pengguna dapat memilih peran mereka dan mendapatkan plugin yang cocok diinstal. Tidak memerlukan argumen; daftar peran ditentukan oleh klien. Panggilan memblokir sampai pengguna merespons.3636Merender baris chip pemilih peran yang dapat diklik selama onboarding Cowork sehingga pengguna dapat memilih peran mereka dan mendapatkan plugin yang cocok diinstal. Tidak memerlukan argumen; daftar peran ditentukan oleh klien. Panggilan memblokir sampai pengguna merespons.
3561 3637
3562<h3 id="mcpinput">3638<h3 id="mcpinput">
3563 McpInput3639 McpInput
3571};3647};
3572```3648```
3573 3649
3574Argumen tool MCP adalah objek terbuka: setiap server mendefinisikan parameter sendirinya, jadi tipe tidak menempatkan batasan pada nama bidang atau nilai. Konsultasikan skema tool server sendiri untuk bidang yang diterima tool tertentu.3650Argumen tool MCP adalah objek terbuka: setiap server mendefinisikan parameternya sendiri, jadi jenis tidak menempatkan batasan pada nama bidang atau nilai. Konsultasikan skema tool server sendiri untuk bidang yang diterima tool tertentu.
3575 3651
3576<h2 id="tool-output-types">3652<h2 id="tool-output-types">
3577 Tipe Output Tool3653 Tipe Output Tool
4884| `description` | `string` | Deskripsi tentang kapan menggunakan agen ini |4960| `description` | `string` | Deskripsi tentang kapan menggunakan agen ini |
4885| `model` | `string \| undefined` | Model yang digunakan agen ini: alias atau ID model, atau `'inherit'` untuk model parent. Ketika `undefined`, Claude Code memilih model dalam [urutan model subagen](/docs/id/sub-agents#choose-a-model) |4961| `model` | `string \| undefined` | Model yang digunakan agen ini: alias atau ID model, atau `'inherit'` untuk model parent. Ketika `undefined`, Claude Code memilih model dalam [urutan model subagen](/docs/id/sub-agents#choose-a-model) |
4886 4962
4963<h3 id="mcpserverprovenance">
4964 `McpServerProvenance`
4965</h3>
4966
4967Server MCP yang melayani tool `mcp__*`, dan tempat asal definisi server itu. Input hook [`PreToolUse`](#pretoolusehookinput), `PostToolUse`, `PostToolUseFailure`, `PermissionRequest`, dan `PermissionDenied` membawanya sebagai `mcp_server`, dan opsi [`CanUseTool`](#canusetool) membawanya sebagai `mcpServer`. Keduanya menghilangkannya untuk tool yang tidak berasal dari server MCP.
4968
4969```typescript theme={null}
4970type McpServerProvenance = {
4971 name: string;
4972 source: string;
4973};
4974```
4975
4976| Field | Tipe | Deskripsi |
4977| :------- | :------- | :----------------------------------------------------------------------------------------------------------- |
4978| `name` | `string` | Nama yang didaftarkan server, nilai yang sama yang dilaporkan [`mcpServerStatus()`](#query-object) untuk itu |
4979| `source` | `string` | Tempat asal definisi server: `sdk`, `plugin`, atau cakupan konfigurasi |
4980
4981`source` mengambil salah satu nilai berikut. Set terbuka, jadi perlakukan nilai yang tidak Anda kenali sebagai sumber yang dikonfigurasi, tidak pernah sebagai `sdk`:
4982
4983* **`sdk`**: server dalam proses yang didaftarkan aplikasi Anda. Hanya aplikasi host SDK yang dapat mendaftarkan satu, jadi server yang dikonfigurasi tidak pernah melaporkan `sdk`, apa pun namanya.
4984* **`plugin`**: server yang disediakan [plugin](/docs/id/agent-sdk/plugins). `name` adalah bentuk `plugin:<plugin-name>:<server-name>` yang bersifat scoped seperti yang dijelaskan di bawah [server MCP yang disediakan plugin](/docs/id/mcp#plugin-provided-mcp-servers).
4985* **Cakupan konfigurasi**: `user`, `project`, `local`, `dynamic`, `managed`, `enterprise`, `claudeai`, atau `agent`. Server `.mcp.json` melaporkan `project`, dan [cakupan instalasi MCP](/docs/id/mcp#mcp-installation-scopes) mendefinisikan `local`, `project`, dan `user`. Server yang diteruskan aplikasi Anda dalam opsi [`mcpServers`](#options), selain server SDK dalam proses, melaporkan `dynamic`.
4986
4987Dasarkan keputusan kepercayaan pada `source`, bukan pada `name` atau awalan nama tool `mcp__<server>__`. Untuk sumber apa pun selain `sdk`, `name` adalah teks yang tidak dipercaya: escape sebelum ditampilkan.
4988
4989`McpServerProvenance` dan field yang membawanya memerlukan Agent SDK v0.3.274 atau lebih baru.
4990
4887<h3 id="mcpserverstatus">4991<h3 id="mcpserverstatus">
4888 `McpServerStatus`4992 `McpServerStatus`
4889</h3>4993</h3>
4901 error?: string;5005 error?: string;
4902 config?: McpServerStatusConfig;5006 config?: McpServerStatusConfig;
4903 scope?: string;5007 scope?: string;
5008 source?: string;
4904 tools?: {5009 tools?: {
4905 name: string;5010 name: string;
4906 description?: string;5011 description?: string;
4913};5018};
4914```5019```
4915 5020
5021`source` mengatakan tempat asal definisi server, dengan nilai dan aturan kepercayaan yang sama seperti `source` [`McpServerProvenance`](#mcpserverprovenance). Field memerlukan Agent SDK v0.3.274 atau lebih baru dan tidak ada pada versi sebelumnya.
5022
4916<h3 id="mcpserverstatusconfig">5023<h3 id="mcpserverstatusconfig">
4917 `McpServerStatusConfig`5024 `McpServerStatusConfig`
4918</h3>5025</h3>
5660| :-------------------------- | :---------------------------------------------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |5767| :-------------------------- | :---------------------------------------------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
5661| `enabled` | `boolean` | `false` | Aktifkan mode sandbox untuk eksekusi perintah |5768| `enabled` | `boolean` | `false` | Aktifkan mode sandbox untuk eksekusi perintah |
5662| `failIfUnavailable` | `boolean` | `true` | Berhenti saat startup jika `enabled` adalah `true` tetapi sandbox tidak dapat dimulai. Atur `false` untuk kembali ke eksekusi unsandboxed dengan peringatan di stderr |5769| `failIfUnavailable` | `boolean` | `true` | Berhenti saat startup jika `enabled` adalah `true` tetapi sandbox tidak dapat dimulai. Atur `false` untuk kembali ke eksekusi unsandboxed dengan peringatan di stderr |
5663| `autoAllowBashIfSandboxed` | `boolean` | `true` | Auto-approve perintah bash ketika sandbox diaktifkan |5770| `autoAllowBashIfSandboxed` | `boolean` | `true` | Auto-approve perintah Bash ketika sandbox diaktifkan |
5664| `excludedCommands` | `string[]` | `[]` | Perintah yang selalu bypass pembatasan sandbox (misalnya, `['docker']`). Ini berjalan unsandboxed secara otomatis tanpa keterlibatan model |5771| `excludedCommands` | `string[]` | `[]` | Perintah yang selalu bypass pembatasan sandbox (misalnya, `['docker']`). Ini berjalan unsandboxed secara otomatis tanpa keterlibatan model |
5665| `allowUnsandboxedCommands` | `boolean` | `true` | Izinkan model untuk meminta menjalankan perintah di luar sandbox. Ketika `true`, model dapat mengatur `dangerouslyDisableSandbox` dalam input tool, yang jatuh kembali ke [sistem izin](#permissions-fallback-for-unsandboxed-commands) |5772| `allowUnsandboxedCommands` | `boolean` | `true` | Izinkan model untuk meminta menjalankan perintah di luar sandbox. Ketika `true`, model dapat mengatur `dangerouslyDisableSandbox` dalam input tool, yang jatuh kembali ke [sistem izin](#permissions-fallback-for-unsandboxed-commands) |
5666| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `undefined` | Konfigurasi sandbox spesifik jaringan |5773| `network` | [`SandboxNetworkConfig`](#sandboxnetworkconfig) | `undefined` | Konfigurasi sandbox spesifik jaringan |