SpyBara
Go Premium

Documentation 2026-10-02 22:59 UTC to 2026-10-03 01:57 UTC

13 files changed +349 −293. View all changes and history on the product overview
2026
Sat 3 02:59 Fri 2 22:59 Thu 1 23:59
Details

527```527```

528 528 

529<h2 id="types">529<h2 id="types">

530 Jenis530 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 

539| Properti | Jenis | Default | Deskripsi |539| Properti | Tipe | Default | Deskripsi |

540| :- | :- | :- | :- |540| :- | :- | :- | :- |

541| `abortController` | `AbortController` | `new AbortController()` | Pengontrol untuk membatalkan operasi |541| `abortController` | `AbortController` | `new AbortController()` | Controller untuk membatalkan operasi |

542| `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) |542| `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 |

544| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Tentukan subagents secara terprogram |544| `agents` | `Record<string, [`AgentDefinition`](#agentdefinition)>` | `undefined` | Mendefinisikan subagent secara terprogram |

545| `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 |545| `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 |

546| `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'` |546| `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'` |

547| `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) |547| `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) |

548| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Aktifkan fitur beta |548| `betas` | [`SdkBeta`](#sdkbeta)`[]` | `[]` | Mengaktifkan fitur beta |

549| `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 |549| `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 |

550| `continue` | `boolean` | `false` | Lanjutkan percakapan terbaru |550| `continue` | `boolean` | `false` | Melanjutkan percakapan terbaru |

551| `cwd` | `string` | `process.cwd()` | Direktori kerja saat ini |551| `cwd` | `string` | `process.cwd()` | Direktori kerja saat ini |

552| `debug` | `boolean` | `false` | Aktifkan mode debug untuk proses Claude Code |552| `debug` | `boolean` | `false` | Mengaktifkan mode debug untuk proses Claude Code |

553| `debugFile` | `string` | `undefined` | Tulis debug logs ke path file tertentu. Secara implisit mengaktifkan mode debug |553| `debugFile` | `string` | `undefined` | Menulis log debug ke path file tertentu. Secara implisit mengaktifkan mode debug |

554| `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) |554| `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) |

555| `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) |555| `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) |

556| `enableFileCheckpointing` | `boolean` | `false` | Aktifkan file change tracking untuk rewinding. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |556| `enableFileCheckpointing` | `boolean` | `false` | Mengaktifkan pelacakan perubahan file untuk rewind. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |

557| `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 |557| `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 |

558| `executable` | `'bun' \| 'deno' \| 'node'` | Auto-detected | JavaScript runtime untuk digunakan |558| `executable` | `'bun' \| 'deno' \| 'node'` | Terdeteksi otomatis | Runtime JavaScript yang digunakan |

559| `executableArgs` | `string[]` | `[]` | Argumen untuk diteruskan ke executable |559| `executableArgs` | `string[]` | `[]` | Argumen yang diteruskan ke executable |

560| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumen tambahan |560| `extraArgs` | `Record<string, string \| null>` | `{}` | Argumen tambahan |

561| `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) |561| `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) |

562| `forkSession` | `boolean` | `false` | Ketika melanjutkan dengan `resume`, fork ke session ID baru alih-alih melanjutkan session asli |562| `forkSession` | `boolean` | `false` | Saat melanjutkan dengan `resume`, lakukan fork ke ID sesi baru alih-alih melanjutkan sesi asli |

563| `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 |563| `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 |

564| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Hook callbacks untuk acara |564| `hooks` | `Partial<Record<`[`HookEvent`](#hookevent)`, `[`HookCallbackMatcher`](#hookcallbackmatcher)`[]>>` | `{}` | Callback hook untuk event |

565| `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 |565| `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 |

566| `includePartialMessages` | `boolean` | `false` | Sertakan partial message events |566| `includePartialMessages` | `boolean` | `false` | Menyertakan event pesan parsial |

567| `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 |567| `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 |

568| `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 |568| `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 |

569| `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) |569| `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) |

570| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimal untuk proses thinking |570| `maxThinkingTokens` | `number` | `undefined` | *Deprecated:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses thinking |

571| `maxTurns` | `number` | `undefined` | Maksimal agentic turns (tool-use round trips) |571| `maxTurns` | `number` | `undefined` | Giliran agentic maksimum (perjalanan bolak-balik penggunaan tool) |

572| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi MCP server |572| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi server MCP |

573| `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) |573| `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) |

574| `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 |574| `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 |

575| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Tentukan format output untuk hasil agent. Lihat [Structured outputs](/docs/id/agent-sdk/structured-outputs) untuk detail |575| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | Mendefinisikan format output untuk hasil agent. Lihat [Structured outputs](/docs/id/agent-sdk/structured-outputs) untuk detailnya |

576| `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) |576| `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) |

577| `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 |577| `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 |

578| `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 |578| `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 |

579| `permissionPromptToolName` | `string` | `undefined` | Nama MCP tool untuk permission prompts |579| `permissionPromptToolName` | `string` | `undefined` | Nama tool MCP untuk permintaan izin |

580| `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 |580| `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 |

581| `persistSession` | `boolean` | `true` | Ketika `false`, menonaktifkan session persistence ke disk. Sessions tidak dapat dilanjutkan kemudian |581| `persistSession` | `boolean` | `true` | Jika `false`, menonaktifkan persistensi sesi ke disk. Sesi tidak dapat dilanjutkan nanti |

582| `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 |582| `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 |

583| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Muat custom plugins dari local paths. Lihat [Plugins](/docs/id/agent-sdk/plugins) untuk detail |583| `plugins` | [`SdkPluginConfig`](#sdkpluginconfig)`[]` | `[]` | Memuat plugin kustom dari path lokal. Lihat [Plugin](/docs/id/agent-sdk/plugins) untuk detailnya |

584| `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 |584| `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 |

585| `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) |585| `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) |

586| `resume` | `string` | `undefined` | Session ID untuk dilanjutkan |586| `resume` | `string` | `undefined` | ID sesi yang akan dilanjutkan |

587| `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 |587| `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 |

588| `resumeSessionAt` | `string` | `undefined` | Lanjutkan session pada message UUID tertentu |588| `resumeSessionAt` | `string` | `undefined` | Melanjutkan sesi pada UUID pesan tertentu |

589| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Konfigurasi perilaku sandbox secara terprogram. Lihat [Sandbox settings](#sandboxsettings) untuk detail |589| `sandbox` | [`SandboxSettings`](#sandboxsettings) | `undefined` | Mengonfigurasi perilaku sandbox secara terprogram. Lihat [Pengaturan sandbox](#sandboxsettings) untuk detailnya |

590| `sessionId` | `string` | Auto-generated | Gunakan UUID tertentu untuk session alih-alih auto-generating satu |590| `sessionId` | `string` | Dibuat otomatis | Menggunakan UUID tertentu untuk sesi alih-alih membuatnya secara otomatis |

591| `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) |591| `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) |

592| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Flush mode untuk `sessionStore`. Diabaikan ketika `sessionStore` tidak diatur |592| `sessionStoreFlush` | `'batched' \| 'eager'` | `'batched'` | *Alpha.* Mode flush untuk `sessionStore`. Diabaikan jika `sessionStore` tidak diatur |

593| `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) |593| `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) |

594| `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) |594| `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) |

595| `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) |595| `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) |

596| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fungsi kustom untuk spawn proses Claude Code. Gunakan untuk menjalankan Claude Code di VMs, containers, atau remote environments |596| `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 |

598| `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) |598| `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) |

599| `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 |599| `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 |

600| `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 |600| `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 |

601| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` untuk model yang didukung | Mengontrol perilaku thinking/reasoning Claude. Lihat [`ThinkingConfig`](#thinkingconfig) untuk opsi |601| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` untuk model yang didukung | Mengontrol perilaku thinking/penalaran Claude. Lihat [`ThinkingConfig`](#thinkingconfig) untuk opsi |

602| `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 |602| `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 |

603| `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' }` |603| `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' }` |

604| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Konfigurasi untuk perilaku built-in tool. Lihat [`ToolConfig`](#toolconfig) untuk detail |604| `toolConfig` | [`ToolConfig`](#toolconfig) | `undefined` | Konfigurasi untuk perilaku tool bawaan. Lihat [`ToolConfig`](#toolconfig) untuk detailnya |

605| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Konfigurasi tool. Teruskan array nama tool atau gunakan preset untuk mendapatkan default tools Claude Code |605| `tools` | `string[] \| { type: 'preset'; preset: 'claude_code' }` | `undefined` | Konfigurasi tool. Teruskan array nama tool atau gunakan preset untuk mendapatkan tool default Claude Code |

606| `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 |606| `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">

609 Tangani respons API yang lambat atau terhenti609 Menangani respons API yang lambat atau macet

610</h4>610</h4>

611 611 

612CLI subprocess membaca beberapa variabel lingkungan yang mengontrol API timeouts dan stall detection. Teruskan melalui opsi `env`:612Subprocess 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 

630* `API_TIMEOUT_MS`: per-request timeout pada Anthropic client, dalam milidetik. Default `600000`. Berlaku untuk main loop dan semua subagents.630* `API_TIMEOUT_MS`: timeout per permintaan pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagent.

631* `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.631* `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.

632* `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`.632* `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 

634 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.634 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.

635* `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.635* `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 

637 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.637 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| :- | :- |

699| `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 |699| `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 |

700| `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) |700| `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) |

701| `setPermissionMode()` | Mengubah permission mode (hanya tersedia dalam streaming input mode) |701| `setPermissionMode()` | Mengubah mode izin (hanya tersedia dalam mode input streaming) |

702| `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) |702| `setModel()` | Mengubah model (hanya tersedia dalam mode input streaming). Meneruskan `undefined` atau string `"default"` mereset ke [model default Claude Code](/docs/id/model-config) |

703| `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 |703| `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 |

