agent-sdk/typescript.md +298 −260
527```527```
528 528
529<h2 id="types">529<h2 id="types">
530530 Jenis Tipe
531</h2>531</h2>
532 532
533<h3 id="options">533<h3 id="options">
536 536
537Objek konfigurasi untuk fungsi `query()`.537Objek konfigurasi untuk fungsi `query()`.
538 538
539539| Properti | Jenis | Default | Deskripsi || Properti | Tipe | Default | Deskripsi |
540| :- | :- | :- | :- |540| :- | :- | :- | :- |
541541| `abortController` | `AbortController` | `new AbortController()` | Pengontrol untuk membatalkan operasi || `abortController` | `AbortController` | `new AbortController()` | Controller untuk membatalkan operasi |
542542| `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) || `additionalDirectories` | `string[]` | `[]` | Direktori tambahan yang dapat diakses Claude. SDK meneruskan setiap entri ke Claude Code sebagai `--add-dir`, sehingga dengan sumber pengaturan `project`, Claude Code juga [memuat skill, perintah, dan subagent dari direktori tersebut](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) |
543| `agent` | `string` | `undefined` | Nama agent untuk thread utama. Agent harus didefinisikan dalam opsi `agents` atau dalam pengaturan |543| `agent` | `string` | `undefined` | Nama agent untuk thread utama. Agent harus didefinisikan dalam opsi `agents` atau dalam pengaturan |
544544| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Tentukan subagents secara terprogram || `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Mendefinisikan subagent secara terprogram |
545545| `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 || `agentProgressSummaries` | `boolean` | `false` | Jika `true`, hasilkan ringkasan kemajuan satu baris untuk subagent dan teruskan pada event [`task_progress`](#sdktaskprogressmessage) melalui field `summary`. Berlaku untuk subagent latar depan dan latar belakang |
546546| `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'` || `allowDangerouslySkipPermissions` | `boolean` | `false` | Mengaktifkan pelewatan izin. Diperlukan saat menggunakan `permissionMode: 'bypassPermissions'`, saat startup atau nanti melalui `setPermissionMode()`. Lihat [plan mode](/docs/id/agent-sdk/permissions#plan-mode-plan) untuk cara interaksinya dengan `permissionMode: 'plan'` |
547547| `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) || `allowedTools` | `string[]` | `[]` | Tool yang disetujui otomatis tanpa meminta izin. Ini tidak membatasi Claude hanya pada tool ini. Jika Anda menyebutkan salah satu [tool pelacakan tugas](/docs/id/agent-sdk/todo-tracking#model-availability) di sini, Claude Code juga mengikutsertakan sesi tersebut. Tool lain yang tidak tercantum diteruskan ke `permissionMode` dan `canUseTool`. Gunakan `disallowedTools` untuk memblokir tool. Lihat [Izin](/docs/id/agent-sdk/permissions#allow-and-deny-rules) |
548548| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Aktifkan fitur beta || `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Mengaktifkan fitur beta |
549549| `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 || `canUseTool` | [`CanUseTool`](#canusetool) | `undefined` | Fungsi izin kustom, hanya dipanggil ketika [alur izin](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) berlanjut ke permintaan izin. Tidak dipanggil untuk panggilan yang disetujui otomatis oleh `allowedTools`, aturan allow, atau `permissionMode`. Aturan allow tidak menyetujui terlebih dahulu [tindakan yang tidak disetujui otomatis oleh mode mana pun](/docs/id/permission-modes#actions-no-mode-auto-approves). Lihat [`CanUseTool`](#canusetool) untuk detailnya |
550550| `continue` | `boolean` | `false` | Lanjutkan percakapan terbaru || `continue` | `boolean` | `false` | Melanjutkan percakapan terbaru |
551| `cwd` | `string` | `process.cwd()` | Direktori kerja saat ini |551| `cwd` | `string` | `process.cwd()` | Direktori kerja saat ini |
552552| `debug` | `boolean` | `false` | Aktifkan mode debug untuk proses Claude Code || `debug` | `boolean` | `false` | Mengaktifkan mode debug untuk proses Claude Code |
553553| `debugFile` | `string` | `undefined` | Tulis debug logs ke path file tertentu. Secara implisit mengaktifkan mode debug || `debugFile` | `string` | `undefined` | Menulis log debug ke path file tertentu. Secara implisit mengaktifkan mode debug |
554554| `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) || `disallowedTools` | `string[]` | `[]` | Tool yang ditolak. Nama polos seperti `"Bash"` menghapus tool dari konteks Claude. Aturan bercakupan seperti `"Bash(rm *)"` membiarkan tool tetap tersedia dan menolak panggilan yang cocok di setiap mode izin, termasuk `bypassPermissions`, untuk perintah [sebagaimana tertulis](/docs/id/permissions#bash-rule-limits). Lihat [Izin](/docs/id/agent-sdk/permissions#allow-and-deny-rules) |
555555| `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) || `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max'` | `undefined` | Mengontrol seberapa besar effort yang dikerahkan Claude dalam responsnya. Bekerja dengan adaptive thinking untuk memandu kedalaman thinking. Lihat [menyesuaikan tingkat effort](/docs/id/model-config#adjust-effort-level) |
556556| `enableFileCheckpointing` | `boolean` | `false` | Aktifkan file change tracking untuk rewinding. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) || `enableFileCheckpointing` | `boolean` | `false` | Mengaktifkan pelacakan perubahan file untuk rewind. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |
557557| `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 || `env` | `Record<string, string \| undefined>` | `process.env` | Environment variable. Jika diatur, ini menggantikan environment subprocess alih-alih digabungkan dengan `process.env`, jadi teruskan `{ ...process.env, YOUR_VAR: 'value' }` untuk mempertahankan variabel yang diwarisi seperti `PATH`. Lihat [Menangani respons API yang lambat atau macet](#handle-slow-or-stalled-api-responses) untuk contoh pola ini, dan [Environment variable](/docs/id/env-vars) untuk variabel yang dibaca oleh CLI yang mendasarinya. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |
558558| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | JavaScript runtime untuk digunakan || `executable` | `'bun' \| 'deno' \| 'node'` | Terdeteksi otomatis | Runtime JavaScript yang digunakan |
559559| `executableArgs` | `string[]` | `[]` | Argumen untuk diteruskan ke executable || `executableArgs` | `string[]` | `[]` | Argumen yang diteruskan ke executable |
560| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumen tambahan |560| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumen tambahan |
561561| `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) || `fallbackModel` | `string` | `undefined` | Model yang digunakan jika model utama gagal. Menerima daftar yang dipisahkan koma. Untuk urutan dan batasnya, lihat [Rantai model fallback](/docs/id/model-config#fallback-model-chains). Untuk panduan, lihat [Memilih model](/docs/id/agent-sdk/configuration#choose-a-model) |
562562| `forkSession` | `boolean` | `false` | Ketika melanjutkan dengan `resume`, fork ke session ID baru alih-alih melanjutkan session asli || `forkSession` | `boolean` | `false` | Saat melanjutkan dengan `resume`, lakukan fork ke ID sesi baru alih-alih melanjutkan sesi asli |
563563| `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. Pesan dari subagents yang forked skill spawn, dan dari nested forked skills, memerlukan v2.1.275 atau lebih baru || `forwardSubagentText` | `boolean` | `false` | Meneruskan teks subagent dan thinking block sebagai pesan assistant dan user dengan `parent_tool_use_id` yang diatur, sehingga konsumen dapat merender transkrip bersarang. Tanpa opsi ini, Claude Code memancarkan blok `tool_use` dan `tool_result` subagent tetapi tidak teks atau thinking. Pesan dari subagent di setiap kedalaman sarang diteruskan pada Claude Code v2.1.219 dan yang lebih baru; sebelum v2.1.219, hanya pesan dari subagent kedalaman 1 yang muncul. Pesan dari subagent yang dimunculkan oleh skill ter-fork, dan dari skill ter-fork yang bersarang, memerlukan v2.1.275 atau yang lebih baru |
564564| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Hook callbacks untuk acara || `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Callback hook untuk event |
565565| `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 || `includeHookEvents` | `boolean` | `false` | Menyertakan event siklus hidup hook dalam aliran pesan sebagai [`SDKHookStartedMessage`](#sdkhookstartedmessage), [`SDKHookProgressMessage`](#sdkhookprogressmessage), dan [`SDKHookResponseMessage`](#sdkhookresponsemessage). Event siklus hidup 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 tetap memancarkan `SDKHookProgressMessage` selama hook perintah yang berjalan lebih dari satu detik menghasilkan output, dan memancarkan `SDKHookResponseMessage` hanya ketika hook [yang berjalan di latar belakang](/docs/id/hooks#run-hooks-in-the-background) selesai |
566566| `includePartialMessages` | `boolean` | `false` | Sertakan partial message events || `includePartialMessages` | `boolean` | `false` | Menyertakan event pesan parsial |
567567| `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 || `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout dalam milidetik untuk setiap panggilan `sessionStore.load()` dan `sessionStore.listSubkeys()` selama materialisasi resume. Jika adapter tidak selesai dalam rentang ini, kueri gagal alih-alih menggantung. Diabaikan jika `sessionStore` tidak diatur |
568568| `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 || `managedSettings` | `Settings` | `undefined` | Pengaturan tingkat kebijakan yang disuplai proses host Anda ke sesi yang dimunculkan. Pada mesin dengan pengaturan terkelola yang di-deploy admin, Claude Code mengabaikannya kecuali sumber terkelola berprioritas tertinggi milik admin mengatur `parentSettingsBehavior: 'merge'`, dan tidak pernah menggabungkannya selama [`policyHelper`](/docs/id/settings-reference#policyhelper) menyuplai pengaturan terkelola. Nilai yang digabungkan melewati filter yang hanya bersifat membatasi; [Membatasi pengaturan induk](/docs/id/claude-apps-gateway#restrict-parent-settings) menjelaskan apa yang diterima filter dan kunci `allowManaged*Only`. Host yang mengatur [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/id/env-vars) memiliki tiga key yang dibaca langsung dari payload ini: [konfigurasi model](/docs/id/model-config#restrict-model-selection) pada Claude Code v2.1.222 atau yang lebih baru, [`modelPricing`](/docs/id/settings-reference#modelpricing) ketika tidak ada sumber terkelola yang mengaturnya pada v2.1.246 atau yang lebih baru, dan entri env `ENABLE_TOOL_SEARCH` pada v2.1.247 atau yang lebih baru |
569569| `maxBudgetUsd` | `number` | `undefined` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Hanya menghitung pengeluaran call sendiri; totals yang dipulihkan dari session yang dilanjutkan tidak dihitung. Untuk caveat akurasi dan perilaku reset, lihat [Track cost and usage](/docs/id/agent-sdk/cost-tracking) || `maxBudgetUsd` | `number` | `undefined` | Menghentikan kueri ketika estimasi biaya sisi klien mencapai nilai USD ini. Hanya menghitung pengeluaran panggilan itu sendiri; total yang dipulihkan dari sesi yang dilanjutkan tidak dihitung. Untuk catatan akurasi dan perilaku reset, lihat [Melacak biaya dan penggunaan](/docs/id/agent-sdk/cost-tracking) |
570570| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimal untuk proses thinking || `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses thinking |
571571| `maxTurns` | `number` | `undefined` | Maksimal agentic turns (tool-use round trips) || `maxTurns` | `number` | `undefined` | Giliran agentic maksimum (perjalanan bolak-balik penggunaan tool) |
572572| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi MCP server || `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi server MCP |
573573| `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) || `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) |
574574| `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 || `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. Jika tidak disediakan, permintaan elicitation yang tidak ditangani ditolak secara otomatis |
575575| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Tentukan format output untuk hasil agent. Lihat [Structured outputs](/docs/id/agent-sdk/structured-outputs) untuk detail || `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Mendefinisikan format output untuk hasil agent. Lihat [Structured outputs](/docs/id/agent-sdk/structured-outputs) untuk detailnya |
576576| `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) || `outputStyle` | `string` | `undefined` | Bukan field `Options`. Atur `outputStyle` dalam objek [`settings`](/docs/id/settings) inline atau file pengaturan sebagai gantinya. Lihat [Mengaktifkan gaya output](/docs/id/agent-sdk/modifying-system-prompts#activate-an-output-style) |
577577| `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 || `pathToClaudeCodeExecutable` | `string` | Diresolusi otomatis dari binary native yang dibundel | Path ke executable Claude Code. Hanya diperlukan jika dependensi opsional dilewati saat instalasi atau platform Anda tidak termasuk dalam set yang didukung |
578578| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | Permission mode untuk session. Jika Anda menghilangkannya, session dapat dimulai dalam auto mode. Lihat [Permission modes](/docs/id/agent-sdk/permissions#permission-modes) untuk cara Claude Code memilih starting permission mode || `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | Mode izin untuk sesi. Jika Anda menghilangkannya, sesi dapat dimulai dalam auto mode. Lihat [Mode izin](/docs/id/agent-sdk/permissions#permission-modes) untuk cara Claude Code memilih mode izin awal |
579579| `permissionPromptToolName` | `string` | `undefined` | Nama MCP tool untuk permission prompts || `permissionPromptToolName` | `string` | `undefined` | Nama tool MCP untuk permintaan izin |
580580| `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 || `permissionPrompts` | `'host' \| 'none'` | `'host'` | Siapa yang menjawab permintaan izin: `'host'` mengarahkannya ke callback [`canUseTool`](#canusetool) Anda atau tool `permissionPromptToolName`, dan `'none'` [menolak panggilan yang seharusnya memunculkan permintaan izin](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated). Memerlukan Claude Code v2.1.259 atau yang lebih baru |
581581| `persistSession` | `boolean` | `true` | Ketika `false`, menonaktifkan session persistence ke disk. Sessions tidak dapat dilanjutkan kemudian || `persistSession` | `boolean` | `true` | Jika `false`, menonaktifkan persistensi sesi ke disk. Sesi tidak dapat dilanjutkan nanti |
582582| `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 || `planModeInstructions` | `string` | `undefined` | Instruksi alur kerja kustom untuk plan mode. Ketika `permissionMode` adalah `'plan'`, string ini menggantikan isi alur kerja plan mode default. CLI tetap membungkusnya dengan pembuka penegakan read-only dan footer protokol ExitPlanMode |
583583| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Muat custom plugins dari local paths. Lihat [Plugins](/docs/id/agent-sdk/plugins) untuk detail || `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Memuat plugin kustom dari path lokal. Lihat [Plugin](/docs/id/agent-sdk/plugins) untuk detailnya |
584584| `projectConfigRoot` | `string` | `undefined` | Absolute path dari trusted checkout yang `cwd` adalah worktree-nya. Claude Code membaca project settings, `.mcp.json`, dan project's `.claude/` commands, agents, skills, workflows, routines, dan output styles dari direktori ini alih-alih `cwd`, dan menetapkan `CLAUDE_PROJECT_DIR` ke dalamnya. Hooks, helper scripts seperti `apiKeyHelper`, dan stdio MCP servers dimulai dengan direktori ini sebagai working directory mereka. File `CLAUDE.md` dan `.claude/rules/` masih load dari `cwd`. Memerlukan Claude Code v2.1.275 atau lebih baru || `projectConfigRoot` | `string` | `undefined` | Path absolut dari checkout tepercaya yang `cwd`-nya merupakan worktree darinya. Claude Code membaca pengaturan proyek, `.mcp.json`, dan perintah, agent, skill, workflow, routine, serta gaya output `.claude/` milik proyek dari direktori ini alih-alih `cwd`, dan mengatur `CLAUDE_PROJECT_DIR` ke direktori tersebut. Hook, skrip pembantu seperti `apiKeyHelper`, dan server MCP stdio dimulai dengan direktori ini sebagai direktori kerjanya. File `CLAUDE.md` dan `.claude/rules/` tetap dimuat dari `cwd`. Memerlukan Claude Code v2.1.275 atau yang lebih baru |
585585| `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) || `promptSuggestions` | `boolean` | `false` | Mengaktifkan saran prompt. Setelah satu giliran, Claude Code memancarkan pesan `prompt_suggestion` yang membawa prediksi prompt pengguna berikutnya. Claude Code tidak menghasilkan saran untuk beberapa giliran, seperti ketika akun Anda mendekati atau telah mencapai batas penggunaannya. Lihat [Kapan Claude Code melewati saran](/docs/id/interactive-mode#when-claude-code-skips-suggestions) |
586586| `resume` | `string` | `undefined` | Session ID untuk dilanjutkan || `resume` | `string` | `undefined` | ID sesi yang akan dilanjutkan |
587587| `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 || `resumeDropsTurn` | `string` | `undefined` | Bersama `resumeSessionAt`: UUID prompt dari giliran yang hendak dibuang oleh resume yang memotong. Claude Code menolak resume ketika rentang yang dibuang berisi apa pun yang tidak dapat diatribusikan ke giliran tersebut, seperti pesan antrean yang terserap atau notifikasi tugas, dan menyebutkan flag `--resume-drops-turn` dalam pesan penolakan. Hanya Agent SDK dan resume mode print yang membaca pasangan ini. Memerlukan Claude Code v2.1.223 atau yang lebih baru |
588588| `resumeSessionAt` | `string` | `undefined` | Lanjutkan session pada message UUID tertentu || `resumeSessionAt` | `string` | `undefined` | Melanjutkan sesi pada UUID pesan tertentu |
589589| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Konfigurasi perilaku sandbox secara terprogram. Lihat [Sandbox settings](#sandboxsettings) untuk detail || `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Mengonfigurasi perilaku sandbox secara terprogram. Lihat [Pengaturan sandbox](#sandboxsettings) untuk detailnya |
590590| `sessionId` | `string` | Auto-generated | Gunakan UUID tertentu untuk session alih-alih auto-generating satu || `sessionId` | `string` | Dibuat otomatis | Menggunakan UUID tertentu untuk sesi alih-alih membuatnya secara otomatis |
591591| `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) || `sessionStore` | [`SessionStore`](/docs/id/agent-sdk/session-storage#the-sessionstore-interface) | `undefined` | Mencerminkan transkrip sesi ke backend eksternal sehingga host lain dapat melanjutkannya. Lihat [Menyimpan sesi ke penyimpanan eksternal](/docs/id/agent-sdk/session-storage) |
592592| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Flush mode untuk `sessionStore`. Diabaikan ketika `sessionStore` tidak diatur || `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Mode flush untuk `sessionStore`. Diabaikan jika `sessionStore` tidak diatur |
593593| `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) || `settings` | `string \| Settings` | `undefined` | Objek [pengaturan](/docs/id/settings) inline, path file pengaturan, atau string JSON inline. Mengisi lapisan pengaturan flag dalam [urutan prioritas](/docs/id/settings#settings-precedence). Ubah saat runtime dengan [`applyFlagSettings()`](#applyflagsettings) |
594594| `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) || `settingSources` | [`SettingSource`](#settingsource)`[]` | Default CLI (semua sumber) | Mengontrol pengaturan filesystem mana yang dimuat. Teruskan `[]` untuk menonaktifkan pengaturan user, project, dan local. [Kebijakan terkelola endpoint](/docs/id/managed-settings#delivery-mechanisms) tetap dimuat; pengaturan terkelola server diambil ketika sesi melakukan autentikasi dengan kredensial organisasi pada [konfigurasi yang memenuhi syarat](/docs/id/server-managed-settings#platform-availability). Lihat [Menggunakan fitur Claude Code](/docs/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) |
595595| `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) || `skills` | `string[] \| 'all'` | `undefined` | Skill yang tersedia untuk sesi. Teruskan `'all'` untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Teruskan nama persis saja. Pada Agent SDK v0.3.221 atau yang lebih baru, SDK menolak nama yang tidak valid dan berbentuk wildcard dengan error sebelum memulai proses Claude Code. Jika diatur, SDK menambahkan tool Skill ke `allowedTools` secara otomatis. Jika Anda juga meneruskan `tools`, sertakan `'Skill'` dalam daftar tersebut. Lihat [Skills](/docs/id/agent-sdk/skills) |
596596| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fungsi kustom untuk spawn proses Claude Code. Gunakan untuk menjalankan Claude Code di VMs, containers, atau remote environments || `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fungsi kustom untuk memunculkan proses Claude Code. Gunakan untuk menjalankan Claude Code di VM, container, atau lingkungan remote |
597| `stderr` | `(data: string) => void` | `undefined` | Callback untuk output stderr |597| `stderr` | `(data: string) => void` | `undefined` | Callback untuk output stderr |
598598| `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) || `strictMcpConfig` | `boolean` | `false` | Hanya gunakan 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) |
599599| `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 || `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (prompt minimal) | Konfigurasi system prompt. Teruskan string untuk prompt kustom, atau `{ type: 'preset', preset: 'claude_code' }` untuk menggunakan system prompt Claude Code. Teruskan array string dengan konstanta `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` yang diekspor di antara bagian statis dan bagian per-permintaan untuk [melakukan 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 memperluasnya dengan instruksi tambahan, dan atur `excludeDynamicSections: true` untuk memindahkan konteks per-sesi ke pesan pengguna pertama demi [penggunaan ulang cache prompt yang lebih baik di berbagai mesin](/docs/id/agent-sdk/modifying-system-prompts#improve-prompt-caching-across-users-and-machines). Atur `snapshot: false` untuk membangun ulang prompt pada setiap permintaan alih-alih [menggunakan ulang prompt yang direkam sesi pada permintaan pertamanya](/docs/id/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session). Untuk mengatur `snapshot` pada prompt kustom, teruskan bentuk `{ type: 'custom', prompt }`. Bentuk `{ type: 'custom' }` dan field `snapshot` memerlukan TypeScript Agent SDK v0.3.257 atau yang lebih baru |
600600| `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 || `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* Anggaran tugas sisi API dalam token. Jika diatur, model diberi tahu sisa anggaran tokennya sehingga dapat mengatur laju penggunaan tool dan menyelesaikan pekerjaan sebelum batas |
601601| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` untuk model yang didukung | Mengontrol perilaku thinking/reasoning Claude. Lihat [`ThinkingConfig`](#thinkingconfig) untuk opsi || `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` untuk model yang didukung | Mengontrol perilaku thinking/penalaran Claude. Lihat [`ThinkingConfig`](#thinkingconfig) untuk opsi |
602602| `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 || `title` | `string` | `undefined` | Judul tampilan untuk sesi. Saat melanjutkan melalui `resume` atau `continue`, judul tersimpan dari sesi yang dilanjutkan diutamakan; gunakan [`renameSession()`](#renamesession) untuk memberi judul ulang sesi yang ada |
603603| `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' }` || `toolAliases` | `Record<string, string>` | `undefined` | Memetakan nama tool bawaan ke nama tool MCP sehingga Claude memanggil implementasi MCP Anda sebagai pengganti tool bawaan. Misalnya, `{ Bash: 'mcp__workspace__bash' }` |
604604| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Konfigurasi untuk perilaku built-in tool. Lihat [`ToolConfig`](#toolconfig) untuk detail || `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Konfigurasi untuk perilaku tool bawaan. Lihat [`ToolConfig`](#toolconfig) untuk detailnya |
605605| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Konfigurasi tool. Teruskan array nama tool atau gunakan preset untuk mendapatkan default tools Claude Code || `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Konfigurasi tool. Teruskan array nama tool atau gunakan preset untuk mendapatkan tool default Claude Code |
606606| `verbatimPrompts` | `boolean` | `false` | Berikan setiap prompt seperti yang ditulis. SDK mengirim setiap user message dengan `client_composed: true`. Lihat [`client_composed`](#sdkusermessage) untuk apa yang Claude Code lewati pada pesan tersebut. Gunakan opsi ini ketika teks prompt Anda mencakup konten yang end user tidak ketik. Untuk kontrol per-turn, biarkan off dan atur `client_composed` pada individual streamed messages sebagai gantinya. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru dan Claude Code v2.1.248 atau lebih baru; Claude Code version yang bundled dengan SDK versions tersebut memenuhi Claude Code requirement || `verbatimPrompts` | `boolean` | `false` | Mengirimkan setiap prompt sebagaimana tertulis. SDK mengirim setiap pesan pengguna dengan `client_composed: true`. Lihat [`client_composed`](#sdkusermessage) untuk apa yang dilewati Claude Code pada pesan tersebut. Gunakan opsi ini ketika teks prompt Anda menyertakan konten yang tidak diketik oleh pengguna akhir. Untuk kontrol per giliran, biarkan nonaktif dan atur `client_composed` pada masing-masing pesan yang di-stream sebagai gantinya. Memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru dan Claude Code v2.1.248 atau yang lebih baru; versi Claude Code yang dibundel dengan versi SDK tersebut memenuhi persyaratan Claude Code |
607 607
608<h4 id="handle-slow-or-stalled-api-responses">608<h4 id="handle-slow-or-stalled-api-responses">
609609 Tangani respons API yang lambat atau terhenti Menangani respons API yang lambat atau macet
610</h4>610</h4>
611 611
612612CLI subprocess membaca beberapa variabel lingkungan yang mengontrol API timeouts dan stall detection. Teruskan melalui opsi `env`:Subprocess CLI membaca beberapa environment variable yang mengontrol timeout API dan deteksi kemacetan. Teruskan melalui opsi `env`:
613 613
614```typescript theme={null}614```typescript theme={null}
615import { query } from "@anthropic-ai/claude-agent-sdk";615import { query } from "@anthropic-ai/claude-agent-sdk";
627});627});
628```628```
629 629
630630* `API_TIMEOUT_MS`: per-request timeout pada Anthropic client, dalam milidetik. Default `600000`. Berlaku untuk main loop dan semua subagents.* `API_TIMEOUT_MS`: timeout per permintaan pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagent.
631631* `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.* `CLAUDE_CODE_MAX_RETRIES`: jumlah retry API maksimum. Default `10`, dibatasi hingga `15`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri, sehingga waktu total terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff. Untuk eksekusi tanpa pengawasan yang perlu menunggu selama gangguan yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/id/errors#tune-retry-behavior): ini mencoba ulang error kapasitas sementara tanpa batas dan, pada Claude Code v2.1.199 atau yang lebih baru, menaikkan default untuk error sementara lainnya menjadi `300` dan menghapus batas pada variabel ini.
632632* `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`.* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog kemacetan untuk subagent. Selama watchdog stream aktif, defaultnya adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ditambah 5 menit, yang menjadi `600000` kecuali Anda menaikkan variabel tersebut. Dengan watchdog stream nonaktif, defaultnya adalah `600000`. Sebelum v2.1.257, defaultnya selalu `600000`.
633 633
634634 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. Timer direset pada setiap event stream. Saat terjadi kemacetan, Claude Code membatalkan subagent dan melaporkan kemacetan ke induk. Untuk subagent latar belakang, Claude Code juga menandai tugas sebagai gagal dan melampirkan hasil parsial apa pun.
635635* `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.* `CLAUDE_ENABLE_STREAM_WATCHDOG` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: watchdog stream yang membatalkan permintaan 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 dijepit ke nilai minimum tersebut. Setelah pembatalan, [Retry otomatis](/docs/id/errors#automatic-retries) menjelaskan apa yang dilakukan Claude Code, berdasarkan seberapa jauh respons telah berjalan.
636 636
637637 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. Selama watchdog menunggu respons yang ditahan terbuka oleh gateway di belakang `ANTHROPIC_BASE_URL` dengan ping keep-alive, host yang mengatur `includePartialMessages` terus menerima [event stream](#sdkpartialassistantmessage) `ping`, jadi baca frame tersebut sebagai tanda aktif alih-alih menghentikan sesi karena timeout saat tidak ada aktivitas. Sebelum v2.1.257, frame berhenti 5 menit setelah event stream nyata terakhir.
638 638
639<h3 id="query-object">639<h3 id="query-object">
640 Objek `Query`640 Objek `Query`
696 696
697| Metode | Deskripsi |697| Metode | Deskripsi |
698| :- | :- |698| :- | :- |
699699| `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 || `interrupt()` | Menginterupsi kueri. Hanya tersedia dalam mode input streaming. Ketika CLI mengiklankan kapabilitas `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage), resolve dengan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan yang tertunda saat interupsi tiba. Resolve `undefined` pada CLI sebelum v2.1.205 |
700700| `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) || `rewindFiles(userMessageId, options?)` | Memulihkan file ke keadaannya pada pesan pengguna yang ditentukan. Teruskan `{ dryRun: true }` untuk melihat pratinjau perubahan. Memerlukan `enableFileCheckpointing: true`. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |
701701| `setPermissionMode()` | Mengubah permission mode (hanya tersedia dalam streaming input mode) || `setPermissionMode()` | Mengubah mode izin (hanya tersedia dalam mode input streaming) |
702702| `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) || `setModel()` | Mengubah model (hanya tersedia dalam mode input streaming). Meneruskan `undefined` atau string `"default"` mereset ke [model default Claude Code](/docs/id/model-config) |
703703| `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 || `setMaxThinkingTokens()` | *Deprecated:* Gunakan opsi `thinking` sebagai gantinya. Mengubah token thinking maksimum. Meneruskan `null` mereset thinking ke default sesi: override di tengah sesi dihapus, dan thinking tetap nonaktif untuk sesi yang menonaktifkannya |
704704| `applyFlagSettings(settings)` | Merge settings ke dalam layer flag settings session saat runtime (hanya tersedia dalam streaming input mode). Lihat [`applyFlagSettings()`](#applyflagsettings) || `applyFlagSettings(settings)` | Menggabungkan pengaturan ke dalam lapisan pengaturan flag sesi saat runtime (hanya tersedia dalam mode input streaming). Lihat [`applyFlagSettings()`](#applyflagsettings) |
705705| `updateSettings(source, settings)` | Menulis satu key yang allowlisted ke file local settings project atau file user settings Anda, sehingga nilai persists untuk sessions kemudian. Lihat [`updateSettings()`](#updatesettings). Memerlukan TypeScript SDK v0.3.257 atau lebih baru, yang bundle Claude Code v2.1.257 || `updateSettings(source, settings)` | Menulis satu key yang ada dalam allowlist ke file pengaturan lokal proyek atau file pengaturan pengguna Anda, sehingga nilainya bertahan untuk sesi berikutnya. Lihat [`updateSettings()`](#updatesettings). Memerlukan TypeScript SDK v0.3.257 atau yang lebih baru, yang membundel Claude Code v2.1.257 |
706706| `initializationResult()` | Mengembalikan full initialization result termasuk supported commands, models, account info, dan output style configuration || `initializationResult()` | Mengembalikan hasil inisialisasi lengkap termasuk perintah yang didukung, model, info akun, dan konfigurasi gaya output |
707707| `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 || `reinitialize()` | Mengirim ulang permintaan kontrol `initialize` ke CLI yang sedang berjalan dan mengembalikan hasil baru alih-alih hasil koneksi pertama yang di-cache. Gunakan setelah celah transport, seperti menyambung kembali ke sesi setelah terputus, sehingga permintaan izin yang tertunda mencapai callback `canUseTool` Anda lagi. Buat callback idempoten per ID permintaan, karena permintaan yang responsnya hilang akan dikirim lagi. Memerlukan Claude Code v2.1.195 atau yang lebih baru |
708708| `supportedCommands()` | Mengembalikan available commands. Dari Agent SDK v0.3.216 daftar mencerminkan mid-session command changes; lihat [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) || `supportedCommands()` | Mengembalikan perintah yang tersedia. Sejak Agent SDK v0.3.216, daftar mencerminkan perubahan perintah di tengah sesi; lihat [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) |
709709| `supportedModels()` | Mengembalikan available models dengan display info || `supportedModels()` | Mengembalikan model yang tersedia beserta info tampilan |
710710| `supportedAgents()` | Mengembalikan available subagents sebagai [`AgentInfo`](#agentinfo)`[]` || `supportedAgents()` | Mengembalikan subagent yang tersedia sebagai [`AgentInfo`](#agentinfo)`[]` |
711711| `mcpServerStatus()` | Mengembalikan status connected MCP servers sebagai [`McpServerStatus`](#mcpserverstatus)`[]` || `mcpServerStatus()` | Mengembalikan status server MCP yang terhubung sebagai [`McpServerStatus`](#mcpserverstatus)`[]` |
712712| `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, dihitung dengan token-counting API requests yang tidak muncul dalam message stream; lihat [how these requests are handled](#sdkcontrolgetcontextusageresponse). Opsi [`detail`](#sdkcontrolgetcontextusageresponse) memerlukan Agent SDK v0.3.257 atau lebih baru || `getContextUsage(opts?)` | Mengembalikan [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse) yang merinci penggunaan context window sesi berdasarkan kategori, skill, dan tool. Dengan `detail` default, ini adalah data yang sama yang ditampilkan `/context` dalam sesi interaktif, dihitung dengan permintaan API penghitungan token yang tidak muncul di aliran pesan; lihat [cara permintaan ini ditangani](#sdkcontrolgetcontextusageresponse). [Opsi `detail`](#sdkcontrolgetcontextusageresponse) memerlukan Agent SDK v0.3.257 atau yang lebih baru |
713713| `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 || `readFile(path, options?)` | Membaca file dari filesystem sesi. Claude Code meresolusi path terhadap `cwd`; [Apa yang dapat dibaca `readFile()`](#what-readfile-can-read) mencantumkan file yang dilayaninya. Teruskan `{ maxBytes }` untuk mengubah batas baca (default 1 MB, batas atas 10 MB) dan `{ encoding: 'base64' }` untuk file biner seperti gambar. Resolve dengan [`SDKControlReadFileResponse`](#sdkcontrolreadfileresponse), atau `null` saat izin ditolak, file tidak ada, atau error transport. Memerlukan TypeScript SDK v0.2.121 atau yang lebih baru |
714714| `reloadPlugins(options?)` | Reload plugins dari disk, sehingga plugins yang Anda install atau edit mid-session mencapai running session. Resolves dengan [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) yang mencantumkan session's commands, subagents, plugins, dan MCP server status. Memerlukan Agent SDK v0.2.85 atau lebih baru. Opsi [`holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) memerlukan Agent SDK v0.3.268 atau lebih baru || `reloadPlugins(options?)` | Memuat ulang plugin dari disk, sehingga plugin yang Anda instal atau edit di tengah sesi mencapai sesi yang sedang berjalan. Resolve dengan [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) yang mencantumkan perintah, subagent, plugin, dan status server MCP sesi. Memerlukan Agent SDK v0.2.85 atau yang lebih baru. [Opsi `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) memerlukan Agent SDK v0.3.268 atau yang lebih baru |
715715| `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 || `reloadSkills()` | Memuat ulang skill dari disk, sehingga skill yang Anda tambahkan atau edit di tengah sesi menjadi tersedia untuk sesi yang sedang berjalan. Resolve dengan [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) yang mencantumkan skill yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.163 atau yang lebih baru |
716716| `reloadOutputStyles()` | Re-reads [output styles](/docs/id/output-styles) dari disk, sehingga style file yang Anda tambahkan atau edit mid-session menjadi tersedia untuk running session. Resolves dengan [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) yang mencantumkan style names yang tersedia setelah reload. Memerlukan Agent SDK v0.3.261 atau lebih baru || `reloadOutputStyles()` | Membaca ulang [gaya output](/docs/id/output-styles) dari disk, sehingga file gaya yang Anda tambahkan atau edit di tengah sesi menjadi tersedia untuk sesi yang sedang berjalan. Resolve dengan [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) yang mencantumkan nama gaya yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.261 atau yang lebih baru |
717717| `accountInfo()` | Mengembalikan account information || `accountInfo()` | Mengembalikan informasi akun |
718718| `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 || `reconnectMcpServer(serverName)` | Menghubungkan ulang server MCP berdasarkan nama. Jika nama tersebut juga cocok dengan entri dalam file pengaturan seperti `.mcp.json` atau `~/.claude.json`, Claude Code menghubungkan ulang server yang Anda konfigurasi melalui [`mcpServers`](#options) atau `setMcpServers()`, bukan entri file pengaturan. Urutan resolusi tersebut memerlukan Claude Code v2.1.257 atau yang lebih baru |
719719| `toggleMcpServer(serverName, enabled)` | Enable atau disable MCP server berdasarkan nama, dengan name resolution yang sama seperti `reconnectMcpServer()`. Menonaktifkan disconnect server stdio, SSE, atau HTTP dan menghapus tools-nya; untuk server yang Anda tambahkan mid-session dengan `setMcpServers()`, tool removal memerlukan Claude Code v2.1.285 atau lebih baru || `toggleMcpServer(serverName, enabled)` | Mengaktifkan atau menonaktifkan server MCP berdasarkan nama, dengan resolusi nama yang sama seperti `reconnectMcpServer()`. Menonaktifkan server akan memutuskan koneksinya dan menghapus tool-nya. Lihat [`toggleMcpServer()`](#togglemcpserver) untuk versi Claude Code yang diperlukan untuk setiap jenis server |
720720| `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 || `setMcpServers(servers)` | Mengganti set server MCP untuk sesi ini secara dinamis. Resolve dengan [`McpSetServersResult`](#mcpsetserversresult) yang menyebutkan server mana yang ditambahkan dan dihapus, serta error apa pun |
721721| `readMcpResource(serverName, uri)` | *Alpha.* Membaca satu MCP Apps `ui://` resource dari connected MCP server sehingga aplikasi Anda dapat merender widget tool. Resolves dengan [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru || `readMcpResource(serverName, uri)` | *Alpha.* Membaca satu resource `ui://` MCP Apps dari server MCP yang terhubung sehingga aplikasi Anda dapat merender widget tool. Resolve dengan [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru |
722722| `streamInput(stream)` | Stream input messages ke query untuk multi-turn conversations || `streamInput(stream)` | Men-stream pesan input ke kueri untuk percakapan multi-giliran |
723723| `stopTask(taskId)` | Stop running background task berdasarkan ID || `stopTask(taskId)` | Menghentikan tugas latar belakang yang sedang berjalan berdasarkan ID |
724724| `close()` | Close query dan terminate underlying process. Secara paksa mengakhiri query dan membersihkan semua resources || `close()` | Menutup kueri dan menghentikan proses yang mendasarinya. Mengakhiri kueri secara paksa dan membersihkan semua resource |
725 725
726<h4 id="applyflagsettings">726<h4 id="applyflagsettings">
727 `applyFlagSettings()`727 `applyFlagSettings()`
728</h4>728</h4>
729 729
730730Mengubah [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()`.Mengubah [pengaturan](/docs/id/settings) pada sesi yang sedang berjalan tanpa memulai ulang kueri. Gunakan ketika pengaturan yang tidak memiliki setter khusus perlu diubah di tengah sesi, seperti memperketat `permissions` setelah agent membaca input yang tidak tepercaya. `setModel()` dan `setPermissionMode()` adalah setter khusus untuk kedua key tersebut; `applyFlagSettings()` adalah bentuk umum yang menerima subset apa pun dari key pengaturan, dan meneruskan `model` di sini berperilaku sama seperti `setModel()`.
731 731
732732Hanya beberapa keys yang berlaku mid-session:Hanya beberapa key yang berlaku di tengah sesi:
733 733
734734* **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.* **Diterapkan pada giliran berikutnya**: `effortLevel`, `ultracode`, `permissions`, `hooks`, `skillOverrides`, `fastMode`, `agent`. Mengganti `agent` juga menerapkan override model dan hook milik agent tersebut pada giliran berikutnya. System prompt-nya berlaku pada giliran berikutnya, atau, dalam sesi yang [menggunakan ulang system prompt yang direkam](/docs/id/agent-sdk/modifying-system-prompts#change-the-prompt-of-an-existing-session), setelah sesi dipadatkan.
735735* **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.* **Diterapkan selama giliran saat ini**: `model`. Jika Anda mengganti `model` saat Claude sedang mengerjakan satu giliran, respons yang sedang dihasilkan Claude selesai dengan model lama, dan sisa giliran, dimulai dari panggilan berikutnya yang dilakukan Claude Code ke model, menggunakan model baru. Subagent mempertahankan modelnya sendiri. Sebelum v2.1.212, penggantian di tengah giliran menunggu giliran berikutnya.
736736* **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.* **Tidak berpengaruh di tengah sesi**: opsi system prompt. Opsi ini diresolusi sekali saat startup, sehingga sesi yang sedang berjalan mempertahankan nilai asli meskipun panggilan berhasil. Untuk mengubahnya, mulai sesi baru.
737 737
738738`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 dalam TypeScript teruskan `{ ultracode: true, effortLevel: "xhigh" }` untuk hasil yang sama, atau key [`ultracode`](/docs/id/settings-reference#ultracode) saja untuk menyalakan ultracode pada current effort level session. Nilai `ultracode` memerlukan Claude Code v2.1.203 atau lebih baru dan diterima hanya oleh `applyFlagSettings()`, bukan oleh key `effortLevel` dalam settings file. Sebelum v2.1.284, key `ultracode` saja juga menetapkan level ke `xhigh`.`effortLevel` menerima nama [tingkat effort](/docs/id/model-config#adjust-effort-level). Key ini juga menerima `"ultracode"`, yang meminta effort `xhigh` dengan [ultracode](/docs/id/workflows#let-claude-decide-with-ultracode) aktif. `applyFlagSettings()` mendeklarasikan `effortLevel` tanpa nilai tersebut, jadi di TypeScript teruskan `{ ultracode: true, effortLevel: "xhigh" }` untuk hasil yang sama, atau key [`ultracode`](/docs/id/settings-reference#ultracode) saja untuk mengaktifkan ultracode pada tingkat effort sesi saat ini. Nilai `ultracode` memerlukan Claude Code v2.1.203 atau yang lebih baru dan hanya diterima oleh `applyFlagSettings()`, bukan oleh key `effortLevel` dalam file pengaturan. Sebelum v2.1.284, key `ultracode` saja juga mengatur tingkat ke `xhigh`.
739 739
740740Values 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.Nilai ditulis ke lapisan pengaturan flag, digabungkan di atas apa yang diatur oleh opsi `settings` inline dari `query()` saat startup. Ini adalah tingkat yang sama yang disebut opsi terprogram oleh [bagian prioritas di halaman ini](#settings-precedence).
741 741
742742Successive calls shallow-merge top-level keys. Second call dengan `{ permissions: {...} }` menggantikan seluruh objek `permissions` dari prior call daripada deep-merging ke dalamnya.Panggilan berturut-turut melakukan penggabungan dangkal pada key tingkat atas. Panggilan kedua dengan `{ permissions: {...} }` menggantikan seluruh objek `permissions` dari panggilan sebelumnya alih-alih menggabungkannya secara mendalam.
743 743
744744Untuk clear key yang Anda atur dengan `applyFlagSettings()`, teruskan `null` untuk key itu. Sebagian besar keys kemudian fallback pertama ke nilai yang opsi `settings` dari `query()` atur saat startup, kemudian 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.Untuk menghapus key yang Anda atur dengan `applyFlagSettings()`, teruskan `null` untuk key tersebut. Sebagian besar key kemudian kembali pertama-tama ke nilai yang diatur oleh opsi `settings` dari `query()` saat startup, lalu ke sumber dengan prioritas lebih rendah. `model` yang dihapus direset ke [model default Claude Code](/docs/id/model-config), bahkan ketika file pengaturan mengatur `model`. Meneruskan `undefined` tidak berpengaruh karena serialisasi JSON membuangnya.
745 745
746746Tiga keys selain `model` reset session state alih-alih fallback:Tiga key selain `model` mereset status sesi alih-alih kembali ke nilai sebelumnya:
747 747
748748* `effortLevel: null` mengembalikan session ke model's default effort level, bukan ke opsi `effort` dari `query()` atau `effortLevel` dari settings file.* `effortLevel: null` mengembalikan sesi ke tingkat effort default model, bukan ke opsi `effort` dari `query()` atau `effortLevel` dari file pengaturan.
749749* `agent: null` menjalankan main thread tanpa agent, dimulai dengan next turn, daripada restore opsi `agent` dari `query()` atau `agent` dari settings file. Jika cleared agent telah menerapkan model sendiri, session kembali ke model yang diselesaikan saat startup.* `agent: null` menjalankan thread utama tanpa agent, dimulai dari giliran berikutnya, alih-alih memulihkan opsi `agent` dari `query()` atau `agent` dari file pengaturan. Jika agent yang dihapus telah menerapkan modelnya sendiri, sesi kembali ke model yang diresolusinya saat startup.
750750* `ultracode: null` mematikan ultracode, seperti `false` lakukan, daripada restore nilai `ultracode` dari settings file. Session menjaga current effort level-nya, jadi teruskan `effortLevel` dalam call yang sama untuk mengubahnya.* `ultracode: null` mematikan ultracode, seperti halnya `false`, alih-alih memulihkan nilai `ultracode` dari file pengaturan. Sesi mempertahankan tingkat effort saat ini, jadi teruskan `effortLevel` dalam panggilan yang sama untuk mengubahnya.
751 751
752752Hanya tersedia dalam streaming input mode, constraint yang sama seperti `setModel()` dan `setPermissionMode()`.Hanya tersedia dalam mode input streaming, batasan yang sama seperti `setModel()` dan `setPermissionMode()`.
753 753
754754Contoh di bawah switch active model mid-session, kemudian clear override sehingga model reset ke [Claude Code's default model](/docs/id/model-config).Contoh di bawah ini mengganti model aktif di tengah sesi, lalu menghapus override sehingga model direset ke [model default Claude Code](/docs/id/model-config).
755 755
756```typescript theme={null}756```typescript theme={null}
757import { query } from "@anthropic-ai/claude-agent-sdk";757import { query } from "@anthropic-ai/claude-agent-sdk";
758 758
759const q = query({ prompt: messageStream });759const q = query({ prompt: messageStream });
760 760
761761// Override model untuk sisa session// Override the model for the rest of the session
762await q.applyFlagSettings({ model: "claude-opus-4-6" });762await q.applyFlagSettings({ model: "claude-opus-4-6" });
763 763
764764// Kemudian: clear override; model reset ke Claude Code's default// Later: clear the override; the model resets to Claude Code's default
765await q.applyFlagSettings({ model: null });765await q.applyFlagSettings({ model: null });
766```766```
767 767
768<Note>768<Note>
769769 `applyFlagSettings()` adalah TypeScript-only. Python SDK tidak expose method yang setara. `applyFlagSettings()` hanya untuk TypeScript. Python SDK tidak menyediakan metode yang setara.
770</Note>770</Note>
771 771
772<h4 id="updatesettings">772<h4 id="updatesettings">
773 `updateSettings()`773 `updateSettings()`
774</h4>774</h4>
775 775
776776Menulis satu key yang allowlisted ke settings file pada disk, sehingga nilai persists untuk sessions kemudian yang memuat source itu. Setiap source menerima satu key, dengan string value:Menulis satu key yang ada dalam allowlist ke file pengaturan di disk, sehingga nilainya bertahan untuk sesi berikutnya yang memuat sumber tersebut. Setiap sumber menerima satu key, dengan nilai string:
777
778* **`"localSettings"`**: menerima `outputStyle` dan menggabungkannya ke dalam file pengaturan lokal proyek, `.claude/settings.local.json`. Gaya baru berlaku pada permintaan berikutnya dari sesi.
779* **`"userSettings"`**: menerima `effortLevel` dan menyimpannya sebagai [tingkat effort](/docs/id/model-config#adjust-effort-level) default untuk model sesi saat ini, di bawah [`modelSettings`](/docs/id/settings-reference#modelsettings) dalam file pengaturan pengguna Anda. Meneruskan `max` tidak menulis apa pun, karena `max` hanya berlaku untuk sesi. Sesi yang sedang berjalan tetap mempertahankan tingkat effort saat ini dalam kedua kasus, jadi panggil [`applyFlagSettings()`](#applyflagsettings) jika Anda juga ingin mengubahnya. Sumber ini memerlukan TypeScript SDK v0.3.277 atau yang lebih baru, yang membundel Claude Code v2.1.277.
780
781Panggilan ditolak ketika permintaan membawa key lain, ketika sesi berjalan melalui transport remote, dan ketika [`settingSources`](#options) sesi mengecualikan sumber yang Anda sebutkan. Menghapus key tidak didukung.
777 782
778783* **`"localSettings"`**: menerima `outputStyle` dan merge ke dalam project's local settings file, `.claude/settings.local.json`. Style baru berlaku pada session's next request.<h4 id="togglemcpserver">
779784* **`"userSettings"`**: menerima `effortLevel` dan menyimpannya sebagai default [effort level](/docs/id/model-config#adjust-effort-level) untuk session's current model, di bawah [`modelSettings`](/docs/id/settings-reference#modelsettings) dalam user settings file Anda. Meneruskan `max` menulis nothing, karena `max` adalah session-only. Running session menjaga current effort level-nya baik cara, jadi panggil [`applyFlagSettings()`](#applyflagsettings) ketika Anda juga ingin mengubah itu. Source ini memerlukan TypeScript SDK v0.3.277 atau lebih baru, yang bundle Claude Code v2.1.277. `toggleMcpServer()`
785</h4>
786
787Menonaktifkan server akan memutuskan koneksinya dan menghapus tool-nya dari sesi. Untuk server yang Anda tambahkan di tengah sesi dan untuk server in-process, hal ini bergantung pada versi Claude Code Anda:
780 788
781789Call menolak ketika request membawa key lain, ketika session berjalan atas remote transport, dan ketika session's [`settingSources`](#options) exclude source yang Anda beri nama. Menghapus key tidak didukung.* Server stdio, SSE, atau HTTP yang Anda tambahkan di tengah sesi dengan `setMcpServers()`: menghapus tool-nya memerlukan Claude Code v2.1.285 atau yang lebih baru.
790* Server in-process yang Anda buat dengan [`createSdkMcpServer()`](#createsdkmcpserver), baik Anda meneruskannya dalam `mcpServers` maupun dengan `setMcpServers()`: memutuskan koneksinya dan menghapus tool-nya memerlukan Claude Code v2.1.286 atau yang lebih baru. Menonaktifkannya juga menggagalkan panggilan tool-nya yang masih berjalan, sehingga Claude langsung menerima hasil error untuk masing-masing panggilan tersebut, tanpa menunggu handler Anda kembali.
782 791
783<h3 id="warmquery">792<h3 id="warmquery">
784 `WarmQuery`793 `WarmQuery`
785</h3>794</h3>
786 795
787796Handle 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.Handle yang dikembalikan oleh [`startup()`](#startup). Subprocess sudah dimunculkan dan diinisialisasi, sehingga memanggil `query()` pada handle ini menulis prompt langsung ke proses yang siap tanpa latensi startup.
788 797
789```typescript theme={null}798```typescript theme={null}
790interface WarmQuery extends AsyncDisposable {799interface WarmQuery extends AsyncDisposable {
799 808
800| Metode | Deskripsi |809| Metode | Deskripsi |
801| :- | :- |810| :- | :- |
802811| `query(prompt)` | Kirim prompt ke pre-warmed subprocess dan kembalikan [`Query`](#query-object). Dapat hanya dipanggil sekali per `WarmQuery` || `query(prompt)` | Mengirim prompt ke subprocess yang telah dipanaskan sebelumnya dan mengembalikan [`Query`](#query-object). Hanya dapat dipanggil sekali per `WarmQuery` |
803812| `close()` | Close subprocess tanpa mengirim prompt. Gunakan ini untuk discard warm query yang tidak lagi diperlukan || `close()` | Menutup subprocess tanpa mengirim prompt. Gunakan ini untuk membuang warm query yang tidak lagi diperlukan |
804 813
805814`WarmQuery` mengimplementasikan `AsyncDisposable`, jadi dapat digunakan dengan `await using` untuk automatic cleanup.`WarmQuery` mengimplementasikan `AsyncDisposable`, sehingga dapat digunakan dengan `await using` untuk pembersihan otomatis.
806 815
807<h3 id="spareprocess">816<h3 id="spareprocess">
808 `SpareProcess`817 `SpareProcess`
809</h3>818</h3>
810 819
811820*Alpha.* Handle yang dikembalikan oleh [`prewarm()`](#prewarm): proses Claude Code yang dimulai yang belum terikat ke session dan dapat diklaim sekali. Memerlukan TypeScript Agent SDK v0.3.282 atau lebih baru.*Alpha.* Handle yang dikembalikan oleh [`prewarm()`](#prewarm): proses Claude Code yang sudah dimulai tetapi belum terikat ke sesi dan dapat diklaim sekali. Memerlukan TypeScript Agent SDK v0.3.282 atau yang lebih baru.
812 821
813```typescript theme={null}822```typescript theme={null}
814interface SpareProcess extends AsyncDisposable {823interface SpareProcess extends AsyncDisposable {
828 837
829| Anggota | Deskripsi |838| Anggota | Deskripsi |
830| :- | :- |839| :- | :- |
831840| `claim({ prompt, options })` | Ikat spare ke session dalam `options.cwd` dan kirim pesan pertamanya. Mengembalikan [`Query`](#query-object) secara sinkron, seperti `query()` lakukan. Dapat hanya dipanggil sekali || `claim({ prompt, options })` | Mengikat proses cadangan ke sesi di `options.cwd` dan mengirim pesan pertamanya. Mengembalikan [`Query`](#query-object) secara sinkron, seperti `query()`. Hanya dapat dipanggil sekali |
832841| `claimed` | Resolves dengan working directory dan ID session sekali Claude Code menerima claim. Rejects ketika Claude Code menolak claim, ketika process exited atau ditutup terlebih dahulu, dan, dengan pesan yang dimulai dengan `option_not_applied`, ketika session berjalan tanpa `model` atau `maxThinkingTokens` yang Anda minta || `claimed` | Resolve dengan direktori kerja dan ID sesi setelah Claude Code menerima klaim. Reject ketika Claude Code menolak klaim, ketika proses keluar atau ditutup terlebih dahulu, dan, dengan pesan yang diawali `option_not_applied`, ketika sesi berjalan tanpa `model` atau `maxThinkingTokens` yang Anda minta |
833842| `exited` | Settles ketika process exits, claimed atau tidak. Ganti spare yang exits sebelum Anda claim-nya || `exited` | Selesai ketika proses keluar, baik sudah diklaim maupun belum. Ganti proses cadangan yang keluar sebelum Anda mengklaimnya |
834843| `close()` | Terminate process. Sebelum claim ini discard spare dan reject `claimed` || `close()` | Menghentikan proses. Sebelum klaim, ini membuang proses cadangan dan me-reject `claimed` |
835 844
836845`options.cwd` diperlukan. Claim juga dapat mengatur `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, overlay flag-settings dalam `settings`, `appendSystemPrompt`, `title`, `agents`, dan per-session tokens dalam `env`.`options.cwd` wajib diisi. Klaim juga dapat mengatur `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, overlay pengaturan flag dalam `settings`, `appendSystemPrompt`, `title`, `agents`, dan token per sesi dalam `env`.
837 846
838847Claude Code dapat menolak claim, misalnya untuk folder yang tidak ada atau yang project settings-nya mengatur `env`, `agent`, atau `model`. Ketika `claimed` rejects dengan pesan yang dimulai dengan `option_not_applied`, session berjalan tanpa `model` atau `maxThinkingTokens` yang Anda minta. Setelah penolakan lainnya prompt Anda belum berjalan, jadi mulai session dengan `query()` sebagai gantinya.Claude Code dapat menolak klaim, misalnya untuk folder yang tidak ada atau folder yang pengaturan proyeknya mengatur `env`, `agent`, atau `model`. Ketika `claimed` di-reject dengan pesan yang diawali `option_not_applied`, sesi berjalan tanpa `model` atau `maxThinkingTokens` yang Anda minta. Setelah penolakan lainnya, prompt Anda belum dijalankan, jadi mulai sesi dengan `query()` sebagai gantinya.
839 848
840<h3 id="sdkcontrolinitializeresponse">849<h3 id="sdkcontrolinitializeresponse">
841 `SDKControlInitializeResponse`850 `SDKControlInitializeResponse`
842</h3>851</h3>
843 852
844853Return type dari `initializationResult()`. Berisi session initialization data.Tipe kembalian dari `initializationResult()`. Berisi data inisialisasi sesi.
845 854
846```typescript theme={null}855```typescript theme={null}
847type SDKControlInitializeResponse = {856type SDKControlInitializeResponse = {
857};866};
858```867```
859 868
860869`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.`hooks_applied` melaporkan apakah Claude Code mendaftarkan `hooks` yang dibawa oleh permintaan `initialize`. SDK mengirim permintaan tersebut sekali saat sesi dimulai dan lagi pada setiap panggilan [`reinitialize()`](#query-object). Field ini memerlukan Agent SDK v0.3.238 atau yang lebih baru.
861 870
862871Claude 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:Claude Code menghilangkan field ini ketika permintaan tidak membawa hook. Ketika permintaan membawa hook, nilainya bergantung pada apakah permintaan tersebut merupakan initialize pertama sesi dan, untuk yang berulang, pada bagaimana permintaan itu mencapai sesi:
863 872
864873* `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.* `true`: Claude Code mendaftarkan hook. Initialize pertama sesi mengembalikan nilai ini. Initialize berulang yang dikirim melalui stdin CLI juga mengembalikan `true`. Dalam kasus tersebut, hook dalam permintaan baru menggantikan hook yang didaftarkan sebelumnya.
865874* `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.* `false`: Claude Code mengabaikan hook. Initialize berulang yang dikirim ke sesi remote mengembalikan nilai ini, sehingga klien kedua yang bergabung ke sesi tidak dapat menggantikan hook yang didaftarkan klien pertama.
866 875
867876Sebelum Agent SDK v0.3.238, response tidak pernah membawa field, dan Claude Code mengabaikan `hooks` pada setiap repeated initialize.Sebelum Agent SDK v0.3.238, respons tidak pernah membawa field ini, dan Claude Code mengabaikan `hooks` pada setiap initialize berulang.
868 877
869878Response 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.Respons selalu melaporkan `fast_mode_state`, dan ketika sesuatu memblokir [fast mode](/docs/id/fast-mode), `fast_mode_disabled_reason` membawa kode alasan di sampingnya, sehingga Anda dapat menjelaskan status yang diblokir alih-alih menurunkan ulang ketersediaannya. Kedua perilaku ini memerlukan Claude Code v2.1.219 atau yang 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 maknanya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.
870 879
871880Control-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.Pembungkus control-response untuk `initialize` yang berhasil juga membawa array `pending_permission_requests`. Field ini berada pada pembungkus 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 dengan yang di-stream sesi untuk permintaan izin saat berjalan.
872 881
873882Array 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.Array ini mencantumkan permintaan izin yang telah dikeluarkan oleh proses Claude Code ini dan belum diselesaikan. SDK membaca array tersebut untuk Anda dan mengirimkan setiap entri ke callback [`canUseTool`](#canusetool) Anda, pengiriman ulang yang sama yang dipicu [`reinitialize()`](#query-object) setelah celah transport. Tangani ID permintaan yang berulang secara idempoten, karena sebuah entri dapat mengulang permintaan yang sudah diterima callback sebelum koneksi terputus.
874 883
875884Array 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.Array ini 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 yang lebih baru. Versi sebelumnya dapat menghilangkan field ini, jadi jika Anda mengurai protokol wire sendiri, perlakukan field yang hilang sebagai CLI lama, bukan sebagai bukti bahwa tidak ada yang tertunda.
876 885
877<h3 id="sdkcontrolinterruptresponse">886<h3 id="sdkcontrolinterruptresponse">
878 `SDKControlInterruptResponse`887 `SDKControlInterruptResponse`
879</h3>888</h3>
880 889
881890Interrupt 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`.Tanda terima interupsi: nilai yang di-resolve oleh [`interrupt()`](#query-object) pada CLI yang mengiklankan kapabilitas `interrupt_receipt_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage). Memerlukan Claude Code v2.1.205 atau yang lebih baru. CLI yang lebih lama menjawab interupsi dengan payload sukses kosong, sehingga `interrupt()` resolve ke `undefined`.
882 891
883```typescript theme={null}892```typescript theme={null}
884type SDKControlInterruptResponse = {893type SDKControlInterruptResponse = {
887};896};
888```897```
889 898
890899`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.`still_queued` mencantumkan UUID pesan pengguna yang tertunda saat interupsi tiba: pesan yang masih dalam antrean, ditambah pesan apa pun yang telah diambil Claude Code dari antrean untuk giliran berikutnya. Setelah giliran pertama sesi dimulai, Claude Code memproses pesan yang tercantum setelah interupsi kecuali Anda membatalkannya terlebih dahulu, dan dapat menggabungkan beberapa pesan menjadi satu giliran. Jika Anda menginterupsi sebelum giliran pertama dimulai, Claude Code membatalkan giliran tersebut segera setelah dimulai, dan pesan yang tercantum dalam giliran itu tidak mendapatkan respons.
891 900
892901Gunakan 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.Gunakan tanda terima untuk memutuskan apakah perlu mengirim ulang sesuatu. Pesan tercantum yang tidak Anda batalkan masuk ke percakapan baik mendapat respons maupun tidak, sehingga mengirimnya ulang akan menyampaikannya ke Claude dua kali.
893 902
894903Interpretasikan list dengan caveats ini:Tafsirkan daftar dengan catatan berikut:
895 904
896905* Hanya messages yang di-enqueue dengan UUID yang muncul. Array kosong tidak berarti nothing else akan run.* Hanya pesan yang dimasukkan ke antrean dengan UUID yang muncul. Array kosong tidak berarti tidak ada hal lain yang akan berjalan.
897906* Hanya main-thread messages yang tercantum. Messages yang ditujukan ke subagent out of scope.* Hanya pesan thread utama yang dicantumkan. Pesan yang ditujukan ke subagent berada di luar cakupan.
898907* 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.* Daftar dapat menyertakan UUID yang tidak pernah dikirim klien Anda, seperti pemicu [tugas terjadwal](/docs/id/scheduled-tasks). Abaikan UUID yang tidak Anda kenali alih-alih memperlakukannya sebagai error.
899 908
900909Client 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.Klien yang menggerakkan protokol kontrol CLI secara langsung, alih-alih melalui `interrupt()`, dapat mengatur `cancel_queued: true` pada permintaan kontrol `interrupt`. Claude Code v2.1.219 dan yang lebih baru mengiklankan dukungan dengan kapabilitas `interrupt_cancel_queued_v1` dalam [`SDKSystemMessage.capabilities`](#sdksystemmessage); CLI yang lebih lama mengabaikan field ini dan membiarkan pesan dalam antrean berjalan seperti biasa. Interupsi semacam itu juga membatalkan setiap pesan yang seharusnya tercantum di bawah `still_queued`: tanda terima mencantumkannya di bawah `cancelled` sebagai gantinya, `still_queued` kosong, dan tidak satu pun dari pesan tersebut berjalan.
901 910
902911`cancelled` list membawa caveats yang sama seperti `still_queued`. Metode `interrupt()` tidak pernah mengirim `cancel_queued`, jadi receipts yang resolves dengan tidak membawa `cancelled`.Daftar `cancelled` memiliki catatan yang sama dengan `still_queued`. Metode `interrupt()` tidak pernah mengirim `cancel_queued`, sehingga tanda terima yang di-resolve-nya tidak membawa `cancelled`.
903 912
904913Receipt 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.Tanda terima adalah snapshot yang diambil pada saat interupsi diproses, dan pada interupsi yang bersih, tanda terima tiba sebelum [`SDKResultMessage`](#sdkresultmessage) dari giliran yang diinterupsi. Baca tanda terima alih-alih memeriksa antrean setelah hasil tersebut: loop segera memulai giliran antrean berikutnya, sehingga antrean yang Anda periksa setelah hasil sudah berubah.
905 914
906<h3 id="sdkcontrolgetcontextusageresponse">915<h3 id="sdkcontrolgetcontextusageresponse">
907 `SDKControlGetContextUsageResponse`916 `SDKControlGetContextUsageResponse`
908</h3>917</h3>
909 918
910919Return 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.Tipe kembalian dari [`getContextUsage()`](#query-object). Dengan `detail` default, ini adalah payload yang sama yang dirender Claude Code untuk perintah `/context` dalam sesi interaktif, sehingga selain jumlah token, payload ini membawa field tampilan seperti `color` dan `gridRows` yang digunakan Claude Code untuk menggambar grid penggunaan `/context`.
920
921Argumen opsional `detail` dari metode ini memilih cara Claude Code menghitung setiap kategori. Argumen `detail` memerlukan Agent SDK v0.3.257 atau yang lebih baru.
911 922
912923Argumen `detail` opsional method memilih bagaimana Claude Code menghitung setiap kategori. Dengan default, `'full'`, Claude Code menghitung setiap kategori dengan [token-counting](https://platform.claude.com/docs/id/build-with-claude/token-counting) API requests. Requests ini tidak muncul dalam message stream, jadi cost tracking yang membaca stream tidak akan melihat mereka. Pada Anthropic API, token counting tidak ditagih. 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.* **`'full'`**: default. Claude Code menghitung setiap kategori dengan permintaan API [penghitungan token](https://platform.claude.com/docs/en/build-with-claude/token-counting). Permintaan ini tidak muncul di aliran pesan, sehingga pelacakan biaya yang membaca aliran tidak akan melihatnya. Pada Anthropic API, penghitungan token tidak ditagih.
924* **`'summary'`**: teruskan `{ detail: 'summary' }` untuk mendapatkan jawaban dari penggunaan respons terakhir dan estimasi lokal sebagai gantinya. Tidak ada permintaan penghitungan token yang dikirim, dan angka per kategori bersifat perkiraan.
913 925
914926Ketika 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.Ketika Anda mengirim `/context` sebagai prompt alih-alih memanggil metode, Claude Code melampirkan payload [`SDKContextUsage`](#sdkcontextusage) ke field `context_usage` dari pesan assistant yang menyampaikan hasilnya. Field tersebut memerlukan Agent SDK v0.3.232 atau yang lebih baru.
915 927
916```typescript theme={null}928```typescript theme={null}
917type SDKControlGetContextUsageResponse = {929type SDKControlGetContextUsageResponse = {
1008};1020};
1009```1021```
1010 1022
10111023Baca token attribution dari collection fields:Baca atribusi token dari field koleksi:
1012 1024
10131025* `categories` memegang per-category totals. Setiap entry's `kind` mengklasifikasikan row dengan nilai yang sama seperti [`SDKContextUsageCategory`](#sdkcontextusagecategory). Klasifikasikan rows pada itu daripada pada display `name`. Field memerlukan Agent SDK v0.3.268 atau lebih baru.* `categories` menyimpan total per kategori. `kind` dari setiap entri mengklasifikasikan baris dengan nilai yang sama seperti [`SDKContextUsageCategory`](#sdkcontextusagecategory). Klasifikasikan baris berdasarkan field ini, bukan berdasarkan `name` tampilan. Field ini memerlukan Agent SDK v0.3.268 atau yang lebih baru.
10141026* `mcpTools` dan `agents` attribute tokens ke individual MCP tools dan subagents.* `mcpTools` dan `agents` mengatribusikan token ke masing-masing tool MCP dan subagent.
10151027* `memoryFiles` mencantumkan setiap loaded memory file dengan costnya.* `memoryFiles` mencantumkan setiap file memori yang dimuat beserta biayanya.
10161028* `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.* `skills.skillFrontmatter` mengatribusikan token daftar skill ke setiap skill yang disertakan. Jumlah per skill mengukur entri daftar setiap skill sebagaimana benar-benar dikirim Claude Code, yang dapat lebih pendek dari frontmatter lengkap skill. Bandingkan `skills.totalSkills` dengan `skills.includedSkills` untuk melihat apakah setiap skill yang ditemukan masuk ke dalam daftar.
1017 1029
10181030`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. `apiUsage` memegang usage dari latest API response, bukan running total untuk session.`totalTokens` adalah penggunaan konteks sesi saat ini, dan `maxTokens` adalah jendela yang menjadi acuan pengukuran penggunaan tersebut. Jendela tersebut adalah context window model, atau jendela auto-compaction yang lebih rendah jika berlaku. `rawMaxTokens` membawa nilai yang sama dengan `maxTokens`, dan `percentage` adalah `totalTokens` sebagai persentase yang dibulatkan dari jendela tersebut. `apiUsage` menyimpan penggunaan dari respons API terbaru, bukan total berjalan untuk sesi.
1019 1031
10201032Claude Code meninggalkan optional `deferredBuiltinTools`, `systemTools`, dan `systemPromptSections` diagnostics unset, jadi expect mereka absent bahkan meskipun type mendeklarasikan mereka.Claude Code membiarkan diagnostik opsional `deferredBuiltinTools`, `systemTools`, dan `systemPromptSections` tidak diatur, jadi perkirakan field tersebut tidak ada meskipun tipe mendeklarasikannya.
1021 1033
1022<h3 id="sdkcontrolreadfileresponse">1034<h3 id="sdkcontrolreadfileresponse">
1023 `SDKControlReadFileResponse`1035 `SDKControlReadFileResponse`
1024</h3>1036</h3>
1025 1037
10261038Return type dari [`readFile()`](#query-object).Tipe kembalian dari [`readFile()`](#query-object).
1027 1039
1028```typescript theme={null}1040```typescript theme={null}
1029type SDKControlReadFileResponse = {1041type SDKControlReadFileResponse = {
1034};1046};
1035```1047```
1036 1048
10371049`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.`contents` menyimpan teks file, atau data base64 ketika Anda meminta `encoding: 'base64'`; field `encoding` respons diatur ke `'base64'` dalam kasus tersebut. `absPath` adalah path absolut yang telah diresolusi. `truncated` diatur ketika file lebih panjang dari batas `maxBytes` dan isinya dipotong pada batas tersebut.
1038 1050
1039<h4 id="what-readfile-can-read">1051<h4 id="what-readfile-can-read">
10401052 Apa yang `readFile()` dapat baca Apa yang dapat dibaca `readFile()`
1041</h4>1053</h4>
1042 1054
10431055`readFile()` melayani set files yang lebih sempit daripada Read tool:`readFile()` melayani set file yang lebih sempit daripada tool Read:
1044 1056
10451057* Regular file di dalam salah satu session's working directories, seperti `cwd` dan `additionalDirectories`* File biasa di dalam salah satu direktori kerja sesi, seperti `cwd` dan `additionalDirectories`
10461058* Beberapa file Claude Code sendiri untuk session, seperti tool results* Beberapa file milik Claude Code sendiri untuk sesi, seperti hasil tool
1047 1059
10481060`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`.Aturan deny dan ask `Read` tetap memblokir path yang cocok, dan aturan allow `Read` yang luas tidak membuka seluruh filesystem untuk `readFile()`. Untuk hal lainnya, panggilan resolve dengan `null`.
1049 1061
1050<h3 id="sdkcontrolreloadpluginsresponse">1062<h3 id="sdkcontrolreloadpluginsresponse">
1051 `SDKControlReloadPluginsResponse`1063 `SDKControlReloadPluginsResponse`
1052</h3>1064</h3>
1053 1065
10541066Return type dari [`reloadPlugins()`](#query-object).Tipe kembalian dari [`reloadPlugins()`](#query-object).
1055 1067
1056```typescript theme={null}1068```typescript theme={null}
1057type SDKControlReloadPluginsResponse = {1069type SDKControlReloadPluginsResponse = {
1074};1086};
1075```1087```
1076 1088
10771089Collection fields mendeskripsikan session setelah call:Field koleksi menggambarkan sesi setelah panggilan:
1078 1090
10791091* `commands`, `agents`, dan `mcpServers`: session's commands, subagents, dan MCP server status, dalam shapes yang sama yang `supportedCommands()`, `supportedAgents()`, dan `mcpServerStatus()` kembalikan. `supportedAgents()` terus mengembalikan list yang ditangkap saat initialization, jadi baca `agents` di sini untuk set setelah reload* `commands`, `agents`, dan `mcpServers`: perintah, subagent, dan status server MCP sesi, dalam bentuk yang sama dengan yang dikembalikan `supportedCommands()`, `supportedAgents()`, dan `mcpServerStatus()`. `supportedAgents()` tetap mengembalikan daftar yang ditangkap saat inisialisasi, jadi baca `agents` di sini untuk set setelah pemuatan ulang
10801092* `plugins`: setiap loaded plugin dengan `name` dan install `path`-nya. `version` mengulangi apa yang plugin's manifest deklarasikan dan plugin-author-controlled, jadi validate sebelum mempercayainya. Ini dihilangkan ketika manifest tidak mendeklarasikan apa pun* `plugins`: setiap plugin yang dimuat beserta `name` dan `path` instalasinya. `version` mengulang apa yang dideklarasikan manifest plugin dan dikendalikan oleh pembuat plugin, jadi validasi sebelum mempercayainya. Field ini dihilangkan ketika manifest tidak mendeklarasikannya
10811093* `error_count`: jumlah errors dari loading plugins* `error_count`: jumlah error dari pemuatan plugin
1082 1094
10831095Teruskan `{ holdOnCacheImpact: true }` ke `reloadPlugins()` untuk hold reload yang akan invalidate conversation's prompt cache alih-alih applying-nya. Claude Code menjalankan check yang interactive `/reload-plugins` command buat sebelum itu [warns about cache cost](/docs/id/prompt-caching#enabling-or-disabling-a-plugin). Option memerlukan Agent SDK v0.3.268 atau lebih baru. Claude Code executable yang lebih lama daripada v2.1.268, seperti yang Anda point `pathToClaudeCodeExecutable` pada, mengabaikan option dan applies reload.Teruskan `{ holdOnCacheImpact: true }` ke `reloadPlugins()` untuk menahan pemuatan ulang yang akan menginvalidasi cache prompt percakapan alih-alih menerapkannya. Claude Code menjalankan pemeriksaan yang dilakukan perintah interaktif `/reload-plugins` sebelum [memperingatkan tentang biaya cache](/docs/id/prompt-caching#enabling-or-disabling-a-plugin). Opsi ini memerlukan Agent SDK v0.3.268 atau yang lebih baru. Executable Claude Code yang lebih lama dari v2.1.268, seperti yang Anda arahkan dengan `pathToClaudeCodeExecutable`, mengabaikan opsi ini dan menerapkan pemuatan ulang.
1084 1096
10851097Ketika Anda teruskan option, baca `held` untuk pelajari apa yang terjadi:Ketika Anda meneruskan opsi ini, baca `held` untuk mengetahui apa yang terjadi:
1086 1098
10871099* `true`: reload tidak diterapkan, dan collection fields mendeskripsikan session seperti masih. `cache_impact` mengatakan apa yang applying akan ubah. Untuk apply anyway, panggil `reloadPlugins()` lagi tanpa option.* `true`: pemuatan ulang tidak diterapkan, dan field koleksi menggambarkan sesi sebagaimana adanya saat ini. `cache_impact` menyatakan apa yang akan berubah jika diterapkan. Untuk tetap menerapkannya, panggil `reloadPlugins()` lagi tanpa opsi tersebut.
10881100* `false`: check menemukan tidak ada cache impact, dan reload diterapkan.* `false`: pemeriksaan tidak menemukan dampak cache, dan pemuatan ulang diterapkan.
10891101* Absent: Anda tidak teruskan option, atau Claude Code executable lebih lama daripada v2.1.268 dan applied reload.* Tidak ada: Anda tidak meneruskan opsi tersebut, atau executable Claude Code lebih lama dari v2.1.268 dan menerapkan pemuatan ulang.
1090 1102
10911103`cache_impact` present hanya bersama `held: true`. `mcp_servers_added` dan `mcp_servers_removed` menyebutkan plugin MCP servers yang reload akan register atau drop, sebagai scoped `plugin:<plugin>:<server>` names. Names adalah plugin-authored, jadi validate sebelum menunjukkan mereka. `lsp_tool_change` mengatakan apakah applying akan add atau remove LSP tool, atau `null` ketika tidak akan lakukan keduanya. Bentuk `may-` berarti check tidak bisa fully lihat pending plugin set.`cache_impact` hanya ada bersama `held: true`. `mcp_servers_added` dan `mcp_servers_removed` menyebutkan server MCP plugin yang akan didaftarkan atau dibuang oleh pemuatan ulang, sebagai nama bercakupan `plugin:<plugin>:<server>`. Nama-nama tersebut dibuat oleh pembuat plugin, jadi validasi sebelum menampilkannya. `lsp_tool_change` menyatakan apakah penerapan akan menambah atau menghapus tool LSP, atau `null` jika tidak melakukan keduanya. Bentuk `may-` berarti pemeriksaan tidak dapat sepenuhnya melihat set plugin yang tertunda.
1092 1104
1093<h3 id="sdkcontrolreloadskillsresponse">1105<h3 id="sdkcontrolreloadskillsresponse">
1094 `SDKControlReloadSkillsResponse`1106 `SDKControlReloadSkillsResponse`
1095</h3>1107</h3>
1096 1108
10971109Return type dari [`reloadSkills()`](#query-object).Tipe kembalian dari [`reloadSkills()`](#query-object).
1098 1110
1099```typescript theme={null}1111```typescript theme={null}
1100type SDKControlReloadSkillsResponse = {1112type SDKControlReloadSkillsResponse = {
1102};1114};
1103```1115```
1104 1116
11051117`skills` mencantumkan skills yang tersedia setelah reload, dalam [`SlashCommand`](#slashcommand) shape yang sama yang `supportedCommands()` kembalikan.`skills` mencantumkan skill yang tersedia setelah pemuatan ulang, dalam bentuk [`SlashCommand`](#slashcommand) yang sama dengan yang dikembalikan `supportedCommands()`.
1106 1118
1107<h3 id="sdkcontrolreloadoutputstylesresponse">1119<h3 id="sdkcontrolreloadoutputstylesresponse">
1108 `SDKControlReloadOutputStylesResponse`1120 `SDKControlReloadOutputStylesResponse`
1109</h3>1121</h3>
1110 1122
11111123Return type dari [`reloadOutputStyles()`](#query-object).Tipe kembalian dari [`reloadOutputStyles()`](#query-object).
1112 1124
1113```typescript theme={null}1125```typescript theme={null}
1114type SDKControlReloadOutputStylesResponse = {1126type SDKControlReloadOutputStylesResponse = {
1116};1128};
1117```1129```
1118 1130
11191131`available_output_styles` mencantumkan names dari built-in dan custom output styles yang tersedia setelah reload.`available_output_styles` mencantumkan nama gaya output bawaan dan kustom yang tersedia setelah pemuatan ulang.
1120 1132
1121<h3 id="sdkcontrolmcpreadresourceresponse">1133<h3 id="sdkcontrolmcpreadresourceresponse">
1122 `SDKControlMcpReadResourceResponse`1134 `SDKControlMcpReadResourceResponse`
1123</h3>1135</h3>
1124 1136
11251137Return type dari [`readMcpResource()`](#query-object), membawa MCP server's `resources/read` result. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.Tipe kembalian dari [`readMcpResource()`](#query-object), membawa hasil `resources/read` dari server MCP. Memerlukan TypeScript Agent SDK v0.3.280 atau yang lebih baru.
1126 1138
1127```typescript theme={null}1139```typescript theme={null}
1128type SDKControlMcpReadResourceResponse = {1140type SDKControlMcpReadResourceResponse = {
1136};1148};
1137```1149```
1138 1150
11391151Teruskan `readMcpResource()` server name seperti `mcpServerStatus()` laporkan dan `ui://` URI, seperti `ui.resourceUri` yang tool deklarasikan dalam [`_meta`](#mcpserverstatus)-nya. Call menolak untuk URI scheme apa pun yang lain, untuk [SDK MCP server](#createsdkmcpserver) yang aplikasi Anda host sendiri, dan untuk server yang tidak connected. Tersedia ketika init message's [`capabilities`](#sdksystemmessage) include `mcp_read_resource_v1`.Teruskan ke `readMcpResource()` nama server sebagaimana dilaporkan oleh `mcpServerStatus()` dan URI `ui://`, seperti `ui.resourceUri` yang dideklarasikan tool dalam [`_meta`](#mcpserverstatus)-nya. Panggilan ditolak untuk skema URI lain, untuk [server MCP SDK](#createsdkmcpserver) yang di-host sendiri oleh aplikasi Anda, dan untuk server yang tidak terhubung. Metode ini tersedia ketika [`capabilities`](#sdksystemmessage) pada pesan init menyertakan `mcp_read_resource_v1`.
1140 1152
11411153Setiap `contents` entry adalah satu content item seperti server kirimkan, minus any `_meta` key di bawah prefix `com.anthropic/`, yang reserved untuk Claude Code. `blob` memegang base64 data untuk binary item, dan `_meta` adalah item's sendiri `_meta`, di mana MCP Apps server menempatkan resource's `ui.csp` dan `ui.permissions`.Setiap entri `contents` adalah satu item konten sebagaimana dikirim oleh server, dikurangi key `_meta` apa pun di bawah prefiks `com.anthropic/`, yang dicadangkan untuk Claude Code. `blob` menyimpan data base64 untuk item biner, dan `_meta` adalah `_meta` milik item itu sendiri, tempat server MCP Apps meletakkan `ui.csp` dan `ui.permissions` dari resource tersebut.
1142 1154
11431155Contents adalah untrusted third-party HTML, jadi render dalam sandbox.Isinya adalah HTML pihak ketiga yang tidak tepercaya, jadi render di dalam sandbox.
1144 1156
1145<h3 id="agentdefinition">1157<h3 id="agentdefinition">
1146 `AgentDefinition`1158 `AgentDefinition`
1168};1180};
1169```1181```
1170 1182
11711183| Field | Diperlukan | Deskripsi || Field | Wajib | Deskripsi |
1172| :- | :- | :- |1184| :- | :- | :- |
11731185| `description` | Ya | Natural language description tentang kapan menggunakan agent ini || `description` | Ya | Deskripsi bahasa alami tentang kapan menggunakan agent ini |
11741186| `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 || `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi setiap [tool yang tersedia untuk subagent](/docs/id/sub-agents#available-tools). Untuk memuat Skills terlebih dahulu ke dalam konteks agent, gunakan field `skills` alih-alih mencantumkan `'Skill'` di sini |
11751187| `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 || `disallowedTools` | Tidak | Array nama tool yang secara eksplisit tidak diizinkan untuk agent ini. Pola tingkat server MCP juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap tool dari server tersebut, dan `mcp__*` menghapus setiap tool MCP dari server mana pun |
1176| `prompt` | Ya | System prompt agent |1188| `prompt` | Ya | System prompt agent |
11771189| `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) || `model` | Tidak | Override model untuk agent ini. Menerima alias seperti `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'`, atau ID model lengkap. `'inherit'` menggunakan model utama. Jika Anda menghilangkannya, Claude Code memilih model dalam [urutan model subagent](/docs/id/sub-agents#choose-a-model) |
11781190| `mcpServers` | Tidak | MCP server specifications untuk agent ini || `mcpServers` | Tidak | Spesifikasi server MCP untuk agent ini |
11791191| `skills` | Tidak | Array dari skill names untuk preload ke dalam agent context || `skills` | Tidak | Array nama skill yang dimuat terlebih dahulu ke dalam konteks agent |
11801192| `initialPrompt` | Tidak | Auto-submitted sebagai first user turn ketika agent ini berjalan sebagai main thread agent || `initialPrompt` | Tidak | Dikirim otomatis sebagai giliran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |
11811193| `maxTurns` | Tidak | Maksimal agentic turns (API round-trips) sebelum stopping || `maxTurns` | Tidak | Jumlah maksimum giliran agentic (perjalanan bolak-balik API) sebelum berhenti |
11821194| `background` | Tidak | Jalankan agent ini sebagai non-blocking background task ketika invoked || `background` | Tidak | Menjalankan agent ini sebagai tugas latar belakang yang tidak memblokir saat dipanggil |
11831195| `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 || `omitClaudeMd` | Tidak | Menjalankan agent ini tanpa file CLAUDE.md user, project, dan local ketika berjalan sebagai subagent; file kebijakan terkelola tetap dimuat. Gunakan untuk agent yang mengambil semua yang dibutuhkannya dari prompt tool Agent. Diabaikan ketika agent ini berjalan sebagai agent thread utama. Memerlukan TypeScript Agent SDK v0.3.271 atau yang lebih baru |
11841196| `memory` | Tidak | Memory source untuk agent ini: `'user'`, `'project'`, atau `'local'` || `memory` | Tidak | Sumber memori untuk agent ini: `'user'`, `'project'`, atau `'local'` |
11851197| `effort` | Tidak | Reasoning effort level untuk agent ini. Menerima named level atau integer || `effort` | Tidak | Tingkat effort penalaran untuk agent ini. Menerima tingkat bernama atau bilangan bulat |
11861198| `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) || `permissionMode` | Tidak | Mode izin untuk eksekusi tool dalam agent ini. [Aturan pewarisan subagent](/docs/id/agent-sdk/permissions#available-modes) menentukan kapan mode ini berlaku. Lihat [`PermissionMode`](#permissionmode) |
11871199| `criticalSystemReminder_EXPERIMENTAL` | Tidak | Experimental: Critical reminder ditambahkan ke system prompt || `criticalSystemReminder_EXPERIMENTAL` | Tidak | Eksperimental: Pengingat penting yang ditambahkan ke system prompt |
1188 1200
1189<h3 id="agentmcpserverspec">1201<h3 id="agentmcpserverspec">
1190 `AgentMcpServerSpec`1202 `AgentMcpServerSpec`
1191</h3>1203</h3>
1192 1204
11931205Menentukan 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.Menentukan server MCP yang tersedia untuk subagent. Dapat berupa nama server (string yang merujuk ke server dari konfigurasi `mcpServers` induk) atau record konfigurasi server inline yang memetakan nama server ke konfigurasi.
1194 1206
1195```typescript theme={null}1207```typescript theme={null}
1196type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;1208type AgentMcpServerSpec = string | Record<string, McpServerConfigForProcessTransport>;
1202 `SettingSource`1214 `SettingSource`
1203</h3>1215</h3>
1204 1216
12051217Mengontrol filesystem-based configuration sources mana yang SDK muat settings dari.Mengontrol sumber konfigurasi berbasis filesystem mana yang digunakan SDK untuk memuat pengaturan.
1206 1218
1207```typescript theme={null}1219```typescript theme={null}
1208type SettingSource = "user" | "project" | "local";1220type SettingSource = "user" | "project" | "local";
1210 1222
1211| Nilai | Deskripsi | Lokasi |1223| Nilai | Deskripsi | Lokasi |
1212| :- | :- | :- |1224| :- | :- | :- |
12131225| `'user'` | Global user settings | `~/.claude/settings.json` || `'user'` | Pengaturan pengguna global | `~/.claude/settings.json` |
12141226| `'project'` | Shared project settings (version controlled) | `.claude/settings.json` || `'project'` | Pengaturan proyek bersama (dikontrol versi) | `.claude/settings.json` |
12151227| `'local'` | Local project settings, gitignored ketika Claude Code menyimpan setting ke dalamnya | `.claude/settings.local.json` || `'local'` | Pengaturan proyek lokal, di-gitignore ketika Claude Code menyimpan pengaturan ke dalamnya | `.claude/settings.local.json` |
1216 1228
1217<h4 id="default-behavior">1229<h4 id="default-behavior">
1218 Perilaku default1230 Perilaku default
1219</h4>1231</h4>
1220 1232
12211233Ketika `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.Ketika `settingSources` dihilangkan atau `undefined`, `query()` memuat pengaturan filesystem yang sama dengan Claude Code CLI: user, project, dan local. Lihat [Apa yang tidak dikendalikan oleh settingSources](/docs/id/agent-sdk/claude-code-features#what-settingsources-does-not-control) untuk input yang dibaca terlepas dari opsi ini, dan cara menonaktifkannya.
1222 1234
1223<h4 id="why-use-settingsources">1235<h4 id="why-use-settingsources">
1224 Mengapa menggunakan settingSources1236 Mengapa menggunakan settingSources
1225</h4>1237</h4>
1226 1238
12271239**Nonaktifkan filesystem settings:****Nonaktifkan pengaturan filesystem:**
1228 1240
1229```typescript theme={null}1241```typescript theme={null}
1230import { query } from "@anthropic-ai/claude-agent-sdk";1242import { query } from "@anthropic-ai/claude-agent-sdk";
1231 1243
12321244// Jangan muat user, project, atau local settings dari disk// Do not load user, project, or local settings from disk
1233const result = query({1245const result = query({
1234 prompt: "Analyze this code",1246 prompt: "Analyze this code",
1235 options: { settingSources: [] }1247 options: { settingSources: [] }
1236});1248});
1237```1249```
1238 1250
12391251**Muat hanya specific setting sources:****Muat hanya sumber pengaturan tertentu:**
1240 1252
1241```typescript theme={null}1253```typescript theme={null}
1242import { query } from "@anthropic-ai/claude-agent-sdk";1254import { query } from "@anthropic-ai/claude-agent-sdk";
1243 1255
12441256// Muat hanya project settings, abaikan user dan local// Load only project settings, ignore user and local
1245const result = query({1257const result = query({
1246 prompt: "Run CI checks",1258 prompt: "Run CI checks",
1247 options: {1259 options: {
12481260 settingSources: ["project"] // Hanya .claude/settings.json settingSources: ["project"] // Only .claude/settings.json
1249 }1261 }
1250});1262});
1251```1263```
1252 1264
12531265Untuk 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.Untuk memuat instruksi proyek CLAUDE.md, sertakan `"project"` dalam `settingSources`. Lihat [Memodifikasi system prompt](/docs/id/agent-sdk/modifying-system-prompts#claude-md-files-for-project-level-instructions) untuk cara pemuatan CLAUDE.md berinteraksi dengan opsi system prompt.
1254 1266
1255<h4 id="settings-precedence">1267<h4 id="settings-precedence">
12561268 Settings precedence Prioritas pengaturan
1257</h4>1269</h4>
1258 1270
12591271Ketika multiple sources dimuat, settings dimerge dengan precedence ini (tertinggi ke terendah):Ketika beberapa sumber dimuat, pengaturan digabungkan dengan urutan prioritas berikut (tertinggi ke terendah):
1260 1272
126112731. Local settings (`.claude/settings.local.json`)1. Pengaturan local (`.claude/settings.local.json`)
126212742. Project settings (`.claude/settings.json`)2. Pengaturan project (`.claude/settings.json`)
126312753. User settings (`~/.claude/settings.json`)3. Pengaturan user (`~/.claude/settings.json`)
1264 1276
12651277Programmatic options seperti `agents`, `allowedTools`, dan `settings` override user, project, dan local filesystem settings. Managed policy settings mengambil precedence atas programmatic options.Opsi programatik seperti `agents`, `allowedTools`, dan `settings` menimpa pengaturan filesystem user, project, dan local. Pengaturan kebijakan terkelola memiliki prioritas lebih tinggi daripada opsi programatik.
1266 1278
1267<h3 id="permissionmode">1279<h3 id="permissionmode">
1268 `PermissionMode`1280 `PermissionMode`
1270 1282
1271```typescript theme={null}1283```typescript theme={null}
1272type PermissionMode =1284type PermissionMode =
12731285 | "default" // Perilaku permission standar | "default" // Standard permission behavior
1274 | "acceptEdits" // Auto-accept file edits1286 | "acceptEdits" // Auto-accept file edits
12751287 | "bypassPermissions" // Bypass permission checks; explicit ask rules masih prompt | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt
12761288 | "plan" // Planning mode - explore tanpa editing | "plan" // Planning mode - explore without editing
12771289 | "dontAsk" // Jangan prompt untuk permissions, deny jika tidak pre-approved | "dontAsk" // Don't prompt for permissions, deny if not pre-approved
12781290 | "auto"; // Model classifier meninjau actions seperti shell commands dan network requests | "auto"; // A model classifier reviews actions such as shell commands and network requests
1279```1291```
1280 1292
1281<h3 id="canusetool">1293<h3 id="canusetool">
1282 `CanUseTool`1294 `CanUseTool`
1283</h3>1295</h3>
1284 1296
12851297Custom permission function type untuk mengontrol tool usage.Tipe fungsi izin kustom untuk mengendalikan penggunaan tool.
1286 1298
12871299Fungsi 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.Fungsi ini adalah pengganti SDK untuk dialog izin interaktif: fungsi ini hanya dipanggil ketika [alur evaluasi izin](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) berujung pada permintaan izin. Panggilan tool yang sudah disetujui oleh entri `allowedTools`, aturan allow di pengaturan, atau mode izin, seperti `acceptEdits` atau `bypassPermissions`, tidak pernah memanggilnya. Untuk menyaring setiap panggilan tool, gunakan [hook `PreToolUse`](/docs/id/agent-sdk/hooks) sebagai gantinya.
1288 1300
12891301Sebuah 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.Aturan allow tidak menyetujui sebelumnya [tindakan yang tidak disetujui otomatis oleh mode mana pun](/docs/id/permission-modes#actions-no-mode-auto-approves); lihat [Cara izin dievaluasi](/docs/id/agent-sdk/permissions#how-permissions-are-evaluated) untuk mengetahui tindakan mana yang mencapai callback dan apa yang terjadi dalam mode `dontAsk` dan `auto`.
1290 1302
1291```typescript theme={null}1303```typescript theme={null}
1292type CanUseTool = (1304type CanUseTool = (
1307) => Promise<PermissionResult | null>;1319) => Promise<PermissionResult | null>;
1308```1320```
1309 1321
13101322| Opsi | Jenis | Deskripsi || Opsi | Tipe | Deskripsi |
1311| :- | :- | :- |1323| :- | :- | :- |
13121324| `signal` | `AbortSignal` | Signaled jika operasi harus dibatalkan || `signal` | `AbortSignal` | Diberi sinyal jika operasi harus dibatalkan |
13131325| `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. || `suggestions` | [`PermissionUpdate`](#permissionupdate)`[]` | Pembaruan izin yang disarankan agar pengguna tidak diminta lagi untuk tool ini. Permintaan izin Bash menyertakan saran dengan [tujuan](#permissionupdatedestination) `localSettings`, sehingga mengembalikannya dalam `updatedPermissions` akan menulis aturan ke `.claude/settings.local.json` dan bertahan di seluruh sesi. |
13141326| `blockedPath` | `string` | File path yang triggered permission request, jika applicable || `blockedPath` | `string` | Path file yang memicu permintaan izin, jika ada |
13151327| `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 || `mcpServer` | `{ name: string; source: string }` | Untuk tool `mcp__*`, server MCP yang menyediakannya dan asal definisi server tersebut, dengan field dari [`McpServerProvenance`](#mcpserverprovenance). Tidak ada untuk tool lain. Memerlukan Agent SDK v0.3.274 atau yang lebih baru |
13161328| `decisionReason` | `string` | Menjelaskan mengapa permission request ini triggered || `decisionReason` | `string` | Menjelaskan mengapa permintaan izin ini dipicu |
13171329| `defaultToNo` | `boolean` | Ketika `true`, single stray keystroke harus tidak approve request ini: open prompt Anda pada decline option-nya, jangan pre-select approve, dan offer tidak ada one-key approve shortcut. Memerlukan Agent SDK v0.3.268 atau lebih baru || `defaultToNo` | `boolean` | Ketika `true`, satu penekanan tombol yang tidak disengaja tidak boleh menyetujui permintaan ini: buka dialog Anda pada opsi tolak, jangan memilih setujui secara default, dan jangan tawarkan pintasan persetujuan satu tombol. Memerlukan Agent SDK v0.3.268 atau yang lebih baru |
13181330| `suppressAlwaysAllowRule` | `boolean` | Ketika `true`, jangan offer persistent always-allow choice untuk request ini, karena rule yang akan ditulis grants lebih dari request's sendiri action. Memerlukan Agent SDK v0.3.268 atau lebih baru || `suppressAlwaysAllowRule` | `boolean` | Ketika `true`, jangan tawarkan pilihan selalu-izinkan yang persisten untuk permintaan ini, karena aturan yang akan ditulisnya memberikan lebih dari tindakan permintaan itu sendiri. Memerlukan Agent SDK v0.3.268 atau yang lebih baru |
13191331| `toolUseID` | `string` | Unique identifier untuk specific tool call ini dalam assistant message || `toolUseID` | `string` | Pengidentifikasi unik untuk panggilan tool spesifik ini dalam pesan asisten |
13201332| `agentID` | `string` | Jika running dalam sub-agent, sub-agent's ID || `agentID` | `string` | Jika berjalan di dalam sub-agent, ID sub-agent tersebut |
13211333| `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 || `requestId` | `string` | `request_id` dari envelope `control_request`. `control_response` yang dikirim aplikasi Anda di luar SDK, seperti HTTP POST yang ditandatangani, harus mengembalikan nilai ini agar proses Claude Code dapat mencocokkan balasan dengan permintaannya |
1322 1334
13231335Callback 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.Callback biasanya menyelesaikan permintaan dengan mengembalikan [`PermissionResult`](#permissionresult), yang ditulis kembali oleh SDK melalui transportnya sebagai `control_response`. Kembalikan `null` hanya ketika aplikasi Anda telah mengirim `control_response` untuk permintaan ini melalui channel-nya sendiri, dengan mengembalikan `requestId`; SDK kemudian tidak menulis respons ke transportnya. Mengembalikan `null` dalam kasus lain membuat panggilan tool terblokir tanpa batas waktu, karena tidak ada `control_response` yang pernah dikirim dan permintaan izin tidak memiliki timeout.
1324 1336
13251337Opsi `requestId` dan nilai return `null` memerlukan Claude Code v2.1.199 atau lebih baru.Opsi `requestId` dan nilai kembalian `null` memerlukan Claude Code v2.1.199 atau yang lebih baru.
1326 1338
1327<h3 id="permissionresult">1339<h3 id="permissionresult">
1328 `PermissionResult`1340 `PermissionResult`
1329</h3>1341</h3>
1330 1342
13311343Hasil dari permission check.Hasil pemeriksaan izin.
1332 1344
1333```typescript theme={null}1345```typescript theme={null}
1334type PermissionResult =1346type PermissionResult =
1350 `ToolConfig`1362 `ToolConfig`
1351</h3>1363</h3>
1352 1364
13531365Konfigurasi untuk perilaku built-in tool.Konfigurasi untuk perilaku tool bawaan.
1354 1366
1355```typescript theme={null}1367```typescript theme={null}
1356type ToolConfig = {1368type ToolConfig = {
1360};1372};
1361```1373```
1362 1374
13631375| Field | Jenis | Deskripsi || Field | Tipe | Deskripsi |
1364| :- | :- | :- |1376| :- | :- | :- |
13651377| `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 || `askUserQuestion.previewFormat` | `'markdown' \| 'html'` | Mengaktifkan field `preview` pada opsi [`AskUserQuestion`](/docs/id/agent-sdk/user-input#question-format) dan menetapkan format kontennya. Jika tidak diatur, Claude tidak menghasilkan pratinjau |
1366 1378
1367<h3 id="mcpserverconfig">1379<h3 id="mcpserverconfig">
1368 `McpServerConfig`1380 `McpServerConfig`
1369</h3>1381</h3>
1370 1382
13711383Konfigurasi untuk MCP servers.Konfigurasi untuk server MCP.
1372 1384
1373```typescript theme={null}1385```typescript theme={null}
1374type McpServerConfig =1386type McpServerConfig =
1444 `SdkPluginConfig`1456 `SdkPluginConfig`
1445</h3>1457</h3>
1446 1458
14471459Konfigurasi untuk memuat plugins dalam SDK.Konfigurasi untuk memuat plugin di SDK.
1448 1460
1449```typescript theme={null}1461```typescript theme={null}
1450type SdkPluginConfig = {1462type SdkPluginConfig = {
1454};1466};
1455```1467```
1456 1468
14571469| Field | Jenis | Deskripsi || Field | Tipe | Deskripsi |
1458| :- | :- | :- |1470| :- | :- | :- |
14591471| `type` | `'local'` | Harus `'local'` (hanya local plugins yang saat ini didukung) || `type` | `'local'` | Harus `'local'` (saat ini hanya plugin lokal yang didukung) |
14601472| `path` | `string` | Absolute atau relative path ke plugin directory || `path` | `string` | Path absolut atau relatif ke direktori plugin |
14611473| `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. || `skipMcpDiscovery` | `boolean` | Ketika `true`, SDK memuat skill, hook, agent, dan perintah dari plugin ini tetapi tidak membaca `.mcp.json` atau `mcpServers` di manifesnya. Atur ini ketika aplikasi Anda mengelola koneksi MCP plugin tersebut. |
1462 1474
1463**Contoh:**1475**Contoh:**
1464 1476
1469];1481];
1470```1482```
1471 1483
14721484Untuk informasi lengkap tentang membuat dan menggunakan plugins, lihat [Plugins](/docs/id/agent-sdk/plugins).Untuk informasi lengkap tentang membuat dan menggunakan plugin, lihat [Plugin](/docs/id/agent-sdk/plugins).
1473 1485
1474<h2 id="message-types">1486<h2 id="message-types">
1475 Jenis Pesan1487 Jenis Pesan
1572 type: "user";1584 type: "user";
1573 uuid?: UUID;1585 uuid?: UUID;
1574 session_id?: string;1586 session_id?: string;
15751587 message: MessageParam; // Dari Anthropic SDK message: MessageParam; // From Anthropic SDK
1576 pasted_content?: MessageParam["content"][];1588 pasted_content?: MessageParam["content"][];
1577 parent_tool_use_id: string | null;1589 parent_tool_use_id: string | null;
1578 isSynthetic?: boolean;1590 isSynthetic?: boolean;
1579 shouldQuery?: boolean;1591 shouldQuery?: boolean;
1580 client_composed?: true;1592 client_composed?: true;
1581 tool_use_result?: unknown;1593 tool_use_result?: unknown;
1594 priority?: "now" | "next" | "later";
1582 origin?: SDKMessageOrigin;1595 origin?: SDKMessageOrigin;
1583 inline_pastes?: string[];1596 inline_pastes?: string[];
1584};1597};
1586 1599
1587Atur `pasted_content` untuk mengirim konten yang pengguna tempel ke UI prompt Anda daripada ketik, satu entri per tempel, masing-masing string atau array blok konten. Claude Code menambahkan teks setiap entri setelah teks yang diketik, secara berurutan, dan dapat membungkus setiap tempel dalam tag `<pasted_content>`. Blok selain teks diabaikan, jadi kirim gambar dan dokumen dalam `message.content`. Memerlukan Agent SDK v0.3.277 atau lebih baru.1600Atur `pasted_content` untuk mengirim konten yang pengguna tempel ke UI prompt Anda daripada ketik, satu entri per tempel, masing-masing string atau array blok konten. Claude Code menambahkan teks setiap entri setelah teks yang diketik, secara berurutan, dan dapat membungkus setiap tempel dalam tag `<pasted_content>`. Blok selain teks diabaikan, jadi kirim gambar dan dokumen dalam `message.content`. Memerlukan Agent SDK v0.3.277 atau lebih baru.
1588 1601
15891602Atur `shouldQuery` atau `client_composed` untuk mengubah cara Claude Code menangani pesan yang Anda kirim:Tetapkan `inline_pastes` untuk memberi tahu Claude Code bagian mana dari `message.content` yang ditempelkan pengguna alih-alih diketik, satu string per tempelan. Teks prompt tetap berada di tempat pengguna meletakkannya. Claude Code dapat membungkus setiap tempelan yang tercantum dalam tag `<pasted_content>` di tempatnya berada, sehingga Claude dapat membedakan materi yang ditempelkan dari kata-kata pengguna sendiri. Hanya tempelan di blok teks terakhir prompt yang dibungkus. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.
1603
1604Tetapkan `shouldQuery`, `client_composed`, atau `priority` untuk mengubah cara Claude Code menangani pesan yang Anda kirim:
1590 1605
1591* `shouldQuery`: atur 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 perintah yang Anda jalankan di luar pita, tanpa menghabiskan panggilan model.1606* `shouldQuery`: atur 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 perintah yang Anda jalankan di luar pita, tanpa menghabiskan panggilan model.
1592* `client_composed`: atur ke `true` untuk membuat Claude Code mengirimkan teks pesan seperti yang ditulis. Claude Code kemudian tidak memperluas penyebutan `@path` atau [`@server:resource`](/docs/id/mcp#use-mcp-resources), dan tidak menjalankan teks yang dimulai dengan `/` sebagai perintah. Sementara opsi [`verbatimPrompts`](#options) aktif, SDK menetapkan bidang pada setiap pesan. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru dan Claude Code v2.1.248 atau lebih baru.1607* `client_composed`: atur ke `true` untuk membuat Claude Code mengirimkan teks pesan seperti yang ditulis. Claude Code kemudian tidak memperluas penyebutan `@path` atau [`@server:resource`](/docs/id/mcp#use-mcp-resources), dan tidak menjalankan teks yang dimulai dengan `/` sebagai perintah. Sementara opsi [`verbatimPrompts`](#options) aktif, SDK menetapkan bidang pada setiap pesan. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru dan Claude Code v2.1.248 atau lebih baru.
1608* `priority`: mengontrol kapan pesan yang Anda kirim selama giliran yang sedang berjalan mencapai Claude:
1609 * `'next'`, atau tanpa field `priority`: Claude membaca pesan dalam giliran yang sama, segera setelah panggilan tool yang sedang dijalankannya selesai. Jika giliran berakhir lebih dulu, pesan tersebut memulai giliran berikutnya.
1610 * `'later'`: Claude Code menahan pesan hingga giliran berakhir dan mengirimkannya sebagai giliran baru.
1611 * `'now'` dengan [`origin: { kind: "human" }`](#sdkmessageorigin): pada Claude Code v2.1.286 atau lebih baru, pekerjaan yang dapat berlanjut di latar belakang dipindahkan ke sana, dan Claude membaca pesan dalam giliran yang sama. Pekerjaan yang dapat dipindahkan mencakup perintah shell, subagent, dan panggilan tool MCP. Pada v2.1.287 atau lebih baru, ini juga mencakup panggilan WebFetch dan WebSearch. Ketika Claude hanya sedang menulis respons, atau pekerjaan yang dijalankannya tidak dapat dipindahkan, Claude Code menginterupsi giliran sebagai gantinya dan Claude membaca pesan berikutnya.
1612 * `'now'` tanpa origin tersebut: Claude Code menginterupsi giliran dan Claude membaca pesan berikutnya.
1593 1613
15941614Pada 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 bidang diketik `unknown`; bentuk bawaan tercantum di bawah [Jenis Output Tool](#tool-output-types).Pesan ini, yang dikirim saat giliran sedang berjalan, meminta Claude mengubah arah tanpa kehilangan perintah shell yang masih berjalan:
1595 1615
15961616Untuk tool `Agent`, `tool_use_result` adalah [`AgentOutput`](#agent-2). Render dari objek ini daripada mengurai teks `tool_result`. `content` pada hasil `completed` menyimpan laporan subagent, atau, untuk subagent yang laporannya melewati panggilan tool `SubagentHandback`, catatan singkat tentang penyerahan itu sebagai pengganti laporan. Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) pada Claude Code v2.1.271 atau lebih baru, setiap subagent yang menghasilkan hasil `completed` melapor dengan cara itu kecuali jika ia adalah [fork](/docs/id/sub-agents#fork-the-current-conversation), dan Claude menerima laporan sebagai pesan terpisah dari subagent.```typescript theme={null}
1617const message: SDKUserMessage = {
1618 type: "user",
1619 message: { role: "user", content: "Skip the integration tests and summarize what you have so far" },
1620 parent_tool_use_id: null,
1621 priority: "now",
1622 origin: { kind: "human" },
1623};
1624```
1597 1625
15981626Untuk tool 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 subagent, 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.Pada pesan yang membawa blok `tool_result`, `tool_use_result` adalah objek output terstruktur dari tool, bukan teks yang dikirim ke model. Bentuknya bergantung pada tool yang disebutkan oleh blok `tool_use` yang sesuai, sehingga field ini bertipe `unknown`; bentuk bawaan tercantum di [Tool Output Types](#tool-output-types). Hasil-hasil berikut memerlukan penanganan di luar bentuk yang tercantum:
1599 1627
16001628Atur `inline_pastes` untuk memberi tahu Claude Code bagian mana dari `message.content` yang pengguna tempel daripada ketik, satu string per tempel. Teks prompt tetap di tempat pengguna meletakkannya. Claude Code dapat membungkus setiap tempel yang tercantum dalam tag `<pasted_content>` di tempatnya berada, jadi Claude dapat membedakan materi yang ditempel dari kata-kata pengguna sendiri. Hanya tempel dalam blok teks terakhir prompt yang dibungkus. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.* Tool `Agent`: `tool_use_result` adalah [`AgentOutput`](#agent-2). Render dari objek ini alih-alih mengurai teks `tool_result`. `content` dari hasil `completed` berisi laporan subagent, atau, untuk subagent yang laporannya melalui panggilan tool `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai pengganti laporan. Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) pada Claude Code v2.1.271 atau lebih baru, setiap subagent yang menghasilkan hasil `completed` melapor dengan cara tersebut kecuali jika merupakan [fork](/docs/id/sub-agents#fork-the-current-conversation), dan Claude menerima laporan sebagai pesan terpisah dari subagent.
1629* Panggilan WebFetch atau WebSearch yang dipindahkan Claude Code ke latar belakang untuk mengirimkan pesan `'now'`: pesan pengguna yang membawa `tool_result` dari panggilan tersebut memiliki `tool_use_result` yang ditetapkan ke `{ detachedToolCall: true }`. Panggilan masih berjalan, dan Claude menerima hasilnya setelah selesai. Tidak ada `tool_result` kedua untuk `tool_use_id` tersebut yang menyusul, jadi jika aplikasi Anda menggambar satu baris untuk setiap panggilan tool, tandai baris ini sebagai dipindahkan ke latar belakang ketika pesan ini tiba. Memerlukan Claude Code v2.1.287 atau lebih baru.
1630* Tool MCP yang hasilnya berisi blok `resource_link`: `tool_use_result` adalah objek dengan array `resourceLinks` berisi entri [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude menerima setiap tautan sebagai baris teks di blok `tool_result`, jadi baca `resourceLinks` untuk merender file yang dikembalikan server alih-alih mengurai teks tersebut. Claude Code menghilangkan `resourceLinks` ketika hasil tidak memiliki tautan dan pada hasil dari subagent, menyimpan paling banyak 50 tautan per hasil, dan berhenti menambahkan tautan setelah array mencapai 64 KiB JSON terserialisasi. `resourceLinks` memerlukan Agent SDK v0.3.257 atau lebih baru.
1631* Tool MCP yang mengembalikan [`structuredContent`](#calltoolresult): `tool_use_result` adalah objek yang anggota `structuredContent`-nya berisi apa yang dikirim server dan anggota `content`-nya berisi nilai [`McpOutput`](#mcpoutput). Hasil dari subagent tidak membawa `structuredContent`.
1632* Tool MCP yang `structuredContent`-nya terserialisasi menjadi lebih dari 1.048.576 karakter JSON: Claude Code tidak menyertakan `structuredContent` di `tool_use_result` dan menetapkan `structuredContentOmitted: true` sebagai gantinya, sehingga aplikasi Anda dapat membedakan objek yang dibuang dari tool yang tidak mengirimkannya sama sekali. Anggota lainnya, seperti `content` dan `resourceLinks`, tetap ada, dan apa yang diterima Claude tidak berubah. Tool dari [server SDK in-process](/docs/id/agent-sdk/custom-tools) dan tool yang entri `tools/list`-nya mendeklarasikan [resource MCP Apps `_meta.ui`](#mcpserverstatus) dikecualikan dan mengirimkan objek secara utuh. Claude Code v2.1.287 atau lebih baru menerapkan batas ini.
1601 1633
1602<h3 id="sdkusermessagereplay">1634<h3 id="sdkusermessagereplay">
1603 `SDKUserMessageReplay`1635 `SDKUserMessageReplay`
1652 first_content_frame_ms?: number;1684 first_content_frame_ms?: number;
1653 first_stream_post_ms?: number;1685 first_stream_post_ms?: number;
1654 first_stream_post_ack_ms?: number;1686 first_stream_post_ack_ms?: number;
1687 first_stream_post_queue_wait_ms?: number;
1688 first_stream_post_queued_behind?: "durable_post" | "ephemeral_post" | "retry_backoff" | "hold" | "none";
1655 first_stream_post_wall_ms?: number;1689 first_stream_post_wall_ms?: number;
1690 first_text_post_ms?: number;
1691 first_text_post_queue_wait_ms?: number;
1692 first_text_post_queued_behind?: "durable_post" | "ephemeral_post" | "retry_backoff" | "hold" | "none";
1693 first_text_post_wall_ms?: number;
1656 total_cost_usd: number;1694 total_cost_usd: number;
1657 usage: NonNullableUsage;1695 usage: NonNullableUsage;
1658 modelUsage: { [modelName: string]: ModelUsage };1696 modelUsage: { [modelName: string]: ModelUsage };
2036Acara aliran yang dipancarkan ketika sistem izin menolak panggilan tool tanpa permintaan izin interaktif. Gunakan untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil tool `is_error` yang mengikuti. Penolakan mana yang dilaporkan tergantung pada bagaimana run menangani permintaan izin:2074Acara aliran yang dipancarkan ketika sistem izin menolak panggilan tool tanpa permintaan izin interaktif. Gunakan untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil tool `is_error` yang mengikuti. Penolakan mana yang dilaporkan tergantung pada bagaimana run menangani permintaan izin:
2037 2075
2038* **Dengan callback [`canUseTool`](#canusetool)** dan [`permissionPrompts: 'host'`](#options) default: permintaan izin pergi ke callback Anda, dan acara ini melaporkan penolakan yang Claude Code putuskan sendiri tanpa memanggilnya.2076* **Dengan callback [`canUseTool`](#canusetool)** dan [`permissionPrompts: 'host'`](#options) default: permintaan izin pergi ke callback Anda, dan acara ini melaporkan penolakan yang Claude Code putuskan sendiri tanpa memanggilnya.
20392077* **Tanpa keduanya**: run `-p` polos, atau `query()` yang tidak menetapkan `canUseTool` maupun `permissionPromptToolName`, menolak panggilan tool apa pun yang akan memunculkan permintaan izin, dan acara ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Sebelum v2.1.223, Claude Code tidak memancarkan acara ini dalam run tanpa callback.* **Tanpa keduanya**: run `-p` polos, atau `query()` yang tidak menetapkan `canUseTool` maupun `permissionPromptToolName`, menolak setiap panggilan tool yang akan memicu permintaan izin kecuali [hook `PermissionRequest`](/docs/id/hooks-guide#limitations) mengizinkannya, dan event ini melaporkan penolakan tersebut serta penolakan yang diputuskan Claude Code sendiri. Sebelum v2.1.223, Claude Code tidak mengeluarkan event ini dalam run tanpa callback.
2040* **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 acara ini sama sekali, bahkan untuk penolakan aturan yang diputuskannya sendiri.2078* **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 acara ini sama sekali, bahkan untuk penolakan aturan yang diputuskannya sendiri.
2041* **Dengan [`permissionPrompts: 'none'`](#options)**: Claude Code menolak panggilan yang akan memunculkan permintaan izin, bahkan ketika `canUseTool` atau tool 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.2079* **Dengan [`permissionPrompts: 'none'`](#options)**: Claude Code menolak panggilan yang akan memunculkan permintaan izin, bahkan ketika `canUseTool` atau tool 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.
2042 2080
4963 };5001 };
4964```5002```
4965 5003
49665004Hasil tool MCP dikembalikan sebagai string atau array blok konten, tergantung pada server. Cabang objek polos trailing dalam tipe yang dieksport adalah artefak pembuatan skema: SDK tidak mengembalikan objek telanjang, karena output terstruktur server diserialisasi ke string JSON sebelum dikembalikan. Pada runtime nilainya juga dapat `undefined`, meskipun tipe yang dieksport tidak memodelkan ini.Hasil tool MCP dikembalikan sebagai string atau array blok konten, tergantung pada server. Cabang objek polos trailing dalam tipe yang dieksport adalah artefak pembuatan skema. Untuk hasil yang juga membawa `structuredContent` atau tautan sumber daya, lihat [`tool_use_result`](#sdkusermessage), yang menyimpan nilai ini dalam anggota `content`-nya. Pada runtime nilainya juga dapat `undefined`, meskipun tipe yang dieksport tidak memodelkan ini.
4967 5005
4968<h2 id="permission-types">5006<h2 id="permission-types">
4969 Tipe Izin5007 Tipe Izin