704| `applyFlagSettings(settings)` | Merge settings ke dalam layer flag settings session saat runtime (hanya tersedia dalam streaming input mode). Lihat [`applyFlagSettings()`](#applyflagsettings) |704| `applyFlagSettings(settings)` | Menggabungkan pengaturan ke dalam lapisan pengaturan flag sesi saat runtime (hanya tersedia dalam mode input streaming). Lihat [`applyFlagSettings()`](#applyflagsettings) |

705| `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 |705| `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 |

706| `initializationResult()` | Mengembalikan full initialization result termasuk supported commands, models, account info, dan output style configuration |706| `initializationResult()` | Mengembalikan hasil inisialisasi lengkap termasuk perintah yang didukung, model, info akun, dan konfigurasi gaya output |

707| `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 |707| `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 |

708| `supportedCommands()` | Mengembalikan available commands. Dari Agent SDK v0.3.216 daftar mencerminkan mid-session command changes; lihat [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) |708| `supportedCommands()` | Mengembalikan perintah yang tersedia. Sejak Agent SDK v0.3.216, daftar mencerminkan perubahan perintah di tengah sesi; lihat [`SDKCommandsChangedMessage`](#sdkcommandschangedmessage) |

709| `supportedModels()` | Mengembalikan available models dengan display info |709| `supportedModels()` | Mengembalikan model yang tersedia beserta info tampilan |

710| `supportedAgents()` | Mengembalikan available subagents sebagai [`AgentInfo`](#agentinfo)`[]` |710| `supportedAgents()` | Mengembalikan subagent yang tersedia sebagai [`AgentInfo`](#agentinfo)`[]` |

711| `mcpServerStatus()` | Mengembalikan status connected MCP servers sebagai [`McpServerStatus`](#mcpserverstatus)`[]` |711| `mcpServerStatus()` | Mengembalikan status server MCP yang terhubung sebagai [`McpServerStatus`](#mcpserverstatus)`[]` |

712| `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 |712| `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 |

713| `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 |713| `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 |

714| `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 |714| `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 |

715| `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 |715| `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 |

716| `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 |716| `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 |

717| `accountInfo()` | Mengembalikan account information |717| `accountInfo()` | Mengembalikan informasi akun |

718| `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 |718| `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 |

719| `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 |719| `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 |

720| `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 |720| `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 |

721| `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 |721| `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 |

722| `streamInput(stream)` | Stream input messages ke query untuk multi-turn conversations |722| `streamInput(stream)` | Men-stream pesan input ke kueri untuk percakapan multi-giliran |

723| `stopTask(taskId)` | Stop running background task berdasarkan ID |723| `stopTask(taskId)` | Menghentikan tugas latar belakang yang sedang berjalan berdasarkan ID |

724| `close()` | Close query dan terminate underlying process. Secara paksa mengakhiri query dan membersihkan semua resources |724| `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 

730Mengubah [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()`.730Mengubah [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 

732Hanya beberapa keys yang berlaku mid-session:732Hanya beberapa key yang berlaku di tengah sesi:

733 733 

734* **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.734* **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.

735* **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.735* **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.

736* **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.736* **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 

738`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`.738`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 

740Values 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.740Nilai 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 

742Successive calls shallow-merge top-level keys. Second call dengan `{ permissions: {...} }` menggantikan seluruh objek `permissions` dari prior call daripada deep-merging ke dalamnya.742Panggilan 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 

744Untuk 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.744Untuk 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 

746Tiga keys selain `model` reset session state alih-alih fallback:746Tiga key selain `model` mereset status sesi alih-alih kembali ke nilai sebelumnya:

747 747 

748* `effortLevel: null` mengembalikan session ke model's default effort level, bukan ke opsi `effort` dari `query()` atau `effortLevel` dari settings file.748* `effortLevel: null` mengembalikan sesi ke tingkat effort default model, bukan ke opsi `effort` dari `query()` atau `effortLevel` dari file pengaturan.

749* `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.749* `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.

750* `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.750* `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 

752Hanya tersedia dalam streaming input mode, constraint yang sama seperti `setModel()` dan `setPermissionMode()`.752Hanya tersedia dalam mode input streaming, batasan yang sama seperti `setModel()` dan `setPermissionMode()`.

753 753 

754Contoh di bawah switch active model mid-session, kemudian clear override sehingga model reset ke [Claude Code's default model](/docs/id/model-config).754Contoh 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 

761// Override model untuk sisa session761// 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 

764// Kemudian: clear override; model reset ke Claude Code's default764// 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>

769 `applyFlagSettings()` adalah TypeScript-only. Python SDK tidak expose method yang setara.769 `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 

776Menulis 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:776Menulis 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 

778* **`"localSettings"`**: menerima `outputStyle` dan merge ke dalam project's local settings file, `.claude/settings.local.json`. Style baru berlaku pada session's next request.783<h4 id="togglemcpserver">

779* **`"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.784 `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 

781Call 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.789* 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 

787Handle 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.796Handle 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| :- | :- |

802| `query(prompt)` | Kirim prompt ke pre-warmed subprocess dan kembalikan [`Query`](#query-object). Dapat hanya dipanggil sekali per `WarmQuery` |811| `query(prompt)` | Mengirim prompt ke subprocess yang telah dipanaskan sebelumnya dan mengembalikan [`Query`](#query-object). Hanya dapat dipanggil sekali per `WarmQuery` |

803| `close()` | Close subprocess tanpa mengirim prompt. Gunakan ini untuk discard warm query yang tidak lagi diperlukan |812| `close()` | Menutup subprocess tanpa mengirim prompt. Gunakan ini untuk membuang warm query yang tidak lagi diperlukan |

804 813 

805`WarmQuery` mengimplementasikan `AsyncDisposable`, jadi dapat digunakan dengan `await using` untuk automatic cleanup.814`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 

811*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.820*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| :- | :- |

831| `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 |840| `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 |

832| `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 |841| `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 |

833| `exited` | Settles ketika process exits, claimed atau tidak. Ganti spare yang exits sebelum Anda claim-nya |842| `exited` | Selesai ketika proses keluar, baik sudah diklaim maupun belum. Ganti proses cadangan yang keluar sebelum Anda mengklaimnya |

834| `close()` | Terminate process. Sebelum claim ini discard spare dan reject `claimed` |843| `close()` | Menghentikan proses. Sebelum klaim, ini membuang proses cadangan dan me-reject `claimed` |

835 844 

836`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`.845`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 

838Claude 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.847Claude 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 

844Return type dari `initializationResult()`. Berisi session initialization data.853Tipe 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 

860`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.869`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 

862Claude 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:871Claude 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 

864* `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.873* `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.

865* `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.874* `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 

867Sebelum Agent SDK v0.3.238, response tidak pernah membawa field, dan Claude Code mengabaikan `hooks` pada setiap repeated initialize.876Sebelum Agent SDK v0.3.238, respons tidak pernah membawa field ini, dan Claude Code mengabaikan `hooks` pada setiap initialize berulang.

868 877 

869Response 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.878Respons 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 

871Control-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.880Pembungkus 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 

873Array 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.882Array 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 

875Array 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.884Array 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 

881Interrupt 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`.890Tanda 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 

890`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.899`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 

892Gunakan 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.901Gunakan 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 

894Interpretasikan list dengan caveats ini:903Tafsirkan daftar dengan catatan berikut:

895 904 

896* Hanya messages yang di-enqueue dengan UUID yang muncul. Array kosong tidak berarti nothing else akan run.905* Hanya pesan yang dimasukkan ke antrean dengan UUID yang muncul. Array kosong tidak berarti tidak ada hal lain yang akan berjalan.

897* Hanya main-thread messages yang tercantum. Messages yang ditujukan ke subagent out of scope.906* Hanya pesan thread utama yang dicantumkan. Pesan yang ditujukan ke subagent berada di luar cakupan.

898* 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.907* 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 

900Client 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.909Klien 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 

902`cancelled` list membawa caveats yang sama seperti `still_queued`. Metode `interrupt()` tidak pernah mengirim `cancel_queued`, jadi receipts yang resolves dengan tidak membawa `cancelled`.911Daftar `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 

904Receipt 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.913Tanda 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 

910Return 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.919Tipe 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 

912Argumen `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.923* **`'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 

914Ketika 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.926Ketika 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 

1011Baca token attribution dari collection fields:1023Baca atribusi token dari field koleksi:

1012 1024 

1013* `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.1025* `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.

1014* `mcpTools` dan `agents` attribute tokens ke individual MCP tools dan subagents.1026* `mcpTools` dan `agents` mengatribusikan token ke masing-masing tool MCP dan subagent.

1015* `memoryFiles` mencantumkan setiap loaded memory file dengan costnya.1027* `memoryFiles` mencantumkan setiap file memori yang dimuat beserta biayanya.

1016* `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.1028* `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 

1018`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.1030`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 

1020Claude Code meninggalkan optional `deferredBuiltinTools`, `systemTools`, dan `systemPromptSections` diagnostics unset, jadi expect mereka absent bahkan meskipun type mendeklarasikan mereka.1032Claude 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 

1026Return type dari [`readFile()`](#query-object).1038Tipe 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 

1037`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.1049`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">

1040 Apa yang `readFile()` dapat baca1052 Apa yang dapat dibaca `readFile()`

1041</h4>1053</h4>

1042 1054 

1043`readFile()` melayani set files yang lebih sempit daripada Read tool:1055`readFile()` melayani set file yang lebih sempit daripada tool Read:

1044 1056 

1045* Regular file di dalam salah satu session's working directories, seperti `cwd` dan `additionalDirectories`1057* File biasa di dalam salah satu direktori kerja sesi, seperti `cwd` dan `additionalDirectories`

1046* Beberapa file Claude Code sendiri untuk session, seperti tool results1058* Beberapa file milik Claude Code sendiri untuk sesi, seperti hasil tool

1047 1059 

1048`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`.1060Aturan 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 

1054Return type dari [`reloadPlugins()`](#query-object).1066Tipe 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 

1077Collection fields mendeskripsikan session setelah call:1089Field koleksi menggambarkan sesi setelah panggilan:

1078 1090 

1079* `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 reload1091* `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

1080* `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 pun1092* `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

1081* `error_count`: jumlah errors dari loading plugins1093* `error_count`: jumlah error dari pemuatan plugin

1082 1094 

1083Teruskan `{ 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.1095Teruskan `{ 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 

1085Ketika Anda teruskan option, baca `held` untuk pelajari apa yang terjadi:1097Ketika Anda meneruskan opsi ini, baca `held` untuk mengetahui apa yang terjadi:

1086 1098 

1087* `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.1099* `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.

1088* `false`: check menemukan tidak ada cache impact, dan reload diterapkan.1100* `false`: pemeriksaan tidak menemukan dampak cache, dan pemuatan ulang diterapkan.

1089* Absent: Anda tidak teruskan option, atau Claude Code executable lebih lama daripada v2.1.268 dan applied reload.1101* Tidak ada: Anda tidak meneruskan opsi tersebut, atau executable Claude Code lebih lama dari v2.1.268 dan menerapkan pemuatan ulang.

1090 1102 

1091`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.1103`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 

1097Return type dari [`reloadSkills()`](#query-object).1109Tipe 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 

1105`skills` mencantumkan skills yang tersedia setelah reload, dalam [`SlashCommand`](#slashcommand) shape yang sama yang `supportedCommands()` kembalikan.1117`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 

1111Return type dari [`reloadOutputStyles()`](#query-object).1123Tipe 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 

1119`available_output_styles` mencantumkan names dari built-in dan custom output styles yang tersedia setelah reload.1131`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 

1125Return type dari [`readMcpResource()`](#query-object), membawa MCP server's `resources/read` result. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.1137Tipe 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 

1139Teruskan `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`.1151Teruskan 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 

1141Setiap `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`.1153Setiap 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 

1143Contents adalah untrusted third-party HTML, jadi render dalam sandbox.1155Isinya 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 

1171| Field | Diperlukan | Deskripsi |1183| Field | Wajib | Deskripsi |

1172| :- | :- | :- |1184| :- | :- | :- |

1173| `description` | Ya | Natural language description tentang kapan menggunakan agent ini |1185| `description` | Ya | Deskripsi bahasa alami tentang kapan menggunakan agent ini |

1174| `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 |1186| `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 |

1175| `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 |1187| `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 |

1177| `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) |1189| `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) |

1178| `mcpServers` | Tidak | MCP server specifications untuk agent ini |1190| `mcpServers` | Tidak | Spesifikasi server MCP untuk agent ini |

1179| `skills` | Tidak | Array dari skill names untuk preload ke dalam agent context |1191| `skills` | Tidak | Array nama skill yang dimuat terlebih dahulu ke dalam konteks agent |

1180| `initialPrompt` | Tidak | Auto-submitted sebagai first user turn ketika agent ini berjalan sebagai main thread agent |1192| `initialPrompt` | Tidak | Dikirim otomatis sebagai giliran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |

1181| `maxTurns` | Tidak | Maksimal agentic turns (API round-trips) sebelum stopping |1193| `maxTurns` | Tidak | Jumlah maksimum giliran agentic (perjalanan bolak-balik API) sebelum berhenti |

1182| `background` | Tidak | Jalankan agent ini sebagai non-blocking background task ketika invoked |1194| `background` | Tidak | Menjalankan agent ini sebagai tugas latar belakang yang tidak memblokir saat dipanggil |

1183| `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 |1195| `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 |

1184| `memory` | Tidak | Memory source untuk agent ini: `'user'`, `'project'`, atau `'local'` |1196| `memory` | Tidak | Sumber memori untuk agent ini: `'user'`, `'project'`, atau `'local'` |

1185| `effort` | Tidak | Reasoning effort level untuk agent ini. Menerima named level atau integer |1197| `effort` | Tidak | Tingkat effort penalaran untuk agent ini. Menerima tingkat bernama atau bilangan bulat |

1186| `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) |1198| `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) |

1187| `criticalSystemReminder_EXPERIMENTAL` | Tidak | Experimental: Critical reminder ditambahkan ke system prompt |1199| `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 

1193Menentukan 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.1205Menentukan 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 

1205Mengontrol filesystem-based configuration sources mana yang SDK muat settings dari.1217Mengontrol 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| :- | :- | :- |

1213| `'user'` | Global user settings | `~/.claude/settings.json` |1225| `'user'` | Pengaturan pengguna global | `~/.claude/settings.json` |

1214| `'project'` | Shared project settings (version controlled) | `.claude/settings.json` |1226| `'project'` | Pengaturan proyek bersama (dikontrol versi) | `.claude/settings.json` |

1215| `'local'` | Local project settings, gitignored ketika Claude Code menyimpan setting ke dalamnya | `.claude/settings.local.json` |1227| `'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 

1221Ketika `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.1233Ketika `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 

1227**Nonaktifkan filesystem settings:**1239**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 

1232// Jangan muat user, project, atau local settings dari disk1244// 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 

1239**Muat hanya specific setting sources:**1251**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 

1244// Muat hanya project settings, abaikan user dan local1256// 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: {

1248 settingSources: ["project"] // Hanya .claude/settings.json1260 settingSources: ["project"] // Only .claude/settings.json

1249 }1261 }

1250});1262});

1251```1263```

1252 1264 

1253Untuk 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.1265Untuk 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">

1256 Settings precedence1268 Prioritas pengaturan

1257</h4>1269</h4>

1258 1270 

1259Ketika multiple sources dimuat, settings dimerge dengan precedence ini (tertinggi ke terendah):1271Ketika beberapa sumber dimuat, pengaturan digabungkan dengan urutan prioritas berikut (tertinggi ke terendah):

1260 1272 

12611. Local settings (`.claude/settings.local.json`)12731. Pengaturan local (`.claude/settings.local.json`)

12622. Project settings (`.claude/settings.json`)12742. Pengaturan project (`.claude/settings.json`)

12633. User settings (`~/.claude/settings.json`)12753. Pengaturan user (`~/.claude/settings.json`)

1264 1276 

1265Programmatic options seperti `agents`, `allowedTools`, dan `settings` override user, project, dan local filesystem settings. Managed policy settings mengambil precedence atas programmatic options.1277Opsi 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 =

1273 | "default" // Perilaku permission standar1285 | "default" // Standard permission behavior

1274 | "acceptEdits" // Auto-accept file edits1286 | "acceptEdits" // Auto-accept file edits

1275 | "bypassPermissions" // Bypass permission checks; explicit ask rules masih prompt1287 | "bypassPermissions" // Bypass permission checks; explicit ask rules still prompt

1276 | "plan" // Planning mode - explore tanpa editing1288 | "plan" // Planning mode - explore without editing

1277 | "dontAsk" // Jangan prompt untuk permissions, deny jika tidak pre-approved1289 | "dontAsk" // Don't prompt for permissions, deny if not pre-approved

1278 | "auto"; // Model classifier meninjau actions seperti shell commands dan network requests1290 | "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 

1285Custom permission function type untuk mengontrol tool usage.1297Tipe fungsi izin kustom untuk mengendalikan penggunaan tool.

1286 1298 

1287Fungsi 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.1299Fungsi 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 

1289Sebuah 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.1301Aturan 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 

1310| Opsi | Jenis | Deskripsi |1322| Opsi | Tipe | Deskripsi |

1311| :- | :- | :- |1323| :- | :- | :- |

1312| `signal` | `AbortSignal` | Signaled jika operasi harus dibatalkan |1324| `signal` | `AbortSignal` | Diberi sinyal jika operasi harus dibatalkan |

1313| `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. |1325| `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. |

1314| `blockedPath` | `string` | File path yang triggered permission request, jika applicable |1326| `blockedPath` | `string` | Path file yang memicu permintaan izin, jika ada |

1315| `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 |1327| `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 |

1316| `decisionReason` | `string` | Menjelaskan mengapa permission request ini triggered |1328| `decisionReason` | `string` | Menjelaskan mengapa permintaan izin ini dipicu |

1317| `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 |1329| `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 |

1318| `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 |1330| `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 |

1319| `toolUseID` | `string` | Unique identifier untuk specific tool call ini dalam assistant message |1331| `toolUseID` | `string` | Pengidentifikasi unik untuk panggilan tool spesifik ini dalam pesan asisten |

1320| `agentID` | `string` | Jika running dalam sub-agent, sub-agent's ID |1332| `agentID` | `string` | Jika berjalan di dalam sub-agent, ID sub-agent tersebut |

1321| `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 |1333| `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 

1323Callback 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.1335Callback 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 

1325Opsi `requestId` dan nilai return `null` memerlukan Claude Code v2.1.199 atau lebih baru.1337Opsi `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 

1331Hasil dari permission check.1343Hasil 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 

1353Konfigurasi untuk perilaku built-in tool.1365Konfigurasi untuk perilaku tool bawaan.

1354 1366 

1355```typescript theme={null}1367```typescript theme={null}

1356type ToolConfig = {1368type ToolConfig = {


1360};1372};

1361```1373```

1362 1374 

1363| Field | Jenis | Deskripsi |1375| Field | Tipe | Deskripsi |

1364| :- | :- | :- |1376| :- | :- | :- |

1365| `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 |1377| `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 

1371Konfigurasi untuk MCP servers.1383Konfigurasi 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 

1447Konfigurasi untuk memuat plugins dalam SDK.1459Konfigurasi 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 

1457| Field | Jenis | Deskripsi |1469| Field | Tipe | Deskripsi |

1458| :- | :- | :- |1470| :- | :- | :- |

1459| `type` | `'local'` | Harus `'local'` (hanya local plugins yang saat ini didukung) |1471| `type` | `'local'` | Harus `'local'` (saat ini hanya plugin lokal yang didukung) |

1460| `path` | `string` | Absolute atau relative path ke plugin directory |1472| `path` | `string` | Path absolut atau relatif ke direktori plugin |

1461| `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. |1473| `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 

1472Untuk informasi lengkap tentang membuat dan menggunakan plugins, lihat [Plugins](/docs/id/agent-sdk/plugins).1484Untuk 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;

1575 message: MessageParam; // Dari Anthropic SDK1587 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 

1589Atur `shouldQuery` atau `client_composed` untuk mengubah cara Claude Code menangani pesan yang Anda kirim:1602Tetapkan `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 

1594Pada 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).1614Pesan ini, yang dikirim saat giliran sedang berjalan, meminta Claude mengubah arah tanpa kehilangan perintah shell yang masih berjalan:

1595 1615 

1596Untuk 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.1616```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 

1598Untuk 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.1626Pada 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 

1600Atur `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.1628* 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.

2039* **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.2077* **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 

4966Hasil 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.5004Hasil 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

chrome.md +1 −1

Details

129Dalam sesi VS Code, apakah Claude Code meminta konfirmasi Anda sebelum tindakan browser bergantung pada cara sesi tersebut terhubung ke browser Anda:129Dalam sesi VS Code, apakah Claude Code meminta konfirmasi Anda sebelum tindakan browser bergantung pada cara sesi tersebut terhubung ke browser Anda:

130 130 

131* **Anda mengetik `@browser`**: ekstensi menyetujui setiap tindakan browser yang jika tidak demikian akan ditanyakan Claude Code kepada Anda.131* **Anda mengetik `@browser`**: ekstensi menyetujui setiap tindakan browser yang jika tidak demikian akan ditanyakan Claude Code kepada Anda.

132* **Pengaturan [Enabled by default](#enable-chrome-by-default) menghubungkannya saat dimulai**: Claude Code meminta konfirmasi Anda sebelum tindakan browser dalam mode izin Manual, Edit automatically, Auto, dan Bypass permissions, hingga Anda mengetik `@browser` dalam sesi tersebut.132* **Pengaturan [Enabled by default](#enable-chrome-by-default) menghubungkannya saat dimulai**: Claude Code meminta konfirmasi Anda sebelum tindakan browser di situs yang belum Anda izinkan, dalam mode izin Manual, Edit automatically, Auto, dan Bypass permissions, hingga Anda mengetik `@browser` dalam sesi tersebut.

133 133 

134<h3 id="browser-tools-in-plan-mode">134<h3 id="browser-tools-in-plan-mode">

135 Alat browser dalam plan mode135 Alat browser dalam plan mode

Details

25 Penyiapan penyedia identitas25 Penyiapan penyedia identitas

26</h2>26</h2>

27 27 

28Daftarkan aplikasi web OAuth/OpenID Connect (OIDC) rahasia dengan URI pengalihan tunggal, `https://<gateway>/oauth/callback`, dan tetapkan ke pengguna atau grup yang harus memiliki akses gateway.28Daftarkan aplikasi web OAuth/OpenID Connect (OIDC) rahasia dengan URI pengalihan tunggal, `https://<gateway>/oauth/callback`, dan tetapkan ke pengguna atau grup yang harus memiliki akses gateway. Gateway melakukan autentikasi ke IdP dengan client secret dari pendaftaran tersebut, atau dengan sertifikat yang Anda unggah ke pendaftaran jika IdP Anda menggunakan [kredensial sertifikat](/docs/id/claude-apps-gateway-config#certificate-client-authentication) sebagai gantinya.

29 29 

30IdP apa pun yang sesuai dengan OIDC berfungsi: Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate, dan lainnya. IdP harus memenuhi tiga persyaratan:30IdP apa pun yang sesuai dengan OIDC berfungsi: Okta, Microsoft Entra ID, Google Workspace, Keycloak, Dex, PingFederate, dan lainnya. IdP harus memenuhi tiga persyaratan:

31 31 

Details

226* **Sesi penerima meminta izin**: Claude Code mengirimkan setiap pesan. Ini menahan satu untuk persetujuan Anda hanya ketika sesi pengirim mengidentifikasi dirinya sebagai melewati prompt izin.226* **Sesi penerima meminta izin**: Claude Code mengirimkan setiap pesan. Ini menahan satu untuk persetujuan Anda hanya ketika sesi pengirim mengidentifikasi dirinya sebagai melewati prompt izin.

227* **Sesi penerima melewati prompt izin**: Claude Code menahan setiap pesan untuk persetujuan Anda. Ini mengirimkan satu hanya ketika sesi pengirim juga mengidentifikasi dirinya sebagai melewati.227* **Sesi penerima melewati prompt izin**: Claude Code menahan setiap pesan untuk persetujuan Anda. Ini mengirimkan satu hanya ketika sesi pengirim juga mengidentifikasi dirinya sebagai melewati.

228 228 

229Ketika default menahan pesan, Claude Code membuka dialog persetujuan di sesi penerima. Dialog menunjukkan pengirim dan pratinjau:229Ketika default menahan pesan dalam sesi terminal interaktif, Claude Code membuka dialog persetujuan di sana. Dialog menunjukkan pengirim dan pratinjau:

230 230 

231* **Approve** mengirimkan pesan itu ke Claude.231* **Approve** mengirimkan pesan itu ke Claude.

232* **Deny**, atau menutup dialog, menjatuhkannya.232* **Deny**, atau menutup dialog, menjatuhkannya.


234* Saat tidak ada terminal yang terpasang ke [background session](/docs/id/agent-view), Claude Code meninggalkan dialog terbuka melewati batas waktu. Setelah Anda melampirkan, jika dialog tetap tanpa jawaban untuk periode batas waktu penuh, Claude Code menutupnya dan menjatuhkan pesan.234* Saat tidak ada terminal yang terpasang ke [background session](/docs/id/agent-view), Claude Code meninggalkan dialog terbuka melewati batas waktu. Setelah Anda melampirkan, jika dialog tetap tanpa jawaban untuk periode batas waktu penuh, Claude Code menutupnya dan menjatuhkan pesan.

235* Jika kelas mode izin sesi ini berubah saat pesan ditahan, Claude Code menerapkan kembali aturan inbound, mengirimkan pesan yang sekarang diterima, dan menunjukkan pemberitahuan.235* Jika kelas mode izin sesi ini berubah saat pesan ditahan, Claude Code menerapkan kembali aturan inbound, mengirimkan pesan yang sekarang diterima, dan menunjukkan pemberitahuan.

236 236 

237Sesi di ekstensi VS Code atau aplikasi Desktop tidak dapat menunjukkan dialog. Claude Code menyimpan pesan yang ditahan di sana hingga batas waktu yang sama, seperti yang dijelaskan dalam [Non-interactive sessions](#non-interactive-sessions).

238 

237Claude Code menahan paling banyak 100 pesan, dan melampaui itu menjatuhkan yang tertua.239Claude Code menahan paling banyak 100 pesan, dan melampaui itu menjatuhkan yang tertua.

238 240 

239<h3 id="non-interactive-sessions">241<h3 id="non-interactive-sessions">

env-vars.md +1 −0

Details

275| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Atur ke `1` untuk menghentikan Claude Code menjalankan [hook `Notification` Anda untuk permintaan izin yang belum dijawab](/docs/id/hooks#notification) di sesi tempat Claude Code mengirimkannya ke callback `canUseTool` Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code meng-host Claude Code. Tidak berpengaruh di sesi terminal. Memerlukan Claude Code v2.1.233 atau lebih baru |275| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Atur ke `1` untuk menghentikan Claude Code menjalankan [hook `Notification` Anda untuk permintaan izin yang belum dijawab](/docs/id/hooks#notification) di sesi tempat Claude Code mengirimkannya ke callback `canUseTool` Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code meng-host Claude Code. Tidak berpengaruh di sesi terminal. Memerlukan Claude Code v2.1.233 atau lebih baru |

276| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Atur ke `1` untuk melewati pemuatan skill dari direktori skill terkelola tingkat sistem. Berguna untuk sesi container atau CI yang tidak boleh memuat skill yang disediakan operator |276| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Atur ke `1` untuk melewati pemuatan skill dari direktori skill terkelola tingkat sistem. Berguna untuk sesi container atau CI yang tidak boleh memuat skill yang disediakan operator |

277| `CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY` | Atur ke `1` untuk mematikan pemeriksaan [tool PowerShell](/docs/id/tools-reference#powershell-tool) yang menolak built-in `cmd` `rd`, `rmdir`, `del`, dan `erase` pada [jalur sistem](/docs/id/permission-modes#remove-item-in-powershell), seperti root drive atau direktori home Anda. Claude Code mengabaikan variabel ini di blok `env` file pengaturan. Memerlukan Claude Code v2.1.283 atau lebih baru |277| `CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY` | Atur ke `1` untuk mematikan pemeriksaan [tool PowerShell](/docs/id/tools-reference#powershell-tool) yang menolak built-in `cmd` `rd`, `rmdir`, `del`, dan `erase` pada [jalur sistem](/docs/id/permission-modes#remove-item-in-powershell), seperti root drive atau direktori home Anda. Claude Code mengabaikan variabel ini di blok `env` file pengaturan. Memerlukan Claude Code v2.1.283 atau lebih baru |

278| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | Tetapkan ke `1` untuk mencegah Claude Code mengirim field structured-output `output_config.format` dan nilai `anthropic-beta` yang berpasangan dengannya, untuk [LLM gateway](/docs/id/llm-gateway-protocol#feature-pass-through) yang upstream-nya menolaknya. Ini tetap mengaktifkan kemampuan pra-rilis lain yang dinonaktifkan oleh [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/id/llm-gateway-protocol#disable-pre-release-capabilities). Memerlukan Claude Code v2.1.288 atau lebih baru |

278| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Atur ke `1` untuk mematikan pemeriksaan [jalur kritis](/docs/id/permission-modes#critical-paths) untuk `rm` rekursif yang targetnya sepenuhnya merupakan output dari substitusi perintah, seperti `rm -rf "$(pwd)"`. Pemeriksaan jalur kritis lainnya tetap berjalan. Atur di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirimkan melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.281 atau lebih baru |279| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Atur ke `1` untuk mematikan pemeriksaan [jalur kritis](/docs/id/permission-modes#critical-paths) untuk `rm` rekursif yang targetnya sepenuhnya merupakan output dari substitusi perintah, seperti `rm -rf "$(pwd)"`. Pemeriksaan jalur kritis lainnya tetap berjalan. Atur di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirimkan melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.281 atau lebih baru |

279| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Atur ke `1` untuk menonaktifkan pembaruan judul terminal otomatis berdasarkan konteks percakapan. Ini juga melewati permintaan model small/fast di latar belakang yang [menghasilkan judul sesi](/docs/id/sessions#name-your-sessions) |280| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Atur ke `1` untuk menonaktifkan pembaruan judul terminal otomatis berdasarkan konteks percakapan. Ini juga melewati permintaan model small/fast di latar belakang yang [menghasilkan judul sesi](/docs/id/sessions#name-your-sessions) |

280| `CLAUDE_CODE_DISABLE_THINKING` | Atur ke `1` untuk menghilangkan parameter `thinking` dari permintaan API sepenuhnya. Ini adalah opsi kompatibilitas untuk proxy dan gateway yang menolak parameter tersebut. Pada model yang melakukan thinking secara default, menghilangkan parameter berarti model mungkin masih melakukan thinking. Untuk secara eksplisit menonaktifkan [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) di Anthropic API, gunakan `MAX_THINKING_TOKENS=0` sebagai gantinya. Tidak satu pun dari kedua variabel tersebut mematikan thinking pada Opus 5.5, Sonnet 5.5, atau model Fable, yang thinking-nya tidak dapat dimatikan. Pada [penyedia pihak ketiga](/docs/id/third-party-integrations), `MAX_THINKING_TOKENS=0` juga menghilangkan parameter tersebut, sehingga kedua variabel berperilaku sama di sana |281| `CLAUDE_CODE_DISABLE_THINKING` | Atur ke `1` untuk menghilangkan parameter `thinking` dari permintaan API sepenuhnya. Ini adalah opsi kompatibilitas untuk proxy dan gateway yang menolak parameter tersebut. Pada model yang melakukan thinking secara default, menghilangkan parameter berarti model mungkin masih melakukan thinking. Untuk secara eksplisit menonaktifkan [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) di Anthropic API, gunakan `MAX_THINKING_TOKENS=0` sebagai gantinya. Tidak satu pun dari kedua variabel tersebut mematikan thinking pada Opus 5.5, Sonnet 5.5, atau model Fable, yang thinking-nya tidak dapat dimatikan. Pada [penyedia pihak ketiga](/docs/id/third-party-integrations), `MAX_THINKING_TOKENS=0` juga menghilangkan parameter tersebut, sehingga kedua variabel berperilaku sama di sana |

errors.md +1 −1

Details

4414 Teammate's agent definition was not restored4414 Teammate's agent definition was not restored

4415</h3>4415</h3>

4416 4416 

4417Claude mengirim pesan ke rekan kerja [tim agent](/docs/id/agent-teams) yang telah dihentikan, dan Claude Code menghidupkannya kembali tanpa menerapkan ulang [definisi subagent](/docs/id/agent-teams#use-subagent-definitions-for-teammates) yang menjadi dasar pembuatannya, karena file definisinya berasal dari folder tanpa kepercayaan yang tersimpan. Pemberitahuan muncul setelah laporan resume dalam hasil tool agent pengirim:4417Claude mengirim pesan ke rekan kerja [tim agent](/docs/id/agent-teams) yang telah dihentikan, dan Claude Code menghidupkannya kembali tanpa menerapkan ulang [definisi subagent](/docs/id/agent-teams#use-subagent-definitions-for-teammates) yang menjadi dasar pembuatannya. Pemberitahuan muncul setelah laporan resume dalam hasil tool agent pengirim dan menyebutkan alasannya. Ketika file definisi berasal dari folder tanpa kepercayaan yang tersimpan, pemberitahuan berbunyi:

4418 4418 

4419```text wrap theme={null}4419```text wrap theme={null}

4420Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf.4420Its agent definition was not restored: the folder its definition file came from is not trusted (source: projectSettings), so the teammate is running with the team-essential tools and no custom instructions. To restore it, the user needs to run Claude Code in that folder once and accept the trust dialog (the --debug log names the folder); do not change trust settings on the user's behalf.

hooks.md +1 −1

Details

1933| Kolom | Deskripsi |1933| Kolom | Deskripsi |

1934| :- | :- |1934| :- | :- |

1935| `permissionDecision` | `"allow"` melewati permintaan izin, kecuali untuk [tindakan yang tidak disetujui otomatis oleh mode apa pun](/docs/id/permission-modes#actions-no-mode-auto-approves) dan untuk `AskUserQuestion` dan `ExitPlanMode`, yang memerlukan [`updatedInput` yang dipasangkan dengannya](#allow-with-updatedinput). `"deny"` mencegah panggilan tool. `"ask"` meminta pengguna untuk mengonfirmasi. `"defer"` keluar dengan baik sehingga tool dapat dilanjutkan nanti. [Aturan deny dan ask](/docs/id/permissions#manage-permissions) tetap dievaluasi apa pun yang dikembalikan hook |1935| `permissionDecision` | `"allow"` melewati permintaan izin, kecuali untuk [tindakan yang tidak disetujui otomatis oleh mode apa pun](/docs/id/permission-modes#actions-no-mode-auto-approves) dan untuk `AskUserQuestion` dan `ExitPlanMode`, yang memerlukan [`updatedInput` yang dipasangkan dengannya](#allow-with-updatedinput). `"deny"` mencegah panggilan tool. `"ask"` meminta pengguna untuk mengonfirmasi. `"defer"` keluar dengan baik sehingga tool dapat dilanjutkan nanti. [Aturan deny dan ask](/docs/id/permissions#manage-permissions) tetap dievaluasi apa pun yang dikembalikan hook |

1936| `permissionDecisionReason` | Untuk `"ask"`, ditampilkan kepada pengguna tetapi tidak kepada Claude. Untuk `"deny"`, ditampilkan kepada Claude. Untuk `"allow"` dan `"defer"`, hanya ditulis ke [log debug](#debug-hooks) |1936| `permissionDecisionReason` | Untuk `"ask"`, ditampilkan kepada pengguna dalam permintaan izin. Saat Claude Code [menolak panggilan](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) dalam run `-p` di mana tidak ada yang dapat menjawab permintaan tersebut, Claude membaca alasan tersebut di hasil tool sebagai gantinya. Untuk `"deny"`, ditampilkan kepada Claude. Untuk `"allow"` dan `"defer"`, hanya ditulis ke [log debug](#debug-hooks) |

1937| `updatedInput` | Memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan kolom yang tidak berubah bersama kolom yang dimodifikasi. Claude Code mengevaluasi aturan izin dan [kelayakan auto-background](/docs/id/tools-reference#foreground-commands-that-move-to-the-background) perintah Bash terhadap input yang dikembalikan hook Anda, bukan input yang dikirim Claude. Gabungkan dengan `"allow"` untuk menyetujui otomatis, atau `"ask"` untuk menampilkan input yang dimodifikasi kepada pengguna. Untuk `"defer"`, diabaikan |1937| `updatedInput` | Memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan kolom yang tidak berubah bersama kolom yang dimodifikasi. Claude Code mengevaluasi aturan izin dan [kelayakan auto-background](/docs/id/tools-reference#foreground-commands-that-move-to-the-background) perintah Bash terhadap input yang dikembalikan hook Anda, bukan input yang dikirim Claude. Gabungkan dengan `"allow"` untuk menyetujui otomatis, atau `"ask"` untuk menampilkan input yang dimodifikasi kepada pengguna. Untuk `"defer"`, diabaikan |

1938| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Diabaikan saat `permissionDecision` bernilai `"defer"`. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |1938| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Diabaikan saat `permissionDecision` bernilai `"defer"`. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

1939 1939 

Details

245| [Manajemen konteks](https://platform.claude.com/docs/en/build-with-claude/context-editing) | Header beta manajemen konteks berpasangan dengan field body `context_management` | `400` dengan `Extra inputs are not permitted`. Umum ketika gateway menerima permintaan format Anthropic tetapi meneruskannya ke Amazon Bedrock | Teruskan keduanya, atau [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |245| [Manajemen konteks](https://platform.claude.com/docs/en/build-with-claude/context-editing) | Header beta manajemen konteks berpasangan dengan field body `context_management` | `400` dengan `Extra inputs are not permitted`. Umum ketika gateway menerima permintaan format Anthropic tetapi meneruskannya ke Amazon Bedrock | Teruskan keduanya, atau [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |

246| [Konteks diperluas](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) dan [pemikiran interleaved](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | Hanya header beta, tidak ada field body | Diam-diam tidak tersedia ketika header dihapus; upstream tidak pernah melihat permintaan kemampuan | Teruskan `anthropic-beta` secara verbatim |246| [Konteks diperluas](https://platform.claude.com/docs/en/build-with-claude/context-windows#context-window-sizes-by-model) dan [pemikiran interleaved](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) | Hanya header beta, tidak ada field body | Diam-diam tidak tersedia ketika header dihapus; upstream tidak pernah melihat permintaan kemampuan | Teruskan `anthropic-beta` secara verbatim |

247| Beta [field alat](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) | Header beta terkait alat berpasangan dengan field skema alat seperti `strict` dan `defer_loading` | `400` penamaan field skema alat yang tidak dikenali ketika body melewati tanpa headernya | Teruskan keduanya, atau [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |247| Beta [field alat](https://platform.claude.com/docs/en/agents-and-tools/tool-use/overview) | Header beta terkait alat berpasangan dengan field skema alat seperti `strict` dan `defer_loading` | `400` penamaan field skema alat yang tidak dikenali ketika body melewati tanpa headernya | Teruskan keduanya, atau [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities) |

248| [Upaya](https://platform.claude.com/docs/en/build-with-claude/effort) dan [output terstruktur](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | Field body `output_config` membawa upaya, format output terstruktur, dan pengaturan anggaran tugas; masing-masing berpasangan dengan header betanya sendiri | `400` yang menyebutkan `output_config`, sering `Extra inputs are not permitted`, pada upstream Amazon Bedrock dan Agent Platform Google Cloud | Teruskan field dan headernya bersama-sama, atau minta pengembang mengatur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities), yang menghapus pengaturan format dan anggaran tugas tetapi tidak menghapus upaya |248| [Upaya](https://platform.claude.com/docs/en/build-with-claude/effort) dan [output terstruktur](https://platform.claude.com/docs/en/build-with-claude/structured-outputs) | Field body `output_config` membawa upaya, format output terstruktur, dan pengaturan anggaran tugas; masing-masing berpasangan dengan header betanya sendiri | `400` yang menyebutkan `output_config`, sering `Extra inputs are not permitted`, pada upstream Amazon Bedrock dan Agent Platform Google Cloud | Teruskan field dan headernya bersama-sama, atau minta pengembang mengatur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities), yang menghapus pengaturan format dan anggaran tugas tetapi tidak menghapus upaya. Untuk menghapus format saja, mereka dapat mengatur [`CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS=1`](/docs/id/env-vars) sebagai gantinya, yang memerlukan v2.1.288 atau lebih baru |

249| [Prompt caching](/docs/id/prompt-caching) | Tidak ada pasangan beta. Claude Code melampirkan penanda `cache_control` ke blok `system` dan ke entri `messages`, termasuk entri `role: "system"` yang ditambahkan mid-conversation | Tidak ada kesalahan: percakapan ditagih sebagai input uncached pada setiap giliran, terlihat sebagai `input_tokens` tinggi dengan sedikit atau tidak ada aktivitas cache dalam `usage` | Teruskan `cache_control` tidak berubah di mana pun muncul, dan jangan konversi blok-form `system` atau konten pesan ke string biasa |249| [Prompt caching](/docs/id/prompt-caching) | Tidak ada pasangan beta. Claude Code melampirkan penanda `cache_control` ke blok `system` dan ke entri `messages`, termasuk entri `role: "system"` yang ditambahkan mid-conversation | Tidak ada kesalahan: percakapan ditagih sebagai input uncached pada setiap giliran, terlihat sebagai `input_tokens` tinggi dengan sedikit atau tidak ada aktivitas cache dalam `usage` | Teruskan `cache_control` tidak berubah di mana pun muncul, dan jangan konversi blok-form `system` atau konten pesan ke string biasa |

250| [Penghitungan token](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Tidak ada pasangan beta; menggunakan endpoint `count_tokens` | Tidak ada kesalahan: Claude Code kembali ke perkiraan berbasis karakter, jadi `/context` menampilkan penghitungan perkiraan | Ekspos endpoint untuk penghitungan token yang tepat |250| [Penghitungan token](https://platform.claude.com/docs/en/build-with-claude/token-counting) | Tidak ada pasangan beta; menggunakan endpoint `count_tokens` | Tidak ada kesalahan: Claude Code kembali ke perkiraan berbasis karakter, jadi `/context` menampilkan penghitungan perkiraan | Ekspos endpoint untuk penghitungan token yang tepat |

251 251 

model-config.md +4 −3

Details

794 794 

795<span id="context-window-behind-a-gateway" />795<span id="context-window-behind-a-gateway" />

796 796 

797Jika Anda menetapkan `ANTHROPIC_BASE_URL` ke [gateway LLM](/docs/id/llm-gateway) atau proxy lainnya, Claude Code memberikan setiap model yang dikenalinya jendela konteks yang sama dengan model pada Anthropic API. Fable 5.1, Fable 5, Sonnet 5 dan lebih baru, dan Opus 4.7 dan lebih baru mendapatkan jendela 1M tanpa varian `[1m]` untuk dipilih, dan model yang mencapai 1M hanya melalui varian `[1m]` seperti Opus 4.6, berjalan pada 200K tanpanya. Claude Code tidak dapat mendeteksi batas yang lebih rendah yang gateway atau server di belakangnya berlakukan. Jika gateway Anda menolak permintaan di atas 200K token, jalankan [`/autocompact 200k`](#set-the-auto-compact-window) sehingga sesi compact pada batas itu.797Jika Anda menetapkan `ANTHROPIC_BASE_URL` ke [gateway LLM](/docs/id/llm-gateway) atau proxy lainnya, Claude Code memberikan setiap model yang dikenalinya context window yang sama dengan yang dimiliki model tersebut pada Anthropic API. Fable 5.1, Fable 5, Sonnet 5 dan lebih baru, dan Opus 4.7 dan lebih baru mendapatkan context window 1M tanpa varian `[1m]` untuk dipilih, dan model yang mencapai 1M hanya melalui varian `[1m]`-nya, seperti Opus 4.6, berjalan pada 200K tanpa varian itu. Claude Code tidak dapat mendeteksi batas yang lebih rendah yang diberlakukan gateway atau server di belakangnya. Jika gateway Anda menolak permintaan di atas 200K token, atur [`CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000`](/docs/id/env-vars) di environment yang menjalankan Claude Code, sehingga sesi pada setiap model [melakukan compaction pada batas itu](#set-the-auto-compact-window).

798 798 

799Untuk menonaktifkan konteks 1M, atur `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code menghapus varian model 1M dari pengambil model. Pada model dengan jendela 1M asli, seperti Sonnet 5 dan model Fable, ini juga memperlakukan model sebagai memiliki jendela konteks 200K:799Untuk menonaktifkan konteks 1M, atur `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`. Claude Code menghapus varian model 1M dari pengambil model. Pada model dengan jendela 1M asli, seperti Sonnet 5 dan model Fable, ini juga memperlakukan model sebagai memiliki jendela konteks 200K:

800 800 


840 Atur jendela auto-compact840 Atur jendela auto-compact

841</h3>841</h3>

842 842 

843Anda dapat mengatur jendela auto-compact di tiga tempat:843Anda dapat mengatur jendela auto-compact di tempat-tempat berikut:

844 844 

845* **Untuk sesi ini dan sesi berikutnya**: jalankan `/autocompact` dengan nilai, seperti `/autocompact 500k`. Claude Code menyimpannya ke pengaturan pengguna Anda sebagai [`autoCompactWindow`](/docs/id/settings-reference#autocompactwindow) dan menerapkannya ke sesi saat ini; jika [cakupan pengaturan](/docs/id/settings#settings-precedence) dengan prioritas lebih tinggi seperti pengaturan terkelola menetapkan kunci, perintah menyimpan nilai Anda tetapi sesi mempertahankan jendela cakupan tersebut, dan perintah mengatakan demikian. Jalankan `/autocompact auto` untuk kembali ke jendela yang disesuaikan untuk model Anda.845* **Untuk model saat ini, dalam sesi ini dan sesi berikutnya**: jalankan `/autocompact` dengan nilai, seperti `/autocompact 500k`. Claude Code menyimpannya ke pengaturan pengguna Anda di bawah model saat ini dalam [`modelSettings`](/docs/id/settings-reference#modelsettings) dan menerapkannya ke sesi saat ini. Jika [cakupan pengaturan](/docs/id/settings#settings-precedence) dengan prioritas lebih tinggi seperti pengaturan terkelola menetapkan jendelanya sendiri untuk model tersebut atau untuk setiap model, perintah menyimpan nilai Anda tetapi sesi mempertahankan jendela cakupan tersebut, dan perintah mengatakan demikian. Jalankan `/autocompact auto` untuk kembali ke jendela yang disesuaikan untuk model Anda. Sebelum v2.1.288, perintah ini menyimpan satu jendela untuk setiap model, sebagai `autoCompactWindow` tingkat atas.

846* **Untuk setiap model**: atur [`autoCompactWindow`](/docs/id/settings-reference#autocompactwindow) dalam file pengaturan, seperti `"autoCompactWindow": 200000` di `~/.claude/settings.json`. Jendela yang Anda simpan untuk suatu model dengan `/autocompact` diutamakan daripada kunci ini dalam file yang sama untuk model tersebut.

846* **Untuk satu peluncuran**: teruskan [`--autocompact`](/docs/id/cli-reference#cli-flags) saat memulai Claude Code. Bendera menimpa pengaturan tersimpan Anda untuk peluncuran itu tanpa mengubahnya, dan `claude --autocompact auto` menjalankan sesi pada jendela yang disesuaikan bahkan jika pengaturan tersimpan Anda memiliki nilai. Tidak seperti `/autocompact`, bendera tidak didahului oleh cakupan pengaturan dengan prioritas lebih tinggi seperti pengaturan terkelola.847* **Untuk satu peluncuran**: teruskan [`--autocompact`](/docs/id/cli-reference#cli-flags) saat memulai Claude Code. Bendera menimpa pengaturan tersimpan Anda untuk peluncuran itu tanpa mengubahnya, dan `claude --autocompact auto` menjalankan sesi pada jendela yang disesuaikan bahkan jika pengaturan tersimpan Anda memiliki nilai. Tidak seperti `/autocompact`, bendera tidak didahului oleh cakupan pengaturan dengan prioritas lebih tinggi seperti pengaturan terkelola.

847* **Dalam skrip dan lingkungan cloud**: atur [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/id/env-vars). Saat diatur, itu memiliki prioritas atas perintah, bendera, dan pengaturan, dan `/autocompact` melaporkan penggantian alih-alih mengubah jendela.848* **Dalam skrip dan lingkungan cloud**: atur [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/id/env-vars). Saat diatur, itu memiliki prioritas atas perintah, bendera, dan pengaturan, dan `/autocompact` melaporkan penggantian alih-alih mengubah jendela.

848 849 

plugins/publish.md +26 −11

Details

145 Kirimkan ke direktori Anthropic145 Kirimkan ke direktori Anthropic

146</h2>146</h2>

147 147 

148Direktori Anthropic adalah katalog yang dijelajahi orang di claude.ai dan di Cowork untuk menambahkan plugin dan konektor. Satu daftar di sana menjangkau orang di claude.ai, di Cowork, dan di Claude Code. Anda mengirimkan dari portal pengembang di [claude.ai/directory/manage](https://claude.ai/directory/manage); [Persiapkan untuk tinjauan](https://claude.com/docs/directory/publish#prepare-for-review) di claude.com menjelaskan apa yang terjadi pada setiap versi sebelum dipublikasikan.148[Direktori Anthropic](https://claude.ai/directory) adalah katalog yang dijelajahi orang di claude.ai dan di Cowork untuk menambahkan plugin dan konektor. Satu daftar di sana menjangkau orang di claude.ai, di Cowork, dan di Claude Code. Anda mengirimkan dari portal pengembang di [claude.ai/directory/manage](https://claude.ai/directory/manage), dan [Kirimkan plugin](https://claude.com/docs/plugins/submit#submit-a-plugin) di claude.com memandu Anda melalui portal tersebut.

149 149 

150Pengiriman memerlukan paket claude.ai berbayar. Di Pro dan Max Anda mengirimkan dari akun Anda sendiri. Di Team dan Enterprise, seorang Owner dapat mengirimkan, dan di Enterprise seorang Owner juga dapat memberikan izin **Directory** kepada anggota lain melalui peran khusus di bawah **Organization settings > Roles**. Lihat [Konfirmasi bahwa Anda dapat mengirimkan ke direktori](https://claude.com/docs/directory/publish#confirm-you-can-submit-to-the-directory).150Marketplace resmi Anthropic, `claude-plugins-official`, tidak menerima pengiriman melalui portal direktori. Jika Anda bekerja dengan kontak mitra Anthropic, tanyakan kepada mereka tentang daftar marketplace resmi.

151 151 

152Langkah-langkah pengiriman, pemeriksaan yang harus dilalui setiap versi, dan apa yang terjadi setelah Anda mempublikasikan didokumentasikan di claude.com, karena sama di mana pun permukaan pengguna Anda berada:152Untuk mengirimkan plugin:

153 153 

154* [Publikasikan ke direktori](https://claude.com/docs/directory/publish#before-you-submit-to-the-directory): apa yang dapat Anda kirimkan dan siapa yang dapat mengirimkannya154<Steps>

155* [Kirimkan plugin](https://claude.com/docs/plugins/submit#submit-a-plugin): langkah-langkah portal dan [memperbarui plugin yang dipublikasikan](https://claude.com/docs/plugins/submit#update-a-published-plugin)155 <Step title="Konfirmasi bahwa Anda dapat mengirimkan">

156* [Daftar periksa pra-pengiriman plugin](https://claude.com/docs/plugins/pre-submission-checklist#run-the-checks-before-you-submit): pemeriksaan yang harus dijalankan dan diperbaiki sebelum Anda mengirimkan156 Pengiriman memerlukan paket claude.ai berbayar. Di Pro dan Max Anda mengirimkan dari akun Anda sendiri. Di Team dan Enterprise, seorang Owner dapat mengirimkan, dan di Enterprise seorang Owner juga dapat memberikan izin **Directory** kepada anggota lain melalui peran khusus di bawah **Organization settings > Roles**. Lihat [Konfirmasi bahwa Anda dapat mengirimkan ke direktori](https://claude.com/docs/directory/publish#confirm-you-can-submit-to-the-directory).

157* [Pindahkan pengiriman sebelumnya ke portal pengembang](https://claude.com/docs/directory/publish#move-an-earlier-submission-to-the-developer-portal): apa yang harus dilakukan jika Anda mengirimkan plugin melalui salah satu formulir pengiriman sebelumnya, sebelum portal ada157 </Step>

158 158 

159Sebelum Anda membuka portal, validasi secara lokal dan periksa komponen mana dari Anda yang dimuat di luar Claude Code:159 <Step title="Validasi plugin secara lokal">

160 Jalankan `claude plugin validate ./your-plugin --strict` di shell Anda. Ganti `./your-plugin` dengan jalur ke direktori plugin Anda. Perintah ini menangkap kesalahan manifest secara lokal; [plugin validate](/docs/id/plugins/cli-reference#plugin-validate) mencantumkan file mana yang dibaca setiap kali dijalankan. Portal menerapkan aturan direktori tambahan yang tidak diperiksa CLI, jadi jalankan lokal yang bersih tidak menjamin validasi portal yang bersih.

160 161 

161* **Jalankan `claude plugin validate ./your-plugin --strict` di shell Anda**: ganti `./your-plugin` dengan jalur ke direktori plugin Anda. Perintah menangkap kesalahan manifest secara lokal; [plugin validate](/docs/id/plugins/cli-reference#plugin-validate) mencantumkan file mana yang dibaca setiap kali dijalankan. Portal menerapkan aturan direktori tambahan yang tidak diperiksa CLI, jadi jalankan lokal yang bersih tidak menjamin validasi portal yang bersih.162 [Daftar periksa pra-pengiriman plugin](https://claude.com/docs/plugins/pre-submission-checklist#run-the-checks-before-you-submit) di claude.com berisi pemeriksaan yang harus dijalankan dan diperbaiki sebelum Anda mengirimkan.

162* **Periksa apa yang dimuat di mana**: beberapa komponen plugin hanya Claude Code dan tidak dimuat di claude.ai atau di Cowork. [Tabel dukungan komponen](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app) mencantumkan setiap komponen menurut aplikasi, sehingga Anda tahu apa yang akan diterima pengguna di luar Claude Code.163 </Step>

164 

165 <Step title="Periksa apa yang dimuat di mana">

166 Beberapa komponen plugin hanya untuk Claude Code dan tidak dimuat di claude.ai atau di Cowork. [Tabel dukungan komponen](https://claude.com/docs/plugins/platform-support#compare-component-support-by-app) mencantumkan setiap komponen menurut aplikasi, sehingga Anda tahu apa yang akan diterima pengguna di luar Claude Code.

167 </Step>

163 168 

164Marketplace resmi Anthropic, `claude-plugins-official`, tidak menerima pengiriman melalui portal direktori. Jika Anda bekerja dengan kontak mitra Anthropic, tanyakan tentang daftar marketplace resmi.169 <Step title="Kirimkan di portal pengembang">

170 Buka portal pengembang di [claude.ai/directory/manage](https://claude.ai/directory/manage) dan ikuti [Kirimkan plugin](https://claude.com/docs/plugins/submit#submit-a-plugin) di claude.com.

171 </Step>

172</Steps>

173 

174Sisa prosesnya didokumentasikan di claude.com:

175 

176* [Persiapkan untuk tinjauan](https://claude.com/docs/directory/publish#prepare-for-review): apa yang terjadi pada setiap versi sebelum dipublikasikan

177* [Perbarui plugin yang dipublikasikan](https://claude.com/docs/plugins/submit#update-a-published-plugin): bagaimana versi baru menjangkau orang yang memiliki plugin Anda

178* [Kirimkan plugin Anda, dan server MCP Anda sebagai konektor](https://claude.com/docs/directory/publish#submit-your-plugin-and-your-mcp-server-as-a-connector): apa yang dapat Anda kirimkan

179* [Pindahkan pengiriman sebelumnya ke portal pengembang](https://claude.com/docs/directory/publish#move-an-earlier-submission-to-the-developer-portal): apa yang harus dilakukan jika Anda mengirimkan plugin melalui salah satu formulir pengiriman sebelumnya, sebelum portal ada

165 180 

166<h3 id="how-a-listed-plugin-reaches-claude-code-users">181<h3 id="how-a-listed-plugin-reaches-claude-code-users">

167 Bagaimana plugin yang terdaftar menjangkau pengguna Claude Code182 Bagaimana plugin yang terdaftar menjangkau pengguna Claude Code

Details

708| [`modelOverrides`](#modeloverrides) | [Petakan ID model](/docs/id/model-config#override-model-ids-per-version) ke ID penyedia Anda, seperti ARN Bedrock | Model dan respons | Any file |708| [`modelOverrides`](#modeloverrides) | [Petakan ID model](/docs/id/model-config#override-model-ids-per-version) ke ID penyedia Anda, seperti ARN Bedrock | Model dan respons | Any file |

709| [`modelPicker`](#modelpicker) | Pilih model mana yang dicantumkan oleh [pemilih `/model`](/docs/id/model-config#available-models), dalam urutan Anda sendiri dan dengan label Anda sendiri | Model dan respons | User or managed |709| [`modelPicker`](#modelpicker) | Pilih model mana yang dicantumkan oleh [pemilih `/model`](/docs/id/model-config#available-models), dalam urutan Anda sendiri dan dengan label Anda sendiri | Model dan respons | User or managed |

710| [`modelPricing`](#modelpricing) | Laporkan pengeluaran dengan tarif kontrak organisasi Anda daripada harga daftar | Model dan respons | Managed |710| [`modelPricing`](#modelpricing) | Laporkan pengeluaran dengan tarif kontrak organisasi Anda daripada harga daftar | Model dan respons | Managed |

711| [`modelSettings`](#modelsettings) | Simpan [tingkat effort](/docs/id/model-config#adjust-effort-level) per model, atau batasi effort satu model | Model dan respons | Any file |711| [`modelSettings`](#modelsettings) | Simpan [tingkat effort](/docs/id/model-config#adjust-effort-level) atau [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) per model, atau batasi effort satu model | Model dan respons | Any file |

712| [`otelHeadersHelper`](#otelheadershelper) | Hasilkan header [OpenTelemetry](/docs/id/monitoring-usage#dynamic-headers) yang berputar dengan perintah Anda sendiri | Authentication and providers | Any file |712| [`otelHeadersHelper`](#otelheadershelper) | Hasilkan header [OpenTelemetry](/docs/id/monitoring-usage#dynamic-headers) yang berputar dengan perintah Anda sendiri | Authentication and providers | Any file |

713| [`outputStyle`](#outputstyle) | Ubah peran, nada, dan format output Claude dengan [gaya output](/docs/id/output-styles) | Model dan respons | Any file |713| [`outputStyle`](#outputstyle) | Ubah peran, nada, dan format output Claude dengan [gaya output](/docs/id/output-styles) | Model dan respons | Any file |

714| [`parentSettingsBehavior`](#parentsettingsbehavior) | Terapkan atau lepaskan pembatasan yang diteruskan oleh [host SDK atau IDE](/docs/id/managed-settings#let-an-embedding-host-add-policy) ketika Anda menerapkan [pengaturan terkelola](/docs/id/managed-settings) | Enterprise and managed settings | Managed |714| [`parentSettingsBehavior`](#parentsettingsbehavior) | Terapkan atau lepaskan pembatasan yang diteruskan oleh [host SDK atau IDE](/docs/id/managed-settings#let-an-embedding-host-add-policy) ketika Anda menerapkan [pengaturan terkelola](/docs/id/managed-settings) | Enterprise and managed settings | Managed |


1282Untuk membatasi effort satu model daripada menetapkan levelnya, tambahkan bidang [`maxEffortLevel`](#maxeffortlevel) ke entri model itu. Bidang memerlukan Claude Code v2.1.267 atau lebih baru.1282Untuk membatasi effort satu model daripada menetapkan levelnya, tambahkan bidang [`maxEffortLevel`](#maxeffortlevel) ke entri model itu. Bidang memerlukan Claude Code v2.1.267 atau lebih baru.

1283 1283 

1284* **Scope**: [`Any file`](#scopes)1284* **Scope**: [`Any file`](#scopes)

1285* **Type**: object memetakan nama model ke object dengan bidang `effortLevel`, salah satu dari `"low"`, `"medium"`, `"high"`, atau `"xhigh"`, bidang [`maxEffortLevel`](#maxeffortlevel), atau keduanya1285* **Type**: object yang memetakan nama model ke object dengan salah satu dari bidang berikut:

1286 * `effortLevel`: salah satu dari `"low"`, `"medium"`, `"high"`, atau `"xhigh"`

1287 * [`maxEffortLevel`](#maxeffortlevel): tingkat effort tertinggi yang dapat digunakan model

1288 * `autoCompactWindow`: jumlah token dari `100000` hingga `1000000`, atau `"auto"` untuk jendela yang disesuaikan untuk model. [`/autocompact`](/docs/id/model-config#set-the-auto-compact-window) menyimpan di sini. Untuk model itu, nilai ini diutamakan daripada [`autoCompactWindow`](#autocompactwindow) tingkat atas dalam file pengaturan yang sama. Memerlukan Claude Code v2.1.288 atau lebih baru

1286* **Default**: tidak disetel1289* **Default**: tidak disetel

1287 1290 

1288Claude Code menulis setiap entri di bawah nama kanonik model, seperti `claude-opus-5-5`, dan mencocokkan alias model itu, tanggal-akhiran, `[1m]`, dan ID khusus penyedia yang dikenali ke entri yang sama.1291Claude Code menulis setiap entri di bawah nama kanonik model, seperti `claude-opus-5-5`, dan mencocokkan alias model itu, tanggal-akhiran, `[1m]`, dan ID khusus penyedia yang dikenali ke entri yang sama.


2967}2970}

2968```2971```

2969 2972 

2970Atur dengan perintah [`/autocompact`](/docs/id/commands#all-commands), yang menulis kunci ini ke pengaturan pengguna Anda. [Atur jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) mencakup cara perintah, flag, variabel, dan pengaturan berinteraksi.2973Perintah [`/autocompact`](/docs/id/commands#all-commands) menyimpan window untuk model saat ini di bawah [`modelSettings`](#modelsettings), yang diutamakan daripada kunci ini dalam file yang sama untuk model tersebut. [Atur window auto-compact](/docs/id/model-config#set-the-auto-compact-window) mencakup cara perintah, flag, variabel, dan pengaturan berinteraksi.

2971 2974 

2972<h3 id="automemorydirectory">2975<h3 id="automemorydirectory">

2973 `autoMemoryDirectory`2976 `autoMemoryDirectory`

setup.md +5 −5

Details

45 <Tab title="Native Install (Direkomendasikan)">45 <Tab title="Native Install (Direkomendasikan)">

46 **macOS, Linux, WSL:**46 **macOS, Linux, WSL:**

47 47 

48 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}48 ```bash theme={null}

49 curl -fsSL https://claude.ai/install.sh | bash49 curl -fsSL https://claude.ai/install.sh | bash

50 ```50 ```

51 51 

52 **Windows PowerShell:**52 **Windows PowerShell:**

53 53 

54 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}54 ```powershell theme={null}

55 irm https://claude.ai/install.ps1 | iex55 irm https://claude.ai/install.ps1 | iex

56 ```56 ```

57 57 

58 **Windows CMD:**58 **Windows CMD:**

59 59 

60 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}60 ```batch theme={null}

61 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd61 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

62 ```62 ```

63 63 


75 </Tab>75 </Tab>

76 76 

77 <Tab title="Homebrew">77 <Tab title="Homebrew">

78 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}78 ```bash theme={null}

79 brew install --cask claude-code79 brew install --cask claude-code

80 ```80 ```

81 81 


87 </Tab>87 </Tab>

88 88 

89 <Tab title="WinGet">89 <Tab title="WinGet">

90 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}90 ```powershell theme={null}

91 winget install Anthropic.ClaudeCode91 winget install Anthropic.ClaudeCode

92 ```92 ```

93 93 

ultrareview.md +1 −5

Details

134| - | - | - |134| - | - | - |

135| Pro | 3 run gratis | ditagih sebagai [penggunaan ekstra](https://support.claude.com/id/articles/12429409-extra-usage-for-paid-claude-plans) |135| Pro | 3 run gratis | ditagih sebagai [penggunaan ekstra](https://support.claude.com/id/articles/12429409-extra-usage-for-paid-claude-plans) |

136| Max | 3 run gratis | ditagih sebagai [penggunaan ekstra](https://support.claude.com/id/articles/12429409-extra-usage-for-paid-claude-plans) |136| Max | 3 run gratis | ditagih sebagai [penggunaan ekstra](https://support.claude.com/id/articles/12429409-extra-usage-for-paid-claude-plans) |

137| Team dan Enterprise | tidak ada | ditagih sebagai [penggunaan ekstra](https://support.claude.com/id/articles/12429409-extra-usage-for-paid-claude-plans) |

138 137 

139* **Run gratis**: tiga run Pro dan Max adalah alokasi satu kali per akun dan tidak diperbarui.138* **Run gratis**: tiga run Pro dan Max adalah alokasi satu kali per akun dan tidak diperbarui.

140* **Biaya per tinjauan**: setelah Anda menggunakan run gratis, biasanya \$5 hingga \$25 dalam penggunaan ekstra tergantung pada ukuran perubahan, sesuai dengan perkiraan yang ditampilkan dialog peluncuran sebelum setiap run.139* **Biaya per tinjauan**: setelah Anda menggunakan run gratis, biasanya \$5 hingga \$25 dalam penggunaan ekstra tergantung pada ukuran perubahan, sesuai dengan perkiraan yang ditampilkan dialog peluncuran sebelum setiap run.

141* **Kapan run dihitung**: setelah sesi cloud dimulai. Tinjauan yang Anda hentikan lebih awal atau yang gagal diselesaikan masih menggunakan run gratis; tinjauan berbayar hanya ditagih untuk bagian yang berjalan.140* **Kapan run dihitung**: setelah sesi cloud dimulai. Tinjauan yang Anda hentikan lebih awal atau yang gagal diselesaikan masih menggunakan run gratis; tinjauan berbayar hanya ditagih untuk bagian yang berjalan.

142 141 

143Karena ultrareview selalu ditagih sebagai penggunaan ekstra di luar run gratis, akun atau organisasi Anda harus memiliki penggunaan ekstra diaktifkan sebelum Anda dapat meluncurkan tinjauan berbayar. Jika penggunaan ekstra tidak diaktifkan, Claude Code memblokir peluncuran, dan cara Anda mengaktifkannya tergantung pada akses penagihan Anda:142Karena ultrareview selalu ditagih sebagai kredit penggunaan di luar run gratis, akun atau organisasi Anda harus memiliki kredit penggunaan yang diaktifkan sebelum Anda dapat meluncurkan tinjauan berbayar. Jika kredit penggunaan tidak diaktifkan, Claude Code memblokir peluncuran. Jika Anda dapat mengelola penagihan untuk akun Anda, Claude Code menautkan Anda ke pengaturan penagihan tempat Anda dapat mengaktifkan kredit penggunaan.

144 

145* Jika Anda dapat mengelola penagihan untuk akun Anda, Claude Code menautkan Anda ke pengaturan penagihan tempat Anda dapat mengaktifkan penggunaan ekstra.

146* Pada paket Team dan Enterprise, anggota tanpa akses penagihan mengirimkan permintaan dari CLI meminta admin mereka untuk mengaktifkan penggunaan ekstra.

147 143 

148Anda juga dapat menjalankan `/usage-credits` untuk memeriksa atau mengubah pengaturan penggunaan-ekstra Anda.144Anda juga dapat menjalankan `/usage-credits` untuk memeriksa atau mengubah pengaturan penggunaan-ekstra Anda.

149 145