SpyBara
Go Premium

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

35 files changed +1,316 −1,130. View all changes and history on the product overview
2026
Sat 3 04:00 Fri 2 22:59 Thu 1 23:59
Details

145Beberapa perilaku tidak disesuaikan untuk mode pembaca layar:145Beberapa perilaku tidak disesuaikan untuk mode pembaca layar:

146 146 

147* Mode pembaca layar tidak aktif secara otomatis ketika pembaca layar sedang berjalan.147* Mode pembaca layar tidak aktif secara otomatis ketika pembaca layar sedang berjalan.

148* Claude Code tidak mengumumkan perubahan mode izin yang dilakukan dengan cara lain selain bersiklus dengan `Shift+Tab`, seperti memasuki [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) dari perintah.148* Claude Code tidak mengumumkan perubahan mode izin yang Anda lakukan dengan perintah, seperti memasuki [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) dengan `/plan`.

149* Melampirkan ke [sesi latar belakang](/docs/id/agent-view) dengan `claude attach` atau dari tampilan agen memasuki layar alternatif terminal, yang tidak memiliki scrollback asli. Ini adalah [perilaku yang sama seperti sesi terlampir lainnya](/docs/id/fullscreen). Untuk keluar, tekan Left Arrow pada prompt kosong, atau Ctrl+Z jika dialog memiliki fokus.149* Melampirkan ke [sesi latar belakang](/docs/id/agent-view) dengan `claude attach` atau dari tampilan agen memasuki layar alternatif terminal, yang tidak memiliki scrollback asli. Ini adalah [perilaku yang sama seperti sesi terlampir lainnya](/docs/id/fullscreen). Untuk keluar, tekan Left Arrow pada prompt kosong, atau Ctrl+Z jika dialog memiliki fokus.

150* Claude Code mengumumkan biaya dalam ringkasan yang dicetak saat keluar, bukan per giliran.150* Claude Code mengumumkan biaya dalam ringkasan yang dicetak saat keluar, bukan per giliran.

151* Mode pembaca layar tidak mengubah [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Mode non-interaktif sudah menulis teks biasa dan tetap menjadi alternatif untuk scripting.151* Mode pembaca layar tidak mengubah [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Mode non-interaktif sudah menulis teks biasa dan tetap menjadi alternatif untuk scripting.

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

agent-teams.md +1 −1

Details

91* **Enter**: buka transkrip rekan tim yang dipilih dan kirim pesan langsung kepadanya91* **Enter**: buka transkrip rekan tim yang dipilih dan kirim pesan langsung kepadanya

92* **Escape**: hapus pilihan. Saat Anda melihat transkrip rekan tim, Escape menghentikan giliran saat ini rekan tim tersebut92* **Escape**: hapus pilihan. Saat Anda melihat transkrip rekan tim, Escape menghentikan giliran saat ini rekan tim tersebut

93 93 

94Mulai dari v2.1.199, baris rekan tim yang idle tetap berada di panel sementara rekan tim atau subagent mana pun masih bekerja, sehingga Anda dapat memilihnya untuk meninjau transkrip atau memberikan pekerjaan lebih lanjut. Setelah setiap agent di panel idle, baris idle bersembunyi setelah 30 detik dan muncul kembali pada giliran berikutnya rekan tim; rekan tim tetap berjalan dan dapat dialamatkan saat tersembunyi. Di v2.1.181 hingga v2.1.198, baris idle bersembunyi 30 detik setelah giliran sendirinya berakhir, bahkan sementara rekan tim lain masih bekerja; baris idle tidak disembunyikan di versi sebelum v2.1.181.94Baris rekan tim yang idle tetap berada di panel sementara rekan tim atau subagent mana pun masih bekerja, sehingga Anda dapat memilihnya untuk meninjau transkripnya atau memberikan pekerjaan lebih lanjut. Setelah setiap agent di panel idle, baris idle bersembunyi setelah 30 detik dan muncul kembali pada giliran berikutnya rekan tim; rekan tim tetap berjalan dan dapat dialamatkan saat tersembunyi.

95 95 

96Ketika lebih dari tiga rekan tim idle sekaligus, baris di luar tiga pertama runtuh menjadi satu baris yang menghitung rekan tim yang runtuh, seperti `2 idle agents` ketika lima idle. Pilih dan tekan Enter untuk memperluas baris yang runtuh, atau tekan Esc untuk meruntuhkannya lagi. Rekan tim yang bekerja, rekan tim yang gagal, dan rekan tim yang Anda lihat selalu mempertahankan baris mereka sendiri.96Ketika lebih dari tiga rekan tim idle sekaligus, baris di luar tiga pertama runtuh menjadi satu baris yang menghitung rekan tim yang runtuh, seperti `2 idle agents` ketika lima idle. Pilih dan tekan Enter untuk memperluas baris yang runtuh, atau tekan Esc untuk meruntuhkannya lagi. Rekan tim yang bekerja, rekan tim yang gagal, dan rekan tim yang Anda lihat selalu mempertahankan baris mereka sendiri.

97 97 

champion-kit.md +6 −6

Details

50Contoh teknik yang dapat digunakan kembali:50Contoh teknik yang dapat digunakan kembali:

51 51 

52* "Saya belajar bahwa @-mentioning direktori berfungsi. Mengarahkannya ke `@src/components/` dan bertanya komponen mana yang kehilangan tes mengungkapkan dua yang saya lewatkan."52* "Saya belajar bahwa @-mentioning direktori berfungsi. Mengarahkannya ke `@src/components/` dan bertanya komponen mana yang kehilangan tes mengungkapkan dua yang saya lewatkan."

53* "Plan mode (`Shift+Tab`) menunjukkan dengan tepat file mana yang akan disentuh sebelum ada edit yang dibuat, itulah mengapa saya nyaman menggunakannya pada kode bersama."53* "Plan mode (`Shift+Tab`) memaparkan perubahan yang diusulkan terlebih dahulu, itulah mengapa saya nyaman menggunakannya pada kode bersama."

54* "Saya mengonfigurasi hook Stop sehingga saya menerima notifikasi desktop ketika tugas panjang selesai. Konfigurasi ada di thread."54* "Saya mengonfigurasi hook Stop sehingga saya menerima notifikasi desktop ketika tugas panjang selesai. Konfigurasi ada di thread."

55* "Menjalankan `/init` menghasilkan `CLAUDE.md` dari repositori sehingga asisten berhenti menanyakan kembali tentang konvensi kami."55* "Menjalankan `/init` menghasilkan `CLAUDE.md` dari repositori sehingga asisten berhenti menanyakan kembali tentang konvensi kami."

56 56 


89 89 

90```text theme={null}90```text theme={null}

91Plan mode adalah alasan saya nyaman menggunakan ini pada kode yang penting.91Plan mode adalah alasan saya nyaman menggunakan ini pada kode yang penting.

92Tekan Shift+Tab sampai Anda melihat "plan"; itu meletakkan dengan tepat file mana92Tekan Shift+Tab sampai Anda melihat "plan"; itu memaparkan perubahan yang

93yang dimaksudkan untuk disentuh sebelum mengubah apa pun.93diusulkannya tanpa mengedit kode sumber Anda.

94```94```

95 95 

96<h2 id="be-the-person-people-ask">96<h2 id="be-the-person-people-ask">


126| Pertanyaan | Respons yang disarankan | Sumber daya tindak lanjut |126| Pertanyaan | Respons yang disarankan | Sumber daya tindak lanjut |

127| - | - | - |127| - | - | - |

128| "Apa yang harus saya coba pertama kali?" | Rekomendasikan tugas nyata tetapi terbatas, idealnya bug atau chore yang telah ditunda orang karena membosankan daripada sulit. | [Common workflows](/docs/id/common-workflows) |128| "Apa yang harus saya coba pertama kali?" | Rekomendasikan tugas nyata tetapi terbatas, idealnya bug atau chore yang telah ditunda orang karena membosankan daripada sulit. | [Common workflows](/docs/id/common-workflows) |

129| "Bagaimana saya mempercayainya dengan kode saya?" | Perkenalkan plan mode: menekan `Shift+Tab` bersiklus ke dalamnya, Claude mengusulkan dengan tepat apa yang dimaksudkan untuk diubah, dan tidak ada yang dimodifikasi sampai pengguna menyetujui. | [Permissions](/docs/id/permissions) |129| "Bagaimana saya mempercayainya dengan kode saya?" | Perkenalkan plan mode: menekan `Shift+Tab` bersiklus ke dalamnya, dan Claude melakukan riset serta mengusulkan perubahan tanpa mengedit kode sumber Anda. | [Permissions](/docs/id/permissions) |

130| "Apakah setup layak untuk usaha?" | Instalasi membutuhkan waktu kira-kira dua menit, berjalan di terminal, dan tidak memerlukan ekstensi IDE. Menjalankan `/init` sekali sudah cukup untuk mulai bekerja. | [Quickstart](/docs/id/quickstart) |130| "Apakah setup layak untuk usaha?" | Instalasi membutuhkan waktu kira-kira dua menit, berjalan di terminal, dan tidak memerlukan ekstensi IDE. Menjalankan `/init` sekali sudah cukup untuk mulai bekerja. | [Quickstart](/docs/id/quickstart) |

131| "Itu menghasilkan hasil yang salah." | Dorong mereka untuk memberikan kegagalan kembali ke Claude. Menempel pesan kesalahan atau test yang gagal jauh lebih efektif daripada mengganti frasa permintaan asli. | [Common workflows](/docs/id/common-workflows) |131| "Itu menghasilkan hasil yang salah." | Dorong mereka untuk memberikan kegagalan kembali ke Claude. Menempel pesan kesalahan atau test yang gagal jauh lebih efektif daripada mengganti frasa permintaan asli. | [Common workflows](/docs/id/common-workflows) |

132| "Itu tidak memahami konvensi codebase kami." | Sarankan menjalankan `/init` untuk menghasilkan file `CLAUDE.md`, kemudian tambahkan konvensi tim, perintah test, dan direktori apa pun yang harus dihindari. | [Memory](/docs/id/memory) |132| "Itu tidak memahami konvensi codebase kami." | Sarankan menjalankan `/init` untuk menghasilkan file `CLAUDE.md`, kemudian tambahkan konvensi tim, perintah test, dan direktori apa pun yang harus dihindari. | [Memory](/docs/id/memory) |


199| Kekhawatiran | Respons yang disarankan | Bukti untuk ditawarkan |199| Kekhawatiran | Respons yang disarankan | Bukti untuk ditawarkan |

200| - | - | - |200| - | - | - |

201| "Saya lebih cepat tanpanya." | Itu mungkin benar untuk kode yang biasanya ditulis orang. Sarankan mencobanya pada pekerjaan yang mereka cenderung hindari: file legacy, layanan yang tidak dikenal, atau test scaffolding, di mana itu membantu paling banyak. | Waktu satu tugas membosankan kedua cara dan bandingkan. |201| "Saya lebih cepat tanpanya." | Itu mungkin benar untuk kode yang biasanya ditulis orang. Sarankan mencobanya pada pekerjaan yang mereka cenderung hindari: file legacy, layanan yang tidak dikenal, atau test scaffolding, di mana itu membantu paling banyak. | Waktu satu tugas membosankan kedua cara dan bandingkan. |

202| "Saya tidak mempercayai AI untuk menyentuh kode produksi." | Setuju bahwa tidak ada perubahan yang harus mendarat tanpa dibaca. Plan mode dikombinasikan dengan review diff normal berarti tidak ada yang diterapkan yang belum diperiksa oleh insinyur, standar yang sama seperti pull request apa pun. | Demonstrasikan plan mode pada file nyata. |202| "Saya tidak mempercayai AI untuk menyentuh kode produksi." | Setuju bahwa tidak ada perubahan yang harus mendarat tanpa dibaca. Sarankan plan mode untuk melihat perubahan yang diusulkan terlebih dahulu, lalu tinjau diff dengan standar yang sama seperti pull request apa pun. | Demonstrasikan plan mode pada file nyata. |

203| "Itu akan membuat insinyur junior lebih lemah." | Digunakan dengan baik, itu adalah penjelasan yang efektif. Dorong insinyur junior untuk meminta Claude menjelaskan file dan situs panggilannya sebelum meminta untuk mengubah apa pun. | Jalankan "Jelaskan @file dan di mana itu dipanggil dari" bersama. |203| "Itu akan membuat insinyur junior lebih lemah." | Digunakan dengan baik, itu adalah penjelasan yang efektif. Dorong insinyur junior untuk meminta Claude menjelaskan file dan situs panggilannya sebelum meminta untuk mengubah apa pun. | Jalankan "Jelaskan @file dan di mana itu dipanggil dari" bersama. |

204| "Saya mencobanya sekali dan itu mengalami halusinasi." | Ini biasanya masalah konteks daripada masalah model. @-mentioning file yang relevan, menjalankan `/init`, dan memberikan output kesalahan aktual biasanya menyelesaikannya. | Jalankan kembali prompt asli mereka dengan konteks `@` yang tepat. |204| "Saya mencobanya sekali dan itu mengalami halusinasi." | Ini biasanya masalah konteks daripada masalah model. @-mentioning file yang relevan, menjalankan `/init`, dan memberikan output kesalahan aktual biasanya menyelesaikannya. | Jalankan kembali prompt asli mereka dengan konteks `@` yang tepat. |

205| "Kami tidak memiliki waktu untuk mempelajari alat lain." | Claude Code adalah perintah terminal daripada platform. Jika itu tidak mengembalikan nilai dalam sesi pertama, masuk akal untuk menyisihkannya. | Instalasi dua menit diikuti oleh satu bug nyata. |205| "Kami tidak memiliki waktu untuk mempelajari alat lain." | Claude Code adalah perintah terminal daripada platform. Jika itu tidak mengembalikan nilai dalam sesi pertama, masuk akal untuk menyisihkannya. | Instalasi dua menit diikuti oleh satu bug nyata. |


213| Teknik | Cara menerapkannya |213| Teknik | Cara menerapkannya |

214| - | - |214| - | - |

215| Berikan konteks yang tepat | Gunakan referensi `@file` atau `@directory/`, atau tempel output kesalahan atau log secara langsung. Menyediakan konteks yang relevan lebih efektif daripada prompting yang rumit. |215| Berikan konteks yang tepat | Gunakan referensi `@file` atau `@directory/`, atau tempel output kesalahan atau log secara langsung. Menyediakan konteks yang relevan lebih efektif daripada prompting yang rumit. |

216| Tinjau rencana sebelum edit | Tekan `Shift+Tab` untuk memasuki plan mode. Claude akan menggambarkan perubahan yang dimaksudkan untuk persetujuan Anda sebelum menjalankannya. |216| Tinjau rencana sebelum edit | Tekan `Shift+Tab` untuk memasuki plan mode. Claude meneliti dan mengusulkan perubahan tanpa mengedit kode sumber Anda. |

217| Ajarkan repositori Anda | Jalankan `/init` untuk menghasilkan file `CLAUDE.md`, kemudian tambahkan konvensi Anda, perintah test, dan direktori apa pun yang tidak boleh dimodifikasi. Lihat [Memory](/docs/id/memory). |217| Ajarkan repositori Anda | Jalankan `/init` untuk menghasilkan file `CLAUDE.md`, kemudian tambahkan konvensi Anda, perintah test, dan direktori apa pun yang tidak boleh dimodifikasi. Lihat [Memory](/docs/id/memory). |

218| Gunakan kembali alur kerja | Simpan file `SKILL.md` di `.claude/skills/<name>/` untuk membuat skill `/name` yang dapat digunakan oleh seluruh tim. Lihat [Skills](/docs/id/skills). |218| Gunakan kembali alur kerja | Simpan file `SKILL.md` di `.claude/skills/<name>/` untuk membuat skill `/name` yang dapat digunakan oleh seluruh tim. Lihat [Skills](/docs/id/skills). |

219| Tetap terinformasi selama tugas panjang | Konfigurasikan hook Stop untuk menerima notifikasi desktop ketika tugas yang berjalan lama selesai. Lihat [Hooks](/docs/id/hooks-guide). |219| Tetap terinformasi selama tugas panjang | Konfigurasikan hook Stop untuk menerima notifikasi desktop ketika tugas yang berjalan lama selesai. Lihat [Hooks](/docs/id/hooks-guide). |

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

79| Field | Diperlukan | Deskripsi |79| Field | Diperlukan | Deskripsi |

80| - | - | - |80| - | - | - |

81| `issuer` | Ya | OIDC discovery base. Harus melayani discovery di `/.well-known/openid-configuration`. Gunakan HTTPS dalam production; gateway menerima issuer `http://`. Issuer loopback seperti `http://localhost:8081` ditolak oleh [SSRF guard](/docs/id/claude-apps-gateway-deploy#threat-model-summary) kecuali `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` diatur di environment gateway. |81| `issuer` | Ya | OIDC discovery base. Harus melayani discovery di `/.well-known/openid-configuration`. Gunakan HTTPS dalam production; gateway menerima issuer `http://`. Issuer loopback seperti `http://localhost:8081` ditolak oleh [SSRF guard](/docs/id/claude-apps-gateway-deploy#threat-model-summary) kecuali `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` diatur di environment gateway. |

82| `client_id` / `client_secret` | Ya | Dari registrasi OAuth client Anda |82| `client_id` | Ya | Dari registrasi OAuth client Anda |

83| `client_secret` | Kecuali `token_endpoint_auth_method` adalah `private_key_jwt` | Dari registrasi OAuth client Anda. Hilangkan field ini ketika Anda menggunakan [autentikasi client dengan sertifikat](#certificate-client-authentication). |

83| `allowed_email_domains` | Tidak | Tolak id\_tokens yang claim `email`-nya tidak ada di salah satu domain ini, case-insensitive. Defense-in-depth terhadap misconfiguration IdP multi-tenant. Independen dari setting ini, id\_token yang claim `email_verified`-nya secara eksplisit `false` selalu ditolak. |84| `allowed_email_domains` | Tidak | Tolak id\_tokens yang claim `email`-nya tidak ada di salah satu domain ini, case-insensitive. Defense-in-depth terhadap misconfiguration IdP multi-tenant. Independen dari setting ini, id\_token yang claim `email_verified`-nya secara eksplisit `false` selalu ditolak. |

84| `allowed_groups` | Tidak | Batasi sign-in ke anggota IdP groups ini, dicocokkan terhadap `groups_claim`. User dalam email domain yang diizinkan tetapi tidak ada di salah satu groups ini ditolak. Memerlukan IdP untuk memancarkan groups claim. Pencocokan adalah perbandingan string yang tepat dan case-sensitive terhadap nilai dalam claim itu, dan gateway tidak memperluas nested groups: untuk mengakui anggota sub-group, daftar sub-group di sini atau konfigurasi IdP untuk memancarkan flattened membership. |85| `allowed_groups` | Tidak | Batasi sign-in ke anggota IdP groups ini, dicocokkan terhadap `groups_claim`. User dalam email domain yang diizinkan tetapi tidak ada di salah satu groups ini ditolak. Memerlukan IdP untuk memancarkan groups claim. Pencocokan adalah perbandingan string yang tepat dan case-sensitive terhadap nilai dalam claim itu, dan gateway tidak memperluas nested groups: untuk mengakui anggota sub-group, daftar sub-group di sini atau konfigurasi IdP untuk memancarkan flattened membership. |

85| `groups_claim` | Tidak | Claim id\_token mana yang membawa group membership. Default `groups`. Microsoft Entra memancarkan app roles di bawah `roles`. Menerima flat key atau RFC 6901 JSON Pointer seperti `/resource_access/gateway/roles` untuk nested claims. |86| `groups_claim` | Tidak | Claim id\_token mana yang membawa group membership. Default `groups`. Microsoft Entra memancarkan app roles di bawah `roles`. Menerima flat key atau RFC 6901 JSON Pointer seperti `/resource_access/gateway/roles` untuk nested claims. |


91| `userinfo_fallback` | Tidak | Ketika id\_token menghilangkan email atau groups, ambil dari `/userinfo`. Diperlukan untuk Keycloak lightweight access tokens, Okta org server, dan ADFS minimal tokens. Id\_token tetap authoritative; userinfo hanya mengisi gaps. Default `false`. |92| `userinfo_fallback` | Tidak | Ketika id\_token menghilangkan email atau groups, ambil dari `/userinfo`. Diperlukan untuk Keycloak lightweight access tokens, Okta org server, dan ADFS minimal tokens. Id\_token tetap authoritative; userinfo hanya mengisi gaps. Default `false`. |

92| `use_pkce` | Tidak | Kirim PKCE (S256) challenge pada authorization request. Default `true`. Atur `false` hanya jika IdP Anda menolak PKCE untuk confidential client ini. |93| `use_pkce` | Tidak | Kirim PKCE (S256) challenge pada authorization request. Default `true`. Atur `false` hanya jika IdP Anda menolak PKCE untuk confidential client ini. |

93| `clock_skew_seconds` | Tidak | Toleransi clock drift saat memvalidasi id\_token time claims. Default `0`, yang ketat. Naikkan jika Anda melihat error "token expired / not yet valid" tepat setelah sign-in karena host/IdP clock skew. |94| `clock_skew_seconds` | Tidak | Toleransi clock drift saat memvalidasi id\_token time claims. Default `0`, yang ketat. Naikkan jika Anda melihat error "token expired / not yet valid" tepat setelah sign-in karena host/IdP clock skew. |

94| `token_endpoint_auth_method` | Tidak | Override token-endpoint auth method. Menerima `client_secret_basic` atau `client_secret_post`. Auto-negotiated secara default. |95| `token_endpoint_auth_method` | Tidak | Cara gateway melakukan autentikasi ke token endpoint IdP: `client_secret_basic`, `client_secret_post`, atau `private_key_jwt` untuk [autentikasi client dengan sertifikat](#certificate-client-authentication). Secara default gateway memilih salah satu dari dua metode `client_secret` berdasarkan apa yang diiklankan IdP. |

96| `client_assertion` | Dengan `private_key_jwt` | Blok dengan `private_key_pem` dan `certificate_pem`: private key dan sertifikat untuk [autentikasi client dengan sertifikat](#certificate-client-authentication). Memerlukan v2.1.284 atau lebih baru. |

95| `id_token_signed_response_alg` | Tidak | Expected id\_token signing algorithm. Default `RS256`. Atur untuk IdP yang menandatangani dengan ES256, PS256, atau EdDSA. |97| `id_token_signed_response_alg` | Tidak | Expected id\_token signing algorithm. Default `RS256`. Atur untuk IdP yang menandatangani dengan ES256, PS256, atau EdDSA. |

96| `additional_authorized_parties` | Tidak | Extra `azp` values untuk diterima di luar `client_id`, untuk Keycloak broker dan token-exchange flows |98| `additional_authorized_parties` | Tidak | Extra `azp` values untuk diterima di luar `client_id`, untuk Keycloak broker dan token-exchange flows |

97| `discovery_url` | Tidak | Ambil discovery document dari URL ini daripada menurunkannya dari `issuer`, untuk IdP di belakang proxy yang menulis ulang issuer host. Path harus berisi `/.well-known/`. |99| `discovery_url` | Tidak | Ambil discovery document dari URL ini daripada menurunkannya dari `issuer`, untuk IdP di belakang proxy yang menulis ulang issuer host. Path harus berisi `/.well-known/`. |


99| `form_action_origins` | Tidak | Origins tambahan untuk direktif `Content-Security-Policy: form-action` halaman `/device`. Gateway sudah mengizinkan `'self'` dan origin `authorization_endpoint` yang ditemukan, tetapi Chrome memberlakukan `form-action` terhadap seluruh redirect chain. Jika IdP Anda mengalihkan melalui host kedua, seperti Azure AD federated ke ADFS, hub-spoke Okta, atau SSO interceptor korporat, daftar setiap origin yang mungkin dialihkan oleh authorization request. |101| `form_action_origins` | Tidak | Origins tambahan untuk direktif `Content-Security-Policy: form-action` halaman `/device`. Gateway sudah mengizinkan `'self'` dan origin `authorization_endpoint` yang ditemukan, tetapi Chrome memberlakukan `form-action` terhadap seluruh redirect chain. Jika IdP Anda mengalihkan melalui host kedua, seperti Azure AD federated ke ADFS, hub-spoke Okta, atau SSO interceptor korporat, daftar setiap origin yang mungkin dialihkan oleh authorization request. |

100| `ca_cert_pem` | Tidak | PEM-encoded CA certificate itu sendiri, bukan path ke file. Ini menggantikan system trust store untuk IdP requests saja. Untuk memuat file yang di-mount, tulis `${file:/etc/gateway/idp-ca.pem}`. Gunakan untuk Keycloak atau Dex di belakang corporate PKI. |102| `ca_cert_pem` | Tidak | PEM-encoded CA certificate itu sendiri, bukan path ke file. Ini menggantikan system trust store untuk IdP requests saja. Untuk memuat file yang di-mount, tulis `${file:/etc/gateway/idp-ca.pem}`. Gunakan untuk Keycloak atau Dex di belakang corporate PKI. |

101 103 

104<h4 id="certificate-client-authentication">

105 Autentikasi client dengan sertifikat

106</h4>

107 

108Jika identity provider Anda mengautentikasi OAuth client dengan sertifikat alih-alih client secret, seperti yang dilakukan Microsoft Entra dengan certificate credentials, atur `token_endpoint_auth_method: private_key_jwt`. Memerlukan Claude Code v2.1.284 atau lebih baru di server gateway.

109 

110Dengan konfigurasi ini gateway tidak mengirim secret. Gateway melakukan autentikasi ke token endpoint IdP dengan JWT berumur pendek yang ditandatangani dengan private key sertifikat ketika developer masuk dan setiap kali gateway me-refresh sesi mereka. JWT ditandatangani dengan RS256 dan mengidentifikasi sertifikat melalui header thumbprint `x5t` dan `x5t#S256`, bukan `kid`. IdP Anda harus dapat menemukan sertifikat yang terdaftar berdasarkan thumbprint.

111 

112<Steps>

113 <Step title="Buat key dan sertifikat">

114 Buat RSA private key yang tidak terenkripsi dengan panjang minimal 2048 bit, dalam bentuk PEM PKCS#8 atau PKCS#1, beserta sertifikat untuknya. Gateway menolak untuk memulai dengan key apa pun yang tidak memenuhi kondisi ini. Perintah `openssl` ini membuat key seperti itu dengan sertifikat self-signed yang berlaku selama satu tahun:

115 

116 ```bash theme={null}

117 openssl req -x509 -newkey rsa:2048 -nodes -keyout idp-client.key -out idp-client.crt -days 365 -subj "/CN=claude-gateway"

118 ```

119 

120 Perintah ini menulis `idp-client.key` dan `idp-client.crt` ke direktori saat ini. Salin atau mount kedua file ke lokasi yang dapat dibaca gateway. Contoh di langkah 3 menggunakan `/etc/gateway/`.

121 </Step>

122 

123 <Step title="Unggah sertifikat ke IdP">

124 Unggah sertifikat, bukan private key, ke app registration gateway di IdP.

125 </Step>

126 

127 <Step title="Tambahkan key dan sertifikat ke gateway.yaml">

128 Berikan private key dan sertifikat kepada gateway dalam blok `client_assertion`. Hilangkan `client_secret`, karena gateway menolak untuk memulai ketika field itu diatur bersama dengan `private_key_jwt`. Blok `oidc` ini mengautentikasi gateway ke tenant Microsoft Entra dengan sertifikat:

129 

130 ```yaml theme={null}

131 oidc:

132 issuer: https://login.microsoftonline.com/<tenant-id>/v2.0

133 client_id: <application-id>

134 token_endpoint_auth_method: private_key_jwt

135 client_assertion:

136 private_key_pem: ${file:/etc/gateway/idp-client.key}

137 certificate_pem: ${file:/etc/gateway/idp-client.crt}

138 ```

139 

140 Kedua nilai adalah isi PEM, bukan path file, jadi muat file yang di-mount dengan `${file:/path}` seperti pada contoh. Gateway menolak untuk memulai kecuali `certificate_pem` adalah satu sertifikat PEM tunggal, tanpa sisa chain-nya, yang public key-nya cocok dengan `private_key_pem`.

141 </Step>

142 

143 <Step title="Restart gateway dan periksa boot log">

144 Restart gateway dan temukan baris ini di boot log:

145 

146 ```text theme={null}

147 [gateway] 2026-10-01T23:07:40.512Z info oidc: client authentication private_key_jwt; certificate CN=claude-gateway, SHA-1 thumbprint DE92821854EE8BAA1D98C758FAA04AABE80B9F57, expires Oct 1 23:07:31 2027 GMT

148 ```

149 

150 Bandingkan SHA-1 thumbprint dengan yang ditampilkan IdP untuk sertifikat yang Anda unggah. Jika sertifikat telah kedaluwarsa atau belum berlaku, gateway tetap memulai tetapi mencatat peringatan bahwa sign-in dan refresh akan gagal sampai Anda menggantinya. Untuk memastikan IdP menerima sertifikat, minta satu developer masuk melalui gateway.

151 </Step>

152</Steps>

153 

154<h4 id="rotate-the-client-certificate">

155 Rotasi sertifikat client

156</h4>

157 

158Gateway membaca key dan sertifikat sekali saat boot, jadi file yang berubah baru berlaku setelah restart. Lakukan rotasi dengan urutan ini agar tidak ada permintaan token yang menyajikan sertifikat yang tidak dimiliki IdP:

159 

1601. Unggah sertifikat baru ke IdP di samping sertifikat lama.

1612. Ganti file key dan sertifikat yang dimuat oleh `gateway.yaml`, lalu restart gateway.

1623. Hapus sertifikat lama dari IdP.

163 

102<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

103 IdP requests through a forward proxy165 IdP requests through a forward proxy

104</h4>166</h4>


1224| - | - | - | - |1286| - | - | - | - |

1225| `access_control` | `allow_cidrs` / `deny_cidrs` | kosong | Inbound IP allow/deny berdasarkan alamat klien, setelah resolusi `trusted_proxies`. `deny_cidrs` diperiksa terlebih dahulu; klien yang cocok ditolak bahkan jika `allow_cidrs` juga cocok. Jika `allow_cidrs` tidak kosong gateway adalah default-deny. `/healthz` dan `/readyz` dikecualikan dari `allow_cidrs`. Ketika proxy tepercaya mengirim entri `X-Forwarded-For` yang bukan alamat IP, klien nyata tidak diketahui dan gateway mencatat peringatan sekali yang menamai apa yang harus diperiksa. Di mana daftar apa pun berlaku untuk permintaan, itu menolaknya dengan `403` dan alasan audit `xff_unparseable`. Di mana tidak ada yang berlaku, itu melayani permintaan dan menggunakan alamat proxy sendiri sebagai IP klien untuk rate limit per-IP dan audit. |1287| `access_control` | `allow_cidrs` / `deny_cidrs` | kosong | Inbound IP allow/deny berdasarkan alamat klien, setelah resolusi `trusted_proxies`. `deny_cidrs` diperiksa terlebih dahulu; klien yang cocok ditolak bahkan jika `allow_cidrs` juga cocok. Jika `allow_cidrs` tidak kosong gateway adalah default-deny. `/healthz` dan `/readyz` dikecualikan dari `allow_cidrs`. Ketika proxy tepercaya mengirim entri `X-Forwarded-For` yang bukan alamat IP, klien nyata tidak diketahui dan gateway mencatat peringatan sekali yang menamai apa yang harus diperiksa. Di mana daftar apa pun berlaku untuk permintaan, itu menolaknya dengan `403` dan alasan audit `xff_unparseable`. Di mana tidak ada yang berlaku, itu melayani permintaan dan menggunakan alamat proxy sendiri sebagai IP klien untuk rate limit per-IP dan audit. |

1226| `limits` | `max_request_bytes` | 32 MiB | Badan permintaan inbound maksimal; permintaan yang terlalu besar mendapatkan `413` sebelum badan dibuffer. Naikkan untuk permintaan file atau gambar besar. |1288| `limits` | `max_request_bytes` | 32 MiB | Badan permintaan inbound maksimal; permintaan yang terlalu besar mendapatkan `413` sebelum badan dibuffer. Naikkan untuk permintaan file atau gambar besar. |

1227| `limits` | `max_request_header_bytes` | tidak diatur | Ketika diatur, header yang terlalu besar mengembalikan `431` |1289| `limits` | `max_request_header_bytes` | tidak diatur | Menurunkan batas 256 KiB gateway pada total header permintaan. Permintaan yang melebihi batas mengembalikan `431`, dan nilai di atas 256 KiB tidak berpengaruh. Jika pengembang mendapatkan `431` setelah masuk, lihat [Header permintaan terlalu besar setelah masuk](/docs/id/claude-apps-gateway-deploy#request-headers-too-large-after-sign-in). |

1228| `limits` | `max_url_length` | tidak diatur | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |1290| `limits` | `max_url_length` | tidak diatur | Ketika diatur, URL yang terlalu panjang mengembalikan `414` |

1229| `timeouts` | `upstream_ttfb_ms` | 120000 | Tunggu maksimal untuk header respons upstream (waktu ke byte pertama). Badan respons kemudian streaming tanpa batas jam dinding. Berlaku untuk jalur upstream Anthropic langsung; di setiap penyedia lain gateway menunggu hingga satu jam untuk respons dimulai. |1291| `timeouts` | `upstream_ttfb_ms` | 120000 | Tunggu maksimal untuk header respons upstream (waktu ke byte pertama). Badan respons kemudian streaming tanpa batas jam dinding. Berlaku untuk jalur upstream Anthropic langsung; di setiap penyedia lain gateway menunggu hingga satu jam untuk respons dimulai. |

1230| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Rate limit per-IP pada endpoint otorisasi perangkat yang tidak diautentikasi. Naikkan untuk org besar di belakang IP egress bersama atau NAT. [Peluncuran besar](/docs/id/claude-apps-gateway-deploy#large-rollouts) menunjukkan cara mengukurnya. Batas ini hanya berlaku untuk alur sign-in hibah perangkat, bukan untuk inferensi `/v1/messages`. Lihat [Resistensi brute-force kode pengguna](/docs/id/claude-apps-gateway-deploy#user-code-brute-force-resistance). |1292| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Rate limit per-IP pada endpoint otorisasi perangkat yang tidak diautentikasi. Naikkan untuk org besar di belakang IP egress bersama atau NAT. [Peluncuran besar](/docs/id/claude-apps-gateway-deploy#large-rollouts) menunjukkan cara mengukurnya. Batas ini hanya berlaku untuk alur sign-in hibah perangkat, bukan untuk inferensi `/v1/messages`. Lihat [Resistensi brute-force kode pengguna](/docs/id/claude-apps-gateway-deploy#user-code-brute-force-resistance). |

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 


386| Startup menampilkan `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | Build Claude Code yang diinstal mendahului dukungan gateway | Minta pengembang memperbarui Claude Code ke rilis yang mencakup dukungan Cloud gateway |386| Startup menampilkan `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | Build Claude Code yang diinstal mendahului dukungan gateway | Minta pengembang memperbarui Claude Code ke rilis yang mencakup dukungan Cloud gateway |

387| Startup keluar dengan `Administrator policy requires a Cloud gateway sign-in on this machine` | Lingkungan pengembang menetapkan `ANTHROPIC_API_KEY` atau `ANTHROPIC_AUTH_TOKEN`, pengaturan mereka mengonfigurasi [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper), atau kunci API dari login Claude Console sebelumnya masih tersimpan | Minta pengembang menghapus masing-masing yang berlaku: batalkan pengaturan variabel, hapus entri `apiKeyHelper`, atau jalankan `claude auth logout` untuk menghapus kunci yang tersimpan. Sesi yang memilih penyedia cloud dengan `CLAUDE_CODE_USE_*` kemudian dimulai tanpa masuk; untuk setiap sesi lainnya, minta mereka memulai `claude` dan masuk dengan `/login`. Lihat juga [Kebijakan administrator memerlukan masuk Cloud gateway](/docs/id/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |387| Startup keluar dengan `Administrator policy requires a Cloud gateway sign-in on this machine` | Lingkungan pengembang menetapkan `ANTHROPIC_API_KEY` atau `ANTHROPIC_AUTH_TOKEN`, pengaturan mereka mengonfigurasi [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper), atau kunci API dari login Claude Console sebelumnya masih tersimpan | Minta pengembang menghapus masing-masing yang berlaku: batalkan pengaturan variabel, hapus entri `apiKeyHelper`, atau jalankan `claude auth logout` untuk menghapus kunci yang tersimpan. Sesi yang memilih penyedia cloud dengan `CLAUDE_CODE_USE_*` kemudian dimulai tanpa masuk; untuk setiap sesi lainnya, minta mereka memulai `claude` dan masuk dengan `/login`. Lihat juga [Kebijakan administrator memerlukan masuk Cloud gateway](/docs/id/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |

388| Startup atau `/login` melaporkan `Claude Code may not be enabled for your organization` setelah 403 pada beban pengaturan terkelola | Gateway, atau sesuatu di depannya, menjawab permintaan `/managed/settings` dengan 403. Rute pengaturan gateway sendiri tidak pernah menjawab 403. Status berasal dari pemeriksaan IP [`access_control`](/docs/id/claude-apps-gateway-config#http-tuning) atau dari proxy atau WAF di depan gateway. Log audit mencatat penolakan pemeriksaan IP sebagai `access.denied` dengan alasannya. Pengembang tetap masuk. | Periksa log audit untuk `access.denied` pada waktu kegagalan dan perbaiki daftar `access_control` atau front end, lalu minta pengembang memulai `claude` lagi |388| Startup atau `/login` melaporkan `Claude Code may not be enabled for your organization` setelah 403 pada beban pengaturan terkelola | Gateway, atau sesuatu di depannya, menjawab permintaan `/managed/settings` dengan 403. Rute pengaturan gateway sendiri tidak pernah menjawab 403. Status berasal dari pemeriksaan IP [`access_control`](/docs/id/claude-apps-gateway-config#http-tuning) atau dari proxy atau WAF di depan gateway. Log audit mencatat penolakan pemeriksaan IP sebagai `access.denied` dengan alasannya. Pengembang tetap masuk. | Periksa log audit untuk `access.denied` pada waktu kegagalan dan perbaiki daftar `access_control` atau front end, lalu minta pengembang memulai `claude` lagi |

389| CLI `/login`: `The gateway is limiting sign-in attempts right now`, atau `Request failed with status code 429` pada versi yang lebih lama. Halaman `/device` mungkin menampilkan `Too many attempts` kepada pengembang yang belum pernah mencoba sebelumnya | Batas laju masuk per-IP tercapai. Baik `listen.trusted_proxies` tidak mencakup penyeimbang beban, jadi setiap pengembang berbagi alamatnya, atau banyak pengembang berbagi alamat keluar NAT atau VPN. Acara audit dengan `result: rate_limited` menunjukkan satu atau beberapa nilai `client_ip` yang sama. | Atur `listen.trusted_proxies` ke rentang sumber penyeimbang beban terlebih dahulu, lalu naikkan `rate_limits` jika pengembang masih berbagi alamat. Lihat [Peluncuran besar-besaran](#large-rollouts). |389| CLI `/login`: `The gateway is limiting sign-in attempts right now`, atau `Request failed with status code 429` pada versi yang lebih lama. Halaman `/device` mungkin menampilkan `Too many attempts` kepada pengembang yang belum pernah mencoba sebelumnya | Rate limit masuk per-IP tercapai. Baik `listen.trusted_proxies` tidak mencakup penyeimbang beban, jadi setiap pengembang berbagi alamatnya, atau banyak pengembang berbagi alamat keluar NAT atau VPN. Acara audit dengan `result: rate_limited` menunjukkan satu atau beberapa nilai `client_ip` yang sama. | Atur `listen.trusted_proxies` ke rentang sumber penyeimbang beban terlebih dahulu, lalu naikkan `rate_limits` jika pengembang masih berbagi alamat. Lihat [Peluncuran besar-besaran](#large-rollouts). |

390| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Nama host gateway diselesaikan ke setidaknya satu alamat IP publik. Claude Code memeriksa setiap alamat yang diselesaikan dan memerlukan setiap satu menjadi pribadi. Penyebab umum adalah nama dual-stack di mana satu keluarga diselesaikan ke alamat publik, termasuk penyeimbang beban dual-stack internal AWS, yang mengembalikan alamat AAAA rentang publik. | Minta nama gateway hanya diselesaikan ke alamat pribadi pada mesin pengembang. Untuk nama dual-stack, lepaskan catatan rentang publik atau layani nama DNS internal saja. Lihat [prasyarat jaringan pribadi](/docs/id/claude-apps-gateway#prerequisites). Jika alamat adalah ruang publik yang dimiliki dan digunakan organisasi Anda secara internal, [deklarasikan blok itu](/docs/id/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) sebagai gantinya. |390| CLI `/login`: `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Nama host gateway diselesaikan ke setidaknya satu alamat IP publik. Claude Code memeriksa setiap alamat yang diselesaikan dan memerlukan setiap satu menjadi pribadi. Penyebab umum adalah nama dual-stack di mana satu keluarga diselesaikan ke alamat publik, termasuk penyeimbang beban dual-stack internal AWS, yang mengembalikan alamat AAAA rentang publik. | Minta nama gateway hanya diselesaikan ke alamat pribadi pada mesin pengembang. Untuk nama dual-stack, lepaskan catatan rentang publik atau layani nama DNS internal saja. Lihat [prasyarat jaringan pribadi](/docs/id/claude-apps-gateway#prerequisites). Jika alamat adalah ruang publik yang dimiliki dan digunakan organisasi Anda secara internal, [deklarasikan blok itu](/docs/id/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) sebagai gantinya. |

391| CLI `/login`: `Gateway login would go through proxy <proxy>, which is not on a private network` | `HTTPS_PROXY` atau `HTTP_PROXY` berlaku untuk host gateway dan nama host proxy diselesaikan ke alamat publik. Proxy yang nama hostnya hanya diselesaikan ke alamat pribadi diizinkan dan tidak memicu kesalahan ini | Tambahkan host gateway ke `NO_PROXY` pada mesin pengembang sehingga koneksi langsung, atau gunakan proxy yang nama hostnya diselesaikan ke alamat pribadi. Pesan menamai entri `NO_PROXY` yang tepat untuk ditambahkan |391| CLI `/login`: `Gateway login would go through proxy <proxy>, which is not on a private network` | `HTTPS_PROXY` atau `HTTP_PROXY` berlaku untuk host gateway dan nama host proxy diselesaikan ke alamat publik. Proxy yang nama hostnya hanya diselesaikan ke alamat pribadi diizinkan dan tidak memicu kesalahan ini | Tambahkan host gateway ke `NO_PROXY` pada mesin pengembang sehingga koneksi langsung, atau gunakan proxy yang nama hostnya diselesaikan ke alamat pribadi. Pesan menamai entri `NO_PROXY` yang tepat untuk ditambahkan |

392| CLI `/login`: `Claude Code only signs in to <host> from inside its declared network <block> (managed settings), and this machine is connecting from <ip>, outside it` | Gateway berada di blok yang dideklarasikan dalam [`gatewayInternalNetworks`](/docs/id/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), dan mesin pengembang mencapainya dari alamat di luar blok itu: kumpulan alamat VPN, segmen NAT kontainer atau WSL2, atau jaringan yang bukan milik Anda | Minta pengembang menjalankan `/login` dari OS host di jaringan Anda. Jika alamat yang ditampilkan juga merupakan ruang publik organisasi Anda sendiri, ganti entri gateway dengan blok yang mencakup keduanya, hingga `/8`; entri kedua yang tumpang tindih ditolak |392| CLI `/login`: `Claude Code only signs in to <host> from inside its declared network <block> (managed settings), and this machine is connecting from <ip>, outside it` | Gateway berada di blok yang dideklarasikan dalam [`gatewayInternalNetworks`](/docs/id/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), dan mesin pengembang mencapainya dari alamat di luar blok itu: kumpulan alamat VPN, segmen NAT kontainer atau WSL2, atau jaringan yang bukan milik Anda | Minta pengembang menjalankan `/login` dari OS host di jaringan Anda. Jika alamat yang ditampilkan juga merupakan ruang publik organisasi Anda sendiri, ganti entri gateway dengan blok yang mencakup keduanya, hingga `/8`; entri kedua yang tumpang tindih ditolak |


403| `/oauth/callback` menampilkan "Sign-in could not be completed" | Domain email ditolak, validasi id\_token gagal, atau `email_verified` secara eksplisit `false`, yang gateway selalu tolak tanpa override | Periksa `allowed_email_domains` dan bahwa IdP mengembalikan klaim `email` yang diverifikasi. Untuk `email_verified: false`, perbaiki verifikasi sisi IdP. Jika IdP Anda memancarkan email di bawah nama klaim berbeda, atur `oidc.email_claim`. |403| `/oauth/callback` menampilkan "Sign-in could not be completed" | Domain email ditolak, validasi id\_token gagal, atau `email_verified` secara eksplisit `false`, yang gateway selalu tolak tanpa override | Periksa `allowed_email_domains` dan bahwa IdP mengembalikan klaim `email` yang diverifikasi. Untuk `email_verified: false`, perbaiki verifikasi sisi IdP. Jika IdP Anda memancarkan email di bawah nama klaim berbeda, atur `oidc.email_claim`. |

404| Log: `token exchange failed request_id=<id>: id_token missing email claim` | IdP tidak menyertakan `email` dalam id\_token secara default. Penolakan ini hanya terjadi ketika `allowed_email_domains` diatur; tanpanya, email yang hilang mencetak sesi tanpa email | Konfigurasikan IdP untuk memancarkan `email` dalam id\_token. Okta: tambahkan `email` ke klaim ID-token server otorisasi khusus. Entra: tambahkan `email` sebagai klaim opsional pada pendaftaran aplikasi. PingFederate: aktifkan Kebijakan OpenID Connect yang memancarkan `email`. Jika IdP melayani `email` dari endpoint userinfo tetapi tidak akan menyertakannya dalam id\_token, seperti server otorisasi org Okta, atur `oidc.userinfo_fallback: true`. |404| Log: `token exchange failed request_id=<id>: id_token missing email claim` | IdP tidak menyertakan `email` dalam id\_token secara default. Penolakan ini hanya terjadi ketika `allowed_email_domains` diatur; tanpanya, email yang hilang mencetak sesi tanpa email | Konfigurasikan IdP untuk memancarkan `email` dalam id\_token. Okta: tambahkan `email` ke klaim ID-token server otorisasi khusus. Entra: tambahkan `email` sebagai klaim opsional pada pendaftaran aplikasi. PingFederate: aktifkan Kebijakan OpenID Connect yang memancarkan `email`. Jika IdP melayani `email` dari endpoint userinfo tetapi tidak akan menyertakannya dalam id\_token, seperti server otorisasi org Okta, atur `oidc.userinfo_fallback: true`. |

405| Log: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, dan pengembang melihat `Cloud gateway session expired` setiap `session.ttl_hours` | IdP menerima token refresh tetapi tidak mengembalikan id\_token dengannya, jadi gateway menanyakan endpoint userinfo IdP untuk klaim pengguna. IdP menolak token akses yang diperbarui di sana. Gateway menjawab `temporarily_unavailable`, jadi Claude Code menyimpan token refresh tetapi tidak dapat memperbarui sesi. Versi gateway sebelum v2.1.260 mencatat baris yang sama tanpa detail `(at …)`. | Atur [`oidc.scope_on_refresh: true`](/docs/id/claude-apps-gateway-config#oidc), tersedia di gateway v2.1.260 atau lebih baru, sehingga permintaan refresh meminta `openid` lagi. Beberapa IdP, seperti Okta, mengembalikan id\_token pada refresh hanya ketika diminta. Di PingFederate, aktifkan **Return ID Token On Refresh Grant** di bawah **Applications > OAuth > OpenID Connect Policy Management** sebagai gantinya. Kunci tidak mengubah perilaku PingFederate. Untuk IdP lain yang masih menghilangkannya, periksa apakah endpoint userinfo menerima token akses yang dikeluarkan oleh refresh. Sebagai solusi sementara, naikkan [`session.ttl_hours`](/docs/id/claude-apps-gateway-config#session). Lihat [Penyiapan penyedia identitas](#identity-provider-setup) untuk tradeoff deprovisioning. |405| Log: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, dan pengembang melihat `Cloud gateway session expired` setiap `session.ttl_hours` | IdP menerima token refresh tetapi tidak mengembalikan id\_token dengannya, jadi gateway menanyakan endpoint userinfo IdP untuk klaim pengguna. IdP menolak token akses yang diperbarui di sana. Gateway menjawab `temporarily_unavailable`, jadi Claude Code menyimpan token refresh tetapi tidak dapat memperbarui sesi. Versi gateway sebelum v2.1.260 mencatat baris yang sama tanpa detail `(at …)`. | Atur [`oidc.scope_on_refresh: true`](/docs/id/claude-apps-gateway-config#oidc), tersedia di gateway v2.1.260 atau lebih baru, sehingga permintaan refresh meminta `openid` lagi. Beberapa IdP, seperti Okta, mengembalikan id\_token pada refresh hanya ketika diminta. Di PingFederate, aktifkan **Return ID Token On Refresh Grant** di bawah **Applications > OAuth > OpenID Connect Policy Management** sebagai gantinya. Kunci tidak mengubah perilaku PingFederate. Untuk IdP lain yang masih menghilangkannya, periksa apakah endpoint userinfo menerima token akses yang dikeluarkan oleh refresh. Sebagai solusi sementara, naikkan [`session.ttl_hours`](/docs/id/claude-apps-gateway-config#session). Lihat [Penyiapan penyedia identitas](#identity-provider-setup) untuk tradeoff deprovisioning. |

406| Pengembang masuk, lalu setiap permintaan dari sesi itu gagal dengan kesalahan `431` | Token sesi dalam header `Authorization` setiap permintaan mencantumkan grup IdP pengembang, sehingga untuk pengembang yang berada di banyak grup, total header dapat melebihi yang diterima gateway | Lihat [Header permintaan terlalu besar setelah masuk](#request-headers-too-large-after-sign-in) untuk batas mana yang berlaku dan apa yang perlu diubah |

406| Setiap permintaan Amazon Bedrock mengembalikan 502; log menunjukkan `Could not load credentials from any providers` | Di EC2, batas hop default IMDSv2 sebesar 1 memblokir permintaan metadata instance dari dalam kontainer. Boot dan `/readyz` lulus bagaimanapun karena AWS SDK menyelesaikan kredensial instance pada permintaan pertama, bukan pada konstruksi klien | Naikkan batas hop dengan `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, atau atur dalam template peluncuran. Perubahan berlaku untuk setiap kontainer pada instance. Lebih suka peran tugas ECS di mana tersedia, yang membaca kredensial dari endpoint kredensial kontainer ECS dan menghindari perubahan sepenuhnya, atau terapkan perubahan pada instance gateway khusus untuk membatasi eksposur. |407| Setiap permintaan Amazon Bedrock mengembalikan 502; log menunjukkan `Could not load credentials from any providers` | Di EC2, batas hop default IMDSv2 sebesar 1 memblokir permintaan metadata instance dari dalam kontainer. Boot dan `/readyz` lulus bagaimanapun karena AWS SDK menyelesaikan kredensial instance pada permintaan pertama, bukan pada konstruksi klien | Naikkan batas hop dengan `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, atau atur dalam template peluncuran. Perubahan berlaku untuk setiap kontainer pada instance. Lebih suka peran tugas ECS di mana tersedia, yang membaca kredensial dari endpoint kredensial kontainer ECS dan menghindari perubahan sepenuhnya, atau terapkan perubahan pada instance gateway khusus untuk membatasi eksposur. |

407| Pada beban puncak, respons lambat dimulai atau tampak hang, atau gagal dengan 502 `all upstreams failed` sementara upstream sehat | Replika memiliki lebih banyak permintaan terbuka daripada yang dikirimnya upstream sekaligus, jadi permintaan ekstra menunggu di dalam gateway. Pada upstream `provider: anthropic`, permintaan yang menunggu lebih lama dari `timeouts.upstream_ttfb_ms` menyerah pada upstream itu, yang menghasilkan 502 ketika tidak ada upstream yang melayaninya kemudian. Log menampilkan peringatan yang berisi `client requests are open`. | Tambahkan replika, atau naikkan batas pada setiap replika. Lihat [Permintaan upstream bersamaan](#concurrent-upstream-requests). |408| Pada beban puncak, respons lambat dimulai atau tampak hang, atau gagal dengan 502 `all upstreams failed` sementara upstream sehat | Replika memiliki lebih banyak permintaan terbuka daripada yang dikirimnya upstream sekaligus, jadi permintaan ekstra menunggu di dalam gateway. Pada upstream `provider: anthropic`, permintaan yang menunggu lebih lama dari `timeouts.upstream_ttfb_ms` menyerah pada upstream itu, yang menghasilkan 502 ketika tidak ada upstream yang melayaninya kemudian. Log menampilkan peringatan yang berisi `client requests are open`. | Tambahkan replika, atau naikkan batas pada setiap replika. Lihat [Permintaan upstream bersamaan](#concurrent-upstream-requests). |

408| Kesalahan IdP: unknown or unsupported scope | IdP menolak scope yang tidak dikenalinya | Atur `oidc.scopes` ke tepat daftar yang diterima IdP Anda; itu harus menyertakan `openid`. Default adalah `openid profile email offline_access`. |409| Kesalahan IdP: unknown or unsupported scope | IdP menolak scope yang tidak dikenalinya | Atur `oidc.scopes` ke tepat daftar yang diterima IdP Anda; itu harus menyertakan `openid`. Default adalah `openid profile email offline_access`. |


420 421 

421Jika Claude Code melaporkan `couldn't load your organization's managed settings` setelah masuk gateway, Claude Code menamai alasannya, memulai ulang di tempat, dan melanjutkan percakapan. Jika Claude Code tidak dapat memulai ulang, misalnya dalam sesi latar belakang, Claude Code mengakhiri sesi dan menyimpan masuk.422Jika Claude Code melaporkan `couldn't load your organization's managed settings` setelah masuk gateway, Claude Code menamai alasannya, memulai ulang di tempat, dan melanjutkan percakapan. Jika Claude Code tidak dapat memulai ulang, misalnya dalam sesi latar belakang, Claude Code mengakhiri sesi dan menyimpan masuk.

422 423 

424<h3 id="request-headers-too-large-after-sign-in">

425 Header permintaan terlalu besar setelah masuk

426</h3>

427 

428Permintaan pengembang dapat gagal dengan kesalahan `431` setelah masuk ketika pengembang tersebut menjadi anggota banyak grup IdP.

429 

430Gateway menjawab `431` ketika total header sebuah permintaan melebihi 256 KiB, atau melebihi [`limits.max_request_header_bytes`](/docs/id/claude-apps-gateway-config#http-tuning) jika Anda mengaturnya. Gateway tidak menulis baris log atau acara audit apa pun untuk permintaan ini. Versi gateway sebelum v2.1.284 menjawab `431` di atas 16 KiB.

431 

432Apa yang perlu diubah bergantung pada versi dan konfigurasi gateway Anda:

433 

434* **Gateway lebih lama dari v2.1.284**: tingkatkan versi gateway

435* **`limits.max_request_header_bytes` diatur**: naikkan nilainya atau hapus kuncinya

436* **Tidak ada yang berlaku, atau `431` berlanjut setelahnya**: minta IdP Anda memancarkan lebih sedikit grup. [Penyiapan penyedia identitas](#identity-provider-setup) menjelaskan cara Okta, Microsoft Entra ID, dan Google Workspace menyediakan grup

437 

423<h2 id="related">438<h2 id="related">

424 Terkait439 Terkait

425</h2>440</h2>

Details

1598 1598 

1599`<project>` adalah jalur direktori kerja Anda dengan setiap karakter selain huruf dan angka diganti dengan `-`, seperti `-Users-you-my-project`. Jika Anda menetapkan [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars), pohon bergerak di bawah direktori itu sebagai gantinya. Hooks menerima jalur sesi saat ini sebagai [`scratchpad_dir`](/docs/id/hooks#common-input-fields).1599`<project>` adalah jalur direktori kerja Anda dengan setiap karakter selain huruf dan angka diganti dengan `-`, seperti `-Users-you-my-project`. Jika Anda menetapkan [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars), pohon bergerak di bawah direktori itu sebagai gantinya. Hooks menerima jalur sesi saat ini sebagai [`scratchpad_dir`](/docs/id/hooks#common-input-fields).

1600 1600 

1601File scratchpad bertahan selama transkrip sesi: [sweep retensi](#cleaned-up-automatically) menghapus direktori saat menghapus transkrip, dan [`claude project purge`](#clear-local-data) tidak menyentuh direktori temp. Karena direktori berada di bawah lokasi temp sistem, sistem operasi Anda juga dapat menghapusnya, seperti saat restart. Untuk menyimpan sesuatu yang Claude tulis di sana, minta Claude untuk memindahkannya ke proyek Anda.1601File scratchpad bertahan selama transkrip sesi: [sweep retensi](#cleaned-up-automatically) menghapus direktori saat menghapus transkrip, dan [`claude purge`](#clear-local-data) tidak menyentuh direktori temp. Karena direktori berada di bawah lokasi temp sistem, sistem operasi Anda juga dapat menghapusnya, seperti saat restart. Untuk menyimpan sesuatu yang Claude tulis di sana, minta Claude untuk memindahkannya ke proyek Anda.

1602 1602 

1603Sesi memiliki scratchpad hanya saat semua ini berlaku:1603Sesi memiliki scratchpad hanya saat semua ini berlaku:

1604 1604 


1645 Hapus data lokal1645 Hapus data lokal

1646</h3>1646</h3>

1647 1647 

1648Jalankan `claude project purge` untuk menghapus status yang Claude Code simpan untuk satu proyek. Ini menghapus:1648Jalankan `claude purge` untuk menghapus status yang Claude Code simpan untuk satu proyek. Ini menghapus:

1649 1649 

1650* Transkrip dan memori otomatis di bawah `projects/`1650* Transkrip dan memori otomatis di bawah `projects/`

1651* Entri `tasks/`, `debug/`, dan `file-history/` per-sesi1651* Entri `tasks/`, `debug/`, dan `file-history/` per-sesi


1656 1656 

1657Perintah mencetak rencana penghapusan lengkap dan meminta konfirmasi sebelum menghapus apa pun.1657Perintah mencetak rencana penghapusan lengkap dan meminta konfirmasi sebelum menghapus apa pun.

1658 1658 

1659Sebelum v2.1.288, perintahnya adalah `claude project purge`.

1660 

1659Contoh di bawah menggunakan `~/work/my-repo` sebagai placeholder. Gantilah dengan jalur ke proyek Anda. Jika tidak ada status yang cocok dengan jalur, perintah mencetak kesalahan dan keluar dengan status 1.1661Contoh di bawah menggunakan `~/work/my-repo` sebagai placeholder. Gantilah dengan jalur ke proyek Anda. Jika tidak ada status yang cocok dengan jalur, perintah mencetak kesalahan dan keluar dengan status 1.

1660 1662 

1661Pratinjau rencana tanpa menghapus apa pun:1663Pratinjau rencana tanpa menghapus apa pun:

1662 1664 

1663```bash theme={null}1665```bash theme={null}

1664claude project purge ~/work/my-repo --dry-run1666claude purge ~/work/my-repo --dry-run

1665```1667```

1666 1668 

1667Rencana mencantumkan setiap item yang cocok dan alasan dimasukkannya:1669Rencana mencantumkan setiap item yang cocok dan alasan dimasukkannya:


1684Hapus dengan satu prompt konfirmasi:1686Hapus dengan satu prompt konfirmasi:

1685 1687 

1686```bash theme={null}1688```bash theme={null}

1687claude project purge ~/work/my-repo1689claude purge ~/work/my-repo

1688```1690```

1689 1691 

1690Perintah mencetak rencana yang sama, kemudian menanyakan `Delete 3 item(s) for /home/user/work/my-repo? This cannot be undone. [y/N]` dan menghapus hanya jika Anda menjawab `y`.1692Perintah mencetak rencana yang sama, kemudian menanyakan `Delete 3 item(s) for /home/user/work/my-repo? This cannot be undone. [y/N]` dan menghapus hanya jika Anda menjawab `y`.


1694Lewati prompt konfirmasi untuk digunakan dalam skrip:1696Lewati prompt konfirmasi untuk digunakan dalam skrip:

1695 1697 

1696```bash theme={null}1698```bash theme={null}

1697claude project purge ~/work/my-repo --yes1699claude purge ~/work/my-repo --yes

1698```1700```

1699 1701 

1700Teruskan `--all` alih-alih jalur untuk membersihkan status untuk setiap proyek sekaligus, yang menghapus `history.jsonl` sepenuhnya daripada memfilternya. Teruskan `-i` untuk melangkah melalui rencana penghapusan satu item pada satu waktu.1702Teruskan `--all` alih-alih jalur untuk membersihkan status untuk setiap proyek sekaligus, yang menghapus `history.jsonl` sepenuhnya daripada memfilternya. Teruskan `-i` untuk melangkah melalui rencana penghapusan satu item pada satu waktu.

Details

500 Keterbatasan500 Keterbatasan

501</h2>501</h2>

502 502 

503* Project tersedia di claude.ai/code, di aplikasi desktop, dan di aplikasi mobile Claude, bukan di CLI terminal, ekstensi VS Code, atau plugin JetBrains, dan bukan melalui Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry. Perintah [`claude project`](/docs/id/cli-reference) CLI, yang mengelola keadaan Claude Code lokal untuk direktori, tidak terkait.503* Project tersedia di claude.ai/code, di aplikasi desktop, dan di aplikasi mobile Claude, bukan di CLI terminal, ekstensi VS Code, atau plugin JetBrains, dan bukan melalui Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry.

504* Thread project adalah [sesi cloud](/docs/id/claude-code-on-the-web), atau sesi di mesin Anda sendiri melalui [Remote Control](/docs/id/remote-control), dengan Anthropic sebagai penyedia model di kedua kasus. [Security](/docs/id/security) dan [Data usage](/docs/id/data-usage) mencakup bagaimana sesi cloud diisolasi dan apa yang disimpan, dan [Connection and security](/docs/id/remote-control#connection-and-security) mencakup bagaimana thread di mesin Anda terhubung dan apa yang disimpan.504* Thread project adalah [sesi cloud](/docs/id/claude-code-on-the-web), atau sesi di mesin Anda sendiri melalui [Remote Control](/docs/id/remote-control), dengan Anthropic sebagai penyedia model di kedua kasus. [Security](/docs/id/security) dan [Data usage](/docs/id/data-usage) mencakup bagaimana sesi cloud diisolasi dan apa yang disimpan, dan [Connection and security](/docs/id/remote-control#connection-and-security) mencakup bagaimana thread di mesin Anda terhubung dan apa yang disimpan.

505* Anda tidak dapat menambahkan sesi yang Anda mulai sendiri di mesin Anda ke project. Project mencapai mesin Anda hanya dengan [menjalankan thread di sana melalui Remote Control](#run-a-thread-on-your-own-computer), dan bagian itu mencantumkan apa yang dibutuhkannya.505* Anda tidak dapat menambahkan sesi yang Anda mulai sendiri di mesin Anda ke project. Project mencapai mesin Anda hanya dengan [menjalankan thread di sana melalui Remote Control](#run-a-thread-on-your-own-computer), dan bagian itu mencantumkan apa yang dibutuhkannya.

506* Sandbox thread cloud dijeda antara giliran dan dilanjutkan ketika thread berlanjut. Jika sandbox tidak dapat dilanjutkan, thread berlanjut dari klon segar, jadi perubahan yang tidak dicommit dapat hilang. Pada tugas panjang, minta Claude untuk commit dan push pekerjaan yang sedang berlangsung.506* Sandbox thread cloud dijeda antara giliran dan dilanjutkan ketika thread berlanjut. Jika sandbox tidak dapat dilanjutkan, thread berlanjut dari klon segar, jadi perubahan yang tidak dicommit dapat hilang. Pada tugas panjang, minta Claude untuk commit dan push pekerjaan yang sedang berlangsung.

Details

40| `claude mcp login <name>` | Jalankan alur OAuth server MCP yang dikonfigurasi tanpa membuka panel `/mcp` interaktif. Bekerja untuk server HTTP, SSE, dan konektor claude.ai. Tambahkan `--no-browser` melalui SSH untuk mencetak URL otorisasi alih-alih membuka browser, kemudian tempel URL pengalihan kembali di prompt. Lihat [Autentikasi dari baris perintah](/docs/id/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |40| `claude mcp login <name>` | Jalankan alur OAuth server MCP yang dikonfigurasi tanpa membuka panel `/mcp` interaktif. Bekerja untuk server HTTP, SSE, dan konektor claude.ai. Tambahkan `--no-browser` melalui SSH untuk mencetak URL otorisasi alih-alih membuka browser, kemudian tempel URL pengalihan kembali di prompt. Lihat [Autentikasi dari baris perintah](/docs/id/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |

41| `claude mcp logout <name>` | Hapus kredensial OAuth yang disimpan untuk server MCP | `claude mcp logout sentry` |41| `claude mcp logout <name>` | Hapus kredensial OAuth yang disimpan untuk server MCP | `claude mcp logout sentry` |

42| `claude plugin` | Kelola Claude Code [plugins](/docs/id/plugins/overview). Alias: `claude plugins`. Lihat [referensi plugin](/docs/id/plugins/cli-reference#claude-plugin-commands) untuk subperintah | `claude plugin install code-review@claude-plugins-official` |42| `claude plugin` | Kelola Claude Code [plugins](/docs/id/plugins/overview). Alias: `claude plugins`. Lihat [referensi plugin](/docs/id/plugins/cli-reference#claude-plugin-commands) untuk subperintah | `claude plugin install code-review@claude-plugins-official` |

43| `claude project purge [path]` | Hapus semua status Claude Code lokal untuk proyek: transkrip, daftar tugas, log debug, riwayat edit file, baris riwayat prompt, dan entri proyek di `~/.claude.json`. Abaikan `[path]` untuk memilih dari daftar interaktif. Flag: `--dry-run` untuk pratinjau, `-y`/`--yes` untuk melewati konfirmasi, `-i`/`--interactive` untuk mengonfirmasi setiap item, `--all` untuk setiap proyek. Lihat [Hapus data lokal](/docs/id/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |43| `claude purge [path]` | Hapus semua status Claude Code lokal untuk proyek: transkrip, daftar tugas, log debug, riwayat edit file, baris riwayat prompt, dan entri proyek di `~/.claude.json`. Abaikan `[path]` untuk memilih dari daftar interaktif. Flag: `--dry-run` untuk pratinjau, `-y`/`--yes` untuk melewati konfirmasi, `-i`/`--interactive` untuk mengonfirmasi setiap item, `--all` untuk setiap proyek. Lihat [Hapus data lokal](/docs/id/claude-directory#clear-local-data) | `claude purge ~/work/repo --dry-run` |

44| `claude remote-control` | Mulai server [Remote Control](/docs/id/remote-control) untuk mengontrol Claude Code dari Claude.ai atau aplikasi Claude. Berjalan dalam mode server (tidak ada sesi interaktif lokal). Lihat [flag mode server](/docs/id/remote-control#start-a-remote-control-session). Setelah Anda menghentikan server, Anda dapat membawa kembali sesi yang sedang dilayaninya. Lihat [Lanjutkan sesi setelah menghentikan server](/docs/id/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |44| `claude remote-control` | Mulai server [Remote Control](/docs/id/remote-control) untuk mengontrol Claude Code dari Claude.ai atau aplikasi Claude. Berjalan dalam mode server (tidak ada sesi interaktif lokal). Lihat [flag mode server](/docs/id/remote-control#start-a-remote-control-session). Setelah Anda menghentikan server, Anda dapat membawa kembali sesi yang sedang dilayaninya. Lihat [Lanjutkan sesi setelah menghentikan server](/docs/id/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |

45| `claude respawn <id>` | Mulai ulang [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell), berjalan atau dihentikan, dengan percakapannya tetap utuh. Gunakan `--all` untuk memulai ulang setiap sesi yang berjalan, misalnya untuk mengambil binary Claude Code yang diperbarui | `claude respawn 7c5dcf5d` |45| `claude respawn <id>` | Mulai ulang [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell), berjalan atau dihentikan, dengan percakapannya tetap utuh. Gunakan `--all` untuk memulai ulang setiap sesi yang berjalan, misalnya untuk mengambil binary Claude Code yang diperbarui | `claude respawn 7c5dcf5d` |

46| `claude rm <id>` | Hapus [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) dari daftar. Ketika penghapusan [ditolak melalui worktree sesi](/docs/id/agent-view#what-deleting-a-session-removes) dan `claude rm` kedua dapat menyelesaikannya, penolakan mencetak flag dan nilai yang tepat untuk dilewatkan: `--discard-unpushed <commit>@<worktree-id>` membuang worktree yang memiliki commit yang belum didorong bersama dengan commit tersebut, dan `--force-remove-worktree <worktree-id>` menghapus direktori worktree yang tidak dapat dihapus oleh git atau hook `WorktreeRemove`. `--discard-unpushed` memerlukan Claude Code v2.1.260 atau lebih baru, dan `--force-remove-worktree` memerlukan v2.1.268 atau lebih baru. Transkrip percakapan tetap berada di mesin lokal Anda, tersedia melalui `claude --resume` | `claude rm 7c5dcf5d` |46| `claude rm <id>` | Hapus [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) dari daftar. Ketika penghapusan [ditolak melalui worktree sesi](/docs/id/agent-view#what-deleting-a-session-removes) dan `claude rm` kedua dapat menyelesaikannya, penolakan mencetak flag dan nilai yang tepat untuk dilewatkan: `--discard-unpushed <commit>@<worktree-id>` membuang worktree yang memiliki commit yang belum didorong bersama dengan commit tersebut, dan `--force-remove-worktree <worktree-id>` menghapus direktori worktree yang tidak dapat dihapus oleh git atau hook `WorktreeRemove`. `--discard-unpushed` memerlukan Claude Code v2.1.260 atau lebih baru, dan `--force-remove-worktree` memerlukan v2.1.268 atau lebih baru. Transkrip percakapan tetap berada di mesin lokal Anda, tersedia melalui `claude --resume` | `claude rm 7c5dcf5d` |


51 51 

52Jika Anda salah mengetik subperintah, Claude Code menyarankan kecocokan terdekat dan keluar tanpa memulai sesi. Misalnya, `claude udpate` mencetak `Did you mean claude update?`.52Jika Anda salah mengetik subperintah, Claude Code menyarankan kecocokan terdekat dan keluar tanpa memulai sesi. Misalnya, `claude udpate` mencetak `Did you mean claude update?`.

53 53 

54Mulai dari v2.1.199, `claude --dangerously-skip-permissions daemon <subcommand>` menjalankan subperintah `daemon`. Versi sebelumnya memperlakukan `daemon <subcommand>` sebagai prompt untuk sesi interaktif baru, sehingga subperintah tidak pernah berjalan ketika flag datang terlebih dahulu, setup umum ketika `claude` memiliki alias untuk menyertakan flag. Hanya `--dangerously-skip-permissions` atau `--allow-dangerously-skip-permissions` yang terdepan yang merutekan ke `daemon` dengan cara ini; flag terdepan lainnya masih memulai sesi interaktif.54`claude --dangerously-skip-permissions daemon <subcommand>` menjalankan subperintah `daemon`, sehingga subperintah tetap berfungsi ketika `claude` memiliki alias untuk menyertakan flag tersebut. Hanya `--dangerously-skip-permissions` atau `--allow-dangerously-skip-permissions` yang terdepan yang merutekan ke `daemon` dengan cara ini; jika ada flag lain di depan `daemon`, subperintah tidak berjalan.

55 55 

56<h2 id="cli-flags">56<h2 id="cli-flags">

57 Bendera CLI57 Bendera CLI

Details

118 Tambahkan kredensial118 Tambahkan kredensial

119</h4>119</h4>

120 120 

121Anda menambahkan kredensial satu per satu dari editor lingkungan yang sudah ada. Dialog untuk lingkungan baru tidak menawarkannya. Tidak ada edit juga. Untuk mengubah host atau nilai kredensial, hapus dan tambahkan lagi.121Anda menambahkan kredensial satu per satu, dan Anda tidak dapat mengedit kredensial setelah menambahkannya. Untuk mengubah host atau nilai kredensial, hapus dan tambahkan lagi.

122 122 

123<Steps>123<Steps>

124 <Step title="Buka kredensial API lingkungan">124 <Step title="Buka kredensial API lingkungan">

125 [Buka lingkungan untuk diedit](#configure-your-environment) di [claude.ai/code](https://claude.ai/code). Di dialog **Edit cloud environment**, temukan **API credentials** di bawah **Environment variables**. Anda melihat kredensial yang sudah ada di lingkungan, masing-masing dengan host yang berlaku.125 [Buka lingkungan untuk diedit](#configure-your-environment) di [claude.ai/code](https://claude.ai/code). Di dialog **Edit environment**, temukan bagian **API credentials**. Anda melihat kredensial yang sudah ada di lingkungan, masing-masing dengan host yang berlaku.

126 </Step>126 </Step>

127 127 

128 <Step title="Tambahkan kredensial">128 <Step title="Tambahkan kredensial">

code-review.md +3 −2

Details

345 Anda juga dapat menambahkan flag:345 Anda juga dapat menambahkan flag:

346 346 

347 * `--fix`: menerapkan temuan ke pohon kerja Anda setelah ulasan347 * `--fix`: menerapkan temuan ke pohon kerja Anda setelah ulasan

348 * `--comment`: memposting temuan pada permintaan tarik GitHub sebagai komentar sebaris, atau pada permintaan penggabungan GitLab sebagai catatan tunggal348 * `--comment`: memposting temuan pada pull request GitHub sebagai komentar sebaris, atau pada merge request GitLab sebagai catatan tunggal

349 * `--post`: pada ulasan cloud `ultra` dari permintaan tarik `github.com`, pra-memilih posting temuan yang selesai ke PR dalam dialog peluncuran; lihat [Posting temuan ke permintaan tarik](/docs/id/ultrareview#post-findings-to-the-pull-request). Memerlukan Claude Code v2.1.227 atau lebih baru349 * `--post`: pada ulasan cloud `ultra` dari pull request `github.com`, pra-memilih posting temuan yang selesai ke PR dalam dialog peluncuran; lihat [Posting temuan ke pull request](/docs/id/ultrareview#post-findings-to-the-pull-request). Memerlukan Claude Code v2.1.227 atau lebih baru

350 * `--max-findings <n>`, `--max-findings all`, atau `--max-findings default`: melaporkan hingga `n` temuan, atau setiap temuan dengan `all`, sebagai pengganti batas biasa ulasan. Ulasan berikutnya menggunakan kembali nilai yang Anda ketik hingga Anda melewatkan `--max-findings default`. Memerlukan Claude Code v2.1.288 atau lebih baru

350 351 

351 Ketika Anda melewatkan `--comment` untuk permintaan penggabungan GitLab, Claude Code memposting temuan melalui CLI `glab` GitLab. Memerlukan Claude Code v2.1.257 atau lebih baru. Ketika `glab` tidak diinstal, Claude mencetak temuan di terminal sebagai gantinya.352 Ketika Anda melewatkan `--comment` untuk permintaan penggabungan GitLab, Claude Code memposting temuan melalui CLI `glab` GitLab. Memerlukan Claude Code v2.1.257 atau lebih baru. Ketika `glab` tidak diinstal, Claude mencetak temuan di terminal sebagai gantinya.

352 353 

commands.md +2 −2

Details

72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/id/skills#bundled-skills).** Muat materi referensi [Claude API](https://platform.claude.com/docs/en/api/overview) dan [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) untuk bahasa proyek Anda. Juga diaktifkan secara otomatis ketika kode Anda mengimpor `anthropic` atau `@anthropic-ai/sdk`. Untuk apa yang dilakukan setiap subperintah dan versi yang diperlukan, lihat [Bekerja pada proyek Claude API](/docs/id/skills#work-on-claude-api-projects) |72| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb\|preserved-thinking-migration]` | **[Skill](/docs/id/skills#bundled-skills).** Muat materi referensi [Claude API](https://platform.claude.com/docs/en/api/overview) dan [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) untuk bahasa proyek Anda. Juga diaktifkan secara otomatis ketika kode Anda mengimpor `anthropic` atau `@anthropic-ai/sdk`. Untuk apa yang dilakukan setiap subperintah dan versi yang diperlukan, lihat [Bekerja pada proyek Claude API](/docs/id/skills#work-on-claude-api-projects) |

73| `/claude-in-chrome [task]` | **[Skill](/docs/id/skills#bundled-skills).** Buat Claude melakukan tugas di browser Anda, seperti menguji halaman, mengisi formulir, atau membaca log konsol, melalui [Claude di Chrome](/docs/id/chrome). Tersedia ketika integrasi Chrome diaktifkan untuk sesi, misalnya dengan `claude --chrome`, atau ketika Claude Code dapat menawarkan untuk [memasang ekstensi](/docs/id/chrome#install-the-extension-when-claude-asks) |73| `/claude-in-chrome [task]` | **[Skill](/docs/id/skills#bundled-skills).** Buat Claude melakukan tugas di browser Anda, seperti menguji halaman, mengisi formulir, atau membaca log konsol, melalui [Claude di Chrome](/docs/id/chrome). Tersedia ketika integrasi Chrome diaktifkan untuk sesi, misalnya dengan `claude --chrome`, atau ketika Claude Code dapat menawarkan untuk [memasang ekstensi](/docs/id/chrome#install-the-extension-when-claude-asks) |

74| `/clear [name]` | Mulai percakapan baru dengan konteks kosong. Berikan nama untuk memberi label percakapan sebelumnya di pemilih `/resume`. Untuk membebaskan konteks sambil melanjutkan percakapan yang sama, gunakan `/compact` sebagai gantinya. Lanjutkan percakapan sebelumnya dengan `/resume`, atau, dalam proses Claude Code yang sama, pulihkan dari [entri sesi sebelumnya menu rewind](/docs/id/checkpointing#rewind-past-a-cleared-conversation). Alias: `/reset`, `/new` |74| `/clear [name]` | Mulai percakapan baru dengan konteks kosong. Berikan nama untuk memberi label percakapan sebelumnya di pemilih `/resume`. Untuk membebaskan konteks sambil melanjutkan percakapan yang sama, gunakan `/compact` sebagai gantinya. Lanjutkan percakapan sebelumnya dengan `/resume`, atau, dalam proses Claude Code yang sama, pulihkan dari [entri sesi sebelumnya menu rewind](/docs/id/checkpointing#rewind-past-a-cleared-conversation). Alias: `/reset`, `/new` |

75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/id/skills#bundled-skills).** Tinjau diff saat ini, atau nomor PR, branch, atau jalur yang Anda berikan, untuk bug kebenaran. Tergantung pada model dan tingkat effort Anda, tinjauan juga mencakup peluang pembersihan. Berikan `--fix` untuk menerapkan temuan, `--comment` untuk mempostingnya di PR GitHub atau merge request GitLab, atau `ultra` untuk menjalankan [tinjauan cloud](/docs/id/ultrareview) mendalam. Memposting ke merge request GitLab memerlukan Claude Code v2.1.257 atau lebih baru. Dengan `ultra` pada target PR `github.com`, berikan `--post` untuk pra-pilih [memposting temuan selesai ke PR](/docs/id/ultrareview#post-findings-to-the-pull-request) dalam dialog peluncuran; `--post` memerlukan Claude Code v2.1.227 atau lebih baru. Lihat [Tinjau diff secara lokal](/docs/id/code-review#review-a-diff-locally) untuk tingkat effort, penargetan, dan bagaimana hubungannya dengan `/simplify`. Alias: `/review` |75| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | **[Skill](/docs/id/skills#bundled-skills).** Tinjau diff saat ini, atau nomor PR, branch, atau jalur yang Anda berikan, untuk bug kebenaran. Tergantung pada model dan tingkat effort Anda, tinjauan juga mencakup peluang pembersihan. Berikan `--fix` untuk menerapkan temuan, `--comment` untuk mempostingnya di PR GitHub atau merge request GitLab, atau `ultra` untuk menjalankan [tinjauan cloud](/docs/id/ultrareview) mendalam. Memposting ke merge request GitLab memerlukan Claude Code v2.1.257 atau lebih baru. Dengan `ultra` pada target PR `github.com`, berikan `--post` untuk pra-pilih [memposting temuan selesai ke PR](/docs/id/ultrareview#post-findings-to-the-pull-request) dalam dialog peluncuran; `--post` memerlukan Claude Code v2.1.227 atau lebih baru. Lihat [Tinjau diff secara lokal](/docs/id/code-review#review-a-diff-locally) untuk tingkat effort, penargetan, dan bagaimana hubungannya dengan `/simplify`. Alias: `/review` |

76| `/color [color\|default]` | Atur warna bilah prompt untuk sesi saat ini. Warna tersedia: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Gunakan `default` untuk mengatur ulang, atau jalankan tanpa argumen untuk memilih warna acak. Ketika [Remote Control](/docs/id/remote-control) terhubung, warna disinkronkan ke claude.ai/code. Juga tersedia dalam mode non-interaktif (`-p`); memerlukan Claude Code v2.1.205 atau lebih baru |76| `/color [color\|default]` | Atur warna bilah prompt untuk sesi saat ini. Warna tersedia: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Gunakan `default` untuk mengatur ulang, atau jalankan tanpa argumen untuk memilih warna acak. Ketika [Remote Control](/docs/id/remote-control) terhubung, warna disinkronkan ke claude.ai/code. Juga tersedia dalam mode non-interaktif (`-p`); memerlukan Claude Code v2.1.205 atau lebih baru |

77| `/compact [instructions]` | Bebaskan konteks dengan merangkum percakapan sejauh ini. Secara opsional berikan instruksi fokus untuk ringkasan. Lihat [bagaimana compaction menangani aturan, skill, dan file memori](/docs/id/context-window#what-survives-compaction) |77| `/compact [instructions]` | Bebaskan konteks dengan merangkum percakapan sejauh ini. Secara opsional berikan instruksi fokus untuk ringkasan. Lihat [bagaimana compaction menangani aturan, skill, dan file memori](/docs/id/context-window#what-survives-compaction) |

78| `/config [key=value ...]` | Buka antarmuka [Pengaturan](/docs/id/settings) untuk menyesuaikan tema, model, [gaya output](/docs/id/output-styles), dan preferensi lainnya. Berikan satu atau lebih pasangan `key=value` untuk mengatur pengaturan secara langsung tanpa membuka antarmuka, misalnya `/config thinking=false`, `/config theme=dark`, atau `/config model=sonnet`. Bentuk `key=value` juga berfungsi dalam mode non-interaktif (`-p`) dan dari aplikasi mobile Claude melalui [Remote Control](/docs/id/remote-control). Bentuk `key=value` tidak dapat mengaktifkan pengaturan yang memerlukan konfirmasi Anda di panel, seperti [`autoContinueAtUsageLimit`](/docs/id/interactive-mode#turn-automatic-continue-off), meskipun dapat menonaktifkannya. Jalankan `/config --help` untuk mencantumkan kunci yang diterima. Alias: `/settings` |78| `/config [key=value ...]` | Buka antarmuka [Pengaturan](/docs/id/settings) untuk menyesuaikan tema, model, [gaya output](/docs/id/output-styles), dan preferensi lainnya. Berikan satu atau lebih pasangan `key=value` untuk mengatur pengaturan secara langsung tanpa membuka antarmuka, misalnya `/config thinking=false`, `/config theme=dark`, atau `/config model=sonnet`. Bentuk `key=value` juga berfungsi dalam mode non-interaktif (`-p`) dan dari aplikasi mobile Claude melalui [Remote Control](/docs/id/remote-control). Bentuk `key=value` tidak dapat mengaktifkan pengaturan yang memerlukan konfirmasi Anda di panel, seperti [`autoContinueAtUsageLimit`](/docs/id/interactive-mode#turn-automatic-continue-off), meskipun dapat menonaktifkannya. Jalankan `/config --help` untuk mencantumkan kunci yang diterima. Alias: `/settings` |


134| `/remote-env` | Pilih [lingkungan cloud](/docs/id/cloud-environments#select-an-environment-from-the-cli) default untuk sesi cloud yang Anda mulai dari CLI |134| `/remote-env` | Pilih [lingkungan cloud](/docs/id/cloud-environments#select-an-environment-from-the-cli) default untuk sesi cloud yang Anda mulai dari CLI |

135| `/rename [name]` | Ganti nama sesi saat ini dan tampilkan nama di bilah prompt. Tanpa nama, auto-generate dari riwayat percakapan. Juga tersedia dalam mode non-interaktif (`-p`); memerlukan Claude Code v2.1.205 atau lebih baru. Dari setiap surface penggantian nama, termasuk claude.ai dan aplikasi desktop, Claude Code mengganti karakter kontrol dan tidak terlihat dalam nama baru dengan spasi dan membatasi nama pada 200 karakter. Jika nama kosong setelah karakter tidak terlihat dihapus, Claude Code menolaknya dan menunjukkan `That name is empty once invisible characters are removed. Usage: /rename <name>`. Penggantian karakter dan batas panjang memerlukan Claude Code v2.1.221 atau lebih baru. Jika sesi langsung lain di mesin ini sudah menggunakan nama yang Anda berikan, Claude Code menerapkan [varian darinya](/docs/id/sessions#name-your-sessions) sebagai gantinya |135| `/rename [name]` | Ganti nama sesi saat ini dan tampilkan nama di bilah prompt. Tanpa nama, auto-generate dari riwayat percakapan. Juga tersedia dalam mode non-interaktif (`-p`); memerlukan Claude Code v2.1.205 atau lebih baru. Dari setiap surface penggantian nama, termasuk claude.ai dan aplikasi desktop, Claude Code mengganti karakter kontrol dan tidak terlihat dalam nama baru dengan spasi dan membatasi nama pada 200 karakter. Jika nama kosong setelah karakter tidak terlihat dihapus, Claude Code menolaknya dan menunjukkan `That name is empty once invisible characters are removed. Usage: /rename <name>`. Penggantian karakter dan batas panjang memerlukan Claude Code v2.1.221 atau lebih baru. Jika sesi langsung lain di mesin ini sudah menggunakan nama yang Anda berikan, Claude Code menerapkan [varian darinya](/docs/id/sessions#name-your-sessions) sebagai gantinya |

136| `/resume [session]` | Lanjutkan percakapan berdasarkan ID atau nama, atau buka pemilih sesi. [Sesi latar belakang](/docs/id/agent-view) muncul di pemilih ditandai dengan `bg`. Melanjutkan satu yang masih berjalan, dari pemilih atau berdasarkan ID atau nama, [membuka sesi itu](/docs/id/sessions#resume-a-running-background-session): percakapan saat ini Anda pindah ke latar belakang dan terminal ini melampirkan ke yang berjalan. Tekan `←` pada prompt kosong untuk kembali ke tampilan agent, yang juga mencantumkan percakapan yang Anda tinggalkan. Sebelum v2.1.285, Claude Code menolak dan memberi tahu Anda untuk membuka sesi dengan `claude attach` atau menghentikannya terlebih dahulu. Alias: `/continue` |136| `/resume [session]` | Lanjutkan percakapan berdasarkan ID atau nama, atau buka pemilih sesi. [Sesi latar belakang](/docs/id/agent-view) muncul di pemilih ditandai dengan `bg`. Melanjutkan satu yang masih berjalan, dari pemilih atau berdasarkan ID atau nama, [membuka sesi itu](/docs/id/sessions#resume-a-running-background-session): percakapan saat ini Anda pindah ke latar belakang dan terminal ini melampirkan ke yang berjalan. Tekan `←` pada prompt kosong untuk kembali ke tampilan agent, yang juga mencantumkan percakapan yang Anda tinggalkan. Sebelum v2.1.285, Claude Code menolak dan memberi tahu Anda untuk membuka sesi dengan `claude attach` atau menghentikannya terlebih dahulu. Alias: `/continue` |

137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | Alias dari [`/code-review`](/docs/id/code-review#review-a-diff-locally): meninjau diff saat ini, atau nomor PR, branch, atau jalur yang Anda berikan, seperti `/review 1234`, dan mengambil tingkat effort dan flag yang sama. Tanpa level yang diberikan, tinjauan menggunakan kembali level `low` hingga `max` terakhir yang Anda ketik; lihat [Tinjau diff secara lokal](/docs/id/code-review#review-a-diff-locally) untuk aturan yang tepat. Untuk tinjauan cloud mendalam, gunakan [`/code-review ultra`](/docs/id/ultrareview). Sebelum v2.1.223, `/review` adalah perintah terpisah yang menjalankan tinjauan read-only satu lintasan dari pull request GitHub berdasarkan nomor, mencantumkan PR terbuka untuk dipilih saat dijalankan tanpa argumen; dari v2.1.186 hingga v2.1.201, itu menjalankan mesin multi-agent yang sama seperti `/code-review medium` |137| `/review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [--max-findings n\|all\|default] [pr#\|branch\|path]` | Alias dari [`/code-review`](/docs/id/code-review#review-a-diff-locally): meninjau diff saat ini, atau nomor PR, branch, atau jalur yang Anda berikan, seperti `/review 1234`, dan mengambil tingkat effort dan flag yang sama. Tanpa level yang diberikan, tinjauan menggunakan kembali level `low` hingga `max` terakhir yang Anda ketik; lihat [Tinjau diff secara lokal](/docs/id/code-review#review-a-diff-locally) untuk aturan yang tepat. Untuk tinjauan cloud mendalam, gunakan [`/code-review ultra`](/docs/id/ultrareview). Sebelum v2.1.223, `/review` adalah perintah terpisah yang menjalankan tinjauan read-only satu lintasan dari pull request GitHub berdasarkan nomor, mencantumkan PR terbuka untuk dipilih saat dijalankan tanpa argumen; dari v2.1.186 hingga v2.1.201, itu menjalankan mesin multi-agent yang sama seperti `/code-review medium` |

138| `/rewind` | Putar ulang percakapan dan/atau kode ke titik sebelumnya, atau ringkas dari pesan yang dipilih. Lihat [checkpointing](/docs/id/checkpointing). Alias: `/checkpoint`, `/undo` |138| `/rewind` | Putar ulang percakapan dan/atau kode ke titik sebelumnya, atau ringkas dari pesan yang dipilih. Lihat [checkpointing](/docs/id/checkpointing). Alias: `/checkpoint`, `/undo` |

139| `/run` | **[Skill](/docs/id/skills#bundled-skills).** Luncurkan dan jalankan aplikasi proyek Anda untuk melihat perubahan bekerja, bukan hanya lulus tes. Lihat [Jalankan dan verifikasi aplikasi Anda](/docs/id/skills#run-and-verify-your-app) |139| `/run` | **[Skill](/docs/id/skills#bundled-skills).** Luncurkan dan jalankan aplikasi proyek Anda untuk melihat perubahan bekerja, bukan hanya lulus tes. Lihat [Jalankan dan verifikasi aplikasi Anda](/docs/id/skills#run-and-verify-your-app) |

140| `/run-skill-generator` | **[Skill](/docs/id/skills#bundled-skills).** Ajarkan `/run` dan `/verify` cara mem-build, meluncurkan, dan menjalankan aplikasi proyek Anda dari lingkungan bersih dengan menulis [skill](/docs/id/skills#run-and-verify-your-app) per-proyek |140| `/run-skill-generator` | **[Skill](/docs/id/skills#bundled-skills).** Ajarkan `/run` dan `/verify` cara mem-build, meluncurkan, dan menjalankan aplikasi proyek Anda dari lingkungan bersih dengan menulis [skill](/docs/id/skills#run-and-verify-your-app) per-proyek |

Details

46 46 

47 Tim,47 Tim,

48 48 

49 Mulai hari ini Anda memiliki akses ke Claude Code, agen pengkodean AI yang berjalan di49 Mulai hari ini Anda memiliki akses ke Claude Code, agent pengkodean AI yang berjalan di

50 terminal Anda, membaca basis kode aktual Anda, dan menyelesaikan tugas nyata dari awal hingga akhir:50 terminal Anda, membaca basis kode aktual Anda, dan menyelesaikan tugas nyata dari awal hingga akhir:

51 debugging, refactor, tes, PR. Ini bukan autocomplete dan bukan jendela chat. Ini mengedit file,51 debugging, refactor, tes, PR. Ini bukan autocomplete dan bukan jendela chat. Ini mengedit file

52 menjalankan perintah Anda, dan meminta izin sebelum melakukan apa pun yang berisiko.52 dan menjalankan perintah Anda.

53 53 

54 Mulai berjalan dalam dua menit:54 Mulai berjalan dalam dua menit:

55 55 


67 - "Lihat diff kerja saya dan beri tahu saya apa yang berisiko sebelum saya push"67 - "Lihat diff kerja saya dan beri tahu saya apa yang berisiko sebelum saya push"

68 68 

69 Ke mana kode Anda pergi: Claude Code berjalan di terminal Anda dan berbicara langsung69 Ke mana kode Anda pergi: Claude Code berjalan di terminal Anda dan berbicara langsung

70 ke API Anthropic, tanpa server pihak ketiga dalam loop. Ini meminta sebelum70 ke API Anthropic. Pada paket Team atau Enterprise kami, Anthropic tidak menggunakan

71 mengedit file atau menjalankan perintah. Pada paket Team atau Enterprise kami, Anthropic71 kode atau prompt Anda untuk melatih modelnya.

72 tidak menggunakan kode atau prompt Anda untuk melatih modelnya.

73 Detail: https://code.claude.com/docs/en/data-usage72 Detail: https://code.claude.com/docs/en/data-usage

74 https://code.claude.com/docs/en/security73 https://code.claude.com/docs/en/security

75 74 


79 - [Nama]78 - [Nama]

80 79 

81 P.S. Lebih suka editor Anda? Ada ekstensi VS Code dan plugin JetBrains.80 P.S. Lebih suka editor Anda? Ada ekstensi VS Code dan plugin JetBrains.

82 Agen yang sama, tidak perlu terminal.81 Agent yang sama, tidak perlu terminal.

83 ```82 ```

84 </Tab>83 </Tab>

85 84 


87 ```markdown theme={null}86 ```markdown theme={null}

88 🚀 *Claude Code aktif untuk [tim]*87 🚀 *Claude Code aktif untuk [tim]*

89 88 

90 Agen pengkodean AI, berjalan di terminal Anda, membaca repo Anda, melakukan pekerjaan nyata:89 Agent pengkodean AI, berjalan di terminal Anda, membaca repo Anda, melakukan pekerjaan nyata:

91 bug, refactor, tes, PR. Meminta sebelum menyentuh apa pun.90 bug, refactor, tes, PR.

92 91 

93 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` → `claude`92 `curl -fsSL https://claude.ai/install.sh | bash` → `cd your-repo` → `claude`

94 93 

95 *Hal pertama yang harus dicoba* → jalankan `/init`, kemudian: "tes di [file] tidak stabil,94 *Hal pertama yang harus dicoba* → jalankan `/init`, kemudian: "tes di [file] tidak stabil,

96 cari tahu mengapa dan perbaiki."95 cari tahu mengapa dan perbaiki."

97 96 

98 🔒 Berjalan di terminal Anda, berbicara hanya ke API Anthropic. Pada paket Team atau97 🔒 Berjalan di terminal Anda, berbicara langsung ke API Anthropic. Pada paket Team atau

99 Enterprise kami, kode dan prompt Anda tidak digunakan untuk melatih model.98 Enterprise kami, kode dan prompt Anda tidak digunakan untuk melatih model.

100 Penggunaan data → https://code.claude.com/docs/en/data-usage99 Penggunaan data → https://code.claude.com/docs/en/data-usage

101 100 

102 📚 Quickstart · VS Code · Kursus gratis 1 jam101 📚 Mulai cepat · VS Code · Kursus gratis 1 jam

103 https://code.claude.com/docs/en/quickstart102 https://code.claude.com/docs/en/quickstart

104 https://code.claude.com/docs/en/vs-code103 https://code.claude.com/docs/en/vs-code

105 https://academy.claude.com/courses/claude-code-in-action104 https://academy.claude.com/courses/claude-code-in-action


181[Lanjutkan dengan "Mulai berjalan dalam dua menit" dari pengumuman standar]180[Lanjutkan dengan "Mulai berjalan dalam dua menit" dari pengumuman standar]

182 181 

183Satu hal ekstra untuk pilot: pada perubahan multi-file pertama Anda, tekan Shift+Tab182Satu hal ekstra untuk pilot: pada perubahan multi-file pertama Anda, tekan Shift+Tab

184sampai Anda melihat "plan". Claude akan meletakkan dengan tepat apa yang dimaksudkan untuk dilakukan183sampai Anda melihat "plan". Claude akan memaparkan apa yang ingin dilakukannya

185sebelum menyentuh file. Ini adalah cara tercepat untuk mengkalibrasi berapa banyak yang harus dipercayai.184tanpa mengedit kode sumber Anda. Ini adalah cara tercepat untuk mengkalibrasi seberapa

185besar Anda dapat mempercayainya.

186```186```

187 187 

188<h3 id="champion-recruitment-dm">188<h3 id="champion-recruitment-dm">


320*Shift+Tab* bersiklus melalui berapa banyak yang dapat dilakukan Claude tanpa bertanya: *Manual* (nilai320*Shift+Tab* bersiklus melalui berapa banyak yang dapat dilakukan Claude tanpa bertanya: *Manual* (nilai

321pengaturan `default`) meminta sebelum edit file dan sebagian besar perintah shell, *acceptEdits* membiarkan edit file dan perintah321pengaturan `default`) meminta sebelum edit file dan sebagian besar perintah shell, *acceptEdits* membiarkan edit file dan perintah

322filesystem umum mengalir sementara masih memeriksa sebelum perintah shell lainnya, dan *plan*322filesystem umum mengalir sementara masih memeriksa sebelum perintah shell lainnya, dan *plan*

323mengusulkan perubahan untuk persetujuan Anda sebelum apa pun disentuh. Mode plan adalah pembangun323meneliti dan mengusulkan perubahan tanpa mengedit kode sumber Anda. Plan mode adalah pembangun

324kepercayaan, jadi mulai dari sana untuk apa pun yang menyentuh beberapa file.324kepercayaan, jadi mulai dari sana untuk apa pun yang menyentuh beberapa file.

325 325 

326*Coba sekarang:* pada refactor berikutnya, tekan Shift+Tab sampai Anda melihat "plan",326*Coba sekarang:* pada refactor berikutnya, tekan Shift+Tab sampai Anda melihat "plan",

327kemudian jelaskan perubahan. Anda akan mendapatkan proposal lengkap sebelum file tunggal bergerak.327kemudian jelaskan perubahan. Anda akan mendapatkan proposal lengkap untuk ditinjau.

328 328 

329📖 Permission modes → https://code.claude.com/docs/id/permissions329📖 Permission modes → https://code.claude.com/docs/id/permissions

330```330```


482Seseorang di tim Anda akan bertanya "tunggu, ke mana kode saya pergi?"482Seseorang di tim Anda akan bertanya "tunggu, ke mana kode saya pergi?"

483Berikut versi singkat yang dapat Anda tempel.483Berikut versi singkat yang dapat Anda tempel.

484 484 

485Izin-pertama dengan desain. Setiap edit file, perintah shell, dan panggilan eksternal485Mode izin menentukan tindakan mana yang dapat dilakukan Claude tanpa bertanya kepada Anda

486dijaga oleh persetujuan Anda. CLI berjalan di terminal Anda dan berbicara langsung486terlebih dahulu. CLI berjalan di terminal Anda, berbicara langsung ke API Anthropic,

487ke API Anthropic, tanpa server pihak ketiga, dan mendukung sandboxing tingkat OS opsional487dan mendukung sandboxing tingkat OS opsional untuk perintah shell. Pada paket Team atau Enterprise,

488untuk perintah shell. Di bawah paket Team atau Enterprise, Anthropic tidak menggunakan kode488Anthropic tidak menggunakan kode atau prompt Anda untuk melatih modelnya.

489atau prompt Anda untuk melatih modelnya.

490 489 

491*Coba sekarang:* simpan dua tautan ini untuk lain kali pertanyaan muncul.490*Coba sekarang:* simpan dua tautan ini untuk lain kali pertanyaan muncul.

492Mereka menjawab sebagian besar pertanyaan review keamanan.491Mereka menjawab sebagian besar pertanyaan review keamanan.


529| - | - |528| - | - |

530| "Apakah itu bekerja di VS Code?" | Ya. Ada ekstensi VS Code dan plugin JetBrains dengan fitur yang sama, tertanam di editor Anda. [VS Code →](/docs/id/vs-code) |529| "Apakah itu bekerja di VS Code?" | Ya. Ada ekstensi VS Code dan plugin JetBrains dengan fitur yang sama, tertanam di editor Anda. [VS Code →](/docs/id/vs-code) |

531| "Apakah saya harus mengonfigurasi apa pun terlebih dahulu?" | Tidak. Instal, kemudian jalankan `claude` di repo apa pun. Jalankan `/init` sekali dan Anda siap. [Quickstart →](/docs/id/quickstart) |530| "Apakah saya harus mengonfigurasi apa pun terlebih dahulu?" | Tidak. Instal, kemudian jalankan `claude` di repo apa pun. Jalankan `/init` sekali dan Anda siap. [Quickstart →](/docs/id/quickstart) |

532| "Di mana kode saya pergi?" | CLI berjalan di terminal Anda dan mengirim konteks ke API Anthropic untuk inferensi, tanpa server pihak ketiga. Di bawah paket Team atau Enterprise, kode dan prompt Anda tidak digunakan untuk melatih model. [Penggunaan data →](/docs/id/data-usage) |531| "Di mana kode saya pergi?" | CLI berjalan di terminal Anda dan mengirim konteks ke API Anthropic untuk inferensi. Di bawah paket Team atau Enterprise, kode dan prompt Anda tidak digunakan untuk melatih model. [Penggunaan data →](/docs/id/data-usage) |

533| "Bisakah itu melihat seluruh repo saya?" | Itu membaca apa yang Anda berikan akses. Pembacaan file di dalam direktori kerja Anda tidak meminta; prompt izin menjaga edit, perintah shell non-read-only, dan pembacaan file-tool di luar direktori itu. Serangkaian perintah shell read-only bawaan seperti `ls` dan `cat` berjalan tanpa meminta; batasi dengan [aturan sandbox `denyRead`](/docs/id/sandboxing#filesystem-isolation). [Izin →](/docs/id/permissions) |532| "Bisakah itu melihat seluruh repo saya?" | Itu membaca apa yang Anda berikan akses. Pembacaan file di dalam direktori kerja Anda tidak memunculkan permintaan izin. [Izin →](/docs/id/permissions) |

534| "Bagaimana ini berbeda dari Copilot?" | Copilot melengkapi baris. Claude Code adalah agen yang membaca file, menjalankan perintah, dan membuat edit multi-file. [Ikhtisar →](/docs/id/overview) |533| "Bagaimana ini berbeda dari Copilot?" | Copilot melengkapi baris. Claude Code adalah agen yang membaca file, menjalankan perintah, dan membuat edit multi-file. [Ikhtisar →](/docs/id/overview) |

535| "Apa yang harus saya coba terlebih dahulu?" | Bug yang telah Anda tunda karena membosankan. "Tes di \[file] tidak stabil, cari tahu mengapa." [Quickstart →](/docs/id/quickstart) |534| "Apa yang harus saya coba terlebih dahulu?" | Bug yang telah Anda tunda karena membosankan. "Tes di \[file] tidak stabil, cari tahu mengapa." [Quickstart →](/docs/id/quickstart) |

536 535 

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 +280 −278

Details

127Variabel numerik seperti timeout, anggaran token, dan jumlah retry menerima notasi ilmiah dan ejaan dengan pemisah digit selain digit biasa, kecuali jika baris variabel tersebut mencatat bahwa variabel hanya menerima digit biasa. Misalnya, Claude Code membaca `2e3` sebagai 2000 dan `64_000` sebagai 64000. Sebelum v2.1.211, ejaan ini dapat secara diam-diam menetapkan nilai yang jauh lebih kecil, seperti `1e6` yang menetapkan timeout menjadi 1.127Variabel numerik seperti timeout, anggaran token, dan jumlah retry menerima notasi ilmiah dan ejaan dengan pemisah digit selain digit biasa, kecuali jika baris variabel tersebut mencatat bahwa variabel hanya menerima digit biasa. Misalnya, Claude Code membaca `2e3` sebagai 2000 dan `64_000` sebagai 64000. Sebelum v2.1.211, ejaan ini dapat secara diam-diam menetapkan nilai yang jauh lebih kecil, seperti `1e6` yang menetapkan timeout menjadi 1.

128 128 

129<Note>129<Note>

130 Untuk variabel yang menyalakan atau mematikan suatu perilaku, atur `1`, `true`, `yes`, atau `on` untuk menyalakannya dan `0`, `false`, `no`, atau `off` untuk mematikannya, dalam huruf besar maupun kecil.130 Untuk variabel yang mengaktifkan atau menonaktifkan suatu perilaku, tetapkan `1`, `true`, `yes`, atau `on` untuk mengaktifkannya dan `0`, `false`, `no`, atau `off` untuk menonaktifkannya, dengan huruf besar maupun kecil apa pun.

131 131 

132 Beberapa variabel hanya membaca apakah Anda mengaturnya atau tidak, sehingga nilai apa pun yang tidak kosong termasuk `0` menyalakan perilaku tersebut, dan Anda mematikan perilaku tersebut dengan menghapus pengaturan variabel atau mengaturnya ke nilai kosong. Variabel-variabel berikut bekerja dengan cara tersebut:132 Beberapa variabel hanya membaca apakah Anda menetapkannya atau tidak, sehingga nilai apa pun yang tidak kosong termasuk `0` mengaktifkan perilaku tersebut, dan Anda menonaktifkan perilaku dengan menghapus variabel atau menetapkannya ke nilai kosong. Variabel-variabel berikut bekerja dengan cara itu:

133 133 

134 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`134 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

135 * `DISABLE_TELEMETRY`135 * `DISABLE_TELEMETRY`


138 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`138 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`

139 * `IS_DEMO`139 * `IS_DEMO`

140 140 

141 Satu variabel lain memiliki aturannya sendiri: `FORCE_HYPERLINK` membaca angka, sehingga hanya `0` yang mematikannya. Baris setiap variabel juga menyatakan aturannya sendiri.141 Satu variabel lain memiliki aturannya sendiri: `FORCE_HYPERLINK` membaca angka, sehingga hanya `0` yang menonaktifkannya. Baris setiap variabel juga menyatakan aturannya sendiri.

142</Note>142</Note>

143 143 

144| Variabel | Tujuan |144| Variabel | Tujuan |

145| :- | :- |145| :- | :- |

146| `ANTHROPIC_API_KEY` | Kunci API yang dikirim sebagai header `X-Api-Key`. Jika diatur, kunci ini digunakan sebagai pengganti langganan Claude Pro, Max, Team, atau Enterprise Anda meskipun Anda sudah masuk. Dalam mode non-interaktif (`-p`), kunci selalu digunakan jika ada. Dalam mode interaktif, Anda diminta untuk menyetujui kunci satu kali sebelum kunci tersebut menimpa langganan Anda. Untuk menggunakan langganan Anda sebagai gantinya, jalankan `unset ANTHROPIC_API_KEY` |146| `ANTHROPIC_API_KEY` | Kunci API yang dikirim sebagai header `X-Api-Key`. Jika ditetapkan, kunci ini digunakan sebagai pengganti langganan Claude Pro, Max, Team, atau Enterprise Anda meskipun Anda sudah masuk. Dalam mode non-interaktif (`-p`), kunci selalu digunakan jika ada. Dalam mode interaktif, Anda diminta untuk menyetujui kunci sekali sebelum kunci tersebut menimpa langganan Anda. Untuk menggunakan langganan Anda sebagai gantinya, jalankan `unset ANTHROPIC_API_KEY` |

147| `ANTHROPIC_AUTH_TOKEN` | Nilai kustom untuk header `Authorization` (nilai yang Anda atur di sini akan diawali dengan `Bearer `) |147| `ANTHROPIC_AUTH_TOKEN` | Nilai kustom untuk header `Authorization` (nilai yang Anda tetapkan di sini akan diberi awalan `Bearer `) |

148| `ANTHROPIC_AWS_API_KEY` | Kunci API workspace untuk [Claude Platform on AWS](/docs/id/claude-platform-on-aws), yang dibuat di AWS Console. Dikirim sebagai `x-api-key` dan diutamakan daripada AWS SigV4 |148| `ANTHROPIC_AWS_API_KEY` | Kunci API workspace untuk [Claude Platform on AWS](/docs/id/claude-platform-on-aws), yang dibuat di AWS Console. Dikirim sebagai `x-api-key` dan diutamakan daripada AWS SigV4 |

149| `ANTHROPIC_AWS_BASE_URL` | Timpa URL endpoint [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Gunakan untuk region kustom atau saat merutekan melalui [LLM gateway](/docs/id/llm-gateway). Default ke `https://aws-external-anthropic.{region}.api.aws`. Claude Code menentukan region dengan [urutan prioritas yang sama seperti di Amazon Bedrock](/docs/id/amazon-bedrock#3-configure-claude-code) |149| `ANTHROPIC_AWS_BASE_URL` | Timpa URL endpoint [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Gunakan untuk region kustom atau saat merutekan melalui [LLM gateway](/docs/id/llm-gateway). Default-nya `https://aws-external-anthropic.{region}.api.aws`. Claude Code menentukan region dengan [prioritas yang sama seperti di Amazon Bedrock](/docs/id/amazon-bedrock#3-configure-claude-code) |

150| `ANTHROPIC_AWS_WORKSPACE_ID` | Wajib untuk [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Dikirim pada setiap permintaan sebagai header `anthropic-workspace-id` |150| `ANTHROPIC_AWS_WORKSPACE_ID` | Wajib untuk [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Dikirim pada setiap permintaan sebagai header `anthropic-workspace-id` |

151| `ANTHROPIC_BASE_URL` | Timpa endpoint API untuk merutekan permintaan melalui proxy atau gateway. Jika diatur ke host yang bukan first-party, [MCP tool search](/docs/id/mcp#scale-with-mcp-tool-search) dinonaktifkan secara default. Atur `ENABLE_TOOL_SEARCH=true` jika proxy Anda meneruskan blok `tool_reference`. Sejak v2.1.196, [Remote Control](/docs/id/remote-control#requirements) dinonaktifkan jika variabel ini mengarah ke host selain `api.anthropic.com`, sesuai dengan perilakunya di Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry |151| `ANTHROPIC_BASE_URL` | Timpa endpoint API untuk merutekan permintaan melalui proxy atau gateway. Jika ditetapkan ke host yang bukan first-party, [MCP tool search](/docs/id/mcp#scale-with-mcp-tool-search) dinonaktifkan secara default. Tetapkan `ENABLE_TOOL_SEARCH=true` jika proxy Anda meneruskan blok `tool_reference`. Mulai v2.1.196, [Remote Control](/docs/id/remote-control#requirements) dinonaktifkan jika variabel ini mengarah ke host selain `api.anthropic.com`, sesuai dengan perilakunya di Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry |

152| `ANTHROPIC_BEDROCK_BASE_URL` | Timpa URL endpoint Amazon Bedrock. Gunakan untuk endpoint Amazon Bedrock kustom atau saat merutekan melalui [LLM gateway](/docs/id/llm-gateway). Lihat [Amazon Bedrock](/docs/id/amazon-bedrock) |152| `ANTHROPIC_BEDROCK_BASE_URL` | Timpa URL endpoint Amazon Bedrock. Gunakan untuk endpoint Amazon Bedrock kustom atau saat merutekan melalui [LLM gateway](/docs/id/llm-gateway). Lihat [Amazon Bedrock](/docs/id/amazon-bedrock) |

153| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Timpa URL endpoint Amazon Bedrock Mantle. Lihat [Endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint) |153| `ANTHROPIC_BEDROCK_MANTLE_BASE_URL` | Timpa URL endpoint Amazon Bedrock Mantle. Lihat [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint) |

154| `ANTHROPIC_BEDROCK_REGION_PREFIX` | Prefiks profil inferensi lintas region (`us`, `eu`, `apac`, `jp`, `au`, atau `global`) yang dicoba Claude Code terlebih dahulu alih-alih prefiks yang diturunkan dari region AWS. Diabaikan di region AWS GovCloud. Memerlukan Claude Code v2.1.224 atau lebih baru. Lihat [Amazon Bedrock](/docs/id/amazon-bedrock#cross-region-inference-profile-prefixes) |154| `ANTHROPIC_BEDROCK_REGION_PREFIX` | Prefiks profil inferensi lintas region (`us`, `eu`, `apac`, `jp`, `au`, atau `global`) yang dicoba Claude Code terlebih dahulu alih-alih prefiks yang diturunkan dari region AWS. Diabaikan di region AWS GovCloud. Memerlukan Claude Code v2.1.224 atau yang lebih baru. Lihat [Amazon Bedrock](/docs/id/amazon-bedrock#cross-region-inference-profile-prefixes) |

155| `ANTHROPIC_BEDROCK_SERVICE_TIER` | [Tingkat layanan](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) Amazon Bedrock (`default`, `flex`, atau `priority`). Dikirim sebagai header `X-Amzn-Bedrock-Service-Tier`. Lihat [Amazon Bedrock](/docs/id/amazon-bedrock#service-tiers) |155| `ANTHROPIC_BEDROCK_SERVICE_TIER` | [Service tier](https://docs.aws.amazon.com/bedrock/latest/userguide/service-tiers-inference.html) Amazon Bedrock (`default`, `flex`, atau `priority`). Dikirim sebagai header `X-Amzn-Bedrock-Service-Tier`. Lihat [Amazon Bedrock](/docs/id/amazon-bedrock#service-tiers) |

156| `ANTHROPIC_BETAS` | Daftar nilai header `anthropic-beta` tambahan yang dipisahkan koma untuk disertakan dalam permintaan API. Claude Code sudah mengirim header beta yang dibutuhkannya; gunakan ini untuk ikut serta dalam [beta Anthropic API](https://platform.claude.com/docs/en/api/beta-headers) sebelum Claude Code menambahkan dukungan native. Tidak seperti [flag `--betas`](/docs/id/cli-reference#cli-flags), yang memerlukan autentikasi kunci API, variabel ini berfungsi dengan semua metode autentikasi termasuk langganan Claude.ai |156| `ANTHROPIC_BETAS` | Daftar nilai header `anthropic-beta` tambahan yang dipisahkan koma untuk disertakan dalam permintaan API. Claude Code sudah mengirim header beta yang dibutuhkannya; gunakan ini untuk ikut serta dalam [beta Anthropic API](https://platform.claude.com/docs/en/api/beta-headers) sebelum Claude Code menambahkan dukungan native. Tidak seperti [flag `--betas`](/docs/id/cli-reference#cli-flags), yang memerlukan autentikasi kunci API, variabel ini berfungsi dengan semua metode autentikasi termasuk langganan Claude.ai |

157| `ANTHROPIC_CUSTOM_HEADERS` | Header kustom untuk ditambahkan ke permintaan (format `Name: Value`, dipisahkan baris baru untuk beberapa header). Jika nama atau nilai berisi karakter yang tidak dapat dibawa oleh header HTTP, seperti tanda kutip melengkung atau spasi lebar-nol, permintaan gagal dengan error yang mengidentifikasi pasangan tersebut berdasarkan posisinya. Memerlukan Claude Code v2.1.227 atau lebih baru. [Nilai header permintaan tidak valid](/docs/id/errors#invalid-request-header-value) mencantumkan kumpulan karakter yang tepat dan tempat pemeriksaan dijalankan. Nilai yang mengatur header kredensial, organisasi atau tenant, perutean, atau perilaku API, seperti `Authorization` atau `Host`, dihitung sebagai [pengaturan yang memerlukan persetujuan](/docs/id/server-managed-settings#environment-variables-and-the-approval-dialog) ketika pengaturan yang dikelola server mengirimkannya. Dari pengaturan proyek atau lokal, nilai seperti itu mengikuti [aturan tentang kapan nilai `env` berlaku](/docs/id/settings-reference#when-claude-code-applies-env-values) |157| `ANTHROPIC_CUSTOM_HEADERS` | Header kustom untuk ditambahkan ke permintaan (format `Name: Value`, dipisahkan baris baru untuk beberapa header). Jika nama atau nilai berisi karakter yang tidak dapat dibawa oleh header HTTP, seperti tanda kutip melengkung atau spasi lebar-nol, permintaan gagal dengan error yang mengidentifikasi pasangan tersebut berdasarkan posisinya. Memerlukan Claude Code v2.1.227 atau yang lebih baru. [Invalid request header value](/docs/id/errors#invalid-request-header-value) mencantumkan set karakter yang tepat dan tempat pemeriksaan dijalankan. Nilai yang menetapkan header kredensial, organisasi atau tenant, perutean, atau perilaku API, seperti `Authorization` atau `Host`, dihitung sebagai [pengaturan yang memerlukan persetujuan](/docs/id/server-managed-settings#environment-variables-and-the-approval-dialog) ketika pengaturan terkelola server mengirimkannya. Dari pengaturan proyek atau lokal, nilai seperti itu mengikuti [aturan kapan nilai `env` berlaku](/docs/id/settings-reference#when-claude-code-applies-env-values) |

158| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID model untuk ditambahkan sebagai entri kustom di pemilih `/model`. Gunakan ini untuk membuat model non-standar atau khusus gateway dapat dipilih tanpa mengganti alias bawaan. Lihat [Konfigurasi model](/docs/id/model-config#add-a-custom-model-option) |158| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID model untuk ditambahkan sebagai entri kustom di pemilih `/model`. Gunakan ini untuk membuat model non-standar atau khusus gateway dapat dipilih tanpa mengganti alias bawaan. Lihat [Konfigurasi model](/docs/id/model-config#add-a-custom-model-option) |

159| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Deskripsi tampilan untuk entri model kustom di pemilih `/model`. Default ke `Custom model (<model-id>)` jika tidak diatur |159| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Deskripsi tampilan untuk entri model kustom di pemilih `/model`. Default-nya `Custom model (<model-id>)` jika tidak ditetapkan |

160| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nama tampilan untuk entri model kustom di pemilih `/model`. Jika tidak diatur, entri menampilkan nama model jika Claude Code [mengenali ID tersebut](/docs/id/model-config#customize-pinned-model-display-and-capabilities), dan ID model jika tidak |160| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nama tampilan untuk entri model kustom di pemilih `/model`. Jika tidak ditetapkan, entri menampilkan nama model jika Claude Code [mengenali ID tersebut](/docs/id/model-config#customize-pinned-model-display-and-capabilities), dan ID model jika tidak |

161| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model kustom, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |161| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model kustom, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

162| `ANTHROPIC_DEFAULT_FABLE_MODEL` | ID model yang menjadi tujuan resolusi alias `fable`, dan ID yang dikenali Claude Code sebagai model Fable untuk [fallback model otomatis](/docs/id/model-config#automatic-model-fallback) pada penyedia pihak ketiga. Lihat [Konfigurasi model](/docs/id/model-config#environment-variables) |162| `ANTHROPIC_DEFAULT_FABLE_MODEL` | ID model yang menjadi tujuan resolusi alias `fable`, dan ID yang dikenali Claude Code sebagai model Fable untuk [fallback model otomatis](/docs/id/model-config#automatic-model-fallback) pada penyedia pihak ketiga. Lihat [Konfigurasi model](/docs/id/model-config#environment-variables) |

163| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Fable yang di-pin di pemilih `/model`. Jika tidak diatur, baris menampilkan deskripsi default yang diawali `Custom Fable model`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |163| `ANTHROPIC_DEFAULT_FABLE_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Fable yang disematkan di pemilih `/model`. Jika tidak ditetapkan, baris menampilkan deskripsi default yang diawali `Custom Fable model`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

164| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | Nama tampilan untuk model Fable yang di-pin di pemilih `/model`. Jika tidak diatur, baris menampilkan nama model jika Claude Code mengenali ID yang di-pin, dan ID yang di-pin jika tidak. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |164| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | Nama tampilan untuk model Fable yang disematkan di pemilih `/model`. Jika tidak ditetapkan, baris menampilkan nama model jika Claude Code mengenali ID yang disematkan, dan ID yang disematkan jika tidak. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

165| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model Fable yang di-pin, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |165| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model Fable yang disematkan, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

166| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | ID model yang menjadi tujuan resolusi alias `haiku`, juga digunakan untuk [fungsionalitas latar belakang](/docs/id/costs#background-token-usage). Lihat [Konfigurasi model](/docs/id/model-config#environment-variables) |166| `ANTHROPIC_DEFAULT_HAIKU_MODEL` | ID model yang menjadi tujuan resolusi alias `haiku`, juga digunakan untuk [fungsionalitas latar belakang](/docs/id/costs#background-token-usage). Lihat [Konfigurasi model](/docs/id/model-config#environment-variables) |

167| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Haiku yang di-pin di pemilih `/model`. Jika tidak diatur, baris menampilkan deskripsi default yang diawali `Custom Haiku model`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |167| `ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Haiku yang disematkan di pemilih `/model`. Jika tidak ditetapkan, baris menampilkan deskripsi default yang diawali `Custom Haiku model`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

168| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Nama tampilan untuk model Haiku yang di-pin di pemilih `/model`. Jika tidak diatur, baris menampilkan nama model jika Claude Code mengenali ID yang di-pin, dan ID yang di-pin jika tidak. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |168| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Nama tampilan untuk model Haiku yang disematkan di pemilih `/model`. Jika tidak ditetapkan, baris menampilkan nama model jika Claude Code mengenali ID yang disematkan, dan ID yang disematkan jika tidak. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

169| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model Haiku yang di-pin, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |169| `ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model Haiku yang disematkan, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

170| `ANTHROPIC_DEFAULT_MODEL` | Model yang digunakan sesi baru secara default. Memerlukan Claude Code v2.1.236 atau lebih baru. Lihat [Mengatur model default untuk sesi baru](/docs/id/model-config#set-a-default-model-for-new-sessions) |170| `ANTHROPIC_DEFAULT_MODEL` | Model yang digunakan sesi baru secara default saat dimulai. Memerlukan Claude Code v2.1.236 atau yang lebih baru. Lihat [Menetapkan model default untuk sesi baru](/docs/id/model-config#set-a-default-model-for-new-sessions) |

171| `ANTHROPIC_DEFAULT_OPUS_MODEL` | ID model yang menjadi tujuan resolusi alias `opus`, dan yang digunakan `opusplan` saat Plan Mode aktif. Lihat [Konfigurasi model](/docs/id/model-config#environment-variables) |171| `ANTHROPIC_DEFAULT_OPUS_MODEL` | ID model yang menjadi tujuan resolusi alias `opus`, dan yang digunakan `opusplan` saat Plan Mode aktif. Lihat [Konfigurasi model](/docs/id/model-config#environment-variables) |

172| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Opus yang di-pin di pemilih `/model`. Jika tidak diatur, baris menampilkan deskripsi default yang diawali `Custom Opus model`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |172| `ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Opus yang disematkan di pemilih `/model`. Jika tidak ditetapkan, baris menampilkan deskripsi default yang diawali `Custom Opus model`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

173| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Nama tampilan untuk model Opus yang di-pin di pemilih `/model`. Jika tidak diatur, baris menampilkan nama model jika Claude Code mengenali ID yang di-pin, dan ID yang di-pin jika tidak. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |173| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Nama tampilan untuk model Opus yang disematkan di pemilih `/model`. Jika tidak ditetapkan, baris menampilkan nama model jika Claude Code mengenali ID yang disematkan, dan ID yang disematkan jika tidak. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

174| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model Opus yang di-pin, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |174| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model Opus yang disematkan, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

175| `ANTHROPIC_DEFAULT_SONNET_MODEL` | ID model yang menjadi tujuan resolusi alias `sonnet`, dan yang digunakan `opusplan` saat Plan Mode tidak aktif. Lihat [Konfigurasi model](/docs/id/model-config#environment-variables) |175| `ANTHROPIC_DEFAULT_SONNET_MODEL` | ID model yang menjadi tujuan resolusi alias `sonnet`, dan yang digunakan `opusplan` saat Plan Mode tidak aktif. Lihat [Konfigurasi model](/docs/id/model-config#environment-variables) |

176| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Sonnet yang di-pin di pemilih `/model`. Jika tidak diatur, baris menampilkan deskripsi default yang diawali `Custom Sonnet model`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |176| `ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION` | Deskripsi tampilan untuk model Sonnet yang disematkan di pemilih `/model`. Jika tidak ditetapkan, baris menampilkan deskripsi default yang diawali `Custom Sonnet model`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

177| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Nama tampilan untuk model Sonnet yang di-pin di pemilih `/model`. Jika tidak diatur, baris menampilkan nama model jika Claude Code mengenali ID yang di-pin, dan ID yang di-pin jika tidak. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |177| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Nama tampilan untuk model Sonnet yang disematkan di pemilih `/model`. Jika tidak ditetapkan, baris menampilkan nama model jika Claude Code mengenali ID yang disematkan, dan ID yang disematkan jika tidak. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

178| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model Sonnet yang di-pin, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |178| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kapabilitas](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang didukung model Sonnet yang disematkan, dipisahkan koma, misalnya `effort,thinking`. Lihat [Konfigurasi model](/docs/id/model-config#customize-pinned-model-display-and-capabilities) |

179| `ANTHROPIC_FEDERATION_RULE_ID` | ID aturan federasi untuk [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Jika Anda mengaturnya bersama `ANTHROPIC_ORGANIZATION_ID`, Claude Code memilih kredensial federasi, yang memiliki peringkat lebih tinggi daripada kredensial `/login` Anda. Lihat [prioritas autentikasi](/docs/id/authentication#authentication-precedence) |179| `ANTHROPIC_FEDERATION_RULE_ID` | ID aturan federasi untuk [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Jika Anda menetapkannya bersama `ANTHROPIC_ORGANIZATION_ID`, Claude Code memilih kredensial federasi, yang peringkatnya di atas kredensial `/login` Anda. Lihat [prioritas autentikasi](/docs/id/authentication#authentication-precedence) |

180| `ANTHROPIC_FOUNDRY_API_KEY` | Kunci API untuk autentikasi Microsoft Foundry (lihat [Microsoft Foundry](/docs/id/microsoft-foundry)) |180| `ANTHROPIC_FOUNDRY_API_KEY` | Kunci API untuk autentikasi Microsoft Foundry (lihat [Microsoft Foundry](/docs/id/microsoft-foundry)) |

181| `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | Token bearer untuk autentikasi Microsoft Foundry, seperti token akses Microsoft Entra. Claude Code mengirimkannya sebagai header `Authorization: Bearer`. Diutamakan daripada `ANTHROPIC_FOUNDRY_API_KEY` dan daripada rantai kredensial default Azure. Lihat [Microsoft Foundry](/docs/id/microsoft-foundry). Memerlukan Claude Code v2.1.203 atau lebih baru |181| `ANTHROPIC_FOUNDRY_AUTH_TOKEN` | Bearer token untuk autentikasi Microsoft Foundry, seperti access token Microsoft Entra. Claude Code mengirimkannya sebagai header `Authorization: Bearer`. Diutamakan daripada `ANTHROPIC_FOUNDRY_API_KEY` dan rantai kredensial default Azure. Lihat [Microsoft Foundry](/docs/id/microsoft-foundry). Memerlukan Claude Code v2.1.203 atau yang lebih baru |

182| `ANTHROPIC_FOUNDRY_BASE_URL` | URL dasar lengkap untuk resource Microsoft Foundry (misalnya, `https://my-resource.services.ai.azure.com/anthropic`). Alternatif untuk `ANTHROPIC_FOUNDRY_RESOURCE` (lihat [Microsoft Foundry](/docs/id/microsoft-foundry)) |182| `ANTHROPIC_FOUNDRY_BASE_URL` | URL dasar lengkap untuk resource Microsoft Foundry (misalnya, `https://my-resource.services.ai.azure.com/anthropic`). Alternatif untuk `ANTHROPIC_FOUNDRY_RESOURCE` (lihat [Microsoft Foundry](/docs/id/microsoft-foundry)) |

183| `ANTHROPIC_FOUNDRY_RESOURCE` | Nama resource Microsoft Foundry (misalnya, `my-resource`). Claude Code [menolak URL atau nama host](/docs/id/errors#anthropic-foundry-resource-must-be-a-foundry-resource-name). Wajib jika `ANTHROPIC_FOUNDRY_BASE_URL` tidak ditetapkan (lihat [Microsoft Foundry](/docs/id/microsoft-foundry)) |183| `ANTHROPIC_FOUNDRY_RESOURCE` | Nama resource Microsoft Foundry (misalnya, `my-resource`). Claude Code [menolak URL atau nama host](/docs/id/errors#anthropic-foundry-resource-must-be-a-foundry-resource-name). Wajib jika `ANTHROPIC_FOUNDRY_BASE_URL` tidak ditetapkan (lihat [Microsoft Foundry](/docs/id/microsoft-foundry)) |

184| `ANTHROPIC_MODEL` | Nama pengaturan model yang akan digunakan (lihat [Konfigurasi Model](/docs/id/model-config#environment-variables)) |184| `ANTHROPIC_MODEL` | Nama pengaturan model yang akan digunakan (lihat [Konfigurasi Model](/docs/id/model-config#environment-variables)) |

185| `ANTHROPIC_ORGANIZATION_ID` | ID organisasi untuk [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Atur bersama `ANTHROPIC_FEDERATION_RULE_ID`. Lihat [prioritas autentikasi](/docs/id/authentication#authentication-precedence) |185| `ANTHROPIC_ORGANIZATION_ID` | ID organisasi untuk [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Tetapkan bersama `ANTHROPIC_FEDERATION_RULE_ID`. Lihat [prioritas autentikasi](/docs/id/authentication#authentication-precedence) |

186| `ANTHROPIC_PROFILE` | Nama profil Anthropic yang digunakan untuk autentikasi, seperti profil yang dibuat oleh [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) atau dengan [masuk ke akun Console tanpa kunci API](/docs/id/authentication#sign-in-without-an-api-key). Lihat [prioritas autentikasi](/docs/id/authentication#authentication-precedence) |186| `ANTHROPIC_PROFILE` | Nama profil Anthropic yang digunakan untuk autentikasi, seperti profil yang dibuat oleh [`ant auth login`](https://platform.claude.com/docs/en/cli-sdks-libraries/cli/authentication) atau dengan [masuk ke akun Console tanpa kunci API](/docs/id/authentication#sign-in-without-an-api-key). Lihat [prioritas autentikasi](/docs/id/authentication#authentication-precedence) |

187| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATED] Nama [model kelas Haiku untuk tugas latar belakang](/docs/id/costs) |187| `ANTHROPIC_SMALL_FAST_MODEL` | \[DEPRECATED] Nama [model kelas Haiku untuk tugas latar belakang](/docs/id/costs) |

188| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Timpa region AWS untuk model kelas Haiku saat menggunakan Amazon Bedrock atau Amazon Bedrock Mantle. Di Amazon Bedrock, ini hanya berlaku jika `ANTHROPIC_DEFAULT_HAIKU_MODEL` atau `ANTHROPIC_SMALL_FAST_MODEL` yang sudah deprecated juga diatur, karena jika tidak, Amazon Bedrock menjalankan tugas latar belakang pada [model Sonnet default atau model utama](/docs/id/amazon-bedrock#4-pin-model-versions) di region sesi |188| `ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION` | Timpa region AWS untuk model kelas Haiku saat menggunakan Amazon Bedrock atau Amazon Bedrock Mantle. Di Amazon Bedrock, ini hanya berlaku jika `ANTHROPIC_DEFAULT_HAIKU_MODEL` atau `ANTHROPIC_SMALL_FAST_MODEL` yang sudah deprecated juga ditetapkan, karena jika tidak, Amazon Bedrock menjalankan tugas latar belakang pada [model Sonnet default atau model utama](/docs/id/amazon-bedrock#4-pin-model-versions) di region sesi |

189| `ANTHROPIC_VERTEX_BASE_URL` | Timpa URL endpoint Google Cloud's Agent Platform. Gunakan untuk endpoint Google Cloud's Agent Platform kustom atau saat merutekan melalui [LLM gateway](/docs/id/llm-gateway). Lihat [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) |189| `ANTHROPIC_VERTEX_BASE_URL` | Timpa URL endpoint Google Cloud's Agent Platform. Gunakan untuk endpoint Google Cloud's Agent Platform kustom atau saat merutekan melalui [LLM gateway](/docs/id/llm-gateway). Lihat [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) |

190| `ANTHROPIC_VERTEX_PROJECT_ID` | ID proyek GCP yang menjadi tujuan permintaan Google Cloud's Agent Platform. Lihat [Mengonfigurasi kredensial GCP](/docs/id/google-vertex-ai#3-configure-gcp-credentials) |190| `ANTHROPIC_VERTEX_PROJECT_ID` | ID proyek GCP yang menjadi tujuan permintaan Google Cloud's Agent Platform. Lihat [Mengonfigurasi kredensial GCP](/docs/id/google-vertex-ai#3-configure-gcp-credentials) |

191| `ANTHROPIC_WORKSPACE_ID` | ID workspace untuk [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Atur ini jika aturan federasi Anda mencakup lebih dari satu workspace sehingga pertukaran token mengetahui workspace mana yang dituju |191| `ANTHROPIC_WORKSPACE_ID` | ID workspace untuk [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Tetapkan ini jika aturan federasi Anda dicakup ke lebih dari satu workspace agar pertukaran token mengetahui workspace mana yang dituju |

192| `API_FORCE_IDLE_TIMEOUT` | Timpa timeout idle body 5 menit yang membatalkan respons model streaming ketika tidak ada byte yang tiba. Atur ke `0` untuk mematikan timeout, misalnya ketika [gateway](/docs/id/llm-gateway) yang lambat atau model lokal berhenti lebih dari 5 menit di antara chunk, atau `1` untuk tetap menyalakannya untuk setiap penyedia. Jika tidak diatur, timeout aktif pada penyedia selain Anthropic API langsung, [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan Amazon Bedrock dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` diatur. [Watchdog stream](/docs/id/network-config#streaming-idle-watchdogs) berjalan secara independen darinya dan membatalkan jeda senyap yang panjang bahkan ketika Anda mengatur `0` di sini |192| `API_FORCE_IDLE_TIMEOUT` | Timpa timeout idle body 5 menit yang membatalkan respons model streaming ketika tidak ada byte yang tiba. Tetapkan ke `0` untuk mematikan timeout, misalnya ketika [gateway](/docs/id/llm-gateway) yang lambat atau model lokal berhenti lebih dari 5 menit di antara chunk, atau `1` untuk tetap mengaktifkannya bagi setiap penyedia. Jika tidak ditetapkan, timeout aktif pada penyedia selain Anthropic API langsung, [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan Amazon Bedrock dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` ditetapkan. [Stream watchdog](/docs/id/network-config#streaming-idle-watchdogs) berjalan secara independen darinya dan membatalkan jeda senyap yang panjang bahkan ketika Anda menetapkan `0` di sini |

193| `API_TIMEOUT_MS` | Timeout untuk permintaan API dalam milidetik (default: 600000, atau 10 menit; maksimum: 2147483647). Naikkan nilai ini ketika permintaan mengalami timeout pada jaringan lambat atau saat merutekan melalui proxy. Nilai di atas maksimum menyebabkan overflow pada timer yang mendasarinya dan membuat permintaan langsung gagal |193| `API_TIMEOUT_MS` | Timeout untuk permintaan API dalam milidetik (default: 600000, atau 10 menit; maksimum: 2147483647). Tingkatkan nilai ini ketika permintaan mengalami timeout pada jaringan lambat atau saat merutekan melalui proxy. Nilai di atas maksimum menyebabkan overflow pada timer yang mendasarinya dan membuat permintaan langsung gagal |

194| `AWS_BEARER_TOKEN_BEDROCK` | Kunci API Amazon Bedrock untuk autentikasi (lihat [Kunci API Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |194| `AWS_BEARER_TOKEN_BEDROCK` | Kunci API Amazon Bedrock untuk autentikasi (lihat [Kunci API Amazon Bedrock](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

195| `BASH_DEFAULT_TIMEOUT_MS` | Timeout default untuk perintah tool Bash atau PowerShell di latar depan, dalam milidetik (default: 120000, atau 2 menit). Nilai default yang lebih dari 30 menit juga menjadi [batas waktu default untuk perintah latar belakang](/docs/id/tools-reference#time-limit-for-background-commands) dalam sesi tanpa pengawasan. Batas waktu latar belakang memerlukan Claude Code v2.1.285 atau yang lebih baru |195| `BASH_DEFAULT_TIMEOUT_MS` | Timeout default untuk perintah tool Bash atau PowerShell di latar depan, dalam milidetik (default: 120000, atau 2 menit). Default yang lebih lama dari 30 menit juga menjadi [batas waktu default untuk perintah latar belakang](/docs/id/tools-reference#time-limit-for-background-commands) dalam sesi tanpa pengawasan. Batas waktu latar belakang memerlukan Claude Code v2.1.285 atau yang lebih baru |

196| `BASH_MAX_OUTPUT_LENGTH` | Jumlah maksimum karakter output bash yang dibaca kembali oleh Claude Code ke dalam hasil perintah (default: 30000; maksimum: 150000). Jika Anda mengatur pengaturan [`bashOutputMaxChars`](/docs/id/settings-reference#bashoutputmaxchars), Claude Code mengabaikan variabel ini. Lihat [Batas output](/docs/id/tools-reference#output-limits) |196| `BASH_MAX_OUTPUT_LENGTH` | Jumlah maksimum karakter output bash yang dibaca kembali oleh Claude Code ke dalam hasil perintah (default: 30000; maksimum: 150000). Jika Anda menetapkan pengaturan [`bashOutputMaxChars`](/docs/id/settings-reference#bashoutputmaxchars), Claude Code mengabaikan variabel ini. Lihat [Batas output](/docs/id/tools-reference#output-limits) |

197| `BASH_MAX_TIMEOUT_MS` | Timeout maksimum yang dapat ditetapkan model untuk perintah tool Bash atau PowerShell di latar depan, dalam milidetik (default: 600000, atau 10 menit). Batas atas efektif adalah nilai yang lebih besar antara ini dan `BASH_DEFAULT_TIMEOUT_MS`. Batas atas efektif yang lebih dari 2 jam juga menjadi [batas waktu](/docs/id/tools-reference#time-limit-for-background-commands) maksimum untuk perintah latar belakang dalam sesi tanpa pengawasan. Batas waktu latar belakang memerlukan Claude Code v2.1.285 atau yang lebih baru |197| `BASH_MAX_TIMEOUT_MS` | Timeout maksimum yang dapat ditetapkan model untuk perintah tool Bash atau PowerShell di latar depan, dalam milidetik (default: 600000, atau 10 menit). Batas atas efektif adalah nilai yang lebih besar antara ini dan `BASH_DEFAULT_TIMEOUT_MS`. Batas atas efektif yang lebih lama dari 2 jam juga menjadi [batas waktu maksimum untuk perintah latar belakang](/docs/id/tools-reference#time-limit-for-background-commands) dalam sesi tanpa pengawasan. Batas waktu latar belakang memerlukan Claude Code v2.1.285 atau yang lebih baru |

198| `BETA_TRACING_ENDPOINT` | Endpoint OTLP untuk [beta tracing terperinci](/docs/id/monitoring-usage#traces-beta): dengan `ENABLE_BETA_TRACING_DETAILED=1`, log dan trace dikirim ke sana alih-alih ke exporter yang dikonfigurasi. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |198| `BETA_TRACING_ENDPOINT` | Endpoint OTLP untuk [detailed beta tracing](/docs/id/monitoring-usage#traces-beta): dengan `ENABLE_BETA_TRACING_DETAILED=1`, log dan trace dikirim ke sana alih-alih ke exporter yang dikonfigurasi. Tetapkan di shell Anda, pengaturan pengguna, atau pengaturan terkelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |

199| `CCR_FORCE_BUNDLE` | Atur ke `1` untuk memaksa [`claude --cloud`](/docs/id/claude-code-on-the-web#send-local-repositories-without-github) membundel dan mengunggah repositori lokal Anda alih-alih melakukan clone dari remote-nya |199| `CCR_FORCE_BUNDLE` | Tetapkan ke `1` untuk memaksa [`claude --cloud`](/docs/id/claude-code-on-the-web#send-local-repositories-without-github) mem-bundle dan mengunggah repositori lokal Anda alih-alih melakukan clone dari remote-nya |

200| `CLAUDECODE` | Diatur ke `1` di subproses yang dijalankan Claude Code (tool Bash dan PowerShell, sesi tmux, perintah [hook](/docs/id/hooks), perintah [baris status](/docs/id/statusline), subproses [server MCP](/docs/id/mcp) stdio). Ekstensi IDE juga mengatur ini di terminal terintegrasinya. Gunakan untuk mendeteksi kapan skrip berjalan di dalam subproses yang dijalankan oleh Claude Code. Untuk memeriksa apakah proses saat ini dijalankan langsung oleh panggilan tool atau hook, bukan di dalam server MCP stdio yang dimulai Claude Code, gunakan `CLAUDE_CODE_CHILD_SESSION` sebagai gantinya |200| `CLAUDECODE` | Ditetapkan ke `1` dalam subproses yang dijalankan Claude Code (tool Bash dan PowerShell, sesi tmux, perintah [hook](/docs/id/hooks), perintah [baris status](/docs/id/statusline), subproses [server MCP](/docs/id/mcp) stdio). Ekstensi IDE juga menetapkan ini di terminal terintegrasinya. Gunakan untuk mendeteksi kapan skrip berjalan di dalam subproses yang dijalankan oleh Claude Code. Untuk memeriksa apakah proses saat ini dijalankan langsung oleh panggilan tool atau hook, bukan di dalam server MCP stdio yang dimulai Claude Code, gunakan `CLAUDE_CODE_CHILD_SESSION` sebagai gantinya |

201| `CLAUDE_AFK_COUNTDOWN_MS` | Berapa milidetik sebelum auto-continue hitungan mundur di layar muncul pada dialog [`AskUserQuestion`](/docs/id/tools-reference) yang belum dijawab. Default `20000` (20 detik), dibatasi hingga timeout auto-continue. Tidak berpengaruh kecuali auto-continue aktif; lihat pengaturan [`askUserQuestionTimeout`](/docs/id/settings-reference#askuserquestiontimeout) dan `CLAUDE_AFK_TIMEOUT_MS`. Memerlukan Claude Code v2.1.198 atau lebih baru |201| `CLAUDE_AFK_COUNTDOWN_MS` | Berapa milidetik sebelum auto-continue hitung mundur di layar muncul pada dialog [`AskUserQuestion`](/docs/id/tools-reference) yang belum dijawab. Default `20000` (20 detik), dibatasi pada timeout auto-continue. Tidak berpengaruh kecuali auto-continue aktif; lihat pengaturan [`askUserQuestionTimeout`](/docs/id/settings-reference#askuserquestiontimeout) dan `CLAUDE_AFK_TIMEOUT_MS`. Memerlukan Claude Code v2.1.198 atau yang lebih baru |

202| `CLAUDE_AFK_TIMEOUT_MS` | Berapa milidetik waktu idle sebelum dialog [`AskUserQuestion`](/docs/id/tools-reference) yang belum dijawab otomatis dilanjutkan tanpa Anda. Auto-continue nonaktif secara default; aktifkan dengan pengaturan [`askUserQuestionTimeout`](/docs/id/settings-reference#askuserquestiontimeout). Variabel ini adalah override untuk demo dan pengujian otomatis: jika diatur, variabel ini diutamakan daripada pengaturan tersebut dan menyalakan auto-continue bahkan ketika pengaturan tidak diatur atau bernilai `never`. Mengatur `0` tidak mematikan timeout; nilai tersebut langsung menutup dialog. Di v2.1.198 dan v2.1.199, auto-continue aktif secara default dengan timeout `60000` (60 detik). Memerlukan Claude Code v2.1.198 atau lebih baru |202| `CLAUDE_AFK_TIMEOUT_MS` | Berapa milidetik waktu idle sebelum dialog [`AskUserQuestion`](/docs/id/tools-reference) yang belum dijawab melanjutkan secara otomatis tanpa Anda. Auto-continue nonaktif secara default; aktifkan dengan pengaturan [`askUserQuestionTimeout`](/docs/id/settings-reference#askuserquestiontimeout). Variabel ini adalah override untuk demo dan pengujian otomatis: jika ditetapkan, variabel ini diutamakan daripada pengaturan tersebut dan mengaktifkan auto-continue bahkan ketika pengaturan tidak ditetapkan atau bernilai `never`. Menetapkan `0` tidak mematikan timeout; itu langsung menutup dialog. Pada v2.1.198 dan v2.1.199, auto-continue aktif secara default dengan timeout `60000` (60 detik). Memerlukan Claude Code v2.1.198 atau yang lebih baru |

203| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Atur ke `1` untuk menonaktifkan semua jenis [subagent](/docs/id/sub-agents) bawaan seperti Explore dan Plan. Hanya berlaku dalam mode non-interaktif (flag `-p`). Berguna bagi pengguna SDK yang menginginkan awal yang bersih. Ini juga menghapus `general-purpose`, subagent yang dijalankan Claude Code ketika panggilan tool Agent menghilangkan `subagent_type`. Panggilan seperti itu kemudian gagal dengan [`subagent_type is required`](/docs/id/errors#subagent-type-is-required) |203| `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` | Tetapkan ke `1` untuk menonaktifkan semua tipe [subagent](/docs/id/sub-agents) bawaan seperti Explore dan Plan. Hanya berlaku dalam mode non-interaktif (flag `-p`). Berguna bagi pengguna SDK yang menginginkan awal yang bersih. Ini juga menghapus `general-purpose`, subagent yang dijalankan Claude Code ketika panggilan tool Agent menghilangkan `subagent_type`. Panggilan seperti itu kemudian gagal dengan [`subagent_type is required`](/docs/id/errors#subagent-type-is-required) |

204| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Atur ke `1` untuk melewati prefiks `mcp__<server>__` pada nama tool dari server MCP yang dibuat SDK. Tool menggunakan nama aslinya. Hanya untuk penggunaan SDK |204| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Tetapkan ke `1` untuk melewati prefiks `mcp__<server>__` pada nama tool dari server MCP yang dibuat SDK. Tool menggunakan nama aslinya. Hanya untuk penggunaan SDK |

205| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Timeout macet dalam milidetik untuk subagent. Default `600000` (10 menit); jika Anda menaikkan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` saat watchdog stream aktif, default ikut naik, seperti yang dijelaskan di [Menangani respons API yang lambat atau macet](/docs/id/agent-sdk/typescript#handle-slow-or-stalled-api-responses). Timer direset pada setiap event progres streaming; jika tidak ada progres yang tiba dalam jendela waktu tersebut, Claude Code membatalkan subagent dan melaporkan kemacetan tersebut ke induknya |205| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Timeout macet dalam milidetik untuk subagent. Default `600000` (10 menit); jika Anda menaikkan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` saat stream watchdog aktif, default ikut naik, seperti yang dijelaskan di [Menangani respons API yang lambat atau macet](/docs/id/agent-sdk/typescript#handle-slow-or-stalled-api-responses). Timer direset pada setiap event progres streaming; jika tidak ada progres yang tiba dalam jendela waktu tersebut, Claude Code membatalkan subagent dan melaporkan kemacetan ke induknya |

206| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Atur persentase (1-100) dari jendela auto-compact tempat auto-compaction dipicu. Gunakan nilai yang lebih rendah seperti `50` untuk melakukan compaction lebih awal; variabel ini tidak dapat menaikkan ambang batas, sehingga nilai di atas persentase default diabaikan. Ini hanya berlaku di sesi yang [melakukan compaction sebelum batas konteks model](/docs/id/model-config#context-window-and-auto-compaction). Berlaku untuk percakapan utama maupun subagent |206| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Tetapkan persentase (1-100) dari jendela auto-compact tempat auto-compaction dipicu. Gunakan nilai lebih rendah seperti `50` untuk melakukan compaction lebih awal; variabel ini tidak dapat menaikkan ambang, sehingga nilai di atas persentase default diabaikan. Ini hanya berlaku dalam sesi yang [melakukan compaction sebelum batas konteks model](/docs/id/model-config#context-window-and-auto-compaction). Berlaku untuk percakapan utama maupun subagent |

207| `CLAUDE_AUTO_BACKGROUND_TASKS` | Atur ke `1` untuk memaksa mengaktifkan pemindahan otomatis tugas agent yang berjalan lama ke latar belakang. Jika diaktifkan, subagent dipindahkan ke latar belakang setelah berjalan sekitar dua menit. Juga mengaktifkan [pemindahan otomatis panggilan tool MCP yang panjang ke latar belakang](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls) dalam mode non-interaktif pada Claude Code v2.1.212 atau lebih baru |207| `CLAUDE_AUTO_BACKGROUND_TASKS` | Tetapkan ke `1` untuk memaksa mengaktifkan pemindahan otomatis tugas agent yang berjalan lama ke latar belakang. Jika diaktifkan, subagent dipindahkan ke latar belakang setelah berjalan sekitar dua menit. Juga mengaktifkan [pemindahan otomatis panggilan tool MCP yang lama ke latar belakang](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls) dalam mode non-interaktif pada Claude Code v2.1.212 atau yang lebih baru |

208| `CLAUDE_AX_PREPARK_MS` | Dalam [mode pembaca layar](/docs/id/accessibility), berapa milidetik Claude Code menunggu sebelum menulis baris baru atau baris yang berubah. Default `0`, sehingga Claude Code tidak menunggu. Sebelum v2.1.287, default-nya adalah `50`. Claude Code membatasi waktu tunggu hingga `5000`. Memerlukan Claude Code v2.1.233 atau lebih baru |208| `CLAUDE_AX_PREPARK_MS` | Dalam [mode pembaca layar](/docs/id/accessibility), berapa milidetik Claude Code menunggu sebelum menulis baris baru atau yang berubah. Default `0`, sehingga Claude Code tidak menunggu. Sebelum v2.1.287, default-nya `50`. Claude Code membatasi waktu tunggu pada `5000`. Memerlukan Claude Code v2.1.233 atau yang lebih baru |

209| `CLAUDE_AX_SCREEN_READER` | Atur ke `1` untuk merender output yang ramah pembaca layar: teks datar tanpa border dekoratif atau animasi. Atur ke `0` untuk memaksa mode pembaca layar nonaktif bahkan ketika [`axScreenReader`](/docs/id/settings-reference#axscreenreader) bernilai `true`. Flag [`--ax-screen-reader`](/docs/id/cli-reference#cli-flags) diutamakan. Memerlukan Claude Code v2.1.181 atau lebih baru |209| `CLAUDE_AX_SCREEN_READER` | Tetapkan ke `1` untuk merender output yang ramah pembaca layar: teks datar tanpa border dekoratif atau animasi. Tetapkan ke `0` untuk memaksa mode pembaca layar nonaktif bahkan ketika [`axScreenReader`](/docs/id/settings-reference#axscreenreader) bernilai `true`. Flag [`--ax-screen-reader`](/docs/id/cli-reference#cli-flags) diutamakan. Memerlukan Claude Code v2.1.181 atau yang lebih baru |

210| `CLAUDE_AX_STARTUP_QUIET_MS` | Dalam [mode pembaca layar](/docs/id/accessibility), berapa milidetik Claude Code menahan render antarmuka pertama setelah baris konfirmasi startup, sehingga pembaca layar Anda dapat mengucapkan baris tersebut secara lengkap sebelum output baru menyelanya. Default `3000`. Atur `0` untuk merender segera. Claude Code membatasi penahanan hingga `600000` (10 menit). Penekanan tombol pertama Anda mengakhiri penahanan lebih awal. Memerlukan Claude Code v2.1.217 atau lebih baru |210| `CLAUDE_AX_STARTUP_QUIET_MS` | Dalam [mode pembaca layar](/docs/id/accessibility), berapa milidetik Claude Code menahan render antarmuka pertama setelah baris konfirmasi startup, sehingga pembaca layar Anda dapat mengucapkan baris tersebut secara lengkap sebelum output baru menginterupsinya. Default `3000`. Tetapkan `0` untuk merender segera. Claude Code membatasi penahanan pada `600000` (10 menit). Penekanan tombol pertama Anda mengakhiri penahanan lebih awal. Memerlukan Claude Code v2.1.217 atau yang lebih baru |

211| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Kembali ke direktori kerja asli setelah setiap perintah Bash atau PowerShell di sesi utama |211| `CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR` | Kembali ke direktori kerja awal setelah setiap perintah Bash atau PowerShell dalam sesi utama |

212| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | Timeout dalam milidetik untuk watchdog idle streaming tingkat byte; jika diatur, variabel ini diutamakan daripada `CLAUDE_STREAM_IDLE_TIMEOUT_MS` untuk watchdog tersebut dan membiarkan watchdog tingkat event tidak berubah. Claude Code membatasi variabel ini antara 10 detik dan 30 menit. Memerlukan Claude Code v2.1.210 atau lebih baru |212| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | Timeout dalam milidetik untuk watchdog idle streaming tingkat byte; jika ditetapkan, variabel ini diutamakan daripada `CLAUDE_STREAM_IDLE_TIMEOUT_MS` untuk watchdog tersebut dan tidak mengubah watchdog tingkat event. Claude Code membatasi variabel ini antara 10 detik dan 30 menit. Memerlukan Claude Code v2.1.210 atau yang lebih baru |

213| `CLAUDE_CLIENT_PRESENCE_FILE` | Path ke file yang dibuat oleh alat eksternal, seperti listener kunci layar, saat Anda membuka kunci layar dan dihapus saat Anda menguncinya. Selama file tersebut ada, Claude Code melewati [notifikasi push seluler Remote Control](/docs/id/remote-control#mobile-push-notifications), sehingga Anda berhenti menerima push saat Anda sedang aktif menggunakan komputer. Jika file tidak ada atau tidak dapat dibaca, notifikasi dikirim seperti biasa. Claude Code memeriksa file sekali per event yang memicu push alih-alih melakukan polling. Memerlukan Claude Code v2.1.181 atau lebih baru |213| `CLAUDE_CLIENT_PRESENCE_FILE` | Path ke file yang dibuat oleh alat eksternal, seperti listener kunci layar, saat Anda membuka kunci layar dan dihapus saat Anda menguncinya. Selama file ada, Claude Code melewati [notifikasi push seluler Remote Control](/docs/id/remote-control#mobile-push-notifications), sehingga Anda berhenti menerima push saat sedang aktif menggunakan komputer. Jika file tidak ada atau tidak dapat dibaca, notifikasi dikirim seperti biasa. Claude Code memeriksa file sekali per event pemicu push alih-alih melakukan polling. Memerlukan Claude Code v2.1.181 atau yang lebih baru |

214| `CLAUDE_CODE_ACCESSIBILITY` | Atur ke `1` untuk menjaga kursor terminal native tetap terlihat dan menonaktifkan indikator kursor teks terbalik. Memungkinkan pembesar layar seperti macOS Zoom melacak posisi kursor |214| `CLAUDE_CODE_ACCESSIBILITY` | Tetapkan ke `1` untuk menjaga kursor terminal native tetap terlihat dan menonaktifkan indikator kursor teks terbalik. Memungkinkan pembesar layar seperti macOS Zoom melacak posisi kursor |

215| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Atur ke `1` untuk memuat file memori dari direktori yang ditentukan dengan `--add-dir`. Memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md`. Secara default, direktori tambahan tidak memuat file memori |215| `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD` | Tetapkan ke `1` untuk memuat file memori dari direktori yang ditentukan dengan `--add-dir`. Memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md`. Secara default, direktori tambahan tidak memuat file memori |

216| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Atur ke `1` untuk menggambar ulang seluruh layar pada setiap frame dalam [rendering fullscreen](/docs/id/fullscreen) alih-alih mengirim pembaruan inkremental. Gunakan ini jika mode fullscreen menampilkan fragmen teks yang usang atau salah tempat. Claude Code mengaktifkan ini secara otomatis untuk sesi latar belakang dan [agent view](/docs/id/agent-view) di Windows |216| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Tetapkan ke `1` untuk menggambar ulang seluruh layar pada setiap frame dalam [rendering layar penuh](/docs/id/fullscreen) alih-alih mengirim pembaruan inkremental. Gunakan ini jika mode layar penuh menampilkan fragmen teks yang usang atau salah tempat. Claude Code mengaktifkan ini secara otomatis untuk sesi latar belakang dan [agent view](/docs/id/agent-view) di Windows |

217| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | Atur ke `1` untuk mengirim parameter [effort](/docs/id/model-config#adjust-effort-level) dengan setiap permintaan, bahkan ketika Claude Code tidak mengenali ID model sebagai model yang mendukung effort. Gunakan ini saat merutekan melalui [LLM gateway](/docs/id/llm-gateway) atau penyedia pihak ketiga yang menyajikan model di bawah identifier kustom. Model yang menolak parameter effort di API, termasuk model Claude 3, Sonnet 4.0 dan 4.5, Opus 4.0 dan 4.1, dan Haiku 4.5, tetap dikecualikan sehingga permintaan tidak gagal |217| `CLAUDE_CODE_ALWAYS_ENABLE_EFFORT` | Tetapkan ke `1` untuk mengirim parameter [effort](/docs/id/model-config#adjust-effort-level) dengan setiap permintaan, bahkan ketika Claude Code tidak mengenali ID model sebagai model yang mendukung effort. Gunakan ini saat merutekan melalui [LLM gateway](/docs/id/llm-gateway) atau penyedia pihak ketiga yang menyajikan model dengan pengenal kustom. Model yang menolak parameter effort di API, termasuk model Claude 3, Sonnet 4.0 dan 4.5, Opus 4.0 dan 4.1, serta Haiku 4.5, tetap dikecualikan agar permintaan tidak gagal |

218| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Interval dalam milidetik saat kredensial harus diperbarui (saat menggunakan [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper)) |218| `CLAUDE_CODE_API_KEY_HELPER_TTL_MS` | Interval dalam milidetik saat kredensial harus disegarkan (saat menggunakan [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper)) |

219| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Atur ke `0` untuk menghentikan Claude Code membuka browser secara otomatis saat [artifact](/docs/id/artifacts#create-an-artifact) baru dipublikasikan |219| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Tetapkan ke `0` untuk menghentikan Claude Code membuka browser secara otomatis ketika [artifact](/docs/id/artifacts#create-an-artifact) baru dipublikasikan |

220| `CLAUDE_CODE_ARTIFACT_COMMENTS` | Atur ke `0` untuk menghentikan Claude membaca dan membalas [komentar pada artifact](/docs/id/artifacts#collect-comments-on-an-artifact). Tidak berpengaruh ketika `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` telah [mematikan artifact](/docs/id/artifacts#availability). Memerlukan Claude Code v2.1.221 atau lebih baru |220| `CLAUDE_CODE_ARTIFACT_COMMENTS` | Tetapkan ke `0` untuk menghentikan Claude membaca dan membalas [komentar pada artifact](/docs/id/artifacts#collect-comments-on-an-artifact). Tidak berpengaruh ketika `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` telah [mematikan artifact](/docs/id/artifacts#availability). Memerlukan Claude Code v2.1.221 atau yang lebih baru |

221| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | Atur ke `0` untuk menghentikan Claude [membalas sendiri komentar yang dikirim kepadanya](/docs/id/artifacts#let-claude-reply-to-comments-on-its-own). Memerlukan Claude Code v2.1.228 atau lebih baru |221| `CLAUDE_CODE_ARTIFACT_COMMENTS_AUTOREACT` | Tetapkan ke `0` untuk menghentikan Claude [membalas sendiri komentar yang dikirim kepadanya](/docs/id/artifacts#let-claude-reply-to-comments-on-its-own). Memerlukan Claude Code v2.1.228 atau yang lebih baru |

222| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Atur ke `0` untuk menghilangkan [blok atribusi](/docs/id/llm-gateway-protocol#system-prompt-attribution-block), yang membawa versi klien dan sidik jari prompt, dari awal system prompt. Caching pada koneksi langsung ke Anthropic API tidak terpengaruh dalam kedua kasus. Dalam beberapa penyiapan koneksi langsung, Claude Code mempertahankan blok tersebut pada permintaan pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) bahkan ketika Anda mengatur `0`. Di [Blok atribusi system prompt](/docs/id/llm-gateway-protocol#system-prompt-attribution-block), periksa koneksi dan kredensial mana yang tercakup oleh hal ini. Sebelum v2.1.181, blok tersebut menyertakan token per permintaan pada URL dasar kustom dan koneksi Microsoft Foundry, jadi pada versi tersebut atur ke `0` ketika LLM gateway Anda melakukan caching berdasarkan body permintaan atau meneruskan permintaan ke penyedia pihak ketiga, atau ketika Anda terhubung ke Microsoft Foundry secara langsung |222| `CLAUDE_CODE_ATTRIBUTION_HEADER` | Tetapkan ke `0` untuk menghilangkan [blok atribusi](/docs/id/llm-gateway-protocol#system-prompt-attribution-block), yang membawa versi klien dan sidik jari prompt, dari awal system prompt. Caching pada koneksi langsung ke Anthropic API tidak terpengaruh dalam kedua kasus. Dalam beberapa penyiapan koneksi langsung, Claude Code mempertahankan blok tersebut pada permintaan pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) bahkan ketika Anda menetapkan `0`. Di [Blok atribusi system prompt](/docs/id/llm-gateway-protocol#system-prompt-attribution-block), periksa koneksi dan kredensial mana yang dicakup. Sebelum v2.1.181 blok tersebut menyertakan token per permintaan pada base URL kustom dan koneksi Microsoft Foundry, jadi pada versi tersebut tetapkan ke `0` ketika LLM gateway Anda melakukan caching berdasarkan body permintaan atau meneruskan permintaan ke penyedia pihak ketiga, atau ketika Anda terhubung ke Microsoft Foundry secara langsung |

223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Ketika `CLAUDE_AUTO_BACKGROUND_TASKS` diaktifkan, jumlah detik di antara pengingat kepada Claude untuk memeriksa [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang masih berjalan. Hanya menerima bilangan bulat biasa dari `1` hingga `86400`; nilai atau ejaan lain dibaca sebagai tidak diatur. Jika tidak diatur, tidak ada pengingat pemeriksaan. Memerlukan Claude Code v2.1.248 atau lebih baru |223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Ketika `CLAUDE_AUTO_BACKGROUND_TASKS` diaktifkan, jumlah detik di antara pengingat kepada Claude untuk memeriksa [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang masih berjalan. Hanya menerima bilangan bulat biasa dari `1` hingga `86400`; nilai atau ejaan lain dibaca sebagai tidak ditetapkan. Jika tidak ditetapkan, tidak ada pengingat pemeriksaan. Memerlukan Claude Code v2.1.248 atau yang lebih baru |

224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Atur [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) dalam token, dari `100000` hingga `1000000`. Hanya menerima bilangan bulat biasa seperti `500000`: nilai seperti `500k` dibaca sebagai `500` dan dibatasi ke minimum 100K. Jendela efektif juga dibatasi pada context window model. Diutamakan daripada perintah `/autocompact`, flag `--autocompact`, dan pengaturan `autoCompactWindow`. `used_percentage` pada baris status selalu diukur terhadap context window penuh model, jadi setelah variabel ini diatur, persentase tersebut tidak lagi menunjukkan kapan compaction akan berjalan |224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Tetapkan [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) dalam token, dari `100000` hingga `1000000`. Hanya menerima bilangan bulat biasa seperti `500000`: nilai seperti `500k` dibaca sebagai `500` dan dibatasi ke minimum 100K. Jendela efektif juga dibatasi pada context window model. Diutamakan daripada perintah `/autocompact`, flag `--autocompact`, dan pengaturan `autoCompactWindow`. `used_percentage` pada baris status selalu diukur terhadap context window penuh model, sehingga setelah variabel ini ditetapkan, persentase tersebut tidak lagi menunjukkan kapan compaction akan berjalan |

225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Timpa [koneksi IDE](/docs/id/vs-code) otomatis. Secara default, Claude Code terhubung secara otomatis saat diluncurkan di dalam terminal terintegrasi IDE yang didukung. Atur ke `false` untuk mencegah hal ini. Atur ke `true` untuk memaksa upaya koneksi ketika deteksi otomatis gagal, seperti ketika tmux menyamarkan terminal induk. Diutamakan daripada pengaturan konfigurasi global [`autoConnectIde`](/docs/id/settings-reference#autoconnectide) |225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Timpa [koneksi IDE](/docs/id/vs-code) otomatis. Secara default, Claude Code terhubung secara otomatis saat diluncurkan di dalam terminal terintegrasi IDE yang didukung. Tetapkan ke `false` untuk mencegah hal ini. Tetapkan ke `true` untuk memaksa upaya koneksi ketika deteksi otomatis gagal, seperti ketika tmux mengaburkan terminal induk. Diutamakan daripada pengaturan konfigurasi global [`autoConnectIde`](/docs/id/settings-reference#autoconnectide) |

226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Mengontrol apakah Claude Code meminta server untuk [meninjau tindakan auto mode](/docs/id/permission-modes#server-side-classifier-review). Atur ke `0` untuk menggunakan permintaan pengklasifikasi milik Claude Code sendiri sebagai gantinya. Pada koneksi langsung ke Anthropic API, memerlukan v2.1.281 atau lebih baru. Bagian yang ditautkan mencantumkan sesi mana yang meminta server ketika variabel tidak diatur, dan mulai dari versi mana. Memerlukan Claude Code v2.1.271 atau lebih baru |226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Mengontrol apakah Claude Code meminta server untuk [meninjau tindakan auto mode](/docs/id/permission-modes#server-side-classifier-review). Tetapkan ke `0` untuk menggunakan permintaan pengklasifikasi milik Claude Code sendiri sebagai gantinya. Pada koneksi langsung ke Anthropic API, memerlukan v2.1.281 atau yang lebih baru. Bagian yang ditautkan mencantumkan sesi mana yang meminta server ketika variabel tidak ditetapkan, dan sejak versi berapa. Memerlukan Claude Code v2.1.271 atau yang lebih baru |

227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Waktu dalam milidetik yang ditunggu Claude Code agar rantai penyedia kredensial default AWS menghasilkan kredensial sebelum permintaan gagal dengan [`AWS default-chain credential resolve timed out`](/docs/id/errors#aws-default-chain-credential-resolve-timed-out) (default: `60000`). Naikkan nilai ini ketika suatu langkah dalam rantai Anda memang memerlukan waktu lebih lama, seperti proses masuk SSO berbasis browser dengan MFA melalui wrapper seperti `aws-vault`. Berlaku di mana pun Claude Code menandatangani dengan rantai default: [Amazon Bedrock](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint). Memerlukan Claude Code v2.1.207 atau lebih baru |227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Waktu dalam milidetik yang ditunggu Claude Code agar rantai penyedia kredensial default AWS menghasilkan kredensial sebelum permintaan gagal dengan [`AWS default-chain credential resolve timed out`](/docs/id/errors#aws-default-chain-credential-resolve-timed-out) (default: `60000`). Naikkan nilainya ketika sebuah langkah dalam rantai Anda memang membutuhkan waktu lebih lama, seperti proses masuk SSO berbasis browser dengan MFA melalui wrapper seperti `aws-vault`. Berlaku di mana pun Claude Code melakukan penandatanganan dengan rantai default: [Amazon Bedrock](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint). Memerlukan Claude Code v2.1.207 atau yang lebih baru |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Atur ke `0` untuk mematikan [diff file yang berubah saat perintah Bash berjalan](/docs/id/hooks#bash), atau `1` untuk mencatatnya di setiap mode izin. Diutamakan daripada pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled). Memerlukan Claude Code v2.1.269 atau lebih baru |228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Tetapkan ke `0` untuk mematikan [diff file yang berubah saat perintah Bash berjalan](/docs/id/hooks#bash), atau `1` untuk merekamnya di setiap mode izin. Diutamakan daripada pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled). Memerlukan Claude Code v2.1.269 atau yang lebih baru |

229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Atur ke `0` untuk membuat sesi non-interaktif melaporkan status idle ke host-nya di setiap akhir giliran, bahkan saat pekerjaan latar belakang masih berjalan. Secara default, sesi terus melaporkan status berjalan melewati akhir giliran selama pekerjaan latar belakang seperti agent latar belakang atau eksekusi [workflow](/docs/id/workflows) masih aktif. Hal ini mencegah host yang memantau status, seperti daftar sesi jarak jauh, mengumumkan bahwa Claude sedang menunggu input Anda di tengah pekerjaan. Perintah shell latar belakang, seperti server dev, tidak mempertahankan status berjalan. Default status berjalan dan opsi keluar `0` memerlukan Claude Code v2.1.269 atau lebih baru; pada versi sebelumnya, atur `1` untuk mempertahankan status berjalan |229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Tetapkan ke `0` agar sesi non-interaktif melaporkan status idle ke host-nya di setiap akhir giliran, bahkan ketika pekerjaan latar belakang masih berjalan. Secara default, sesi terus melaporkan status berjalan melewati akhir giliran selama pekerjaan latar belakang seperti agent latar belakang atau eksekusi [workflow](/docs/id/workflows) masih aktif. Ini mencegah host yang memantau status, seperti daftar sesi jarak jauh, mengumumkan bahwa Claude sedang menunggu input Anda di tengah pekerjaan. Perintah shell latar belakang, seperti server pengembangan, tidak mempertahankan status berjalan. Default status berjalan dan opsi `0` untuk menonaktifkannya memerlukan Claude Code v2.1.269 atau yang lebih baru; pada versi sebelumnya, tetapkan `1` untuk mempertahankan status berjalan |

230| `CLAUDE_CODE_BRIDGE_SESSION_ID` | Diatur secara otomatis di subproses tool Bash dan [perintah hook](/docs/id/hooks) selama sesi memiliki koneksi [Remote Control](/docs/id/remote-control) yang aktif, dan dihapus saat koneksi berakhir. Nilainya adalah ID sesi dalam bentuk `session_`, pengenal yang sama yang muncul di URL `claude.ai/code` sesi tersebut, sehingga skrip dapat menautkan kembali ke sesi yang menjalankannya. Memerlukan Claude Code v2.1.199 atau lebih baru. Di [sesi cloud](/docs/id/claude-code-on-the-web), baca `CLAUDE_CODE_REMOTE_SESSION_ID` sebagai gantinya |230| `CLAUDE_CODE_BRIDGE_SESSION_ID` | Ditetapkan secara otomatis dalam subproses tool Bash dan [perintah hook](/docs/id/hooks) selama sesi memiliki koneksi [Remote Control](/docs/id/remote-control) yang aktif, dan dihapus saat koneksi berakhir. Nilainya adalah ID sesi dalam bentuk `session_`, pengenal yang sama yang muncul di URL `claude.ai/code` sesi tersebut, sehingga skrip dapat menautkan kembali ke sesi yang menjalankannya. Memerlukan Claude Code v2.1.199 atau yang lebih baru. Dalam [sesi cloud](/docs/id/claude-code-on-the-web), baca `CLAUDE_CODE_REMOTE_SESSION_ID` sebagai gantinya |

231| `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | Atur ke `0` agar Claude Code membaca byte `0x08`, yang juga ditulis `^H`, sebagai Backspace biasa, atau `1` untuk membacanya sebagai Ctrl+Backspace. Kedua nilai tersebut menggantikan default platform. Secara default, Claude Code membacanya sebagai Ctrl+Backspace di Windows, kecuali ketika `TERM_PROGRAM` adalah `mintty` atau `TERM` adalah `cygwin`, dan sebagai Backspace biasa di macOS dan Linux. Atur `0` di terminal Windows tempat [Backspace menghapus seluruh kata](/docs/id/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) |231| `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | Tetapkan ke `0` agar Claude Code membaca byte `0x08`, yang juga ditulis `^H`, sebagai Backspace biasa, atau `1` untuk membacanya sebagai Ctrl+Backspace. Nilai mana pun menggantikan default platform. Secara default, Claude Code membacanya sebagai Ctrl+Backspace di Windows, kecuali ketika `TERM_PROGRAM` bernilai `mintty` atau `TERM` bernilai `cygwin`, dan sebagai Backspace biasa di macOS dan Linux. Tetapkan `0` di terminal Windows tempat [Backspace menghapus seluruh kata](/docs/id/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) |

232| `CLAUDE_CODE_CERT_STORE` | Daftar sumber sertifikat CA untuk koneksi TLS, dipisahkan koma. `bundled` adalah set CA Mozilla yang disertakan dengan Claude Code. `system` adalah trust store sistem operasi, yang hanya dibaca pada runtime dengan `tls.getCACertificates`: binary native, atau Node 22.15 atau lebih baru untuk instalasi npm. Lihat [Penyimpanan sertifikat CA](/docs/id/network-config#ca-certificate-store). Default-nya adalah `bundled,system` |232| `CLAUDE_CODE_CERT_STORE` | Daftar sumber sertifikat CA untuk koneksi TLS yang dipisahkan koma. `bundled` adalah set CA Mozilla yang disertakan dengan Claude Code. `system` adalah trust store sistem operasi, yang hanya dibaca pada runtime dengan `tls.getCACertificates`: binary native, atau Node 22.15 atau yang lebih baru untuk instalasi npm. Lihat [Penyimpanan sertifikat CA](/docs/id/network-config#ca-certificate-store). Default-nya `bundled,system` |

233| `CLAUDE_CODE_CHILD_SESSION` | Diatur ke `1` di subproses yang dijalankan Claude Code melalui tool Bash, PowerShell, dan Monitor, perintah [hook](/docs/id/hooks), dan perintah [baris status](/docs/id/statusline). Tidak diatur untuk subproses [server MCP](/docs/id/mcp) stdio, yang berumur panjang dan bertahan lebih lama dari sesi yang menjalankannya. Tidak seperti `CLAUDECODE`, variabel ini hanya diatur oleh Claude Code sendiri saat menjalankan subproses dan tidak oleh ekstensi IDE, sehingga dapat diandalkan untuk membedakan sesi bersarang dari `claude` tingkat atas yang diluncurkan di terminal terintegrasi IDE. TUI `claude` interaktif bersarang yang dimulai dengan cara ini secara otomatis dikecualikan dari `--resume`, `--continue`, riwayat panah atas, dan daftar `claude agents`. Sesi `claude -p` non-interaktif tetap disimpan. Atur `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` untuk menimpa pengecualian ini. Memerlukan Claude Code v2.1.172 atau lebih baru |233| `CLAUDE_CODE_CHILD_SESSION` | Ditetapkan ke `1` dalam subproses yang dijalankan Claude Code melalui tool Bash, PowerShell, dan Monitor, perintah [hook](/docs/id/hooks), dan perintah [baris status](/docs/id/statusline). Tidak ditetapkan untuk subproses [server MCP](/docs/id/mcp) stdio, yang berumur panjang dan bertahan lebih lama dari sesi yang menjalankannya. Tidak seperti `CLAUDECODE`, ini hanya ditetapkan oleh Claude Code sendiri saat menjalankan subproses dan tidak oleh ekstensi IDE, sehingga dapat dengan andal membedakan sesi bersarang dari `claude` tingkat atas yang diluncurkan di terminal terintegrasi IDE. TUI `claude` interaktif bersarang yang dimulai dengan cara ini secara otomatis dikecualikan dari `--resume`, `--continue`, riwayat panah atas, dan daftar `claude agents`. Sesi `claude -p` non-interaktif tetap disimpan. Tetapkan `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` untuk menimpa pengecualian ini. Memerlukan Claude Code v2.1.172 atau yang lebih baru |

234| `CLAUDE_CODE_CLIENT_CERT` | Path ke file sertifikat klien untuk autentikasi mTLS |234| `CLAUDE_CODE_CLIENT_CERT` | Path ke file sertifikat klien untuk autentikasi mTLS |

235| `CLAUDE_CODE_CLIENT_KEY` | Path ke file kunci privat klien untuk autentikasi mTLS |235| `CLAUDE_CODE_CLIENT_KEY` | Path ke file kunci privat klien untuk autentikasi mTLS |

236| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Passphrase untuk CLAUDE\_CODE\_CLIENT\_KEY yang terenkripsi (opsional) |236| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Passphrase untuk CLAUDE\_CODE\_CLIENT\_KEY yang terenkripsi (opsional) |

237| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | Dihapus di v2.1.186 dan sekarang tidak berpengaruh. Sebelumnya mengatur timeout terpisah untuk fase koneksi, TLS, dan header respons dari permintaan API streaming. Gunakan `API_TIMEOUT_MS` untuk timeout per permintaan. Untuk fase header respons dari permintaan streaming, lihat `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |237| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | Dihapus di v2.1.186 dan sekarang tidak berpengaruh. Sebelumnya menetapkan timeout terpisah untuk fase koneksi, TLS, dan header respons dari permintaan API streaming. Gunakan `API_TIMEOUT_MS` untuk timeout per permintaan. Untuk fase header respons dari permintaan streaming, lihat `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |

238| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Timpa path file log debug. Terlepas dari namanya, ini adalah path file, bukan direktori. Memerlukan mode debug yang diaktifkan secara terpisah melalui `--debug`, `/debug`, atau environment variable `DEBUG`: mengatur variabel ini saja tidak mengaktifkan logging. Flag [`--debug-file`](/docs/id/cli-reference#cli-flags) melakukan keduanya sekaligus. Default ke `~/.claude/debug/<session-id>.txt` |238| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Timpa path file log debug. Meskipun namanya demikian, ini adalah path file, bukan direktori. Memerlukan mode debug untuk diaktifkan secara terpisah melalui `--debug`, `/debug`, atau environment variable `DEBUG`: menetapkan variabel ini saja tidak mengaktifkan logging. Flag [`--debug-file`](/docs/id/cli-reference#cli-flags) melakukan keduanya sekaligus. Default-nya `~/.claude/debug/<session-id>.txt` |

239| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Tingkat log minimum yang ditulis ke file log debug. Nilai: `verbose`, `debug` (default), `info`, `warn`, `error`. Atur ke `verbose` untuk menyertakan diagnostik bervolume tinggi seperti output perintah baris status lengkap, atau naikkan ke `error` untuk mengurangi noise |239| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | Tingkat log minimum yang ditulis ke file log debug. Nilai: `verbose`, `debug` (default), `info`, `warn`, `error`. Tetapkan ke `verbose` untuk menyertakan diagnostik bervolume tinggi seperti output lengkap perintah baris status, atau naikkan ke `error` untuk mengurangi noise |

240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Atur ke `1` untuk menonaktifkan dukungan [context window 1M](/docs/id/model-config#extended-context). Jika diatur, varian model 1M tidak tersedia di pemilih model, dan Claude Code membatasi sesi pada model dengan window 1M native, seperti [Sonnet 5.5](/docs/id/model-config#sonnet-5-5-and-sonnet-5-context-window) dan model Fable, ke window 200K; lihat [Konteks diperluas](/docs/id/model-config#extended-context) untuk cara pembatasan ini diterapkan. Berguna untuk lingkungan enterprise dengan persyaratan kepatuhan. Untuk perannya dalam mengoreksi window untuk ID model `[1m]` yang tidak dikenali, lihat [Mengoreksi window untuk gateway atau ID model kustom](/docs/id/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Tetapkan ke `1` untuk menonaktifkan dukungan [context window 1M](/docs/id/model-config#extended-context). Jika ditetapkan, varian model 1M tidak tersedia di pemilih model, dan Claude Code menahan sesi pada model dengan jendela 1M native, seperti [Sonnet 5.5](/docs/id/model-config#sonnet-5-5-and-sonnet-5-context-window) dan model Fable, pada jendela 200K; lihat [Extended context](/docs/id/model-config#extended-context) untuk cara penahanan tersebut diterapkan. Berguna untuk lingkungan enterprise dengan persyaratan kepatuhan. Untuk perannya dalam mengoreksi jendela untuk ID model `[1m]` yang tidak dikenali, lihat [Mengoreksi jendela untuk ID model gateway atau kustom](/docs/id/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |

241| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Atur ke `1` untuk menonaktifkan [penalaran adaptif](/docs/id/model-config#adjust-effort-level) pada Opus 4.6 dan Sonnet 4.6 dan kembali ke thinking budget tetap yang dikontrol oleh `MAX_THINKING_TOKENS`. Tidak berpengaruh pada [model Fable](/docs/id/model-config#extended-thinking), Sonnet 5 dan yang lebih baru, atau Opus 4.7 dan yang lebih baru, yang selalu menggunakan penalaran adaptif |241| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Tetapkan ke `1` untuk menonaktifkan [adaptive reasoning](/docs/id/model-config#adjust-effort-level) pada Opus 4.6 dan Sonnet 4.6 dan kembali ke thinking budget tetap yang dikontrol oleh `MAX_THINKING_TOKENS`. Tidak berpengaruh pada [model Fable](/docs/id/model-config#extended-thinking), Sonnet 5 dan yang lebih baru, atau Opus 4.7 dan yang lebih baru, yang selalu menggunakan adaptive reasoning |

242| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | Atur ke `1` untuk menghentikan Claude Code menggabungkan blok `env` [pengaturan terkelola](/docs/id/managed-settings#precedence-within-the-managed-tier) per kunci di seluruh sumber admin, sehingga hanya seluruh blok `env` dari sumber dengan prioritas tertinggi yang berlaku, seperti sebelum v2.1.223. Atur di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirimkan melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.223 atau lebih baru |242| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | Tetapkan ke `1` untuk menghentikan Claude Code menggabungkan blok `env` [pengaturan terkelola](/docs/id/managed-settings#precedence-within-the-managed-tier) per kunci di seluruh sumber admin, sehingga hanya seluruh blok `env` dari sumber dengan prioritas tertinggi yang berlaku, seperti sebelum v2.1.223. Tetapkan di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirim melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.223 atau yang lebih baru |

243| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Atur ke `1` untuk menonaktifkan [tool advisor](/docs/id/advisor). Perintah `/advisor` menjadi tidak tersedia, `advisorModel` yang dikonfigurasi diabaikan, dan flag `--advisor` diterima tetapi tidak berpengaruh, sehingga skrip yang sudah ada yang meneruskannya tetap berfungsi tanpa error |243| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Tetapkan ke `1` untuk menonaktifkan [advisor tool](/docs/id/advisor). Perintah `/advisor` menjadi tidak tersedia, `advisorModel` yang dikonfigurasi diabaikan, dan flag `--advisor` diterima tetapi tidak berpengaruh, sehingga skrip yang sudah ada yang meneruskannya tetap berfungsi tanpa error |

244| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Atur ke `1` untuk mematikan [agent latar belakang dan agent view](/docs/id/agent-view): `claude agents`, `--bg`, `/background`, dan supervisor on-demand. Setara dengan pengaturan [`disableAgentView`](/docs/id/settings-reference#disableagentview) |244| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Tetapkan ke `1` untuk mematikan [agent latar belakang dan agent view](/docs/id/agent-view): `claude agents`, `--bg`, `/background`, dan supervisor sesuai permintaan. Setara dengan pengaturan [`disableAgentView`](/docs/id/settings-reference#disableagentview) |

245| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Atur ke `1` untuk menonaktifkan [rendering fullscreen](/docs/id/fullscreen) dan menggunakan renderer layar utama klasik. Percakapan tetap berada di scrollback native terminal Anda sehingga `Cmd+f` dan mode salin tmux berfungsi seperti biasa. Diutamakan daripada `CLAUDE_CODE_NO_FLICKER` dan pengaturan [`tui`](/docs/id/settings-reference#tui). Anda juga dapat beralih dengan `/tui default`. Tidak berlaku untuk sesi latar belakang yang dibuka dari [agent view](/docs/id/agent-view), yang selalu menggunakan rendering fullscreen |245| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Tetapkan ke `1` untuk menonaktifkan [rendering layar penuh](/docs/id/fullscreen) dan menggunakan renderer layar utama klasik. Percakapan tetap berada di scrollback native terminal Anda sehingga `Cmd+f` dan mode copy tmux berfungsi seperti biasa. Diutamakan daripada `CLAUDE_CODE_NO_FLICKER` dan pengaturan [`tui`](/docs/id/settings-reference#tui). Anda juga dapat beralih dengan `/tui default`. Tidak berlaku untuk sesi latar belakang yang dibuka dari [agent view](/docs/id/agent-view), yang selalu menggunakan rendering layar penuh |

246| `CLAUDE_CODE_DISABLE_ARTIFACT` | Atur ke `1` untuk mematikan tool [Artifact](/docs/id/artifacts), yang memublikasikan output sesi sebagai halaman web privat di claude.ai. Setelah Anda mengaturnya, tidak ada file pengaturan yang dapat menyalakan kembali tool tersebut. Untuk mematikan tool dari file pengaturan sebagai gantinya, atur [`enableArtifact`](/docs/id/settings-reference#enableartifact) ke `false`; kunci [`disableArtifact`](/docs/id/settings-reference#disableartifact) yang sudah deprecated juga mematikannya |246| `CLAUDE_CODE_DISABLE_ARTIFACT` | Tetapkan ke `1` untuk mematikan tool [Artifact](/docs/id/artifacts), yang memublikasikan output sesi sebagai halaman web privat di claude.ai. Setelah Anda menetapkannya, tidak ada file pengaturan yang dapat mengaktifkan kembali tool tersebut. Untuk mematikan tool dari file pengaturan, tetapkan [`enableArtifact`](/docs/id/settings-reference#enableartifact) ke `false`; kunci [`disableArtifact`](/docs/id/settings-reference#disableartifact) yang sudah deprecated juga mematikannya |

247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Atur ke `1` untuk menonaktifkan pemrosesan lampiran. Sebutan file dengan sintaks `@` dikirim sebagai teks biasa alih-alih diperluas menjadi konten file |247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Tetapkan ke `1` untuk menonaktifkan pemrosesan lampiran. Penyebutan file dengan sintaks `@` dikirim sebagai teks biasa alih-alih diperluas menjadi konten file |

248| `CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK` | Atur ke `1` agar proses Claude Code menjalankan sendiri perintah [`gcpAuthRefresh`](/docs/id/settings-reference#gcpauthrefresh) atau [`awsAuthRefresh`](/docs/id/settings-reference#awsauthrefresh) alih-alih menunggu selagi proses lain menjalankannya. Memerlukan Claude Code v2.1.286 atau lebih baru |248| `CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK` | Tetapkan ke `1` agar proses Claude Code menjalankan sendiri perintah [`gcpAuthRefresh`](/docs/id/settings-reference#gcpauthrefresh) atau [`awsAuthRefresh`](/docs/id/settings-reference#awsauthrefresh) alih-alih menunggu selama proses lain menjalankannya. Memerlukan Claude Code v2.1.286 atau yang lebih baru |

249| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Atur ke `1` untuk menonaktifkan [auto memory](/docs/id/memory#auto-memory). Atur ke `0` untuk memaksa auto memory aktif bahkan ketika mode `--bare` atau [`autoMemoryEnabled: false`](/docs/id/settings-reference#automemoryenabled) akan menonaktifkannya. Jika dinonaktifkan, Claude tidak membuat atau memuat file auto memory |249| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Tetapkan ke `1` untuk menonaktifkan [auto memory](/docs/id/memory#auto-memory). Tetapkan ke `0` untuk memaksa auto memory aktif bahkan ketika mode `--bare` atau [`autoMemoryEnabled: false`](/docs/id/settings-reference#automemoryenabled) akan menonaktifkannya. Jika dinonaktifkan, Claude tidak membuat atau memuat file auto memory |

250| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Atur ke `1` untuk menonaktifkan semua fungsionalitas tugas latar belakang, termasuk parameter `run_in_background` pada tool Bash dan subagent, pemindahan otomatis ke latar belakang, dan pintasan Ctrl+B |250| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Tetapkan ke `1` untuk menonaktifkan semua fungsionalitas tugas latar belakang, termasuk parameter `run_in_background` pada tool Bash dan subagent, pemindahan otomatis ke latar belakang, dan pintasan Ctrl+B |

251| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Atur ke `1` untuk menghentikan Claude Code memperlakukan respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) dengan header `Content-Type` yang hilang atau kosong sebagai event stream biner Amazon Bedrock. Secara default, Claude Code mengasumsikan gateway menghapus header dari respons yang selebihnya tidak dimodifikasi, sehingga Claude Code mendekode body dan streaming tetap berfungsi. Atur ini hanya untuk gateway yang juga mengirim ulang stream sebagai server-sent events; Claude Code kemudian membaca body tanpa header sebagai server-sent events. Memerlukan Claude Code v2.1.239 atau lebih baru |251| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Tetapkan ke `1` untuk menghentikan Claude Code memperlakukan respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) dengan header `Content-Type` yang hilang atau kosong sebagai binary event stream Amazon Bedrock. Secara default, Claude Code mengasumsikan gateway menghapus header dari respons yang selain itu tidak dimodifikasi, sehingga Claude Code mendekode body dan streaming tetap berfungsi. Tetapkan ini hanya untuk gateway yang juga memancarkan ulang stream sebagai server-sent events; Claude Code kemudian membaca body tanpa header sebagai server-sent events. Memerlukan Claude Code v2.1.239 atau yang lebih baru |

252| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Atur ke `1` untuk melewati pemeriksaan bahwa respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) membawa content-type `application/vnd.amazon.eventstream`. Tanpa variabel ini, ketika respons membawa content-type yang berbeda, Claude Code menggagalkan permintaan dengan error yang menyebutkan jenis tersebut, yang berarti [gateway atau proxy sedang mengubah respons](/docs/id/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). Konfigurasikan gateway untuk meneruskan header `Content-Type` dan body tanpa modifikasi alih-alih mengatur variabel ini. Memerlukan Claude Code v2.1.208 atau lebih baru |252| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Tetapkan ke `1` untuk melewati pemeriksaan bahwa respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) membawa content-type `application/vnd.amazon.eventstream`. Tanpa variabel ini, ketika respons membawa content-type yang berbeda, Claude Code menggagalkan permintaan dengan error yang menyebutkan tipe tersebut, yang berarti [gateway atau proxy sedang mentransformasi respons](/docs/id/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). Konfigurasikan gateway untuk meneruskan header `Content-Type` dan body tanpa modifikasi alih-alih menetapkan variabel ini. Memerlukan Claude Code v2.1.208 atau yang lebih baru |

253| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Atur ke `1` untuk menghentikan perintah shell latar belakang yang sedang berjalan di [sesi latar belakang](/docs/id/agent-view), workflow dinamis, dan, sejak v2.1.198, subagent latar belakang ketika [supervisor](/docs/id/agent-view#the-supervisor-process) menghentikan, memulai ulang, atau memperbarui proses sesi tersebut, alih-alih menyerahkannya ke proses berikutnya dari sesi tersebut. Hanya memengaruhi penyerahan tersebut: memindahkan sesi ke latar belakang dengan `←` atau [`/background`](/docs/id/agent-view#from-inside-a-session) tetap membawa pekerjaan yang sedang berlangsung, dan `CLAUDE_DISABLE_ADOPT` mematikan keduanya. Memerlukan Claude Code v2.1.196 atau lebih baru |253| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Tetapkan ke `1` untuk menghentikan perintah shell latar belakang yang sedang berjalan, workflow dinamis, dan, mulai v2.1.198, subagent latar belakang milik [sesi latar belakang](/docs/id/agent-view) ketika [supervisor](/docs/id/agent-view#the-supervisor-process) menghentikan, memulai ulang, atau memperbarui proses sesi tersebut, alih-alih menyerahkannya ke proses berikutnya dari sesi tersebut. Hanya memengaruhi penyerahan tersebut: memindahkan sesi ke latar belakang dengan `←` atau [`/background`](/docs/id/agent-view#from-inside-a-session) tetap membawa pekerjaan yang sedang berlangsung, dan `CLAUDE_DISABLE_ADOPT` mematikan keduanya. Memerlukan Claude Code v2.1.196 atau yang lebih baru |

254| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Atur ke `1` untuk menghentikan Claude Code mengakhiri [perintah shell latar belakang](/docs/id/interactive-mode#background-bash-commands) saat terjadi tekanan memori. Secara default, di macOS dan Linux, Claude Code mengakhiri shell latar belakang ketika sistem operasi melaporkan tekanan memori kritis dan sesi telah idle selama 30 menit tanpa giliran atau subagent yang berjalan. Windows tidak memiliki sinyal tekanan memori, sehingga variabel ini tidak berpengaruh di sana. Memerlukan Claude Code v2.1.193 atau lebih baru |254| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Tetapkan ke `1` untuk menghentikan Claude Code mengakhiri [perintah shell latar belakang](/docs/id/interactive-mode#background-bash-commands) saat terjadi tekanan memori. Secara default, di macOS dan Linux, Claude Code mengakhiri shell latar belakang ketika sistem operasi melaporkan tekanan memori kritis dan sesi telah idle selama 30 menit tanpa giliran atau subagent yang berjalan. Windows tidak memiliki sinyal tekanan memori, sehingga variabel ini tidak berpengaruh di sana. Memerlukan Claude Code v2.1.193 atau yang lebih baru |

255| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Atur ke `1` untuk menonaktifkan [skill](/docs/id/skills) dan workflow yang disertakan dengan Claude Code: skill dan workflow bawaan dihapus sepenuhnya, sementara perintah bawaan seperti `/init` tetap dapat diketik tetapi disembunyikan dari model. `/doctor` tetap dapat diketik seperti perintah bawaan; sembunyikan dengan `DISABLE_DOCTOR_COMMAND` sebagai gantinya. Skill dari plugin, `.claude/skills/`, dan `.claude/commands/` tidak terpengaruh. Setara dengan pengaturan [`disableBundledSkills`](/docs/id/settings-reference#disablebundledskills) |255| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Tetapkan ke `1` untuk menonaktifkan [skill](/docs/id/skills) dan workflow yang disertakan dengan Claude Code: skill dan workflow bawaan dihapus sepenuhnya, sementara perintah bawaan seperti `/init` tetap dapat diketik tetapi disembunyikan dari model. `/doctor` tetap dapat diketik seperti perintah bawaan; sembunyikan dengan `DISABLE_DOCTOR_COMMAND` sebagai gantinya. Skill dari plugin, `.claude/skills/`, dan `.claude/commands/` tidak terpengaruh. Setara dengan pengaturan [`disableBundledSkills`](/docs/id/settings-reference#disablebundledskills) |

256| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Atur ke `1` untuk menjaga tool browser [Claude in Chrome](/docs/id/chrome) tetap tersedia sambil menghilangkan bagian Chrome dari system prompt dan [skill bawaan](/docs/id/skills#bundled-skills) `/claude-in-chrome`. Untuk host yang menyematkan Claude Code dan menyediakan panduan browser mereka sendiri. Memerlukan Claude Code v2.1.257 atau lebih baru |256| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Tetapkan ke `1` untuk mempertahankan tool browser [Claude in Chrome](/docs/id/chrome) tetap tersedia sambil menghilangkan bagian Chrome dari system prompt dan [skill bawaan](/docs/id/skills#bundled-skills) `/claude-in-chrome`. Untuk host yang menyematkan Claude Code dan menyediakan panduan browser sendiri. Memerlukan Claude Code v2.1.257 atau yang lebih baru |

257| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Atur ke `1` untuk mencegah pemuatan file memori CLAUDE.md apa pun ke dalam konteks, termasuk file memori pengguna, proyek, dan auto memory |257| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Tetapkan ke `1` untuk mencegah pemuatan file memori CLAUDE.md apa pun ke dalam konteks, termasuk file memori pengguna, proyek, dan auto memory |

258| `CLAUDE_CODE_DISABLE_CRON` | Atur ke `1` untuk menonaktifkan [tugas terjadwal](/docs/id/scheduled-tasks). Skill `/loop` dan tool cron menjadi tidak tersedia dan tugas yang sudah dijadwalkan berhenti dijalankan, termasuk tugas yang sedang berjalan di tengah sesi |258| `CLAUDE_CODE_DISABLE_CRON` | Tetapkan ke `1` untuk menonaktifkan [tugas terjadwal](/docs/id/scheduled-tasks). Skill `/loop` dan tool cron menjadi tidak tersedia dan tugas yang sudah dijadwalkan berhenti dijalankan, termasuk tugas yang sudah berjalan di tengah sesi |

259| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Atur ke `1` untuk mematikan batas waktu pada permintaan izin [penghapusan jalur kritis](/docs/id/permission-modes#critical-paths). Dalam mode `auto`, Claude Code kemudian mengirimkan penghapusan ini ke pengklasifikasi, dan dalam mode `bypassPermissions` permintaan izin menunggu jawaban Anda. 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 |259| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Tetapkan ke `1` untuk mematikan batas waktu pada permintaan izin [penghapusan critical-path](/docs/id/permission-modes#critical-paths). Dalam mode `auto`, Claude Code kemudian mengirim penghapusan ini ke pengklasifikasi, dan dalam mode `bypassPermissions` permintaan izin menunggu jawaban Anda. Tetapkan di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirim melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.281 atau yang lebih baru |

260| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Atur ke `1` untuk menghapus header permintaan `anthropic-beta` pra-rilis, field body yang berpasangan dengannya, dan field skema tool beta seperti `defer_loading` dan `eager_input_streaming` dari permintaan API. Gunakan ini ketika proxy gateway menolak permintaan dengan error `Unexpected value(s)` untuk header `anthropic-beta` atau error `Extra inputs are not permitted`. [Menonaktifkan kapabilitas pra-rilis](/docs/id/llm-gateway-protocol#disable-pre-release-capabilities) mencantumkan apa yang dihapus variabel ini, termasuk [MCP tool search](/docs/id/mcp#scale-with-mcp-tool-search), dan apa yang tetap dikirim Claude Code |260| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Tetapkan ke `1` untuk menghapus header permintaan `anthropic-beta` pra-rilis, field body yang berpasangan dengannya, dan field skema tool beta seperti `defer_loading` dan `eager_input_streaming` dari permintaan API. Gunakan ini ketika proxy gateway menolak permintaan dengan error `Unexpected value(s)` untuk header `anthropic-beta` atau error `Extra inputs are not permitted`. [Menonaktifkan kapabilitas pra-rilis](/docs/id/llm-gateway-protocol#disable-pre-release-capabilities) mencantumkan apa yang dihapus variabel ini, termasuk [MCP tool search](/docs/id/mcp#scale-with-mcp-tool-search), dan apa yang tetap dikirim Claude Code |

261| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Atur ke `1` untuk menonaktifkan [subagent Explore dan Plan](/docs/id/sub-agents#built-in-subagents) bawaan. Claude melakukan eksplorasi dengan tool pencariannya atau subagent general-purpose sebagai gantinya, dan [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) membaca file secara langsung alih-alih meluncurkan agent Explore dan Plan. Subagent kustom bernama `Explore` atau `Plan` tidak terpengaruh. Untuk menghapus setiap jenis subagent bawaan di Agent SDK atau mode non-interaktif, gunakan `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` sebagai gantinya. Memerlukan Claude Code v2.1.198 atau lebih baru |261| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Tetapkan ke `1` untuk menonaktifkan [subagent Explore dan Plan](/docs/id/sub-agents#built-in-subagents) bawaan. Claude melakukan eksplorasi dengan tool pencariannya atau subagent general-purpose sebagai gantinya, dan [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) membaca file secara langsung alih-alih meluncurkan agent Explore dan Plan. Subagent kustom bernama `Explore` atau `Plan` tidak terpengaruh. Untuk menghapus setiap tipe subagent bawaan di Agent SDK atau mode non-interaktif, gunakan `CLAUDE_AGENT_SDK_DISABLE_BUILTIN_AGENTS` sebagai gantinya. Memerlukan Claude Code v2.1.198 atau yang lebih baru |

262| `CLAUDE_CODE_DISABLE_FAST_MODE` | Atur ke `1` untuk menonaktifkan [fast mode](/docs/id/fast-mode) |262| `CLAUDE_CODE_DISABLE_FAST_MODE` | Tetapkan ke `1` untuk menonaktifkan [fast mode](/docs/id/fast-mode) |

263| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Atur ke `1` untuk menonaktifkan survei kualitas sesi "How is Claude doing?". Survei juga dinonaktifkan ketika `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur, kecuali `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` mengaktifkannya kembali. Untuk mengatur laju sampel alih-alih menonaktifkannya sepenuhnya, gunakan pengaturan [`feedbackSurveyRate`](/docs/id/settings-reference#feedbacksurveyrate). Lihat [Survei kualitas sesi](/docs/id/data-usage#session-quality-surveys) |263| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Tetapkan ke `1` untuk menonaktifkan survei kualitas sesi "How is Claude doing?". Survei juga dinonaktifkan ketika `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` ditetapkan, kecuali `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` mengaktifkannya kembali. Untuk menetapkan tingkat sampel alih-alih menonaktifkannya sepenuhnya, gunakan pengaturan [`feedbackSurveyRate`](/docs/id/settings-reference#feedbacksurveyrate). Lihat [Survei kualitas sesi](/docs/id/data-usage#session-quality-surveys) |

264| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Atur ke `1` untuk menonaktifkan [checkpointing](/docs/id/checkpointing) file. Perintah `/rewind` tidak akan dapat memulihkan perubahan kode. Menimpa pengaturan [`fileCheckpointingEnabled`](/docs/id/settings-reference#filecheckpointingenabled) |264| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Tetapkan ke `1` untuk menonaktifkan [checkpointing](/docs/id/checkpointing) file. Perintah `/rewind` tidak akan dapat memulihkan perubahan kode. Menimpa pengaturan [`fileCheckpointingEnabled`](/docs/id/settings-reference#filecheckpointingenabled) |

265| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Atur ke `1` untuk menghapus instruksi alur kerja commit dan PR bawaan serta snapshot status git dari konteks Claude. Berguna saat menggunakan skill alur kerja git Anda sendiri. Diutamakan daripada pengaturan [`includeGitInstructions`](/docs/id/settings-reference#includegitinstructions) jika diatur |265| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Tetapkan ke `1` untuk menghapus instruksi alur kerja commit dan PR bawaan serta snapshot status git dari konteks Claude. Berguna saat menggunakan skill alur kerja git Anda sendiri. Diutamakan daripada pengaturan [`includeGitInstructions`](/docs/id/settings-reference#includegitinstructions) jika ditetapkan |

266| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Atur ke `1` untuk mencegah pemetaan ulang otomatis Opus 4.0 dan 4.1 ke versi Opus saat ini di Anthropic API. Gunakan ketika Anda sengaja ingin mem-pin model yang lebih lama. Pemetaan ulang tidak berjalan di Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry |266| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Tetapkan ke `1` untuk mencegah pemetaan ulang otomatis Opus 4.0 dan 4.1 ke versi Opus saat ini di Anthropic API. Gunakan ketika Anda sengaja ingin menyematkan model yang lebih lama. Pemetaan ulang tidak berjalan di Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry |

267| `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` | Atur ke `1` untuk menghentikan Claude Code di [Amazon Bedrock](/docs/id/amazon-bedrock#when-a-model-is-disabled-mid-session) dan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai#when-a-model-is-disabled-mid-session) beralih ke model yang lebih lama ketika akun Anda kehilangan akses ke model sesi di tengah sesi; permintaan yang ditolak langsung gagal sebagai gantinya. [Rantai model fallback](/docs/id/model-config#fallback-model-chains) yang Anda konfigurasi tetap beralih pada penolakan tersebut, dan [pemeriksaan model saat startup](/docs/id/amazon-bedrock#startup-model-checks) tetap melakukan fallback saat peluncuran. Memerlukan Claude Code v2.1.285 atau lebih baru |267| `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` | Tetapkan ke `1` untuk menghentikan Claude Code di [Amazon Bedrock](/docs/id/amazon-bedrock#when-a-model-is-disabled-mid-session) dan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai#when-a-model-is-disabled-mid-session) beralih ke model yang lebih lama ketika akun Anda kehilangan akses ke model sesi di tengah sesi; permintaan yang ditolak langsung gagal sebagai gantinya. [Rantai model fallback](/docs/id/model-config#fallback-model-chains) yang Anda konfigurasikan tetap beralih pada penolakan tersebut, dan [pemeriksaan model saat startup](/docs/id/amazon-bedrock#startup-model-checks) tetap melakukan fallback saat peluncuran. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

268| `CLAUDE_CODE_DISABLE_MOUSE` | Atur ke `1` untuk menonaktifkan pelacakan mouse dalam [rendering fullscreen](/docs/id/fullscreen). Pengguliran keyboard dengan `PgUp` dan `PgDn` tetap berfungsi. Gunakan ini untuk mempertahankan perilaku copy-on-select native terminal Anda |268| `CLAUDE_CODE_DISABLE_MOUSE` | Tetapkan ke `1` untuk menonaktifkan pelacakan mouse dalam [rendering layar penuh](/docs/id/fullscreen). Scroll dengan keyboard menggunakan `PgUp` dan `PgDn` tetap berfungsi. Gunakan ini untuk mempertahankan perilaku copy-on-select native terminal Anda |

269| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Atur ke `1` untuk menonaktifkan penanganan klik, seret, dan hover dalam [rendering fullscreen](/docs/id/fullscreen) sambil tetap mempertahankan pengguliran roda mouse. Gunakan ini ketika Anda ingin pengguliran roda berfungsi di dalam Claude Code tetapi tidak ingin klik memosisikan kursor, memperluas output tool, atau membuka tautan. `CLAUDE_CODE_DISABLE_MOUSE` diutamakan ketika keduanya diatur. Memerlukan Claude Code v2.1.195 atau lebih baru |269| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Tetapkan ke `1` untuk menonaktifkan penanganan klik, seret, dan hover dalam [rendering layar penuh](/docs/id/fullscreen) sambil tetap mempertahankan scroll roda mouse. Gunakan ini ketika Anda ingin scroll roda berfungsi di dalam Claude Code tetapi tidak ingin klik memosisikan kursor, memperluas output tool, atau membuka tautan. `CLAUDE_CODE_DISABLE_MOUSE` diutamakan ketika keduanya ditetapkan. Memerlukan Claude Code v2.1.195 atau yang lebih baru |

270| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Atur ke `1` untuk menghentikan Claude Code membaca ulang [sertifikat dan kunci klien mTLS](/docs/id/network-config#mtls-authentication) ketika permintaan API gagal dengan error tingkat koneksi, seperti reset koneksi atau error handshake TLS. Dengan pemuatan ulang dinonaktifkan, Claude Code memuat file yang dirotasi hanya saat berikutnya menerapkan pengaturan atau pada startup berikutnya. Memerlukan Claude Code v2.1.232 atau lebih baru |270| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Tetapkan ke `1` untuk menghentikan Claude Code membaca ulang [sertifikat dan kunci klien mTLS](/docs/id/network-config#mtls-authentication) ketika permintaan API gagal dengan error tingkat koneksi, seperti reset koneksi atau error handshake TLS. Dengan pemuatan ulang dinonaktifkan, Claude Code memuat file yang dirotasi hanya saat berikutnya menerapkan pengaturan atau pada startup berikutnya. Memerlukan Claude Code v2.1.232 atau yang lebih baru |

271| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk menonaktifkan lalu lintas jaringan yang tidak penting: pembaruan otomatis, telemetri, pelaporan error, perintah `/feedback`, [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), catatan rilis, pemeriksaan [lencana status PR dan MR](/docs/id/interactive-mode#pr-review-status), dan pemeriksaan ketersediaan seperti pemeriksaan [fast mode](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). Ini juga menghentikan [eksekusi latar belakang dari sumber `command` plugin](/docs/id/plugins/loading#when-a-command-source-re-runs), yang merupakan perintah lokal alih-alih lalu lintas jaringan, karena dapat memicu instalasi dependensi. **Mengaturnya ke `0` atau `false` tetap menonaktifkan lalu lintas ini**, tidak seperti sebagian besar variabel on/off; hapus pengaturan variabel untuk mengizinkannya lagi. Juga menonaktifkan pengambilan feature flag, yang membuat [Remote Control](/docs/id/remote-control#requirements) dan [fitur lain yang memerlukan pengambilan feature flag](#features-that-need-feature-flag-fetching) tidak tersedia. Instalasi otomatis marketplace plugin resmi tidak tercakup; nonaktifkan dengan `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. Tidak memengaruhi [penemuan model gateway](/docs/id/llm-gateway-connect#add-gateway-models-to-the-model-picker), yang memiliki opsi aktivasinya sendiri |271| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Tetapkan ke nilai apa pun yang tidak kosong, seperti `1`, untuk menonaktifkan lalu lintas jaringan yang tidak esensial: pembaruan otomatis, telemetri, pelaporan error, perintah `/feedback`, [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), catatan rilis, pemeriksaan [lencana status PR dan MR](/docs/id/interactive-mode#pr-review-status), dan pemeriksaan ketersediaan seperti pemeriksaan [fast mode](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). Ini juga menghentikan [eksekusi latar belakang sumber `command` plugin](/docs/id/plugins/loading#when-a-command-source-re-runs), yang merupakan perintah lokal dan bukan lalu lintas jaringan, karena dapat memicu instalasi dependensi. **Menetapkannya ke `0` atau `false` tetap menonaktifkan lalu lintas ini**, tidak seperti sebagian besar variabel aktif/nonaktif; hapus variabel untuk mengizinkannya kembali. Juga menonaktifkan pengambilan feature flag, yang membuat [Remote Control](/docs/id/remote-control#requirements) dan [fitur lain yang memerlukan pengambilan feature flag](#features-that-need-feature-flag-fetching) tidak tersedia. Instalasi otomatis marketplace plugin resmi tidak tercakup; nonaktifkan dengan `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. Tidak memengaruhi [penemuan model gateway](/docs/id/llm-gateway-connect#add-gateway-models-to-the-model-picker), yang memiliki opsi ikut serta tersendiri |

272| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Atur ke `1` untuk menonaktifkan fallback non-streaming ketika permintaan streaming gagal di tengah stream. Error streaming diteruskan ke lapisan retry sebagai gantinya. Berguna ketika proxy atau gateway menyebabkan fallback menghasilkan eksekusi tool duplikat |272| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Tetapkan ke `1` untuk menonaktifkan fallback non-streaming ketika permintaan streaming gagal di tengah stream. Error streaming diteruskan ke lapisan retry sebagai gantinya. Berguna ketika proxy atau gateway menyebabkan fallback menghasilkan eksekusi tool ganda |

273| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Atur ke `1` untuk mengirim notifikasi desktop tool `PushNotification` bahkan saat Anda sedang mengetik di terminal atau terminal sedang dalam fokus. Secara default, tool tersebut melewati notifikasi desktop dan [push seluler](/docs/id/remote-control#mobile-push-notifications) ketika mendeteksi aktivitas keyboard terbaru atau fokus terminal. Variabel ini hanya menonaktifkan pemeriksaan lokal tersebut, sehingga server masih dapat menekan push seluler ketika mendeteksi bahwa Anda sedang aktif. Memerlukan Claude Code v2.1.193 atau lebih baru |273| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Tetapkan ke `1` untuk mengirim notifikasi desktop tool `PushNotification` bahkan ketika Anda sedang mengetik di atau berfokus pada terminal. Secara default, tool melewati notifikasi desktop maupun [push seluler](/docs/id/remote-control#mobile-push-notifications) ketika mendeteksi aktivitas keyboard baru-baru ini atau fokus terminal. Variabel ini hanya menonaktifkan pemeriksaan lokal tersebut, sehingga server masih dapat menekan push seluler ketika mendeteksi bahwa Anda sedang aktif. Memerlukan Claude Code v2.1.193 atau yang lebih baru |

274| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Atur ke `1` untuk menonaktifkan pendaftaran otomatis marketplace plugin resmi. Claude Code membaca variabel ini saat akan mendaftarkan marketplace, biasanya selama peluncuran interaktif pertama pada suatu mesin. Jika variabel diatur pada saat itu, Claude Code melewati pendaftaran secara permanen. Menghapus pengaturan variabel di kemudian hari tidak membatalkan pelewatan tersebut. Jalankan `claude plugin marketplace add anthropics/claude-plugins-official` untuk mendaftarkan marketplace kapan saja |274| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Tetapkan ke `1` untuk menonaktifkan pendaftaran otomatis marketplace plugin resmi. Claude Code membaca variabel ini ketika akan mendaftarkan marketplace, biasanya selama peluncuran interaktif pertama pada sebuah mesin. Jika variabel ditetapkan pada saat itu, Claude Code melewati pendaftaran secara permanen. Menghapus variabel di kemudian hari tidak membatalkan pelewatan tersebut. Jalankan `claude plugin marketplace add anthropics/claude-plugins-official` untuk mendaftarkan marketplace kapan saja |

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` | Tetapkan ke `1` untuk menghentikan Claude Code menjalankan [hook `Notification` untuk permintaan izin yang belum dijawab](/docs/id/hooks#notification) dalam sesi tempat Claude Code mengirimkannya ke callback `canUseTool` milik Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code menjadi host Claude Code. Tidak berpengaruh dalam sesi terminal. Memerlukan Claude Code v2.1.233 atau yang 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` | Tetapkan ke `1` untuk melewati pemuatan skill dari direktori skill terkelola di seluruh 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` | Tetapkan ke `1` untuk mematikan pemeriksaan [tool PowerShell](/docs/id/tools-reference#powershell-tool) yang menolak built-in `cmd` `rd`, `rmdir`, `del`, dan `erase` pada [path 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 yang 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 |278| `CLAUDE_CODE_DISABLE_STRUCTURED_OUTPUTS` | Tetapkan ke `1` untuk menghentikan 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 kapabilitas pra-rilis lain yang dimatikan oleh [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/id/llm-gateway-protocol#disable-pre-release-capabilities). Memerlukan Claude Code v2.1.288 atau yang 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) |279| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Tetapkan ke `1` untuk mematikan pemeriksaan [critical-path](/docs/id/permission-modes#critical-paths) untuk `rm` rekursif yang targetnya sepenuhnya berupa output dari command substitution, seperti `rm -rf "$(pwd)"`. Pemeriksaan critical-path lainnya tetap berjalan. Tetapkan di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirim melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.281 atau yang lebih baru |

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 |280| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Tetapkan ke `1` untuk menonaktifkan pembaruan judul terminal otomatis berdasarkan konteks percakapan. Ini juga melewati permintaan model small/fast di latar belakang yang [membuat judul sesi](/docs/id/sessions#name-your-sessions) |

281| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Atur ke `1` untuk melewati [auto-compaction](/docs/id/costs#reduce-token-usage) proaktif ketika Claude Code tidak mengenali ID model, seperti alias [LLM gateway](/docs/id/llm-gateway). Tanpa variabel ini, Claude Code melakukan compaction pada context window yang diasumsikannya untuk ID tersebut. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` dapat mengoreksi window yang diasumsikan sebagai gantinya; lihat [Mengoreksi window untuk gateway atau ID model kustom](/docs/id/model-config#correct-the-window-for-a-gateway-or-custom-model-id) untuk mengetahui kapan setiap variabel berlaku. Memerlukan Claude Code v2.1.223 atau lebih baru |281| `CLAUDE_CODE_DISABLE_THINKING` | Tetapkan 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, sehingga kedua variabel berperilaku sama di sana |

282| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Atur ke `1` untuk menonaktifkan virtual scrolling dalam [rendering fullscreen](/docs/id/fullscreen) dan merender setiap pesan dalam transkrip. Gunakan ini jika pengguliran dalam mode fullscreen menampilkan area kosong di tempat pesan seharusnya muncul |282| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Tetapkan ke `1` untuk melewati [auto-compaction](/docs/id/costs#reduce-token-usage) proaktif ketika Claude Code tidak mengenali ID model, seperti alias [LLM gateway](/docs/id/llm-gateway). Tanpa variabel ini, Claude Code melakukan compaction pada context window yang diasumsikannya untuk ID tersebut. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` dapat mengoreksi jendela yang diasumsikan sebagai gantinya; lihat [Mengoreksi jendela untuk ID model gateway atau kustom](/docs/id/model-config#correct-the-window-for-a-gateway-or-custom-model-id) untuk kapan setiap variabel berlaku. Memerlukan Claude Code v2.1.223 atau yang lebih baru |

283| `CLAUDE_CODE_DISABLE_WEB_FETCH` | Atur ke `1` untuk mematikan tool [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior). Tool [WebSearch](/docs/id/tools-reference#websearch-tool-behavior) tetap tersedia. Memerlukan Claude Code v2.1.285 atau lebih baru |283| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Tetapkan ke `1` untuk menonaktifkan virtual scrolling dalam [rendering layar penuh](/docs/id/fullscreen) dan merender setiap pesan dalam transkrip. Gunakan ini jika scroll dalam mode layar penuh menampilkan area kosong di tempat pesan seharusnya muncul |

284| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Atur ke `1` untuk memulai perintah [tool PowerShell](/docs/id/tools-reference#powershell-tool) di Windows secara langsung alih-alih melalui launcher `cmd.exe`. Secara default, launcher memungkinkan perintah PowerShell yang [berjalan di latar belakang](/docs/id/tools-reference#background-commands) [berlanjut ke proses berikutnya dari sesi](/docs/id/agent-view#the-supervisor-process), seperti saat Anda [memindahkan sesi ke latar belakang](/docs/id/agent-view#from-inside-a-session). Jika Anda mengatur variabel ini, perintah PowerShell yang dipindahkan ke latar belakang berhenti saat proses sesi keluar. Perintah Bash tidak terpengaruh. Memerlukan Claude Code v2.1.269 atau lebih baru |284| `CLAUDE_CODE_DISABLE_WEB_FETCH` | Tetapkan ke `1` untuk mematikan tool [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior). Tool [WebSearch](/docs/id/tools-reference#websearch-tool-behavior) tetap tersedia. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

285| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Atur ke `1` untuk menonaktifkan [workflow](/docs/id/workflows#turn-workflows-off). Setara dengan pengaturan [`disableWorkflows`](/docs/id/settings-reference#disableworkflows) |285| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Tetapkan ke `1` untuk memulai perintah [tool PowerShell](/docs/id/tools-reference#powershell-tool) di Windows secara langsung alih-alih melalui launcher `cmd.exe`. Secara default, launcher memungkinkan perintah PowerShell yang [berjalan di latar belakang](/docs/id/tools-reference#background-commands) [berlanjut ke proses berikutnya dari sesi](/docs/id/agent-view#the-supervisor-process), seperti ketika Anda [memindahkan sesi ke latar belakang](/docs/id/agent-view#from-inside-a-session). Jika Anda menetapkan variabel ini, perintah PowerShell yang berjalan di latar belakang berhenti ketika proses sesi keluar. Perintah Bash tidak terpengaruh. Memerlukan Claude Code v2.1.269 atau yang lebih baru |

286| `CLAUDE_CODE_EFFORT_LEVEL` | Atur tingkat effort untuk model yang didukung. Nilai: `low`, `medium`, `high`, `xhigh`, `max`, atau `auto` untuk menggunakan default model. Tingkat yang tersedia bergantung pada model. Diutamakan daripada `--effort`, `/effort`, serta pengaturan `modelSettings` dan `effortLevel`. Batas [`maxEffortLevel`](/docs/id/settings-reference#maxeffortlevel) tetap berlaku. Lihat [Menyesuaikan tingkat effort](/docs/id/model-config#adjust-effort-level) |286| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Tetapkan ke `1` untuk menonaktifkan [workflow](/docs/id/workflows#turn-workflows-off). Setara dengan pengaturan [`disableWorkflows`](/docs/id/settings-reference#disableworkflows) |

287| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Diterima untuk kompatibilitas dengan rilis lama dan tidak berpengaruh. Auto mode tersedia secara default di setiap penyedia, termasuk Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, dan sesi [Claude apps gateway](/docs/id/claude-apps-gateway) yang sudah masuk. Di v2.1.158 hingga v2.1.206, mengatur ini ke `1` diperlukan agar [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) tersedia di penyedia tersebut |287| `CLAUDE_CODE_EFFORT_LEVEL` | Tetapkan tingkat effort untuk model yang didukung. Nilai: `low`, `medium`, `high`, `xhigh`, `max`, atau `auto` untuk menggunakan default model. Tingkat yang tersedia bergantung pada model. Diutamakan daripada `--effort`, `/effort`, serta pengaturan `modelSettings` dan `effortLevel`. Batas [`maxEffortLevel`](/docs/id/settings-reference#maxeffortlevel) tetap berlaku. Lihat [Menyesuaikan tingkat effort](/docs/id/model-config#adjust-effort-level) |

288| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Timpa ketersediaan [rekap sesi](/docs/id/interactive-mode#session-recap). Atur ke `0` untuk memaksa rekap nonaktif terlepas dari toggle `/config`. Atur ke `1` untuk memaksa rekap aktif ketika [`awaySummaryEnabled`](/docs/id/settings-reference#awaysummaryenabled) bernilai `false`. Diutamakan daripada pengaturan dan toggle `/config` |288| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Diterima untuk kompatibilitas dengan rilis lama dan tidak berpengaruh. Auto mode tersedia secara default di setiap penyedia, termasuk Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, dan sesi [Claude apps gateway](/docs/id/claude-apps-gateway) yang sudah masuk. Pada v2.1.158 hingga v2.1.206, menetapkan ini ke `1` diperlukan agar [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) tersedia pada penyedia tersebut |

289| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Timpa ketersediaan [rekap sesi](/docs/id/interactive-mode#session-recap). Tetapkan ke `0` untuk memaksa rekap nonaktif terlepas dari toggle `/config`. Tetapkan ke `1` untuk memaksa rekap aktif ketika [`awaySummaryEnabled`](/docs/id/settings-reference#awaysummaryenabled) bernilai `false`. Diutamakan daripada pengaturan dan toggle `/config` |

289| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Atur ke `1` untuk menyegarkan status plugin pada batas giliran dalam [mode non-interaktif](/docs/id/headless) setelah instalasi latar belakang selesai. Nonaktif secara default karena penyegaran mengubah system prompt di tengah sesi, yang membatalkan [prompt caching](/docs/id/prompt-caching) untuk giliran tersebut |290| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Atur ke `1` untuk menyegarkan status plugin pada batas giliran dalam [mode non-interaktif](/docs/id/headless) setelah instalasi latar belakang selesai. Nonaktif secara default karena penyegaran mengubah system prompt di tengah sesi, yang membatalkan [prompt caching](/docs/id/prompt-caching) untuk giliran tersebut |

290| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Atur ke `1` untuk mengarahkan survei kualitas sesi "How is Claude doing?" ke [kolektor OpenTelemetry](/docs/id/monitoring-usage) Anda sendiri ketika lalu lintas non-esensial yang menuju Anthropic diblokir. Penilaian survei hanya dikirimkan sebagai event OTEL ke kolektor yang Anda konfigurasikan. Tidak ada data survei yang dikirim ke Anthropic dalam mode ini. Berlaku ketika `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`, atau `DO_NOT_TRACK` diatur, dan tidak berpengaruh jika tidak. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` dan kebijakan umpan balik produk organisasi diutamakan |291| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Atur ke `1` untuk mengarahkan survei kualitas sesi "How is Claude doing?" ke [kolektor OpenTelemetry](/docs/id/monitoring-usage) Anda sendiri ketika lalu lintas nonesensial yang menuju Anthropic diblokir. Penilaian survei hanya dikirimkan sebagai event OTEL ke kolektor yang Anda konfigurasikan. Tidak ada data survei yang dikirim ke Anthropic dalam mode ini. Berlaku ketika `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`, atau `DO_NOT_TRACK` diatur, dan tidak berpengaruh jika sebaliknya. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` dan kebijakan umpan balik produk organisasi diutamakan |

291| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Mengontrol apakah input panggilan tool di-stream dari API saat Claude menghasilkannya. Jika ini dinonaktifkan, input tool yang besar seperti penulisan file yang panjang baru tiba setelah Claude selesai menghasilkannya, yang dapat terlihat seperti macet. Diaktifkan secara default pada Anthropic API. Pada Amazon Bedrock dan Google Cloud's Agent Platform, diaktifkan per model jika container yang di-deploy mendukungnya. Atur ke `0` untuk menonaktifkan. Atur ke `1` untuk memaksa aktif saat merutekan melalui proxy via `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, atau `ANTHROPIC_BEDROCK_BASE_URL`. Nonaktif secara default pada koneksi Microsoft Foundry dan [gateway](/docs/id/llm-gateway) |292| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Mengontrol apakah input panggilan tool di-stream dari API saat Claude menghasilkannya. Jika ini dinonaktifkan, input tool yang besar seperti penulisan file yang panjang baru tiba setelah Claude selesai menghasilkannya, yang dapat terlihat seperti macet. Diaktifkan secara default pada Anthropic API. Pada Amazon Bedrock dan Google Cloud's Agent Platform, diaktifkan per model jika container yang di-deploy mendukungnya. Atur ke `0` untuk menonaktifkan. Atur ke `1` untuk memaksa aktif saat merutekan melalui proxy via `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, atau `ANTHROPIC_BEDROCK_BASE_URL`. Nonaktif secara default pada Microsoft Foundry dan koneksi [gateway](/docs/id/llm-gateway) |

292| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Atur ke `1` untuk mengisi pemilih `/model` dari endpoint `/v1/models` gateway Anda ketika `ANTHROPIC_BASE_URL` mengarah ke gateway yang kompatibel dengan Anthropic seperti LiteLLM, Kong, atau proxy internal. Nonaktif secara default karena gateway yang didukung oleh kunci API bersama akan menampilkan kepada setiap pengguna setiap model yang dapat diakses oleh kunci tersebut. Model yang ditemukan tetap difilter oleh allowlist [`availableModels`](/docs/id/settings-reference#availablemodels) yang diterima sesi; kirimkan daftar tersebut melalui [MDM atau file pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms), karena [pengiriman yang dikelola server tidak tersedia pada konfigurasi gateway](/docs/id/server-managed-settings#platform-availability) |293| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Atur ke `1` untuk mengisi pemilih `/model` dari endpoint `/v1/models` gateway Anda ketika `ANTHROPIC_BASE_URL` menunjuk ke gateway yang kompatibel dengan Anthropic seperti LiteLLM, Kong, atau proxy internal. Nonaktif secara default karena gateway yang didukung oleh kunci API bersama akan menampilkan kepada setiap pengguna setiap model yang dapat diakses oleh kunci tersebut. Model yang ditemukan tetap difilter oleh allowlist [`availableModels`](/docs/id/settings-reference#availablemodels) yang diterima sesi; kirimkan daftar tersebut melalui [MDM atau file pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms), karena [pengiriman yang dikelola server tidak tersedia pada konfigurasi gateway](/docs/id/server-managed-settings#platform-availability) |

293| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Dihapus di v2.1.142, ketika default [fast mode](/docs/id/fast-mode) berpindah dari Opus 4.6 ke Opus 4.7 |294| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Dihapus di v2.1.142, ketika default [fast mode](/docs/id/fast-mode) berpindah dari Opus 4.6 ke Opus 4.7 |

294| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Atur ke `false` untuk menonaktifkan saran prompt, yaitu prediksi berwarna abu-abu yang muncul di input prompt Anda. Diutamakan daripada pengaturan [`promptSuggestionEnabled`](/docs/id/settings-reference#promptsuggestionenabled), yang merupakan nilai yang ditulis oleh toggle **Prompt suggestions** di `/config`. Claude Code juga [menjeda saran ketika akun Anda mendekati atau mencapai batas penggunaannya](/docs/id/interactive-mode#when-claude-code-skips-suggestions). Atur ke `true` agar saran tetap aktif hingga Anda mencapai batas. Memerlukan Claude Code v2.1.238 atau yang lebih baru. Lihat [Saran prompt](/docs/id/interactive-mode#prompt-suggestions) |295| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Atur ke `false` untuk mematikan saran prompt, yaitu prediksi berwarna abu-abu yang muncul di input prompt Anda. Diutamakan daripada pengaturan [`promptSuggestionEnabled`](/docs/id/settings-reference#promptsuggestionenabled), yang merupakan nilai yang ditulis oleh toggle **Prompt suggestions** di `/config`. Claude Code juga [menjeda saran ketika akun Anda mendekati atau telah mencapai batas penggunaannya](/docs/id/interactive-mode#when-claude-code-skips-suggestions). Atur ke `true` untuk tetap mengaktifkannya hingga Anda mencapai batas. Memerlukan Claude Code v2.1.238 atau lebih baru. Lihat [Saran prompt](/docs/id/interactive-mode#prompt-suggestions) |

295| `CLAUDE_CODE_ENABLE_TASKS` | Memilih tool pelacakan tugas mana yang disediakan Claude Code dalam [sesi yang memilikinya](/docs/id/tools-reference#task-tool-availability). Secara default, Claude Code menyediakan tool Task `TaskCreate`, `TaskUpdate`, `TaskGet`, dan `TaskList`. Atur ke `0` untuk mendapatkan tool `TodoWrite` versi lama sebagai gantinya. Lihat [Daftar tugas](/docs/id/interactive-mode#task-list) |296| `CLAUDE_CODE_ENABLE_TASKS` | Memilih tool pelacakan tugas mana yang disediakan Claude Code dalam [sesi yang memilikinya](/docs/id/tools-reference#task-tool-availability). Secara default, Claude Code menyediakan tool Task `TaskCreate`, `TaskUpdate`, `TaskGet`, dan `TaskList`. Atur ke `0` untuk mendapatkan tool lama `TodoWrite` sebagai gantinya. Lihat [Daftar tugas](/docs/id/interactive-mode#task-list) |

296| `CLAUDE_CODE_ENABLE_TELEMETRY` | Atur ke `1` untuk mengaktifkan pengumpulan data OpenTelemetry untuk metrik dan logging. Diperlukan sebelum mengonfigurasi exporter OTel. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan dalam [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Lihat [Pemantauan](/docs/id/monitoring-usage) |297| `CLAUDE_CODE_ENABLE_TELEMETRY` | Atur ke `1` untuk mengaktifkan pengumpulan data OpenTelemetry untuk metrik dan logging. Diperlukan sebelum mengonfigurasi exporter OTel. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Lihat [Pemantauan](/docs/id/monitoring-usage) |

297| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Atur ke `1` untuk mendapatkan tool pelacakan tugas pada setiap model. Tanpanya, Claude Code menyediakannya secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](/docs/id/tools-reference#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` tetap memilih tool Task atau `TodoWrite`. Memerlukan Claude Code v2.1.233 atau yang lebih baru |298| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Atur ke `1` untuk mendapatkan tool pelacakan tugas pada setiap model. Tanpanya, Claude Code menyediakannya secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](/docs/id/tools-reference#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` tetap memilih tool Task atau `TodoWrite`. Memerlukan Claude Code v2.1.233 atau lebih baru |

298| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Waktu dalam milidetik untuk menunggu setelah loop kueri menjadi idle sebelum keluar secara otomatis. Berguna untuk alur kerja otomatis dan skrip yang menggunakan mode SDK |299| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Waktu dalam milidetik untuk menunggu setelah loop kueri menjadi idle sebelum keluar secara otomatis. Berguna untuk alur kerja otomatis dan skrip yang menggunakan mode SDK |

299| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Atur ke `1` untuk mengaktifkan [tim agent](/docs/id/agent-teams). Tim agent bersifat eksperimental dan dinonaktifkan secara default |300| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Atur ke `1` untuk mengaktifkan [tim agent](/docs/id/agent-teams). Tim agent bersifat eksperimental dan dinonaktifkan secara default |

300| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON yang akan digabungkan ke tingkat teratas setiap body permintaan API. Berguna untuk meneruskan parameter khusus penyedia yang tidak diekspos langsung oleh Claude Code. Nilai yang diekspor di shell Anda juga berlaku untuk [sesi latar belakang](/docs/id/agent-view) yang Anda jalankan dengan `claude agents` atau `--bg`. Sebelum v2.1.206, sesi latar belakang mengabaikan nilai yang diekspor shell dan menggunakan salinan apa pun yang diwarisi oleh proses supervisor latar belakang |301| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke tingkat teratas setiap body permintaan API. Berguna untuk meneruskan parameter khusus penyedia yang tidak diekspos langsung oleh Claude Code. Nilai yang diekspor di shell Anda juga berlaku untuk [sesi latar belakang](/docs/id/agent-view) yang Anda kirim dengan `claude agents` atau `--bg`. Sebelum v2.1.206, sesi latar belakang mengabaikan nilai yang diekspor dari shell dan menggunakan salinan apa pun yang diwarisi oleh proses supervisor latar belakang |

301| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Menimpa batas token default untuk pembacaan file. Berguna ketika Anda perlu membaca file yang lebih besar secara utuh |302| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Menimpa batas token default untuk pembacaan file. Berguna ketika Anda perlu membaca file yang lebih besar secara utuh |

302| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Atur ke `1` untuk memaksa persistensi transkrip, riwayat prompt, dan pendaftaran `claude agents` bahkan ketika `claude` ini diluncurkan dari dalam sesi Claude Code lain. Gunakan ketika nilai `CLAUDE_CODE_CHILD_SESSION` yang diwarisi, misalnya dari sesi `screen` atau peluncur latar belakang yang pertama kali dijalankan oleh tool Bash Claude Code, menyebabkan sesi tingkat atas yang sebenarnya salah diklasifikasikan sebagai bersarang. Mulai v2.1.178, Claude Code mendeteksi kasus tmux secara otomatis dan mengabaikan penanda yang diwarisi, sehingga tmux tidak lagi memerlukan variabel ini. Juga dihormati pada v2.1.169 dan sebelumnya; tidak berpengaruh pada v2.1.170 dan v2.1.171, di mana deteksi sesi bersarang yang ditimpanya telah dihapus |303| `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE` | Atur ke `1` untuk memaksa persistensi transkrip, riwayat prompt, dan pendaftaran `claude agents` bahkan ketika `claude` ini diluncurkan dari dalam sesi Claude Code lain. Gunakan ketika nilai `CLAUDE_CODE_CHILD_SESSION` yang diwarisi, misalnya dari sesi `screen` atau peluncur latar belakang yang pertama kali dijalankan oleh tool Bash Claude Code, menyebabkan sesi tingkat atas yang sebenarnya salah diklasifikasikan sebagai bersarang. Sejak v2.1.178, Claude Code mendeteksi kasus tmux secara otomatis dan mengabaikan penanda yang diwarisi, sehingga tmux tidak lagi memerlukan variabel ini. Juga dihormati pada v2.1.169 dan sebelumnya; tidak berpengaruh pada v2.1.170 dan v2.1.171, di mana deteksi sesi bersarang yang ditimpanya telah dihapus |

303| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Atur ke `1` untuk memaksa rendering coret untuk `~~text~~` dalam respons Claude ketika terminal Anda mendukungnya tetapi tidak terdeteksi secara otomatis, seperti melalui SSH tanpa `TERM_PROGRAM` yang diteruskan. Tanpa ini, terminal yang tidak terdeteksi menampilkan penanda `~~` secara literal alih-alih merender teks sebagai coret. Memerlukan Claude Code v2.1.186 atau yang lebih baru |304| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Atur ke `1` untuk memaksa rendering coret untuk `~~text~~` dalam respons Claude ketika terminal Anda mendukungnya tetapi tidak terdeteksi secara otomatis, seperti melalui SSH tanpa `TERM_PROGRAM` diteruskan. Tanpa ini, terminal yang tidak terdeteksi menampilkan penanda `~~` secara literal alih-alih merender teks sebagai coret. Memerlukan Claude Code v2.1.186 atau lebih baru |

304| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Atur ke `1` untuk memaksa mengaktifkan DEC private mode 2026 [synchronized output](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) ketika terminal Anda mendukungnya tetapi tidak terdeteksi secara otomatis. Berguna untuk emulator seperti Emacs `eat` yang mengimplementasikan BSU/ESU tetapi tidak membalas probe kapabilitas. Tidak berpengaruh di bawah tmux. Tidak seperti `CLAUDE_CODE_NO_FLICKER`, yang beralih ke [rendering layar penuh](/docs/id/fullscreen), ini tidak mengubah renderer |305| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Atur ke `1` untuk memaksa aktif [output tersinkronisasi](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) DEC private mode 2026 ketika terminal Anda mendukungnya tetapi tidak terdeteksi secara otomatis. Berguna untuk emulator seperti Emacs `eat` yang mengimplementasikan BSU/ESU tetapi tidak membalas probe kapabilitas. Tidak berpengaruh di bawah tmux. Tidak seperti `CLAUDE_CODE_NO_FLICKER`, yang beralih ke [rendering layar penuh](/docs/id/fullscreen), ini tidak mengubah renderer |

305| `CLAUDE_CODE_FORK_SUBAGENT` | Mengontrol [mode fork](/docs/id/sub-agents#turn-fork-mode-on-or-off), yang memungkinkan Claude membuat [subagent hasil fork](/docs/id/sub-agents#fork-the-current-conversation) sendiri dan aktif secara default hanya dalam sesi interaktif. Atur ke `1` untuk mengaktifkannya juga di `claude -p` dan Agent SDK, atau `0` untuk menonaktifkannya di setiap jenis sesi. Anda dapat menjalankan `/subtask` baik mode fork aktif maupun tidak. Default interaktif memerlukan Claude Code v2.1.232 atau yang lebih baru; pada versi sebelumnya, atur variabel ke `1` untuk mengaktifkan mode fork |306| `CLAUDE_CODE_FORK_SUBAGENT` | Mengontrol [mode fork](/docs/id/sub-agents#turn-fork-mode-on-or-off), yang memungkinkan Claude memunculkan [subagent fork](/docs/id/sub-agents#fork-the-current-conversation) sendiri dan aktif secara default hanya dalam sesi interaktif. Atur ke `1` untuk juga mengaktifkannya di `claude -p` dan Agent SDK, atau `0` untuk mematikannya di setiap jenis sesi. Anda dapat menjalankan `/subtask` baik mode fork aktif maupun tidak. Default interaktif memerlukan Claude Code v2.1.232 atau lebih baru; pada versi sebelumnya, atur variabel ke `1` untuk mengaktifkan mode fork |

306| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | Atur ke `1` untuk mengeluarkan teks dan thinking block [subagent](/docs/id/sub-agents) dalam output `claude -p --output-format stream-json`, perilaku yang sama dengan flag [`--forward-subagent-text`](/docs/id/cli-reference#cli-flags). Gunakan variabel ini ketika harness memanggil `claude` dan tidak dapat meneruskan flag itu sendiri. Tidak seperti flag, yang keluar dengan error di luar mode non-interaktif dengan output stream-json, variabel ini diabaikan di sana sehingga pemanggilan bersarang tetap berfungsi ketika variabel diatur untuk seluruh proses. Memerlukan Claude Code v2.1.211 atau yang lebih baru |307| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | Atur ke `1` untuk mengeluarkan teks dan thinking block [subagent](/docs/id/sub-agents) dalam output `claude -p --output-format stream-json`, perilaku yang sama dengan flag [`--forward-subagent-text`](/docs/id/cli-reference#cli-flags). Gunakan variabel ini ketika harness memanggil `claude` dan tidak dapat meneruskan flag itu sendiri. Tidak seperti flag, yang keluar dengan error di luar mode non-interaktif dengan output stream-json, variabel ini diabaikan di sana sehingga pemanggilan bersarang tetap berfungsi ketika diatur untuk seluruh proses. Memerlukan Claude Code v2.1.211 atau lebih baru |

307| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | Atur ke `1` untuk mengirim [header petunjuk gateway](/docs/id/llm-gateway-protocol#gateway-hint-headers), seperti `x-claude-code-request-class` dan `x-claude-code-compaction`, pada proxy kustom atau penyedia pihak ketiga seperti Amazon Bedrock atau Claude Platform on AWS. Atur ke `0` untuk berhenti mengirimnya pada setiap koneksi, termasuk koneksi langsung ke Anthropic API, tempat Claude Code mengirimnya secara default. Memerlukan Claude Code v2.1.273 atau yang lebih baru |308| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | Atur ke `1` untuk mengirim [header petunjuk gateway](/docs/id/llm-gateway-protocol#gateway-hint-headers), seperti `x-claude-code-request-class` dan `x-claude-code-compaction`, pada proxy kustom atau penyedia pihak ketiga seperti Amazon Bedrock atau Claude Platform on AWS. Atur ke `0` untuk berhenti mengirimnya pada setiap koneksi, termasuk koneksi langsung ke Anthropic API, di mana Claude Code mengirimnya secara default. Memerlukan Claude Code v2.1.273 atau lebih baru |

308| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | Timeout dalam milidetik untuk permintaan [penemuan model gateway](/docs/id/llm-gateway-protocol#model-discovery) yang diaktifkan oleh `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` (default: `3000`). Naikkan jika gateway Anda membutuhkan lebih dari tiga detik untuk menjawab `/v1/models` saat startup. Hanya menerima digit biasa; `0`, nilai negatif, dan penulisan lain mempertahankan default. Memerlukan Claude Code v2.1.269 atau yang lebih baru |309| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | Timeout dalam milidetik untuk permintaan [penemuan model gateway](/docs/id/llm-gateway-protocol#model-discovery) yang diaktifkan oleh `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` (default: `3000`). Naikkan ketika gateway Anda memerlukan lebih dari tiga detik untuk menjawab `/v1/models` saat startup. Hanya menerima digit biasa; `0`, nilai negatif, dan penulisan lain mempertahankan default. Memerlukan Claude Code v2.1.269 atau lebih baru |

309| `CLAUDE_CODE_GIT_BASH_PATH` | Khusus Windows: path ke executable Git Bash (`bash.exe`). Gunakan ketika Git Bash terinstal tetapi tidak ada di PATH Anda. Jika path tidak ada atau file tidak bernama `bash.exe`, `sh.exe`, `bash`, atau `sh`, Claude Code mengabaikan variabel ini dan mendeteksi Git Bash secara otomatis seolah-olah variabel tidak diatur, sambil menulis peringatan ke log yang terlihat dengan `--debug`. Sebelum v2.1.219, Claude Code keluar saat startup ketika path tidak ada, dan menggunakan file apa pun yang ada sebagai shell tanpa memeriksa apakah itu bash atau sh. Lihat [Penyiapan Windows](/docs/id/setup#set-up-on-windows) |310| `CLAUDE_CODE_GIT_BASH_PATH` | Khusus Windows: path ke executable Git Bash (`bash.exe`). Gunakan ketika Git Bash terinstal tetapi tidak ada di PATH Anda. Jika path tidak ada atau file tidak bernama `bash.exe`, `sh.exe`, `bash`, atau `sh`, Claude Code mengabaikan variabel dan mendeteksi Git Bash secara otomatis seolah-olah tidak diatur, serta mencatat peringatan yang terlihat dengan `--debug`. Sebelum v2.1.219, Claude Code keluar saat startup ketika path tidak ada, dan menggunakan file apa pun yang ada sebagai shell tanpa memeriksa apakah itu bash atau sh. Lihat [Penyiapan Windows](/docs/id/setup#set-up-on-windows) |

310| `CLAUDE_CODE_GLOB_HIDDEN` | Atur ke `false` untuk mengecualikan dotfile dari hasil ketika Claude memanggil [tool Glob](/docs/id/tools-reference#glob-tool-behavior). Disertakan secara default. Tidak memengaruhi pelengkapan otomatis file `@`, `ls`, Grep, atau Read |311| `CLAUDE_CODE_GLOB_HIDDEN` | Atur ke `false` untuk mengecualikan dotfile dari hasil ketika Claude memanggil [tool Glob](/docs/id/tools-reference#glob-tool-behavior). Disertakan secara default. Tidak memengaruhi pelengkapan otomatis file `@`, `ls`, Grep, atau Read |

311| `CLAUDE_CODE_GLOB_NO_IGNORE` | Atur ke `false` agar [tool Glob](/docs/id/tools-reference#glob-tool-behavior) menghormati pola `.gitignore`. Secara default, Glob mengembalikan semua file yang cocok termasuk yang di-gitignore. Tidak memengaruhi pelengkapan otomatis file `@`, yang memiliki [pengaturan `respectGitignore`](/docs/id/settings-reference#respectgitignore) sendiri |312| `CLAUDE_CODE_GLOB_NO_IGNORE` | Atur ke `false` agar [tool Glob](/docs/id/tools-reference#glob-tool-behavior) menghormati pola `.gitignore`. Secara default, Glob mengembalikan semua file yang cocok termasuk yang di-gitignore. Tidak memengaruhi pelengkapan otomatis file `@`, yang memiliki [pengaturan `respectGitignore`](/docs/id/settings-reference#respectgitignore) sendiri |

312| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Timeout dalam detik untuk penemuan file oleh tool Glob. Default 20 detik di sebagian besar platform dan 60 detik di WSL |313| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Timeout dalam detik untuk penemuan file oleh tool Glob. Default 20 detik di sebagian besar platform dan 60 detik di WSL |

313| `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` | Berapa menit pekerjaan latar belakang dapat membuat goal aktif menunggu sebelum Claude Code [meminta Claude untuk memeriksanya](/docs/id/goal#background-work-defers-evaluation). Default `30`. Atur `0` untuk menonaktifkan pemeriksaan. Berikan menit bulat dalam digit biasa, maksimal `10080`, yaitu satu minggu. Claude Code memperlakukan nilai lain sebagai tidak diatur dan menggunakan default. Memerlukan Claude Code v2.1.234 atau yang lebih baru |314| `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` | Berapa menit pekerjaan latar belakang dapat membuat goal aktif menunggu sebelum Claude Code [meminta Claude untuk memeriksanya](/docs/id/goal#background-work-defers-evaluation). Default `30`. Atur `0` untuk mematikan pemeriksaan. Berikan menit utuh dalam digit biasa, paling banyak `10080`, yaitu satu minggu. Claude Code memperlakukan nilai lain sebagai tidak diatur dan menggunakan default. Memerlukan Claude Code v2.1.234 atau lebih baru |

314| `CLAUDE_CODE_HIDE_CWD` | Atur ke `1` untuk menyembunyikan direktori kerja di logo startup. Berguna untuk berbagi layar atau rekaman di mana path mengekspos nama pengguna OS Anda |315| `CLAUDE_CODE_HIDE_CWD` | Atur ke `1` untuk menyembunyikan direktori kerja di logo startup. Berguna untuk berbagi layar atau rekaman di mana path mengekspos nama pengguna OS Anda |

315| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Menimpa alamat host yang digunakan untuk terhubung ke ekstensi IDE. Secara default Claude Code mendeteksi alamat yang benar secara otomatis, termasuk perutean WSL-ke-Windows |316| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Menimpa alamat host yang digunakan untuk terhubung ke ekstensi IDE. Secara default Claude Code mendeteksi alamat yang benar secara otomatis, termasuk perutean WSL-ke-Windows |

316| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Atur ke `1` untuk melewati instalasi otomatis ekstensi IDE. Setara dengan mengatur [`autoInstallIdeExtension`](/docs/id/settings-reference#autoinstallideextension) ke `false` |317| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Atur ke `1` untuk melewati instalasi otomatis ekstensi IDE. Setara dengan mengatur [`autoInstallIdeExtension`](/docs/id/settings-reference#autoinstallideextension) ke `false` |

317| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Atur ke `1` untuk melewati validasi entri lockfile IDE selama koneksi. Gunakan ketika koneksi otomatis gagal menemukan IDE Anda meskipun sedang berjalan |318| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Atur ke `1` untuk melewati validasi entri lockfile IDE selama koneksi. Gunakan ketika koneksi otomatis gagal menemukan IDE Anda meskipun sedang berjalan |

318| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Berapa banyak [subagent](/docs/id/sub-agents#concurrent-subagent-limit) yang dapat berjalan dalam satu sesi sebelum tool Agent menolak membuat subagent lain (default: 20). Menerima bilangan bulat positif dalam digit biasa; nilai lain diabaikan, sehingga variabel ini dapat menyesuaikan batas tetapi tidak dapat menonaktifkannya. Memerlukan Claude Code v2.1.217 atau yang lebih baru |319| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Berapa banyak [subagent](/docs/id/sub-agents#concurrent-subagent-limit) yang dapat berjalan dalam satu sesi sebelum tool Agent menolak untuk memunculkan yang lain (default: 20). Menerima bilangan bulat positif dalam digit biasa; nilai lain diabaikan, sehingga variabel ini dapat menyesuaikan batas tetapi tidak dapat menonaktifkannya. Memerlukan Claude Code v2.1.217 atau lebih baru |

319| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Menimpa ukuran context window yang diasumsikan Claude Code untuk model aktif. Mulai v2.1.193, cara penerapannya bergantung pada bagaimana Claude Code me-resolve ID model; lihat [Koreksi window untuk gateway atau ID model kustom](/docs/id/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Gunakan ini saat merutekan ke model melalui `ANTHROPIC_BASE_URL` yang context window-nya tidak cocok dengan ukuran bawaan untuk namanya |320| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Menimpa ukuran context window yang diasumsikan Claude Code untuk model aktif. Sejak v2.1.193, cara penerapannya bergantung pada bagaimana Claude Code me-resolve ID model; lihat [Mengoreksi window untuk gateway atau ID model kustom](/docs/id/model-config#correct-the-window-for-a-gateway-or-custom-model-id). Gunakan ini saat merutekan ke model melalui `ANTHROPIC_BASE_URL` yang context window-nya tidak cocok dengan ukuran bawaan untuk namanya |

320| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Panjang maksimum dalam karakter dari setiap deskripsi tool MCP dan setiap instruksi server MCP yang dikirim Claude Code ke model (default: 2048). Claude Code [memotong teks yang lebih panjang](/docs/id/mcp#for-mcp-server-authors). Menerima bilangan bulat positif dalam digit biasa. Nilai lain diabaikan dan default berlaku. Memerlukan Claude Code v2.1.280 atau yang lebih baru |321| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Panjang maksimum dalam karakter dari setiap deskripsi tool MCP dan instruksi setiap server MCP yang dikirim Claude Code ke model (default: 2048). Claude Code [memotong teks yang lebih panjang](/docs/id/mcp#for-mcp-server-authors). Menerima bilangan bulat positif dalam digit biasa. Nilai lain diabaikan dan default berlaku. Memerlukan Claude Code v2.1.280 atau lebih baru |

321| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Mengatur jumlah maksimum token output untuk sebagian besar permintaan. Default dan batas bervariasi menurut model; lihat [max output tokens](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code menurunkan nilai di atas batas model ke batas tersebut. Untuk ID model yang tidak dapat di-resolve Claude Code ke model yang dikenalnya, defaultnya adalah 32000 dan batasnya 128000. Menaikkan nilai ini mengurangi context window efektif yang tersedia sebelum [auto-compaction](/docs/id/costs#reduce-token-usage) terpicu |322| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Mengatur jumlah maksimum token output untuk sebagian besar permintaan. Default dan batas bervariasi menurut model; lihat [token output maksimum](https://platform.claude.com/docs/en/about-claude/models/overview#latest-models-comparison). Claude Code menurunkan nilai di atas batas model ke batas tersebut. Untuk ID model yang tidak dapat di-resolve Claude Code ke model yang dikenalnya, defaultnya adalah 32000 dan batasnya 128000. Menaikkan nilai ini mengurangi context window efektif yang tersedia sebelum [auto-compaction](/docs/id/costs#reduce-token-usage) terpicu |

322| `CLAUDE_CODE_MAX_RETRIES` | Menimpa jumlah retry untuk permintaan API yang gagal (default: 10). Dibatasi maksimal 15 mulai v2.1.186; mulai v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` menaikkan default dan menghapus batas tersebut. Untuk sesi tanpa pengawasan yang perlu menunggu melewati gangguan yang lebih lama, atur `CLAUDE_CODE_RETRY_WATCHDOG` sebagai gantinya |323| `CLAUDE_CODE_MAX_RETRIES` | Menimpa jumlah retry untuk permintaan API yang gagal (default: 10). Dibatasi pada 15 sejak v2.1.186; sejak v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` menaikkan default dan menghapus batas tersebut. Untuk sesi tanpa pengawasan yang perlu menunggu melewati gangguan yang lebih lama, atur `CLAUDE_CODE_RETRY_WATCHDOG` sebagai gantinya |

323| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Dihapus di v2.1.224 dan sekarang tidak berpengaruh. Sebelumnya membatasi jumlah total [subagent](/docs/id/sub-agents) yang dapat dibuat Claude dengan tool Agent dalam satu sesi (default: 200); pembuatan melewati batas gagal dengan `Subagent spawn limit reached`. [Batas subagent bersamaan](/docs/id/sub-agents#concurrent-subagent-limit) dan [batas kedalaman](/docs/id/sub-agents#let-subagents-spawn-their-own-subagents) tetap berlaku |324| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Dihapus di v2.1.224 dan sekarang tidak berpengaruh. Sebelumnya membatasi jumlah total [subagent](/docs/id/sub-agents) yang dapat dimunculkan Claude dengan tool Agent dalam satu sesi (default: 200); memunculkan melewati batas gagal dengan `Subagent spawn limit reached`. [Batas subagent bersamaan](/docs/id/sub-agents#concurrent-subagent-limit) dan [batas kedalaman](/docs/id/sub-agents#let-subagents-spawn-their-own-subagents) tetap berlaku |

324| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | Jumlah [lapisan subagent](/docs/id/sub-agents#let-subagents-spawn-their-own-subagents) yang diizinkan di bawah percakapan utama (default: 3). Pada nilai default, subagent dapat membuat subagent mereka sendiri, dan subagent pada lapisan ketiga tidak dapat membuat lebih lanjut; atur `1` untuk menonaktifkan penyarangan. Pada v2.1.217 hingga v2.1.218, defaultnya adalah 1, sehingga subagent tidak dapat membuat subagent sendiri kecuali Anda menaikkan batasnya; v2.1.219 menaikkan default menjadi 3. Menerima bilangan bulat positif dalam digit biasa; nilai lain diabaikan, sehingga batas dapat disesuaikan tetapi tidak dapat dihapus. Memerlukan Claude Code v2.1.217 atau yang lebih baru |325| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | Jumlah [lapisan subagent](/docs/id/sub-agents#let-subagents-spawn-their-own-subagents) yang diizinkan di bawah percakapan utama (default: 3). Pada default, subagent dapat memunculkan subagent mereka sendiri, dan subagent di lapisan ketiga tidak dapat memunculkan lebih lanjut; atur `1` untuk mematikan penyarangan. Pada v2.1.217 hingga v2.1.218, defaultnya adalah 1, sehingga subagent tidak dapat memunculkan subagent sendiri kecuali Anda menaikkan batasnya; v2.1.219 menaikkan default menjadi 3. Menerima bilangan bulat positif dalam digit biasa; nilai lain diabaikan, sehingga batas dapat disesuaikan tetapi tidak dihapus. Memerlukan Claude Code v2.1.217 atau lebih baru |

325| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Jumlah maksimum tool read-only dan subagent yang dapat dieksekusi secara paralel (default: 10). Nilai yang lebih tinggi meningkatkan paralelisme tetapi mengonsumsi lebih banyak sumber daya |326| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Jumlah maksimum tool read-only dan subagent yang dapat dieksekusi secara paralel (default: 10). Nilai yang lebih tinggi meningkatkan paralelisme tetapi mengonsumsi lebih banyak sumber daya |

326| `CLAUDE_CODE_MAX_TURNS` | Membatasi jumlah giliran agentic ketika tidak ada batas eksplisit yang diteruskan. Setara dengan meneruskan [`--max-turns`](/docs/id/cli-reference#cli-flags), yang diutamakan ketika keduanya diatur. Nilai yang bukan bilangan bulat positif ditolak saat startup dengan error alih-alih diperlakukan sebagai tanpa batas |327| `CLAUDE_CODE_MAX_TURNS` | Membatasi jumlah giliran agentik ketika tidak ada batas eksplisit yang diteruskan. Setara dengan meneruskan [`--max-turns`](/docs/id/cli-reference#cli-flags), yang diutamakan ketika keduanya diatur. Nilai yang bukan bilangan bulat positif ditolak saat startup dengan error alih-alih diperlakukan sebagai tanpa batas |

327| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Batas jumlah total panggilan [WebSearch](/docs/id/tools-reference#websearch-tool-behavior) yang dapat dilakukan satu sesi (default: 200). Ketika Claude mencapai batas, panggilan WebSearch berikutnya mengembalikan pemberitahuan yang memintanya melanjutkan dengan informasi yang sudah dikumpulkan. Menerima bilangan bulat positif tanpa batas atas. Nilai lain diabaikan dan default berlaku, sehingga batas dapat dinaikkan tetapi tidak dapat dinonaktifkan. Memerlukan Claude Code v2.1.212 atau yang lebih baru |328| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Batas jumlah total panggilan [WebSearch](/docs/id/tools-reference#websearch-tool-behavior) yang dapat dilakukan satu sesi (default: 200). Ketika Claude mencapai batas, panggilan WebSearch selanjutnya mengembalikan pemberitahuan yang memintanya untuk melanjutkan dengan informasi yang sudah dikumpulkan. Menerima bilangan bulat positif tanpa batas atas. Nilai lain diabaikan dan default berlaku, sehingga batas dapat dinaikkan tetapi tidak dimatikan. Memerlukan Claude Code v2.1.212 atau lebih baru |

328| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Atur ke `1` untuk menjalankan server MCP stdio hanya dengan environment dasar yang aman ditambah `env` yang dikonfigurasi untuk server tersebut, alih-alih mewarisi environment shell Anda |329| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Atur ke `1` untuk memunculkan server MCP stdio hanya dengan environment dasar yang aman ditambah `env` yang dikonfigurasi untuk server, alih-alih mewarisi environment shell Anda |

329| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Waktu yang berlalu dalam milidetik sebelum panggilan tool MCP yang masih berjalan [dipindahkan ke tugas latar belakang](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls) (default: 120000, atau 2 menit). Atur ke `0` untuk menonaktifkan pemindahan ke latar belakang secara otomatis. Memerlukan Claude Code v2.1.212 atau yang lebih baru |330| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Waktu yang berlalu dalam milidetik sebelum panggilan tool MCP yang masih berjalan [dipindahkan ke tugas latar belakang](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls) (default: 120000, atau 2 menit). Atur ke `0` untuk mematikan pemindahan otomatis ke latar belakang. Memerlukan Claude Code v2.1.212 atau lebih baru |

330| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Berapa lama dalam milidetik giliran pertama sesi [non-interaktif](/docs/id/headless) menunggu server MCP yang masih terhubung, menggantikan [waktu tunggu giliran pertama](/docs/id/agent-sdk/mcp#connection-timing) default. Jika diatur, waktu tunggu mencakup setiap server yang tertunda. Atur ke `0` untuk melewati penantian. Server [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) tetap menggunakan waktu tunggu `MCP_TIMEOUT` miliknya sendiri terlepas dari nilai ini. Memerlukan Claude Code v2.1.274 atau yang lebih baru |331| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Berapa lama dalam milidetik giliran pertama sesi [non-interaktif](/docs/id/headless) menunggu server MCP yang masih menghubungkan, menggantikan [penantian giliran pertama](/docs/id/agent-sdk/mcp#connection-timing) default. Ketika diatur, penantian mencakup setiap server yang tertunda. Atur ke `0` untuk melewati penantian. Server [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) tetap menggunakan penantian `MCP_TIMEOUT` miliknya sendiri apa pun nilainya. Memerlukan Claude Code v2.1.274 atau lebih baru |

331| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Timeout idle dalam milidetik untuk panggilan tool MCP. Ketika server MCP stdio, HTTP, SSE, WebSocket, atau [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) tidak mengirim respons maupun notifikasi progres selama waktu ini, panggilan tool dibatalkan dengan error alih-alih menunggu `MCP_TOOL_TIMEOUT` keseluruhan. Menimpa default per transport sebesar 300000 (5 menit) untuk server jaringan dan 1800000 (30 menit) untuk server stdio. Atur ke `0` untuk menonaktifkan pemeriksaan idle. Nilai di bawah 1000 dinaikkan menjadi satu detik, dan nilai dibatasi maksimal pada `MCP_TOOL_TIMEOUT` yang efektif. `timeout` per server di `.mcp.json` yang bernilai minimal 1000 menaikkan jendela idle server tersebut setidaknya ke nilai `timeout`. Tidak berlaku untuk server IDE atau server SDK in-process. Memerlukan Claude Code v2.1.187 atau yang lebih baru. Sebelum v2.1.203, server stdio dikecualikan dari timeout idle |332| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Timeout idle dalam milidetik untuk panggilan tool MCP. Ketika server MCP stdio, HTTP, SSE, WebSocket, atau [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) tidak mengirim respons dan tidak ada notifikasi progres selama waktu ini, panggilan tool dibatalkan dengan error alih-alih menunggu `MCP_TOOL_TIMEOUT` keseluruhan. Menimpa default per transport sebesar 300000 (5 menit) untuk server jaringan dan 1800000 (30 menit) untuk server stdio. Atur ke `0` untuk menonaktifkan pemeriksaan idle. Nilai di bawah 1000 dinaikkan menjadi satu detik, dan nilainya dibatasi pada `MCP_TOOL_TIMEOUT` efektif. `timeout` per server di `.mcp.json` sebesar minimal 1000 menaikkan window idle server tersebut menjadi minimal nilai `timeout`. Tidak berlaku untuk server IDE atau server in-process SDK. Memerlukan Claude Code v2.1.187 atau lebih baru. Sebelum v2.1.203, server stdio dikecualikan dari timeout idle |

332| `CLAUDE_CODE_MESSAGING_SOCKET` | Diatur oleh Claude Code, bukan oleh Anda: dalam sesi yang mengikat [socket inbox](/docs/id/cross-session-messaging#the-sessions-inbox-socket), Claude Code mengekspor path socket tersebut ke hook dan perintah Bash saat mengikat socket. Dalam sesi yang dimulai dengan pesan aktif, Claude Code mengikat socket sebelum hook apa pun berjalan. Sesi lain di mesin mengirimkan pesan ke path ini. Setiap sesi mengekspor socket-nya sendiri, bukan yang diwarisi dari induk, dan pesan yang tiba di socket tersebut melewati [kontrol pesan masuk](/docs/id/cross-session-messaging#control-inbound-messages) sesi. Blok `env` pengaturan tidak dapat mengaturnya. Memerlukan Claude Code v2.1.224 atau yang lebih baru |333| `CLAUDE_CODE_MESSAGING_SOCKET` | Diatur oleh Claude Code, bukan oleh Anda: dalam sesi yang mengikat [socket inbox](/docs/id/cross-session-messaging#the-sessions-inbox-socket), Claude Code mengekspor path socket tersebut ke hook dan perintah Bash saat mengikat socket. Dalam sesi yang dimulai dengan perpesanan aktif, Claude Code mengikat socket sebelum hook apa pun berjalan. Sesi lain di mesin mengirimkan pesan ke path ini. Setiap sesi mengekspor socket miliknya sendiri alih-alih yang diwarisi dari induk, dan pesan yang tiba di socket tersebut melewati [kontrol masuk](/docs/id/cross-session-messaging#control-inbound-messages) sesi. Blok `env` pengaturan tidak dapat mengaturnya. Memerlukan Claude Code v2.1.224 atau lebih baru |

333| `CLAUDE_CODE_MESSAGING_TOKEN` | Diatur oleh Claude Code, bukan oleh Anda: dalam sesi yang mengikat [socket inbox](/docs/id/cross-session-messaging#the-sessions-inbox-socket), Claude Code mengekspor token per sesi ini ke hook dan perintah Bash bersama dengan `CLAUDE_CODE_MESSAGING_SOCKET`. Skrip yang mengirim ke socket dapat mengirim `{"type":"auth","token":"<token>"}` sebagai baris pertamanya untuk membuktikan bahwa skrip tersebut milik sesi. Di Windows native, Claude Code mewajibkan baris ini dan menutup koneksi apa pun yang tidak dibuka dengan baris yang valid. [Aturan own-child](/docs/id/cross-session-messaging#the-sessions-inbox-socket) menjelaskan kapan Claude Code memeriksa token. Setiap sesi mengekspor token-nya sendiri, tidak pernah token yang diwarisi dari sesi induk. Blok `env` pengaturan tidak dapat mengaturnya. Memerlukan Claude Code v2.1.228 atau yang lebih baru |334| `CLAUDE_CODE_MESSAGING_TOKEN` | Diatur oleh Claude Code, bukan oleh Anda: dalam sesi yang mengikat [socket inbox](/docs/id/cross-session-messaging#the-sessions-inbox-socket), Claude Code mengekspor token per sesi ini ke hook dan perintah Bash bersama dengan `CLAUDE_CODE_MESSAGING_SOCKET`. Skrip yang mengirim ke socket dapat mengirim `{"type":"auth","token":"<token>"}` sebagai baris pertamanya untuk membuktikan bahwa ia milik sesi tersebut. Pada Windows native, Claude Code mewajibkan baris ini dan menutup koneksi apa pun yang tidak dibuka dengan baris yang valid. [Aturan anak sendiri](/docs/id/cross-session-messaging#the-sessions-inbox-socket) menjelaskan kapan Claude Code memeriksa token. Setiap sesi mengekspor token miliknya sendiri, tidak pernah yang diwarisi dari sesi induk. Blok `env` pengaturan tidak dapat mengaturnya. Memerlukan Claude Code v2.1.228 atau lebih baru |

334| `CLAUDE_CODE_NATIVE_CURSOR` | Atur ke `1` untuk menampilkan kursor terminal sendiri pada posisi caret input alih-alih blok yang digambar. Kursor menghormati pengaturan kedip, bentuk, dan fokus terminal |335| `CLAUDE_CODE_NATIVE_CURSOR` | Atur ke `1` untuk menampilkan kursor milik terminal pada caret input alih-alih blok yang digambar. Kursor menghormati pengaturan kedip, bentuk, dan fokus terminal |

335| `CLAUDE_CODE_NEW_INIT` | Atur ke `1` agar `/init` menjalankan alur penyiapan interaktif. Alur ini menanyakan file mana yang akan dibuat, termasuk CLAUDE.md, skill, dan hook, sebelum menjelajahi codebase dan menulisnya. Tanpa variabel ini, `/init` membuat CLAUDE.md secara otomatis tanpa bertanya |336| `CLAUDE_CODE_NEW_INIT` | Atur ke `1` agar `/init` menjalankan alur penyiapan interaktif. Alur ini menanyakan file mana yang akan dibuat, termasuk CLAUDE.md, skill, dan hook, sebelum menjelajahi codebase dan menulisnya. Tanpa variabel ini, `/init` membuat CLAUDE.md secara otomatis tanpa bertanya |

336| `CLAUDE_CODE_NONBLOCKING_STDOUT` | Atur ke `1` untuk menulis output terminal melalui file descriptor non-blocking kedua, sehingga terminal yang berhenti membaca, seperti pane tmux control-mode yang dijeda atau koneksi SSH yang macet, tidak dapat membekukan Claude Code di tengah sesi. Berlaku di macOS, Linux, dan WSL ketika stdout adalah terminal. Memerlukan Claude Code v2.1.261 atau yang lebih baru |337| `CLAUDE_CODE_NONBLOCKING_STDOUT` | Atur ke `1` untuk menulis output terminal melalui file descriptor non-blocking kedua, sehingga terminal yang berhenti membaca, seperti panel tmux control-mode yang dijeda atau koneksi SSH yang macet, tidak dapat membekukan Claude Code di tengah sesi. Berlaku di macOS, Linux, dan WSL ketika stdout adalah terminal. Memerlukan Claude Code v2.1.261 atau lebih baru |

337| `CLAUDE_CODE_NO_FLICKER` | Atur ke `1` untuk mengaktifkan [rendering layar penuh](/docs/id/fullscreen), sebuah research preview yang mengurangi kedipan dan menjaga penggunaan memori tetap stabil dalam percakapan panjang. Menimpa pengaturan [`tui`](/docs/id/settings-reference#tui); Anda juga dapat beralih dengan `/tui fullscreen` |338| `CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES` | Membatasi berapa kali Claude Code mengirim ulang [permintaan non-streaming](/docs/id/errors#streaming-response-ended-before-any-complete-data-was-received) yang mengalami timeout. Dengan `0`, permintaan gagal pada timeout pertama. Tidak diatur secara default, sehingga `CLAUDE_CODE_MAX_RETRIES` membatasi pengiriman ulang ini. Lihat [Menyesuaikan perilaku retry](/docs/id/errors#tune-retry-behavior) untuk timeout. Memerlukan Claude Code v2.1.285 atau lebih baru |

338| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Refresh token OAuth untuk autentikasi Claude.ai. Jika diatur, `claude auth login` menukarkan token ini secara langsung alih-alih membuka browser. Memerlukan `CLAUDE_CODE_OAUTH_SCOPES`. Berguna untuk menyediakan autentikasi di lingkungan otomatis |339| `CLAUDE_CODE_NO_FLICKER` | Atur ke `1` untuk mengaktifkan [rendering layar penuh](/docs/id/fullscreen), sebuah research preview yang mengurangi kedipan dan menjaga memori tetap datar dalam percakapan panjang. Menimpa pengaturan [`tui`](/docs/id/settings-reference#tui); Anda juga dapat beralih dengan `/tui fullscreen` |

339| `CLAUDE_CODE_OAUTH_SCOPES` | Scope OAuth yang dipisahkan spasi yang digunakan saat refresh token diterbitkan, seperti `"user:profile user:inference user:sessions:claude_code"`. Diperlukan ketika `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` diatur |340| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token refresh OAuth untuk autentikasi Claude.ai. Ketika diatur, `claude auth login` menukar token ini secara langsung alih-alih membuka browser. Memerlukan `CLAUDE_CODE_OAUTH_SCOPES`. Berguna untuk menyediakan autentikasi di lingkungan otomatis |

340| `CLAUDE_CODE_OAUTH_TOKEN` | Token akses OAuth untuk autentikasi claude.ai. Alternatif untuk `/login` bagi SDK dan lingkungan otomatis. Diutamakan daripada kredensial yang disimpan di keychain. Buat dengan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token). Kecuali Anda menjalankan [`/login`](/docs/id/authentication#authentication-precedence), Claude Code menggunakan token yang Anda atur untuk seluruh sesi. Untuk mengganti token yang kedaluwarsa, buat token baru dan mulai ulang |341| `CLAUDE_CODE_OAUTH_SCOPES` | Scope OAuth yang dipisahkan spasi yang digunakan saat token refresh diterbitkan, seperti `"user:profile user:inference user:sessions:claude_code"`. Diperlukan ketika `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` diatur |

342| `CLAUDE_CODE_OAUTH_TOKEN` | Token akses OAuth untuk autentikasi claude.ai. Alternatif untuk `/login` untuk SDK dan lingkungan otomatis. Diutamakan daripada kredensial yang disimpan di keychain. Buat dengan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token). Kecuali Anda menjalankan [`/login`](/docs/id/authentication#authentication-precedence), Claude Code menggunakan token yang Anda atur untuk seluruh sesi. Untuk mengganti token yang kedaluwarsa, buat yang baru dan mulai ulang |

341| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | Dihapus di v2.1.160 dan sekarang tidak berpengaruh. Sebelumnya menyematkan [fast mode](/docs/id/fast-mode) ke Claude Opus 4.6 alih-alih default saat ini. Opus 4.6 tidak lagi mendukung fast mode |343| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | Dihapus di v2.1.160 dan sekarang tidak berpengaruh. Sebelumnya menyematkan [fast mode](/docs/id/fast-mode) ke Claude Opus 4.6 alih-alih default saat ini. Opus 4.6 tidak lagi mendukung fast mode |

342| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Panjang maksimum atribut OpenTelemetry yang memuat konten (respons model, konten tool, system prompt, body API mentah), termasuk penanda pemotongan, dalam unit kode UTF-16 (default: 61440, yaitu 60 KB). Naikkan hanya jika backend telemetri Anda menerima nilai atribut yang lebih besar dari 64 KB, atau turunkan untuk mengurangi volume telemetri. Memerlukan Claude Code v2.1.214 atau yang lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage) |344| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Panjang maksimum atribut OpenTelemetry yang membawa konten (respons model, konten tool, system prompt, body API mentah), termasuk penanda pemotongan, dalam unit kode UTF-16 (default: 61440, yaitu 60 KB). Naikkan hanya jika backend telemetri Anda menerima nilai atribut yang lebih besar dari 64 KB, atau turunkan untuk mengurangi volume telemetri. Memerlukan Claude Code v2.1.214 atau lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage) |

343| `CLAUDE_CODE_OTEL_DIAG_STDERR` | Atur ke `1` untuk menulis error diagnostik exporter OpenTelemetry ke stderr. Secara default error ini hanya muncul dengan `--debug`, sehingga exporter yang salah dikonfigurasi seperti bentrokan port Prometheus akan gagal tanpa pemberitahuan. Memerlukan Claude Code v2.1.179 atau yang lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage) |345| `CLAUDE_CODE_OTEL_DIAG_STDERR` | Atur ke `1` untuk menulis error diagnostik exporter OpenTelemetry ke stderr. Secara default error ini hanya muncul dengan `--debug`, sehingga exporter yang salah dikonfigurasi seperti bentrokan port Prometheus akan gagal secara diam-diam. Memerlukan Claude Code v2.1.179 atau lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage) |

344| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Timeout dalam milidetik untuk mengosongkan span OpenTelemetry yang tertunda (default: 5000). Lihat [Pemantauan](/docs/id/monitoring-usage) |346| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Timeout dalam milidetik untuk mem-flush span OpenTelemetry yang tertunda (default: 5000). Lihat [Pemantauan](/docs/id/monitoring-usage) |

345| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Interval untuk memperbarui header OpenTelemetry dinamis dalam milidetik (default: 1740000 / 29 menit). Lihat [Header dinamis](/docs/id/monitoring-usage#dynamic-headers) |347| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Interval untuk menyegarkan header OpenTelemetry dinamis dalam milidetik (default: 1740000 / 29 menit). Lihat [Header dinamis](/docs/id/monitoring-usage#dynamic-headers) |

346| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Timeout dalam milidetik bagi exporter OpenTelemetry untuk selesai saat shutdown (default: 2000). Naikkan jika metrik hilang saat keluar. Lihat [Pemantauan](/docs/id/monitoring-usage) |348| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Timeout dalam milidetik bagi exporter OpenTelemetry untuk selesai saat shutdown (default: 2000). Naikkan jika metrik hilang saat keluar. Lihat [Pemantauan](/docs/id/monitoring-usage) |

347| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Atur ke `1` agar Claude Code menjalankan perintah upgrade package manager Anda di latar belakang ketika versi baru tersedia. Berlaku untuk instalasi Homebrew dan WinGet. Package manager lain tetap menampilkan perintah upgrade tanpa menjalankannya. Lihat [Pembaruan otomatis](/docs/id/setup#auto-updates) |349| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Atur ke `1` agar Claude Code menjalankan perintah upgrade package manager Anda di latar belakang ketika versi baru tersedia. Berlaku untuk instalasi Homebrew dan WinGet. Package manager lain tetap menampilkan perintah upgrade tanpa menjalankannya. Lihat [Pembaruan otomatis](/docs/id/setup#auto-updates) |

348| `CLAUDE_CODE_PERFORCE_MODE` | Atur ke `1` untuk mengaktifkan proteksi penulisan yang sadar Perforce. Jika diatur, Edit, Write, dan NotebookEdit gagal dengan petunjuk `p4 edit <file>` jika file target tidak memiliki bit owner-write, yang dihapus Perforce pada file yang disinkronkan hingga `p4 edit` membukanya. Ini mencegah Claude Code melewati pelacakan perubahan Perforce |350| `CLAUDE_CODE_PERFORCE_MODE` | Atur ke `1` untuk mengaktifkan perlindungan penulisan yang sadar Perforce. Ketika diatur, Edit, Write, dan NotebookEdit gagal dengan petunjuk `p4 edit <file>` jika file target tidak memiliki bit owner-write, yang dihapus Perforce pada file yang disinkronkan hingga `p4 edit` membukanya. Ini mencegah Claude Code melewati pelacakan perubahan Perforce |

349| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Menimpa direktori root plugin. Meskipun namanya demikian, ini mengatur direktori induk, bukan cache itu sendiri: marketplace dan cache plugin berada di subdirektori di bawah path ini. Default ke `~/.claude/plugins` |351| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Menimpa direktori root plugin. Meskipun namanya demikian, ini mengatur direktori induk, bukan cache itu sendiri: marketplace dan cache plugin berada di subdirektori di bawah path ini. Default `~/.claude/plugins` |

350| `CLAUDE_CODE_PLUGIN_DIRS` | Direktori plugin yang akan dimuat untuk sesi, masing-masing dimuat seperti cara flag [`--plugin-dir`](/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) memuatnya. Pisahkan beberapa path dengan `:` di Unix atau `;` di Windows. Berikan setiap path sebagai path absolut atau awali dengan `~`, karena Claude Code melewati path relatif. Memerlukan Claude Code v2.1.280 atau yang lebih baru. Lihat [Memuat plugin untuk satu sesi](/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) |352| `CLAUDE_CODE_PLUGIN_DIRS` | Direktori plugin yang akan dimuat untuk sesi, masing-masing dimuat dengan cara yang sama seperti flag [`--plugin-dir`](/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) memuatnya. Pisahkan beberapa path dengan `:` di Unix atau `;` di Windows. Berikan setiap path sebagai path absolut atau awali dengan `~`, karena Claude Code melewati path relatif. Memerlukan Claude Code v2.1.280 atau lebih baru. Lihat [Memuat plugin untuk satu sesi](/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) |

351| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout dalam milidetik untuk meng-clone atau memperbarui marketplace plugin (default: 120000). Naikkan nilai ini untuk repositori besar atau koneksi jaringan yang lambat. Lihat [Git clone timed out](/docs/id/plugins/troubleshooting#git-clone-timed-out-after-120s) |353| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout dalam milidetik untuk meng-clone atau menyegarkan marketplace plugin (default: 120000). Naikkan nilai ini untuk repositori besar atau koneksi jaringan yang lambat. Lihat [Git clone timed out](/docs/id/plugins/troubleshooting#git-clone-timed-out-after-120s) |

352| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Atur ke `1` untuk melewati upaya clone ulang dan tetap menggunakan checkout marketplace yang ada ketika pembaruan marketplace tidak dapat menjangkau atau mengautentikasi ke remote. Berguna di lingkungan offline atau airgapped di mana clone ulang akan gagal dengan cara yang sama. Lihat [Pembaruan marketplace gagal di lingkungan offline](/docs/id/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |354| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Atur ke `1` untuk melewati upaya clone ulang dan tetap menggunakan checkout marketplace yang ada ketika penyegaran marketplace tidak dapat menjangkau atau mengautentikasi ke remote. Berguna di lingkungan offline atau airgapped di mana clone ulang akan gagal dengan cara yang sama. Lihat [Pembaruan marketplace gagal di lingkungan offline](/docs/id/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

353| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Atur ke `1` untuk meng-clone sumber singkatan GitHub `owner/repo` melalui HTTPS alih-alih SSH. Berlaku untuk instalasi dan pembaruan plugin, serta untuk `/plugin marketplace add` dan `update`. Berguna di runner CI, container, atau lingkungan apa pun tanpa kunci SSH yang dikonfigurasi untuk `github.com` |355| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Atur ke `1` untuk meng-clone sumber singkatan GitHub `owner/repo` melalui HTTPS alih-alih SSH. Berlaku untuk instalasi dan pembaruan plugin, serta untuk `/plugin marketplace add` dan `update`. Berguna di runner CI, container, atau lingkungan apa pun tanpa kunci SSH yang dikonfigurasi untuk `github.com` |

354| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Path ke satu atau beberapa direktori seed plugin read-only, dipisahkan oleh `:` di Unix atau `;` di Windows. Gunakan ini untuk membundel direktori plugin yang sudah terisi ke dalam image container. Claude Code mendaftarkan marketplace dari direktori ini saat startup dan menggunakan plugin yang sudah di-cache tanpa clone ulang. Lihat [Mengisi plugin terlebih dahulu untuk container](/docs/id/plugins/org#seed-containers-and-ci) |356| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Path ke satu atau lebih direktori seed plugin read-only, dipisahkan dengan `:` di Unix atau `;` di Windows. Gunakan ini untuk membundel direktori plugin yang sudah terisi ke dalam image container. Claude Code mendaftarkan marketplace dari direktori ini saat startup dan menggunakan plugin yang sudah di-cache tanpa clone ulang. Lihat [Mengisi plugin terlebih dahulu untuk container](/docs/id/plugins/org#seed-containers-and-ci) |

355| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Atur ke `1` untuk menghentikan Claude Code meneruskan `-ExecutionPolicy Bypass` saat menjalankan PowerShell untuk panggilan tool, hook, dan perintah baris status, dan menghormati execution policy efektif mesin sebagai gantinya. Secara default Claude Code melewati execution policy pada cakupan proses sehingga skrip `.ps1` dan impor modul berfungsi pada instalasi Windows dengan default Restricted. Bypass cakupan proses tidak pernah menimpa Group Policy `MachinePolicy` atau `UserPolicy` terlepas dari pengaturan ini |357| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Atur ke `1` untuk menghentikan Claude Code meneruskan `-ExecutionPolicy Bypass` saat memunculkan PowerShell untuk panggilan tool, hook, dan perintah baris status, dan sebagai gantinya menghormati execution policy efektif mesin. Secara default Claude Code melewati execution policy pada cakupan proses sehingga skrip `.ps1` dan impor modul berfungsi pada instalasi Windows dengan default Restricted. Bypass cakupan proses tidak pernah menimpa Group Policy `MachinePolicy` atau `UserPolicy` terlepas dari pengaturan ini |

356| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Batas atas dalam milidetik untuk penantian idle terhadap subagent dan workflow latar belakang setelah giliran terakhir dalam [mode non-interaktif](/docs/id/headless#background-tasks-at-exit) dengan flag `-p`. Penantian idle dimulai ulang setiap kali Claude mengambil giliran untuk menangani hasil latar belakang. Default: `600000`, atau 10 menit. Ketika penantian idle mencapai batas atas, Claude Code berhenti menunggu tugas latar belakang yang tersisa dan keluar. Atur ke `0` untuk menunggu tanpa batas. Batas ini terpisah dari masa tenggang lima detik yang berlaku untuk shell latar belakang biasa. Memerlukan Claude Code v2.1.182 atau yang lebih baru |358| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Batas atas dalam milidetik untuk penantian idle bagi subagent dan workflow latar belakang setelah giliran terakhir dalam [mode non-interaktif](/docs/id/headless#background-tasks-at-exit) dengan flag `-p`. Penantian idle dimulai ulang setiap kali Claude mengambil giliran untuk menangani hasil latar belakang. Default: `600000`, atau 10 menit. Ketika penantian idle mencapai batas atas, Claude Code berhenti menunggu tugas latar belakang yang tersisa dan keluar. Atur ke `0` untuk menunggu tanpa batas. Batas ini terpisah dari masa tenggang lima detik yang berlaku untuk shell latar belakang biasa. Memerlukan Claude Code v2.1.182 atau lebih baru |

357| `CLAUDE_CODE_PROCESS_WRAPPER` | Meluncurkan proses yang dijalankan Claude Code dari binary-nya sendiri, seperti layanan latar belakang yang menjadi host sesi [agent view](/docs/id/agent-view), melalui peluncur korporat yang diberikan sebagai prefiks argv seperti `/opt/corp/launcher`. Atur di blok `env` pengaturan pengguna atau [pengaturan terkelola](/docs/id/managed-settings), bukan sebagai export shell, agar layanan latar belakang yang terlepas mewarisinya; pengaturan proyek dan lokal tidak dapat mengaturnya. Setara dengan [pengaturan `processWrapper`](/docs/id/settings-reference#processwrapper), yang memerlukan Claude Code v2.1.210 atau yang lebih baru; variabel ini diutamakan ketika keduanya diatur. Ekstensi VS Code mengonfigurasi peluncurnya sendiri secara terpisah melalui pengaturan `claudeProcessWrapper`-nya. Diabaikan di Windows. Lihat [Menjalankan Claude Code di balik peluncur korporat](/docs/id/corporate-launcher) untuk format nilai, apa yang dicakup peluncur, dan kontrak yang harus dipenuhi peluncur. Memerlukan Claude Code v2.1.208 atau yang lebih baru |359| `CLAUDE_CODE_PROCESS_WRAPPER` | Meluncurkan proses yang dimulai Claude Code dari binary-nya sendiri, seperti layanan latar belakang yang menjadi host sesi [agent view](/docs/id/agent-view), melalui peluncur korporat yang diberikan sebagai prefiks argv seperti `/opt/corp/launcher`. Atur di blok `env` pengaturan pengguna atau [pengaturan terkelola](/docs/id/managed-settings), bukan sebagai ekspor shell, sehingga layanan latar belakang yang terlepas mewarisinya; pengaturan proyek dan lokal tidak dapat mengaturnya. Setara dengan [pengaturan `processWrapper`](/docs/id/settings-reference#processwrapper), yang memerlukan Claude Code v2.1.210 atau lebih baru; variabel ini diutamakan ketika keduanya diatur. Ekstensi VS Code mengonfigurasi peluncurnya sendiri secara terpisah melalui pengaturan `claudeProcessWrapper`. Diabaikan di Windows. Lihat [Menjalankan Claude Code di balik peluncur korporat](/docs/id/corporate-launcher) untuk format nilai, apa yang dicakup peluncur, dan kontrak yang harus dipenuhi peluncur. Memerlukan Claude Code v2.1.208 atau lebih baru |

358| `CLAUDE_CODE_PROJECT_DIR_NAME` | Atur bersama dengan `CLAUDE_CONFIG_DIR` untuk memilih nama direktori `projects/` tempat Claude Code menyimpan transkrip dan auto memory sesi tersebut, menggantikan nama yang diturunkan dari path direktori kerja. Misalnya, memulai Claude Code dengan `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` menyimpannya di bawah `/srv/tenant-a/projects/work/`. Claude Code mengabaikan variabel ini ketika `CLAUDE_CONFIG_DIR` tidak diatur, dan hanya membacanya dari environment tempat Anda memulai `claude`, tidak pernah dari [blok `env` file pengaturan](#in-settings-files). Lihat [Menamai direktori proyek sendiri](/docs/id/sessions#name-the-project-directory-yourself). Memerlukan Claude Code v2.1.234 atau yang lebih baru |360| `CLAUDE_CODE_PROJECT_DIR_NAME` | Atur bersama dengan `CLAUDE_CONFIG_DIR` untuk memilih nama direktori `projects/` tempat Claude Code menyimpan transkrip dan auto memory sesi tersebut, menggantikan nama yang diturunkan dari path direktori kerja. Misalnya, memulai Claude Code dengan `CLAUDE_CONFIG_DIR=/srv/tenant-a CLAUDE_CODE_PROJECT_DIR_NAME=work claude` menyimpannya di bawah `/srv/tenant-a/projects/work/`. Claude Code mengabaikan variabel ini ketika `CLAUDE_CONFIG_DIR` tidak diatur, dan membacanya hanya dari environment tempat Anda memulai `claude`, tidak pernah dari [blok `env` file pengaturan](#in-settings-files). Lihat [Menamai direktori proyek sendiri](/docs/id/sessions#name-the-project-directory-yourself). Memerlukan Claude Code v2.1.234 atau lebih baru |

359| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Atur `5m` atau `1h`, satu-satunya nilai yang diterima Claude Code, untuk memilih [TTL cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk percakapan utama: giliran interaktif, `-p`, dan SDK Anda, ditambah helper yang berjalan inline bersamanya. Diutamakan daripada pengaturan `promptCacheTtl` dan daripada `ENABLE_PROMPT_CACHING_1H`, dan `FORCE_PROMPT_CACHING_5M` menimpanya. API menagih penulisan cache 1 jam dengan tarif lebih tinggi. Memerlukan Claude Code v2.1.242 atau yang lebih baru |361| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Atur `5m` atau `1h`, satu-satunya nilai yang diterima Claude Code, untuk memilih [TTL cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk percakapan utama: giliran interaktif, `-p`, dan SDK Anda, ditambah helper yang berjalan sejalan dengannya. Diutamakan daripada pengaturan `promptCacheTtl` dan daripada `ENABLE_PROMPT_CACHING_1H`, dan `FORCE_PROMPT_CACHING_5M` menimpanya. API menagih penulisan cache 1 jam dengan tarif lebih tinggi. Memerlukan Claude Code v2.1.242 atau lebih baru |

360| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Atur ke `1` untuk menyebarkan W3C trace context ketika `ANTHROPIC_BASE_URL` mengarah ke proxy kustom. Penyebaran mencakup header `traceparent` pada permintaan model dan MCP HTTP serta environment variable `TRACEPARENT` untuk subproses Bash, PowerShell, dan hook. Secara default, penyebaran hanya diaktifkan saat terhubung langsung ke Anthropic API. Ditambahkan di v2.1.152. Lihat [Traces (beta)](/docs/id/monitoring-usage#traces-beta) |362| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Atur ke `1` untuk menyebarkan konteks trace W3C ketika `ANTHROPIC_BASE_URL` menunjuk ke proxy kustom. Penyebaran mencakup header `traceparent` pada permintaan model dan MCP HTTP serta environment variable `TRACEPARENT` untuk subproses Bash, PowerShell, dan hook. Secara default, penyebaran hanya diaktifkan ketika terhubung langsung ke Anthropic API. Ditambahkan di v2.1.152. Lihat [Traces (beta)](/docs/id/monitoring-usage#traces-beta) |

361| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Diatur oleh platform host yang menyematkan Claude Code dan mengelola perutean penyedia model atas namanya. Jika diatur, Claude Code mengabaikan variabel pemilihan penyedia, endpoint, dan autentikasi seperti `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL`, dan `ANTHROPIC_API_KEY` dalam file pengaturan, sehingga pengaturan pengguna tidak dapat menimpa perutean host. Claude Code juga mengabaikan kunci pemilihan model seperti `model`, `fallbackModel`, dan `modelOverrides` dalam [pengaturan terkelola](/docs/id/managed-settings), dari sumber terkelola mana pun yang mengirimkannya, sehingga konfigurasi model host diutamakan daripada penyematan model terkelola yang sudah usang. Claude Code juga mengabaikan variabel pemilihan model seperti `ANTHROPIC_MODEL` dan keluarga `ANTHROPIC_DEFAULT_*_MODEL` dalam blok `env` terkelola; allowlist [`availableModels`](/docs/id/model-config#restrict-model-selection) dalam pengaturan terkelola tetap berlaku kecuali host menyediakan miliknya sendiri. Claude Code juga melewati penonaktifan telemetri otomatis yang biasanya diterapkan pada penyedia pihak ketiga seperti Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, dan Microsoft Foundry, sehingga telemetri mengikuti penonaktifan standar `DISABLE_TELEMETRY`. Lihat [Perilaku default berdasarkan penyedia API](/docs/id/data-usage#default-behaviors-by-api-provider) |363| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Diatur oleh platform host yang menyematkan Claude Code dan mengelola perutean penyedia model atas namanya. Ketika diatur, Claude Code mengabaikan variabel pemilihan penyedia, endpoint, dan autentikasi seperti `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL`, dan `ANTHROPIC_API_KEY` di file pengaturan, sehingga pengaturan pengguna tidak dapat menimpa perutean host. Claude Code juga mengabaikan kunci pemilihan model seperti `model`, `fallbackModel`, dan `modelOverrides` di [pengaturan terkelola](/docs/id/managed-settings), dari sumber terkelola mana pun yang mengirimkannya, sehingga konfigurasi model host diutamakan daripada penyematan model terkelola yang sudah usang. Claude Code juga mengabaikan variabel pemilihan model seperti `ANTHROPIC_MODEL` dan keluarga `ANTHROPIC_DEFAULT_*_MODEL` di blok `env` terkelola; allowlist [`availableModels`](/docs/id/model-config#restrict-model-selection) di pengaturan terkelola tetap berlaku kecuali host menyediakan miliknya sendiri. Claude Code juga melewati opt-out telemetri otomatis yang biasanya diterapkannya pada penyedia pihak ketiga seperti Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, dan Microsoft Foundry, sehingga telemetri mengikuti opt-out standar `DISABLE_TELEMETRY`. Lihat [Perilaku default menurut penyedia API](/docs/id/data-usage#default-behaviors-by-api-provider) |

362| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Atur ke `1` untuk mengizinkan proxy melakukan resolusi DNS alih-alih pemanggil. Opsi opt-in untuk lingkungan di mana proxy harus menangani resolusi hostname |364| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Atur ke `1` untuk mengizinkan proxy melakukan resolusi DNS alih-alih pemanggil. Opt-in untuk lingkungan di mana proxy harus menangani resolusi hostname |

363| `CLAUDE_CODE_REMOTE` | Diatur secara otomatis ke `true` ketika Claude Code berjalan sebagai [sesi cloud](/docs/id/claude-code-on-the-web). Baca ini dari hook atau skrip penyiapan untuk mendeteksi apakah Anda berada dalam sesi cloud |365| `CLAUDE_CODE_REMOTE` | Diatur secara otomatis ke `true` ketika Claude Code berjalan sebagai [sesi cloud](/docs/id/claude-code-on-the-web). Baca ini dari hook atau skrip penyiapan untuk mendeteksi apakah Anda berada dalam sesi cloud |

364| `CLAUDE_CODE_REMOTE_SESSION_ID` | Diatur secara otomatis dalam [sesi cloud](/docs/id/claude-code-on-the-web) ke ID sesi saat ini. Baca ini untuk membuat tautan kembali ke transkrip sesi. Lihat [Menautkan output kembali ke sesi](/docs/id/cloud-environments#link-output-back-to-the-session) |366| `CLAUDE_CODE_REMOTE_SESSION_ID` | Diatur secara otomatis dalam [sesi cloud](/docs/id/claude-code-on-the-web) ke ID sesi saat ini. Baca ini untuk membuat tautan kembali ke transkrip sesi. Lihat [Menautkan output kembali ke sesi](/docs/id/cloud-environments#link-output-back-to-the-session) |

365| `CLAUDE_CODE_RESTRICTED` | Atur ke `1` untuk memulai sesi dalam mode terbatas, sama seperti meneruskan [`--restricted`](/docs/id/cli-reference#cli-flags). Claude Code mengabaikan variabel ini dalam blok `env` file pengaturan. Memerlukan Claude Code v2.1.248 atau yang lebih baru |367| `CLAUDE_CODE_RESTRICTED` | Atur ke `1` untuk memulai sesi dalam mode terbatas, sama seperti meneruskan [`--restricted`](/docs/id/cli-reference#cli-flags). Claude Code mengabaikan variabel ini di blok `env` file pengaturan. Memerlukan Claude Code v2.1.248 atau lebih baru |

366| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Atur ke `1` untuk melanjutkan secara otomatis jika sesi sebelumnya berakhir di tengah giliran. Digunakan dalam mode SDK agar model melanjutkan tanpa mengharuskan SDK mengirim ulang prompt. Untuk mematikan ini, hapus variabel atau atur ke `0`. Untuk panel obrolan VS Code, lihat [Melanjutkan percakapan setelah reload](/docs/id/vs-code#continue-conversations-after-a-reload) |368| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Atur ke `1` untuk melanjutkan secara otomatis jika sesi sebelumnya berakhir di tengah giliran. Digunakan dalam mode SDK sehingga model melanjutkan tanpa mengharuskan SDK mengirim ulang prompt. Untuk mematikannya, hapus pengaturan variabel atau atur ke `0`. Untuk panel chat VS Code, lihat [Melanjutkan percakapan setelah reload](/docs/id/vs-code#continue-conversations-after-a-reload) |

367| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Usia maksimum dalam milidetik dari pesan transkrip terakhir agar sesi yang berakhir di tengah giliran dapat dilanjutkan secara otomatis saat resume. Ketika pesan terakhir lebih tua dari batas ini, Claude Code melewati pelanjutan otomatis `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` dan pesan lanjutan `CLAUDE_CODE_RESUME_PROMPT`-nya, dan sesi dimulai dalam keadaan idle sehingga Anda melanjutkan secara eksplisit. Tidak diatur atau `0` berarti tanpa batas, kecuali bahwa giliran yang permintaan terakhirnya gagal dengan error API hanya dilanjutkan selama error tersebut berusia kurang dari enam jam. Nilai positif membatasi setiap giliran, termasuk yang tersebut; nilai negatif atau non-numerik menerapkan batas satu jam. Skrip peluncur untuk agent yang berjalan lama dapat mengatur ini agar mulai ulang terhadap transkrip lama tidak menjalankan ulang prompt yang sudah usang. Claude Code sendiri mengatur batas satu jam ketika memulai ulang sesi [agent view](/docs/id/agent-view) yang crash dan mewarisi percakapannya dari sesi interaktif. Memerlukan Claude Code v2.1.211 atau yang lebih baru |369| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Usia maksimum dalam milidetik dari pesan transkrip terakhir agar sesi yang berakhir di tengah giliran dapat berlanjut secara otomatis saat dilanjutkan. Ketika pesan terakhir lebih tua dari batas ini, Claude Code melewati pelanjutan otomatis `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` dan pesan lanjutan `CLAUDE_CODE_RESUME_PROMPT`-nya, dan sesi dimulai dalam keadaan idle sehingga Anda melanjutkan secara eksplisit. Tidak diatur atau `0` berarti tanpa batas, kecuali bahwa giliran yang permintaan terakhirnya gagal dengan error API hanya dilanjutkan selama error tersebut berusia kurang dari enam jam. Nilai positif membatasi setiap giliran, termasuk yang tersebut; nilai negatif atau non-numerik menerapkan batas satu jam. Skrip spawn untuk agent yang berjalan lama dapat mengatur ini agar restart terhadap transkrip lama tidak menjalankan ulang prompt yang sudah basi. Claude Code menetapkan batas satu jam sendiri ketika memulai ulang sesi [agent view](/docs/id/agent-view) yang crash yang mewarisi percakapannya dari sesi interaktif. Memerlukan Claude Code v2.1.211 atau lebih baru |

368| `CLAUDE_CODE_RESUME_PROMPT` | Menimpa pesan lanjutan yang dikirim Claude Code ke Claude ketika `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` melanjutkan giliran yang terputus alih-alih mengirim ulang prompt-nya, atau ketika Anda melanjutkan [panggilan tool yang ditangguhkan](/docs/id/hooks#defer-a-tool-call-for-later) dengan `-p`. Default ke `Continue from where you left off.`. String kosong menggunakan default |370| `CLAUDE_CODE_RESUME_PROMPT` | Menimpa pesan lanjutan yang dikirim Claude Code ke Claude ketika `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` melanjutkan giliran yang terputus alih-alih mengirim ulang prompt-nya, atau ketika Anda melanjutkan [panggilan tool yang ditunda](/docs/id/hooks#defer-a-tool-call-for-later) dengan `-p`. Default `Continue from where you left off.`. String kosong menggunakan default |

369| `CLAUDE_CODE_RETRY_WATCHDOG` | Atur ke `1` untuk sesi tanpa pengawasan seperti harness evaluasi, job CI, atau worker jarak jauh. Melakukan retry untuk error kapasitas `429` dan `529` tanpa batas alih-alih gagal setelah `CLAUDE_CODE_MAX_RETRIES` percobaan. Claude Code langsung gagal ketika permintaan kecepatan standar mendapatkan `429` yang melaporkan batas pengeluaran atau kredit penggunaan yang habis, bahkan yang berasal dari [batas pengeluaran gateway](/docs/id/errors#spend-limit-reached) yang direset sesuai jadwal. Sebelum v2.1.239, watchdog mencoba ulang error ini tanpa batas. Untuk permintaan fast mode, lihat [Menangani rate limit](/docs/id/fast-mode#handle-rate-limits). Watchdog menunda hingga 5 menit di antara percobaan, atau hingga batas direset ketika respons menyertakan waktu reset rate limit, sehingga sesi yang mencapai batas penggunaan menunggu hingga jendela yang tersisa berakhir. Pada v2.1.199 atau yang lebih baru, ini juga menaikkan jumlah retry default untuk error sementara lainnya, seperti error server, timeout, dan koneksi terputus, menjadi 300, kira-kira tiga jam penundaan, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda mengatur variabel tersebut secara eksplisit. Memerlukan Claude Code v2.1.186 atau yang lebih baru |371| `CLAUDE_CODE_RETRY_WATCHDOG` | Atur ke `1` untuk sesi tanpa pengawasan seperti harness eval, job CI, atau worker jarak jauh. Mencoba ulang error kapasitas `429` dan `529` tanpa batas alih-alih gagal setelah `CLAUDE_CODE_MAX_RETRIES` percobaan. Claude Code langsung gagal ketika permintaan berkecepatan standar mendapat `429` yang melaporkan batas pengeluaran atau kredit penggunaan yang habis, bahkan dari [batas pengeluaran gateway](/docs/id/errors#spend-limit-reached) yang direset sesuai jadwal. Sebelum v2.1.239, watchdog mencoba ulang ini tanpa batas. Untuk permintaan fast mode, lihat [Menangani rate limit](/docs/id/fast-mode#handle-rate-limits). Watchdog melakukan back off hingga 5 menit di antara percobaan, atau hingga batas direset ketika respons membawa waktu reset rate limit, sehingga sesi yang mencapai batas penggunaan menunggu sisa window. Pada v2.1.199 atau lebih baru, ini juga menaikkan jumlah retry default untuk error sementara lainnya, seperti error server, timeout, dan koneksi yang terputus, menjadi 300, kira-kira tiga jam backoff, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda mengatur variabel tersebut secara eksplisit. Memerlukan Claude Code v2.1.186 atau lebih baru |

370| `CLAUDE_CODE_SAFE_MODE` | Atur ke `1` untuk memulai dalam safe mode: CLAUDE.md, skill, plugin, hook, server MCP, perintah dan agent kustom, gaya output, workflow, tema kustom, pintasan keyboard kustom, perintah baris status dan saran file, server LSP, serta auto memory tidak dimuat, untuk pemecahan masalah konfigurasi yang rusak. Kebijakan pengaturan terkelola tetap berlaku, termasuk hook, baris status, dan perintah saran file yang dikonfigurasi kebijakan; plugin terkelola, skill terkelola, CLAUDE.md terkelola, dan server MCP yang dikonfigurasi kebijakan tidak berlaku. Setara dengan meneruskan [`--safe-mode`](/docs/id/cli-reference#cli-flags). Proses anak yang dijalankan secara langsung mewarisi variabel ini |372| `CLAUDE_CODE_SAFE_MODE` | Atur ke `1` untuk memulai dalam mode aman: CLAUDE.md, skill, plugin, hook, server MCP, perintah dan agent kustom, gaya output, workflow, tema kustom, pintasan keyboard kustom, perintah baris status dan saran file, server LSP, dan auto memory tidak dimuat, untuk pemecahan masalah konfigurasi yang rusak. Kebijakan pengaturan terkelola tetap berlaku, termasuk hook, baris status, dan perintah saran file yang dikonfigurasi kebijakan; plugin terkelola, skill terkelola, CLAUDE.md terkelola, dan server MCP yang dikonfigurasi kebijakan tidak. Setara dengan meneruskan [`--safe-mode`](/docs/id/cli-reference#cli-flags). Proses anak yang dimunculkan secara langsung mewarisi variabel ini |

371| `CLAUDE_CODE_SCRIPT_CAPS` | Objek JSON yang membatasi berapa kali skrip tertentu dapat dipanggil per sesi ketika `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` diatur. Kunci adalah substring yang dicocokkan dengan teks perintah; nilai adalah batas panggilan berupa bilangan bulat. Misalnya, `{"deploy.sh": 2}` mengizinkan `deploy.sh` dipanggil paling banyak dua kali. Pencocokan berbasis substring sehingga trik ekspansi shell seperti `./scripts/deploy.sh $(evil)` tetap dihitung terhadap batas. Fan-out saat runtime melalui `xargs` atau `find -exec` tidak terdeteksi; ini adalah kontrol defense-in-depth |373| `CLAUDE_CODE_SCRIPT_CAPS` | Objek JSON yang membatasi berapa kali skrip tertentu dapat dipanggil per sesi ketika `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` diatur. Kunci adalah substring yang dicocokkan dengan teks perintah; nilai adalah batas panggilan berupa bilangan bulat. Misalnya, `{"deploy.sh": 2}` mengizinkan `deploy.sh` dipanggil paling banyak dua kali. Pencocokan berbasis substring sehingga trik ekspansi shell seperti `./scripts/deploy.sh $(evil)` tetap dihitung terhadap batas. Fan-out saat runtime melalui `xargs` atau `find -exec` tidak terdeteksi; ini adalah kontrol defense-in-depth |

372| `CLAUDE_CODE_SCROLL_SPEED` | Mengatur pengali gulir roda mouse dalam [rendering layar penuh](/docs/id/fullscreen#mouse-wheel-scrolling). Menerima nilai positif apa pun hingga 20, termasuk nilai pecahan di bawah 1 seperti `0.5` untuk memperlambat gulir trackpad dan roda yang dipercepat di terminal yang sudah memperkuat event roda. Atur ke `3` untuk menyamai `vim` jika terminal Anda mengirim satu event roda per takik tanpa penguatan. Diabaikan di terminal IDE JetBrains, tempat Claude Code menggunakan penanganan gulirnya sendiri |374| `CLAUDE_CODE_SCROLL_SPEED` | Mengatur pengali scroll roda mouse dalam [rendering layar penuh](/docs/id/fullscreen#mouse-wheel-scrolling). Menerima nilai positif apa pun hingga 20, termasuk nilai pecahan di bawah 1 seperti `0.5` untuk memperlambat scroll trackpad dan roda yang dipercepat di terminal yang sudah memperkuat event roda. Atur ke `3` untuk menyamai `vim` jika terminal Anda mengirim satu event roda per takik tanpa penguatan. Diabaikan di terminal IDE JetBrains, di mana Claude Code menggunakan penanganan scroll-nya sendiri |

373| `CLAUDE_CODE_SEND_FEEDBACK` | Atur ke `0` untuk menonaktifkan [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior) untuk suatu sesi. Atur ke `1` untuk mengaktifkannya jika akun Anda sudah memiliki akses; variabel ini tidak dapat memberikan akses sendiri, dan sakelar lain yang menonaktifkan umpan balik, seperti `DISABLE_FEEDBACK_COMMAND` dan nilai `off` dari pengaturan [`feedbackDrafts`](/docs/id/settings-reference#feedbackdrafts), tetap berlaku |375| `CLAUDE_CODE_SEND_FEEDBACK` | Atur ke `0` untuk mematikan [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior) untuk sebuah sesi. Atur ke `1` untuk mengaktifkannya jika akun Anda sudah memiliki akses; variabel ini tidak dapat memberikan akses dengan sendirinya, dan sakelar lain yang mematikan umpan balik, seperti `DISABLE_FEEDBACK_COMMAND` dan nilai `off` pada pengaturan [`feedbackDrafts`](/docs/id/settings-reference#feedbackdrafts), tetap berlaku |

374| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Menimpa anggaran waktu dalam milidetik untuk hook [SessionEnd](/docs/id/hooks#sessionend). Nilai ini juga menjadi timeout untuk setiap hook yang tidak mengatur `timeout` sendiri. Berlaku untuk keluar sesi, `/clear`, dan beralih sesi melalui `/resume` interaktif. Secara default anggarannya 1,5 detik, dinaikkan secara otomatis ke `timeout` per hook tertinggi yang dikonfigurasi dalam file pengaturan, hingga 60 detik. Timeout pada hook yang disediakan plugin tidak menaikkan anggaran |376| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Menimpa anggaran waktu dalam milidetik untuk hook [SessionEnd](/docs/id/hooks#sessionend). Nilainya juga merupakan timeout untuk setiap hook yang tidak mengatur `timeout` sendiri. Berlaku untuk keluar dari sesi, `/clear`, dan beralih sesi melalui `/resume` interaktif. Secara default anggarannya 1,5 detik, secara otomatis dinaikkan ke `timeout` per hook tertinggi yang dikonfigurasi di file pengaturan, hingga 60 detik. Timeout pada hook yang disediakan plugin tidak menaikkan anggaran |

375| `CLAUDE_CODE_SESSION_ID` | Diatur secara otomatis ke ID sesi saat ini dalam subproses tool Bash dan PowerShell, subproses [perintah hook](/docs/id/hooks), dan subproses [server MCP](/docs/id/mcp) stdio. Untuk Bash, PowerShell, dan hook, ini cocok dengan field `session_id` dalam input JSON hook dan diperbarui saat `/clear`. Subproses server MCP mempertahankan ID yang digunakan saat dijalankan. Pada `--resume <session-id>` subproses menerima ID yang dilanjutkan, sama seperti hook dan Bash. Pada `--continue` atau `--resume` tanpa ID eksplisit, subproses mungkin menerima ID startup awal sebagai gantinya. Gunakan untuk mengorelasikan skrip dan tool eksternal dengan sesi Claude Code yang meluncurkannya |377| `CLAUDE_CODE_SESSION_ID` | Diatur secara otomatis ke ID sesi saat ini di subproses tool Bash dan PowerShell, subproses [perintah hook](/docs/id/hooks), dan subproses [server MCP](/docs/id/mcp) stdio. Untuk Bash, PowerShell, dan hook, ini cocok dengan field `session_id` di input JSON hook dan diperbarui saat `/clear`. Subproses server MCP mempertahankan ID yang digunakan saat dimunculkan. Pada `--resume <session-id>` ia menerima ID yang dilanjutkan, sama seperti hook dan Bash. Pada `--continue` atau `--resume` tanpa ID eksplisit, ia mungkin menerima ID startup awal sebagai gantinya. Gunakan untuk menghubungkan skrip dan tool eksternal dengan sesi Claude Code yang meluncurkannya |

376| `CLAUDE_CODE_SHELL` | Mengatur shell yang digunakan Claude Code untuk menjalankan perintah tool Bash. Menerima path ke binary `bash` atau `zsh`, misalnya `/opt/homebrew/bin/bash`. Shell lain seperti `fish` tidak didukung. Jika nilainya bukan path `bash` atau `zsh` yang berfungsi, Claude Code mengabaikannya dan kembali ke deteksi otomatis. Deteksi otomatis menggunakan `$SHELL` Anda jika mengarah ke `bash` atau `zsh`, jika tidak, ia memilih `zsh` lalu `bash` pertama yang berfungsi yang ditemukan di `PATH` Anda dan lokasi instalasi standar |378| `CLAUDE_CODE_SHELL` | Mengatur shell yang digunakan Claude Code untuk menjalankan perintah tool Bash. Menerima path ke binary `bash` atau `zsh`, misalnya `/opt/homebrew/bin/bash`. Shell lain seperti `fish` tidak didukung. Jika nilainya bukan path `bash` atau `zsh` yang berfungsi, Claude Code mengabaikannya dan melakukan fallback ke deteksi otomatis. Deteksi otomatis menggunakan `$SHELL` Anda ketika menunjuk ke `bash` atau `zsh`, jika tidak, ia memilih `zsh` lalu `bash` pertama yang berfungsi yang ditemukan di `PATH` Anda dan lokasi instalasi standar |

377| `CLAUDE_CODE_SHELL_PREFIX` | Prefiks perintah yang membungkus perintah shell yang dijalankan Claude Code: panggilan tool Bash, perintah [hook](/docs/id/hooks), perintah [baris status](/docs/id/statusline), dan perintah startup [server MCP](/docs/id/mcp) stdio. Hook PowerShell dan hook exec-form berjalan tanpa prefiks. Berguna untuk logging atau audit. Mengatur path executable biasa seperti `/path/to/logger.sh` menjalankan setiap perintah sebagai `/path/to/logger.sh '<command>'`. Wrapper menerima baris perintah sebagai satu argumen yang di-quote shell di `$1`, sehingga wrapper harus mengevaluasi ulang `$1` dengan shell, misalnya `exec bash -c "$1"`. Memperlakukan `$1` sebagai path executable biasa akan merusak server MCP stdio yang meneruskan argumen seperti `npx -y <package>`. Untuk panggilan tool Bash, `$1` berisi pemanggilan shell lengkap yang dirakit Claude Code, termasuk penyiapan environment, bukan hanya perintah yang dijalankan Claude |379| `CLAUDE_CODE_SHELL_PREFIX` | Prefiks perintah yang membungkus perintah shell yang dimunculkan Claude Code: panggilan tool Bash, perintah [hook](/docs/id/hooks), perintah [baris status](/docs/id/statusline), dan perintah startup [server MCP](/docs/id/mcp) stdio. Hook PowerShell dan hook bentuk exec berjalan tanpa prefiks. Berguna untuk logging atau audit. Mengatur path executable polos seperti `/path/to/logger.sh` menjalankan setiap perintah sebagai `/path/to/logger.sh '<command>'`. Wrapper menerima baris perintah sebagai satu argumen yang di-quote shell di `$1`, sehingga wrapper harus mengevaluasi ulang `$1` dengan shell, misalnya `exec bash -c "$1"`. Memperlakukan `$1` sebagai path executable polos akan merusak server MCP stdio yang meneruskan argumen seperti `npx -y <package>`. Untuk panggilan tool Bash, `$1` berisi pemanggilan shell lengkap yang disusun Claude Code, termasuk penyiapan environment, bukan hanya perintah yang dijalankan Claude |

378| `CLAUDE_CODE_SIMPLE` | Atur ke `1` untuk berjalan dengan system prompt minimal dan hanya tool Bash, baca file, dan edit file. Tool MCP dari `--mcp-config` tetap tersedia. Menonaktifkan penemuan otomatis hook, skill, perintah kustom, subagent, plugin yang terinstal, server MCP, auto memory, dan CLAUDE.md. Skill dalam direktori yang Anda teruskan dengan `--add-dir` tetap dimuat. Token OAuth dan kredensial keychain tidak dibaca, sehingga autentikasi Anthropic harus berasal dari `ANTHROPIC_API_KEY` atau `apiKeyHelper` di `--settings`. Setara dengan meneruskan [`--bare`](/docs/id/headless#start-faster-with-bare-mode) |380| `CLAUDE_CODE_SIMPLE` | Atur ke `1` untuk berjalan dengan system prompt minimal dan hanya tool Bash, baca file, dan edit file. Tool MCP dari `--mcp-config` tetap tersedia. Menonaktifkan penemuan otomatis hook, skill, perintah kustom, subagent, plugin terinstal, server MCP, auto memory, dan CLAUDE.md. Skill di direktori yang Anda teruskan dengan `--add-dir` tetap dimuat. Token OAuth dan kredensial keychain tidak dibaca, sehingga autentikasi Anthropic harus berasal dari `ANTHROPIC_API_KEY` atau `apiKeyHelper` di `--settings`. Setara dengan meneruskan [`--bare`](/docs/id/headless#start-faster-with-bare-mode) |

379| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Atur ke `1` untuk menggunakan system prompt yang lebih pendek dan deskripsi tool yang disingkat pada model apa pun. Atur ke `0`, `false`, `no`, atau `off` untuk menonaktifkan bahkan pada model di mana eksperimen atau konfigurasi server akan mengaktifkannya. Set tool lengkap, hook, server MCP, dan penemuan CLAUDE.md tetap diaktifkan |381| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Atur ke `1` untuk menggunakan system prompt yang lebih pendek dan deskripsi tool yang disingkat pada model apa pun. Atur ke `0`, `false`, `no`, atau `off` untuk menolak bahkan pada model di mana eksperimen atau konfigurasi server akan mengaktifkannya. Set tool lengkap, hook, server MCP, dan penemuan CLAUDE.md tetap diaktifkan |

380| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Melewati autentikasi sisi klien untuk [Claude Platform on AWS](/docs/id/claude-platform-on-aws), untuk gateway yang menandatangani permintaan sendiri |382| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Melewati autentikasi sisi klien untuk [Claude Platform on AWS](/docs/id/claude-platform-on-aws), untuk gateway yang menandatangani permintaan sendiri |

381| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | Atur ke `1` untuk menonaktifkan cache in-process untuk kredensial yang di-resolve dari AWS default credential provider chain, sehingga Claude Code me-resolve chain tersebut pada setiap permintaan API. Dengan cache nonaktif, profil yang didukung SSO meminta kredensial dari IAM Identity Center pada setiap permintaan. Lihat [caching kredensial dan timeout resolusi](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout). Memerlukan Claude Code v2.1.207 atau yang lebih baru |383| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | Atur ke `1` untuk mematikan cache in-process untuk kredensial yang di-resolve dari rantai penyedia kredensial default AWS, sehingga Claude Code me-resolve rantai tersebut pada setiap permintaan API. Dengan cache dimatikan, profil berbasis SSO meminta kredensial dari IAM Identity Center pada setiap permintaan. Lihat [caching kredensial dan timeout resolusi](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout). Memerlukan Claude Code v2.1.207 atau lebih baru |

382| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Melewati autentikasi AWS untuk Amazon Bedrock (misalnya, saat menggunakan LLM gateway) |384| `CLAUDE_CODE_SKIP_BEDROCK_AUTH` | Melewati autentikasi AWS untuk Amazon Bedrock (misalnya, saat menggunakan gateway LLM) |

383| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | Atur ke `1` untuk memperlakukan pemeriksaan ketersediaan [fast mode](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) yang gagal sebagai tersedia, untuk jaringan yang memblokir permintaan langsung pemeriksaan tersebut ke `api.anthropic.com`. Claude Code tetap menghormati respons "disabled by your organization" |385| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | Atur ke `1` untuk memperlakukan pemeriksaan ketersediaan [fast mode](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) yang gagal sebagai tersedia, untuk jaringan yang memblokir permintaan langsung pemeriksaan tersebut ke `api.anthropic.com`. Claude Code tetap menghormati respons "disabled by your organization" |

384| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | Atur ke `1` untuk melewati pemeriksaan ketersediaan [fast mode](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) sisi klien, untuk proxy yang mencegat permintaan pemeriksaan alih-alih menolaknya. API tetap menolak permintaan fast mode ketika organisasi Anda menonaktifkan fast mode |386| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | Atur ke `1` untuk melewati pemeriksaan ketersediaan [fast mode](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) sisi klien, untuk proxy yang mencegat permintaan pemeriksaan alih-alih menolaknya. API tetap menolak permintaan fast mode ketika organisasi Anda menonaktifkan fast mode |

385| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Melewati autentikasi Azure untuk Microsoft Foundry, untuk proxy atau gateway yang menyisipkan header `Authorization` sendiri. Claude Code mengirim permintaan tanpa kredensial Azure dan mempertahankan header `Authorization` yang Anda berikan, misalnya melalui `ANTHROPIC_CUSTOM_HEADERS`. Diabaikan ketika `ANTHROPIC_FOUNDRY_API_KEY` atau `ANTHROPIC_FOUNDRY_AUTH_TOKEN` diatur. Sebelum v2.1.203, variabel ini membuat klien Microsoft Foundry tidak dapat mengirim permintaan kecuali kunci API juga diatur |387| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Melewati autentikasi Azure untuk Microsoft Foundry, untuk proxy atau gateway yang menyuntikkan header `Authorization` miliknya sendiri. Claude Code mengirim permintaan tanpa kredensial Azure dan mempertahankan header `Authorization` yang Anda berikan, misalnya melalui `ANTHROPIC_CUSTOM_HEADERS`. Diabaikan ketika `ANTHROPIC_FOUNDRY_API_KEY` atau `ANTHROPIC_FOUNDRY_AUTH_TOKEN` diatur. Sebelum v2.1.203, variabel ini membuat klien Microsoft Foundry tidak dapat mengirim permintaan kecuali kunci API juga diatur |

386| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Melewati autentikasi AWS untuk Amazon Bedrock Mantle (misalnya, saat menggunakan LLM gateway) |388| `CLAUDE_CODE_SKIP_MANTLE_AUTH` | Melewati autentikasi AWS untuk Amazon Bedrock Mantle (misalnya, saat menggunakan gateway LLM) |

387| `CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY` | [Pemeriksaan model saat startup](/docs/id/amazon-bedrock#startup-model-checks) pada [Amazon Bedrock](/docs/id/amazon-bedrock) dan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) mengingat di mesin ini model mana yang ditemukan tidak dapat dipanggil oleh akun Anda, hingga satu hari. Atur ke `1` untuk menonaktifkan ingatan tersebut. Memerlukan Claude Code v2.1.285 atau yang lebih baru |389| `CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY` | [Pemeriksaan model saat startup](/docs/id/amazon-bedrock#startup-model-checks) pada [Amazon Bedrock](/docs/id/amazon-bedrock) dan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) mengingat di mesin ini model mana yang mereka temukan tidak dapat dipanggil oleh akun Anda, hingga satu hari. Atur ke `1` untuk mematikan memori tersebut. Memerlukan Claude Code v2.1.285 atau lebih baru |

388| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Atur ke `1` untuk melewati penulisan riwayat prompt dan transkrip sesi ke disk. Sesi yang dimulai dengan variabel ini diatur tidak muncul di `--resume`, `--continue`, atau riwayat panah atas. Berguna untuk sesi skrip yang bersifat sementara |390| `CLAUDE_CODE_SKIP_PROMPT_HISTORY` | Atur ke `1` untuk melewati penulisan riwayat prompt dan transkrip sesi ke disk. Sesi yang dimulai dengan variabel ini diatur tidak muncul di `--resume`, `--continue`, atau riwayat panah atas. Berguna untuk sesi skrip sementara |

389| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Melewati autentikasi Google untuk Google Cloud's Agent Platform (misalnya, saat menggunakan LLM gateway) |391| `CLAUDE_CODE_SKIP_VERTEX_AUTH` | Melewati autentikasi Google untuk Google Cloud's Agent Platform (misalnya, saat menggunakan gateway LLM) |

390| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | Atur ke `1` agar sesi yang dimulai dengan `--output-format stream-json` menulis [pesan hasil yang menyebutkan alasan Claude Code menolak untuk dimulai](/docs/id/agent-sdk/typescript#startup_failure_reason) untuk kegagalan startup yang jika tidak hanya berakhir dengan stderr. Memerlukan Claude Code v2.1.274 atau yang lebih baru |392| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | Atur ke `1` agar sesi yang dimulai dengan `--output-format stream-json` menulis [pesan hasil yang menyebutkan alasan Claude Code menolak untuk memulai](/docs/id/agent-sdk/typescript#startup_failure_reason) untuk kegagalan startup yang sebaliknya hanya berakhir dengan stderr. Memerlukan Claude Code v2.1.274 atau lebih baru |

391| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Jumlah maksimum berturut-turut hook [Stop](/docs/id/hooks#stop) atau [SubagentStop](/docs/id/hooks#subagentstop) dapat memblokir giliran agar tidak berakhir sebelum Claude Code menimpanya dan tetap mengakhiri giliran (default: 8). Atur ke `0` untuk menonaktifkan batas. Naikkan ini jika hook Anda memang memerlukan lebih banyak iterasi untuk diselesaikan |393| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Jumlah maksimum berturut-turut hook [Stop](/docs/id/hooks#stop) atau [SubagentStop](/docs/id/hooks#subagentstop) dapat memblokir giliran agar tidak berakhir sebelum Claude Code menimpanya dan tetap mengakhiri giliran (default: 8). Atur ke `0` untuk menonaktifkan batas. Naikkan ini jika hook Anda memang memerlukan lebih banyak iterasi untuk diselesaikan |

392| `CLAUDE_CODE_SUBAGENT_MODEL` | Model default untuk [subagent](/docs/id/sub-agents#choose-a-model), rekan tim [tim agent](/docs/id/agent-teams#specify-teammates-and-models), dan agent [workflow](/docs/id/workflows) yang tidak diberi model dengan cara lain. Menerima alias seperti `haiku` atau nama model lengkap. Dua sumber diutamakan daripada variabel ini: model yang diteruskan Claude saat membuat agent, dan field `model` dalam definisi agent, termasuk `inherit`. Untuk mengubahnya, atur [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/id/sub-agents#run-every-subagent-on-one-model). Lihat [Memilih model](/docs/id/sub-agents#choose-a-model) untuk urutan lengkapnya. Mengaturnya ke `inherit` sama dengan membiarkannya tidak diatur. Sebelum v2.1.251, variabel ini menimpa baik model per pemanggilan maupun field `model` dalam definisi |394| `CLAUDE_CODE_SUBAGENT_MODEL` | Model default untuk [subagent](/docs/id/sub-agents#choose-a-model), rekan tim [tim agent](/docs/id/agent-teams#specify-teammates-and-models), dan agent [workflow](/docs/id/workflows) yang tidak diberi model dengan cara lain. Menerima alias seperti `haiku` atau nama model lengkap. Dua sumber diutamakan daripadanya: model yang diteruskan Claude saat memunculkan agent, dan field `model` dalam definisi agent, termasuk `inherit`. Untuk mengubahnya, atur [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/id/sub-agents#run-every-subagent-on-one-model). Lihat [Memilih model](/docs/id/sub-agents#choose-a-model) untuk urutan lengkapnya. Mengaturnya ke `inherit` sama dengan membiarkannya tidak diatur. Sebelum v2.1.251, variabel ini menimpa model per pemanggilan dan field `model` definisi |

393| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | Atur ke `1` untuk memaksakan satu model pada subagent, rekan tim, dan agent workflow. [Menjalankan setiap subagent pada satu model](/docs/id/sub-agents#run-every-subagent-on-one-model) menjelaskan model mana itu. Memerlukan Claude Code v2.1.257 atau yang lebih baru |395| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | Atur ke `1` untuk memaksakan satu model pada subagent, rekan tim, dan agent workflow. [Menjalankan setiap subagent pada satu model](/docs/id/sub-agents#run-every-subagent-on-one-model) menjelaskan model mana itu. Memerlukan Claude Code v2.1.257 atau lebih baru |

394| `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` | Atur `5m` atau `1h`, satu-satunya nilai yang diterima Claude Code, untuk memilih [TTL cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk permintaan di luar percakapan utama, seperti [subagent](/docs/id/sub-agents), workflow, dan pekerjaan latar belakang. Diutamakan daripada pengaturan `subagentPromptCacheTtl` dan daripada `ENABLE_PROMPT_CACHING_1H`, dan `FORCE_PROMPT_CACHING_5M` menimpanya. API menagih penulisan cache 1 jam dengan tarif lebih tinggi. Memerlukan Claude Code v2.1.242 atau yang lebih baru |396| `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` | Atur `5m` atau `1h`, satu-satunya nilai yang diterima Claude Code, untuk memilih [TTL cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk permintaan di luar percakapan utama, seperti [subagent](/docs/id/sub-agents), workflow, dan pekerjaan latar belakang. Diutamakan daripada pengaturan `subagentPromptCacheTtl` dan daripada `ENABLE_PROMPT_CACHING_1H`, dan `FORCE_PROMPT_CACHING_5M` menimpanya. API menagih penulisan cache 1 jam dengan tarif lebih tinggi. Memerlukan Claude Code v2.1.242 atau lebih baru |

395| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Atur ke `1` untuk menghapus kredensial dari environment subproses (tool Bash, hook, server MCP stdio): kredensial Anthropic dan penyedia cloud, variabel lain apa pun yang dikenali Claude Code sebagai kredensial, dan kredensial yang disematkan dalam URL registry paket. Proses Claude induk tetap menyimpan kredensial ini untuk panggilan API, tetapi proses anak tidak dapat membacanya, sehingga mengurangi paparan terhadap serangan prompt injection yang mencoba mengeksfiltrasi rahasia melalui ekspansi shell. Pada v2.1.251 atau yang lebih baru, pembersihan ini juga menghapus variabel penunjuk penyimpanan konfigurasi milik Claude Code sendiri (seperti `CLAUDE_CONFIG_DIR`), sehingga proses anak tidak dapat menemukan direktori konfigurasi yang dipindahkan. Biarkan pembersihan ini tidak diatur jika subproses membutuhkan variabel-variabel ini. Di Linux, ini juga menjalankan subproses Bash dalam PID namespace yang terisolasi sehingga subproses tidak dapat membaca environment proses host melalui `/proc`; sebagai efek samping, `ps`, `pgrep`, dan `kill` tidak dapat melihat atau mengirim sinyal ke proses host. `claude-code-action` mengatur ini secara otomatis ketika `allowed_non_write_users` dikonfigurasi |397| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Atur ke `1` untuk menghapus kredensial dari environment subproses (tool Bash, hook, server MCP stdio): kredensial Anthropic dan penyedia cloud, variabel lain apa pun yang dikenali Claude Code sebagai kredensial, dan kredensial yang tertanam di URL registry paket. Proses Claude induk menyimpan kredensial ini untuk panggilan API, tetapi proses anak tidak dapat membacanya, sehingga mengurangi paparan terhadap serangan prompt injection yang mencoba mengeksfiltrasi rahasia melalui ekspansi shell. Pada v2.1.251 atau lebih baru, pembersihan ini juga menghapus variabel penunjuk penyimpanan konfigurasi milik Claude Code (seperti `CLAUDE_CONFIG_DIR`), sehingga proses anak tidak dapat menemukan direktori konfigurasi yang dipindahkan. Biarkan pembersihan tidak diatur jika subproses memerlukan variabel ini. Di Linux, ini juga menjalankan subproses Bash dalam namespace PID yang terisolasi sehingga tidak dapat membaca environment proses host melalui `/proc`; sebagai efek samping, `ps`, `pgrep`, dan `kill` tidak dapat melihat atau memberi sinyal ke proses host. `claude-code-action` mengatur ini secara otomatis ketika `allowed_non_write_users` dikonfigurasi |

396| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Atur ke `1` dalam mode non-interaktif (flag `-p`) untuk menunggu instalasi plugin selesai sebelum kueri pertama. Tanpa ini, plugin terinstal di latar belakang dan mungkin tidak tersedia pada giliran pertama. Kombinasikan dengan `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` untuk membatasi waktu tunggu |398| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL` | Atur ke `1` dalam mode non-interaktif (flag `-p`) untuk menunggu instalasi plugin selesai sebelum kueri pertama. Tanpa ini, plugin diinstal di latar belakang dan mungkin tidak tersedia pada giliran pertama. Kombinasikan dengan `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` untuk membatasi penantian |

397| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Timeout dalam milidetik untuk instalasi plugin sinkron. Ketika terlampaui, Claude Code melanjutkan tanpa plugin dan mencatat error ke log. Tidak ada default: tanpa variabel ini, instalasi sinkron menunggu hingga selesai |399| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Timeout dalam milidetik untuk instalasi plugin sinkron. Ketika terlampaui, Claude Code melanjutkan tanpa plugin dan mencatat error. Tidak ada default: tanpa variabel ini, instalasi sinkron menunggu hingga selesai |

398| `CLAUDE_CODE_SYNC_SKILLS` | Atur ke `1` dalam mode non-interaktif dengan flag `-p` agar Claude Code mengunduh skill yang diaktifkan untuk akun claude.ai Anda dalam run tersebut dan menunggu daftarnya, hingga `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`, sebelum menjalankan kueri pertama. Unduhan itu sendiri selesai di latar belakang, dan Claude menunggu unduhan skill ketika memanggil skill tersebut. Memerlukan autentikasi claude.ai. Sesi terminal tempat Anda masuk dengan akun claude.ai Anda [mengunduh skill ini](/docs/id/skills#where-synced-skills-load) ke `~/.claude/skills/synced/` dan menyinkronkan ulang sekitar setiap 10 menit tanpa variabel ini, jadi atur variabel ini hanya ketika run `-p` memerlukan skill terkini Anda pada kueri pertamanya. Sebelum v2.1.273, sesi terminal mengunduhnya hanya dalam run `-p` dengan variabel ini diatur. Nama folder `synced` [dicadangkan untuk unduhan ini](/docs/id/skills#where-skills-live). Sebelum v2.1.227, skill diunduh langsung ke `~/.claude/skills/`. Claude Code menerapkan [aturan tambahan pada skill yang diunduh](/docs/id/skills#how-synced-skills-behave), seperti tidak menjalankan perintah `!` milik skill tersebut di mesin Anda |400| `CLAUDE_CODE_SYNC_SKILLS` | Atur ke `1` dalam mode non-interaktif dengan flag `-p` agar Claude Code mengunduh skill yang diaktifkan untuk akun claude.ai Anda dalam run tersebut dan menunggu daftarnya, hingga `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`, sebelum menjalankan kueri pertama. Unduhan itu sendiri selesai di latar belakang, dan Claude menunggu unduhan skill ketika memanggil skill tersebut. Memerlukan autentikasi claude.ai. Sesi terminal tempat Anda masuk dengan akun claude.ai Anda [mengunduh skill ini](/docs/id/skills#where-synced-skills-load) ke `~/.claude/skills/synced/` dan menyinkronkan ulang sekitar setiap 10 menit tanpa variabel ini, jadi atur hanya ketika run `-p` memerlukan skill terkini Anda pada kueri pertamanya. Sebelum v2.1.273, sesi terminal mengunduhnya hanya dalam run `-p` dengan variabel ini diatur. Nama folder `synced` [dicadangkan untuk unduhan ini](/docs/id/skills#where-skills-live). Sebelum v2.1.227, skill diunduh langsung ke `~/.claude/skills/`. Claude Code menerapkan [aturan tambahan pada skill yang diunduh](/docs/id/skills#how-synced-skills-behave), seperti tidak menjalankan perintah `!` milik skill tersebut di mesin Anda |

399| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Timeout dalam milidetik untuk sinkronisasi ulang skill yang berjalan di tengah sesi ketika aplikasi yang dibangun di atas [Agent SDK](/docs/id/agent-sdk/typescript#query-object) memuat ulang skill (default: 30000). Ketika terlampaui, pemuatan ulang berlanjut dengan skill apa pun yang sudah tiba, dan unduhan yang tersisa selesai di latar belakang |401| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Timeout dalam milidetik untuk sinkronisasi ulang skill yang berjalan di tengah sesi ketika aplikasi yang dibangun di atas [Agent SDK](/docs/id/agent-sdk/typescript#query-object) memuat ulang skill (default: 30000). Ketika terlampaui, pemuatan ulang berlanjut dengan skill mana pun yang sudah tiba, dan unduhan yang tersisa selesai di latar belakang |

400| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Timeout dalam milidetik bagi kueri pertama untuk menunggu daftar skill awal ketika `CLAUDE_CODE_SYNC_SKILLS` diatur (default: 5000). Ketika terlampaui, kueri pertama berjalan dengan skill apa pun yang sudah tiba. Unduhan tetap selesai di latar belakang, dan Claude menunggu unduhan skill ketika memanggil skill tersebut |402| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Timeout dalam milidetik bagi kueri pertama untuk menunggu daftar skill awal ketika `CLAUDE_CODE_SYNC_SKILLS` diatur (default: 5000). Ketika terlampaui, kueri pertama berjalan dengan skill mana pun yang sudah tiba. Unduhan tetap selesai di latar belakang, dan Claude menunggu unduhan skill ketika memanggil skill tersebut |

401| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Atur ke `false` untuk menonaktifkan penyorotan sintaks dalam output diff. Berguna ketika warna mengganggu penyiapan terminal Anda. Untuk juga menonaktifkan penyorotan dalam blok kode dan pratinjau file, gunakan pengaturan [`syntaxHighlightingDisabled`](/docs/id/settings-reference#syntaxhighlightingdisabled) |403| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Atur ke `false` untuk menonaktifkan penyorotan sintaks dalam output diff. Berguna ketika warna mengganggu penyiapan terminal Anda. Untuk juga menonaktifkan penyorotan di blok kode dan pratinjau file, gunakan pengaturan [`syntaxHighlightingDisabled`](/docs/id/settings-reference#syntaxhighlightingdisabled) |

402| `CLAUDE_CODE_TASK_LIST_ID` | Berbagi daftar tugas antar sesi. Atur ID yang sama di beberapa instance Claude Code untuk berkoordinasi pada daftar tugas bersama, dalam [sesi yang memiliki tool Task](/docs/id/tools-reference#task-tool-availability). Lihat [Daftar tugas](/docs/id/interactive-mode#task-list) |404| `CLAUDE_CODE_TASK_LIST_ID` | Berbagi daftar tugas lintas sesi. Atur ID yang sama di beberapa instance Claude Code untuk berkoordinasi pada daftar tugas bersama, dalam [sesi yang memiliki tool Task](/docs/id/tools-reference#task-tool-availability). Lihat [Daftar tugas](/docs/id/interactive-mode#task-list) |

403| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | Menimpa, dalam milidetik, berapa lama sesi non-interaktif menunggu saat keluar agar [tim agent](/docs/id/agent-teams)-nya selesai dibongkar. Menerima 1000 hingga 60000; nilai di luar rentang diabaikan dan default 10000 berlaku. Memerlukan Claude Code v2.1.206 atau yang lebih baru |405| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | Menimpa, dalam milidetik, berapa lama sesi non-interaktif menunggu saat keluar agar [tim agent](/docs/id/agent-teams)-nya selesai dibongkar. Menerima 1000 hingga 60000; nilai di luar rentang diabaikan dan default 10000 berlaku. Memerlukan Claude Code v2.1.206 atau lebih baru |

404| `CLAUDE_CODE_TMPDIR` | Menimpa direktori temp yang digunakan untuk file temp internal. Claude Code menambahkan `/claude-{uid}/` ke path ini di Unix, atau `/claude/` di Windows. Default: `/tmp` di macOS, `os.tmpdir()` di Linux dan Windows. Di macOS dan Linux, subproses Bash yang [di-sandbox](/docs/id/sandboxing) menerima `$TMPDIR` fallback pendek di bawah default sistem ketika override Anda berupa path panjang, karena beberapa tool gagal ketika path temp terlalu panjang. Perintah Bash yang tidak di-sandbox mewarisi `$TMPDIR` shell Anda jika diatur. Di Windows native, ketika shell Anda tidak mengatur `$TMPDIR`, perintah Bash yang mereferensikan `$TMPDIR` menerima override Anda, atau `%TEMP%` jika Anda belum mengaturnya. File temp milik Claude Code sendiri selalu menggunakan override Anda. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan dalam [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |406| `CLAUDE_CODE_TMPDIR` | Menimpa direktori temp yang digunakan untuk file temp internal. Claude Code menambahkan `/claude-{uid}/` ke path ini di Unix, atau `/claude/` di Windows. Default: `/tmp` di macOS, `os.tmpdir()` di Linux dan Windows. Di macOS dan Linux, subproses Bash yang [di-sandbox](/docs/id/sandboxing) menerima `$TMPDIR` fallback pendek di bawah default sistem ketika override Anda adalah path yang panjang, karena beberapa tool gagal ketika path temp terlalu panjang. Perintah Bash yang tidak di-sandbox mewarisi `$TMPDIR` shell Anda ketika diatur. Pada Windows native, ketika shell Anda tidak mengatur `$TMPDIR`, perintah Bash yang mereferensikan `$TMPDIR` menerima override Anda, atau `%TEMP%` ketika Anda belum mengaturnya. File temp milik Claude Code sendiri selalu menggunakan override Anda. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |

405| `CLAUDE_CODE_TMUX_TRUECOLOR` | Atur ke nilai tidak kosong apa pun, seperti `1`, untuk mengizinkan output truecolor 24-bit di dalam tmux. **Mengaturnya ke `0` atau `false` tetap mengizinkan truecolor**, tidak seperti sebagian besar variabel aktif/nonaktif; hapus pengaturan variabel untuk memulihkan pembatasan 256 warna. Secara default, Claude Code membatasi ke 256 warna ketika `$TMUX` diatur karena tmux tidak meneruskan escape sequence truecolor kecuali dikonfigurasi untuk itu. Atur ini setelah menambahkan `set -ga terminal-overrides ',*:Tc'` ke `~/.tmux.conf` Anda. Lihat [Konfigurasi terminal](/docs/id/terminal-config) untuk pengaturan tmux lainnya |407| `CLAUDE_CODE_TMUX_TRUECOLOR` | Atur ke nilai tidak kosong apa pun, seperti `1`, untuk mengizinkan output truecolor 24-bit di dalam tmux. **Mengaturnya ke `0` atau `false` tetap mengizinkan truecolor**, tidak seperti sebagian besar variabel aktif/nonaktif; hapus pengaturan variabel untuk memulihkan pembatasan 256 warna. Secara default, Claude Code membatasi ke 256 warna ketika `$TMUX` diatur karena tmux tidak meneruskan escape sequence truecolor kecuali dikonfigurasi untuk itu. Atur ini setelah menambahkan `set -ga terminal-overrides ',*:Tc'` ke `~/.tmux.conf` Anda. Lihat [Konfigurasi terminal](/docs/id/terminal-config) untuk pengaturan tmux lainnya |

406| `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | Di Linux dan WSL, atur ke daftar yang dipisahkan koma berisi jenis proses yang [dikecualikan Claude Code dari batas memori tool](/docs/id/tools-reference#memory-limit-on-linux-and-wsl), seperti `mcp` atau `lsp`. Atur `none` untuk membatasi setiap jenis, atau `all-new` untuk membatasi hanya perintah tool Bash, PowerShell, dan Monitor. Claude Code tetap menempatkan perintah tool Bash, PowerShell, dan Monitor di bawah batas apa pun yang Anda cantumkan. Memerlukan Claude Code v2.1.246 atau yang lebih baru |408| `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | Di Linux dan WSL, atur ke daftar yang dipisahkan koma berisi jenis proses yang [dikecualikan Claude Code dari batas memori tool](/docs/id/tools-reference#memory-limit-on-linux-and-wsl), seperti `mcp` atau `lsp`. Atur `none` untuk membatasi setiap jenis, atau `all-new` untuk hanya membatasi perintah tool Bash, PowerShell, dan Monitor. Claude Code tetap menempatkan perintah tool Bash, PowerShell, dan Monitor di bawah batas apa pun yang Anda cantumkan. Memerlukan Claude Code v2.1.246 atau lebih baru |

407| `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | Di Linux dan WSL, atur ke ukuran seperti `4G` untuk [membatasi memori yang dapat digunakan perintah tool Bash dan PowerShell](/docs/id/tools-reference#memory-limit-on-linux-and-wsl), serta perintah tool Monitor pada v2.1.246 atau yang lebih baru. Tulis ukuran dalam digit biasa, sendiri untuk jumlah byte atau dengan sufiks `K`, `M`, `G`, atau `T`. Atur `0` atau `off` untuk menonaktifkan batas. Setelah proses pertama yang dijalankan Claude Code mengaktifkan atau menonaktifkan batas, nilai yang diubah berlaku pada saat berikutnya Anda meluncurkan `claude`. Memerlukan Claude Code v2.1.233 atau yang lebih baru |409| `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | Di Linux dan WSL, atur ke ukuran seperti `4G` untuk [membatasi memori yang dapat digunakan perintah tool Bash dan PowerShell](/docs/id/tools-reference#memory-limit-on-linux-and-wsl), serta perintah tool Monitor pada v2.1.246 atau lebih baru. Tulis ukuran dalam digit biasa, tanpa akhiran untuk jumlah byte atau dengan akhiran `K`, `M`, `G`, atau `T`. Atur `0` atau `off` untuk mematikan batas. Setelah proses pertama yang dimulai Claude Code mengaktifkan atau menonaktifkan batas, nilai yang diubah berlaku saat Anda meluncurkan `claude` berikutnya. Memerlukan Claude Code v2.1.233 atau lebih baru |

408| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Tenggat dalam milidetik sebelum Claude Code membatalkan dialog yang diteruskannya ke klien jarak jauh seperti host [Remote Control](/docs/id/remote-control) atau SDK, atau dialog persetujuan untuk [pesan lintas sesi yang ditahan](/docs/id/cross-session-messaging#control-inbound-messages); permintaan izin dan pertanyaan `AskUserQuestion` menggunakan alurnya sendiri dan tidak diatur olehnya. Pada Claude Code v2.1.236 atau yang lebih baru, ini juga membatasi [dialog persetujuan kredit penggunaan Fable](/docs/id/model-config#fable-and-usage-credits) di tengah sesi dalam sesi yang mungkin berjalan tanpa pengawasan. [Mengontrol pesan masuk](/docs/id/cross-session-messaging#control-inbound-messages) dan [sesi non-interaktif](/docs/id/cross-session-messaging#non-interactive-sessions) menjelaskan aturan kedaluwarsa lengkap untuk pesan yang ditahan, termasuk kasus di mana tenggat tidak berlaku. Menimpa pengaturan [`dialogExpiry`](/docs/id/settings-reference#dialogexpiry). `0` atau nilai negatif menonaktifkan tenggat |410| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Tenggat dalam milidetik sebelum Claude Code membatalkan dialog yang diteruskannya ke klien jarak jauh seperti host [Remote Control](/docs/id/remote-control) atau SDK, atau dialog persetujuan untuk [pesan lintas sesi yang ditahan](/docs/id/cross-session-messaging#control-inbound-messages); permintaan izin dan pertanyaan `AskUserQuestion` menggunakan alurnya sendiri dan tidak diatur olehnya. Pada Claude Code v2.1.236 atau lebih baru, ini juga membatasi [prompt persetujuan kredit penggunaan Fable](/docs/id/model-config#fable-and-usage-credits) di tengah sesi dalam sesi yang mungkin berjalan tanpa pengawasan. [Mengontrol pesan masuk](/docs/id/cross-session-messaging#control-inbound-messages) dan [sesi non-interaktif](/docs/id/cross-session-messaging#non-interactive-sessions) mencakup aturan kedaluwarsa pesan yang ditahan secara lengkap, termasuk kasus di mana tenggat tidak berlaku. Menimpa pengaturan [`dialogExpiry`](/docs/id/settings-reference#dialogexpiry). `0` atau nilai negatif menonaktifkan tenggat |

409| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Gunakan [Claude Platform on AWS](/docs/id/claude-platform-on-aws) |411| `CLAUDE_CODE_USE_ANTHROPIC_AWS` | Menggunakan [Claude Platform on AWS](/docs/id/claude-platform-on-aws) |

410| `CLAUDE_CODE_USE_BEDROCK` | Gunakan [Amazon Bedrock](/docs/id/amazon-bedrock) |412| `CLAUDE_CODE_USE_BEDROCK` | Menggunakan [Amazon Bedrock](/docs/id/amazon-bedrock) |

411| `CLAUDE_CODE_USE_FOUNDRY` | Gunakan [Microsoft Foundry](/docs/id/microsoft-foundry) |413| `CLAUDE_CODE_USE_FOUNDRY` | Menggunakan [Microsoft Foundry](/docs/id/microsoft-foundry) |

412| `CLAUDE_CODE_USE_MANTLE` | Gunakan [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint) Amazon Bedrock |414| `CLAUDE_CODE_USE_MANTLE` | Menggunakan [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint) Amazon Bedrock |

413| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Atur ke `1` untuk menemukan perintah kustom, subagent, dan gaya output menggunakan API file Node.js alih-alih ripgrep. Atur ini jika binary ripgrep yang dibundel tidak tersedia atau diblokir di lingkungan Anda. Tidak memengaruhi tool Grep atau pencarian file |415| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Atur ke `1` untuk menemukan perintah kustom, subagent, dan gaya output menggunakan API file Node.js alih-alih ripgrep. Atur ini jika binary ripgrep yang dibundel tidak tersedia atau diblokir di lingkungan Anda. Tidak memengaruhi tool Grep atau pencarian file |

414| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Mengontrol tool PowerShell. Di Windows tanpa Git Bash, tool diaktifkan secara otomatis; atur ke `0` untuk menonaktifkannya. Di Windows dengan Git Bash terinstal, tool aktif secara default untuk akun claude.ai dan Console; atur ke `1` untuk mengaktifkannya dalam sesi Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry, atau `0` untuk menonaktifkannya. Di Linux, macOS, dan WSL, atur ke `1` untuk mengaktifkannya, yang memerlukan `pwsh` di `PATH` Anda. Ketika diaktifkan di Windows, Claude dapat menjalankan perintah PowerShell secara native alih-alih merutekannya melalui Git Bash. Lihat [Tool PowerShell](/docs/id/tools-reference#powershell-tool) |416| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Mengontrol tool PowerShell. Di Windows tanpa Git Bash, tool ini diaktifkan secara otomatis; atur ke `0` untuk menonaktifkannya. Di Windows dengan Git Bash terinstal, tool ini aktif secara default untuk akun claude.ai dan Console; atur ke `1` untuk mengaktifkannya di sesi Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry, atau `0` untuk mematikannya. Di Linux, macOS, dan WSL, atur ke `1` untuk mengaktifkannya, yang memerlukan `pwsh` di `PATH` Anda. Ketika diaktifkan di Windows, Claude dapat menjalankan perintah PowerShell secara native alih-alih merutekannya melalui Git Bash. Lihat [Tool PowerShell](/docs/id/tools-reference#powershell-tool) |

415| `CLAUDE_CODE_USE_VERTEX` | Gunakan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) |417| `CLAUDE_CODE_USE_VERTEX` | Menggunakan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) |

416| `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS` | Atur ke jumlah milidetik [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior) menyimpan respons setiap URL yang diambil dalam cache. Defaultnya adalah `900000`, yaitu 15 menit. Hanya menerima digit biasa; `0`, desimal, atau penulisan lain mempertahankan default. Claude Code membaca nilai ini sekali per peluncuran, sehingga perubahan dalam blok `env` pengaturan berlaku saat Anda meluncurkan `claude` berikutnya. Memerlukan Claude Code v2.1.233 atau yang lebih baru |418| `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS` | Atur ke jumlah milidetik [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior) menyimpan respons setiap URL yang diambil dalam cache. Defaultnya `900000`, yaitu 15 menit. Hanya menerima digit biasa; `0`, desimal, atau penulisan lain mempertahankan default. Claude Code membaca nilai sekali per peluncuran, sehingga perubahan di blok `env` pengaturan berlaku saat Anda meluncurkan `claude` berikutnya. Memerlukan Claude Code v2.1.233 atau lebih baru |

417| `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` | Batas atas dalam milidetik untuk berapa lama [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior) menunggu halaman selesai diunduh, termasuk redirect yang diikutinya. Unduhan yang belum selesai pada saat itu gagal dengan error tenggat. Defaultnya adalah `300000`, yaitu lima menit. Atur ke `0` untuk menghapus batas. Hanya menerima digit biasa; desimal atau penulisan lain mempertahankan default. Memerlukan Claude Code v2.1.268 atau yang lebih baru |419| `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` | Batas atas dalam milidetik untuk berapa lama [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior) menunggu halaman selesai diunduh, termasuk redirect apa pun yang diikutinya. Unduhan yang belum selesai pada saat itu gagal dengan error tenggat. Defaultnya `300000`, yaitu lima menit. Atur ke `0` untuk menghapus batas. Hanya menerima digit biasa; desimal atau penulisan lain mempertahankan default. Memerlukan Claude Code v2.1.268 atau lebih baru |

418| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Berapa banyak agent yang dijalankan sekaligus oleh satu run [workflow](/docs/id/workflows), dari `1` hingga `256`. Secara default, satu run menjalankan hingga 16 agent sekaligus, lebih sedikit jika Claude Code memiliki lebih sedikit CPU yang tersedia; panggilan `agent()` yang mengantre menunggu slot kosong. Transkrip setiap agent yang berjalan tetap berada di memori Claude Code, sehingga nilai yang lebih tinggi meningkatkan penggunaan memori. Hanya menerima digit biasa; nilai di luar rentang dan penulisan lain mempertahankan default. Memerlukan Claude Code v2.1.269 atau yang lebih baru |420| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Berapa banyak agent yang dijalankan sekaligus oleh satu eksekusi [workflow](/docs/id/workflows), dari `1` hingga `256`. Secara default, satu eksekusi menjalankan hingga 16 agent sekaligus, lebih sedikit ketika Claude Code memiliki lebih sedikit CPU yang tersedia; panggilan `agent()` yang mengantre menunggu slot kosong. Transkrip setiap agent yang sedang berjalan tetap berada di memori Claude Code, sehingga nilai yang lebih tinggi meningkatkan penggunaan memori. Hanya menerima digit biasa; nilai di luar rentang dan penulisan lain mempertahankan default. Memerlukan Claude Code v2.1.269 atau yang lebih baru |

419| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Batas atas dalam milidetik mengenai berapa lama agent [workflow](/docs/id/workflows) menunggu respons pertama dari saudara dengan prefiks yang sama mulai dikirim sebelum mengirim permintaan pertamanya sendiri. Ketika fan-out memulai beberapa agent yang berbagi [prefiks prompt-cache](/docs/id/workflows#prompt-caching-in-a-fan-out), Claude Code menahan semua agent kecuali yang pertama hingga selama ini sehingga sisanya membaca prefiks yang di-cache alih-alih masing-masing memprosesnya tanpa cache. Default `5000`. Atur ke `0` untuk menonaktifkan penantian. Ketika `DISABLE_PROMPT_CACHING` diatur, agent tidak pernah menunggu. Memerlukan Claude Code v2.1.229 atau lebih baru |421| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Batas atas dalam milidetik untuk berapa lama agent [workflow](/docs/id/workflows) menunggu respons pertama dari agent saudara dengan prefiks yang sama mulai sebelum mengirim permintaan pertamanya sendiri. Ketika sebuah fan-out memulai beberapa agent yang berbagi [prefiks prompt cache](/docs/id/workflows#prompt-caching-in-a-fan-out), Claude Code menahan semua agent kecuali yang pertama hingga selama ini agar sisanya membaca prefiks yang di-cache alih-alih masing-masing memprosesnya tanpa cache. Default `5000`. Atur ke `0` untuk menonaktifkan penantian. Ketika `DISABLE_PROMPT_CACHING` diatur, agent tidak pernah menunggu. Memerlukan Claude Code v2.1.229 atau yang lebih baru |

420| `CLAUDE_CONFIG_DIR` | Menimpa direktori konfigurasi (default: `~/.claude`). Semua pengaturan, riwayat sesi, dan plugin disimpan di bawah path ini. Untuk kredensial, lihat [tempat Claude Code menyimpan kredensial](/docs/id/authentication#credential-management). Berguna untuk menjalankan beberapa akun secara berdampingan: misalnya, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |422| `CLAUDE_CONFIG_DIR` | Menimpa direktori konfigurasi (default: `~/.claude`). Semua pengaturan, riwayat sesi, dan plugin disimpan di bawah path ini. Untuk kredensial, lihat [tempat Claude Code menyimpan kredensial](/docs/id/authentication#credential-management). Berguna untuk menjalankan beberapa akun secara berdampingan: misalnya, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Atur di shell Anda, pengaturan pengguna, atau pengaturan terkelola. Diabaikan dalam [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |

421| `CLAUDE_DISABLE_ADOPT` | Atur ke `1` untuk menghentikan pekerjaan latar belakang yang sedang berjalan alih-alih meneruskannya ketika Anda memindahkan sesi ke latar belakang dengan menekan `←` atau dengan [`/background`](/docs/id/agent-view#from-inside-a-session). Claude Code meminta Anda mengonfirmasi sebelum memindahkan ke latar belakang, lalu menghentikan tugas yang seharusnya diteruskan. Memerlukan Claude Code v2.1.195 atau lebih baru |423| `CLAUDE_DISABLE_ADOPT` | Atur ke `1` untuk menghentikan pekerjaan latar belakang yang sedang berjalan alih-alih membawanya ketika Anda memindahkan sesi ke latar belakang dengan menekan `←` atau dengan [`/background`](/docs/id/agent-view#from-inside-a-session). Claude Code meminta Anda untuk mengonfirmasi sebelum memindahkan ke latar belakang, lalu menghentikan tugas yang jika tidak akan dibawa. Memerlukan Claude Code v2.1.195 atau yang lebih baru |

422| `CLAUDE_EFFORT` | Diatur secara otomatis di subproses tool Bash dan perintah hook ke [tingkat effort](/docs/id/model-config#adjust-effort-level) yang berlaku saat subproses dimulai: `low`, `medium`, `high`, `xhigh`, atau `max`. Cocok dengan field `effort.level` yang diteruskan ke [hooks](/docs/id/hooks). Hanya diatur ketika model saat ini mendukung parameter effort |424| `CLAUDE_EFFORT` | Diatur secara otomatis di subproses tool Bash dan perintah hook ke [tingkat effort](/docs/id/model-config#adjust-effort-level) yang berlaku saat subproses dimulai: `low`, `medium`, `high`, `xhigh`, atau `max`. Sesuai dengan field `effort.level` yang diteruskan ke [hooks](/docs/id/hooks). Hanya diatur ketika model saat ini mendukung parameter effort |

423| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Atur ke `1` untuk memaksa mengaktifkan watchdog idle streaming tingkat byte, atau atur ke `0` untuk memaksa menonaktifkannya. `0` juga mematikan [tenggat byte pertama](/docs/id/network-config#streaming-idle-watchdogs) pada koneksi tempat tenggat tersebut berjalan. Ketika tidak diatur, watchdog diaktifkan secara default untuk koneksi Anthropic API langsung dan [Claude Platform on AWS](/docs/id/claude-platform-on-aws), serta untuk respons streaming pada koneksi [gateway](/docs/id/gateways) yang dijangkau melalui `ANTHROPIC_BASE_URL` atau `ANTHROPIC_AWS_BASE_URL`; sebelum v2.1.222 watchdog ini tidak berjalan pada koneksi gateway tersebut, sehingga watchdog tingkat event dapat melaporkan macet di sana bahkan ketika ping keep-alive sedang tiba. Untuk timeout dan cara timer berinteraksi, lihat [Watchdog idle streaming](/docs/id/network-config#streaming-idle-watchdogs) |425| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Atur ke `1` untuk memaksa mengaktifkan watchdog idle streaming tingkat byte, atau atur ke `0` untuk memaksa menonaktifkannya. `0` juga mematikan [tenggat byte pertama](/docs/id/network-config#streaming-idle-watchdogs) pada koneksi tempat tenggat tersebut berjalan. Ketika tidak diatur, watchdog diaktifkan secara default untuk koneksi langsung ke Anthropic API dan [Claude Platform on AWS](/docs/id/claude-platform-on-aws), serta untuk respons streaming pada koneksi [gateway](/docs/id/gateways) yang dijangkau melalui `ANTHROPIC_BASE_URL` atau `ANTHROPIC_AWS_BASE_URL`; sebelum v2.1.222 watchdog ini tidak berjalan pada koneksi gateway tersebut, sehingga watchdog tingkat event dapat melaporkan macet di sana bahkan saat ping keep-alive sedang diterima. Untuk timeout dan cara timer saling berinteraksi, lihat [Watchdog idle streaming](/docs/id/network-config#streaming-idle-watchdogs) |

424| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Atur ke `1` untuk mengaktifkan watchdog idle streaming tingkat byte pada respons Amazon Bedrock `vnd.amazon.eventstream`, yang juga mengaktifkan [tenggat byte pertama](/docs/id/network-config#streaming-idle-watchdogs) pada permintaan streaming Bedrock. Nonaktif secara default. Konfigurasikan timeout dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |426| `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK` | Atur ke `1` untuk mengaktifkan watchdog idle streaming tingkat byte pada respons `vnd.amazon.eventstream` Amazon Bedrock, yang juga mengaktifkan [tenggat byte pertama](/docs/id/network-config#streaming-idle-watchdogs) pada permintaan streaming Bedrock. Nonaktif secara default. Konfigurasikan timeout dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |

425| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Atur ke `0` untuk memaksa menonaktifkan watchdog idle streaming tingkat event, atau atur ke `1` untuk memaksa mengaktifkannya. Ketika tidak diatur, watchdog aktif secara default untuk semua penyedia. Sebelum v2.1.196, default saat tidak diatur dikendalikan server pada Anthropic API langsung dan nonaktif pada penyedia lain. Konfigurasikan timeout dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; untuk timer macet lain yang berjalan bersama yang ini, lihat [Watchdog idle streaming](/docs/id/network-config#streaming-idle-watchdogs) |427| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Atur ke `0` untuk memaksa menonaktifkan watchdog idle streaming tingkat event, atau atur ke `1` untuk memaksa mengaktifkannya. Ketika tidak diatur, watchdog aktif secara default untuk semua penyedia. Sebelum v2.1.196, default saat tidak diatur dikendalikan server pada Anthropic API langsung dan nonaktif pada penyedia lain. Konfigurasikan timeout dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; untuk timer macet lain yang berjalan bersamaan dengan yang ini, lihat [Watchdog idle streaming](/docs/id/network-config#streaming-idle-watchdogs) |

426| `CLAUDE_ENV_FILE` | Path ke skrip shell yang isinya dijalankan Claude Code sebelum setiap perintah Bash dalam proses shell yang sama, sehingga export di file tersebut terlihat oleh perintah. Gunakan untuk mempertahankan aktivasi virtualenv atau conda di seluruh perintah. Juga diisi secara dinamis oleh hook [SessionStart](/docs/id/hooks#persist-environment-variables), [Setup](/docs/id/hooks#setup), [CwdChanged](/docs/id/hooks#cwdchanged), dan [FileChanged](/docs/id/hooks#filechanged) |428| `CLAUDE_ENV_FILE` | Path ke skrip shell yang isinya dijalankan Claude Code sebelum setiap perintah Bash dalam proses shell yang sama, sehingga ekspor dalam file terlihat oleh perintah. Gunakan untuk mempertahankan aktivasi virtualenv atau conda di seluruh perintah. Juga diisi secara dinamis oleh hook [SessionStart](/docs/id/hooks#persist-environment-variables), [Setup](/docs/id/hooks#setup), [CwdChanged](/docs/id/hooks#cwdchanged), dan [FileChanged](/docs/id/hooks#filechanged) |

427| `CLAUDE_JOB_DIR` | Diatur oleh Claude Code di setiap [sesi latar belakang](/docs/id/agent-view) ke direktori `~/.claude/jobs/<id>` milik sesi tersebut. Perintah shell yang dijalankan sesi mewarisinya. Tulis file sementara ke [`$CLAUDE_JOB_DIR/tmp`](/docs/id/agent-view#where-state-is-stored). Panggilan `Write` dan `Edit` Claude di sana tidak meminta izin, dan direktori dihapus ketika sesi dihapus |429| `CLAUDE_JOB_DIR` | Diatur oleh Claude Code di setiap [sesi latar belakang](/docs/id/agent-view) ke direktori `~/.claude/jobs/<id>` milik sesi tersebut. Perintah shell yang dijalankan sesi mewarisinya. Tulis file sementara ke [`$CLAUDE_JOB_DIR/tmp`](/docs/id/agent-view#where-state-is-stored). Panggilan `Write` dan `Edit` Claude di sana tidak meminta izin, dan direktori dihapus ketika sesi dihapus |

428| `CLAUDE_PID` | Claude Code mengatur ini ke ID prosesnya sendiri di subproses yang dibuatnya: perintah tool Bash dan PowerShell serta perintah hook. Di Linux, integrasi shell tool Bash menggunakannya untuk menolak pola `pkill` yang akan cocok dengan proses Claude Code itu sendiri; lihat [referensi error](/docs/id/errors#pkill-pattern-matches-the-claude-code-process). Baca dari skrip Anda sendiri untuk mengidentifikasi atau mengirim sinyal ke proses induk Claude Code secara sengaja. Memerlukan Claude Code v2.1.214 atau lebih baru |430| `CLAUDE_PID` | Claude Code mengatur ini ke ID prosesnya sendiri di subproses yang dibuatnya: perintah tool Bash dan PowerShell serta perintah hook. Di Linux, integrasi shell tool Bash menggunakannya untuk menolak pola `pkill` yang akan cocok dengan proses Claude Code itu sendiri; lihat [referensi error](/docs/id/errors#pkill-pattern-matches-the-claude-code-process). Baca dari skrip Anda sendiri untuk mengidentifikasi atau mengirim sinyal ke proses induk Claude Code secara sengaja. Memerlukan Claude Code v2.1.214 atau yang lebih baru |

429| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefiks untuk nama sesi [Remote Control](/docs/id/remote-control) yang dibuat otomatis ketika tidak ada nama eksplisit yang diberikan. Default ke hostname mesin Anda, menghasilkan nama seperti `myhost-graceful-unicorn`. Flag CLI `--remote-control-session-name-prefix` mengatur nilai yang sama untuk satu pemanggilan |431| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Prefiks untuk nama sesi [Remote Control](/docs/id/remote-control) yang dibuat secara otomatis ketika tidak ada nama eksplisit yang diberikan. Default ke hostname mesin Anda, menghasilkan nama seperti `myhost-graceful-unicorn`. Flag CLI `--remote-control-session-name-prefix` mengatur nilai yang sama untuk satu pemanggilan |

430| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | Tenggat dalam milidetik untuk byte respons pertama dari permintaan streaming, pada koneksi tempat [tenggat byte pertama](/docs/id/network-config#streaming-idle-watchdogs) berjalan. Untuk cara Claude Code membatasinya, waktu tambahan yang ditambahkannya untuk body permintaan besar, dan cara memilih tenggat ketika Anda membiarkan ini tidak diatur, lihat [Tidak ada respons dari API](/docs/id/errors#no-response-from-api). Memerlukan Claude Code v2.1.242 atau lebih baru |432| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | Tenggat dalam milidetik untuk byte respons pertama dari permintaan streaming, pada koneksi tempat [tenggat byte pertama](/docs/id/network-config#streaming-idle-watchdogs) berjalan. Untuk cara Claude Code membatasinya, waktu tambahan yang ditambahkannya untuk body permintaan yang besar, dan cara memilih tenggat ketika Anda tidak mengatur ini, lihat [No response from API](/docs/id/errors#no-response-from-api). Memerlukan Claude Code v2.1.242 atau yang lebih baru |

431| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Timeout dalam milidetik sebelum watchdog idle streaming tingkat event dan tingkat byte menutup koneksi yang macet. Ketika Anda mengatur variabel ini secara eksplisit, minimumnya adalah `300000` (5 menit); nilai yang lebih rendah dibatasi secara diam-diam untuk mengakomodasi jeda extended thinking dan buffering proxy, dan watchdog tingkat byte membatasi nilai pada 30 menit. `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` diutamakan daripada variabel ini untuk watchdog tingkat byte. Untuk default per watchdog saat tidak diatur, lihat [Watchdog idle streaming](/docs/id/network-config#streaming-idle-watchdogs) |433| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Timeout dalam milidetik sebelum watchdog idle streaming tingkat event dan tingkat byte menutup koneksi yang macet. Ketika Anda mengatur variabel ini secara eksplisit, nilai minimumnya adalah `300000` (5 menit); nilai yang lebih rendah dibatasi secara diam-diam untuk mengakomodasi jeda extended thinking dan buffering proxy, dan watchdog tingkat byte membatasi nilainya pada 30 menit. `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` diutamakan daripada variabel ini untuk watchdog tingkat byte. Untuk default per-watchdog saat tidak diatur, lihat [Watchdog idle streaming](/docs/id/network-config#streaming-idle-watchdogs) |

432| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Dihapus di v2.1.260 dan sekarang tidak berpengaruh. Sebelumnya membatasi berapa lama [perintah shell latar belakang](/docs/id/interactive-mode#background-bash-commands) yang dimulai oleh [subagent](/docs/id/sub-agents) dapat berjalan, dalam milidetik, dengan default 60 menit. Lihat [aturan masa hidup perintah latar belakang](/docs/id/tools-reference#background-commands) |434| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Dihapus di v2.1.260 dan sekarang tidak berpengaruh. Sebelumnya membatasi berapa lama [perintah shell latar belakang](/docs/id/interactive-mode#background-bash-commands) yang dimulai oleh [subagent](/docs/id/sub-agents) dapat berjalan, dalam milidetik, dengan default 60 menit. Lihat [aturan masa hidup perintah latar belakang](/docs/id/tools-reference#background-commands) |

433| `DEBUG` | Atur ke `1` untuk mengaktifkan mode debug, setara dengan meluncurkan dengan [`--debug`](/docs/id/cli-reference#cli-flags). Log debug ditulis ke `~/.claude/debug/<session-id>.txt`, atau ke path yang diatur oleh `CLAUDE_CODE_DEBUG_LOGS_DIR`. Hanya nilai truthy `1`, `true`, `yes`, dan `on` yang mengaktifkan mode debug, sehingga pola namespace seperti `DEBUG=express:*` yang diatur untuk tool lain tidak memicunya |435| `DEBUG` | Atur ke `1` untuk mengaktifkan mode debug, setara dengan meluncurkan dengan [`--debug`](/docs/id/cli-reference#cli-flags). Log debug ditulis ke `~/.claude/debug/<session-id>.txt`, atau ke path yang diatur oleh `CLAUDE_CODE_DEBUG_LOGS_DIR`. Hanya nilai truthy `1`, `true`, `yes`, dan `on` yang mengaktifkan mode debug, sehingga pola namespace seperti `DEBUG=express:*` yang diatur untuk tool lain tidak memicunya |

434| `DISABLE_AUTOUPDATER` | Atur ke `1` untuk menonaktifkan pembaruan latar belakang otomatis. `claude update` manual tetap berfungsi. Gunakan `DISABLE_UPDATES` untuk memblokir keduanya |436| `DISABLE_AUTOUPDATER` | Atur ke `1` untuk menonaktifkan pembaruan latar belakang otomatis. `claude update` manual tetap berfungsi. Gunakan `DISABLE_UPDATES` untuk memblokir keduanya |

435| `DISABLE_AUTO_COMPACT` | Atur ke `1` untuk menonaktifkan compaction otomatis saat mendekati batas konteks. Perintah `/compact` manual tetap tersedia. Gunakan ketika Anda ingin kendali eksplisit atas kapan compaction terjadi. Menimpa pengaturan [`autoCompactEnabled`](/docs/id/settings-reference#autocompactenabled) |437| `DISABLE_AUTO_COMPACT` | Atur ke `1` untuk menonaktifkan compaction otomatis saat mendekati batas konteks. Perintah `/compact` manual tetap tersedia. Gunakan ketika Anda menginginkan kontrol eksplisit atas kapan compaction terjadi. Menimpa pengaturan [`autoCompactEnabled`](/docs/id/settings-reference#autocompactenabled) |

436| `DISABLE_COMPACT` | Atur ke `1` untuk menonaktifkan semua compaction: baik compaction otomatis maupun perintah `/compact` manual |438| `DISABLE_COMPACT` | Atur ke `1` untuk menonaktifkan semua compaction: baik compaction otomatis maupun perintah `/compact` manual |

437| `DISABLE_COST_WARNINGS` | Atur ke `1` untuk menonaktifkan pesan peringatan biaya |439| `DISABLE_COST_WARNINGS` | Atur ke `1` untuk menonaktifkan pesan peringatan biaya |

438| `DISABLE_DOCTOR_COMMAND` | Atur ke `1` untuk menyembunyikan skill pemeriksaan penyiapan [`/doctor`](/docs/id/commands#all-commands) dan alias `/checkup`-nya. Berguna untuk deployment terkelola di mana pengguna tidak seharusnya menjalankan diagnostik penyiapan dari sesi. Tidak memengaruhi perintah terminal `claude doctor`. Sebelum v2.1.205, variabel ini menyembunyikan perintah layar diagnostik `/doctor` |440| `DISABLE_DOCTOR_COMMAND` | Atur ke `1` untuk menyembunyikan skill pemeriksaan penyiapan [`/doctor`](/docs/id/commands#all-commands) dan alias `/checkup`-nya. Berguna untuk deployment terkelola di mana pengguna tidak boleh menjalankan diagnostik penyiapan dari sebuah sesi. Tidak memengaruhi perintah terminal `claude doctor`. Sebelum v2.1.205, variabel ini menyembunyikan perintah layar diagnostik `/doctor` |

439| `DISABLE_ERROR_REPORTING` | Atur ke nilai tidak kosong apa pun, seperti `1`, untuk menolak pelaporan error. **Mengaturnya ke `0` atau `false` tetap menolak**, tidak seperti kebanyakan variabel hidup/mati; hapus pengaturan variabel untuk mengaktifkan kembali pelaporan error |441| `DISABLE_ERROR_REPORTING` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk memilih keluar dari pelaporan error. **Mengaturnya ke `0` atau `false` tetap memilih keluar**, tidak seperti sebagian besar variabel aktif/nonaktif; hapus pengaturan variabel untuk mengaktifkan kembali pelaporan error |

440| `DISABLE_EXTRA_USAGE_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/usage-credits` yang memungkinkan pengguna membeli penggunaan tambahan di luar rate limit |442| `DISABLE_EXTRA_USAGE_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/usage-credits` yang memungkinkan pengguna membeli penggunaan tambahan di luar rate limit |

441| `DISABLE_FEEDBACK_COMMAND` | Atur ke `1` untuk menonaktifkan perintah `/feedback` dan [umpan balik yang disusun Claude](/docs/id/tools-reference#sendfeedback-tool-behavior). Juga menonaktifkan `/bug` dan `/share`, yang melaporkan melalui jalur yang sama; sebelum v2.1.212 keduanya adalah alias dari `/feedback`, sehingga perintah dinonaktifkan di bawah setiap nama. Nama lama `DISABLE_BUG_COMMAND` juga diterima |443| `DISABLE_FEEDBACK_COMMAND` | Atur ke `1` untuk menonaktifkan perintah `/feedback` dan [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior). Juga menonaktifkan `/bug` dan `/share`, yang melapor melalui jalur yang sama; sebelum v2.1.212 keduanya adalah alias dari `/feedback`, sehingga perintah tersebut dinonaktifkan di bawah setiap nama. Nama lama `DISABLE_BUG_COMMAND` juga diterima |

442| `DISABLE_GROWTHBOOK` | Atur ke `1` atau `true` untuk menonaktifkan pengambilan feature-flag GrowthBook dan menggunakan default kode untuk setiap flag. Ini membuat [Remote Control](/docs/id/remote-control#requirements) dan [fitur lain yang memerlukan pengambilan feature-flag](#features-that-need-feature-flag-fetching) tidak tersedia. Mengaturnya ke `0` atau `false` membiarkan pengambilan tetap aktif. Pencatatan event telemetri tetap aktif kecuali `DISABLE_TELEMETRY` juga diatur |444| `DISABLE_GROWTHBOOK` | Atur ke `1` atau `true` untuk menonaktifkan pengambilan feature flag GrowthBook dan menggunakan default kode untuk setiap flag. Ini membuat [Remote Control](/docs/id/remote-control#requirements) dan [fitur lain yang memerlukan pengambilan feature flag](#features-that-need-feature-flag-fetching) tidak tersedia. Mengaturnya ke `0` atau `false` membiarkan pengambilan tetap aktif. Pencatatan event telemetri tetap aktif kecuali `DISABLE_TELEMETRY` juga diatur |

443| `DISABLE_INSTALLATION_CHECKS` | Atur ke `1` untuk menonaktifkan peringatan instalasi. Gunakan hanya ketika mengelola lokasi instalasi secara manual, karena ini dapat menutupi masalah pada instalasi standar |445| `DISABLE_INSTALLATION_CHECKS` | Atur ke `1` untuk menonaktifkan peringatan instalasi. Gunakan hanya ketika mengelola lokasi instalasi secara manual, karena ini dapat menutupi masalah pada instalasi standar |

444| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/install-github-app`. Sudah tersembunyi ketika menggunakan penyedia pihak ketiga (Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry) |446| `DISABLE_INSTALL_GITHUB_APP_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/install-github-app`. Sudah disembunyikan saat menggunakan penyedia pihak ketiga (Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry) |

445| `DISABLE_INTERLEAVED_THINKING` | Atur ke `1` untuk mencegah pengiriman header beta interleaved-thinking. Berguna ketika gateway LLM atau penyedia Anda tidak mendukung [interleaved thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |447| `DISABLE_INTERLEAVED_THINKING` | Atur ke `1` untuk mencegah pengiriman header beta interleaved-thinking. Berguna ketika gateway LLM atau penyedia Anda tidak mendukung [interleaved thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |

446| `DISABLE_LOGIN_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/login`. Berguna ketika autentikasi ditangani secara eksternal melalui kunci API atau `apiKeyHelper` |448| `DISABLE_LOGIN_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/login`. Berguna ketika autentikasi ditangani secara eksternal melalui kunci API atau `apiKeyHelper` |

447| `DISABLE_LOGOUT_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/logout` |449| `DISABLE_LOGOUT_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/logout` |


450| `DISABLE_PROMPT_CACHING_HAIKU` | Atur ke `1` untuk menonaktifkan prompt caching untuk [model Haiku default](/docs/id/prompt-caching#disable-prompt-caching), di mana pun model tersebut berjalan |452| `DISABLE_PROMPT_CACHING_HAIKU` | Atur ke `1` untuk menonaktifkan prompt caching untuk [model Haiku default](/docs/id/prompt-caching#disable-prompt-caching), di mana pun model tersebut berjalan |

451| `DISABLE_PROMPT_CACHING_OPUS` | Atur ke `1` untuk menonaktifkan prompt caching untuk [model Opus default](/docs/id/prompt-caching#disable-prompt-caching) |453| `DISABLE_PROMPT_CACHING_OPUS` | Atur ke `1` untuk menonaktifkan prompt caching untuk [model Opus default](/docs/id/prompt-caching#disable-prompt-caching) |

452| `DISABLE_PROMPT_CACHING_SONNET` | Atur ke `1` untuk menonaktifkan prompt caching untuk [model Sonnet default](/docs/id/prompt-caching#disable-prompt-caching) |454| `DISABLE_PROMPT_CACHING_SONNET` | Atur ke `1` untuk menonaktifkan prompt caching untuk [model Sonnet default](/docs/id/prompt-caching#disable-prompt-caching) |

453| `DISABLE_TELEMETRY` | Atur ke nilai tidak kosong apa pun, seperti `1`, untuk menolak telemetri. **Mengaturnya ke `0` atau `false` tetap menolak**, tidak seperti kebanyakan variabel hidup/mati; hapus pengaturan variabel untuk mengaktifkan kembali telemetri. Event telemetri tidak menyertakan data pengguna seperti kode, path file, atau perintah Bash. Juga menonaktifkan [pengambilan feature-flag](#features-that-need-feature-flag-fetching). Lihat [Matikan telemetri untuk organisasi Anda](/docs/id/managed-settings#turn-telemetry-off-for-your-organization) |455| `DISABLE_TELEMETRY` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk memilih keluar dari telemetri. **Mengaturnya ke `0` atau `false` tetap memilih keluar**, tidak seperti sebagian besar variabel aktif/nonaktif; hapus pengaturan variabel untuk mengaktifkan kembali telemetri. Event telemetri tidak menyertakan data pengguna seperti kode, path file, atau perintah Bash. Juga menonaktifkan [pengambilan feature flag](#features-that-need-feature-flag-fetching). Lihat [Matikan telemetri untuk organisasi Anda](/docs/id/managed-settings#turn-telemetry-off-for-your-organization) |

454| `DISABLE_UPDATES` | Atur ke `1` untuk memblokir semua pembaruan termasuk `claude update` dan `claude install` manual. Lebih ketat daripada `DISABLE_AUTOUPDATER`. Gunakan ketika mendistribusikan Claude Code melalui saluran Anda sendiri dan pengguna tidak boleh memperbarui sendiri |456| `DISABLE_UPDATES` | Atur ke `1` untuk memblokir semua pembaruan termasuk `claude update` dan `claude install` manual. Lebih ketat daripada `DISABLE_AUTOUPDATER`. Gunakan saat mendistribusikan Claude Code melalui saluran Anda sendiri dan pengguna tidak boleh memperbarui sendiri |

455| `DISABLE_UPGRADE_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/upgrade` |457| `DISABLE_UPGRADE_COMMAND` | Atur ke `1` untuk menyembunyikan perintah `/upgrade` |

456| `DO_NOT_TRACK` | Atur ke `1` untuk menolak telemetri, dengan efek yang sama seperti `DISABLE_TELEMETRY`, termasuk pada [pengambilan feature-flag](#features-that-need-feature-flag-fetching). Claude Code membaca variabel ini sebagai boolean standar, sehingga `0` membiarkan telemetri tetap aktif, dan menghormatinya sebagai konvensi lintas tool yang dikenali oleh banyak CLI pengembang |458| `DO_NOT_TRACK` | Atur ke `1` untuk memilih keluar dari telemetri, dengan efek yang sama seperti `DISABLE_TELEMETRY`, termasuk pada [pengambilan feature flag](#features-that-need-feature-flag-fetching). Claude Code membaca variabel ini sebagai boolean standar, sehingga `0` membiarkan telemetri tetap aktif, dan menghormatinya sebagai konvensi lintas tool yang dikenali oleh banyak CLI pengembang |

457| `ENABLE_BETA_TRACING_DETAILED` | Atur ke `1`, bersama dengan `BETA_TRACING_ENDPOINT`, untuk mengaktifkan [tracing beta terperinci](/docs/id/monitoring-usage#traces-beta), yang menambahkan atribut span yang membawa konten dan span `claude_code.hook`. Sesi CLI interaktif juga mengharuskan organisasi Anda masuk daftar izin untuk beta. Kedua variabel diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |459| `ENABLE_BETA_TRACING_DETAILED` | Atur ke `1`, bersama dengan `BETA_TRACING_ENDPOINT`, untuk mengaktifkan [tracing beta terperinci](/docs/id/monitoring-usage#traces-beta), yang menambahkan atribut span yang memuat konten dan span `claude_code.hook`. Sesi CLI interaktif juga mengharuskan organisasi Anda masuk dalam allowlist untuk beta tersebut. Kedua variabel diabaikan dalam [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |

458| `ENABLE_CLAUDEAI_MCP_SERVERS` | Atur ke `false` untuk menghentikan Claude Code mengambil [server MCP claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai). Diaktifkan secara default untuk pengguna yang sudah masuk. Untuk menonaktifkan per proyek atau per organisasi, atur [`disableClaudeAiConnectors`](/docs/id/settings-reference#disableclaudeaiconnectors) di pengaturan sebagai gantinya |460| `ENABLE_CLAUDEAI_MCP_SERVERS` | Atur ke `false` untuk menghentikan Claude Code mengambil [server MCP claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai). Diaktifkan secara default untuk pengguna yang sudah masuk. Untuk menonaktifkan per proyek atau per organisasi, atur [`disableClaudeAiConnectors`](/docs/id/settings-reference#disableclaudeaiconnectors) di pengaturan sebagai gantinya |

459| `ENABLE_PROMPT_CACHING_1H` | Atur ke `1` untuk meminta [TTL cache prompt](/docs/id/prompt-caching#cache-lifetime) 1 jam alih-alih default 5 menit. Ditujukan untuk pengguna kunci API, [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), [Microsoft Foundry](/docs/id/microsoft-foundry), dan [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Pengguna langganan dalam penggunaan yang disertakan menerima TTL 1 jam secara otomatis pada [percakapan utama](/docs/id/prompt-caching#which-ttl-each-request-gets). Pengguna langganan yang menggunakan [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) dapat mengaturnya untuk mempertahankan TTL 1 jam. Penulisan cache 1 jam ditagih dengan tarif lebih tinggi. Untuk memilih TTL per kelompok permintaan, gunakan `CLAUDE_CODE_PROMPT_CACHE_TTL` dan `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, yang diutamakan daripada variabel ini |461| `ENABLE_PROMPT_CACHING_1H` | Atur ke `1` untuk meminta [TTL prompt cache](/docs/id/prompt-caching#cache-lifetime) 1 jam alih-alih default 5 menit. Ditujukan untuk pengguna kunci API, [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), [Microsoft Foundry](/docs/id/microsoft-foundry), dan [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Pengguna langganan dalam penggunaan yang disertakan menerima TTL 1 jam secara otomatis pada [percakapan utama](/docs/id/prompt-caching#which-ttl-each-request-gets). Pengguna langganan yang menggunakan [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) dapat mengaturnya untuk mempertahankan TTL 1 jam. Penulisan cache 1 jam ditagih dengan tarif lebih tinggi. Untuk memilih TTL per kelompok permintaan, gunakan `CLAUDE_CODE_PROMPT_CACHE_TTL` dan `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, yang diutamakan daripada variabel ini |

460| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |462| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |

461| `ENABLE_TOOL_SEARCH` | Mengendalikan [pencarian tool MCP](/docs/id/mcp#scale-with-mcp-tool-search). Jika tidak diatur, Claude Code menunda semua tool MCP secara default. Claude Code tetap memuatnya di awal pada model Google Cloud's Agent Platform yang lebih lama dari generasi Claude 4.5, pada deployment Microsoft Foundry yang di-host di Azure, dan ketika `ANTHROPIC_BASE_URL` menunjuk ke host non-first-party. `true` selalu menunda dan mengirim header beta, kecuali pada model Agent Platform dan deployment Microsoft Foundry yang sama tersebut; permintaan gagal pada proxy yang tidak mendukung `tool_reference`. `auto` memuat di awal ketika definisi tool muat dalam 10% konteks. `auto:N` mengatur ambang kustom, seperti `auto:5` untuk 5%. `false` memuat semua tool di awal. Nilai yang Anda atur sendiri diabaikan ketika `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` diatur. Sebelum v2.1.221, Claude Code menonaktifkan pencarian tool untuk semua model di Google Cloud's Agent Platform kecuali Anda mengatur variabel ini ke `true` |463| `ENABLE_TOOL_SEARCH` | Mengontrol [pencarian tool MCP](/docs/id/mcp#scale-with-mcp-tool-search). Jika tidak diatur, Claude Code menunda semua tool MCP secara default. Claude Code tetap memuatnya di awal pada model Google Cloud's Agent Platform yang lebih awal dari generasi Claude 4.5, pada deployment Microsoft Foundry yang di-host di Azure, dan ketika `ANTHROPIC_BASE_URL` menunjuk ke host yang bukan pihak pertama. `true` selalu menunda dan mengirim header beta, kecuali pada model Agent Platform dan deployment Microsoft Foundry yang sama tersebut; permintaan gagal pada proxy yang tidak mendukung `tool_reference`. `auto` memuat di awal ketika definisi tool muat dalam 10% konteks. `auto:N` mengatur ambang batas kustom, seperti `auto:5` untuk 5%. `false` memuat semua tool di awal. Nilai yang Anda atur sendiri diabaikan ketika `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` diatur. Sebelum v2.1.221, Claude Code menonaktifkan pencarian tool untuk semua model di Google Cloud's Agent Platform kecuali Anda mengatur variabel ini ke `true` |

462| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Atur ke nilai tidak kosong apa pun, seperti `1`, agar Claude Code berhenti mencoba ulang pada error overload berulang untuk setiap model ketika tidak ada model fallback yang dikonfigurasi. **Mengaturnya ke `0` atau `false` tetap mengaktifkan ini**, tidak seperti kebanyakan variabel hidup/mati; hapus pengaturan variabel untuk memulihkan perilaku retry default. Tanpanya, Claude Code berhenti mencoba ulang dengan cara ini pada model yang dikenalinya sebagai model Opus, Fable, atau Mythos ketika Anda melakukan autentikasi dengan kunci API atau [penyedia pihak ketiga](/docs/id/third-party-integrations) alih-alih langganan Claude. Pada Claude Code v2.1.160 atau lebih baru, Claude Code beralih ke [rantai model fallback](/docs/id/model-config#fallback-model-chains) yang Anda konfigurasi pada error overload berulang untuk model utama apa pun, sehingga variabel ini tidak memengaruhi peralihan ke model fallback |464| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk membuat Claude Code berhenti mencoba ulang pada error overload berulang untuk setiap model ketika tidak ada model fallback yang dikonfigurasi. **Mengaturnya ke `0` atau `false` tetap mengaktifkan ini**, tidak seperti sebagian besar variabel aktif/nonaktif; hapus pengaturan variabel untuk memulihkan perilaku retry default. Tanpa variabel ini, Claude Code berhenti mencoba ulang dengan cara ini pada model yang dikenalinya sebagai model Opus, Fable, atau Mythos ketika Anda melakukan autentikasi dengan kunci API atau [penyedia pihak ketiga](/docs/id/third-party-integrations) alih-alih langganan Claude. Pada Claude Code v2.1.160 atau yang lebih baru, Claude Code beralih ke [rantai model fallback](/docs/id/model-config#fallback-model-chains) yang Anda konfigurasikan pada error overload berulang untuk model utama apa pun, sehingga variabel ini tidak memengaruhi peralihan ke model fallback |

463| `FORCE_AUTOUPDATE_PLUGINS` | Atur ke `1` untuk memaksa pembaruan otomatis plugin bahkan ketika auto-updater utama dinonaktifkan melalui `DISABLE_AUTOUPDATER` |465| `FORCE_AUTOUPDATE_PLUGINS` | Atur ke `1` untuk memaksa pembaruan otomatis plugin bahkan ketika auto-updater utama dinonaktifkan melalui `DISABLE_AUTOUPDATER` |

464| `FORCE_HYPERLINK` | Atur ke `1` untuk mengaktifkan hyperlink OSC 8 yang dapat diklik ketika terminal Anda mendukungnya tetapi tidak terdeteksi otomatis, atau `0` untuk menonaktifkannya. Ketika tidak diatur, Claude Code mengaktifkan hyperlink hanya ketika mendeteksi dukungan terminal. Claude Code mengurai nilai ini sebagai angka, bukan Boolean, sehingga nilai seperti `false`, `no`, atau `off` justru mengaktifkan hyperlink alih-alih menonaktifkannya. [Lencana PR atau merge request](/docs/id/interactive-mode#pr-review-status) di footer ditampilkan sebagai hyperlink bahkan ketika Claude Code tidak dapat mendeteksi dukungan terminal, seperti melalui SSH. Atur `0` untuk menampilkan lencana sebagai teks biasa |466| `FORCE_HYPERLINK` | Atur ke `1` untuk mengaktifkan hyperlink OSC 8 yang dapat diklik ketika terminal Anda mendukungnya tetapi tidak terdeteksi otomatis, atau `0` untuk menonaktifkannya. Ketika tidak diatur, Claude Code mengaktifkan hyperlink hanya ketika mendeteksi dukungan terminal. Claude Code mengurai nilai ini sebagai angka, bukan Boolean, sehingga nilai seperti `false`, `no`, atau `off` justru mengaktifkan hyperlink alih-alih menonaktifkannya. [Lencana PR atau merge request](/docs/id/interactive-mode#pr-review-status) di footer ditampilkan sebagai hyperlink bahkan ketika Claude Code tidak dapat mendeteksi dukungan terminal, seperti melalui SSH. Atur `0` untuk menampilkan lencana sebagai teks biasa |

465| `FORCE_PROMPT_CACHING_5M` | Atur ke `1` untuk memaksa TTL cache prompt 5 menit bahkan ketika TTL 1 jam seharusnya berlaku. Menimpa `CLAUDE_CODE_PROMPT_CACHE_TTL`, `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, `ENABLE_PROMPT_CACHING_1H`, serta pengaturan `promptCacheTtl` dan `subagentPromptCacheTtl` |467| `FORCE_PROMPT_CACHING_5M` | Atur ke `1` untuk memaksa TTL prompt cache 5 menit bahkan ketika TTL 1 jam seharusnya berlaku. Menimpa `CLAUDE_CODE_PROMPT_CACHE_TTL`, `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, `ENABLE_PROMPT_CACHING_1H`, serta pengaturan `promptCacheTtl` dan `subagentPromptCacheTtl` |

466| `HTTP_PROXY` | Tentukan server proxy HTTP untuk koneksi jaringan |468| `HTTP_PROXY` | Tentukan server proxy HTTP untuk koneksi jaringan |

467| `HTTPS_PROXY` | Tentukan server proxy HTTPS untuk koneksi jaringan |469| `HTTPS_PROXY` | Tentukan server proxy HTTPS untuk koneksi jaringan |

468| `IS_DEMO` | Atur ke nilai tidak kosong apa pun, seperti `1`, untuk mengaktifkan mode demo: menyembunyikan email dan nama organisasi Anda dari header dan output `/status`, serta melewati onboarding. **Mengaturnya ke `0` atau `false` tetap mengaktifkan mode demo**, tidak seperti kebanyakan variabel hidup/mati; hapus pengaturan variabel untuk mematikannya. Berguna saat streaming atau merekam sesi |470| `IS_DEMO` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk mengaktifkan mode demo: menyembunyikan email dan nama organisasi Anda dari header dan output `/status`, serta melewati onboarding. **Mengaturnya ke `0` atau `false` tetap mengaktifkan mode demo**, tidak seperti sebagian besar variabel aktif/nonaktif; hapus pengaturan variabel untuk mematikannya. Berguna saat melakukan streaming atau merekam sesi |

469| `MAX_MCP_OUTPUT_TOKENS` | Jumlah maksimum token yang diizinkan dalam respons tool MCP. Claude Code menampilkan peringatan ketika output melebihi 10.000 token. Tool yang mendeklarasikan [`anthropic/maxResultSizeChars`](/docs/id/mcp#raise-the-limit-for-a-specific-tool) menggunakan batas karakter tersebut untuk konten teks, tetapi konten gambar dari tool tersebut tetap tunduk pada variabel ini (default: 25000) |471| `MAX_MCP_OUTPUT_TOKENS` | Jumlah maksimum token yang diizinkan dalam respons tool MCP. Claude Code menampilkan peringatan ketika output melebihi 10.000 token. Tool yang mendeklarasikan [`anthropic/maxResultSizeChars`](/docs/id/mcp#raise-the-limit-for-a-specific-tool) menggunakan batas karakter tersebut untuk konten teks sebagai gantinya, tetapi konten gambar dari tool tersebut tetap tunduk pada variabel ini (default: 25000) |

470| `MAX_STRUCTURED_OUTPUT_RETRIES` | Jumlah percobaan yang diizinkan Claude Code ketika respons model gagal validasi terhadap [`--json-schema`](/docs/id/cli-reference#cli-flags) dalam mode non-interaktif dengan flag `-p`; setelah sejumlah percobaan gagal tanpa output yang valid, eksekusi gagal. Batas yang sama berlaku ketika output terstruktur subagent [workflow](/docs/id/workflows) gagal validasi. Default 5, yaitu satu percobaan pertama ditambah empat retry |472| `MAX_STRUCTURED_OUTPUT_RETRIES` | Jumlah percobaan yang diizinkan Claude Code ketika respons model gagal validasi terhadap [`--json-schema`](/docs/id/cli-reference#cli-flags) dalam mode non-interaktif dengan flag `-p`; setelah sebanyak itu percobaan gagal tanpa output yang valid, eksekusi gagal. Batas yang sama berlaku ketika output terstruktur subagent [workflow](/docs/id/workflows) gagal validasi. Default 5, yaitu percobaan pertama ditambah empat retry |

471| `MAX_THINKING_TOKENS` | Anggaran token tetap untuk [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code membatasinya pada satu token di bawah max output tokens permintaan dan tidak pernah di bawah 1.024. Lihat `CLAUDE_CODE_MAX_OUTPUT_TOKENS` untuk cara batas tersebut diatur. Ketika tidak diatur dan thinking diaktifkan, model dengan [penalaran adaptif](/docs/id/model-config#adjust-effort-level) memilih kedalaman thinking-nya sendiri, dan model lain menggunakan batas tersebut. Atur ke `0` untuk menonaktifkan thinking di Anthropic API, kecuali pada Opus 5.5, Sonnet 5.5, dan model Fable, yang thinking-nya tidak dapat dimatikan. Pada [penyedia pihak ketiga](/docs/id/third-party-integrations), `0` justru menghilangkan parameter `thinking`. Dengan thinking dimatikan di Anthropic API, Claude Code mengirim effort `high` alih-alih tingkat yang lebih tinggi ke model yang diketahuinya [tidak menerima kombinasi tersebut](/docs/id/errors#effort-isnt-available-with-thinking-turned-off), seperti Opus 5. Claude Code mengabaikan nilai bukan nol pada model penalaran adaptif, kecuali pada model di mana `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` mematikan penalaran adaptif |473| `MAX_THINKING_TOKENS` | Anggaran token tetap untuk [extended thinking](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code membatasinya pada satu token di bawah max output tokens permintaan dan tidak pernah di bawah 1.024. Lihat `CLAUDE_CODE_MAX_OUTPUT_TOKENS` untuk cara batas tersebut diatur. Ketika tidak diatur dan thinking diaktifkan, model dengan [adaptive reasoning](/docs/id/model-config#adjust-effort-level) memilih kedalaman thinking-nya sendiri, dan model lain menggunakan batas tersebut. Atur ke `0` untuk menonaktifkan thinking pada Anthropic API, kecuali pada Opus 5.5, Sonnet 5.5, dan model Fable, yang thinking-nya tidak dapat dimatikan. Pada [penyedia pihak ketiga](/docs/id/third-party-integrations), `0` justru menghilangkan parameter `thinking`. Dengan thinking dimatikan pada Anthropic API, Claude Code mengirim effort `high` alih-alih tingkat yang lebih tinggi ke model yang diketahuinya [tidak menerima kombinasi tersebut](/docs/id/errors#effort-isnt-available-with-thinking-turned-off), seperti Opus 5. Claude Code mengabaikan nilai bukan nol pada model adaptive reasoning, kecuali pada model di mana `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` mematikan adaptive reasoning |

472| `MCP_CLIENT_SECRET` | Client secret OAuth untuk server MCP yang memerlukan [kredensial yang telah dikonfigurasi sebelumnya](/docs/id/mcp#use-pre-configured-oauth-credentials). Menghindari prompt interaktif saat menambahkan server dengan `--client-secret` |474| `MCP_CLIENT_SECRET` | Client secret OAuth untuk server MCP yang memerlukan [kredensial yang telah dikonfigurasi sebelumnya](/docs/id/mcp#use-pre-configured-oauth-credentials). Menghindari prompt interaktif saat menambahkan server dengan `--client-secret` |

473| `MCP_CONNECTION_NONBLOCKING` | Mengendalikan apakah startup menunggu server MCP terhubung sebelum kueri pertama. Startup MCP bersifat non-blocking secara default: server terhubung di latar belakang dan tool-nya tersedia saat selesai. Atur ke `0` agar Claude Code menunggu server terhubung sebelum kueri pertama. Server yang dikonfigurasi dengan [`alwaysLoad: true`](/docs/id/mcp#exempt-a-server-from-deferral) tetap membuat startup menunggu, kecuali ketika dilayani dari [cache penemuan](/docs/id/mcp#server-status-detail), karena tool-nya harus ada saat prompt pertama dibuat. Dalam mode non-interaktif (`-p`) tanpa `--input-format stream-json`, Claude Code juga menunggu server yang masih tertunda sebelum giliran pertama terlepas dari variabel ini. Ketika Anda meneruskan [`--mcp-config`](/docs/id/cli-reference#cli-flags) secara eksplisit, penantian memiliki tenggat yang lebih panjang; lihat entri flag tersebut untuk pengecualian server yang di-cache |475| `MCP_CONNECTION_NONBLOCKING` | Mengontrol apakah startup menunggu server MCP terhubung sebelum kueri pertama. Startup MCP bersifat non-blocking secara default: server terhubung di latar belakang dan tool-nya menjadi tersedia saat selesai. Atur ke `0` agar Claude Code menunggu server terhubung sebelum kueri pertama. Server yang dikonfigurasi dengan [`alwaysLoad: true`](/docs/id/mcp#exempt-a-server-from-deferral) tetap membuat startup menunggu apa pun pengaturannya, kecuali ketika dilayani dari [discovery cache](/docs/id/mcp#server-status-detail), karena tool-nya harus ada ketika prompt pertama dibangun. Dalam mode non-interaktif (`-p`) tanpa `--input-format stream-json`, Claude Code juga menunggu server yang masih tertunda sebelum giliran pertama terlepas dari variabel ini. Ketika Anda meneruskan [`--mcp-config`](/docs/id/cli-reference#cli-flags) secara eksplisit, penantian memiliki tenggat yang lebih lama; lihat entri flag tersebut untuk pengecualian server yang di-cache |

474| `MCP_CONNECT_TIMEOUT_MS` | Berapa lama startup MCP blocking menunggu, dalam milidetik, untuk kelompok koneksi sebelum mengambil snapshot daftar tool (default: 5000). Berlaku ketika `MCP_CONNECTION_NONBLOCKING=0` atau untuk server yang ditandai [`alwaysLoad: true`](/docs/id/mcp#exempt-a-server-from-deferral). Server yang masih tertunda saat tenggat tetap terhubung di latar belakang. Berbeda dari `MCP_TIMEOUT`, yang membatasi percobaan koneksi server individual |476| `MCP_CONNECT_TIMEOUT_MS` | Berapa lama startup MCP blocking menunggu, dalam milidetik, untuk batch koneksi sebelum mengambil snapshot daftar tool (default: 5000). Berlaku ketika `MCP_CONNECTION_NONBLOCKING=0` atau untuk server yang ditandai [`alwaysLoad: true`](/docs/id/mcp#exempt-a-server-from-deferral). Server yang masih tertunda saat tenggat tetap melanjutkan koneksi di latar belakang. Berbeda dari `MCP_TIMEOUT`, yang membatasi upaya koneksi satu server |

475| `MCP_DISCOVERY_CACHE` | Mengaktifkan atau menonaktifkan [cache penemuan MCP](/docs/id/mcp#server-status-detail). Dengan cache aktif, server HTTP atau SSE jarak jauh yang pernah Anda gunakan sebelumnya dapat menampilkan [status `cached`](/docs/id/mcp#server-status-detail), dan Claude Code menghubungkannya pada panggilan tool pertamanya alih-alih saat startup. Cache nonaktif secara default kecuali peluncuran bertahap telah mengaktifkannya untuk akun Anda. Atur ke `1` untuk mengaktifkannya, atau `0` untuk tetap menonaktifkannya bahkan ketika peluncuran telah mengaktifkannya. Sebelum v2.1.238, cache aktif secara default. Status `cached` memerlukan Claude Code v2.1.221 atau lebih baru |477| `MCP_DISCOVERY_CACHE` | Mengaktifkan atau menonaktifkan [discovery cache MCP](/docs/id/mcp#server-status-detail). Dengan cache aktif, server HTTP atau SSE jarak jauh yang pernah Anda gunakan sebelumnya dapat menampilkan [status `cached`](/docs/id/mcp#server-status-detail), dan Claude Code menghubungkannya pada panggilan tool pertamanya alih-alih saat startup. Cache nonaktif secara default kecuali peluncuran bertahap telah mengaktifkannya untuk akun Anda. Atur ke `1` untuk mengaktifkannya, atau `0` untuk tetap menonaktifkannya bahkan ketika peluncuran telah mengaktifkannya. Sebelum v2.1.238, cache aktif secara default. Status `cached` memerlukan Claude Code v2.1.221 atau yang lebih baru |

476| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | Usia maksimum, dalam detik, dari entri [cache penemuan](/docs/id/mcp#server-status-detail) (default: 14400, atau 4 jam). Pada startup di mana entri lebih tua dari itu, Claude Code membuangnya dan menghubungkan server saat startup, seperti yang dilakukan ketika cache nonaktif. Claude Code membatasi nilai pada 7 hari. Sebelum v2.1.238, default adalah 86400, atau 24 jam, dan Claude Code tidak membatasi nilai |478| `MCP_DISCOVERY_CACHE_MAX_STALE_S` | Usia maksimum, dalam detik, dari entri [discovery cache](/docs/id/mcp#server-status-detail) (default: 14400, atau 4 jam). Pada startup di mana entri lebih tua dari itu, Claude Code membuangnya dan menghubungkan server saat startup, seperti yang dilakukannya ketika cache nonaktif. Claude Code membatasi nilainya pada 7 hari. Sebelum v2.1.238, defaultnya adalah 86400, atau 24 jam, dan Claude Code tidak membatasi nilainya |

477| `MCP_DISCOVERY_CACHE_STRIKES` | Pada startup di mana entri [cache penemuan](/docs/id/mcp#server-status-detail) lebih tua dari `MCP_DISCOVERY_CACHE_TTL_S`, Claude Code menyegarkannya di latar belakang. Variabel ini mengatur berapa banyak penyegaran berturut-turut yang boleh gagal sebelum Claude Code membuang entri dan menghubungkan server pada startup berikutnya (default: 1). Naikkan jika koneksi jaringan Anda sesekali terputus, sehingga satu penyegaran yang gagal tidak membuang entri. Memerlukan Claude Code v2.1.238 atau lebih baru |479| `MCP_DISCOVERY_CACHE_STRIKES` | Pada startup di mana entri [discovery cache](/docs/id/mcp#server-status-detail) lebih tua dari `MCP_DISCOVERY_CACHE_TTL_S`, Claude Code menyegarkannya di latar belakang. Variabel ini mengatur berapa kali penyegaran berturut-turut boleh gagal sebelum Claude Code membuang entri dan menghubungkan server pada startup berikutnya (default: 1). Naikkan jika koneksi jaringan Anda sesekali terputus, sehingga satu penyegaran yang gagal tidak membuang entri. Memerlukan Claude Code v2.1.238 atau yang lebih baru |

478| `MCP_DISCOVERY_CACHE_TTL_S` | Detik selama Claude Code menggunakan entri [cache penemuan](/docs/id/mcp#server-status-detail) tanpa menyegarkannya (default: 900). Pada startup di mana entri lebih tua dari itu, Claude Code tetap menggunakannya tetapi menyegarkannya di latar belakang. Setelah entri lebih tua dari `MCP_DISCOVERY_CACHE_MAX_STALE_S`, Claude Code membuangnya. Claude Code membatasi nilai pada `MCP_DISCOVERY_CACHE_MAX_STALE_S`, yaitu 4 jam secara default. Sebelum v2.1.238, Claude Code tidak membatasi nilai |480| `MCP_DISCOVERY_CACHE_TTL_S` | Jumlah detik selama Claude Code menggunakan entri [discovery cache](/docs/id/mcp#server-status-detail) tanpa menyegarkannya (default: 900). Pada startup di mana entri lebih tua dari itu, Claude Code tetap menggunakannya tetapi menyegarkannya di latar belakang. Setelah entri lebih tua dari `MCP_DISCOVERY_CACHE_MAX_STALE_S`, Claude Code membuangnya. Claude Code membatasi nilainya pada `MCP_DISCOVERY_CACHE_MAX_STALE_S`, yaitu 4 jam secara default. Sebelum v2.1.238, Claude Code tidak membatasi nilainya |

479| `MCP_OAUTH_CALLBACK_PORT` | Port tetap untuk callback redirect OAuth, sebagai alternatif untuk `--callback-port` saat menambahkan server MCP dengan [kredensial yang telah dikonfigurasi sebelumnya](/docs/id/mcp#use-pre-configured-oauth-credentials) |481| `MCP_OAUTH_CALLBACK_PORT` | Port tetap untuk callback redirect OAuth, sebagai alternatif untuk `--callback-port` saat menambahkan server MCP dengan [kredensial yang telah dikonfigurasi sebelumnya](/docs/id/mcp#use-pre-configured-oauth-credentials) |

480| `MCP_PROTOCOL_NEGOTIATION` | Hanya pada [runtime klien MCP v2](/docs/id/mcp#mcp-client-runtimes), apakah Claude Code memeriksa server untuk revisi protokol MCP 2026-07-28. Atur `auto` untuk memeriksa server HTTP, konektor claude.ai, dan stdio; server yang tidak menjawab pemeriksaan terhubung pada protokol sebelumnya, seperti yang selalu dilakukan server SSE dan WebSocket. Atur `legacy` untuk melewati pemeriksaan untuk setiap server. Tanpa variabel ini, Claude Code memeriksa server HTTP, dan juga memeriksa server konektor claude.ai dalam sesi di mana Claude Code [mengambil feature flag](#features-that-need-feature-flag-fetching). Nilai lain diabaikan dengan peringatan di log debug. Memerlukan Claude Code v2.1.221 atau lebih baru |482| `MCP_PROTOCOL_NEGOTIATION` | Hanya pada [runtime klien MCP v2](/docs/id/mcp#mcp-client-runtimes), apakah Claude Code memeriksa server untuk revisi protokol MCP 2026-07-28. Atur `auto` untuk memeriksa server HTTP, konektor claude.ai, dan stdio; server yang tidak menjawab pemeriksaan terhubung menggunakan protokol sebelumnya, seperti yang selalu dilakukan server SSE dan WebSocket. Atur `legacy` untuk melewati pemeriksaan untuk setiap server. Tanpa variabel ini, Claude Code memeriksa server HTTP, dan juga memeriksa server konektor claude.ai dalam sesi di mana Claude Code [mengambil feature flag](#features-that-need-feature-flag-fetching). Nilai lain apa pun diabaikan dengan peringatan di log debug. Memerlukan Claude Code v2.1.221 atau yang lebih baru |

481| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimum server MCP jarak jauh (HTTP/SSE) yang dihubungkan secara paralel selama startup (default: 20) |483| `MCP_REMOTE_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimum server MCP jarak jauh (HTTP/SSE) yang dihubungkan secara paralel selama startup (default: 20) |

482| `MCP_SDK_GENERATION` | Tetapkan [runtime klien MCP](/docs/id/mcp#mcp-client-runtimes) yang digunakan proses ini untuk terhubung ke server MCP: `v1`, dibangun di atas MCP TypeScript SDK 1.x, atau `v2`, dibangun di atas [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/). Tanpa variabel ini, Claude Code menggunakan v2, dimulai dengan versi yang tercantum di bagian tersebut. Pada Claude Code v2.1.221 atau lebih baru, runtime v2 memeriksa issuer yang dikembalikan server OAuth MCP dalam respons otorisasinya dan menggagalkan proses masuk dengan error yang diawali `Issuer mismatch in authorization response` ketika tidak cocok. Runtime v1 tidak menjalankan pemeriksaan ini. Jika Anda mengatur nilai yang tidak dikenali, Claude Code mengabaikannya dan menulis peringatan ke log debug. Claude Code membaca nilai sekali per proses. Memerlukan Claude Code v2.1.218 atau lebih baru |484| `MCP_SDK_GENERATION` | Mengunci [runtime klien MCP](/docs/id/mcp#mcp-client-runtimes) yang digunakan proses ini untuk terhubung ke server MCP: `v1`, dibangun di atas MCP TypeScript SDK 1.x, atau `v2`, dibangun di atas [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/). Tanpa variabel ini, Claude Code menggunakan v2, mulai dari versi yang tercantum di bagian tersebut. Pada Claude Code v2.1.221 atau yang lebih baru, runtime v2 memeriksa issuer yang dikembalikan server OAuth MCP dalam respons otorisasinya dan menggagalkan proses masuk dengan error yang diawali `Issuer mismatch in authorization response` ketika tidak cocok. Runtime v1 tidak menjalankan pemeriksaan ini. Jika Anda mengatur nilai yang tidak dikenali, Claude Code mengabaikannya dan menulis peringatan ke log debug. Claude Code membaca nilainya sekali per proses. Memerlukan Claude Code v2.1.218 atau yang lebih baru |

483| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimum server MCP lokal (stdio) yang dihubungkan secara paralel selama startup (default: 3) |485| `MCP_SERVER_CONNECTION_BATCH_SIZE` | Jumlah maksimum server MCP lokal (stdio) yang dihubungkan secara paralel selama startup (default: 3) |

484| `MCP_TIMEOUT` | Timeout dalam milidetik untuk startup server MCP (default: 30000, atau 30 detik) |486| `MCP_TIMEOUT` | Timeout dalam milidetik untuk startup server MCP (default: 30000, atau 30 detik) |

485| `MCP_TOOL_TIMEOUT` | Timeout dalam milidetik untuk eksekusi tool MCP (default: 100000000, sekitar 28 jam). Untuk server HTTP, SSE, atau konektor claude.ai, setiap permintaan juga mengalami timeout setelah 60 detik secara default; atur variabel ini, atau `timeout` per server, di atas 60000 untuk menaikkan batas per permintaan tersebut. Nilai yang lebih rendah tetap memperpendek timeout eksekusi tool keseluruhan tetapi membiarkan batas per permintaan pada 60 detik. Server stdio dan WebSocket tidak memiliki timer per permintaan. Field `timeout` per server di `.mcp.json` menimpa ini untuk server tersebut. `timeout` per server minimal 1000 juga mengatur jendela idle minimum untuk panggilan tool server tersebut, sehingga `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` tidak pernah membatalkannya lebih cepat; batas bawah ini memerlukan Claude Code v2.1.203 atau lebih baru. Untuk variabel env, nilai di bawah 1000 dibulatkan ke satu detik; untuk field per server, nilai di bawah 1000 diabaikan |487| `MCP_TOOL_TIMEOUT` | Timeout dalam milidetik untuk eksekusi tool MCP (default: 100000000, sekitar 28 jam). Untuk server HTTP, SSE, atau konektor claude.ai, setiap permintaan juga mengalami timeout setelah 60 detik secara default; atur variabel ini, atau `timeout` per server, di atas 60000 untuk menaikkan batas per permintaan tersebut. Nilai yang lebih rendah tetap memperpendek timeout eksekusi tool secara keseluruhan tetapi membiarkan batas per permintaan pada 60 detik. Server stdio dan WebSocket tidak memiliki timer per permintaan. Field `timeout` per server di `.mcp.json` menimpa ini untuk server tersebut. `timeout` per server yang bernilai setidaknya 1000 juga mengatur jendela idle minimum untuk panggilan tool server tersebut, sehingga `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` tidak pernah membatalkannya lebih cepat; batas bawah ini memerlukan Claude Code v2.1.203 atau yang lebih baru. Untuk variabel env, nilai di bawah 1000 dibulatkan ke satu detik; untuk field per server, nilai di bawah 1000 diabaikan |

486| `NO_PROXY` | Daftar domain dan IP yang permintaannya akan dikirim langsung, melewati proxy |488| `NO_PROXY` | Daftar domain dan IP yang permintaannya akan dikirim secara langsung, melewati proxy |

487| `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` | Batas standar OpenTelemetry SDK pada panjang nilai atribut. Claude Code membatasi atribut telemetri yang membawa konten pada nilai yang lebih kecil antara ini dan `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH`, sehingga penanda pemotongan tetap dalam batas SDK. Claude Code membaca varian `OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT` dan `OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT` dengan cara yang sama, dan nilai terkecil yang diatur berlaku untuk semua sinyal. Memerlukan Claude Code v2.1.214 atau lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage#common-configuration-variables) |489| `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` | Batas standar OpenTelemetry SDK untuk panjang nilai atribut. Claude Code membatasi atribut telemetri yang memuat konten pada nilai yang lebih kecil antara ini dan `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH`, sehingga penanda pemotongan tetap berada dalam batas SDK. Claude Code membaca varian `OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT` dan `OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT` dengan cara yang sama, dan nilai terkecil yang diatur berlaku untuk semua sinyal. Memerlukan Claude Code v2.1.214 atau yang lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage#common-configuration-variables) |

488| `OTEL_LOG_ASSISTANT_RESPONSES` | Atur ke `1` untuk menyertakan teks respons model pada event log OpenTelemetry `assistant_response`. Ketika tidak diatur, Claude Code menggunakan nilai `OTEL_LOG_USER_PROMPTS` sebagai gantinya. Atur ke `0` untuk tetap menyamarkan respons bahkan ketika `OTEL_LOG_USER_PROMPTS` diatur. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Memerlukan Claude Code v2.1.193 atau lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage#assistant-response-event) |490| `OTEL_LOG_ASSISTANT_RESPONSES` | Atur ke `1` untuk menyertakan teks respons model pada event log OpenTelemetry `assistant_response`. Ketika tidak diatur, Claude Code menggunakan nilai `OTEL_LOG_USER_PROMPTS` sebagai gantinya. Atur ke `0` agar respons tetap disamarkan bahkan ketika `OTEL_LOG_USER_PROMPTS` diatur. Atur di shell Anda, pengaturan pengguna, atau pengaturan terkelola. Diabaikan dalam [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Memerlukan Claude Code v2.1.193 atau yang lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage#assistant-response-event) |

489| `OTEL_LOG_MANAGED_SETTINGS` | Atur ke `1` untuk menambahkan pengaturan terkelola yang telah disamarkan, dan digest SHA-256 dari pengaturan sebelum penyamaran, ke event log OpenTelemetry `managed_settings_resolved`. Nonaktif secara default. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda; nilai di pengaturan proyek atau lokal tidak mengaktifkannya. Memerlukan Claude Code v2.1.274 atau lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage#managed-settings-resolved-event) |491| `OTEL_LOG_MANAGED_SETTINGS` | Atur ke `1` untuk menambahkan pengaturan terkelola yang telah disamarkan, dan digest SHA-256 dari pengaturan sebelum penyamaran, ke event log OpenTelemetry `managed_settings_resolved`. Dinonaktifkan secara default. Atur di shell Anda, pengaturan pengguna, atau pengaturan terkelola; nilai di pengaturan proyek atau lokal tidak mengaktifkannya. Memerlukan Claude Code v2.1.274 atau yang lebih baru. Lihat [Pemantauan](/docs/id/monitoring-usage#managed-settings-resolved-event) |

490| `OTEL_LOG_RAW_API_BODIES` | Memancarkan JSON permintaan dan respons Anthropic Messages API sebagai event log `api_request_body` / `api_response_body`. Atur ke `1` untuk body inline yang dipotong pada batas konten, atau `file:<dir>` untuk menulis body yang tidak dipotong ke disk dan memancarkan path `body_ref` sebagai gantinya. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` mengonfigurasi batas konten, 60 KB secara default. Nonaktif secara default; body menyertakan seluruh riwayat percakapan. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Lihat [Pemantauan](/docs/id/monitoring-usage#api-request-body-event) |492| `OTEL_LOG_RAW_API_BODIES` | Memancarkan JSON permintaan dan respons Anthropic Messages API sebagai event log `api_request_body` / `api_response_body`. Atur ke `1` untuk body inline yang dipotong pada batas konten, atau `file:<dir>` untuk menulis body yang tidak dipotong ke disk dan memancarkan path `body_ref` sebagai gantinya. `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` mengonfigurasi batas konten, 60 KB secara default. Dinonaktifkan secara default; body menyertakan seluruh riwayat percakapan. Atur di shell Anda, pengaturan pengguna, atau pengaturan terkelola. Diabaikan dalam [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Lihat [Pemantauan](/docs/id/monitoring-usage#api-request-body-event) |

491| `OTEL_LOG_TOOL_CONTENT` | Atur ke `1` untuk menyertakan konten tool dalam event span OpenTelemetry `tool.output`. Atribut span membawa konten tool di bawah [gerbang kendalinya sendiri](/docs/id/monitoring-usage#new-context-gates). Memerlukan [tracing](/docs/id/monitoring-usage#traces-beta). Nonaktif secara default untuk melindungi data sensitif. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai mati yang dijelaskan di bagian tersebut. Lihat [Pemantauan](/docs/id/monitoring-usage#tool-output-span-event) |493| `OTEL_LOG_TOOL_CONTENT` | Atur ke `1` untuk menyertakan konten tool dalam event span OpenTelemetry `tool.output`. Atribut span membawa konten tool di bawah [gerbang kontrolnya sendiri](/docs/id/monitoring-usage#new-context-gates). Memerlukan [tracing](/docs/id/monitoring-usage#traces-beta). Dinonaktifkan secara default untuk melindungi data sensitif. Atur di shell Anda, pengaturan pengguna, atau pengaturan terkelola. Diabaikan dalam [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai nonaktif yang dijelaskan di bagian tersebut. Lihat [Pemantauan](/docs/id/monitoring-usage#tool-output-span-event) |

492| `OTEL_LOG_TOOL_DETAILS` | Atur ke `1` untuk menyertakan argumen input tool; nama server MCP; nama workflow yang dibuat pengguna; string error mentah pada kegagalan tool; `category` penolakan pada event `api_refusal`; nama agent, skill, plugin, dan server MCP yang sebenarnya pada [metrik biaya dan token](/docs/id/monitoring-usage#cost-counter); serta detail tool lainnya dalam metrik, trace, dan log OpenTelemetry. Nonaktif secara default untuk melindungi PII. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai mati yang dijelaskan di bagian tersebut. Lihat [Pemantauan](/docs/id/monitoring-usage) |494| `OTEL_LOG_TOOL_DETAILS` | Atur ke `1` untuk menyertakan argumen input tool; nama server MCP; nama workflow yang dibuat pengguna; string error mentah pada kegagalan tool; `category` penolakan pada event `api_refusal`; nama agent, skill, plugin, dan server MCP yang sebenarnya pada [metrik biaya dan token](/docs/id/monitoring-usage#cost-counter); serta detail tool lainnya dalam metrik, trace, dan log OpenTelemetry. Dinonaktifkan secara default untuk melindungi PII. Atur di shell Anda, pengaturan pengguna, atau pengaturan terkelola. Diabaikan dalam [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai nonaktif yang dijelaskan di bagian tersebut. Lihat [Pemantauan](/docs/id/monitoring-usage) |

493| `OTEL_LOG_USER_PROMPTS` | Atur ke `1` untuk menyertakan teks prompt pengguna dalam trace dan log OpenTelemetry. Nonaktif secara default (prompt disamarkan). Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai mati yang dijelaskan di bagian tersebut. Lihat [Pemantauan](/docs/id/monitoring-usage) |495| `OTEL_LOG_USER_PROMPTS` | Atur ke `1` untuk menyertakan teks prompt pengguna dalam trace dan log OpenTelemetry. Dinonaktifkan secara default (prompt disamarkan). Atur di shell Anda, pengaturan pengguna, atau pengaturan terkelola. Diabaikan dalam [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai nonaktif yang dijelaskan di bagian tersebut. Lihat [Pemantauan](/docs/id/monitoring-usage) |

494| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Atur ke `false` untuk mengecualikan UUID akun dari atribut metrik (default: disertakan). Lihat [Pemantauan](/docs/id/monitoring-usage) |496| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Atur ke `false` untuk mengecualikan UUID akun dari atribut metrik (default: disertakan). Lihat [Pemantauan](/docs/id/monitoring-usage) |

495| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Atur ke `true` untuk menyertakan entrypoint sesi dalam atribut metrik (default: dikecualikan). Ditambahkan di v2.1.152. Lihat [Pemantauan](/docs/id/monitoring-usage) |497| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Atur ke `true` untuk menyertakan entrypoint sesi dalam atribut metrik (default: dikecualikan). Ditambahkan di v2.1.152. Lihat [Pemantauan](/docs/id/monitoring-usage) |

496| `OTEL_METRICS_INCLUDE_REPOSITORY` | Atur ke `true` untuk menandai metrik dan event OpenTelemetry dengan atribut `vcs.*` yang mengidentifikasi repositori sesi (default: dikecualikan). Memerlukan Claude Code v2.1.269 atau lebih baru. Lihat [Atribut repositori](/docs/id/monitoring-usage#repository-attributes) |498| `OTEL_METRICS_INCLUDE_REPOSITORY` | Atur ke `true` untuk menandai metrik dan event OpenTelemetry dengan atribut `vcs.*` yang mengidentifikasi repositori sesi (default: dikecualikan). Memerlukan Claude Code v2.1.269 atau yang lebih baru. Lihat [Atribut repositori](/docs/id/monitoring-usage#repository-attributes) |

497| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Sejak v2.1.161, Claude Code melampirkan kunci `OTEL_RESOURCE_ATTRIBUTES` ke label datapoint metrik. Atur ke `false` untuk mengecualikannya (default: disertakan). Lihat [Pemantauan](/docs/id/monitoring-usage#multi-team-organization-support) |499| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Mulai v2.1.161, Claude Code melampirkan kunci `OTEL_RESOURCE_ATTRIBUTES` ke label datapoint metrik. Atur ke `false` untuk mengecualikannya (default: disertakan). Lihat [Pemantauan](/docs/id/monitoring-usage#multi-team-organization-support) |

498| `OTEL_METRICS_INCLUDE_SESSION_ID` | Atur ke `false` untuk mengecualikan ID sesi dari atribut metrik (default: disertakan). Lihat [Pemantauan](/docs/id/monitoring-usage) |500| `OTEL_METRICS_INCLUDE_SESSION_ID` | Atur ke `false` untuk mengecualikan ID sesi dari atribut metrik (default: disertakan). Lihat [Pemantauan](/docs/id/monitoring-usage) |

499| `OTEL_METRICS_INCLUDE_VERSION` | Atur ke `true` untuk menyertakan versi Claude Code dalam atribut metrik (default: dikecualikan). Lihat [Pemantauan](/docs/id/monitoring-usage) |501| `OTEL_METRICS_INCLUDE_VERSION` | Atur ke `true` untuk menyertakan versi Claude Code dalam atribut metrik (default: dikecualikan). Lihat [Pemantauan](/docs/id/monitoring-usage) |

500| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Menimpa anggaran karakter untuk metadata skill yang ditampilkan ke [tool Skill](/docs/id/skills#control-who-invokes-a-skill). Anggaran diskalakan secara dinamis pada 1% dari context window, dengan fallback 8.000 karakter. Nama lama dipertahankan untuk kompatibilitas mundur |502| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Menimpa anggaran karakter untuk metadata skill yang ditampilkan ke [tool Skill](/docs/id/skills#control-who-invokes-a-skill). Anggaran diskalakan secara dinamis pada 1% dari context window, dengan fallback 8.000 karakter. Nama lama dipertahankan untuk kompatibilitas mundur |

501| `TASK_MAX_OUTPUT_LENGTH` | Dihapus di v2.1.277 dan sekarang tidak berpengaruh, bersama dengan tool `TaskOutput` yang ukurannya diaturnya. Sebelumnya mengatur jumlah maksimum karakter output [tugas latar belakang](/docs/id/tools-reference#background-commands) yang disimpan oleh tool `TaskOutput`. Claude membaca file output tugas latar belakang dengan `Read` sebagai gantinya |503| `TASK_MAX_OUTPUT_LENGTH` | Dihapus di v2.1.277 dan sekarang tidak berpengaruh, bersama dengan tool `TaskOutput` yang ukurannya diatur olehnya. Sebelumnya mengatur jumlah maksimum karakter output [tugas latar belakang](/docs/id/tools-reference#background-commands) yang disimpan oleh tool `TaskOutput`. Claude membaca file output tugas latar belakang dengan `Read` sebagai gantinya |

502| `USE_BUILTIN_RIPGREP` | Atur ke `0` untuk menggunakan `rg` yang terinstal di sistem alih-alih `rg` yang disertakan dengan Claude Code |504| `USE_BUILTIN_RIPGREP` | Atur ke `0` untuk menggunakan `rg` yang terinstal di sistem alih-alih `rg` yang disertakan dengan Claude Code |

503| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Menimpa region untuk Claude 3.5 Haiku saat menggunakan Google Cloud's Agent Platform |505| `VERTEX_REGION_CLAUDE_3_5_HAIKU` | Menimpa region untuk Claude 3.5 Haiku saat menggunakan Google Cloud's Agent Platform |

504| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Menimpa region untuk Claude 3.5 Sonnet saat menggunakan Google Cloud's Agent Platform |506| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Menimpa region untuk Claude 3.5 Sonnet saat menggunakan Google Cloud's Agent Platform |


522 524 

523Variabel exporter OpenTelemetry standar (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES`, dan varian khusus sinyal) juga didukung. Lihat [Pemantauan](/docs/id/monitoring-usage) untuk detail konfigurasi.525Variabel exporter OpenTelemetry standar (`OTEL_METRICS_EXPORTER`, `OTEL_LOGS_EXPORTER`, `OTEL_EXPORTER_OTLP_ENDPOINT`, `OTEL_EXPORTER_OTLP_PROTOCOL`, `OTEL_EXPORTER_OTLP_HEADERS`, `OTEL_METRIC_EXPORT_INTERVAL`, `OTEL_RESOURCE_ATTRIBUTES`, dan varian khusus sinyal) juga didukung. Lihat [Pemantauan](/docs/id/monitoring-usage) untuk detail konfigurasi.

524 526 

525Atur `CLAUDE_CODE_ENABLE_TELEMETRY` dan variabel OpenTelemetry yang mengaktifkan ekspor, memilih tujuannya, atau menangkap konten di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Claude Code [mengabaikannya di pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai mati yang dijelaskan di bagian tersebut. `OTEL_RESOURCE_ATTRIBUTES` serta variabel interval ekspor, timeout, dan kompresi, seperti `OTEL_METRIC_EXPORT_INTERVAL`, tetap berlaku dari pengaturan proyek dan lokal.527Atur `CLAUDE_CODE_ENABLE_TELEMETRY` dan variabel OpenTelemetry yang mengaktifkan ekspor, memilih tujuannya, atau menangkap konten di shell Anda, pengaturan pengguna, atau pengaturan terkelola. Claude Code [mengabaikannya dalam pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai nonaktif yang dijelaskan di bagian tersebut. `OTEL_RESOURCE_ATTRIBUTES` serta variabel interval ekspor, timeout, dan kompresi, seperti `OTEL_METRIC_EXPORT_INTERVAL`, tetap berlaku dari pengaturan proyek dan lokal.

526 528 

527<h2 id="features-that-need-feature-flag-fetching">529<h2 id="features-that-need-feature-flag-fetching">

528 Fitur yang memerlukan pengambilan feature-flag530 Fitur yang memerlukan pengambilan feature-flag

errors.md +52 −32

Details

187| `<model>'s safeguards flagged this message` | [Request errors](#safety-measures-flagged-a-cybersecurity-topic) |187| `<model>'s safeguards flagged this message` | [Request errors](#safety-measures-flagged-a-cybersecurity-topic) |

188| `<model>'s safeguards flagged this session` | [Request errors](#safety-measures-flagged-a-cybersecurity-topic) |188| `<model>'s safeguards flagged this session` | [Request errors](#safety-measures-flagged-a-cybersecurity-topic) |

189| `<model> has safety measures that flagged this message for a cybersecurity topic` | [Request errors](#safety-measures-flagged-a-cybersecurity-topic) |189| `<model> has safety measures that flagged this message for a cybersecurity topic` | [Request errors](#safety-measures-flagged-a-cybersecurity-topic) |

190| `API Error: Output blocked by content filtering policy` | [Request errors](#output-blocked-by-content-filtering-policy) |

190| `Installation was killed before it could finish (exit code 137)` | [Installation errors](#installation-was-killed-before-it-could-finish) |191| `Installation was killed before it could finish (exit code 137)` | [Installation errors](#installation-was-killed-before-it-could-finish) |

191| `The connection dropped while downloading the update` | [Installation errors](#the-connection-dropped-while-downloading-the-update) |192| `The connection dropped while downloading the update` | [Installation errors](#the-connection-dropped-while-downloading-the-update) |

192| `Download timed out: exceeded the total deadline` | [Installation errors](#the-connection-dropped-while-downloading-the-update) |193| `Download timed out: exceeded the total deadline` | [Installation errors](#the-connection-dropped-while-downloading-the-update) |


402* [Amazon Bedrock streaming response dengan unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), karena gateway atau proxy yang menulis ulang respons akan menulis ulang retry dengan cara yang sama. Memerlukan Claude Code v2.1.208 atau lebih baru.403* [Amazon Bedrock streaming response dengan unexpected content-type](#bedrock-streaming-response-has-an-unexpected-content-type), karena gateway atau proxy yang menulis ulang respons akan menulis ulang retry dengan cara yang sama. Memerlukan Claude Code v2.1.208 atau lebih baru.

403* Non-streaming retry dari failed streaming request yang mendapat success status tetapi [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code mengakhiri giliran dengan kesalahan itu.404* Non-streaming retry dari failed streaming request yang mendapat success status tetapi [no Claude API message in the body](#api-returned-an-empty-or-malformed-response). Claude Code mengakhiri giliran dengan kesalahan itu.

404* Permintaan yang policy check organisasi Anda tolak, yang muncul sebagai baris `API Error:` yang membawa pesan penolakan. Administrator organisasi Anda menyiapkan check dengan [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), fitur Claude Enterprise, dan pesan berakhir dengan instruksi yang mereka konfigurasi, atau secara default memberi tahu Anda untuk menghubungi mereka. Claude Code tidak mengirim kembali permintaan yang ditolak ke model yang sama atau ke [fallback model](/docs/id/model-config#fallback-model-chains), karena penolakan adalah tentang konten permintaan daripada model. Sebelum v2.1.239, Claude Code dapat mengirim kembali permintaan yang ditolak, tanpa streaming atau pada fallback model yang dikonfigurasi, sebelum menampilkan penolakan kepada Anda.405* Permintaan yang policy check organisasi Anda tolak, yang muncul sebagai baris `API Error:` yang membawa pesan penolakan. Administrator organisasi Anda menyiapkan check dengan [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks), fitur Claude Enterprise, dan pesan berakhir dengan instruksi yang mereka konfigurasi, atau secara default memberi tahu Anda untuk menghubungi mereka. Claude Code tidak mengirim kembali permintaan yang ditolak ke model yang sama atau ke [fallback model](/docs/id/model-config#fallback-model-chains), karena penolakan adalah tentang konten permintaan daripada model. Sebelum v2.1.239, Claude Code dapat mengirim kembali permintaan yang ditolak, tanpa streaming atau pada fallback model yang dikonfigurasi, sebelum menampilkan penolakan kepada Anda.

406* Respons yang diblokir oleh filter konten output API. Claude Code langsung menampilkan [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) dan tidak mencoba ulang atau mengirim kembali permintaan tersebut.

405 407 

406<h3 id="what-you-see-while-claude-code-retries-or-waits">408<h3 id="what-you-see-while-claude-code-retries-or-waits">

407 Apa yang Anda lihat saat Claude Code mencoba ulang atau menunggu409 Apa yang Anda lihat saat Claude Code mencoba ulang atau menunggu


432| [`CLAUDE_CODE_MAX_RETRIES`](/docs/id/env-vars) | 10 | Jumlah percobaan retry. Dibatasi pada 15 mulai v2.1.186; mulai v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` menaikkan default dan menghapus batas. Turunkan untuk menampilkan kegagalan lebih cepat dalam script. |434| [`CLAUDE_CODE_MAX_RETRIES`](/docs/id/env-vars) | 10 | Jumlah percobaan retry. Dibatasi pada 15 mulai v2.1.186; mulai v2.1.199 `CLAUDE_CODE_RETRY_WATCHDOG` menaikkan default dan menghapus batas. Turunkan untuk menampilkan kegagalan lebih cepat dalam script. |

433| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/id/env-vars) | unset | Atur ke `1` dalam sesi tanpa pengawasan seperti CI jobs untuk mencoba ulang `429` dan `529` capacity errors tanpa batas bukan gagal setelah `CLAUDE_CODE_MAX_RETRIES` percobaan. Claude Code gagal sekaligus ketika standard-speed request mendapat `429` yang melaporkan spend limit atau kredit penggunaan yang habis, bahkan satu dari [gateway spend cap](#spend-limit-reached) yang reset pada jadwal. Sebelum v2.1.239, watchdog mencoba ulang ini tanpa batas. Untuk fast mode requests, lihat [Handle rate limits](/docs/id/fast-mode#handle-rate-limits). Pada v2.1.199 atau lebih baru itu juga menaikkan default retry count untuk transient errors lainnya, seperti server errors, timeouts, dan dropped connections, menjadi 300, kira-kira tiga jam backoff, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda menetapkan variabel itu secara eksplisit. |435| [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/id/env-vars) | unset | Atur ke `1` dalam sesi tanpa pengawasan seperti CI jobs untuk mencoba ulang `429` dan `529` capacity errors tanpa batas bukan gagal setelah `CLAUDE_CODE_MAX_RETRIES` percobaan. Claude Code gagal sekaligus ketika standard-speed request mendapat `429` yang melaporkan spend limit atau kredit penggunaan yang habis, bahkan satu dari [gateway spend cap](#spend-limit-reached) yang reset pada jadwal. Sebelum v2.1.239, watchdog mencoba ulang ini tanpa batas. Untuk fast mode requests, lihat [Handle rate limits](/docs/id/fast-mode#handle-rate-limits). Pada v2.1.199 atau lebih baru itu juga menaikkan default retry count untuk transient errors lainnya, seperti server errors, timeouts, dan dropped connections, menjadi 300, kira-kira tiga jam backoff, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda menetapkan variabel itu secara eksplisit. |

434| [`API_TIMEOUT_MS`](/docs/id/env-vars) | 600000 | Per-request timeout dalam milliseconds. Naikkan untuk jaringan lambat atau proxy. Ini juga membatasi berapa lama Claude Code menunggu response headers, dijelaskan dalam [No response from API](#no-response-from-api). |436| [`API_TIMEOUT_MS`](/docs/id/env-vars) | 600000 | Per-request timeout dalam milliseconds. Naikkan untuk jaringan lambat atau proxy. Ini juga membatasi berapa lama Claude Code menunggu response headers, dijelaskan dalam [No response from API](#no-response-from-api). |

437| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/id/env-vars) | unset | Batas pengiriman ulang [permintaan non-streaming](#streaming-response-ended-before-any-complete-data-was-received) yang mengalami timeout. Saat batas tercapai, permintaan gagal. Respons dari Claude yang membutuhkan waktu lebih lama dari timeout untuk dihasilkan akan mengalami timeout lagi pada setiap pengiriman ulang, jadi tetapkan angka rendah seperti `0` agar gagal lebih cepat. Setiap percobaan non-streaming mengalami timeout setelah 300 detik dalam sesi lokal, atau setelah `API_TIMEOUT_MS` ketika Anda menetapkan nilai positif. Memerlukan Claude Code v2.1.285 atau lebih baru. |

435| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/id/env-vars) | unset | Deadline dalam milliseconds untuk first response byte dari streaming request. Memerlukan Claude Code v2.1.242 atau lebih baru. Untuk bagaimana Claude Code memilih deadline ketika ini unset, lihat [No response from API](#no-response-from-api). |438| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/id/env-vars) | unset | Deadline dalam milliseconds untuk first response byte dari streaming request. Memerlukan Claude Code v2.1.242 atau lebih baru. Untuk bagaimana Claude Code memilih deadline ketika ini unset, lihat [No response from API](#no-response-from-api). |

436 439 

437<h2 id="server-errors">440<h2 id="server-errors">


1866* Jika Anda berada di belakang proxy perusahaan, atur `HTTPS_PROXY` sebelum meluncurkan Claude Code dan lihat [Konfigurasi jaringan](/docs/id/network-config)1869* Jika Anda berada di belakang proxy perusahaan, atur `HTTPS_PROXY` sebelum meluncurkan Claude Code dan lihat [Konfigurasi jaringan](/docs/id/network-config)

1867* Jika Anda merutekan melalui gateway LLM atau relay, atur [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) ke alamatnya. Lihat [Hubungkan Claude Code ke gateway LLM](/docs/id/llm-gateway-connect) untuk pengaturan.1870* Jika Anda merutekan melalui gateway LLM atau relay, atur [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) ke alamatnya. Lihat [Hubungkan Claude Code ke gateway LLM](/docs/id/llm-gateway-connect) untuk pengaturan.

1868* Pastikan firewall Anda memungkinkan host yang tercantum dalam [Persyaratan akses jaringan](/docs/id/network-config#network-access-requirements)1871* Pastikan firewall Anda memungkinkan host yang tercantum dalam [Persyaratan akses jaringan](/docs/id/network-config#network-access-requirements)

1869* Kegagalan intermiten [diulang secara otomatis](#automatic-retries); kegagalan persisten menunjukkan masalah jaringan lokal1872* Kegagalan intermiten [dicoba ulang secara otomatis](#automatic-retries); kegagalan persisten menunjukkan masalah jaringan lokal

1870 1873 

1871Jika `curl` berhasil tetapi Claude Code masih gagal, penyebabnya biasanya sesuatu antara runtime dan jaringan daripada jaringan itu sendiri:1874Jika `curl` berhasil tetapi Claude Code masih gagal, penyebabnya biasanya sesuatu antara runtime dan jaringan daripada jaringan itu sendiri:

1872 1875 


1888A proxy is configured via HTTPS_PROXY. Check that it allows connections to the host above.1891A proxy is configured via HTTPS_PROXY. Check that it allows connections to the host above.

1889```1892```

1890 1893 

1891Claude Code mengirim pemeriksaan melalui [konfigurasi proxy](/docs/id/network-config) yang sama dengan permintaan API dan memberikan setiap probe 10 detik. Ketika probe yang gagal melewati proxy, pesan menamai variabel lingkungan yang mengonfigurasinya, seperti `HTTPS_PROXY`. Sebelum v2.1.222, pemeriksaan menggunakan transport proxy yang berbeda tanpa batas waktu: di belakang URL proxy dengan skema `https://`, dapat macet pada `Checking connectivity...` tanpa batas dan kemudian gagal meskipun permintaan API melalui proxy yang sama berhasil.1894Claude Code mengirim pemeriksaan melalui [konfigurasi proxy](/docs/id/network-config) yang sama dengan permintaan API dan memberikan setiap probe 10 detik. Ketika probe yang gagal melewati proxy, pesan menamai environment variable yang mengonfigurasinya, seperti `HTTPS_PROXY`. Sebelum v2.1.222, pemeriksaan menggunakan transport proxy yang berbeda tanpa timeout: di belakang URL proxy dengan skema `https://`, dapat macet pada `Checking connectivity...` tanpa batas dan kemudian gagal meskipun permintaan API melalui proxy yang sama berhasil.

1892 1895 

1893Claude Code melewati pemeriksaan ini ketika [file pengaturan terkelola, kebijakan MDM, atau pembantu kebijakan](/docs/id/managed-settings) menetapkan [`forceLoginMethod`](/docs/id/settings-reference#forceloginmethod) ke `"gateway"`, atau menetapkan [`forceLoginGatewayUrl`](/docs/id/settings-reference#forcelogingatewayurl) tanpa `forceLoginMethod`. Dengan salah satu konfigurasi, Claude Code membuka langkah masuk di layar **Cloud gateway** daripada metode masuk Anthropic. Claude Code juga melewati pemeriksaan ketika sumber pengaturan terkelola di mesin ada tetapi tidak dapat dibaca, karena sumber itu mungkin menyimpan konfigurasi gateway. Sebelum v2.1.247, Claude Code menjalankan pemeriksaan di bawah konfigurasi ini juga, dan keluar dengan kesalahan ini ketika titik akhir Anthropic tidak dapat dijangkau.1896Claude Code melewati pemeriksaan ini ketika [file pengaturan terkelola, kebijakan MDM, atau pembantu kebijakan](/docs/id/managed-settings) menetapkan [`forceLoginMethod`](/docs/id/settings-reference#forceloginmethod) ke `"gateway"`, atau menetapkan [`forceLoginGatewayUrl`](/docs/id/settings-reference#forcelogingatewayurl) tanpa `forceLoginMethod`. Dengan salah satu konfigurasi, Claude Code membuka langkah masuk di layar **Cloud gateway** daripada metode masuk Anthropic. Claude Code juga melewati pemeriksaan ketika sumber pengaturan terkelola di mesin ada tetapi tidak dapat dibaca, karena sumber itu mungkin menyimpan konfigurasi gateway. Sebelum v2.1.247, Claude Code menjalankan pemeriksaan di bawah konfigurasi ini juga, dan keluar dengan kesalahan ini ketika endpoint Anthropic tidak dapat dijangkau.

1894 1897 

1895**Yang harus dilakukan:**1898**Yang harus dilakukan:**

1896 1899 


1904 1907 

1905`Socket is closed` berarti koneksi yang membawa respons streaming ditutup sementara respons masih tiba. Penyebab paling umum adalah proxy perusahaan di Windows yang menjatuhkan terowongan yang sudah terbentuk di tengah respons.1908`Socket is closed` berarti koneksi yang membawa respons streaming ditutup sementara respons masih tiba. Penyebab paling umum adalah proxy perusahaan di Windows yang menjatuhkan terowongan yang sudah terbentuk di tengah respons.

1906 1909 

1907Tergantung seberapa jauh respons telah berkembang, Claude Code mengulang permintaan, menyimpan apa yang Claude hasilkan, atau mengakhiri giliran. Lihat [Pengulangan otomatis](#automatic-retries).1910Tergantung seberapa jauh respons telah berkembang, Claude Code mencoba ulang permintaan, menyimpan apa yang Claude hasilkan, atau mengakhiri giliran. Lihat [Retry otomatis](#automatic-retries).

1908 1911 

1909Sebelum v2.1.214, Claude Code tidak mengulang kegagalan ini, dan giliran berhenti dengan kesalahan yang berisi `Socket is closed`.1912Sebelum v2.1.214, Claude Code tidak mencoba ulang kegagalan ini, dan giliran berhenti dengan kesalahan yang berisi `Socket is closed`.

1910 1913 

1911**Yang harus dilakukan:**1914**Yang harus dilakukan:**

1912 1915 


1917 API returned an empty or malformed response1920 API returned an empty or malformed response

1918</h3>1921</h3>

1919 1922 

1920Claude Code menampilkan kesalahan ini ketika pengulangan non-streaming dari permintaan streaming yang gagal mendapatkan status kesuksesan HTTP tetapi isi bukan pesan API Claude: biasanya halaman kesalahan HTML atau masuk, isi kosong, atau JSON dalam format lain. Proxy, gateway, atau halaman masuk jaringan yang menjawab di tempat API adalah sumber biasa. Claude Code tidak mengulang permintaan, dan giliran berakhir dengan kesalahan ini.1923Claude Code menampilkan kesalahan ini ketika retry non-streaming dari permintaan streaming yang gagal mendapatkan status kesuksesan HTTP tetapi isi bukan pesan API Claude: biasanya halaman kesalahan HTML atau masuk, isi kosong, atau JSON dalam format lain. Proxy, gateway, atau halaman masuk jaringan yang menjawab di tempat API adalah sumber biasa. Claude Code tidak mencoba ulang permintaan, dan giliran berakhir dengan kesalahan ini.

1921 1924 

1922```text theme={null}1925```text theme={null}

1923API returned an empty or malformed response (HTTP 200) — check for a proxy or gateway intercepting the request.1926API returned an empty or malformed response (HTTP 200) — check for a proxy or gateway intercepting the request.


1926Setelah pembukaan itu, pesan melaporkan apa yang kembali dan permintaan mana yang gagal:1929Setelah pembukaan itu, pesan melaporkan apa yang kembali dan permintaan mana yang gagal:

1927 1930 

1928* Klausa `Response:` dengan tipe konten, jenis isi, seperti `body is an HTML page` atau `empty body`, ukurannya dalam byte, dan apakah respons membawa id permintaan Anthropic. Ketika respons menamai server yang dapat dikenali, seperti `nginx` atau `cloudflare`, atau membawa header perantara, seperti `cf-ray` atau `via`, klausa mencantumkan yang itu juga.1931* Klausa `Response:` dengan tipe konten, jenis isi, seperti `body is an HTML page` atau `empty body`, ukurannya dalam byte, dan apakah respons membawa id permintaan Anthropic. Ketika respons menamai server yang dapat dikenali, seperti `nginx` atau `cloudflare`, atau membawa header perantara, seperti `cf-ray` atau `via`, klausa mencantumkan yang itu juga.

1929* Kalimat yang menamai id permintaan streaming yang gagal dan kegagalan yang memicu pengulangan. Ketika aliran telah dibuka sebelum kegagalan, ia juga melaporkan berapa banyak peristiwa aliran yang tiba dan, jika ada, berapa lama aliran telah diam ketika upaya gagal.1932* Kalimat yang menamai id permintaan streaming yang gagal dan kegagalan yang memicu retry. Ketika stream telah dibuka sebelum kegagalan, ia juga melaporkan berapa banyak peristiwa stream yang tiba dan, jika ada, berapa lama stream telah diam ketika upaya gagal.

1930 1933 

1931Sebelum v2.1.234, pesan berakhir setelah `intercepting the request`.1934Sebelum v2.1.234, pesan berakhir setelah `intercepting the request`.

1932 1935 


1937* Baca klausa `Response:` untuk melihat sistem mana yang menjawab. Isi HTML, tidak ada id permintaan Anthropic, atau server bernama seperti `nginx` atau `cloudflare` berarti sesuatu antara Claude Code dan API menjawab di tempatnya1940* Baca klausa `Response:` untuk melihat sistem mana yang menjawab. Isi HTML, tidak ada id permintaan Anthropic, atau server bernama seperti `nginx` atau `cloudflare` berarti sesuatu antara Claude Code dan API menjawab di tempatnya

1938* Jika Anda merutekan melalui [gateway LLM](/docs/id/llm-gateway-connect#troubleshoot-gateway-errors), uji rute dengan permintaan langsung dan perbaiki hop yang mengembalikan respons non-API1941* Jika Anda merutekan melalui [gateway LLM](/docs/id/llm-gateway-connect#troubleshoot-gateway-errors), uji rute dengan permintaan langsung dan perbaiki hop yang mengembalikan respons non-API

1939* Di jaringan dengan halaman masuk, seperti Wi-Fi tamu, selesaikan masuk di browser, kemudian coba lagi1942* Di jaringan dengan halaman masuk, seperti Wi-Fi tamu, selesaikan masuk di browser, kemudian coba lagi

1940* Jika hanya rute non-streaming melalui gateway Anda yang rusak, atur [`CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1`](/docs/id/env-vars#variables) untuk mematikan fallback ini, kecuali ketika titik akhir streaming itu sendiri mengembalikan `404`, di mana Claude Code masih jatuh kembali1943* Jika hanya rute non-streaming melalui gateway Anda yang rusak, atur [`CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK=1`](/docs/id/env-vars#variables) untuk mematikan fallback ini, kecuali ketika endpoint streaming itu sendiri mengembalikan `404`, di mana Claude Code tetap menggunakan fallback

1941 1944 

1942<h3 id="streaming-response-ended-before-any-complete-data-was-received">1945<h3 id="streaming-response-ended-before-any-complete-data-was-received">

1943 Streaming response ended before any complete data was received1946 Streaming response ended before any complete data was received

1944</h3>1947</h3>

1945 1948 

1946Respons streaming dari penyedia model Anda selesai tanpa memberikan data yang dapat digunakan, jadi Claude Code mengirim ulang permintaan tanpa streaming untuk menyelesaikan giliran. Claude Code menampilkan peringatan sekali per sesi, hanya dalam sesi interaktif. Sebelum v2.1.239, Claude Code diam-diam mengulang tanpa streaming.1949Respons streaming dari penyedia model Anda selesai tanpa memberikan data yang dapat digunakan, jadi Claude Code mengirim ulang permintaan tanpa streaming untuk menyelesaikan giliran. Claude Code menampilkan peringatan sekali per sesi, hanya dalam sesi interaktif. Sebelum v2.1.239, Claude Code diam-diam mencoba ulang tanpa streaming.

1947 1950 

1948```text theme={null}1951```text theme={null}

1949Streaming response ended before any complete data was received. Retrying without streaming. If this keeps happening, check any proxy or gateway between Claude Code and your model provider.1952Streaming response ended before any complete data was received. Retrying without streaming. If this keeps happening, check any proxy or gateway between Claude Code and your model provider.

1950```1953```

1951 1954 

1952Claude Code mengirim setiap permintaan yang terpengaruh dua kali: upaya streaming kosong dan pengulangan. Penyebab biasa adalah proxy atau gateway yang mengonsumsi atau mengubah isi respons streaming dalam perjalanannya kembali.1955Claude Code mengirim setiap permintaan yang terpengaruh dua kali: upaya streaming kosong dan retry. Penyebab biasa adalah proxy atau gateway yang mengonsumsi atau mengubah isi respons streaming dalam perjalanannya kembali.

1953 1956 

1954**Yang harus dilakukan:**1957**Yang harus dilakukan:**

1955 1958 


1960 Bedrock streaming response has an unexpected content-type1963 Bedrock streaming response has an unexpected content-type

1961</h3>1964</h3>

1962 1965 

1963Gateway atau proxy antara Claude Code dan [Amazon Bedrock](/docs/id/amazon-bedrock) mengubah isi respons streaming atau header `Content-Type` nya. Amazon Bedrock melakukan streaming respons sebagai `application/vnd.amazon.eventstream`. Daripada mendekode isi yang tidak dapat dibaca, Claude Code menolak respons streaming yang berhasil yang melaporkan tipe konten yang berbeda. Claude Code tidak mengulang permintaan.1966Gateway atau proxy antara Claude Code dan [Amazon Bedrock](/docs/id/amazon-bedrock) mengubah isi respons streaming atau header `Content-Type` nya. Amazon Bedrock melakukan streaming respons sebagai `application/vnd.amazon.eventstream`. Daripada mendekode isi yang tidak dapat dibaca, Claude Code menolak respons streaming yang berhasil yang melaporkan tipe konten yang berbeda. Claude Code tidak mencoba ulang permintaan.

1964 1967 

1965```text theme={null}1968```text theme={null}

1966Bedrock streaming response has content-type "text/event-stream"; expected "application/vnd.amazon.eventstream". A gateway or proxy between Claude Code and Bedrock is likely transforming the response body — Bedrock's binary event-stream format must be passed through unmodified. Set CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1 to suppress this check while the gateway is being fixed.1969Bedrock streaming response has content-type "text/event-stream"; expected "application/vnd.amazon.eventstream". A gateway or proxy between Claude Code and Bedrock is likely transforming the response body — Bedrock's binary event-stream format must be passed through unmodified. Set CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1 to suppress this check while the gateway is being fixed.


1970 1973 

1971**Yang harus dilakukan:**1974**Yang harus dilakukan:**

1972 1975 

1973* Konfigurasikan gateway untuk melewatkan isi respons `InvokeModelWithResponseStream` dan header `Content-Type` nya tanpa dimodifikasi. Perantara yang memancarkan ulang aliran sebagai peristiwa yang dikirim server adalah penyebab umum.1976* Konfigurasikan gateway untuk melewatkan isi respons `InvokeModelWithResponseStream` dan header `Content-Type` nya tanpa dimodifikasi. Perantara yang memancarkan ulang stream sebagai peristiwa yang dikirim server adalah penyebab umum.

1974* Menetapkan [`CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1`](/docs/id/env-vars) menyembunyikan kesalahan ini, tetapi Claude Code tidak mendekode isi biner di bawah header yang ditulis ulang, jadi permintaan itu jatuh kembali ke jalur non-streaming yang lebih lambat. Lihat [Kesalahan streaming di belakang gateway atau proxy](/docs/id/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy).1977* Menetapkan [`CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD=1`](/docs/id/env-vars) menyembunyikan kesalahan ini, tetapi Claude Code tidak mendekode isi biner di bawah header yang ditulis ulang, jadi permintaan itu beralih ke jalur non-streaming yang lebih lambat. Lihat [Kesalahan streaming di belakang gateway atau proxy](/docs/id/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy).

1975 1978 

1976<h3 id="ssl-certificate-errors">1979<h3 id="ssl-certificate-errors">

1977 SSL certificate errors1980 SSL certificate errors


1986 1989 

1987Sebelum v2.1.273, kedua pesan berakhir di `Check your proxy or corporate SSL certificates`, tanpa kode OpenSSL atau petunjuk `NODE_EXTRA_CA_CERTS`.1990Sebelum v2.1.273, kedua pesan berakhir di `Check your proxy or corporate SSL certificates`, tanpa kode OpenSSL atau petunjuk `NODE_EXTRA_CA_CERTS`.

1988 1991 

1989Mulai dari v2.1.199, kegagalan validasi sertifikat tidak diulang, jadi kesalahan ini muncul pada upaya pertama daripada setelah [anggaran pengulangan](#automatic-retries) penuh. Versi sebelumnya menghabiskan beberapa menit mengulang sebelum menampilkannya. Kondisi TLS sementara, seperti batas waktu jabat tangan, masih mengulang.1992Mulai dari v2.1.199, kegagalan validasi sertifikat tidak dicoba ulang, jadi kesalahan ini muncul pada upaya pertama daripada setelah [anggaran retry](#automatic-retries) penuh. Versi sebelumnya menghabiskan beberapa menit mencoba ulang sebelum menampilkannya. Kondisi TLS sementara, seperti timeout handshake, masih dicoba ulang.

1990 1993 

1991Selama `/login` dan pemeriksaan konektivitas startup, kegagalan yang sama menghasilkan pesan yang berbeda:1994Selama `/login` dan pemeriksaan konektivitas startup, kegagalan yang sama menghasilkan pesan yang berbeda:

1992 1995 


2006 Host not allowed in a cloud session2009 Host not allowed in a cloud session

2007</h3>2010</h3>

2008 2011 

2009Permintaan HTTP keluar dari sesi cloud atau rutinitas diblokir oleh kebijakan jaringan lingkungan.2012Permintaan HTTP keluar dari sesi cloud atau routine diblokir oleh kebijakan jaringan lingkungan.

2010 2013 

2011```text theme={null}2014```text theme={null}

2012HTTP 4032015HTTP 403


2015 2018 

2016Anda juga dapat melihat sertifikat TLS yang tidak cocok dengan sertifikat asli tujuan. Sesi cloud merutekan lalu lintas keluar melalui proxy yang memberlakukan kebijakan jaringan, jadi sertifikat yang tidak cocok berarti proxy mengakhiri koneksi, bukan tujuan.2019Anda juga dapat melihat sertifikat TLS yang tidak cocok dengan sertifikat asli tujuan. Sesi cloud merutekan lalu lintas keluar melalui proxy yang memberlakukan kebijakan jaringan, jadi sertifikat yang tidak cocok berarti proxy mengakhiri koneksi, bukan tujuan.

2017 2020 

2018Ini bukan masalah jaringan sisi klien. Sesi cloud dan [rutinitas](/docs/id/routines) berjalan di dalam VM yang di-sandbox yang lalu lintas keluarnya melalui jaringan sesi disaring ke [daftar izin lingkungan cloud](/docs/id/cloud-environments); [operasi GitHub](/docs/id/cloud-environments#github-proxy) dan lalu lintas konektor MCP menggunakan saluran terpisah, itulah mengapa mereka dapat terus bekerja sementara host lain diblokir. Lingkungan **Default** menggunakan akses **Trusted**, yang memungkinkan [daftar izin default](/docs/id/cloud-environments#default-allowed-domains) dari registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum dan memblokir domain lain di jalur itu.2021Ini bukan masalah jaringan sisi klien. Sesi cloud dan [routine](/docs/id/routines) berjalan di dalam VM yang di-sandbox yang lalu lintas keluarnya melalui jaringan sesi disaring ke allowlist [lingkungan cloud](/docs/id/cloud-environments); [operasi GitHub](/docs/id/cloud-environments#github-proxy) dan lalu lintas konektor MCP menggunakan saluran terpisah, itulah mengapa mereka dapat terus bekerja sementara host lain diblokir. Lingkungan **Default** menggunakan akses **Trusted**, yang memungkinkan [allowlist default](/docs/id/cloud-environments#default-allowed-domains) dari registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum dan memblokir domain lain di jalur itu.

2019 2022 

2020**Yang harus dilakukan:**2023**Yang harus dilakukan:**

2021 2024 

2022Langkah-langkah ini mengubah salah satu lingkungan Anda sendiri. [Lingkungan bersama organisasi](/docs/id/cloud-environments#organization-shared-environments) terbuka hanya-baca di pemilih, jadi minta Pemilik untuk mengubah akses jaringannya dari halaman **Cloud environments** dalam [pengaturan admin](https://claude.ai/admin-settings).2025Langkah-langkah ini mengubah salah satu lingkungan Anda sendiri. [Lingkungan bersama organisasi](/docs/id/cloud-environments#organization-shared-environments) terbuka read-only di pemilih, jadi minta Owner untuk mengubah akses jaringannya dari halaman **Cloud environments** dalam [pengaturan admin](https://claude.ai/admin-settings).

2023 2026 

2024* Buka lingkungan Anda untuk pengeditan, baik dari [formulir rutinitas](/docs/id/routines#environments-and-network-access) atau dari [pemilih lingkungan](/docs/id/cloud-environments#configure-your-environment) tempat Anda memulai sesi cloud.2027* Buka lingkungan Anda untuk pengeditan, baik dari [formulir routine](/docs/id/routines#environments-and-network-access) atau dari [pemilih lingkungan](/docs/id/cloud-environments#configure-your-environment) tempat Anda memulai sesi cloud.

2025* Dalam dialog **Edit cloud environment**, ubah **Network access** dari **Trusted** ke **Custom**, kemudian tambahkan domain yang diblokir ke **Allowed domains**. Masukkan satu domain per baris. Periksa **Also include default list of common package managers** untuk menyimpan [daftar izin default](/docs/id/cloud-environments#default-allowed-domains) bersama domain kustom Anda. Pilih **Full** sebagai gantinya jika Anda menginginkan akses tanpa batas.2028* Dalam dialog **Edit environment**, ubah **Network access** dari **Trusted** ke **Custom**, kemudian tambahkan domain yang diblokir ke **Allowed domains**. Masukkan satu domain per baris. Centang **Also include default list of common package managers** untuk menyimpan [allowlist default](/docs/id/cloud-environments#default-allowed-domains) bersama domain kustom Anda. Pilih **Full** sebagai gantinya jika Anda menginginkan akses tanpa batas.

2026* Klik **Save changes**. Jalankan berikutnya menggunakan daftar izin yang diperbarui. Untuk sesi cloud yang sudah terbuka, lihat [kapan perubahan akses jaringan mencapai sesi yang ada](/docs/id/cloud-environments#network-access).2029* Klik **Save changes**. Jalankan berikutnya menggunakan allowlist yang diperbarui. Untuk sesi cloud yang sudah terbuka, lihat [kapan perubahan akses jaringan mencapai sesi yang ada](/docs/id/cloud-environments#network-access).

2027 2030 

2028Lihat [Akses jaringan](/docs/id/cloud-environments#network-access) untuk tingkat akses dan daftar izin default. Sesi CLI lokal tidak terpengaruh oleh kebijakan ini.2031Lihat [Akses jaringan](/docs/id/cloud-environments#network-access) untuk tingkat akses dan allowlist default. Sesi CLI lokal tidak terpengaruh oleh kebijakan ini.

2029 2032 

2030<h3 id="the-proxy-refused-the-connection">2033<h3 id="the-proxy-refused-the-connection">

2031 The proxy refused the connection2034 The proxy refused the connection

2032</h3>2035</h3>

2033 2036 

2034Anda melihat pesan ini ketika Claude membaca [artefak](/docs/id/artifacts) melalui proxy yang Anda atur dalam `HTTPS_PROXY` atau [variabel proxy](/docs/id/network-config#environment-variables) terkait. Konten artefak berasal dari `*.frame.claudeusercontent.com`, jadi Claude Code terlebih dahulu mengirim proxy permintaan `CONNECT` yang memintanya membuka terowongan ke host itu. Ketika proxy menolak, tidak ada yang mencapai host, dan pesan membawa status HTTP proxy:2037Anda melihat pesan ini ketika Claude membaca [artifact](/docs/id/artifacts) melalui proxy yang Anda atur dalam `HTTPS_PROXY` atau [variabel proxy](/docs/id/network-config#environment-variables) terkait. Konten artifact berasal dari `*.frame.claudeusercontent.com`, jadi Claude Code terlebih dahulu mengirim proxy permintaan `CONNECT` yang memintanya membuka terowongan ke host itu. Ketika proxy menolak, tidak ada yang mencapai host, dan pesan membawa status HTTP proxy:

2035 2038 

2036```text theme={null}2039```text theme={null}

2037artifact content fetch failed (proxy refused the connection: HTTP 407)2040artifact content fetch failed (proxy refused the connection: HTTP 407)


2042Status adalah jawaban proxy terhadap `CONNECT`. Host tidak pernah menjawab, jadi setiap status menunjuk ke perbaikan yang berbeda:2045Status adalah jawaban proxy terhadap `CONNECT`. Host tidak pernah menjawab, jadi setiap status menunjuk ke perbaikan yang berbeda:

2043 2046 

2044* `HTTP 407`: proxy memerlukan kredensial yang tidak didapatkan. Masukkan mereka dalam URL proxy, seperti yang ditunjukkan [Autentikasi Dasar](/docs/id/network-config#basic-authentication).2047* `HTTP 407`: proxy memerlukan kredensial yang tidak didapatkan. Masukkan mereka dalam URL proxy, seperti yang ditunjukkan [Autentikasi Dasar](/docs/id/network-config#basic-authentication).

2045* `HTTP 403`: proxy menolak untuk menggali terowongan ke `*.frame.claudeusercontent.com`. Minta siapa pun yang menjalankan proxy untuk memungkinkan host itu, yang [Persyaratan akses jaringan](/docs/id/network-config#network-access-requirements) cantumkan.2048* `HTTP 403`: proxy menolak untuk membuat terowongan ke `*.frame.claudeusercontent.com`. Minta siapa pun yang menjalankan proxy untuk memungkinkan host itu, yang [Persyaratan akses jaringan](/docs/id/network-config#network-access-requirements) cantumkan.

2046* Status apa pun yang lain, seperti `HTTP 502`: proxy tidak membuka terowongan karena alasannya sendiri, seperti gagal menjangkau host. Cari status dalam log proxy.2049* Status apa pun yang lain, seperti `HTTP 502`: proxy tidak membuka terowongan karena alasannya sendiri, seperti gagal menjangkau host. Cari status dalam log proxy.

2047* `unreadable reply` sebagai pengganti status: apa pun yang ada di alamat proxy tidak menjawab dengan baris status HTTP. Periksa bahwa alamatnya adalah proxy HTTP.2050* `unreadable reply` sebagai pengganti status: apa pun yang ada di alamat proxy tidak menjawab dengan baris status HTTP. Periksa bahwa alamatnya adalah proxy HTTP.

2048 2051 

2049**Yang harus dilakukan:**2052**Yang harus dilakukan:**

2050 2053 

2051* Periksa alamat dan kredensial dalam variabel proxy, seperti yang dijelaskan [Konfigurasi Proxy](/docs/id/network-config#proxy-configuration), kemudian jalankan `curl -x http://proxy.example.com:8080 -I https://api.anthropic.com` dari shell tempat Anda memulai Claude Code, menggunakan URL proxy Anda sendiri. Di Windows PowerShell, jalankan `curl.exe`. Jika probe ini gagal dengan cara yang sama, perbaiki pengaturan proxy terlebih dahulu. Jika berhasil, penolakan khusus untuk host artefak.2054* Periksa alamat dan kredensial dalam variabel proxy, seperti yang dijelaskan [Konfigurasi Proxy](/docs/id/network-config#proxy-configuration), kemudian jalankan `curl -x http://proxy.example.com:8080 -I https://api.anthropic.com` dari shell tempat Anda memulai Claude Code, menggunakan URL proxy Anda sendiri. Di Windows PowerShell, jalankan `curl.exe`. Jika probe ini gagal dengan cara yang sama, perbaiki pengaturan proxy terlebih dahulu. Jika berhasil, penolakan khusus untuk host artifact.

2052* Jika jaringan Anda membiarkan Claude Code menjangkau host artefak secara langsung, tambahkan `.frame.claudeusercontent.com` ke [`NO_PROXY`](/docs/id/network-config#environment-variables). Simpan entri itu sempit: entri `.claudeusercontent.com` yang lebih luas juga melewati proxy untuk `bridge.claudeusercontent.com`, yang organisasi dengan [IP allowlisting](/docs/id/network-config#organization-ip-allowlists-and-proxy-egress) perlu menyimpan di proxy.2055* Jika jaringan Anda membiarkan Claude Code menjangkau host artifact secara langsung, tambahkan `.frame.claudeusercontent.com` ke [`NO_PROXY`](/docs/id/network-config#environment-variables). Simpan entri itu sempit: entri `.claudeusercontent.com` yang lebih luas juga melewati proxy untuk `bridge.claudeusercontent.com`, yang organisasi dengan [IP allowlisting](/docs/id/network-config#organization-ip-allowlists-and-proxy-egress) perlu tetap lewatkan melalui proxy.

2053 2056 

2054Sebelum v2.1.238, Claude Code melaporkan terowongan yang ditolak sebagai kesalahan jaringan generik.2057Sebelum v2.1.238, Claude Code melaporkan terowongan yang ditolak sebagai kesalahan jaringan generik.

2055 2058 


2065The cloud environments service returned a response in an unexpected format (HTTP 200 without a usable environments list). This is usually temporary — try again in a moment.2068The cloud environments service returned a response in an unexpected format (HTTP 200 without a usable environments list). This is usually temporary — try again in a moment.

2066```2069```

2067 2070 

2068Server menerima permintaan tetapi menjawab dengan isi yang bukan daftar lingkungan: kosong, bukan JSON, atau JSON tanpa daftar. Ini biasanya menyertai gangguan sisi layanan dan menghapus sendiri. Tergantung pada permukaan yang meminta daftar, Claude Code dapat menambahkan awalan, seperti `couldn't list environments:` dalam dialog `/remote-env`.2071Server menerima permintaan tetapi menjawab dengan isi yang bukan daftar lingkungan: kosong, bukan JSON, atau JSON tanpa daftar. Ini biasanya menyertai gangguan sisi layanan dan hilang dengan sendirinya. Tergantung pada surface yang meminta daftar, Claude Code dapat menambahkan awalan, seperti `couldn't list environments:` dalam dialog `/remote-env`.

2069 2072 

2070**Yang harus dilakukan:**2073**Yang harus dilakukan:**

2071 2074 


2082Couldn't reconnect to your Remote Control session. Retry, or start a fresh session without --resume.2085Couldn't reconnect to your Remote Control session. Retry, or start a fresh session without --resume.

2083```2086```

2084 2087 

2085Melanjutkan dengan `claude --resume` atau `claude --continue` menghubungkan kembali ke sesi [Remote Control](/docs/id/remote-control) yang dicatat dalam percakapan itu. Pesan ini berarti koneksi kembali gagal karena alasan yang mungkin sementara, seperti gangguan jaringan atau kesalahan server, jadi Claude Code tidak dapat mengkonfirmasi apakah sesi jarak jauh masih ada. Sesi lokal Anda terus berjalan tanpa Remote Control.2088Melanjutkan dengan `claude --resume` atau `claude --continue` menghubungkan kembali ke sesi [Remote Control](/docs/id/remote-control) yang dicatat dalam percakapan itu. Pesan ini berarti koneksi kembali gagal karena alasan yang mungkin sementara, seperti gangguan jaringan atau kesalahan server, jadi Claude Code tidak dapat mengonfirmasi apakah sesi jarak jauh masih ada. Sesi lokal Anda terus berjalan tanpa Remote Control.

2086 2089 

2087**Yang harus dilakukan:**2090**Yang harus dilakukan:**

2088 2091 


2104 2107 

2105**Yang harus dilakukan:**2108**Yang harus dilakukan:**

2106 2109 

2107* Ketika Claude Code mencantumkan worktrees yang disimpan di bawah pesan ini, ambil pekerjaan yang tidak dikomit dari mereka2110* Ketika Claude Code mencantumkan worktree yang disimpan di bawah pesan ini, ambil pekerjaan yang tidak dikomit dari mereka

2108* Jalankan `claude remote-control` untuk memulai lingkungan segar2111* Jalankan `claude remote-control` untuk memulai lingkungan segar

2109 2112 

2110<h3 id="couldnt-share-the-transcript">2113<h3 id="couldnt-share-the-transcript">


2117Couldn't share the transcript.2120Couldn't share the transcript.

2118```2121```

2119 2122 

2120Unggahan harus sesuai dengan batas 8 MiB. Dalam sesi yang panjang, Claude Code secara progresif menjatuhkan bagian dari berbagi, pengaturan model permintaan terakhir terlebih dahulu, kemudian percakapan terstruktur dan transkrip subagen, dan menampilkan pesan ini hanya ketika tidak ada versi yang dikurangi yang dapat dikirim atau kesalahan jaringan atau server menghentikan unggahan. Ketika Claude Code menyimpan arsip lokal sebagai gantinya, pesan berarti tidak dapat menulis arsip.2123Unggahan harus sesuai dengan batas 8 MiB. Dalam sesi yang panjang, Claude Code secara progresif menjatuhkan bagian dari berbagi, pengaturan model permintaan terakhir terlebih dahulu, kemudian percakapan terstruktur dan transkrip subagent, dan menampilkan pesan ini ketika tidak ada versi yang dikurangi yang dapat dikirim atau kesalahan jaringan atau server menghentikan unggahan. Ketika Claude Code menyimpan arsip lokal sebagai gantinya, pesan berarti tidak dapat menulis arsip.

2121 2124 

2122**Yang harus dilakukan:**2125**Yang harus dilakukan:**

2123 2126 


2139* **`: not signed in. Run /login, then retry.`**: dialog mengunggah hanya ketika Claude Code menemukan kredensial Anthropic saat dibuka, dan tidak ada yang dapat digunakan pada saat Anda mengirim. Misalnya, Anda keluar di mesin ini sementara itu, atau login Anda tidak lagi dapat disegarkan.2142* **`: not signed in. Run /login, then retry.`**: dialog mengunggah hanya ketika Claude Code menemukan kredensial Anthropic saat dibuka, dan tidak ada yang dapat digunakan pada saat Anda mengirim. Misalnya, Anda keluar di mesin ini sementara itu, atau login Anda tidak lagi dapat disegarkan.

2140* **Tanda kurung**: `(server returned <status>)` adalah kode respons layanan; `(request timed out)` dan `(couldn't reach the service)` adalah kegagalan jaringan. Ketika Claude Code tidak dapat menamai alasan, tanda kurung tidak ada.2143* **Tanda kurung**: `(server returned <status>)` adalah kode respons layanan; `(request timed out)` dan `(couldn't reach the service)` adalah kegagalan jaringan. Ketika Claude Code tidak dapat menamai alasan, tanda kurung tidak ada.

2141 2144 

2142Dalam [antrian draf umpan balik](/docs/id/tools-reference#sendfeedback-tool-behavior), kegagalan yang sama berakhir dengan `The draft is still queued. Try again later.` sebagai gantinya, dan draf tetap dalam antrian untuk upaya lain.2145Dalam [antrean draf umpan balik](/docs/id/tools-reference#sendfeedback-tool-behavior), kegagalan yang sama berakhir dengan `The draft is still queued. Try again later.` sebagai gantinya, dan draf tetap dalam antrean untuk upaya lain.

2143 2146 

2144**Yang harus dilakukan:**2147**Yang harus dilakukan:**

2145 2148 

2146* Untuk wording tidak-masuk, jalankan `/login` dan kirim lagi2149* Untuk pesan belum masuk, jalankan `/login` dan kirim lagi

2147* Jika tidak, kirim lagi; jika permintaan lain juga gagal, periksa koneksi jaringan Anda dan lihat [Unable to connect to API](#unable-to-connect-to-api)2150* Jika tidak, kirim lagi; jika permintaan lain juga gagal, periksa koneksi jaringan Anda dan lihat [Unable to connect to API](#unable-to-connect-to-api)

2148* Jika terus gagal, ajukan laporan di [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues), seperti yang dikatakan pesan2151* Jika terus gagal, ajukan laporan di [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues), seperti yang dikatakan pesan

2149 2152 


2865* Jika permintaan Anda bukan tentang topik keamanan siber, jalankan `/feedback` untuk melaporkan positif palsu2868* Jika permintaan Anda bukan tentang topik keamanan siber, jalankan `/feedback` untuk melaporkan positif palsu

2866* Untuk terus bekerja dalam sesi yang sama, tekan Esc dua kali atau jalankan `/rewind` untuk mundur ke checkpoint sebelum giliran yang memicu penandaan, lalu ambil pendekatan berbeda. Lihat [Checkpointing](/docs/id/checkpointing).2869* Untuk terus bekerja dalam sesi yang sama, tekan Esc dua kali atau jalankan `/rewind` untuk mundur ke checkpoint sebelum giliran yang memicu penandaan, lalu ambil pendekatan berbeda. Lihat [Checkpointing](/docs/id/checkpointing).

2867 2870 

2871<h3 id="output-blocked-by-content-filtering-policy">

2872 Output blocked by content filtering policy

2873</h3>

2874 

2875Filter konten output API menghentikan respons yang sedang dihasilkan Claude. Teks pesan berasal dari API:

2876 

2877```text theme={null}

2878API Error: Output blocked by content filtering policy

2879```

2880 

2881Claude Code menampilkan kesalahan segera setelah pemblokiran tiba dan mengakhiri permintaan di sana. Claude Code tidak mencoba ulang permintaan, mengirimnya ulang tanpa streaming, atau beralih ke [model fallback](/docs/id/model-config#fallback-model-chains). Sebelum v2.1.285, Claude Code dapat mengirim ulang dan mencoba ulang permintaan yang diblokir, terkadang selama beberapa menit, sebelum menampilkan kesalahan kepada Anda.

2882 

2883**Yang harus dilakukan:**

2884 

2885* Ubah susunan kata pesan terakhir Anda atau ambil pendekatan berbeda

2886* Untuk mundur ke checkpoint sebelum giliran yang memicu pemblokiran, tekan Esc dua kali atau jalankan `/rewind`. Lihat [Checkpointing](/docs/id/checkpointing)

2887 

2868<h2 id="installation-errors">2888<h2 id="installation-errors">

2869 Kesalahan instalasi2889 Kesalahan instalasi

2870</h2>2890</h2>


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

4415</h3>4435</h3>

4416 4436 

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:4437Claude 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 4438 

4419```text wrap theme={null}4439```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.4440Its 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 +345 −345

Details

1159 Event hook1159 Event hook

1160</h2>1160</h2>

1161 1161 

1162Setiap event berkaitan dengan satu titik dalam siklus hidup Claude Code tempat hook dapat berjalan. Bagian-bagian di bawah ini diurutkan sesuai siklus hidup tersebut: mulai dari penyiapan sesi, melalui agentic loop, hingga akhir sesi. Setiap bagian menjelaskan kapan event dipicu, matcher apa yang didukungnya, input JSON yang diterimanya, dan cara mengontrol perilaku melalui output.1162Setiap event berkaitan dengan suatu titik dalam siklus hidup Claude Code tempat hook dapat berjalan. Bagian-bagian di bawah ini diurutkan sesuai siklus hidup tersebut: mulai dari penyiapan sesi, melalui agentic loop, hingga akhir sesi. Setiap bagian menjelaskan kapan event dipicu, matcher apa yang didukungnya, input JSON yang diterimanya, dan cara mengontrol perilaku melalui output.

1163 1163 

1164<h3 id="sessionstart">1164<h3 id="sessionstart">

1165 SessionStart1165 SessionStart

1166</h3>1166</h3>

1167 1167 

1168Berjalan saat Claude Code memulai sesi baru atau melanjutkan sesi yang sudah ada. Berguna untuk memuat konteks pengembangan seperti issue yang ada atau perubahan terbaru pada codebase Anda, atau untuk menyiapkan environment variable. Untuk konteks statis yang tidak memerlukan skrip, gunakan [CLAUDE.md](/docs/id/memory) sebagai gantinya.1168Berjalan ketika Claude Code memulai sesi baru atau melanjutkan sesi yang sudah ada. Berguna untuk memuat konteks pengembangan seperti issue yang ada atau perubahan terbaru pada codebase Anda, atau untuk menyiapkan environment variable. Untuk konteks statis yang tidak memerlukan skrip, gunakan [CLAUDE.md](/docs/id/memory) sebagai gantinya.

1169 1169 

1170SessionStart berjalan pada setiap sesi, jadi pastikan hook ini tetap cepat. Hanya hook `type: "command"` dan `type: "mcp_tool"` yang didukung. Lihat [kolom hook tool MCP](#mcp-tool-hook-fields) untuk mengetahui kapan hook `mcp_tool` berjalan.1170SessionStart berjalan pada setiap sesi, jadi jaga agar hook ini tetap cepat. Hanya hook `type: "command"` dan `type: "mcp_tool"` yang didukung. Lihat [Field hook tool MCP](#mcp-tool-hook-fields) untuk mengetahui kapan hook `mcp_tool` berjalan.

1171 1171 

1172Nilai matcher berkaitan dengan cara sesi dimulai:1172Nilai matcher berkaitan dengan cara sesi dimulai:

1173 1173 


1181 1181 

1182Sebelum v2.1.214, sesi hasil fork melaporkan source `"resume"`.1182Sebelum v2.1.214, sesi hasil fork melaporkan source `"resume"`.

1183 1183 

1184Saat Anda memulai sesi interaktif, melanjutkan percakapan saat peluncuran dengan `--continue` atau `--resume`, atau menjalankan `/clear`, hook SessionStart berjalan di latar belakang. Anda dapat langsung mengetik, dan percakapan yang Anda lanjutkan muncul tanpa menunggu hook. Respons pertama Claude tetap menunggu hook selesai, sehingga konteksnya sampai ke Claude.1184Ketika Anda memulai sesi interaktif, melanjutkan percakapan saat peluncuran dengan `--continue` atau `--resume`, atau menjalankan `/clear`, hook SessionStart berjalan di latar belakang. Anda dapat langsung mengetik, dan percakapan yang Anda lanjutkan muncul tanpa menunggu hook. Respons pertama Claude tetap menunggu hook selesai, sehingga konteksnya sampai ke Claude.

1185 1185 

1186Saat Anda berpindah percakapan dengan `/resume` di dalam sesi, perpindahan tersebut justru menunggu hook selesai. Jika Anda menjalankan `/clear` atau berpindah ke percakapan lain saat hook latar belakang masih berjalan, apa pun yang dikembalikannya tidak diterapkan ke sesi.1186Ketika Anda berpindah percakapan dengan `/resume` di dalam sesi, perpindahan tersebut justru menunggu hook selesai. Jika Anda menjalankan `/clear` atau berpindah ke percakapan lain saat hook latar belakang masih berjalan, apa pun yang dikembalikannya tidak diterapkan ke sesi.

1187 1187 

1188Penantian yang sama berlaku saat peluncuran, termasuk sesi yang dilanjutkan: prompt yang Anda kirim saat hook SessionStart masih berjalan tidak sampai ke Claude hingga hook tersebut selesai.1188Penantian yang sama berlaku saat peluncuran, termasuk sesi yang dilanjutkan: prompt yang Anda kirim saat hook SessionStart masih berjalan tidak akan sampai ke Claude hingga hook tersebut selesai.

1189 1189 

1190Selama salah satu penantian tersebut, tekan `Esc` untuk mengambil kembali prompt ke input tanpa mengirimkannya. Hook tetap berjalan.1190Selama penantian mana pun, tekan `Esc` untuk mengambil kembali prompt ke input tanpa mengirimnya. Hook tetap berjalan.

1191 1191 

1192<h4 id="sessionstart-input">1192<h4 id="sessionstart-input">

1193 Input SessionStart1193 Input SessionStart

1194</h4>1194</h4>

1195 1195 

1196Selain [kolom input umum](#common-input-fields), hook SessionStart menerima `source` dan secara opsional `model`, `agent_type`, dan `session_title`:1196Selain [field input umum](#common-input-fields), hook SessionStart menerima `source` dan secara opsional `model`, `agent_type`, dan `session_title`:

1197 1197 

1198| Kolom | Deskripsi |1198| Field | Deskripsi |

1199| :- | :- |1199| :- | :- |

1200| `source` | Cara sesi dimulai: `"startup"` untuk sesi baru, `"resume"` untuk sesi yang dilanjutkan, `"clear"` setelah `/clear`, `"compact"` setelah compaction, atau `"fork"` untuk sesi baru yang di-fork dari sesi yang sudah ada |1200| `source` | Cara sesi dimulai: `"startup"` untuk sesi baru, `"resume"` untuk sesi yang dilanjutkan, `"clear"` setelah `/clear`, `"compact"` setelah compaction, atau `"fork"` untuk sesi baru yang di-fork dari sesi yang sudah ada |

1201| `model` | Pengidentifikasi model yang aktif. Kolom ini dapat dihilangkan, misalnya setelah `/clear` atau saat sesi dipulihkan melalui pemulihan percakapan, jadi periksa keberadaan kolom ini sebelum membacanya |1201| `model` | Pengidentifikasi model yang aktif. Field ini dapat dihilangkan, misalnya setelah `/clear` atau ketika sesi dipulihkan melalui pemulihan percakapan, jadi periksa keberadaan field sebelum membacanya |

1202| `agent_type` | Nama agent, ada saat Anda memulai Claude Code dengan `claude --agent <name>` |1202| `agent_type` | Nama agent, ada ketika Anda memulai Claude Code dengan `claude --agent <name>` |

1203| `session_title` | Judul kustom sesi, ada saat judul tersebut diatur, misalnya dengan `--name`, `/rename`, output `sessionTitle` dari hook, atau `renameSession()` dari Agent SDK. Hook yang mengeluarkan `sessionTitle` dapat memeriksa kolom ini terlebih dahulu agar tidak menimpa judul kustom yang sudah ada |1203| `session_title` | Judul kustom sesi, ada ketika judul tersebut diatur, misalnya dengan `--name`, `/rename`, output `sessionTitle` dari hook, atau `renameSession()` dari Agent SDK. Hook yang menghasilkan `sessionTitle` dapat memeriksa field ini terlebih dahulu untuk menghindari penimpaan judul kustom yang sudah ada |

1204 1204 

1205Sesi yang belum Anda beri nama tetap dapat memiliki [judul yang dihasilkan](/docs/id/sessions#name-your-sessions). Judul tersebut bukan judul kustom dan tidak muncul di `session_title`.1205Sesi yang belum Anda beri nama tetap dapat memiliki [judul yang dihasilkan](/docs/id/sessions#name-your-sessions). Judul tersebut bukan judul kustom dan tidak muncul di `session_title`.

1206 1206 

1207Saat `source` bernilai `"resume"` atau `"fork"` dan transkrip berisi setidaknya satu respons dari Claude, hook SessionStart juga menerima empat kolom di bawah ini. Hook Anda dapat menggunakannya untuk melaporkan biaya melanjutkan percakapan yang sudah basi sebelum permintaan pertama, misalnya dalam [`systemMessage`](#json-output). Kolom-kolom ini memerlukan Claude Code v2.1.251 atau yang lebih baru.1207Ketika `source` bernilai `"resume"` atau `"fork"` dan transkrip berisi setidaknya satu respons dari Claude, hook SessionStart juga menerima empat field di bawah ini. Hook Anda dapat menggunakannya untuk melaporkan biaya melanjutkan percakapan yang sudah lama sebelum permintaan pertama, misalnya dalam [`systemMessage`](#json-output). Field ini memerlukan Claude Code v2.1.251 atau yang lebih baru.

1208 1208 

1209| Kolom | Deskripsi |1209| Field | Deskripsi |

1210| :- | :- |1210| :- | :- |

1211| `seconds_since_last_response` | Detik waktu nyata sejak respons terakhir dalam transkrip yang dilanjutkan |1211| `seconds_since_last_response` | Detik waktu nyata sejak respons terakhir dalam transkrip yang dilanjutkan |

1212| `context_tokens` | Token yang dikirim ulang oleh permintaan pertama sesi yang dilanjutkan sebagai prompt-nya |1212| `context_tokens` | Token yang dikirim ulang oleh permintaan pertama dari sesi yang dilanjutkan sebagai prompt-nya |

1213| `prompt_cache_likely_expired` | `true` saat respons terakhir lebih lama dari [masa hidup prompt cache](/docs/id/prompt-caching#cache-lifetime) sesi atau compaction setelahnya menggantikan percakapan yang di-cache |1213| `prompt_cache_likely_expired` | `true` ketika respons terakhir lebih lama dari [masa berlaku prompt cache](/docs/id/prompt-caching#cache-lifetime) sesi atau compaction berikutnya telah menggantikan percakapan yang di-cache |

1214| `estimated_cache_write_usd` | Perkiraan biaya dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada model sesi, tidak termasuk respons |1214| `estimated_cache_write_usd` | Estimasi biaya dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada model sesi, tidak termasuk respons |

1215 1215 

1216Contoh ini menunjukkan input untuk sesi yang dilanjutkan 90 menit setelah respons terakhirnya:1216Contoh ini menunjukkan input untuk sesi yang dilanjutkan 90 menit setelah respons terakhirnya:

1217 1217 


1234 Kontrol keputusan SessionStart1234 Kontrol keputusan SessionStart

1235</h4>1235</h4>

1236 1236 

1237Claude Code menambahkan stdout yang [diperlakukannya sebagai teks biasa](#exit-code-0) ke konteks Claude. Selain [kolom output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan kolom khusus event berikut:1237Claude Code menambahkan stdout yang [diperlakukannya sebagai teks biasa](#exit-code-0) ke konteks Claude. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan field khusus event berikut:

1238 1238 

1239| Kolom | Deskripsi |1239| Field | Deskripsi |

1240| :- | :- |1240| :- | :- |

1241| `additionalContext` | String yang ditambahkan ke konteks Claude di awal percakapan, sebelum prompt pertama. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) untuk cara teks dikirimkan dan apa yang perlu dimasukkan ke dalamnya |1241| `additionalContext` | String yang ditambahkan ke konteks Claude di awal percakapan, sebelum prompt pertama. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) untuk cara teks dikirimkan dan apa yang perlu dimasukkan |

1242| `initialUserMessage` | String yang digunakan sebagai pesan pengguna pertama dalam sesi. Berlaku dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, tempat string ini menjadi giliran pertama meskipun tidak ada prompt yang diberikan. Jika prompt diberikan, prompt tersebut menyusul sebagai giliran berikutnya. Tidak seperti `additionalContext`, yang dilampirkan ke giliran yang sudah ada, kolom ini membuat giliran tersebut |1242| `initialUserMessage` | String yang digunakan sebagai pesan pengguna pertama dalam sesi. Berlaku dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, tempat string ini menjadi giliran pertama meskipun tidak ada prompt yang diberikan. Jika prompt diberikan, prompt tersebut mengikuti sebagai giliran berikutnya. Tidak seperti `additionalContext`, yang dilampirkan ke giliran yang sudah ada, field ini membuat giliran |

1243| `sessionTitle` | Mengatur judul sesi, dengan efek yang sama seperti `/rename`. Gunakan untuk memberi nama sesi secara otomatis dari folder peluncuran, branch git, atau nama worktree. Berlaku saat `source` bernilai `"startup"`, `"resume"`, atau `"fork"`; diabaikan pada `"clear"` dan `"compact"` |1243| `sessionTitle` | Mengatur judul sesi, dengan efek yang sama seperti `/rename`. Gunakan untuk memberi nama sesi secara otomatis dari folder peluncuran, branch git, atau nama worktree. Berlaku ketika `source` bernilai `"startup"`, `"resume"`, atau `"fork"`; diabaikan pada `"clear"` dan `"compact"` |

1244| `watchPaths` | Array path absolut yang dipantau untuk event [FileChanged](#filechanged) selama sesi ini |1244| `watchPaths` | Array path absolut yang dipantau untuk event [FileChanged](#filechanged) selama sesi ini |

1245| `reloadSkills` | Boolean. Saat `true`, Claude Code memindai ulang direktori [skill](/docs/id/skills) dan perintah setelah hook SessionStart selesai, sehingga skill yang diinstal oleh hook tersedia dalam sesi yang sama, mulai dari prompt pertama |1245| `reloadSkills` | Boolean. Ketika `true`, Claude Code memindai ulang direktori [skill](/docs/id/skills) dan perintah setelah hook SessionStart selesai, sehingga skill yang dipasang oleh hook tersedia dalam sesi yang sama, mulai dari prompt pertama |

1246 1246 

1247```json theme={null}1247```json theme={null}

1248{1248{


1254}1254}

1255```1255```

1256 1256 

1257Karena stdout biasa sudah sampai ke Claude untuk event ini, hook yang hanya memuat konteks dapat langsung mencetak ke stdout tanpa membangun JSON. Gunakan bentuk JSON saat Anda perlu menggabungkan konteks dengan kolom lain seperti `sessionTitle`.1257Karena stdout biasa sudah sampai ke Claude untuk event ini, hook yang hanya memuat konteks dapat mencetak langsung ke stdout tanpa membangun JSON. Gunakan bentuk JSON ketika Anda perlu menggabungkan konteks dengan field lain seperti `sessionTitle`.

1258 1258 

1259Gunakan `reloadSkills` saat hook SessionStart menginstal atau memperbarui skill. Penemuan skill biasanya berjalan sebelum hook SessionStart selesai, sehingga file yang ditulis hook ke `~/.claude/skills/` atau `.claude/skills/` jika tidak demikian hanya akan muncul di sesi berikutnya. Contoh ini menyinkronkan repositori skill bersama dan meminta pemindaian ulang:1259Gunakan `reloadSkills` ketika hook SessionStart memasang atau memperbarui skill. Penemuan skill biasanya berjalan sebelum hook SessionStart selesai, sehingga file yang ditulis hook ke `~/.claude/skills/` atau `.claude/skills/` sebaliknya hanya akan muncul di sesi berikutnya. Contoh ini menyinkronkan repositori skill bersama dan meminta pemindaian ulang:

1260 1260 

1261```bash theme={null}1261```bash theme={null}

1262#!/bin/bash1262#!/bin/bash


1267echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1267echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1268```1268```

1269 1269 

1270URL repositori tersebut adalah placeholder; ganti dengan repositori skill Anda sendiri. Dengan placeholder tersebut, clone gagal dan mencetak pesan `fatal:` ke stderr. Stderr dari hook SessionStart yang keluar dengan 0 hanya bersifat informasional, sehingga permintaan `reloadSkills` tetap berlaku.1270URL repositori tersebut adalah placeholder; ganti dengan repositori skill Anda sendiri. Dengan placeholder tersebut, clone gagal dan mencetak pesan `fatal:` ke stderr. Stderr dari hook SessionStart yang keluar dengan 0 hanya bersifat informatif, sehingga permintaan `reloadSkills` tetap berlaku.

1271 1271 

1272<h4 id="persist-environment-variables">1272<h4 id="persist-environment-variables">

1273 Mempertahankan environment variable1273 Mempertahankan environment variable


1289exit 01289exit 0

1290```1290```

1291 1291 

1292Untuk menangkap semua perubahan lingkungan dari perintah penyiapan, bandingkan variabel yang diekspor sebelum dan sesudahnya:1292Untuk menangkap semua perubahan environment dari perintah penyiapan, bandingkan variabel yang diekspor sebelum dan sesudahnya:

1293 1293 

1294```bash theme={null}1294```bash theme={null}

1295#!/bin/bash1295#!/bin/bash


1316 Setup1316 Setup

1317</h3>1317</h3>

1318 1318 

1319Hanya dipicu saat Anda meluncurkan Claude Code dengan `--init-only`, atau dengan `--init` atau `--maintenance` dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Event ini tidak dipicu pada startup normal. Gunakan untuk instalasi dependensi satu kali atau pembersihan terjadwal yang Anda picu secara eksplisit dari CI atau skrip, terpisah dari startup sesi normal. Untuk inisialisasi per sesi, gunakan [SessionStart](#sessionstart) sebagai gantinya.1319Hanya dipicu ketika Anda meluncurkan Claude Code dengan `--init-only`, atau dengan `--init` atau `--maintenance` dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Event ini tidak dipicu pada startup normal. Gunakan untuk instalasi dependensi satu kali atau pembersihan terjadwal yang Anda picu secara eksplisit dari CI atau skrip, terpisah dari startup sesi normal. Untuk inisialisasi per sesi, gunakan [SessionStart](#sessionstart) sebagai gantinya.

1320 1320 

1321Nilai matcher berkaitan dengan flag CLI yang memicu hook:1321Nilai matcher berkaitan dengan flag CLI yang memicu hook:

1322 1322 


1325| `init` | `claude --init-only` atau `claude -p --init` |1325| `init` | `claude --init-only` atau `claude -p --init` |

1326| `maintenance` | `claude -p --maintenance` |1326| `maintenance` | `claude -p --maintenance` |

1327 1327 

1328Saat Anda menjalankan `claude --init-only`, Claude Code menjalankan hook Setup dan hook `SessionStart` dengan matcher `startup`, lalu keluar tanpa memulai percakapan.1328Ketika Anda menjalankan `claude --init-only`, Claude Code menjalankan hook Setup dan hook `SessionStart` dengan matcher `startup`, lalu keluar tanpa memulai percakapan.

1329 1329 

1330Saat Anda memulai atau melanjutkan percakapan dengan `-p`, Anda juga perlu memberikan prompt, sebagai argumen atau melalui pipe ke stdin. Anda dapat melewatkan prompt saat hook `SessionStart` menyediakan [`initialUserMessage`](#sessionstart-decision-control) atau saat Anda melanjutkan sesi dengan [panggilan tool yang ditunda](#defer-a-tool-call-for-later).1330Ketika Anda memulai atau melanjutkan percakapan dengan `-p`, Anda juga perlu menyediakan prompt, sebagai argumen atau disalurkan melalui stdin. Anda dapat melewatkan prompt ketika hook `SessionStart` menyediakan [`initialUserMessage`](#sessionstart-decision-control) atau ketika Anda melanjutkan sesi dengan [panggilan tool yang ditangguhkan](#defer-a-tool-call-for-later).

1331 1331 

1332Jika berhasil, `--init-only` tidak mencetak apa pun ke terminal. Untuk memastikan hook berjalan, mulai dengan `claude --debug-file <path> --init-only`, ganti `<path>` dengan lokasi file log, lalu periksa log untuk entri hook Setup dan SessionStart.1332Jika berhasil, `--init-only` tidak mencetak apa pun ke terminal. Untuk memastikan hook telah berjalan, mulai dengan `claude --debug-file <path> --init-only`, ganti `<path>` dengan lokasi file log, lalu periksa log untuk entri hook Setup dan SessionStart.

1333 1333 

1334Karena Setup tidak dipicu pada setiap peluncuran, plugin yang memerlukan dependensi terinstal tidak dapat hanya mengandalkan Setup. Pola praktisnya adalah memeriksa dependensi saat penggunaan pertama dan menginstalnya jika tidak ada, misalnya hook atau skill yang memeriksa `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/docs/id/plugins/components#path-variables-and-persistent-data) untuk lokasi menyimpan dependensi yang diinstal. Jika Anda mendistribusikan plugin melalui marketplace, Anda mungkin tidak memerlukan pola ini: Claude Code [menginstal dependensi paket Node.js yang memenuhi syarat secara otomatis](/docs/id/plugins/loading#node-js-package-dependencies) saat melakukan cache pada plugin.1334Karena Setup tidak dipicu pada setiap peluncuran, plugin yang membutuhkan dependensi terpasang tidak dapat hanya mengandalkan Setup. Pola praktisnya adalah memeriksa dependensi saat penggunaan pertama dan memasangnya jika belum ada, misalnya hook atau skill yang memeriksa `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/docs/id/plugins/components#path-variables-and-persistent-data) untuk lokasi penyimpanan dependensi yang dipasang. Jika Anda mendistribusikan plugin melalui marketplace, Anda mungkin tidak memerlukan pola ini: Claude Code [memasang dependensi paket Node.js yang memenuhi syarat secara otomatis](/docs/id/plugins/loading#node-js-package-dependencies) ketika menyimpan plugin ke cache.

1335 1335 

1336<h4 id="setup-input">1336<h4 id="setup-input">

1337 Input Setup1337 Input Setup

1338</h4>1338</h4>

1339 1339 

1340Selain [kolom input umum](#common-input-fields), hook Setup menerima kolom `trigger` yang bernilai `"init"` atau `"maintenance"`:1340Selain [field input umum](#common-input-fields), hook Setup menerima field `trigger` yang bernilai `"init"` atau `"maintenance"`:

1341 1341 

1342```json theme={null}1342```json theme={null}

1343{1343{


1353 Kontrol keputusan Setup1353 Kontrol keputusan Setup

1354</h4>1354</h4>

1355 1355 

1356Hook Setup tidak dapat memblokir; eksekusi berlanjut pada exit code apa pun. Pada setiap exit code, Claude Code membuang [kolom output JSON](#json-output) hook Setup, seperti `systemMessage`, `continue`, dan `hookSpecificOutput.additionalContext`. Dengan `-p`, stdout, stderr, dan exit code hook Setup muncul dalam output run hanya sebagai [event `hook_response`](/docs/id/headless#read-session-metadata) saat Anda meluncurkan dengan `--output-format stream-json --verbose`.1356Hook Setup tidak dapat memblokir; eksekusi berlanjut pada exit code apa pun. Pada setiap exit code, Claude Code membuang [field output JSON](#json-output) dari hook Setup, seperti `systemMessage`, `continue`, dan `hookSpecificOutput.additionalContext`. Dengan `-p`, stdout, stderr, dan exit code dari hook Setup hanya muncul di output run sebagai [event `hook_response`](/docs/id/headless#read-session-metadata) ketika Anda meluncurkan dengan `--output-format stream-json --verbose`.

1357 1357 

1358Hook Setup memiliki akses ke `CLAUDE_ENV_FILE`. Variabel yang ditulis ke file tersebut dipertahankan untuk perintah Bash berikutnya dalam sesi, sama seperti pada [hook SessionStart](#persist-environment-variables). Hanya hook `type: "command"` yang berjalan pada `Setup`. Hook `type: "mcp_tool"` pada `Setup` selalu dilewati, seperti dijelaskan di [kolom hook tool MCP](#mcp-tool-hook-fields).1358Hook Setup memiliki akses ke `CLAUDE_ENV_FILE`. Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya dalam sesi, sama seperti pada [hook SessionStart](#persist-environment-variables). Hanya hook `type: "command"` yang berjalan pada `Setup`. Hook `type: "mcp_tool"` pada `Setup` selalu dilewati, seperti dijelaskan di [Field hook tool MCP](#mcp-tool-hook-fields).

1359 1359 

1360<h3 id="instructionsloaded">1360<h3 id="instructionsloaded">

1361 InstructionsLoaded1361 InstructionsLoaded

1362</h3>1362</h3>

1363 1363 

1364Dipicu saat file `CLAUDE.md` atau `.claude/rules/*.md` dimuat ke dalam konteks. Event ini dipicu di awal sesi untuk file yang dimuat secara eager dan dipicu lagi nanti saat file dimuat secara lazy, misalnya saat Claude mengakses subdirektori yang berisi `CLAUDE.md` bersarang atau saat aturan kondisional dengan frontmatter `paths:` cocok. Hook ini tidak mendukung pemblokiran atau kontrol keputusan. Hook ini berjalan secara asinkron untuk tujuan observabilitas.1364Dipicu ketika file `CLAUDE.md` atau `.claude/rules/*.md` dimuat ke dalam konteks. Event ini dipicu saat sesi dimulai untuk file yang dimuat segera dan dipicu lagi nanti ketika file dimuat secara lazy, misalnya ketika Claude mengakses subdirektori yang berisi `CLAUDE.md` bersarang atau ketika aturan kondisional dengan frontmatter `paths:` cocok. Hook ini tidak mendukung pemblokiran atau kontrol keputusan. Hook ini berjalan secara asinkron untuk keperluan observabilitas.

1365 1365 

1366Event ini tidak dipicu saat Claude [membaca `AGENTS.md` secara langsung](/docs/id/memory#agents-md) melalui pengaturan **Project instructions**. Event ini dipicu saat `CLAUDE.md` mengimpor `AGENTS.md` Anda, dengan `load_reason` diatur ke `include` seperti untuk file impor lainnya, dan saat `CLAUDE.md` adalah symlink ke file tersebut, sebagai pemuatan `CLAUDE.md` biasa.1366Event ini tidak dipicu ketika Claude [membaca `AGENTS.md` secara langsung](/docs/id/memory#agents-md) melalui pengaturan **Project instructions**. Event ini dipicu ketika `CLAUDE.md` mengimpor `AGENTS.md` Anda, dengan `load_reason` bernilai `include` seperti file impor lainnya, dan ketika `CLAUDE.md` adalah symlink ke file tersebut, sebagai pemuatan `CLAUDE.md` biasa.

1367 1367 

1368Matcher dijalankan terhadap `load_reason`. Misalnya, gunakan `"matcher": "session_start"` agar hanya dipicu untuk file yang dimuat di awal sesi, atau `"matcher": "path_glob_match|nested_traversal"` agar hanya dipicu untuk pemuatan lazy.1368Matcher dijalankan terhadap `load_reason`. Misalnya, gunakan `"matcher": "session_start"` untuk hanya memicu pada file yang dimuat saat sesi dimulai, atau `"matcher": "path_glob_match|nested_traversal"` untuk hanya memicu pada pemuatan lazy.

1369 1369 

1370<h4 id="instructionsloaded-input">1370<h4 id="instructionsloaded-input">

1371 Input InstructionsLoaded1371 Input InstructionsLoaded

1372</h4>1372</h4>

1373 1373 

1374Selain [kolom input umum](#common-input-fields), hook InstructionsLoaded menerima kolom-kolom berikut:1374Selain [field input umum](#common-input-fields), hook InstructionsLoaded menerima field berikut:

1375 1375 

1376| Kolom | Deskripsi |1376| Field | Deskripsi |

1377| :- | :- |1377| :- | :- |

1378| `file_path` | Path absolut ke file instruksi yang dimuat |1378| `file_path` | Path absolut ke file instruksi yang dimuat |

1379| `memory_type` | Cakupan file: `"User"`, `"Project"`, `"Local"`, atau `"Managed"` |1379| `memory_type` | Cakupan file: `"User"`, `"Project"`, `"Local"`, atau `"Managed"` |

1380| `load_reason` | Alasan file dimuat: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"`, atau `"compact"`. Nilai `"compact"` dipicu saat file instruksi dimuat ulang setelah event compaction |1380| `load_reason` | Alasan file dimuat: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"`, atau `"compact"`. Nilai `"compact"` dipicu ketika file instruksi dimuat ulang setelah event compaction |

1381| `globs` | Pola glob path dari frontmatter `paths:` file, jika ada. Hanya ada untuk pemuatan `path_glob_match` |1381| `globs` | Pola glob path dari frontmatter `paths:` file, jika ada. Hanya ada untuk pemuatan `path_glob_match` |

1382| `trigger_file_path` | Path ke file yang aksesnya memicu pemuatan ini, untuk pemuatan lazy |1382| `trigger_file_path` | Path ke file yang aksesnya memicu pemuatan ini, untuk pemuatan lazy |

1383| `parent_file_path` | Path ke file instruksi induk yang menyertakan file ini, untuk pemuatan `include` |1383| `parent_file_path` | Path ke file instruksi induk yang menyertakan file ini, untuk pemuatan `include` |


1398 Kontrol keputusan InstructionsLoaded1398 Kontrol keputusan InstructionsLoaded

1399</h4>1399</h4>

1400 1400 

1401Hook InstructionsLoaded tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir atau memodifikasi pemuatan instruksi. Claude Code membuang [kolom output JSON](#json-output) hook ini, seperti `systemMessage` dan `continue`. Gunakan event ini untuk log audit, pelacakan kepatuhan, atau observabilitas.1401Hook InstructionsLoaded tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir atau memodifikasi pemuatan instruksi. Claude Code membuang [field output JSON](#json-output)-nya, seperti `systemMessage` dan `continue`. Gunakan event ini untuk audit logging, pelacakan kepatuhan, atau observabilitas.

1402 1402 

1403<h3 id="userpromptsubmit">1403<h3 id="userpromptsubmit">

1404 UserPromptSubmit1404 UserPromptSubmit

1405</h3>1405</h3>

1406 1406 

1407Berjalan saat pengguna mengirimkan prompt, sebelum Claude memprosesnya. Ini memungkinkan Anda1407Berjalan ketika pengguna mengirimkan prompt, sebelum Claude memprosesnya. Ini memungkinkan Anda

1408menambahkan konteks tambahan berdasarkan prompt/percakapan, memvalidasi prompt, atau1408menambahkan konteks tambahan berdasarkan prompt/percakapan, memvalidasi prompt, atau

1409memblokir jenis prompt tertentu.1409memblokir jenis prompt tertentu.

1410 1410 

1411Hook `UserPromptSubmit` memiliki timeout default 30 detik untuk jenis `command`, `http`, dan `mcp_tool`, lebih singkat daripada default 600 detik untuk jenis-jenis tersebut pada sebagian besar event lain. Karena hook ini berjalan sebelum setiap prompt dan memblokir pemrosesan model hingga selesai, hook yang macet akan menghentikan sesi. Jika hook Anda memerlukan waktu lebih lama, atur kolom `timeout` dalam entri hook.1411Hook `UserPromptSubmit` memiliki timeout default 30 detik untuk jenis `command`, `http`, dan `mcp_tool`, lebih pendek daripada default 600 detik untuk jenis tersebut pada sebagian besar event lainnya. Karena hook ini berjalan sebelum setiap prompt dan memblokir pemrosesan model hingga selesai, hook yang macet akan menghentikan sesi. Jika hook Anda membutuhkan waktu lebih lama, atur field `timeout` dalam entri hook.

1412 1412 

1413Selain hook perintah yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), hook perintah, HTTP, atau tool MCP `UserPromptSubmit` yang mencapai timeout-nya akan dibatalkan dan output-nya, termasuk `additionalContext` apa pun, dibuang. Prompt tetap sampai ke Claude tanpa konteks tersebut. Transkrip menampilkan pemberitahuan yang menyebutkan nama hook, timeout yang terpicu, dan bahwa output-nya dibuang.1413Selain hook perintah yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), hook perintah, HTTP, atau tool MCP `UserPromptSubmit` yang mencapai timeout-nya akan dibatalkan dan output-nya, termasuk `additionalContext` apa pun, dibuang. Prompt tetap sampai ke Claude tanpa konteks tersebut. Transkrip menampilkan pemberitahuan yang menyebutkan nama hook, timeout yang terpicu, dan bahwa output telah dibuang.

1414 1414 

1415[Hook callback Agent SDK](/docs/id/agent-sdk/hooks) pada `UserPromptSubmit` yang mencapai timeout-nya memblokir prompt dengan pesan yang menyebutkan nama hook dan timeout-nya, karena callback di sana dapat berfungsi sebagai gerbang kebijakan yang tidak boleh gagal secara terbuka. Sesi tetap berlanjut. Sebelum v2.1.208, timeout callback pada event tersebut mengakhiri giliran dengan error eksekusi.1415[Hook callback Agent SDK](/docs/id/agent-sdk/hooks) pada `UserPromptSubmit` yang mencapai timeout-nya akan memblokir prompt dengan pesan yang menyebutkan nama hook dan timeout, karena callback di sana dapat bertindak sebagai gerbang kebijakan yang tidak boleh gagal dalam keadaan terbuka. Sesi tetap berlanjut. Sebelum v2.1.208, timeout callback pada event tersebut mengakhiri giliran dengan error eksekusi.

1416 1416 

1417<h4 id="userpromptsubmit-input">1417<h4 id="userpromptsubmit-input">

1418 Input UserPromptSubmit1418 Input UserPromptSubmit

1419</h4>1419</h4>

1420 1420 

1421Selain [kolom input umum](#common-input-fields), hook UserPromptSubmit menerima kolom `prompt` yang berisi teks yang dikirimkan pengguna. Konten tempelan yang diciutkan menjadi placeholder `[Pasted text #N]` tiba dalam keadaan diperluas di tempatnya. Dalam sesi tempat Claude Code [menandai teks tempelan untuk Claude](/docs/id/terminal-config#how-claude-treats-pasted-text), konten yang diperluas tersebut berada di antara baris `<pasted_content id="…">` dan baris `</pasted_content id="…">`, jadi perhitungkan baris-baris tersebut jika hook Anda mengurai prompt.1421Selain [field input umum](#common-input-fields), hook UserPromptSubmit menerima field `prompt` yang berisi teks yang dikirimkan pengguna. Konten tempelan yang diciutkan menjadi placeholder `[Pasted text #N]` tiba dalam keadaan diperluas di tempatnya. Dalam sesi tempat Claude Code [menandai teks tempelan untuk Claude](/docs/id/terminal-config#how-claude-treats-pasted-text), konten yang diperluas tersebut berada di antara baris `<pasted_content id="…">` dan baris `</pasted_content id="…">`, jadi perhitungkan baris-baris tersebut jika hook Anda mem-parse prompt.

1422 1422 

1423Hook UserPromptSubmit juga menerima `session_title` saat sesi memiliki judul kustom, dengan arti yang sama seperti [kolom `session_title` SessionStart](#sessionstart-input).1423Hook UserPromptSubmit juga menerima `session_title` ketika sesi memiliki judul kustom, dengan arti yang sama seperti [field `session_title` SessionStart](#sessionstart-input).

1424 1424 

1425```json theme={null}1425```json theme={null}

1426{1426{


1437 Kontrol keputusan UserPromptSubmit1437 Kontrol keputusan UserPromptSubmit

1438</h4>1438</h4>

1439 1439 

1440Hook `UserPromptSubmit` dapat mengontrol apakah prompt pengguna diproses dan menambahkan konteks. Semua [kolom output JSON](#json-output) tersedia.1440Hook `UserPromptSubmit` dapat mengontrol apakah prompt pengguna diproses dan menambahkan konteks. Semua [field output JSON](#json-output) tersedia.

1441 1441 

1442Ada dua cara untuk menambahkan konteks ke percakapan pada exit code 0:1442Ada dua cara untuk menambahkan konteks ke percakapan pada exit code 0:

1443 1443 

1444* **Stdout teks biasa**: Claude Code menambahkan stdout yang [diperlakukannya sebagai teks biasa](#exit-code-0) ke konteks Claude1444* **Stdout teks biasa**: Claude Code menambahkan stdout yang [diperlakukannya sebagai teks biasa](#exit-code-0) ke konteks Claude

1445* **JSON dengan `additionalContext`**: gunakan format JSON di bawah ini untuk kontrol lebih. Kolom `additionalContext` ditambahkan sebagai konteks1445* **JSON dengan `additionalContext`**: gunakan format JSON di bawah untuk kontrol lebih. Field `additionalContext` ditambahkan sebagai konteks

1446 1446 

1447Kedua saluran tersebut tidak menghasilkan entri transkrip yang terlihat. Stdout biasa dan nilai `additionalContext` masing-masing disisipkan sebagai system reminder yang diawali dengan nama hook; Claude membaca keduanya. Untuk memastikan pengirimannya, periksa [log debug](#debug-hooks).1447Tidak satu pun saluran tersebut menghasilkan entri transkrip yang terlihat. Stdout biasa dan nilai `additionalContext` masing-masing disisipkan sebagai system reminder yang diawali dengan nama hook; Claude membaca keduanya. Untuk memastikan pengiriman, periksa [log debug](#debug-hooks).

1448 1448 

1449Untuk memblokir prompt, kembalikan objek JSON dengan `decision` diatur ke `"block"`:1449Untuk memblokir prompt, kembalikan objek JSON dengan `decision` bernilai `"block"`:

1450 1450 

1451| Kolom | Deskripsi |1451| Field | Deskripsi |

1452| :- | :- |1452| :- | :- |

1453| `decision` | `"block"` menghentikan prompt sebelum sampai ke Claude. Hilangkan agar prompt dapat berlanjut |1453| `decision` | `"block"` menghentikan prompt sebelum sampai ke Claude. Hilangkan untuk mengizinkan prompt berlanjut |

1454| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"`. Tidak ditambahkan ke konteks |1454| `reason` | Ditampilkan kepada pengguna ketika `decision` bernilai `"block"`. Tidak ditambahkan ke konteks |

1455| `additionalContext` | String yang ditambahkan ke konteks Claude bersama prompt yang dikirimkan. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |1455| `additionalContext` | String yang ditambahkan ke konteks Claude bersama prompt yang dikirimkan. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

1456| `sessionTitle` | Mengatur judul sesi. Gunakan untuk memberi nama sesi secara otomatis berdasarkan konten prompt |1456| `sessionTitle` | Mengatur judul sesi. Gunakan untuk memberi nama sesi secara otomatis berdasarkan konten prompt |

1457| `suppressOriginalPrompt` | Jika `true` saat hook memblokir prompt, teks prompt tidak disertakan dalam pesan blokir. Lihat [Apa yang ditinggalkan oleh prompt yang diblokir](#what-a-blocked-prompt-leaves-behind) |1457| `suppressOriginalPrompt` | Jika `true` ketika hook memblokir prompt, teks prompt tidak dimasukkan ke pesan blokir. Lihat [Apa yang ditinggalkan oleh prompt yang diblokir](#what-a-blocked-prompt-leaves-behind) |

1458 1458 

1459Hook yang memblokir dengan keluar dengan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan blokir menampilkan teks stderr kepada pengguna, dan teks tersebut tidak ditambahkan ke konteks.1459Hook yang memblokir dengan keluar menggunakan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan blokir menampilkan teks stderr kepada pengguna, dan teks tersebut tidak ditambahkan ke konteks.

1460 1460 

1461```json theme={null}1461```json theme={null}

1462{1462{


1475 Apa yang ditinggalkan oleh prompt yang diblokir1475 Apa yang ditinggalkan oleh prompt yang diblokir

1476</h4>1476</h4>

1477 1477 

1478Prompt yang diblokir tidak pernah sampai ke Claude, tetapi teksnya tidak dihapus dari semua tempat. Secara default, pesan blokir yang ditampilkan kepada pengguna diakhiri dengan `Original prompt:` diikuti teks yang dikirimkan, dan Claude Code menulis pesan tersebut ke file transkrip sesi di disk. Agar teks tidak disertakan dalam pesan, cetak JSON dengan `"suppressOriginalPrompt": true` di dalam `hookSpecificOutput`. Ini berfungsi baik saat hook memblokir dengan `decision: "block"` maupun dengan keluar dengan kode 2. Hook exit-2 yang tidak mencetak JSON selalu menyertakan teks prompt dalam pesan blokirnya.1478Prompt yang diblokir tidak pernah sampai ke Claude, tetapi teksnya tidak dihapus dari semua tempat. Secara default, pesan blokir yang ditampilkan kepada pengguna diakhiri dengan `Original prompt:` diikuti teks yang dikirimkan, dan Claude Code menulis pesan tersebut ke file transkrip sesi di disk. Untuk menghilangkan teks dari pesan, cetak JSON dengan `"suppressOriginalPrompt": true` di dalam `hookSpecificOutput`. Ini berfungsi baik ketika hook memblokir dengan `decision: "block"` maupun dengan keluar menggunakan kode 2. Hook exit-2 yang tidak mencetak JSON selalu menyertakan teks prompt dalam pesan blokirnya.

1479 1479 

1480`suppressOriginalPrompt` hanya mengubah pesan blokir. Teks yang dikirimkan masih dapat muncul di file lokal seperti transkrip sesi dan riwayat prompt Anda, jadi hook pemblokiran bukan cara untuk menjauhkan rahasia dari disk. Untuk membatasi atau menghapus file-file tersebut, lihat [Penyimpanan plaintext](/docs/id/claude-directory#plaintext-storage) dan [Menghapus data lokal](/docs/id/claude-directory#clear-local-data).1480`suppressOriginalPrompt` hanya mengubah pesan blokir. Teks yang dikirimkan masih dapat muncul di file lokal seperti transkrip sesi dan riwayat prompt Anda, sehingga hook yang memblokir bukanlah cara untuk menjaga rahasia agar tidak tersimpan di disk. Untuk membatasi atau menghapus file tersebut, lihat [Penyimpanan plaintext](/docs/id/claude-directory#plaintext-storage) dan [Menghapus data lokal](/docs/id/claude-directory#clear-local-data).

1481 1481 

1482<h3 id="userpromptexpansion">1482<h3 id="userpromptexpansion">

1483 UserPromptExpansion1483 UserPromptExpansion

1484</h3>1484</h3>

1485 1485 

1486Berjalan saat perintah yang diketik pengguna diperluas menjadi prompt sebelum sampai ke Claude. Gunakan ini untuk memblokir perintah tertentu agar tidak dipanggil secara langsung, menyisipkan konteks untuk skill tertentu, atau mencatat perintah mana yang dipanggil pengguna. Misalnya, hook yang cocok dengan `deploy` dapat memblokir `/deploy` kecuali ada file persetujuan, atau hook yang cocok dengan skill review dapat menambahkan daftar periksa review tim sebagai `additionalContext`.1486Berjalan ketika perintah yang diketik pengguna diperluas menjadi prompt sebelum sampai ke Claude. Gunakan ini untuk memblokir perintah tertentu agar tidak dipanggil secara langsung, menyisipkan konteks untuk skill tertentu, atau mencatat perintah mana yang dipanggil pengguna. Misalnya, hook yang cocok dengan `deploy` dapat memblokir `/deploy` kecuali ada file persetujuan, atau hook yang cocok dengan skill review dapat menambahkan daftar periksa review tim sebagai `additionalContext`.

1487 1487 

1488Event ini mencakup jalur yang tidak dicakup `PreToolUse`: hook `PreToolUse` yang cocok dengan tool `Skill` hanya dipicu saat Claude memanggil tool tersebut, tetapi mengetik `/skillname` secara langsung melewati `PreToolUse`. `UserPromptExpansion` dipicu pada jalur langsung tersebut.1488Event ini mencakup jalur yang tidak dicakup `PreToolUse`: hook `PreToolUse` yang cocok dengan tool `Skill` hanya dipicu ketika Claude memanggil tool tersebut, tetapi mengetik `/skillname` secara langsung melewati `PreToolUse`. `UserPromptExpansion` dipicu pada jalur langsung tersebut.

1489 1489 

1490Dicocokkan dengan `command_name`. Biarkan matcher kosong agar dipicu pada setiap perintah bertipe prompt.1490Mencocokkan pada `command_name`. Biarkan matcher kosong untuk memicu pada setiap perintah jenis prompt.

1491 1491 

1492<h4 id="userpromptexpansion-input">1492<h4 id="userpromptexpansion-input">

1493 Input UserPromptExpansion1493 Input UserPromptExpansion

1494</h4>1494</h4>

1495 1495 

1496Selain [kolom input umum](#common-input-fields), hook UserPromptExpansion menerima `expansion_type`, `command_name`, `command_args`, `command_source`, dan string `prompt` asli. Kolom `expansion_type` bernilai `slash_command` untuk skill dan perintah kustom, atau `mcp_prompt` untuk prompt server MCP.1496Selain [field input umum](#common-input-fields), hook UserPromptExpansion menerima `expansion_type`, `command_name`, `command_args`, `command_source`, dan string `prompt` asli. Field `expansion_type` bernilai `slash_command` untuk skill dan perintah kustom, atau `mcp_prompt` untuk prompt server MCP.

1497 1497 

1498```json theme={null}1498```json theme={null}

1499{1499{


1514 Kontrol keputusan UserPromptExpansion1514 Kontrol keputusan UserPromptExpansion

1515</h4>1515</h4>

1516 1516 

1517Hook `UserPromptExpansion` dapat memblokir perluasan atau menambahkan konteks. Semua [kolom output JSON](#json-output) tersedia.1517Hook `UserPromptExpansion` dapat memblokir perluasan atau menambahkan konteks. Semua [field output JSON](#json-output) tersedia.

1518 1518 

1519| Kolom | Deskripsi |1519| Field | Deskripsi |

1520| :- | :- |1520| :- | :- |

1521| `decision` | `"block"` mencegah perintah diperluas. Hilangkan agar dapat berlanjut |1521| `decision` | `"block"` mencegah perintah diperluas. Hilangkan untuk mengizinkannya berlanjut |

1522| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"` |1522| `reason` | Ditampilkan kepada pengguna ketika `decision` bernilai `"block"` |

1523| `additionalContext` | String yang ditambahkan ke konteks Claude bersama prompt yang diperluas. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |1523| `additionalContext` | String yang ditambahkan ke konteks Claude bersama prompt yang diperluas. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

1524 1524 

1525Hook yang memblokir dengan keluar dengan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan blokir menampilkan teks stderr kepada pengguna.1525Hook yang memblokir dengan keluar menggunakan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan blokir menampilkan teks stderr kepada pengguna.

1526 1526 

1527```json theme={null}1527```json theme={null}

1528{1528{


1539 MessageDisplay1539 MessageDisplay

1540</h3>1540</h3>

1541 1541 

1542Berjalan saat pesan asisten di-stream ke layar. Claude Code menampilkan pesan secara bertahap: setiap kali sekelompok baris yang baru selesai siap dirender, hook berjalan sekali dengan baris-baris tersebut dan Claude Code merender teks pengganti dari hook di tempatnya. Pesan yang panjang menghasilkan beberapa panggilan; pesan yang pendek mungkin hanya menghasilkan satu.1542Berjalan saat pesan asisten di-stream ke layar. Claude Code menampilkan pesan secara bertahap: setiap kali sekumpulan baris yang baru selesai siap untuk dirender, hook berjalan sekali dengan baris-baris tersebut dan Claude Code merender teks pengganti dari hook di tempatnya. Pesan panjang menghasilkan beberapa panggilan; pesan pendek mungkin hanya menghasilkan satu.

1543 1543 

1544Gunakan MessageDisplay untuk:1544Gunakan MessageDisplay untuk:

1545 1545 


1547* mengubah teks yang ditampilkan aplikasi Agent SDK kepada penggunanya1547* mengubah teks yang ditampilkan aplikasi Agent SDK kepada penggunanya

1548* menyamarkan kunci API atau hostname internal dari respons Claude1548* menyamarkan kunci API atau hostname internal dari respons Claude

1549 1549 

1550Claude Code menahan setiap kelompok hingga hook Anda mengembalikan hasil, jadi pastikan hook tetap cepat. Jika hook gagal atau mengalami timeout, Claude Code menampilkan teks asli. Timeout default untuk event ini adalah 10 detik; jika hook Anda memerlukan waktu lebih lama, atur kolom `timeout` dalam entri hook.1550Claude Code menahan setiap kumpulan hingga hook Anda kembali, jadi jaga agar hook tetap cepat. Jika hook gagal atau mengalami timeout, Claude Code menampilkan teks asli. Timeout default untuk event ini adalah 10 detik; jika hook Anda membutuhkan waktu lebih lama, atur field `timeout` dalam entri hook.

1551 1551 

1552MessageDisplay hanya untuk tampilan: teks pengganti hanya mengubah apa yang dirender di layar. Transkrip dan apa yang dilihat Claude tetap menggunakan teks asli, sehingga Claude tidak pernah melihat teks pengganti, dan mode verbose menampilkan teks asli. Hook hanya menerima teks pesan asisten, sehingga hasil tool dan teks yang Anda ketik dirender tanpa perubahan.1552MessageDisplay hanya untuk tampilan: teks pengganti hanya mengubah apa yang dirender di layar. Transkrip dan apa yang dilihat Claude tetap menggunakan teks asli, sehingga Claude tidak pernah melihat penggantinya, dan mode verbose menampilkan teks asli. Hook hanya menerima teks pesan asisten, sehingga hasil tool dan teks yang Anda ketik dirender tanpa perubahan.

1553 1553 

1554MessageDisplay tidak mendukung matcher dan dipicu untuk setiap pesan asisten yang men-stream teks; pesan tanpa teks, seperti respons yang hanya berisi panggilan tool, tidak memicunya.1554MessageDisplay tidak mendukung matcher dan dipicu untuk setiap pesan asisten yang men-stream teks; pesan tanpa teks, seperti respons yang hanya berisi panggilan tool, tidak memicunya.

1555 1555 

1556Dalam run non-interaktif, termasuk kueri Agent SDK dan `claude -p`, MessageDisplay berjalan sekali per pesan asisten, bukan sekali per kelompok baris. Panggilan tunggal tersebut tiba setelah pesan selesai dan membawa teks pesan lengkap: `index` bernilai `0`, `final` bernilai `true`, dan `delta` berisi seluruh pesan. Hook yang mengumpulkan teks `delta` untuk setiap pesan menerima total teks yang sama dalam kedua mode.1556Dalam run non-interaktif, termasuk kueri Agent SDK dan `claude -p`, MessageDisplay berjalan sekali per pesan asisten, bukan sekali per kumpulan baris. Panggilan tunggal tersebut tiba setelah pesan selesai dan membawa seluruh teks pesan: `index` bernilai `0`, `final` bernilai `true`, dan `delta` berisi seluruh pesan. Hook yang mengumpulkan teks `delta` untuk setiap pesan menerima total teks yang sama di kedua mode.

1557 1557 

1558<h4 id="messagedisplay-input">1558<h4 id="messagedisplay-input">

1559 Input MessageDisplay1559 Input MessageDisplay

1560</h4>1560</h4>

1561 1561 

1562Selain [kolom input umum](#common-input-fields), hook MessageDisplay menerima pengidentifikasi untuk giliran dan pesan, posisi panggilan ini dalam pesan, dan teks baru dalam `delta`. Batas kelompok bergantung pada cara teks di-stream, jadi gunakan `index` dan `final` untuk melacak kemajuan dalam sebuah pesan alih-alih mengharapkan baris dikelompokkan dengan cara tertentu.1562Selain [field input umum](#common-input-fields), hook MessageDisplay menerima pengidentifikasi untuk giliran dan pesan, posisi panggilan ini di dalam pesan, dan teks baru dalam `delta`. Batas kumpulan bergantung pada cara teks di-stream, jadi gunakan `index` dan `final` untuk melacak kemajuan dalam pesan alih-alih mengharapkan baris dikelompokkan dengan cara tertentu.

1563 1563 

1564| Kolom | Deskripsi |1564| Field | Deskripsi |

1565| :- | :- |1565| :- | :- |

1566| `turn_id` | UUID giliran saat ini |1566| `turn_id` | UUID dari giliran saat ini |

1567| `message_id` | UUID pesan asisten yang sedang ditampilkan. Stabil di setiap kelompok dari pesan yang sama. Ini bukan id API `msg_…`, sehingga tidak dapat dikorelasikan dengan id pesan transkrip |1567| `message_id` | UUID dari pesan asisten yang sedang ditampilkan. Stabil di setiap kumpulan dari pesan yang sama. Ini bukan id `msg_…` API, sehingga tidak dapat dikorelasikan dengan id pesan transkrip |

1568| `index` | Indeks berbasis nol dari kelompok ini dalam pesan |1568| `index` | Indeks berbasis nol dari kumpulan ini di dalam pesan |

1569| `final` | `true` pada kelompok terakhir pesan. Setiap pesan memiliki tepat satu kelompok terakhir |1569| `final` | `true` pada kumpulan terakhir pesan. Setiap pesan memiliki tepat satu kumpulan final |

1570| `delta` | Baris-baris yang baru selesai sejak kelompok sebelumnya, termasuk baris baru penutup. Selalu berupa baris utuh, kecuali kelompok terakhir yang dapat berakhir di tengah baris. Dalam run interaktif, delta kelompok terakhir kosong saat pesan berakhir dengan baris baru, jadi perlakukan `final`, bukan delta yang tidak kosong, sebagai sinyal akhir pesan. Dalam run Agent SDK dan `claude -p`, panggilan tunggal membawa seluruh pesan |1570| `delta` | Baris-baris yang baru selesai sejak kumpulan sebelumnya, termasuk baris baru penutup. Selalu berupa baris utuh, kecuali kumpulan final yang dapat berakhir di tengah baris. Dalam run interaktif, delta kumpulan final kosong ketika pesan berakhir dengan baris baru, jadi perlakukan `final`, bukan delta yang tidak kosong, sebagai sinyal akhir pesan. Dalam run Agent SDK dan `claude -p`, panggilan tunggal membawa seluruh pesan |

1571 1571 

1572```json theme={null}1572```json theme={null}

1573{1573{


1587 Output MessageDisplay1587 Output MessageDisplay

1588</h4>1588</h4>

1589 1589 

1590Selain [kolom output JSON](#json-output) yang tersedia untuk semua hook, hook MessageDisplay dapat mengembalikan `displayContent` untuk menggantikan delta di layar:1590Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook MessageDisplay dapat mengembalikan `displayContent` untuk menggantikan delta di layar:

1591 1591 

1592| Kolom | Deskripsi |1592| Field | Deskripsi |

1593| :- | :- |1593| :- | :- |

1594| `displayContent` | Teks yang ditampilkan sebagai pengganti delta. Hilangkan untuk menampilkan teks asli |1594| `displayContent` | Teks yang ditampilkan sebagai pengganti delta. Hilangkan untuk menampilkan teks asli |

1595 1595 

1596Hook MessageDisplay tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir pesan atau mengubah apa yang disimpan dalam transkrip atau dikirim ke Claude. Claude Code menindaklanjuti `displayContent` dari output JSON-nya dan membuang `systemMessage` dan `continue`.1596Hook MessageDisplay tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir pesan atau mengubah apa yang disimpan di transkrip atau dikirim ke Claude. Claude Code menindaklanjuti `displayContent` dari output JSON-nya dan membuang `systemMessage` dan `continue`.

1597 1597 

1598Contoh ini menghapus format markdown dari respons Claude untuk tampilan teks biasa. Skrip membaca setiap kelompok dari stdin, menghapus penanda tebal dan backtick kode inline dari `delta`, lalu mengembalikan hasilnya sebagai `displayContent`.1598Contoh ini menghapus format markdown dari respons Claude untuk tampilan teks biasa. Skrip membaca setiap kumpulan dari stdin, menghapus penanda tebal dan backtick kode inline dari `delta`, dan mengembalikan hasilnya sebagai `displayContent`.

1599 1599 

1600<Tabs>1600<Tabs>

1601 <Tab title="macOS/Linux">1601 <Tab title="macOS/Linux">

1602 Daftarkan hook perintah untuk event ini di file pengaturan Anda:1602 Daftarkan hook perintah untuk event tersebut di file pengaturan Anda:

1603 1603 

1604 ```json theme={null}1604 ```json theme={null}

1605 {1605 {


1654 }1654 }

1655 ```1655 ```

1656 1656 

1657 Flag `-NoProfile` melewatkan pemuatan profil PowerShell Anda sehingga hook dimulai dengan cepat, dan `-ExecutionPolicy Bypass` memungkinkan PowerShell menjalankan file skrip lokal.1657 Flag `-NoProfile` melewati pemuatan profil PowerShell Anda agar hook dimulai dengan cepat, dan `-ExecutionPolicy Bypass` memungkinkan PowerShell menjalankan file skrip lokal.

1658 1658 

1659 Simpan skrip ini ke `.claude/hooks/plain-display.ps1` di proyek Anda:1659 Simpan skrip ini ke `.claude/hooks/plain-display.ps1` di proyek Anda:

1660 1660 


1671 </Tab>1671 </Tab>

1672</Tabs>1672</Tabs>

1673 1673 

1674Kelompok tanpa markdown diteruskan tanpa perubahan. Jika skrip gagal, misalnya karena `jq` tidak ada, Claude Code menampilkan teks asli dan mencatat kegagalan tersebut hanya di [output debug](#debug-hooks), bukan di sesi.1674Kumpulan tanpa markdown diteruskan tanpa perubahan. Jika skrip gagal, misalnya karena `jq` tidak ada, Claude Code menampilkan teks asli dan mencatat kegagalan hanya di [output debug](#debug-hooks), bukan di sesi.

1675 1675 

1676<h3 id="pretooluse">1676<h3 id="pretooluse">

1677 PreToolUse1677 PreToolUse

1678</h3>1678</h3>

1679 1679 

1680Berjalan setelah Claude membuat parameter tool dan sebelum memproses panggilan tool. Dicocokkan dengan nama tool apa pun kecuali `EndConversation`: tool bawaan seperti `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion`, dan `ExitPlanMode`, serta [nama tool MCP](#match-mcp-tools) apa pun.1680Berjalan setelah Claude membuat parameter tool dan sebelum memproses panggilan tool. Mencocokkan nama tool apa pun kecuali `EndConversation`: tool bawaan seperti `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion`, dan `ExitPlanMode`, serta [nama tool MCP](#match-mcp-tools) apa pun.

1681 1681 

1682Untuk menjalankan hook saat file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged) alih-alih mencocokkan tool pengeditan file berdasarkan nama. Tidak seperti PreToolUse, Claude Code menjalankan hook FileChanged setelah perubahan terjadi, dan hook tersebut tidak memiliki kontrol keputusan, sehingga tidak dapat memblokir penulisan.1682Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged) alih-alih mencocokkan tool pengedit file berdasarkan nama. Tidak seperti PreToolUse, Claude Code menjalankan hook FileChanged setelah perubahan terjadi, dan hook tersebut tidak memiliki kontrol keputusan, sehingga tidak dapat memblokir penulisan.

1683 1683 

1684<Warning>1684<Warning>

1685 PreToolUse hanya berjalan saat Claude memanggil tool. File yang Anda [referensikan dengan `@` dalam prompt](/docs/id/common-workflows#reference-files-and-directories) ditambahkan tanpa panggilan tool apa pun: Claude Code menyisipkan isinya saat membangun prompt, sehingga tidak ada hook PreToolUse yang dipicu untuk file tersebut, termasuk hook yang cocok dengan `Read`. Untuk memblokir path tertentu dari referensi `@`, gunakan [aturan deny `Read`](/docs/id/permissions#read-and-edit) sebagai gantinya.1685 PreToolUse hanya berjalan ketika Claude memanggil tool. File yang Anda [referensikan dengan `@` di prompt Anda](/docs/id/common-workflows#reference-files-and-directories) ditambahkan tanpa panggilan tool apa pun: Claude Code menyisipkan isinya saat membangun prompt, sehingga tidak ada hook PreToolUse yang dipicu untuk file tersebut, termasuk hook yang cocok dengan `Read`. Untuk memblokir path tertentu dari referensi `@`, gunakan [aturan deny `Read`](/docs/id/permissions#read-and-edit) sebagai gantinya.

1686 1686 

1687 PreToolUse juga tidak dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).1687 PreToolUse juga tidak dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).

1688</Warning>1688</Warning>

1689 1689 

1690Gunakan [kontrol keputusan PreToolUse](#pretooluse-decision-control) untuk mengizinkan, menolak, meminta konfirmasi, atau menunda panggilan tool.1690Gunakan [kontrol keputusan PreToolUse](#pretooluse-decision-control) untuk mengizinkan, menolak, meminta konfirmasi, atau menangguhkan panggilan tool.

1691 1691 

1692[Hook callback Agent SDK](/docs/id/agent-sdk/hooks) pada `PreToolUse` yang melebihi timeout-nya memblokir panggilan tool, dan Claude menerima hasil error yang menyebutkan timeout tersebut. Deny eksplisit yang dikembalikan oleh hook lain tetap diutamakan.1692[Hook callback Agent SDK](/docs/id/agent-sdk/hooks) pada `PreToolUse` yang melebihi timeout-nya akan memblokir panggilan tool, dan Claude menerima hasil error yang menyebutkan timeout tersebut. Deny eksplisit yang dikembalikan oleh hook lain tetap diutamakan.

1693 1693 

1694<h4 id="pretooluse-input">1694<h4 id="pretooluse-input">

1695 Input PreToolUse1695 Input PreToolUse

1696</h4>1696</h4>

1697 1697 

1698Selain [kolom input umum](#common-input-fields), hook PreToolUse menerima `tool_name`, `tool_input`, dan `tool_use_id`.1698Selain [field input umum](#common-input-fields), hook PreToolUse menerima `tool_name`, `tool_input`, dan `tool_use_id`.

1699 1699 

1700Untuk [tool MCP](#match-mcp-tools), input juga membawa `mcp_server`, sebuah objek dengan `name` server dan `source` yang menyatakan dari mana definisi server berasal. Nilai `source` mencakup `plugin`, `sdk`, dan cakupan konfigurasi seperti `user` dan `project`. [`McpServerProvenance`](/docs/id/agent-sdk/typescript#mcpserverprovenance) dalam referensi Agent SDK mencantumkan semuanya dan menjelaskan cara memperlakukan nilai yang tidak Anda kenali. Dasarkan keputusan kepercayaan pada `source`, bukan pada `name` atau prefiks nama tool `mcp__<server>__`. Kolom `mcp_server` memerlukan Claude Code v2.1.274 atau yang lebih baru.1700Untuk [tool MCP](#match-mcp-tools), input juga membawa `mcp_server`, sebuah objek dengan `name` server dan `source` yang menyatakan asal definisi server tersebut. Nilai `source` mencakup `plugin`, `sdk`, dan cakupan konfigurasi seperti `user` dan `project`. [`McpServerProvenance`](/docs/id/agent-sdk/typescript#mcpserverprovenance) dalam referensi Agent SDK mencantumkan semuanya dan menjelaskan cara menangani nilai yang tidak Anda kenali. Dasarkan keputusan kepercayaan pada `source`, bukan pada `name` atau prefiks nama tool `mcp__<server>__`. Field `mcp_server` memerlukan Claude Code v2.1.274 atau yang lebih baru.

1701 1701 

1702Untuk tool file `Write`, `Edit`, dan `Read`, `tool_input.file_path` selalu absolut:1702Untuk tool file `Write`, `Edit`, dan `Read`, `tool_input.file_path` selalu absolut:

1703 1703 

1704* Claude Code memperluas `~` dan path relatif sebelum hook berjalan, sehingga hook yang mencocokkan path tidak dapat dilewati melalui `~` atau penulisan relatif dari path yang sama1704* Claude Code memperluas `~` dan path relatif sebelum hook berjalan, sehingga hook yang mencocokkan path tidak dapat dilewati melalui `~` atau penulisan relatif dari path yang sama

1705* Di Windows, path tiba dengan pemisah backslash, bahkan saat hook Anda berjalan di Git Bash tempat `$PWD` terlihat seperti `/c/project`1705* Di Windows, path tiba dengan pemisah backslash, bahkan ketika hook Anda berjalan di bawah Git Bash tempat `$PWD` terlihat seperti `/c/project`

1706* Perbandingan yang ditulis dengan garis miring maju, seperti pemeriksaan `/src/`, tidak pernah cocok dengan path backslash, dan panggilan tool berlanjut seolah-olah hook tidak memiliki apa pun untuk diblokir1706* Perbandingan yang ditulis dengan garis miring maju, seperti pemeriksaan `/src/`, tidak pernah cocok dengan path backslash, dan panggilan tool berlanjut seolah-olah hook tidak memiliki apa pun untuk diblokir

1707* Normalkan pemisah sebelum membandingkan: `FILE_PATH="${FILE_PATH//\\//}"` di Bash, atau `file_path.replace("\\", "/")` di Python, lalu cocokkan segmen path seperti `/src/` alih-alih menambatkan dengan `^`, karena path bersifat absolut1707* Normalisasikan pemisah sebelum membandingkan: `FILE_PATH="${FILE_PATH//\\//}"` di Bash, atau `file_path.replace("\\", "/")` di Python, lalu cocokkan segmen path seperti `/src/` alih-alih menjangkar dengan `^`, karena path bersifat absolut

1708 1708 

1709Panggilan `Write` di Windows mengirimkan:1709Panggilan `Write` di Windows mengirimkan:

1710 1710 


1720}1720}

1721```1721```

1722 1722 

1723Kolom `tool_input` bergantung pada tool-nya:1723Field `tool_input` bergantung pada tool:

1724 1724 

1725<a id="bash" />1725<a id="bash" />

1726 1726 


1728 Bash1728 Bash

1729</h5>1729</h5>

1730 1730 

1731Mengeksekusi perintah shell.1731Menjalankan perintah shell.

1732 1732 

1733| Kolom | Tipe | Contoh | Deskripsi |1733| Field | Tipe | Contoh | Deskripsi |

1734| :- | :- | :- | :- |1734| :- | :- | :- | :- |

1735| `command` | string | `"npm test"` | Perintah shell yang akan dieksekusi |1735| `command` | string | `"npm test"` | Perintah shell yang akan dijalankan |

1736| `description` | string | `"Run test suite"` | Deskripsi opsional tentang apa yang dilakukan perintah |1736| `description` | string | `"Run test suite"` | Deskripsi opsional tentang apa yang dilakukan perintah |

1737| `timeout` | number | `120000` | Timeout opsional dalam milidetik. Nilai di atas [maksimum](/docs/id/tools-reference#bash-tool-behavior) dikurangi ke nilai maksimum alih-alih ditolak |1737| `timeout` | number | `120000` | Timeout opsional dalam milidetik. Nilai di atas [maksimum](/docs/id/tools-reference#bash-tool-behavior) dikurangi menjadi nilai maksimum alih-alih ditolak |

1738| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |1738| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |

1739 1739 

1740Saat perintah Bash mengubah file di repositori Git, Claude Code dapat merekam apa yang berubah. Claude Code merekam perubahan di setiap mode izin saat pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled) mengaktifkan perekaman; entri pengaturan tersebut menyebutkan file mana yang dapat mengaturnya. Jika tidak, Claude Code hanya merekamnya dalam auto mode dan mode `bypassPermissions`, dan hanya saat Claude Code mengarahkan Claude untuk mengedit file melalui Bash. Atur `bashEditDiffEnabled` ke `false` untuk mematikan perekaman. Perintah latar belakang dan perintah read-only tidak membawa diff.1740Ketika perintah Bash mengubah file di repositori Git, Claude Code dapat merekam apa yang berubah. Claude Code merekam perubahan di setiap mode izin ketika pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled) mengaktifkan perekaman; entri pengaturan tersebut menyebutkan file mana yang dapat mengaturnya. Jika tidak, perubahan hanya direkam dalam auto mode dan mode `bypassPermissions`, dan hanya ketika Claude Code mengarahkan Claude untuk mengedit file melalui Bash. Atur `bashEditDiffEnabled` ke `false` untuk mematikan perekaman. Perintah latar belakang dan perintah read-only tidak membawa diff.

1741 1741 

1742[Hook PostToolUse](#posttooluse) Anda kemudian menerima file yang berubah dalam `tool_response.bashEditDiff`. Daftar tersebut mencakup apa yang berubah di bawah repositori selama perintah berjalan. File yang diabaikan Git dan file di submodule tidak dicantumkan. Memerlukan Claude Code v2.1.269 atau yang lebih baru.1742[Hook PostToolUse](#posttooluse) Anda kemudian menerima file yang berubah di `tool_response.bashEditDiff`. Daftar tersebut mencakup apa yang berubah di bawah repositori selama perintah berjalan. File yang diabaikan Git dan file di submodule tidak dicantumkan. Memerlukan Claude Code v2.1.269 atau yang lebih baru.

1743 1743 

1744<Note>1744<Note>

1745 Daftar ini bersifat upaya terbaik dan dalam beta publik. Claude Code dapat melewatkan perubahan, menyertakan file yang diubah oleh proses lain pada saat yang sama, atau berhenti pada batas ukurannya. Bentuk kolom dapat berubah. Gunakan daftar ini untuk menemukan apa yang perlu ditinjau, bukan untuk menegakkan kebijakan.1745 Daftar ini bersifat upaya terbaik dan dalam beta publik. Claude Code dapat melewatkan perubahan, menyertakan file yang diubah oleh proses lain pada saat yang sama, atau berhenti pada batas ukurannya. Bentuk field dapat berubah. Gunakan daftar ini untuk menemukan apa yang perlu ditinjau, bukan untuk menegakkan kebijakan.

1746</Note>1746</Note>

1747 1747 

1748`changedFiles` dan `files` mencantumkan apa yang diubah oleh perintah; kolom-kolom lainnya menyatakan seberapa lengkap dan seberapa andal daftar tersebut.1748`changedFiles` dan `files` mencantumkan apa yang diubah perintah; field lainnya menyatakan seberapa lengkap dan seberapa andal daftar tersebut.

1749 1749 

1750| Kolom | Tipe | Contoh | Deskripsi |1750| Field | Tipe | Contoh | Deskripsi |

1751| :- | :- | :- | :- |1751| :- | :- | :- | :- |

1752| `changedFiles` | array | `["/path/to/src/app.ts"]` | Path absolut file-file yang diubah oleh perintah, paling banyak 200. Ada setiap kali `files` berisi diff atau `moreFiles` di atas nol |1752| `changedFiles` | array | `["/path/to/src/app.ts"]` | Path absolut dari file yang diubah perintah, paling banyak 200. Ada setiap kali `files` berisi diff atau `moreFiles` lebih dari nol |

1753| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diff dari hingga 5 file yang berubah, untuk ditampilkan. `created` atau `deleted` bernilai `true` untuk file yang ditambahkan atau dihapus oleh perintah |1753| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diff dari hingga 5 file yang berubah, untuk ditampilkan. `created` atau `deleted` bernilai `true` untuk file yang ditambahkan atau dihapus perintah |

1754| `moreFiles` | number | `2` | Jumlah file yang berubah tanpa diff di `files` |1754| `moreFiles` | number | `2` | Jumlah file yang berubah tanpa diff di `files` |

1755| `unavailable` | boolean | `true` | Diatur saat diff tidak lengkap atau tidak dapat diambil |1755| `unavailable` | boolean | `true` | Diatur ketika diff tidak lengkap atau tidak dapat diambil |

1756| `skipped` | boolean | `true` | Diatur untuk perintah Git yang memindahkan working tree, seperti `git checkout` atau `git stash`, sehingga Claude Code tidak mengambil diff |1756| `skipped` | boolean | `true` | Diatur untuk perintah Git yang memindahkan working tree, seperti `git checkout` atau `git stash`, sehingga Claude Code tidak mengambil diff |

1757| `shared` | boolean | `true` | Diatur saat panggilan tool Bash lain, seperti milik subagent, berjalan di repositori yang sama pada saat yang sama, sehingga beberapa perubahan yang tercantum mungkin berasal dari perintah tersebut |1757| `shared` | boolean | `true` | Diatur ketika panggilan tool Bash lain, seperti milik subagent, berjalan di repositori yang sama pada saat yang sama, sehingga beberapa perubahan yang tercantum mungkin berasal dari perintah tersebut |

1758 1758 

1759<a id="powershell" />1759<a id="powershell" />

1760 1760 


1762 PowerShell1762 PowerShell

1763</h5>1763</h5>

1764 1764 

1765Mengeksekusi perintah PowerShell. Lihat [tool PowerShell](/docs/id/tools-reference#powershell-tool) untuk ketersediaan berdasarkan platform.1765Menjalankan perintah PowerShell. Lihat [tool PowerShell](/docs/id/tools-reference#powershell-tool) untuk ketersediaan berdasarkan platform.

1766 1766 

1767Kolom-kolomnya sama dengan tool Bash, dengan string perintah di `command`:1767Field-nya sama dengan tool Bash, dengan string perintah di `command`:

1768 1768 

1769| Kolom | Tipe | Contoh | Deskripsi |1769| Field | Tipe | Contoh | Deskripsi |

1770| :- | :- | :- | :- |1770| :- | :- | :- | :- |

1771| `command` | string | `"Get-ChildItem -Recurse"` | Perintah PowerShell yang akan dieksekusi |1771| `command` | string | `"Get-ChildItem -Recurse"` | Perintah PowerShell yang akan dijalankan |

1772| `description` | string | `"List files recursively"` | Deskripsi opsional tentang apa yang dilakukan perintah |1772| `description` | string | `"List files recursively"` | Deskripsi opsional tentang apa yang dilakukan perintah |

1773| `timeout` | number | `120000` | Timeout opsional dalam milidetik |1773| `timeout` | number | `120000` | Timeout opsional dalam milidetik |

1774| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |1774| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |

1775 1775 

1776Cocokkan `Bash|PowerShell` dalam hook yang memeriksa perintah shell, sehingga hook tersebut mencakup kedua tool:1776Cocokkan `Bash|PowerShell` dalam hook yang memeriksa perintah shell, agar mencakup kedua tool:

1777 1777 

1778* Di Windows, di mana pun tool PowerShell diaktifkan, Claude memperlakukan PowerShell sebagai shell utama dan mengarahkan perintah shell melaluinya.1778* Di Windows, di mana pun tool PowerShell diaktifkan, Claude memperlakukan PowerShell sebagai shell utama dan mengarahkan perintah shell melaluinya.

1779* Di Windows tanpa Git Bash, tool ini diaktifkan secara otomatis dan Claude Code sama sekali tidak mendaftarkan tool Bash.1779* Di Windows tanpa Git Bash, tool ini diaktifkan secara otomatis dan Claude Code sama sekali tidak mendaftarkan tool Bash.


1785 1785 

1786Membuat atau menimpa file.1786Membuat atau menimpa file.

1787 1787 

1788| Kolom | Tipe | Contoh | Deskripsi |1788| Field | Tipe | Contoh | Deskripsi |

1789| :- | :- | :- | :- |1789| :- | :- | :- | :- |

1790| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan ditulis |1790| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan ditulis |

1791| `content` | string | `"file content"` | Konten yang akan ditulis ke file |1791| `content` | string | `"file content"` | Konten yang akan ditulis ke file |


1796 1796 

1797Mengganti string dalam file yang sudah ada.1797Mengganti string dalam file yang sudah ada.

1798 1798 

1799| Kolom | Tipe | Contoh | Deskripsi |1799| Field | Tipe | Contoh | Deskripsi |

1800| :- | :- | :- | :- |1800| :- | :- | :- | :- |

1801| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan diedit |1801| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan diedit |

1802| `old_string` | string | `"original text"` | Teks yang akan dicari dan diganti |1802| `old_string` | string | `"original text"` | Teks yang akan dicari dan diganti |


1807 Read1807 Read

1808</h5>1808</h5>

1809 1809 

1810Membaca isi file.1810Membaca konten file.

1811 1811 

1812| Kolom | Tipe | Contoh | Deskripsi |1812| Field | Tipe | Contoh | Deskripsi |

1813| :- | :- | :- | :- |1813| :- | :- | :- | :- |

1814| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan dibaca |1814| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan dibaca |

1815| `offset` | number | `10` | Nomor baris opsional untuk mulai membaca |1815| `offset` | number | `10` | Nomor baris opsional untuk mulai membaca |


1821 1821 

1822Menemukan file yang cocok dengan pola glob.1822Menemukan file yang cocok dengan pola glob.

1823 1823 

1824| Kolom | Tipe | Contoh | Deskripsi |1824| Field | Tipe | Contoh | Deskripsi |

1825| :- | :- | :- | :- |1825| :- | :- | :- | :- |

1826| `pattern` | string | `"**/*.ts"` | Pola glob untuk mencocokkan file |1826| `pattern` | string | `"**/*.ts"` | Pola glob untuk mencocokkan file |

1827| `path` | string | `"/path/to/dir"` | Direktori opsional untuk pencarian. Default-nya adalah direktori kerja saat ini |1827| `path` | string | `"/path/to/dir"` | Direktori opsional untuk pencarian. Default-nya adalah direktori kerja saat ini |


1830 Grep1830 Grep

1831</h5>1831</h5>

1832 1832 

1833Mencari isi file dengan ekspresi reguler.1833Mencari konten file dengan regular expression.

1834 1834 

1835| Kolom | Tipe | Contoh | Deskripsi |1835| Field | Tipe | Contoh | Deskripsi |

1836| :- | :- | :- | :- |1836| :- | :- | :- | :- |

1837| `pattern` | string | `"TODO.*fix"` | Pola ekspresi reguler yang akan dicari |1837| `pattern` | string | `"TODO.*fix"` | Pola regular expression yang akan dicari |

1838| `path` | string | `"/path/to/dir"` | File atau direktori opsional untuk pencarian |1838| `path` | string | `"/path/to/dir"` | File atau direktori opsional untuk pencarian |

1839| `glob` | string | `"*.ts"` | Pola glob opsional untuk memfilter file |1839| `glob` | string | `"*.ts"` | Pola glob opsional untuk memfilter file |

1840| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, atau `"count"`. Default-nya adalah `"files_with_matches"` |1840| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, atau `"count"`. Default-nya adalah `"files_with_matches"` |

1841| `-i` | boolean | `true` | Pencarian tanpa membedakan huruf besar/kecil |1841| `-i` | boolean | `true` | Pencarian tidak peka huruf besar-kecil |

1842| `multiline` | boolean | `false` | Mengaktifkan pencocokan multibaris |1842| `multiline` | boolean | `false` | Mengaktifkan pencocokan multibaris |

1843 1843 

1844<h5 id="webfetch">1844<h5 id="webfetch">


1847 1847 

1848Mengambil dan memproses konten web.1848Mengambil dan memproses konten web.

1849 1849 

1850| Kolom | Tipe | Contoh | Deskripsi |1850| Field | Tipe | Contoh | Deskripsi |

1851| :- | :- | :- | :- |1851| :- | :- | :- | :- |

1852| `url` | string | `"https://example.com/api"` | URL untuk mengambil konten |1852| `url` | string | `"https://example.com/api"` | URL untuk mengambil konten |

1853| `prompt` | string | `"Extract the API endpoints"` | Prompt yang dijalankan pada konten yang diambil |1853| `prompt` | string | `"Extract the API endpoints"` | Prompt yang dijalankan pada konten yang diambil |


1858 1858 

1859Mencari di web.1859Mencari di web.

1860 1860 

1861| Kolom | Tipe | Contoh | Deskripsi |1861| Field | Tipe | Contoh | Deskripsi |

1862| :- | :- | :- | :- |1862| :- | :- | :- | :- |

1863| `query` | string | `"react hooks best practices"` | Kueri pencarian |1863| `query` | string | `"react hooks best practices"` | Kueri pencarian |

1864| `allowed_domains` | array | `["docs.example.com"]` | Opsional: hanya sertakan hasil dari domain-domain ini |1864| `allowed_domains` | array | `["docs.example.com"]` | Opsional: hanya sertakan hasil dari domain ini |

1865| `blocked_domains` | array | `["spam.example.com"]` | Opsional: kecualikan hasil dari domain-domain ini |1865| `blocked_domains` | array | `["spam.example.com"]` | Opsional: kecualikan hasil dari domain ini |

1866 1866 

1867<h5 id="agent">1867<h5 id="agent">

1868 Agent1868 Agent

1869</h5>1869</h5>

1870 1870 

1871Membuat [subagent](/docs/id/sub-agents).1871Memunculkan [subagent](/docs/id/sub-agents).

1872 1872 

1873| Kolom | Tipe | Contoh | Deskripsi |1873| Field | Tipe | Contoh | Deskripsi |

1874| :- | :- | :- | :- |1874| :- | :- | :- | :- |

1875| `prompt` | string | `"Find all API endpoints"` | Tugas yang akan dilakukan agent |1875| `prompt` | string | `"Find all API endpoints"` | Tugas yang akan dilakukan agent |

1876| `description` | string | `"Find API endpoints"` | Deskripsi singkat tugas |1876| `description` | string | `"Find API endpoints"` | Deskripsi singkat tugas |

1877| `subagent_type` | string | `"Explore"` | Jenis agent khusus yang akan digunakan |1877| `subagent_type` | string | `"Explore"` | Jenis agent khusus yang akan digunakan |

1878| `model` | string | `"sonnet"` | Alias model opsional untuk menimpa default |1878| `model` | string | `"sonnet"` | Alias model opsional untuk menimpa default |

1879 1879 

1880Saat panggilan Agent di latar depan selesai, [hook PostToolUse](#posttooluse) Anda menerima hasil dan telemetri run subagent dalam `tool_response`. Baca kolom-kolom ini untuk memeriksa run; untuk rekapitulasi token dan biaya di seluruh subagent, gunakan [penghitung token dan biaya](/docs/id/monitoring-usage#token-counter) yang difilter ke `query_source` `"subagent"`, karena `totalTokens` dan `usage` hanya mencakup permintaan terakhir:1880Ketika panggilan Agent latar depan selesai, [hook PostToolUse](#posttooluse) Anda menerima hasil subagent dan telemetri run di `tool_response`. Baca field ini untuk memeriksa run; untuk rekapitulasi token dan biaya di seluruh subagent, gunakan [penghitung token dan biaya](/docs/id/monitoring-usage#token-counter) yang difilter ke `query_source` `"subagent"`, karena `totalTokens` dan `usage` hanya mencakup permintaan terakhir:

1881 1881 

1882| Kolom | Tipe | Contoh | Deskripsi |1882| Field | Tipe | Contoh | Deskripsi |

1883| :- | :- | :- | :- |1883| :- | :- | :- | :- |

1884| `status` | string | `"completed"` | `"completed"` untuk subagent foreground, `"async_launched"` untuk subagent latar belakang. Subagent berjalan di latar belakang secara default, sehingga panggilan Agent yang menghilangkan `run_in_background` juga menghasilkan `"async_launched"` |1884| `status` | string | `"completed"` | `"completed"` untuk subagent latar depan, `"async_launched"` untuk subagent latar belakang. Subagent berjalan di latar belakang secara default, sehingga panggilan Agent yang menghilangkan `run_in_background` juga menghasilkan `"async_launched"` |

1885| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengidentifikasi untuk run subagent |1885| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengidentifikasi untuk run subagent |

1886| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks terakhir subagent, atau, untuk subagent yang laporannya melalui `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai gantinya |1886| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks terakhir subagent, atau, untuk subagent yang laporannya melalui `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai penggantinya |

1887| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang digunakan subagent saat memulai, yang dapat berbeda dari model yang diminta |1887| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model tempat subagent dimulai, yang mungkin berbeda dari model yang diminta |

1888| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Model yang digunakan secara berurutan, dengan pengulangan berturut-turut diciutkan; diatur hanya saat model ditukar di tengah run. Memerlukan Claude Code v2.1.212 atau yang lebih baru |1888| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Model yang digunakan secara berurutan, dengan pengulangan berturut-turut diciutkan; hanya diatur ketika model diganti di tengah run. Memerlukan Claude Code v2.1.212 atau yang lebih baru |

1889| `totalTokens` | number | `12450` | Jumlah token dari permintaan API terakhir subagent: token input, output, dan cache digabungkan. Ini bukan total untuk seluruh run |1889| `totalTokens` | number | `12450` | Jumlah token dari permintaan API terakhir subagent: token input, output, dan cache digabungkan. Ini bukan total di seluruh run |

1890| `totalDurationMs` | number | `48211` | Durasi waktu nyata run subagent |1890| `totalDurationMs` | number | `48211` | Durasi waktu nyata dari run subagent |

1891| `totalToolUseCount` | number | `7` | Jumlah panggilan tool yang dilakukan subagent |1891| `totalToolUseCount` | number | `7` | Jumlah panggilan tool yang dilakukan subagent |

1892| `usage` | object | `{"input_tokens": 8320, ...}` | Rincian token per jenis dari permintaan API terakhir: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |1892| `usage` | object | `{"input_tokens": 8320, ...}` | Rincian token per jenis dari permintaan API terakhir: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

1893 1893 

1894Pada Claude Code v2.1.271 atau yang lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference), yang disediakan Claude Code dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), mengirimkan laporannya melalui tool tersebut alih-alih mengembalikannya sebagai teks. Kolom `content` dari hasil `completed`-nya kemudian membawa catatan singkat tentang penyerahan tersebut, bukan laporan itu sendiri. Untuk membaca laporan, cocokkan hook `PreToolUse` atau `PostToolUse` pada `SubagentHandback` dan baca `tool_input.message`.1894Pada Claude Code v2.1.271 atau yang lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference), yang disediakan Claude Code dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), mengirimkan laporannya melalui tool tersebut alih-alih mengembalikannya sebagai teks. Field `content` dari hasil `completed`-nya kemudian membawa catatan singkat tentang penyerahan tersebut, bukan laporan itu sendiri. Untuk membaca laporan, cocokkan hook `PreToolUse` atau `PostToolUse` pada `SubagentHandback` dan baca `tool_input.message`.

1895 1895 

1896Untuk subagent latar belakang, tool mengembalikan hasil saat tugas berpindah ke latar belakang, sehingga `tool_response` tidak membawa kolom penggunaan: peluncuran latar belakang langsung mengembalikan hasil, dan tugas latar depan yang dipindahkan Claude Code ke latar belakang di tengah run mengembalikan hasil pada transisi tersebut. Respons ini memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.1896Untuk subagent latar belakang, tool kembali ketika tugas berpindah ke latar belakang, sehingga `tool_response` tidak membawa field penggunaan: peluncuran latar belakang kembali segera, dan tugas latar depan yang dipindahkan Claude Code ke latar belakang di tengah run kembali pada transisi tersebut. Field-nya adalah `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.

1897 1897 

1898Pada respons `completed`, `resolvedModel` menyebutkan model yang digunakan subagent saat memulai, yang dapat berbeda dari nilai `model` di `tool_input`, misalnya saat `availableModels` atau override lain berlaku. Pada respons `async_launched`, `resolvedModel` menyebutkan model yang digunakan saat agent berpindah ke latar belakang, sehingga pertukaran yang terjadi sebelum pemindahan ke latar belakang tercermin di sana. `modelsUsed` dan perilaku `resolvedModel` pada saat pemindahan ke latar belakang memerlukan Claude Code v2.1.212 atau yang lebih baru.1898Pada respons `completed`, `resolvedModel` menyebutkan model tempat subagent dimulai, yang dapat berbeda dari nilai `model` di `tool_input`, seperti ketika `availableModels` atau override lain berlaku. Pada respons `async_launched`, `resolvedModel` menyebutkan model yang digunakan ketika agent berpindah ke latar belakang, sehingga penggantian yang terjadi sebelum pemindahan ke latar belakang tercermin di sana. `modelsUsed` dan perilaku `resolvedModel` saat pemindahan ke latar belakang memerlukan Claude Code v2.1.212 atau yang lebih baru.

1899 1899 

1900<a id="askuserquestion" />1900<a id="askuserquestion" />

1901 1901 


1905 1905 

1906Mengajukan satu hingga empat pertanyaan pilihan ganda kepada pengguna.1906Mengajukan satu hingga empat pertanyaan pilihan ganda kepada pengguna.

1907 1907 

1908| Kolom | Tipe | Contoh | Deskripsi |1908| Field | Tipe | Contoh | Deskripsi |

1909| :- | :- | :- | :- |1909| :- | :- | :- | :- |

1910| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Pertanyaan yang akan ditampilkan, masing-masing dengan string `question`, `header` singkat, array `options`, dan flag `multiSelect` opsional |1910| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Pertanyaan yang akan diajukan, masing-masing dengan string `question`, `header` singkat, array `options`, dan flag `multiSelect` opsional |

1911| `answers` | object | `{"Which framework?": "React"}` | Opsional. Memetakan teks pertanyaan ke label opsi yang dipilih. Jawaban pilihan ganda menggabungkan label dengan koma. Claude tidak mengatur kolom ini; berikan melalui `updatedInput` untuk menjawab secara terprogram |1911| `answers` | object | `{"Which framework?": "React"}` | Opsional. Memetakan teks pertanyaan ke label opsi yang dipilih. Jawaban multi-pilihan menggabungkan label dengan koma. Claude tidak mengatur field ini; berikan melalui `updatedInput` untuk menjawab secara terprogram |

1912 1912 

1913<h5 id="exitplanmode">1913<h5 id="exitplanmode">

1914 ExitPlanMode1914 ExitPlanMode

1915</h5>1915</h5>

1916 1916 

1917Menyajikan rencana dan meminta pengguna menyetujuinya sebelum Claude meninggalkan [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode). Claude menulis rencana ke file di disk sebelum memanggil tool, sehingga `tool_input` literal dari model biasanya kosong. Claude Code menyisipkan konten rencana dan path file sebelum meneruskan input ke hook.1917Menyajikan rencana dan meminta pengguna untuk menyetujuinya sebelum Claude meninggalkan [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode). Claude menulis rencana ke file di disk sebelum memanggil tool, sehingga `tool_input` literal dari model biasanya kosong. Claude Code menyisipkan konten rencana dan path file sebelum meneruskan input ke hook.

1918 1918 

1919| Kolom | Tipe | Contoh | Deskripsi |1919| Field | Tipe | Contoh | Deskripsi |

1920| :- | :- | :- | :- |1920| :- | :- | :- | :- |

1921| `plan` | string | `"## Refactor auth\n1. Extract..."` | Konten rencana dalam Markdown. Disisipkan dari file rencana di disk |1921| `plan` | string | `"## Refactor auth\n1. Extract..."` | Konten rencana dalam Markdown. Disisipkan dari file rencana di disk |

1922| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Path ke file rencana. Disisipkan |1922| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Path ke file rencana. Disisipkan |

1923| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecated. Claude Code menerima kolom ini tetapi mengabaikannya. Sebelum v2.1.205, kolom ini membawa izin berbasis prompt yang diminta Claude untuk mengimplementasikan rencana |1923| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecated. Claude Code menerima field ini tetapi mengabaikannya. Sebelum v2.1.205, field ini membawa izin berbasis prompt yang diminta Claude untuk mengimplementasikan rencana |

1924 1924 

1925Di `PostToolUse`, `tool_response` adalah objek dengan kolom `plan` dan `filePath` yang berisi rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk konten rencana alih-alih membaca ulang file dari disk.1925Dalam `PostToolUse`, `tool_response` adalah objek dengan field `plan` dan `filePath` yang berisi rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk konten rencana alih-alih membaca ulang file dari disk.

1926 1926 

1927<h4 id="pretooluse-decision-control">1927<h4 id="pretooluse-decision-control">

1928 Kontrol keputusan PreToolUse1928 Kontrol keputusan PreToolUse

1929</h4>1929</h4>

1930 1930 

1931Hook `PreToolUse` dapat mengontrol apakah panggilan tool berlanjut. Tidak seperti hook lain yang menggunakan kolom `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikan kontrol yang lebih kaya: empat hasil (allow, deny, ask, atau defer) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.1931Hook `PreToolUse` dapat mengontrol apakah panggilan tool berlanjut. Tidak seperti hook lain yang menggunakan field `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberinya kontrol yang lebih kaya: empat hasil (allow, deny, ask, atau defer) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.

1932 1932 

1933| Kolom | Deskripsi |1933| Field | 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 terlepas dari apa 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. Ketika Claude Code [menolak panggilan](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) dalam run `-p` tempat tidak ada yang dapat menjawab permintaan tersebut, Claude membaca alasannya 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 field yang tidak berubah bersama field 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 ketika `permissionDecision` bernilai `"defer"`. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

1939 1939 

1940Saat beberapa hook PreToolUse mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `defer` > `ask` > `allow`.1940Ketika beberapa hook PreToolUse mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `defer` > `ask` > `allow`.

1941 1941 

1942Hook yang memblokir dengan keluar dengan kode 2 diarahkan dengan cara yang sama seperti `"deny"`: Claude melihat pesan stderr sebagai alasan penolakan.1942Hook yang memblokir dengan keluar menggunakan kode 2 diarahkan dengan cara yang sama seperti `"deny"`: Claude melihat pesan stderr sebagai alasan penolakan.

1943 1943 

1944Saat hook mengembalikan `"ask"`, permintaan izin yang ditampilkan kepada pengguna menyertakan label yang mengidentifikasi asal hook: `[settings]` untuk hook dari file pengaturan mana pun atau dari frontmatter agent, `[plugin:<name>]` untuk hook plugin, atau `[skill]` untuk hook dari frontmatter skill. Ini membantu pengguna memahami sumber konfigurasi mana yang meminta konfirmasi.1944Ketika hook mengembalikan `"ask"`, permintaan izin yang ditampilkan kepada pengguna menyertakan label yang mengidentifikasi asal hook: `[settings]` untuk hook dari file pengaturan mana pun atau dari frontmatter agent, `[plugin:<name>]` untuk hook plugin, atau `[skill]` untuk hook dari frontmatter skill. Ini membantu pengguna memahami sumber konfigurasi mana yang meminta konfirmasi.

1945 1945 

1946`"ask"` dari hook juga memaksa permintaan izin dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode): pengklasifikasi tetap dapat menolak panggilan tool, tetapi tidak dapat menyetujui panggilan tersebut secara diam-diam. Sebelum v2.1.211, pengklasifikasi dapat menyetujui perintah Bash yang berjalan di luar [sandbox](/docs/id/sandboxing) tanpa menampilkan permintaan yang diminta hook; pengklasifikasi tetap menerapkan aturan keamanannya sendiri pada perintah tersebut, dan `"deny"` dari hook selalu dihormati.1946`"ask"` dari hook juga memaksa permintaan izin dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode): pengklasifikasi masih dapat menolak panggilan tool, tetapi tidak dapat menyetujui panggilan tersebut secara diam-diam. Sebelum v2.1.211, pengklasifikasi dapat menyetujui perintah Bash yang berjalan di luar [sandbox](/docs/id/sandboxing) tanpa menampilkan permintaan yang diminta hook; pengklasifikasi tetap menerapkan aturan keamanannya sendiri pada perintah tersebut, dan `"deny"` dari hook selalu dihormati.

1947 1947 

1948```json theme={null}1948```json theme={null}

1949{1949{


1961 1961 

1962<span id="allow-with-updatedinput" />1962<span id="allow-with-updatedinput" />

1963 1963 

1964Dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, Claude Code menawarkan `AskUserQuestion` dan `ExitPlanMode` hanya saat run memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) untuk menerima permintaan, seperti callback `canUseTool` Agent SDK. Tool-tool ini memerlukan interaksi pengguna. Mengembalikan `permissionDecision: "allow"` bersama dengan `updatedInput` memenuhi persyaratan tersebut: hook membaca input tool dari stdin, mengumpulkan jawaban melalui UI Anda sendiri, dan mengembalikannya dalam `updatedInput` sehingga tool berjalan tanpa meminta konfirmasi. Mengembalikan `"allow"` saja tidak cukup untuk tool-tool ini. Untuk `AskUserQuestion`, kembalikan array `questions` asli dan tambahkan objek [`answers`](#askuserquestion) yang memetakan teks setiap pertanyaan ke jawaban yang dipilih.1964Dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, Claude Code menawarkan `AskUserQuestion` dan `ExitPlanMode` hanya ketika run memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) untuk menerima permintaan, seperti callback `canUseTool` Agent SDK. Tool-tool ini memerlukan interaksi pengguna. Mengembalikan `permissionDecision: "allow"` bersama dengan `updatedInput` memenuhi persyaratan tersebut: hook membaca input tool dari stdin, mengumpulkan jawaban melalui UI Anda sendiri, dan mengembalikannya di `updatedInput` sehingga tool berjalan tanpa meminta. Mengembalikan `"allow"` saja tidak cukup untuk tool-tool ini. Untuk `AskUserQuestion`, kembalikan array `questions` asli dan tambahkan objek [`answers`](#askuserquestion) yang memetakan teks setiap pertanyaan ke jawaban yang dipilih.

1965 1965 

1966Mulai v2.1.199, tool MCP yang ditandai server-nya dengan [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) lebih ketat: hook tidak dapat melewati permintaan persetujuannya dengan `"allow"`, dengan atau tanpa `updatedInput`, karena Claude Code tidak dapat memastikan bahwa hook telah mengumpulkan interaksi yang dibutuhkan tool tersebut.1966Tool MCP yang ditandai server-nya dengan [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) lebih ketat: hook tidak dapat melewati permintaan persetujuannya dengan `"allow"`, dengan atau tanpa `updatedInput`, karena Claude Code tidak dapat memastikan bahwa hook telah mengumpulkan interaksi yang dibutuhkan tool tersebut.

1967 1967 

1968<Note>1968<Note>

1969 PreToolUse sebelumnya menggunakan kolom `decision` dan `reason` tingkat atas, tetapi kolom-kolom ini sudah deprecated untuk event ini. Gunakan `hookSpecificOutput.permissionDecision` dan `hookSpecificOutput.permissionDecisionReason` sebagai gantinya. Nilai deprecated `"approve"` dan `"block"` masing-masing dipetakan ke `"allow"` dan `"deny"`. Event lain seperti PostToolUse dan Stop tetap menggunakan `decision` dan `reason` tingkat atas sebagai format saat ini.1969 PreToolUse sebelumnya menggunakan field `decision` dan `reason` tingkat atas, tetapi field tersebut sudah deprecated untuk event ini. Gunakan `hookSpecificOutput.permissionDecision` dan `hookSpecificOutput.permissionDecisionReason` sebagai gantinya. Nilai deprecated `"approve"` dan `"block"` masing-masing dipetakan ke `"allow"` dan `"deny"`. Event lain seperti PostToolUse dan Stop tetap menggunakan `decision` dan `reason` tingkat atas sebagai format terkininya.

1970</Note>1970</Note>

1971 1971 

1972<h4 id="defer-a-tool-call-for-later">1972<h4 id="defer-a-tool-call-for-later">

1973 Menunda panggilan tool untuk nanti1973 Menangguhkan panggilan tool untuk nanti

1974</h4>1974</h4>

1975 1975 

1976`"defer"` ditujukan untuk integrasi yang menjalankan `claude -p` sebagai subproses dan membaca output JSON-nya, seperti aplikasi Agent SDK atau UI kustom yang dibangun di atas Claude Code. Nilai ini memungkinkan proses pemanggil menjeda Claude pada panggilan tool, mengumpulkan input melalui antarmukanya sendiri, dan melanjutkan dari titik terakhir. Claude Code hanya menghormati nilai ini dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Dalam sesi interaktif, Claude Code mencatat peringatan ke log dan mengabaikan hasil hook.1976`"defer"` ditujukan untuk integrasi yang menjalankan `claude -p` sebagai subproses dan membaca output JSON-nya, seperti aplikasi Agent SDK atau UI kustom yang dibangun di atas Claude Code. Ini memungkinkan proses pemanggil tersebut menjeda Claude pada panggilan tool, mengumpulkan input melalui antarmukanya sendiri, dan melanjutkan dari titik terakhir. Claude Code hanya menghormati nilai ini dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Dalam sesi interaktif, Claude Code mencatat peringatan dan mengabaikan hasil hook.

1977 1977 

1978Tool `AskUserQuestion` adalah kasus yang umum: Claude ingin menanyakan sesuatu kepada pengguna, tetapi tidak ada terminal untuk menjawabnya. Run `-p` menawarkan `AskUserQuestion` hanya saat memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs), seperti tool MCP yang Anda berikan dengan `--permission-prompt-tool`, jadi mulai run dengan salah satunya. Alur bolak-baliknya bekerja seperti ini:1978Tool `AskUserQuestion` adalah kasus yang umum: Claude ingin menanyakan sesuatu kepada pengguna, tetapi tidak ada terminal untuk menjawabnya. Run `-p` hanya menawarkan `AskUserQuestion` ketika memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs), seperti tool MCP yang Anda teruskan dengan `--permission-prompt-tool`, jadi mulai run dengan salah satunya. Alur bolak-baliknya bekerja seperti ini:

1979 1979 

19801. Claude memanggil `AskUserQuestion`. Hook `PreToolUse` dipicu.19801. Claude memanggil `AskUserQuestion`. Hook `PreToolUse` dipicu.

19812. Hook mengembalikan `permissionDecision: "defer"`. Tool tidak dieksekusi. Proses keluar dengan `stop_reason: "tool_deferred"` dan panggilan tool yang tertunda dipertahankan dalam transkrip.19812. Hook mengembalikan `permissionDecision: "defer"`. Tool tidak dieksekusi. Proses keluar dengan `stop_reason: "tool_deferred"` dan panggilan tool yang tertunda disimpan di transkrip.

19823. Proses pemanggil membaca `deferred_tool_use` dari hasil SDK, menampilkan pertanyaan di UI-nya sendiri, dan menunggu jawaban.19823. Proses pemanggil membaca `deferred_tool_use` dari hasil SDK, menampilkan pertanyaan di UI-nya sendiri, dan menunggu jawaban.

19834. Proses pemanggil menjalankan `claude -p --resume <session-id>` dengan host izin yang sama. Panggilan tool yang sama memicu `PreToolUse` lagi.19834. Proses pemanggil menjalankan `claude -p --resume <session-id>` dengan host izin yang sama. Panggilan tool yang sama memicu `PreToolUse` lagi.

19845. Hook mengembalikan `permissionDecision: "allow"` dengan jawaban di `updatedInput`. Tool dieksekusi dan Claude melanjutkan.19845. Hook mengembalikan `permissionDecision: "allow"` dengan jawaban di `updatedInput`. Tool dieksekusi dan Claude melanjutkan.

1985 1985 

1986Kolom `deferred_tool_use` membawa `id`, `name`, dan `input` tool. `input` adalah parameter yang dihasilkan Claude untuk panggilan tool, ditangkap sebelum eksekusi:1986Field `deferred_tool_use` membawa `id`, `name`, dan `input` dari tool. `input` adalah parameter yang dihasilkan Claude untuk panggilan tool, yang ditangkap sebelum eksekusi:

1987 1987 

1988```json theme={null}1988```json theme={null}

1989{1989{


1999}1999}

2000```2000```

2001 2001 

2002Tidak ada timeout atau batas retry. Sesi tetap ada di disk hingga Anda melanjutkannya, tunduk pada pembersihan retensi [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays), yang menghapus file sesi setelah 30 hari secara default, mengikuti [aturan pembersihan retensi](/docs/id/claude-directory#cleaned-up-automatically). Jika jawaban belum siap saat Anda melanjutkan, hook dapat mengembalikan `"defer"` lagi dan proses keluar dengan cara yang sama. Proses pemanggil mengontrol kapan loop dihentikan dengan akhirnya mengembalikan `"allow"` atau `"deny"` dari hook.2002Tidak ada timeout atau batas retry. Sesi tetap tersimpan di disk hingga Anda melanjutkannya, dengan tunduk pada pembersihan retensi [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays), yang menghapus file sesi setelah 30 hari secara default, mengikuti [aturan pembersihan retensi](/docs/id/claude-directory#cleaned-up-automatically). Jika jawaban belum siap saat Anda melanjutkan, hook dapat mengembalikan `"defer"` lagi dan proses keluar dengan cara yang sama. Proses pemanggil mengontrol kapan memutus perulangan dengan pada akhirnya mengembalikan `"allow"` atau `"deny"` dari hook.

2003 2003 

2004`"defer"` hanya berfungsi saat Claude melakukan satu panggilan tool dalam giliran tersebut. Jika Claude melakukan beberapa panggilan tool sekaligus, `"defer"` diabaikan dengan peringatan dan tool berlanjut melalui alur izin normal. Batasan ini ada karena resume hanya dapat menjalankan ulang satu tool: tidak ada cara untuk menunda satu panggilan dari sekelompok panggilan tanpa membiarkan panggilan lainnya tidak terselesaikan.2004`"defer"` hanya berfungsi ketika Claude melakukan satu panggilan tool dalam giliran tersebut. Jika Claude melakukan beberapa panggilan tool sekaligus, `"defer"` diabaikan dengan peringatan dan tool berlanjut melalui alur izin normal. Batasan ini ada karena resume hanya dapat menjalankan ulang satu tool: tidak ada cara untuk menangguhkan satu panggilan dari sekumpulan panggilan tanpa membiarkan yang lain tidak terselesaikan.

2005 2005 

2006Jika tool yang ditunda tidak lagi tersedia saat Anda melanjutkan, proses keluar dengan `stop_reason: "tool_deferred_unavailable"` dan `is_error: true` sebelum hook dipicu. Ini terjadi saat server MCP yang menyediakan tool tersebut tidak terhubung untuk sesi yang dilanjutkan. Payload `deferred_tool_use` tetap disertakan sehingga Anda dapat mengidentifikasi tool mana yang hilang.2006Jika tool yang ditangguhkan tidak lagi tersedia saat Anda melanjutkan, proses keluar dengan `stop_reason: "tool_deferred_unavailable"` dan `is_error: true` sebelum hook dipicu. Ini terjadi ketika server MCP yang menyediakan tool tidak terhubung untuk sesi yang dilanjutkan. Payload `deferred_tool_use` tetap disertakan sehingga Anda dapat mengidentifikasi tool mana yang hilang.

2007 2007 

2008<Note>2008<Note>

2009 Untuk melanjutkan sesi yang ditunda dalam plan mode, berikan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) bersama `--resume` agar Claude Code dapat menyajikan rencana untuk persetujuan. Jika Anda memberikan flag peluncuran tertentu lainnya, run yang dilanjutkan tidak kembali ke plan mode; lihat [Melanjutkan dalam plan mode dengan `-p`](/docs/id/sessions#resume-in-plan-mode-with-p). Memerlukan Claude Code v2.1.246 atau yang lebih baru.2009 Untuk melanjutkan sesi yang ditangguhkan dalam plan mode, teruskan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) bersama `--resume` agar Claude Code dapat menyajikan rencana untuk disetujui. Jika Anda meneruskan flag peluncuran tertentu lainnya, run yang dilanjutkan tidak kembali ke plan mode; lihat [Melanjutkan dalam plan mode dengan `-p`](/docs/id/sessions#resume-in-plan-mode-with-p). Memerlukan Claude Code v2.1.246 atau yang lebih baru.

2010 2010 

2011 Saat Anda melanjutkan dengan `-p`, Claude Code tidak memulihkan mode izin tersimpan lainnya. Claude Code memulai run dalam mode izin yang akan digunakan oleh run `claude -p` baru, jadi berikan `--permission-mode` atau `--dangerously-skip-permissions` lagi jika sesi yang ditunda menggunakan salah satunya. Saat Anda melanjutkan dengan `claude --resume <session-id>` tanpa `-p`, Claude Code memulihkan mode izin yang tersimpan, dengan pengecualian yang tercantum di [mode izin saat melanjutkan](/docs/id/sessions#permission-mode-on-resume).2011 Ketika Anda melanjutkan dengan `-p`, Claude Code tidak memulihkan mode izin tersimpan lainnya. Claude Code memulai run dalam mode izin yang akan digunakan oleh run `claude -p` baru, jadi teruskan `--permission-mode` atau `--dangerously-skip-permissions` lagi jika sesi yang ditangguhkan menggunakannya. Ketika Anda melanjutkan dengan `claude --resume <session-id>` tanpa `-p`, Claude Code memulihkan mode izin yang tersimpan, dengan pengecualian yang tercantum di [mode izin saat resume](/docs/id/sessions#permission-mode-on-resume).

2012</Note>2012</Note>

2013 2013 

2014<h3 id="permissionrequest">2014<h3 id="permissionrequest">

2015 PermissionRequest2015 PermissionRequest

2016</h3>2016</h3>

2017 2017 

2018Berjalan ketika Claude Code akan meminta izin Anda untuk menggunakan tool. Dalam sesi yang tidak dapat menampilkan permintaan, seperti subagent latar belakang dalam [mode non-interaktif](/docs/id/headless), Claude Code tetap menjalankan hook ini, dan jika tidak ada hook yang mengembalikan keputusan, Claude Code menolak panggilan tool. Untuk panggilan yang mencapai `--permission-prompt-tool` atau [callback `canUseTool`](/docs/id/agent-sdk/permissions) Agent SDK, hook berjalan bersama host Anda, dan mana pun yang memutuskan terlebih dahulu yang berlaku.2018Berjalan ketika Claude Code akan meminta izin Anda untuk menggunakan tool. Dalam sesi yang tidak dapat menampilkan permintaan, seperti subagent latar belakang dalam [mode non-interaktif](/docs/id/headless), Claude Code tetap menjalankan hook ini, dan jika tidak ada hook yang mengembalikan keputusan, Claude Code menolak panggilan tool. Untuk panggilan yang mencapai `--permission-prompt-tool` atau [callback `canUseTool`](/docs/id/agent-sdk/permissions) Agent SDK, hook berjalan bersama host Anda, dan mana pun yang memutuskan lebih dulu yang berlaku.

2019Gunakan [kontrol keputusan PermissionRequest](#permissionrequest-decision-control) untuk mengizinkan atau menolak atas nama pengguna.2019Gunakan [kontrol keputusan PermissionRequest](#permissionrequest-decision-control) untuk mengizinkan atau menolak atas nama pengguna.

2020 2020 

2021Gunakan event ini saat Anda memerlukan sinyal tepat pada saat Claude meminta izin untuk menggunakan tool. Claude Code menjalankan hook [Notification](#notification) dengan jenis `permission_prompt` hanya setelah permintaan izin menunggu sekitar enam detik.2021Gunakan event ini ketika Anda membutuhkan sinyal pada saat Claude meminta izin untuk menggunakan tool. Claude Code menjalankan hook [Notification](#notification) dengan jenis `permission_prompt` hanya setelah permintaan menunggu sekitar enam detik.

2022 2022 

2023Claude Code tidak menjalankan hook PermissionRequest untuk [permintaan jaringan](/docs/id/sandboxing#network-isolation) dari perintah yang berjalan dalam sandbox. Untuk mendapatkan sinyal untuk permintaan izin tersebut, gunakan jenis notifikasi `permission_prompt`.2023Claude Code tidak menjalankan hook PermissionRequest untuk [permintaan jaringan](/docs/id/sandboxing#network-isolation) dari perintah yang di-sandbox. Untuk mendapatkan sinyal untuk permintaan tersebut, gunakan jenis notifikasi `permission_prompt`.

2024 2024 

2025Dicocokkan dengan nama tool, nilai yang sama seperti PreToolUse.2025Mencocokkan pada nama tool, dengan nilai yang sama seperti PreToolUse.

2026 2026 

2027<h4 id="permissionrequest-input">2027<h4 id="permissionrequest-input">

2028 Input PermissionRequest2028 Input PermissionRequest

2029</h4>2029</h4>

2030 2030 

2031Hook PermissionRequest menerima kolom `tool_name` dan `tool_input` seperti hook PreToolUse, tetapi tanpa `tool_use_id`. Untuk tool MCP, hook ini juga menerima objek [`mcp_server`](#pretooluse-input). Array `permission_suggestions` opsional berisi [pembaruan izin](#permission-update-entries) yang disarankan Claude Code untuk permintaan ini, seperti menambahkan aturan allow atau mengubah mode izin.2031Hook PermissionRequest menerima field `tool_name` dan `tool_input` seperti hook PreToolUse, tetapi tanpa `tool_use_id`. Untuk tool MCP, hook ini juga menerima objek [`mcp_server`](#pretooluse-input). Array `permission_suggestions` opsional berisi [pembaruan izin](#permission-update-entries) yang disarankan Claude Code untuk permintaan ini, seperti menambahkan aturan allow atau mengubah mode izin.

2032 2032 

2033Array `permission_suggestions` bukan daftar persis dari opsi yang Anda lihat, karena setiap dialog izin membangun opsinya sendiri. Beberapa dialog, seperti dialog untuk pengeditan file, sama sekali tidak membaca array tersebut dan menurunkan opsinya dari permintaan itu sendiri. Dialog yang membacanya tetap dapat menahan opsi yang sarannya tetap ada di array, misalnya saat [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) menyembunyikan opsi penyimpanan aturan. Dialog juga dapat menawarkan opsi yang tidak memiliki entri saran, seperti [**Yes, and switch to auto mode**](/docs/id/permission-modes#switch-permission-modes), yang mengubah mode izin secara langsung alih-alih melalui pembaruan izin.2033Array `permission_suggestions` bukanlah daftar persis dari opsi yang Anda lihat, karena setiap dialog izin membangun opsinya sendiri. Beberapa dialog, seperti dialog untuk pengeditan file, sama sekali tidak membaca array tersebut dan menurunkan opsinya dari permintaan itu sendiri. Dialog yang membacanya masih dapat menahan opsi yang sarannya tetap ada di array, misalnya ketika [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) menyembunyikan opsi penyimpanan aturan. Dialog juga dapat menawarkan opsi yang tidak memiliki entri saran, seperti [**Yes, and switch to auto mode**](/docs/id/permission-modes#switch-permission-modes), yang mengubah mode izin secara langsung alih-alih melalui pembaruan izin.

2034 2034 

2035Hook PreToolUse berjalan sebelum setiap panggilan tool, baik memerlukan izin maupun tidak. Hook PermissionRequest hanya berjalan saat Claude Code akan meminta izin Anda, atau saat Claude Code akan menolak secara otomatis panggilan yang tidak dapat menampilkan permintaan izin. Kedua event tersebut tidak dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).2035Hook PreToolUse berjalan sebelum setiap panggilan tool, baik memerlukan izin maupun tidak. Hook PermissionRequest hanya berjalan ketika Claude Code akan meminta izin Anda, atau ketika Claude Code sebaliknya akan menolak otomatis panggilan yang tidak dapat menampilkan permintaan. Tidak satu pun event tersebut dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).

2036 2036 

2037```json theme={null}2037```json theme={null}

2038{2038{


2061 Kontrol keputusan PermissionRequest2061 Kontrol keputusan PermissionRequest

2062</h4>2062</h4>

2063 2063 

2064Hook `PermissionRequest` dapat mengizinkan atau menolak permintaan izin. Selain [kolom output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan objek `decision` dengan kolom khusus event berikut:2064Hook `PermissionRequest` dapat mengizinkan atau menolak permintaan izin. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan objek `decision` dengan field khusus event berikut:

2065 2065 

2066| Kolom | Deskripsi |2066| Field | Deskripsi |

2067| :- | :- |2067| :- | :- |

2068| `behavior` | `"allow"` memberikan izin, `"deny"` menolaknya. [Aturan deny dan ask](/docs/id/permissions#manage-permissions) tetap dievaluasi, sehingga hook yang mengembalikan `"allow"` tidak menimpa aturan deny yang cocok |2068| `behavior` | `"allow"` memberikan izin, `"deny"` menolaknya. [Aturan deny dan ask](/docs/id/permissions#manage-permissions) tetap dievaluasi, sehingga hook yang mengembalikan `"allow"` tidak menimpa aturan deny yang cocok |

2069| `updatedInput` | Hanya untuk `"allow"`: memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan kolom yang tidak berubah bersama kolom yang dimodifikasi. Input yang dimodifikasi dievaluasi ulang terhadap aturan deny dan ask |2069| `updatedInput` | Hanya untuk `"allow"`: memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan field yang tidak berubah bersama field yang dimodifikasi. Input yang dimodifikasi dievaluasi ulang terhadap aturan deny dan ask |

2070| `updatedPermissions` | Hanya untuk `"allow"`: array [entri pembaruan izin](#permission-update-entries) yang akan diterapkan, seperti menambahkan aturan allow atau mengubah mode izin sesi |2070| `updatedPermissions` | Hanya untuk `"allow"`: array [entri pembaruan izin](#permission-update-entries) yang akan diterapkan, seperti menambahkan aturan allow atau mengubah mode izin sesi |

2071| `message` | Hanya untuk `"deny"`: memberi tahu Claude mengapa izin ditolak |2071| `message` | Hanya untuk `"deny"`: memberi tahu Claude mengapa izin ditolak |

2072| `interrupt` | Hanya untuk `"deny"`: jika `true`, menghentikan Claude |2072| `interrupt` | Hanya untuk `"deny"`: jika `true`, menghentikan Claude |


2091 Entri pembaruan izin2091 Entri pembaruan izin

2092</h4>2092</h4>

2093 2093 

2094Kolom output `updatedPermissions` dan [kolom input `permission_suggestions`](#permissionrequest-input) sama-sama menggunakan array objek entri yang sama. Setiap entri memiliki `type` yang menentukan kolom-kolom lainnya, dan `destination` yang mengontrol tempat perubahan ditulis.2094Field output `updatedPermissions` dan [field input `permission_suggestions`](#permissionrequest-input) keduanya menggunakan array objek entri yang sama. Setiap entri memiliki `type` yang menentukan field lainnya, dan `destination` yang mengontrol tempat perubahan ditulis.

2095 2095 

2096| `type` | Kolom | Efek |2096| `type` | Field | Efek |

2097| :- | :- | :- |2097| :- | :- | :- |

2098| `addRules` | `rules`, `behavior`, `destination` | Menambahkan aturan izin. `rules` adalah array objek `{toolName, ruleContent?}`. Hilangkan `ruleContent` untuk mencocokkan seluruh tool. `behavior` bernilai `"allow"`, `"deny"`, atau `"ask"` |2098| `addRules` | `rules`, `behavior`, `destination` | Menambahkan aturan izin. `rules` adalah array objek `{toolName, ruleContent?}`. Hilangkan `ruleContent` untuk mencocokkan seluruh tool. `behavior` bernilai `"allow"`, `"deny"`, atau `"ask"` |

2099| `replaceRules` | `rules`, `behavior`, `destination` | Mengganti semua aturan dengan `behavior` yang diberikan di `destination` dengan `rules` yang disediakan |2099| `replaceRules` | `rules`, `behavior`, `destination` | Mengganti semua aturan dengan `behavior` yang diberikan di `destination` dengan `rules` yang disediakan |


2103| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |2103| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |

2104 2104 

2105<Note>2105<Note>

2106 `setMode` dengan `bypassPermissions` hanya berlaku jika Anda meluncurkan sesi dengan mode bypass yang sudah tersedia: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, atau `permissions.defaultMode: "bypassPermissions"` di [pengaturan pengguna, `--settings`, atau pengaturan terkelola](/docs/id/settings-reference#permissions-defaultmode). Jika tidak, pembaruan tersebut tidak berpengaruh apa pun. Pembaruan juga tidak berpengaruh apa pun ketika [`permissions.disableBypassPermissionsMode`](/docs/id/permissions#managed-settings) menonaktifkan mode tersebut, atau ketika sesi dimulai dalam [mode terbatas](/docs/id/cli-reference#cli-flags).2106 `setMode` dengan `bypassPermissions` hanya berlaku jika Anda meluncurkan sesi dengan mode bypass yang sudah tersedia: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, atau `permissions.defaultMode: "bypassPermissions"` di [pengaturan pengguna, `--settings`, atau pengaturan terkelola](/docs/id/settings-reference#permissions-defaultmode). Jika tidak, pembaruan tersebut tidak berpengaruh apa pun. Pembaruan tersebut juga tidak berpengaruh ketika [`permissions.disableBypassPermissionsMode`](/docs/id/permissions#managed-settings) menonaktifkan mode tersebut, atau ketika sesi dimulai dalam [mode terbatas](/docs/id/cli-reference#cli-flags).

2107 2107 

2108 `bypassPermissions` tidak pernah disimpan sebagai `defaultMode` terlepas dari nilai `destination`.2108 `bypassPermissions` tidak pernah disimpan sebagai `defaultMode` terlepas dari `destination`.

2109</Note>2109</Note>

2110 2110 

2111Field `destination` pada setiap entri menentukan apakah perubahan tetap berada di memori atau disimpan ke file pengaturan.2111Field `destination` pada setiap entri menentukan apakah perubahan tetap berada di memori atau disimpan ke file pengaturan.


2123 PostToolUse2123 PostToolUse

2124</h3>2124</h3>

2125 2125 

2126Berjalan segera setelah sebuah tool berhasil diselesaikan.2126Berjalan segera setelah sebuah tool selesai dengan sukses.

2127 2127 

2128Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.2128Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2129 2129 

2130Lakukan pencocokan yang lebih luas ketika nama tool bukan filter yang tepat:2130Cocokkan secara lebih luas ketika nama tool bukan filter yang tepat:

2131 2131 

2132* Untuk menjalankan hook setelah tool apa pun berhasil diselesaikan, hilangkan `matcher` atau atur ke `"*"`. Hook Anda kemudian dapat mengetahui sendiri apa yang berubah, misalnya dengan menjalankan `git status --porcelain`, yang juga mencantumkan file yang tidak dilacak yang terlewat oleh `git diff`. Untuk panggilan tool yang gagal, tambahkan hook yang sama di bawah [PostToolUseFailure](#posttoolusefailure).2132* Untuk menjalankan hook setelah tool apa pun selesai dengan sukses, hilangkan `matcher` atau atur ke `"*"`. Hook Anda kemudian dapat menemukan sendiri apa yang berubah, misalnya dengan menjalankan `git status --porcelain`, yang juga mencantumkan file yang tidak terlacak yang terlewat oleh `git diff`. Untuk panggilan tool yang gagal, tambahkan hook yang sama di bawah [PostToolUseFailure](#posttoolusefailure).

2133* Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged). Claude Code tidak menjalankan hook `PostToolUse` yang mencocokkan `Edit|Write` ketika perintah `Bash` atau proses di luar Claude Code menulis ulang file yang sama.2133* Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged). Claude Code tidak menjalankan hook `PostToolUse` yang mencocokkan `Edit|Write` ketika perintah `Bash` atau proses di luar Claude Code menulis ulang file yang sama.

2134 2134 

2135<h4 id="posttooluse-input">2135<h4 id="posttooluse-input">

2136 Input PostToolUse2136 Input PostToolUse

2137</h4>2137</h4>

2138 2138 

2139Hook `PostToolUse` dipicu setelah sebuah tool berhasil dieksekusi. Input mencakup `tool_input`, yaitu argumen yang dikirim ke tool, dan `tool_response`, yaitu hasil yang dikembalikannya. Skema persis untuk keduanya bergantung pada tool. Path `tool_input` pada tool file datang dalam format yang sama seperti untuk [PreToolUse](#pretooluse-input): selalu absolut, dengan pemisah native platform, sehingga menggunakan backslash di Windows. Untuk tool MCP, input juga membawa objek [`mcp_server`](#pretooluse-input).2139Hook `PostToolUse` dipicu setelah sebuah tool sudah dieksekusi dengan sukses. Input mencakup `tool_input`, yaitu argumen yang dikirim ke tool, dan `tool_response`, yaitu hasil yang dikembalikannya. Skema persis untuk keduanya bergantung pada tool. Path `tool_input` untuk tool file tiba dalam format yang sama seperti untuk [PreToolUse](#pretooluse-input): selalu absolut, dengan pemisah native platform, jadi backslash di Windows. Untuk tool MCP, input juga membawa objek [`mcp_server`](#pretooluse-input).

2140 2140 

2141```json theme={null}2141```json theme={null}

2142{2142{


2172| Field | Deskripsi |2172| Field | Deskripsi |

2173| :- | :- |2173| :- | :- |

2174| `decision` | `"block"` menambahkan `reason` di samping hasil tool. Claude tetap melihat output asli; untuk menggantinya, gunakan `updatedToolOutput` |2174| `decision` | `"block"` menambahkan `reason` di samping hasil tool. Claude tetap melihat output asli; untuk menggantinya, gunakan `updatedToolOutput` |

2175| `reason` | Penjelasan yang ditampilkan kepada Claude ketika `decision` adalah `"block"` |2175| `reason` | Penjelasan yang ditampilkan kepada Claude ketika `decision` bernilai `"block"` |

2176| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |2176| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

2177| `classifierContext` | Catatan singkat tentang hasil panggilan ini untuk pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan untuk Claude. Lihat [Memberi anotasi pada hasil untuk pengklasifikasi auto mode](#annotate-a-result-for-the-auto-mode-classifier). Memerlukan Claude Code v2.1.236 atau lebih baru |2177| `classifierContext` | Catatan singkat tentang hasil panggilan ini untuk pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan untuk Claude. Lihat [Menganotasi hasil untuk pengklasifikasi auto mode](#annotate-a-result-for-the-auto-mode-classifier). Memerlukan Claude Code v2.1.236 atau yang lebih baru |

2178| `updatedToolOutput` | Mengganti output tool dengan nilai yang diberikan sebelum dikirim ke Claude. Nilai harus sesuai dengan bentuk output tool |2178| `updatedToolOutput` | Mengganti output tool dengan nilai yang diberikan sebelum dikirim ke Claude. Nilai harus sesuai dengan bentuk output tool |

2179| `updatedMCPToolOutput` | Mengganti output hanya untuk [tool MCP](#match-mcp-tools). Sebaiknya gunakan `updatedToolOutput`, yang berfungsi untuk semua tool |2179| `updatedMCPToolOutput` | Mengganti output hanya untuk [tool MCP](#match-mcp-tools). Utamakan `updatedToolOutput`, yang berfungsi untuk semua tool |

2180 2180 

2181Contoh di bawah ini mengganti output dari panggilan `Bash`. Nilai pengganti sesuai dengan bentuk output tool `Bash`:2181Contoh di bawah ini mengganti output dari panggilan `Bash`. Nilai pengganti sesuai dengan bentuk output tool `Bash`:

2182 2182 


2196```2196```

2197 2197 

2198<Warning>2198<Warning>

2199 `updatedToolOutput` hanya mengubah apa yang dilihat Claude. Tool sudah berjalan saat hook dipicu, sehingga setiap file yang ditulis, perintah yang dieksekusi, atau permintaan jaringan yang dikirim sudah berlaku. Telemetri seperti span tool OpenTelemetry dan event analitik juga menangkap output asli sebelum hook berjalan. Untuk mencegah atau memodifikasi panggilan tool sebelum berjalan, gunakan hook [PreToolUse](#pretooluse) sebagai gantinya.2199 `updatedToolOutput` hanya mengubah apa yang dilihat Claude. Tool sudah berjalan pada saat hook dipicu, sehingga setiap file yang ditulis, perintah yang dieksekusi, atau permintaan jaringan yang dikirim sudah berlaku. Telemetri seperti span tool OpenTelemetry dan event analitik juga menangkap output asli sebelum hook berjalan. Untuk mencegah atau memodifikasi panggilan tool sebelum berjalan, gunakan hook [PreToolUse](#pretooluse) sebagai gantinya.

2200 2200 

2201 Nilai pengganti harus sesuai dengan bentuk output tool. Tool bawaan mengembalikan objek terstruktur, bukan string biasa. Misalnya, `Bash` mengembalikan objek dengan field `stdout`, `stderr`, `interrupted`, dan `isImage`. Untuk tool bawaan, nilai yang tidak sesuai dengan skema output tool akan diabaikan dan output asli yang digunakan. Output tool MCP diteruskan tanpa validasi skema. Menghapus detail error yang dibutuhkan Claude dapat menyebabkannya melanjutkan berdasarkan asumsi yang salah.2201 Nilai pengganti harus sesuai dengan bentuk output tool. Tool bawaan mengembalikan objek terstruktur, bukan string biasa. Misalnya, `Bash` mengembalikan objek dengan field `stdout`, `stderr`, `interrupted`, dan `isImage`. Untuk tool bawaan, nilai yang tidak sesuai dengan skema output tool akan diabaikan dan output asli yang digunakan. Output tool MCP diteruskan tanpa validasi skema. Menghapus detail error yang dibutuhkan Claude dapat menyebabkannya melanjutkan berdasarkan asumsi yang salah.

2202</Warning>2202</Warning>

2203 2203 

2204<h4 id="annotate-a-result-for-the-auto-mode-classifier">2204<h4 id="annotate-a-result-for-the-auto-mode-classifier">

2205 Memberi anotasi pada hasil untuk pengklasifikasi auto mode2205 Menganotasi hasil untuk pengklasifikasi auto mode

2206</h4>2206</h4>

2207 2207 

2208Kembalikan `classifierContext` untuk mengirim catatan singkat tentang hasil panggilan tool ke pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan ke Claude. Pengklasifikasi [tidak pernah menerima hasil tool itu sendiri](/docs/id/permission-modes#how-the-classifier-evaluates-actions), sehingga field ini adalah cara yang didukung untuk memberitahunya sesuatu tentang apa yang dikembalikan suatu panggilan sebelum ia meninjau tindakan berikutnya. Field ini memerlukan Claude Code v2.1.236 atau lebih baru.2208Kembalikan `classifierContext` untuk mengirim catatan singkat tentang hasil panggilan tool ke pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan ke Claude. Pengklasifikasi [tidak pernah menerima hasil tool itu sendiri](/docs/id/permission-modes#how-the-classifier-evaluates-actions), sehingga field ini adalah cara yang didukung untuk memberi tahu sesuatu tentang apa yang dikembalikan oleh sebuah panggilan sebelum pengklasifikasi meninjau tindakan berikutnya. Field ini memerlukan Claude Code v2.1.236 atau yang lebih baru.

2209 2209 

2210Contoh di bawah ini memberi tahu pengklasifikasi dari mana output sebuah query berasal:2210Contoh di bawah ini memberi tahu pengklasifikasi dari mana output sebuah kueri berasal:

2211 2211 

2212```json theme={null}2212```json theme={null}

2213{2213{


2220 2220 

2221Seberapa besar bobot yang diberikan pengklasifikasi pada catatan tersebut bergantung pada tempat Anda mengonfigurasi hook:2221Seberapa besar bobot yang diberikan pengklasifikasi pada catatan tersebut bergantung pada tempat Anda mengonfigurasi hook:

2222 2222 

2223* **Hook yang dikonfigurasi di Claude Code**: untuk hook dari file pengaturan, plugin, skill, dan frontmatter agent, pengklasifikasi memperlakukan catatan tersebut sebagai konteks yang belum diverifikasi dan disediakan oleh aplikasi. Catatan tersebut tidak pernah menetapkan niat pengguna, dan jika catatan itu mengklaim bahwa Anda menyetujui atau meminta sesuatu, pengklasifikasi memeriksa klaim tersebut terhadap pesan Anda sendiri dalam percakapan2223* **Hook yang dikonfigurasi di Claude Code**: untuk hook dari file pengaturan, plugin, skill, dan frontmatter agent, pengklasifikasi memperlakukan catatan sebagai konteks yang belum terverifikasi dan disediakan oleh aplikasi. Catatan tidak pernah menetapkan niat pengguna, dan jika catatan mengklaim bahwa Anda menyetujui atau meminta sesuatu, pengklasifikasi memeriksa klaim tersebut terhadap pesan Anda sendiri dalam percakapan

2224* **Callback Agent SDK dalam proses**: ketika aplikasi yang menyematkan Claude Code mendaftarkan hook sebagai [callback TypeScript SDK](/docs/id/agent-sdk/hooks) dan mengembalikan catatan selama sesi aktif, pengklasifikasi dapat menimbang pernyataan pengguna yang diteruskan dalam catatan sebagai niat pengguna. Pernyataan seperti itu dapat memenuhi persyaratan persetujuan yang akan diterima pengklasifikasi dari pesan yang Anda kirim, tetapi tidak pernah mencabut blokir yang juga tidak dapat dicabut oleh pesan Anda sendiri. Setelah sesi dilanjutkan, Claude Code memperlakukan catatan yang dipulihkan sebagai konteks yang belum diverifikasi. Ketika hook dari kedua kelompok memberi anotasi pada panggilan yang sama, pengklasifikasi memperlakukan catatan gabungan sebagai belum diverifikasi2224* **Callback Agent SDK in-process**: ketika aplikasi yang menyematkan Claude Code mendaftarkan hook sebagai [callback TypeScript SDK](/docs/id/agent-sdk/hooks) dan mengembalikan catatan selama sesi aktif, pengklasifikasi dapat menganggap pernyataan pengguna yang diteruskan dalam catatan sebagai niat pengguna. Pernyataan semacam itu dapat memenuhi persyaratan persetujuan yang akan diterima pengklasifikasi dari pesan yang Anda kirim, tetapi tidak pernah mencabut blokir yang juga tidak dapat dicabut oleh pesan Anda sendiri. Setelah sesi dilanjutkan, Claude Code memperlakukan catatan yang dipulihkan sebagai konteks yang belum terverifikasi. Ketika hook dari kedua kelompok menganotasi panggilan yang sama, pengklasifikasi memperlakukan gabungan catatan sebagai belum terverifikasi

2225 2225 

2226Claude Code menerapkan batasan berikut saat mengirimkan catatan:2226Claude Code menerapkan batasan berikut saat mengirimkan catatan:

2227 2227 

2228* **Panjang**: Claude Code membatasi catatan untuk satu panggilan tool hingga 2.000 karakter dan memotong sisanya. Batas ini dibagi di antara setiap hook yang merespons panggilan tersebut2228* **Panjang**: Claude Code membatasi catatan untuk satu panggilan tool hingga 2.000 karakter dan memotong sisanya. Batas ini dibagi di antara setiap hook yang merespons panggilan tersebut

2229* **Hanya respons sinkron**: Claude Code mengabaikan field ini dalam respons hook yang [berjalan di latar belakang](#run-hooks-in-the-background), karena respons tersebut tiba setelah Claude Code mencatat hasil tool2229* **Hanya respons sinkron**: Claude Code mengabaikan field ini dalam respons hook yang [berjalan di latar belakang](#run-hooks-in-the-background), karena respons tersebut tiba setelah Claude Code mencatat hasil tool

2230* **Panggilan yang tidak dicatat oleh pengklasifikasi**: transkrip pengklasifikasi menghilangkan pencarian read-only seperti pembacaan file dan pencarian. Claude Code membuang catatan yang dilampirkan ke salah satu panggilan tersebut2230* **Panggilan yang tidak dicatat oleh pengklasifikasi**: transkrip pengklasifikasi menghilangkan pencarian read-only seperti pembacaan file dan penelusuran. Claude Code membuang catatan yang dilampirkan pada salah satu panggilan tersebut

2231* **Interaksi dengan penulisan ulang**: ketika catatan menjelaskan output yang Anda ganti dengan `updatedToolOutput`, kembalikan kedua field dalam respons hook yang sama. Claude Code membuang catatan tersebut jika penulisan ulang itu ditolak atau penulisan ulang hook lain menggantikannya. Claude Code mengirimkan catatan yang Anda kembalikan tanpa penulisan ulang bahkan ketika hook lain menulis ulang output2231* **Interaksi dengan penulisan ulang**: ketika catatan menjelaskan output yang Anda ganti dengan `updatedToolOutput`, kembalikan kedua field dalam respons hook yang sama. Claude Code membuang catatan jika penulisan ulang tersebut ditolak atau penulisan ulang dari hook lain menggantikannya. Claude Code mengirimkan catatan yang Anda kembalikan tanpa penulisan ulang bahkan ketika hook lain menulis ulang output

2232 2232 

2233<Warning>2233<Warning>

2234 Pengklasifikasi membaca konten yang Anda tempatkan di `classifierContext` sebagai informasi dari aplikasi yang menghosting sesi, jadi jangan menyalin output tool yang tidak tepercaya atau teks pihak ketiga ke dalamnya. Buat catatan tetap berupa pernyataan singkat tentang satu panggilan ini, seperti fakta tentang asal-usulnya atau pernyataan pengguna tentangnya; jangan gunakan field ini untuk menyampaikan pesan yang tidak terkait atau aliran event.2234 Pengklasifikasi membaca konten yang Anda tempatkan di `classifierContext` sebagai informasi dari aplikasi yang meng-host sesi, jadi jangan menyalin output tool yang tidak tepercaya atau teks pihak ketiga ke dalamnya. Batasi catatan pada pernyataan singkat tentang satu panggilan ini, seperti fakta tentang asal-usulnya atau pernyataan pengguna tentangnya; jangan gunakan field ini untuk mengirimkan pesan yang tidak terkait atau aliran event.

2235</Warning>2235</Warning>

2236 2236 

2237<h3 id="posttoolusefailure">2237<h3 id="posttoolusefailure">

2238 PostToolUseFailure2238 PostToolUseFailure

2239</h3>2239</h3>

2240 2240 

2241Berjalan ketika sebuah tool yang sudah mulai dieksekusi gagal: tool melempar error, atau tool MCP mengembalikan hasil error. Gunakan ini untuk mencatat kegagalan, mengirim peringatan, atau memberikan umpan balik korektif kepada Claude.2241Berjalan ketika sebuah tool yang mulai dieksekusi gagal: tool melemparkan error, atau tool MCP mengembalikan hasil error. Gunakan ini untuk mencatat kegagalan, mengirim peringatan, atau memberikan umpan balik korektif kepada Claude.

2242 2242 

2243Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.2243Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2244 2244 

2245<Note>2245<Note>

2246 Event ini tidak dipicu untuk panggilan tool yang ditolak sebelum eksekusi: nama tool yang tidak dikenal, input yang gagal dalam validasi skema atau validasi khusus tool, atau penolakan izin. Penolakan validasi dikembalikan sebagai hasil `tool_use_error` dan terjadi sebelum hook berjalan, sehingga tidak memicu `PreToolUse` maupun `PostToolUseFailure`. Penolakan izin memicu `PreToolUse` tetapi tidak memicu event ini; lihat [PermissionDenied](#permissiondenied).2246 Event ini tidak dipicu untuk panggilan tool yang ditolak sebelum eksekusi: nama tool yang tidak dikenal, input yang gagal validasi skema atau validasi khusus tool, atau penolakan izin. Penolakan validasi dikembalikan sebagai hasil `tool_use_error` dan terjadi sebelum hook berjalan, sehingga tidak memicu `PreToolUse` maupun `PostToolUseFailure`. Penolakan izin memicu `PreToolUse` tetapi tidak memicu event ini; lihat [PermissionDenied](#permissiondenied).

2247</Note>2247</Note>

2248 2248 

2249<h4 id="posttoolusefailure-input">2249<h4 id="posttoolusefailure-input">

2250 Input PostToolUseFailure2250 Input PostToolUseFailure

2251</h4>2251</h4>

2252 2252 

2253Hook PostToolUseFailure menerima field `tool_name` dan `tool_input` yang sama seperti PostToolUse, bersama dengan informasi error sebagai field tingkat atas. Untuk tool MCP, hook juga menerima objek [`mcp_server`](#pretooluse-input). Misalnya, perintah `npm test` yang gagal mungkin mengirimkan:2253Hook PostToolUseFailure menerima field `tool_name` dan `tool_input` yang sama seperti PostToolUse, beserta informasi error sebagai field tingkat atas. Untuk tool MCP, hook ini juga menerima objek [`mcp_server`](#pretooluse-input). Misalnya, perintah `npm test` yang gagal mungkin mengirimkan:

2254 2254 

2255```json theme={null}2255```json theme={null}

2256{2256{


2274| Field | Deskripsi |2274| Field | Deskripsi |

2275| :- | :- |2275| :- | :- |

2276| `error` | String yang menjelaskan apa yang salah. Formatnya bergantung pada tool yang gagal |2276| `error` | String yang menjelaskan apa yang salah. Formatnya bergantung pada tool yang gagal |

2277| `is_interrupt` | Boolean opsional. True ketika kegagalan mencapai Claude Code sebagai pembatalan, bukan sebagai error yang dilaporkan oleh tool. Membatalkan tool yang sedang berjalan tidak memicu hook ini; hasil tool membawa pesan interupsi sebagai gantinya |2277| `is_interrupt` | Boolean opsional. True ketika kegagalan mencapai Claude Code sebagai pembatalan, bukan sebagai error yang dilaporkan tool. Membatalkan tool yang sedang berjalan tidak memicu hook ini; hasil tool membawa pesan interupsi sebagai gantinya |

2278| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Tidak termasuk waktu yang dihabiskan dalam permintaan izin dan hook PreToolUse |2278| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Tidak termasuk waktu yang dihabiskan dalam permintaan izin dan hook PreToolUse |

2279 2279 

2280String `error` umumnya merupakan teks yang sama yang diterima Claude sebagai hasil tool yang gagal. Formatnya bervariasi menurut tool dan jenis kegagalan. Dasarkan hook Anda pada `tool_name`, `is_interrupt`, dan baris pertama `Exit code N`; perlakukan sisa string sebagai teks tampilan, bukan format yang stabil.2280String `error` umumnya merupakan teks yang sama dengan yang diterima Claude sebagai hasil tool yang gagal. Formatnya bervariasi menurut tool dan kegagalan. Dasarkan hook Anda pada `tool_name`, `is_interrupt`, dan baris pertama `Exit code N`; perlakukan sisa string sebagai teks tampilan, bukan format yang stabil.

2281 2281 

2282* Untuk Bash dan PowerShell, perintah yang berjalan dan keluar menghasilkan baris pertama `Exit code N`, lalu output apa pun yang dihasilkan perintah sebagai satu blok dengan stdout dan stderr yang saling berselang-seling2282* Untuk Bash dan PowerShell, perintah yang berjalan lalu keluar menghasilkan baris pertama `Exit code N`, lalu output apa pun yang dihasilkan perintah sebagai satu blok dengan stdout dan stderr yang diselingi

2283* Sebuah payload juga dapat membawa pesan kegagalan polos tanpa baris exit code, ketika Claude Code tidak dapat memulai proses shell itu sendiri2283* Sebuah payload juga dapat membawa pesan kegagalan polos tanpa baris exit code, ketika Claude Code tidak dapat memulai proses shell itu sendiri

2284* Claude Code memotong bagian tengah string panjang di sekitar penanda `... [N characters truncated] ...`, dan dapat menyisipkan baris miliknya sendiri, seperti `Command timed out after 2m 0s`2284* Claude Code memotong bagian tengah string panjang di sekitar penanda `... [N characters truncated] ...`, dan dapat menyisipkan baris miliknya sendiri, seperti `Command timed out after 2m 0s`

2285 2285 


2306 PostToolBatch2306 PostToolBatch

2307</h3>2307</h3>

2308 2308 

2309Berjalan sekali setelah setiap panggilan tool dalam satu batch selesai diproses, sebelum Claude Code mengirim permintaan berikutnya ke model. `PostToolUse` dipicu sekali per tool, yang berarti ia dipicu secara bersamaan ketika Claude melakukan panggilan tool paralel. `PostToolBatch` dipicu tepat sekali dengan batch lengkap, sehingga merupakan tempat yang tepat untuk menyuntikkan konteks yang bergantung pada kumpulan tool yang berjalan, bukan pada satu tool tertentu. Tidak ada matcher untuk event ini.2309Berjalan sekali setelah setiap panggilan tool dalam satu batch telah selesai, sebelum Claude Code mengirim permintaan berikutnya ke model. `PostToolUse` dipicu sekali per tool, yang berarti hook tersebut dipicu secara bersamaan ketika Claude melakukan panggilan tool paralel. `PostToolBatch` dipicu tepat sekali dengan batch lengkap, sehingga ini adalah tempat yang tepat untuk menyisipkan konteks yang bergantung pada kumpulan tool yang berjalan, bukan pada satu tool saja. Tidak ada matcher untuk event ini.

2310 2310 

2311<h4 id="posttoolbatch-input">2311<h4 id="posttoolbatch-input">

2312 Input PostToolBatch2312 Input PostToolBatch


2338}2338}

2339```2339```

2340 2340 

2341`tool_response` berisi konten yang sama yang diterima model dalam blok `tool_result` yang sesuai. Nilainya adalah string terserialisasi atau array content-block, persis seperti yang dikeluarkan tool. Untuk `Read`, itu berarti teks dengan awalan nomor baris, bukan konten file mentah. Respons bisa berukuran besar, jadi parse hanya field yang Anda butuhkan.2341`tool_response` berisi konten yang sama dengan yang diterima model dalam blok `tool_result` yang bersesuaian. Nilainya adalah string terserialisasi atau array content-block, persis seperti yang dikeluarkan tool. Untuk `Read`, itu berarti teks berawalan nomor baris, bukan konten file mentah. Respons bisa berukuran besar, jadi parse hanya field yang Anda butuhkan.

2342 2342 

2343<Note>2343<Note>

2344 Bentuk `tool_response` berbeda dengan milik `PostToolUse`. `PostToolUse` meneruskan objek `Output` terstruktur milik tool, seperti `{filePath: "...", type: "create"}` untuk `Write`; `PostToolBatch` meneruskan konten `tool_result` terserialisasi yang dilihat model.2344 Bentuk `tool_response` berbeda dari milik `PostToolUse`. `PostToolUse` meneruskan objek `Output` terstruktur milik tool, seperti `{filePath: "...", type: "create"}` untuk `Write`; `PostToolBatch` meneruskan konten `tool_result` terserialisasi yang dilihat model.

2345</Note>2345</Note>

2346 2346 

2347<h4 id="posttoolbatch-decision-control">2347<h4 id="posttoolbatch-decision-control">

2348 Kontrol keputusan PostToolBatch2348 Kontrol keputusan PostToolBatch

2349</h4>2349</h4>

2350 2350 

2351Hook `PostToolBatch` dapat menyuntikkan konteks untuk Claude. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:2351Hook `PostToolBatch` dapat menyisipkan konteks untuk Claude. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:

2352 2352 

2353| Field | Deskripsi |2353| Field | Deskripsi |

2354| :- | :- |2354| :- | :- |

2355| `additionalContext` | String konteks yang disuntikkan sekali sebelum panggilan model berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) untuk detail pengiriman, apa yang perlu dimasukkan, dan bagaimana sesi yang dilanjutkan menangani nilai sebelumnya |2355| `additionalContext` | String konteks yang disisipkan sekali sebelum panggilan model berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) untuk detail pengiriman, apa yang perlu dimasukkan, dan bagaimana sesi yang dilanjutkan menangani nilai sebelumnya |

2356 2356 

2357```json theme={null}2357```json theme={null}

2358{2358{


2363}2363}

2364```2364```

2365 2365 

2366Mengembalikan `decision: "block"` atau `continue: false` menghentikan agentic loop sebelum panggilan model berikutnya. Pesan pemblokiran berasal dari `reason` atau `stopReason` JSON, atau dari stderr pada exit 2. Anda melihatnya sebagai peringatan di transkrip, dan pesan itu tetap ada dalam percakapan, sehingga Claude melihatnya ketika percakapan berlanjut.2366Mengembalikan `decision: "block"` atau `continue: false` menghentikan agentic loop sebelum panggilan model berikutnya. Pesan pemblokiran berasal dari `reason` atau `stopReason` JSON, atau dari stderr pada exit 2. Anda melihatnya sebagai peringatan dalam transkrip, dan pesan tersebut tetap berada dalam percakapan, sehingga Claude melihatnya ketika percakapan berlanjut.

2367 2367 

2368<h3 id="permissiondenied">2368<h3 id="permissiondenied">

2369 PermissionDenied2369 PermissionDenied

2370</h3>2370</h3>

2371 2371 

2372Berjalan ketika [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) menolak panggilan tool, termasuk ketika ia menolak tanpa putusan pengklasifikasi karena [pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action) atau responsnya tidak dapat di-parse. Hook ini hanya dipicu dalam auto mode: hook ini tidak berjalan ketika Anda menolak dialog izin secara manual, ketika hook `PreToolUse` memblokir panggilan, atau ketika aturan `deny` cocok. Gunakan ini untuk mencatat penolakan, menyesuaikan konfigurasi, atau memberi tahu model bahwa ia boleh mencoba ulang panggilan tool.2372Berjalan ketika [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) menolak panggilan tool, termasuk ketika menolak tanpa putusan pengklasifikasi karena [pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action) atau responsnya tidak dapat di-parse. Hook ini hanya dipicu dalam auto mode: hook ini tidak berjalan ketika Anda menolak dialog izin secara manual, ketika hook `PreToolUse` memblokir panggilan, atau ketika aturan `deny` cocok. Gunakan ini untuk mencatat penolakan, menyesuaikan konfigurasi, atau memberi tahu model bahwa ia boleh mencoba ulang panggilan tool.

2373 2373 

2374Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.2374Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2375 2375 


2377 Input PermissionDenied2377 Input PermissionDenied

2378</h4>2378</h4>

2379 2379 

2380Selain [field input umum](#common-input-fields), hook PermissionDenied menerima `tool_name`, `tool_input`, `tool_use_id`, dan `reason`. Untuk tool MCP, hook juga menerima objek [`mcp_server`](#pretooluse-input).2380Selain [field input umum](#common-input-fields), hook PermissionDenied menerima `tool_name`, `tool_input`, `tool_use_id`, dan `reason`. Untuk tool MCP, hook ini juga menerima objek [`mcp_server`](#pretooluse-input).

2381 2381 

2382```json theme={null}2382```json theme={null}

2383{2383{


2398 2398 

2399| Field | Deskripsi |2399| Field | Deskripsi |

2400| :- | :- |2400| :- | :- |

2401| `reason` | Alasan penolakan. Untuk putusan pengklasifikasi, di sebagian besar sesi alasan ini menyebutkan aturan yang cocok dalam kurung siku, seperti `[Data Exfiltration]`; lihat [Meninjau penolakan](/docs/id/auto-mode-config#review-denials) untuk bentuk lainnya. Untuk [penolakan tanpa putusan](#permissiondenied-decision-control), alasan dimulai dengan `Auto mode could not evaluate this action and is blocking it for safety`. Untuk penolakan karena model pengklasifikasi tidak tersedia, alasannya adalah teks tetap `Classifier unavailable` |2401| `reason` | Alasan penolakan. Untuk putusan pengklasifikasi, di sebagian besar sesi alasan ini menyebutkan aturan yang cocok dalam tanda kurung siku, seperti `[Data Exfiltration]`; lihat [Meninjau penolakan](/docs/id/auto-mode-config#review-denials) untuk bentuk lainnya. Untuk [penolakan tanpa putusan](#permissiondenied-decision-control), alasan diawali dengan `Auto mode could not evaluate this action and is blocking it for safety`. Untuk penolakan karena model pengklasifikasi tidak tersedia, alasannya adalah teks tetap `Classifier unavailable` |

2402 2402 

2403<h4 id="permissiondenied-decision-control">2403<h4 id="permissiondenied-decision-control">

2404 Kontrol keputusan PermissionDenied2404 Kontrol keputusan PermissionDenied


2425 2425 

2426Berjalan ketika Claude Code mengirim notifikasi. Mencocokkan berdasarkan jenis notifikasi. Hilangkan matcher untuk menjalankan hook untuk semua jenis notifikasi.2426Berjalan ketika Claude Code mengirim notifikasi. Mencocokkan berdasarkan jenis notifikasi. Hilangkan matcher untuk menjalankan hook untuk semua jenis notifikasi.

2427 2427 

2428Anda menerima event hook ini bahkan ketika notifikasi desktop dimatikan: pengaturan `preferredNotifChannel`, termasuk `notifications_disabled`, hanya mengubah cara Anda diberi peringatan, bukan apakah hook Anda berjalan.2428Anda menerima event hook ini bahkan ketika notifikasi desktop dimatikan: pengaturan `preferredNotifChannel`, termasuk `notifications_disabled`, hanya mengubah cara Anda diberi tahu, bukan apakah hook Anda berjalan.

2429 2429 

2430| Matcher | Kapan dipicu |2430| Matcher | Kapan dipicu |

2431| :- | :- |2431| :- | :- |

2432| `permission_prompt` | Claude memerlukan Anda untuk menyetujui penggunaan tool atau [permintaan jaringan](/docs/id/sandboxing#network-isolation) dari perintah yang di-sandbox, dan permintaan izin telah menunggu sekitar enam detik |2432| `permission_prompt` | Claude membutuhkan Anda untuk menyetujui penggunaan tool atau [permintaan jaringan](/docs/id/sandboxing#network-isolation) dari perintah yang di-sandbox, dan permintaan izin telah menunggu sekitar enam detik |

2433| `idle_prompt` | Claude selesai merespons sekitar 60 detik yang lalu dan Anda belum mengetik sejak itu |2433| `idle_prompt` | Claude selesai merespons sekitar 60 detik yang lalu dan Anda belum mengetik sejak itu |

2434| `auth_success` | Autentikasi selesai |2434| `auth_success` | Autentikasi selesai |

2435| `elicitation_dialog` | Server MCP membuka formulir elicitation dan Anda belum mengetik selama sekitar enam detik |2435| `elicitation_dialog` | Server MCP membuka formulir elicitation dan Anda belum mengetik selama sekitar enam detik |


2438| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |2438| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |

2439| `agent_needs_input` | Sesi latar belakang mulai menunggu input Anda saat [agent view](/docs/id/agent-view) terbuka di terminal. Juga dipicu ketika sesi terminal menampilkan kepada Anda [pertanyaan penyiapan terminal dari rekan tim agent](/docs/id/agent-teams#choose-a-display-mode) atau pemberitahuan auto mode tentang [biaya permintaan pengklasifikasi](/docs/id/auto-mode-classifier-billing) dan Anda belum mengetik selama sekitar enam detik |2439| `agent_needs_input` | Sesi latar belakang mulai menunggu input Anda saat [agent view](/docs/id/agent-view) terbuka di terminal. Juga dipicu ketika sesi terminal menampilkan kepada Anda [pertanyaan penyiapan terminal dari rekan tim agent](/docs/id/agent-teams#choose-a-display-mode) atau pemberitahuan auto mode tentang [biaya permintaan pengklasifikasi](/docs/id/auto-mode-classifier-billing) dan Anda belum mengetik selama sekitar enam detik |

2440| `agent_completed` | Sesi latar belakang selesai atau gagal. Hanya dipicu saat [agent view](/docs/id/agent-view) terbuka di terminal |2440| `agent_completed` | Sesi latar belakang selesai atau gagal. Hanya dipicu saat [agent view](/docs/id/agent-view) terbuka di terminal |

2441| `quota_auto_resume_fired` | Claude Code melanjutkan tugas Anda setelah batas penggunaan claude.ai menjedanya: pada saat reset, atau lebih cepat ketika sesuatu yang Anda lakukan di Claude Code selama menunggu, seperti menambahkan kredit penggunaan, meningkatkan paket Anda, atau beralih model, membuat penggunaan tersedia kembali, dengan [pengecualian pengaturan model](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset) |2441| `quota_auto_resume_fired` | Claude Code melanjutkan tugas Anda setelah batas penggunaan claude.ai menjedanya: pada saat reset, atau lebih cepat ketika sesuatu yang Anda lakukan di Claude Code selama menunggu, seperti menambahkan kredit penggunaan, meningkatkan paket, atau berganti model, membuat penggunaan tersedia kembali, dengan [pengecualian pengaturan model](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset) |

2442| `quota_auto_resume_stale` | Batas penggunaan claude.ai direset saat komputer Anda dalam mode tidur selama lebih dari sekitar 30 menit. Claude Code menunggu Anda menekan `Enter` alih-alih melanjutkan. Setelah tidur yang lebih singkat, Claude Code melanjutkan dan memicu `quota_auto_resume_fired` sebagai gantinya |2442| `quota_auto_resume_stale` | Batas penggunaan claude.ai di-reset saat komputer Anda dalam mode tidur selama lebih dari sekitar 30 menit. Claude Code menunggu Anda menekan `Enter` alih-alih melanjutkan. Setelah tidur yang lebih singkat, Claude Code melanjutkan dan memicu `quota_auto_resume_fired` sebagai gantinya |

2443| `quota_auto_resume_disabled` | Claude Code mengakhiri penantiannya untuk batas penggunaan claude.ai tanpa melanjutkan tugas Anda: [`autoContinueAtUsageLimit`](/docs/id/settings-reference#autocontinueatusagelimit) dimatikan atau waktu reset bergeser lebih dari 24 jam selama penantian yang dimulai Claude Code sendiri, tugas yang dilanjutkan terus mencapai batas, atau kelanjutan diblokir sebelum mencapai model. Tidak dipicu ketika Anda menekan `Esc` atau `Ctrl+C`, atau memilih **Don't continue automatically** |2443| `quota_auto_resume_disabled` | Claude Code mengakhiri penantiannya terhadap batas penggunaan claude.ai tanpa melanjutkan tugas Anda: [`autoContinueAtUsageLimit`](/docs/id/settings-reference#autocontinueatusagelimit) dimatikan atau waktu reset bergeser lebih dari 24 jam selama penantian yang dimulai Claude Code sendiri, tugas yang dilanjutkan terus mencapai batas, atau kelanjutan diblokir sebelum mencapai model. Tidak dipicu ketika Anda menekan `Esc` atau `Ctrl+C`, atau memilih **Don't continue automatically** |

2444 2444 

2445Jenis `quota_auto_resume_fired`, `quota_auto_resume_stale`, dan `quota_auto_resume_disabled` memerlukan Claude Code v2.1.234 atau lebih baru.2445Jenis `quota_auto_resume_fired`, `quota_auto_resume_stale`, dan `quota_auto_resume_disabled` memerlukan Claude Code v2.1.234 atau yang lebih baru.

2446 2446 

2447Dalam sesi terminal, `permission_prompt` untuk permintaan jaringan dari perintah yang di-sandbox memerlukan Claude Code v2.1.246 atau lebih baru.2447Dalam sesi terminal, `permission_prompt` untuk permintaan jaringan dari perintah yang di-sandbox memerlukan Claude Code v2.1.246 atau yang lebih baru.

2448 2448 

2449`agent_needs_input` untuk pertanyaan penyiapan terminal dari rekan tim memerlukan Claude Code v2.1.248 atau lebih baru.2449`agent_needs_input` untuk pertanyaan penyiapan terminal dari rekan tim memerlukan Claude Code v2.1.248 atau yang lebih baru.

2450 2450 

2451<Note>2451<Note>

2452 Jenis `permission_prompt`, `idle_prompt`, `elicitation_dialog`, dan `elicitation_url_dialog` berbagi waktu yang sama dengan notifikasi desktop, sehingga dalam sesi terminal Anda hanya melihatnya ketika Anda tampak sedang jauh dari terminal:2452 Jenis `permission_prompt`, `idle_prompt`, `elicitation_dialog`, dan `elicitation_url_dialog` berbagi pengaturan waktu dengan notifikasi desktop, sehingga dalam sesi terminal Anda hanya melihatnya ketika Anda tampak sedang tidak berada di depan terminal:

2453 2453 

2454 * `permission_prompt` akan muncul setelah Anda tidak mengetik selama sekitar enam detik. Timer dimulai ketika permintaan izin muncul, dan setiap ketukan tombol menundanya. Untuk menjalankan hook segera ketika Claude meminta izin untuk menggunakan tool, gunakan [PermissionRequest](#permissionrequest) sebagai gantinya.2454 * Harapkan `permission_prompt` setelah Anda tidak mengetik selama sekitar enam detik. Timer dimulai ketika permintaan izin muncul, dan setiap ketukan tombol menundanya. Untuk menjalankan hook segera ketika Claude meminta izin untuk menggunakan tool, gunakan [PermissionRequest](#permissionrequest) sebagai gantinya.

2455 * `idle_prompt` akan muncul sekitar 60 detik setelah Claude selesai merespons, dan hanya jika Anda belum mengetik sejak itu. Claude Code tidak mengirim `idle_prompt` saat menunggu batas penggunaan claude.ai direset. Ketika penantian berakhir dengan sendirinya, salah satu jenis `quota_auto_resume_*` akan dipicu sebagai gantinya.2455 * Harapkan `idle_prompt` sekitar 60 detik setelah Claude selesai merespons, dan hanya jika Anda belum mengetik sejak itu serta tidak ada agent latar belakang, seperti [subagent](/docs/id/sub-agents) latar belakang, yang masih berjalan. Claude Code tidak mengirim `idle_prompt` saat menunggu batas penggunaan claude.ai di-reset. Ketika penantian berakhir dengan sendirinya, salah satu jenis `quota_auto_resume_*` dipicu sebagai gantinya.

2456 * `elicitation_dialog` untuk formulir elicitation, atau `elicitation_url_dialog` untuk permintaan URL browser, akan muncul setelah Anda tidak mengetik selama sekitar enam detik. Keduanya berbagi batas enam detik yang sama dengan `permission_prompt`: timer dimulai ketika dialog muncul, dan setiap ketukan tombol menundanya.2456 * Harapkan `elicitation_dialog` untuk formulir elicitation, atau `elicitation_url_dialog` untuk permintaan URL browser, setelah Anda tidak mengetik selama sekitar enam detik. Keduanya berbagi batas enam detik yang sama dengan `permission_prompt`: timer dimulai ketika dialog muncul, dan setiap ketukan tombol menundanya.

2457 2457 

2458 Permintaan izin atau elicitation yang tiba saat dialog lain sedang ditampilkan tetap menggunakan batas enam detik yang sama, dihitung sejak permintaan tiba. Notifikasinya dapat sampai kepada Anda saat permintaan masih menunggu di balik dialog yang terbuka.2458 Permintaan izin atau elicitation yang tiba saat dialog lain sedang tampil di layar tetap menggunakan batas enam detik yang sama, dihitung sejak permintaan tiba. Notifikasinya dapat sampai kepada Anda saat permintaan masih menunggu di belakang dialog yang terbuka.

2459</Note>2459</Note>

2460 2460 

2461Claude Code mengatur waktu `permission_prompt` secara berbeda dalam sesi di mana ia mengirim permintaan izin ke [callback `canUseTool`](/docs/id/agent-sdk/user-input) milik Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code menghosting Claude Code:2461Claude Code mengatur waktu `permission_prompt` secara berbeda dalam sesi di mana Claude Code mengirim permintaan izin ke [callback `canUseTool`](/docs/id/agent-sdk/user-input) milik Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code meng-host Claude Code:

2462 2462 

2463* `permission_prompt` akan muncul sekitar enam detik setelah Claude meminta izin. Claude Code tidak menundanya saat Anda mengetik.2463* Harapkan `permission_prompt` sekitar enam detik setelah Claude meminta izin. Claude Code tidak menundanya saat Anda mengetik.

2464* Jika Anda atau hook [PermissionRequest](#permissionrequest) menjawab lebih cepat, Claude Code tidak menjalankan `permission_prompt`.2464* Jika Anda atau hook [PermissionRequest](#permissionrequest) menjawab lebih cepat, Claude Code tidak menjalankan `permission_prompt`.

2465* Atur [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/id/env-vars) ke `1` untuk mematikan `permission_prompt` dalam sesi ini.2465* Atur [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/id/env-vars) ke `1` untuk mematikan `permission_prompt` dalam sesi-sesi ini.

2466 2466 

2467Sebelum v2.1.233, `permission_prompt` tidak dipicu dalam sesi ini.2467Sebelum v2.1.233, `permission_prompt` tidak dipicu dalam sesi-sesi ini.

2468 2468 

2469Gunakan matcher terpisah untuk menjalankan handler yang berbeda bergantung pada jenis notifikasi. Konfigurasi ini memicu skrip peringatan khusus izin ketika Claude memerlukan persetujuan izin dan notifikasi yang berbeda ketika Claude dalam keadaan idle:2469Gunakan matcher terpisah untuk menjalankan handler yang berbeda tergantung pada jenis notifikasi. Konfigurasi ini memicu skrip peringatan khusus izin ketika Claude membutuhkan persetujuan izin dan notifikasi yang berbeda ketika Claude sedang idle:

2470 2470 

2471```json theme={null}2471```json theme={null}

2472{2472{


2519 SubagentStart2519 SubagentStart

2520</h3>2520</h3>

2521 2521 

2522Berjalan ketika Claude memunculkan subagent dengan tool Agent, ketika Claude [melanjutkan subagent](/docs/id/sub-agents#resume-subagents), dan setiap kali rekan tim [tim agent](/docs/id/agent-teams) dalam proses menangani pesan baru. Mendukung matcher untuk memfilter berdasarkan nama jenis agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [subagent kustom](/docs/id/sub-agents), ini adalah field `name` dari frontmatter agent, bukan nama file.2522Berjalan ketika Claude memunculkan subagent dengan tool Agent, ketika Claude [melanjutkan subagent](/docs/id/sub-agents#resume-subagents), dan setiap kali rekan tim [tim agent](/docs/id/agent-teams) in-process menangani pesan baru. Mendukung matcher untuk memfilter berdasarkan nama jenis agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [subagent kustom](/docs/id/sub-agents), ini adalah field `name` dari frontmatter agent, bukan nama file.

2523 2523 

2524Untuk subagent yang disertakan oleh [plugin](/docs/id/plugins/overview), jenis agent adalah pengidentifikasi dengan cakupan plugin seperti `my-plugin:reviewer`, bukan nama frontmatter polos. Titik dua menempatkan nama dengan cakupan plugin pada jalur regular expression, jadi jangkarkan matcher dengan `^` dan `$` untuk kecocokan persis: `^my-plugin:reviewer$`.2524Untuk subagent yang disertakan oleh [plugin](/docs/id/plugins/overview), jenis agent adalah pengidentifikasi dengan cakupan plugin seperti `my-plugin:reviewer`, bukan nama frontmatter polos. Titik dua menempatkan nama dengan cakupan plugin pada jalur ekspresi reguler, jadi jangkarkan matcher dengan `^` dan `$` untuk pencocokan persis: `^my-plugin:reviewer$`.

2525 2525 

2526<h4 id="subagentstart-input">2526<h4 id="subagentstart-input">

2527 Input SubagentStart2527 Input SubagentStart


2540}2540}

2541```2541```

2542 2542 

2543Hook SubagentStart tidak dapat memblokir pembuatan subagent, tetapi dapat menyuntikkan konteks ke dalam subagent. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan:2543Hook SubagentStart tidak dapat memblokir pembuatan subagent, tetapi dapat menyisipkan konteks ke dalam subagent. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan:

2544 2544 

2545| Field | Deskripsi |2545| Field | Deskripsi |

2546| :- | :- |2546| :- | :- |


2555}2555}

2556```2556```

2557 2557 

2558Ketika hook berjalan lagi untuk subagent yang sama, Claude Code menyuntikkan konteks yang dikembalikan hanya jika konteks subagent belum menyimpan salinan dari eksekusi sebelumnya. Salinan yang disuntikkan saat peluncuran tetap di tempatnya, sehingga [prompt cache](/docs/id/prompt-caching#subagents-and-the-cache) subagent tetap utuh. Setelah [auto-compaction](/docs/id/sub-agents#auto-compaction) membuang salinan tersebut, Claude Code menyuntikkan konteks dari eksekusi berikutnya lagi.2558Ketika hook berjalan lagi untuk subagent yang sama, Claude Code menyisipkan konteks yang dikembalikan hanya ketika konteks subagent belum memuat salinan dari proses sebelumnya. Salinan yang disisipkan saat peluncuran tetap di tempatnya, sehingga [prompt cache](/docs/id/prompt-caching#subagents-and-the-cache) subagent tetap utuh. Setelah [auto-compaction](/docs/id/sub-agents#auto-compaction) membuang salinan tersebut, Claude Code menyisipkan kembali konteks dari proses berikutnya.

2559 2559 

2560<h3 id="subagentstop">2560<h3 id="subagentstop">

2561 SubagentStop2561 SubagentStop


2567 Input SubagentStop2567 Input SubagentStop

2568</h4>2568</h4>

2569 2569 

2570Selain [field input umum](#common-input-fields), hook SubagentStop menerima `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, dan `last_assistant_message`. Field `agent_type` adalah nilai yang digunakan untuk pemfilteran matcher. `transcript_path` adalah transkrip sesi utama, sedangkan `agent_transcript_path` adalah transkrip milik subagent sendiri yang disimpan dalam folder `subagents/` bersarang. Field `last_assistant_message` berisi konten teks dari respons akhir subagent, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip.2570Selain [field input umum](#common-input-fields), hook SubagentStop menerima `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, dan `last_assistant_message`. Field `agent_type` adalah nilai yang digunakan untuk pemfilteran matcher. `transcript_path` adalah transkrip sesi utama, sedangkan `agent_transcript_path` adalah transkrip milik subagent sendiri yang disimpan dalam folder bertingkat `subagents/`. Field `last_assistant_message` berisi konten teks dari respons akhir subagent, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip.

2571 2571 

2572Tidak setiap event SubagentStop berasal dari subagent yang dimunculkan Claude. Claude Code juga menjalankan agent internal untuk beberapa fiturnya sendiri, seperti [saran prompt](/docs/id/interactive-mode#prompt-suggestions) dan [pertanyaan sampingan `/btw`](/docs/id/interactive-mode#side-questions-with-%2Fbtw), dan SubagentStop juga dipicu ketika salah satunya selesai. Untuk event tersebut, `agent_type` adalah nama agent yang dijalankan oleh sesi itu sendiri, seperti yang diatur dengan [`--agent`](/docs/id/cli-reference#cli-flags) atau [pengaturan `agent`](/docs/id/settings-reference#agent), dan berupa string kosong ketika sesi berjalan tanpa agent tersebut.2572Tidak setiap event SubagentStop berasal dari subagent yang dimunculkan Claude. Claude Code juga menjalankan agent internal untuk beberapa fiturnya sendiri, seperti [saran prompt](/docs/id/interactive-mode#prompt-suggestions) dan [pertanyaan sampingan `/btw`](/docs/id/interactive-mode#side-questions-with-%2Fbtw), dan SubagentStop juga dipicu ketika salah satunya selesai. Untuk event tersebut, `agent_type` adalah nama agent yang dijalankan oleh sesi itu sendiri, seperti yang diatur dengan [`--agent`](/docs/id/cli-reference#cli-flags) atau [pengaturan `agent`](/docs/id/settings-reference#agent), dan berupa string kosong ketika sesi berjalan tanpanya.

2573 2573 

2574`matcher` yang menyebutkan jenis agent tidak cocok dengan `agent_type` yang kosong. Hook yang matcher-nya dihilangkan, `""`, atau `"*"`, atau berupa regular expression yang cocok dengan string kosong, juga berjalan untuk event dengan `agent_type` kosong.2574`matcher` yang menyebutkan jenis agent tidak cocok dengan `agent_type` kosong. Hook yang matcher-nya dihilangkan, `""`, atau `"*"`, atau berupa ekspresi reguler yang cocok dengan string kosong, juga berjalan untuk event dengan `agent_type` kosong.

2575 2575 

2576Pada Claude Code v2.1.271 atau lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference) mengirimkan laporannya melalui tool tersebut sebelum berhenti. Field `last_assistant_message` kemudian berisi teks penutup subagent, jika ada, yang bukan laporan yang dikirimkan. Laporan tersebut adalah input `message` dari panggilan itu, yang diterima oleh hook `PreToolUse` atau `PostToolUse` yang mencocokkan `SubagentHandback` sebagai `tool_input.message`.2576Pada Claude Code v2.1.271 atau yang lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference) mengirimkan laporannya melalui tool tersebut sebelum berhenti. Field `last_assistant_message` kemudian memuat teks penutup subagent, jika ada, yang bukan laporan yang dikirimkan. Laporan tersebut adalah input `message` dari panggilan itu, yang diterima hook `PreToolUse` atau `PostToolUse` yang dicocokkan pada `SubagentHandback` sebagai `tool_input.message`.

2577 2577 

2578Hook SubagentStop juga menerima array `background_tasks` dan `session_crons` yang dijelaskan di bawah [Input Stop](#stop-input). Kedua array tersebut dicakup ke sesi induk, bukan subagent.2578Hook SubagentStop juga menerima array `background_tasks` dan `session_crons` yang dijelaskan di [Input Stop](#stop-input). Kedua array tersebut dicakup ke sesi induk, bukan subagent.

2579 2579 

2580```json theme={null}2580```json theme={null}

2581{2581{


2594}2594}

2595```2595```

2596 2596 

2597Hook SubagentStop menggunakan format kontrol keputusan yang sama seperti [hook Stop](#stop-decision-control), termasuk `hookSpecificOutput.additionalContext` dengan `hookEventName` diatur ke `"SubagentStop"`, untuk umpan balik non-error yang membuat subagent tetap berjalan. Mengembalikan `decision: "block"` dengan `reason` membuat subagent tetap berjalan dan mengirimkan `reason` ke subagent sebagai instruksi berikutnya. Hook yang memblokir dengan keluar menggunakan kode 2 mengirimkan pesan stderr-nya dengan cara yang sama. Untuk menyuntikkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.2597Hook SubagentStop menggunakan format kontrol keputusan yang sama seperti [hook Stop](#stop-decision-control), termasuk `hookSpecificOutput.additionalContext` dengan `hookEventName` diatur ke `"SubagentStop"`, untuk umpan balik non-error yang membuat subagent tetap berjalan. Mengembalikan `decision: "block"` dengan `reason` membuat subagent tetap berjalan dan mengirimkan `reason` ke subagent sebagai instruksi berikutnya. Hook yang memblokir dengan keluar menggunakan exit 2 mengirimkan pesan stderr-nya dengan cara yang sama. Untuk menyisipkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.

2598 2598 

2599<h3 id="taskcreated">2599<h3 id="taskcreated">

2600 TaskCreated2600 TaskCreated

2601</h3>2601</h3>

2602 2602 

2603Berjalan ketika sebuah tugas sedang dibuat melalui tool `TaskCreate`. Gunakan ini untuk menegakkan konvensi penamaan, mewajibkan deskripsi tugas, atau mencegah tugas tertentu dibuat. Dalam [sesi tanpa tool Task](/docs/id/tools-reference#task-tool-availability), event ini tidak dipicu.2603Berjalan ketika sebuah task sedang dibuat melalui tool `TaskCreate`. Gunakan ini untuk menerapkan konvensi penamaan, mewajibkan deskripsi task, atau mencegah task tertentu dibuat. Dalam [sesi tanpa tool Task](/docs/id/tools-reference#task-tool-availability), event ini tidak dipicu.

2604 2604 

2605Hook TaskCreated tidak mendukung matcher dan dipicu pada setiap kejadian.2605Hook TaskCreated tidak mendukung matcher dan dipicu pada setiap kejadian.

2606 2606 


2626 2626 

2627| Field | Deskripsi |2627| Field | Deskripsi |

2628| :- | :- |2628| :- | :- |

2629| `task_id` | Pengidentifikasi tugas yang sedang dibuat |2629| `task_id` | Pengidentifikasi task yang sedang dibuat |

2630| `task_subject` | Judul tugas |2630| `task_subject` | Judul task |

2631| `task_description` | Deskripsi terperinci tugas. Mungkin tidak ada |2631| `task_description` | Deskripsi terperinci task. Mungkin tidak ada |

2632| `teammate_name` | Nama rekan tim yang membuat tugas. Mungkin tidak ada |2632| `teammate_name` | Nama rekan tim yang membuat task. Mungkin tidak ada |

2633| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2633| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2634 2634 

2635<h4 id="taskcreated-decision-control">2635<h4 id="taskcreated-decision-control">

2636 Kontrol keputusan TaskCreated2636 Kontrol keputusan TaskCreated

2637</h4>2637</h4>

2638 2638 

2639Hook TaskCreated dapat memblokir pembuatan dengan dua cara. Dengan cara mana pun, Claude Code menghapus tugas dan mengembalikan pesan Anda kepada Claude sebagai error tool. Claude Code mengabaikan `continue: false` dari event ini dan Claude tetap bekerja.2639Hook TaskCreated dapat memblokir pembuatan dengan dua cara. Dengan cara mana pun, Claude Code menghapus task dan mengembalikan pesan Anda kepada Claude sebagai error tool. Claude Code mengabaikan `continue: false` dari event ini dan Claude terus bekerja.

2640 2640 

2641* **Exit code 2**: Claude Code mengembalikan teks stderr sebagai pesan.2641* **Exit code 2**: Claude Code mengembalikan teks stderr sebagai pesan.

2642* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code mengembalikan `reason` sebagai pesan.2642* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code mengembalikan `reason` sebagai pesan.

2643 2643 

2644Contoh ini memblokir tugas yang subjeknya tidak mengikuti format yang diwajibkan:2644Contoh ini memblokir task yang subjeknya tidak mengikuti format yang diwajibkan:

2645 2645 

2646```bash theme={null}2646```bash theme={null}

2647#!/bin/bash2647#!/bin/bash


2660 TaskCompleted2660 TaskCompleted

2661</h3>2661</h3>

2662 2662 

2663Berjalan ketika sebuah tugas sedang ditandai sebagai selesai. Ini dipicu dalam dua situasi: ketika agent mana pun secara eksplisit menandai tugas sebagai selesai melalui tool TaskUpdate, atau ketika rekan tim [tim agent](/docs/id/agent-teams) menyelesaikan gilirannya dengan tugas yang sedang berlangsung. Gunakan ini untuk menegakkan kriteria penyelesaian seperti lolos pengujian atau pemeriksaan lint sebelum tugas dapat ditutup.2663Berjalan ketika sebuah task sedang ditandai sebagai selesai. Ini dipicu dalam dua situasi: ketika agent mana pun secara eksplisit menandai task sebagai selesai melalui tool TaskUpdate, atau ketika rekan tim [tim agent](/docs/id/agent-teams) menyelesaikan gilirannya dengan task yang sedang dikerjakan. Gunakan ini untuk menerapkan kriteria penyelesaian seperti lulus tes atau pemeriksaan lint sebelum task dapat ditutup.

2664 2664 

2665Hook TaskCompleted tidak mendukung matcher dan dipicu pada setiap kejadian.2665Hook TaskCompleted tidak mendukung matcher dan dipicu pada setiap kejadian.

2666 2666 


2687 2687 

2688| Field | Deskripsi |2688| Field | Deskripsi |

2689| :- | :- |2689| :- | :- |

2690| `task_id` | Pengidentifikasi tugas yang sedang diselesaikan |2690| `task_id` | Pengidentifikasi task yang sedang diselesaikan |

2691| `task_subject` | Judul tugas |2691| `task_subject` | Judul task |

2692| `task_description` | Deskripsi terperinci tugas. Mungkin tidak ada |2692| `task_description` | Deskripsi terperinci task. Mungkin tidak ada |

2693| `teammate_name` | Nama rekan tim yang menyelesaikan tugas. Mungkin tidak ada |2693| `teammate_name` | Nama rekan tim yang menyelesaikan task. Mungkin tidak ada |

2694| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2694| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2695 2695 

2696<h4 id="taskcompleted-decision-control">2696<h4 id="taskcompleted-decision-control">

2697 Kontrol keputusan TaskCompleted2697 Kontrol keputusan TaskCompleted

2698</h4>2698</h4>

2699 2699 

2700Hook TaskCompleted mendukung dua cara untuk mengontrol penyelesaian tugas:2700Hook TaskCompleted mendukung dua cara untuk mengontrol penyelesaian task:

2701 2701 

2702* **Exit code 2**: tugas tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik.2702* **Exit code 2**: task tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik.

2703* **JSON `{"continue": false, "stopReason": "..."}`**: ketika rekan tim yang menyelesaikan gilirannya memicu event, rekan tim dihentikan sepenuhnya, sesuai dengan perilaku hook `Stop`. `stopReason` ditampilkan kepada pengguna. Ketika tool `TaskUpdate` memicu event, Claude Code mengabaikan `continue: false`; exit code 2 tetap memblokir penyelesaian.2703* **JSON `{"continue": false, "stopReason": "..."}`**: ketika rekan tim yang menyelesaikan gilirannya memicu event, menghentikan rekan tim sepenuhnya, sesuai dengan perilaku hook `Stop`. `stopReason` ditampilkan kepada pengguna. Ketika tool `TaskUpdate` memicu event, Claude Code mengabaikan `continue: false`; exit code 2 tetap memblokir penyelesaian.

2704 2704 

2705Contoh ini menjalankan pengujian dan memblokir penyelesaian tugas jika pengujian gagal:2705Contoh ini menjalankan tes dan memblokir penyelesaian task jika tes gagal:

2706 2706 

2707```bash theme={null}2707```bash theme={null}

2708#!/bin/bash2708#!/bin/bash


2734 Input Stop2734 Input Stop

2735</h4>2735</h4>

2736 2736 

2737Selain [field input umum](#common-input-fields), hook Stop menerima `stop_hook_active`, `last_assistant_message`, `background_tasks`, dan `session_crons`. Field `stop_hook_active` bernilai `true` ketika Claude Code sudah melanjutkan sebagai akibat dari hook stop. Periksa nilai ini atau proses transkrip untuk menghindari pemblokiran pada kondisi yang tidak akan pernah terselesaikan. Claude Code menerapkan batas 8 kelanjutan berturut-turut: setelah hook stop melanjutkan giliran delapan kali berturut-turut, Claude Code menimpa blokir berikutnya dan mengakhiri giliran. Untuk menaikkan batas, atur [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/id/env-vars).2737Selain [field input umum](#common-input-fields), hook Stop menerima `stop_hook_active`, `last_assistant_message`, `background_tasks`, dan `session_crons`. Field `stop_hook_active` bernilai `true` ketika Claude Code sudah melanjutkan sebagai akibat dari stop hook. Periksa nilai ini atau proses transkrip untuk menghindari pemblokiran pada kondisi yang tidak akan pernah terselesaikan. Claude Code menerapkan batas 8 kelanjutan berturut-turut: setelah stop hook melanjutkan giliran delapan kali berturut-turut, Claude Code menimpa blokir berikutnya dan mengakhiri giliran. Untuk menaikkan batas tersebut, atur [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/id/env-vars).

2738 2738 

2739Field `last_assistant_message` berisi konten teks dari respons akhir Claude, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip. Untuk hook yang bertindak pada giliran yang baru saja selesai, seperti hook pembacaan dengan suara keras atau notifikasi, gunakan field ini alih-alih membaca `transcript_path`: file transkrip tidak dijamin menyertakan pesan akhir pada saat Stop di semua versi.2739Field `last_assistant_message` berisi konten teks dari respons akhir Claude, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip. Untuk hook yang bertindak atas giliran yang baru selesai, seperti hook baca-nyaring atau notifikasi, gunakan field ini alih-alih membaca `transcript_path`: file transkrip tidak dijamin menyertakan pesan akhir pada saat Stop di semua versi.

2740 2740 

2741Array `background_tasks` dan `session_crons` memungkinkan hook membedakan "sesi sudah selesai" dari "sesi dijeda menunggu pekerjaan latar belakang untuk membangunkannya kembali". Kedua array hadir ketika registri tugas dapat dijangkau dan kosong ketika tidak ada yang sedang berjalan atau dijadwalkan.2741Array `background_tasks` dan `session_crons` memungkinkan hook membedakan antara "sesi sudah selesai" dan "sesi dijeda menunggu pekerjaan latar belakang untuk membangunkannya kembali". Kedua array ada ketika registri task dapat dijangkau dan kosong ketika tidak ada yang sedang berjalan atau dijadwalkan.

2742 2742 

2743Setiap entri dalam `background_tasks` menjelaskan satu tugas yang sedang berjalan dan menggunakan field berikut:2743Setiap entri dalam `background_tasks` menjelaskan satu task yang sedang berjalan dan menggunakan field berikut:

2744 2744 

2745| Field | Deskripsi |2745| Field | Deskripsi |

2746| :- | :- |2746| :- | :- |

2747| `id` | Pengidentifikasi tugas |2747| `id` | Pengidentifikasi task |

2748| `type` | Label jenis tugas yang mudah dibaca seperti `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, atau `MCP task`. Setiap label mengidentifikasi fitur Claude Code mana yang membuat tugas tersebut. Menggunakan diskriminan mentah sebagai cadangan untuk jenis yang tidak dikenali |2748| `type` | Label jenis task yang mudah dibaca seperti `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, atau `MCP task`. Setiap label mengidentifikasi fitur Claude Code mana yang membuat task tersebut. Kembali ke diskriminan mentah untuk jenis yang tidak dikenali |

2749| `status` | Status tugas saat ini |2749| `status` | Status task saat ini |

2750| `description` | Deskripsi teks bebas, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` di dalam string ketika dipotong |2750| `description` | Deskripsi teks bebas, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` di dalam string ketika dipotong |

2751| `command` | Baris perintah shell, dibatasi hingga 1000 karakter. Hanya ada untuk tugas `shell` |2751| `command` | Baris perintah shell, dibatasi hingga 1000 karakter. Hanya ada untuk task `shell` |

2752| `agent_type` | Nama jenis subagent. Hanya ada untuk tugas `subagent` |2752| `agent_type` | Nama jenis subagent. Hanya ada untuk task `subagent` |

2753| `server` | Nama server MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |2753| `server` | Nama server MCP. Hanya ada untuk task `monitor` dan `MCP task` |

2754| `tool` | Nama tool MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |2754| `tool` | Nama tool MCP. Hanya ada untuk task `monitor` dan `MCP task` |

2755| `name` | Nama workflow. Hanya ada untuk tugas `workflow` |2755| `name` | Nama workflow. Hanya ada untuk task `workflow` |

2756 2756 

2757Setiap entri dalam `session_crons` menjelaskan satu wakeup terjadwal dengan cakupan sesi, yang bersumber dari `CronCreate`, `ScheduleWakeup`, dan `/loop`:2757Setiap entri dalam `session_crons` menjelaskan satu wakeup terjadwal dengan cakupan sesi, yang bersumber dari `CronCreate`, `ScheduleWakeup`, dan `/loop`:

2758 2758 

2759| Field | Deskripsi |2759| Field | Deskripsi |

2760| :- | :- |2760| :- | :- |

2761| `id` | Pengidentifikasi tugas cron |2761| `id` | Pengidentifikasi task cron |

2762| `schedule` | Ekspresi cron, misalnya `0 9 * * 1-5` |2762| `schedule` | Ekspresi cron, misalnya `0 9 * * 1-5` |

2763| `recurring` | `false` untuk wakeup sekali jalan yang jadwalnya mengodekan satu waktu pemicu, `true` untuk tugas yang dipicu ulang pada setiap kecocokan |2763| `recurring` | `false` untuk wakeup sekali jalan yang jadwalnya mengodekan satu waktu pemicu, `true` untuk task yang dipicu ulang pada setiap kecocokan |

2764| `prompt` | Prompt yang dikirim ketika cron dipicu, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` yang sama |2764| `prompt` | Prompt yang dikirim ketika cron dipicu, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` yang sama |

2765 2765 

2766Contoh ini menunjukkan input Stop dengan satu tugas shell yang sedang berjalan dan satu cron berulang:2766Contoh ini menunjukkan input Stop dengan satu task shell yang sedang berjalan dan satu cron berulang:

2767 2767 

2768```json theme={null}2768```json theme={null}

2769{2769{


2803| Field | Deskripsi |2803| Field | Deskripsi |

2804| :- | :- |2804| :- | :- |

2805| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |2805| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |

2806| `reason` | Wajib ketika `decision` adalah `"block"`. Memberi tahu Claude mengapa ia harus melanjutkan |2806| `reason` | Wajib ketika `decision` bernilai `"block"`. Memberi tahu Claude mengapa ia harus melanjutkan |

2807| `hookSpecificOutput.additionalContext` | Umpan balik non-error untuk Claude. Percakapan berlanjut sehingga Claude dapat menindaklanjutinya, tetapi tidak seperti `decision: "block"`, umpan balik ini ditampilkan di transkrip sebagai umpan balik hook, bukan error hook |2807| `hookSpecificOutput.additionalContext` | Umpan balik non-error untuk Claude. Percakapan berlanjut sehingga Claude dapat menindaklanjutinya, tetapi tidak seperti `decision: "block"`, umpan balik ini ditampilkan dalam transkrip sebagai umpan balik hook, bukan error hook |

2808 2808 

2809Hook yang memblokir dengan keluar menggunakan kode 2 dirutekan dengan cara yang sama seperti `reason`: Claude menerima pesan stderr sebagai penjelasan mengapa ia harus melanjutkan.2809Hook yang memblokir dengan keluar menggunakan exit 2 dirutekan dengan cara yang sama seperti `reason`: Claude menerima pesan stderr sebagai penjelasan mengapa ia harus melanjutkan.

2810 2810 

2811```json theme={null}2811```json theme={null}

2812{2812{


2815}2815}

2816```2816```

2817 2817 

2818Gunakan `additionalContext` ketika hook berfungsi sesuai rancangan dan memberikan panduan kepada Claude, seperti "jalankan test suite sebelum selesai". Ini menjaga percakapan tetap berjalan melalui perlindungan loop yang sama seperti `decision: "block"`, yaitu input `stop_hook_active` dan batas 8 kelanjutan berturut-turut, tetapi transkrip melabelinya `Stop hook feedback` dan tidak ada notifikasi error hook yang ditampilkan:2818Gunakan `additionalContext` ketika hook bekerja sesuai rancangan dan memberikan panduan kepada Claude, seperti "jalankan test suite sebelum selesai". Ini membuat percakapan tetap berjalan melalui perlindungan loop yang sama seperti `decision: "block"`, yaitu input `stop_hook_active` dan batas 8 kelanjutan berturut-turut, tetapi transkrip melabelinya sebagai `Stop hook feedback` dan tidak ada notifikasi error hook yang ditampilkan:

2819 2819 

2820```json theme={null}2820```json theme={null}

2821{2821{


2842| :- | :- |2842| :- | :- |

2843| `error` | Jenis error: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |2843| `error` | Jenis error: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |

2844| `error_details` | Detail tambahan tentang error, jika tersedia |2844| `error_details` | Detail tambahan tentang error, jika tersedia |

2845| `last_assistant_message` | Teks error yang dirender dan ditampilkan dalam percakapan. Tidak seperti `Stop` dan `SubagentStop`, di mana field ini berisi output percakapan Claude, untuk `StopFailure` field ini berisi string error API itu sendiri, seperti `"API Error: Rate limit reached"` |2845| `last_assistant_message` | Teks error yang dirender dan ditampilkan dalam percakapan. Tidak seperti `Stop` dan `SubagentStop`, di mana field ini memuat output percakapan Claude, untuk `StopFailure` field ini berisi string error API itu sendiri, seperti `"API Error: Rate limit reached"` |

2846 2846 

2847```json theme={null}2847```json theme={null}

2848{2848{


2862 TeammateIdle2862 TeammateIdle

2863</h3>2863</h3>

2864 2864 

2865Berjalan ketika rekan tim [tim agent](/docs/id/agent-teams) akan menjadi idle setelah menyelesaikan gilirannya. Gunakan ini untuk menegakkan gerbang kualitas sebelum rekan tim berhenti bekerja, seperti mewajibkan lolos pemeriksaan lint atau memverifikasi bahwa file output ada.2865Berjalan ketika rekan tim [tim agent](/docs/id/agent-teams) akan menjadi idle setelah menyelesaikan gilirannya. Gunakan ini untuk menerapkan gerbang kualitas sebelum rekan tim berhenti bekerja, seperti mewajibkan pemeriksaan lint yang lulus atau memverifikasi bahwa file output ada.

2866 2866 

2867Hook TeammateIdle tidak mendukung matcher dan dipicu pada setiap kejadian.2867Hook TeammateIdle tidak mendukung matcher dan dipicu pada setiap kejadian.

2868 2868 


2915 ConfigChange2915 ConfigChange

2916</h3>2916</h3>

2917 2917 

2918Berjalan ketika file konfigurasi berubah selama sesi. Gunakan ini untuk mengaudit perubahan pengaturan, menegakkan kebijakan keamanan, atau memblokir modifikasi yang tidak sah pada file konfigurasi.2918Berjalan ketika file konfigurasi berubah selama sesi. Gunakan ini untuk mengaudit perubahan pengaturan, menerapkan kebijakan keamanan, atau memblokir modifikasi yang tidak sah pada file konfigurasi.

2919 2919 

2920Claude Code menjalankan hook ConfigChange ketika file pengaturan, file kebijakan terkelola, atau file skill berubah. Untuk kebijakan terkelola, Claude Code menjalankannya hanya ketika `managed-settings.json` atau file di `managed-settings.d/` berubah. Claude Code menerapkan [pengaturan yang dikelola server](/docs/id/server-managed-settings) dan perubahan pada preferensi terkelola macOS atau kebijakan registri Windows tanpa menjalankannya. Di WSL dengan [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings), Claude Code juga menerapkan file pengaturan terkelola sisi Windows yang berubah pada polling kebijakannya tanpa menjalankannya.2920Claude Code menjalankan hook ConfigChange ketika file pengaturan, file kebijakan terkelola, atau file skill berubah. Untuk kebijakan terkelola, Claude Code menjalankannya hanya ketika `managed-settings.json` atau file di `managed-settings.d/` berubah. Claude Code menerapkan [pengaturan yang dikelola server](/docs/id/server-managed-settings) dan perubahan pada preferensi terkelola macOS atau kebijakan registri Windows tanpa menjalankannya. Di WSL dengan [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings), Claude Code juga menerapkan file pengaturan terkelola sisi Windows yang berubah pada polling kebijakannya tanpa menjalankannya.

2921 2921 


2984}2984}

2985```2985```

2986 2986 

2987Perubahan `policy_settings` tidak dapat diblokir. Hook tetap dipicu untuk sumber `policy_settings` ketika file pengaturan terkelola di mesin berubah, sehingga Anda dapat menggunakannya untuk mencatat pengeditan tersebut, tetapi keputusan pemblokiran apa pun akan diabaikan. Ini memastikan pengaturan yang dikelola perusahaan selalu berlaku. Claude Code tidak menjalankan hook `ConfigChange` ketika [pengaturan yang dikelola server](/docs/id/server-managed-settings) tiba atau diperbarui.2987Perubahan `policy_settings` tidak dapat diblokir. Hook tetap dipicu untuk sumber `policy_settings` ketika file pengaturan terkelola di mesin berubah, sehingga Anda dapat menggunakannya untuk mencatat suntingan tersebut, tetapi setiap keputusan pemblokiran diabaikan. Ini memastikan pengaturan yang dikelola perusahaan selalu berlaku. Claude Code tidak menjalankan hook `ConfigChange` ketika [pengaturan yang dikelola server](/docs/id/server-managed-settings) tiba atau diperbarui.

2988 2988 

2989Claude Code menindaklanjuti keputusan pemblokiran dari output JSON hook ConfigChange dan membuang `systemMessage` dan `continue`. Perubahan yang diblokir tidak memunculkan pesan apa pun kepada Anda atau kepada Claude, baik Anda memblokir dengan `reason` maupun dengan stderr pada exit 2. Claude Code hanya menulis satu baris ke log debug.2989Claude Code menindaklanjuti keputusan pemblokiran dari output JSON hook ConfigChange dan membuang `systemMessage` dan `continue`. Perubahan yang diblokir tidak memunculkan pesan apa pun kepada Anda atau Claude, baik Anda memblokir dengan `reason` maupun dengan stderr pada exit 2. Claude Code hanya menulis satu baris ke log debug.

2990 2990 

2991<h3 id="cwdchanged">2991<h3 id="cwdchanged">

2992 CwdChanged2992 CwdChanged

2993</h3>2993</h3>

2994 2994 

2995Berjalan ketika perintah shell dalam percakapan utama mengubah direktori kerja, misalnya ketika Claude mengeksekusi perintah `cd`. Gunakan ini untuk bereaksi terhadap perubahan direktori: memuat ulang environment variable, mengaktifkan toolchain khusus proyek, atau menjalankan skrip penyiapan secara otomatis. Berpasangan dengan [FileChanged](#filechanged) untuk tool seperti [direnv](https://direnv.net/) yang mengelola environment per direktori.2995Berjalan ketika perintah shell dalam percakapan utama mengubah direktori kerja, misalnya ketika Claude mengeksekusi perintah `cd`. Gunakan ini untuk bereaksi terhadap perubahan direktori: memuat ulang environment variable, mengaktifkan toolchain khusus proyek, atau menjalankan skrip penyiapan secara otomatis. Berpasangan dengan [FileChanged](#filechanged) untuk alat seperti [direnv](https://direnv.net/) yang mengelola environment per direktori.

2996 2996 

2997Hook CwdChanged memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya hingga event CwdChanged berikutnya, ketika Claude Code menghapusnya.2997Hook CwdChanged memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya hingga event CwdChanged selanjutnya, ketika Claude Code menghapusnya.

2998 2998 

2999CwdChanged tidak mendukung matcher dan dipicu pada setiap kejadian.2999CwdChanged tidak mendukung matcher dan dipicu pada setiap kejadian.

3000 3000 


3019 Output CwdChanged3019 Output CwdChanged

3020</h4>3020</h4>

3021 3021 

3022Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook CwdChanged dapat mengembalikan `watchPaths` untuk secara dinamis mengatur path file mana yang dipantau oleh [FileChanged](#filechanged):3022Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook CwdChanged dapat mengembalikan `watchPaths` untuk mengatur secara dinamis path file mana yang dipantau oleh [FileChanged](#filechanged):

3023 3023 

3024| Field | Deskripsi |3024| Field | Deskripsi |

3025| :- | :- |3025| :- | :- |

3026| `watchPaths` | Array path absolut. Menggantikan daftar pantauan dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Mengembalikan array kosong akan mengosongkan daftar dinamis, yang umum dilakukan saat memasuki direktori baru |3026| `watchPaths` | Array path absolut. Menggantikan daftar pantau dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Mengembalikan array kosong akan mengosongkan daftar dinamis, yang umum dilakukan saat memasuki direktori baru |

3027 3027 

3028Hook CwdChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir perubahan direktori.3028Hook CwdChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir perubahan direktori.

3029 3029 


3038Claude Code tidak memicu event ini ketika:3038Claude Code tidak memicu event ini ketika:

3039 3039 

3040* Anda meneruskan direktori dengan flag startup `--add-dir`; [SessionStart](#sessionstart) mencakup direktori tersebut3040* Anda meneruskan direktori dengan flag startup `--add-dir`; [SessionStart](#sessionstart) mencakup direktori tersebut

3041* Anda menambahkan direktori pada tab Workspace di `/permissions`3041* Anda menambahkan direktori di tab Workspace `/permissions`

3042* Anda menambahkan direktori yang sudah merupakan direktori kerja atau berada di dalamnya3042* Anda menambahkan direktori yang sudah menjadi direktori kerja atau berada di dalamnya

3043 3043 

3044Claude Code memicu DirectoryAdded setelah menyegarkan status sandbox dan izin, sehingga tool yang di-sandbox sudah melihat direktori baru ketika hook Anda berjalan. Perintah hook itu sendiri berjalan tanpa sandbox.3044Claude Code memicu DirectoryAdded setelah memperbarui status sandbox dan izin, sehingga tool yang di-sandbox sudah melihat direktori baru ketika hook Anda berjalan. Perintah hook itu sendiri berjalan tanpa sandbox.

3045 3045 

3046Claude Code tidak menunggu hook: penambahan selesai segera, dan hook berjalan di latar belakang dengan timeout default 600 detik.3046Claude Code tidak menunggu hook: penambahan selesai segera, dan hook berjalan di latar belakang dengan timeout default 600 detik.

3047 3047 


3074}3074}

3075```3075```

3076 3076 

3077Hook DirectoryAdded tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir penambahan, yang sudah selesai saat hook berjalan. Claude Code membuang field `continue` dari output JSON-nya dan memunculkan sisanya secara berbeda per sumber:3077Hook DirectoryAdded tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir penambahan, yang sudah selesai ketika hook berjalan. Claude Code membuang field `continue` dari output JSON-nya dan memunculkan sisanya secara berbeda per sumber:

3078 3078 

3079* `slash_command`: Claude Code mengirimkan `systemMessage` hook kepada Claude sebagai konteks pada giliran percakapan berikutnya, alih-alih menampilkannya kepada Anda. Jumlah hook yang gagal muncul di transkrip. Output kegagalan lengkap masuk ke log debug3079* `slash_command`: Claude Code mengirimkan `systemMessage` hook kepada Claude sebagai konteks pada giliran percakapan berikutnya, alih-alih menampilkannya kepada Anda. Jumlah hook yang gagal muncul dalam transkrip. Output kegagalan lengkap masuk ke log debug

3080* `register_repo_root`: Claude Code menulis output `systemMessage` dan output kegagalan hanya ke log debug3080* `register_repo_root`: Claude Code menulis output `systemMessage` dan output kegagalan hanya ke log debug

3081 3081 

3082<h3 id="filechanged">3082<h3 id="filechanged">

3083 FileChanged3083 FileChanged

3084</h3>3084</h3>

3085 3085 

3086Berjalan ketika file yang dipantau berubah di disk. Claude Code mendeteksi perubahan dengan pemantau filesystem, bukan dengan memeriksa panggilan tool, sehingga ia menjalankan hook apa pun yang mengubah file tersebut: panggilan tool `Edit` atau `Write`, skrip yang dijalankan Claude dengan `Bash`, atau proses yang sepenuhnya berada di luar Claude Code. Penggunaan umum adalah memuat ulang environment variable ketika file konfigurasi proyek berubah.3086Berjalan ketika file yang dipantau berubah di disk. Claude Code mendeteksi perubahan dengan pemantau filesystem, bukan dengan memeriksa panggilan tool, sehingga Claude Code menjalankan hook apa pun yang mengubah file tersebut: panggilan tool `Edit` atau `Write`, skrip yang dijalankan Claude dengan `Bash`, atau proses yang sepenuhnya di luar Claude Code. Penggunaan umum adalah memuat ulang environment variable ketika file konfigurasi proyek berubah.

3087 3087 

3088`matcher` untuk event ini memiliki dua peran:3088`matcher` untuk event ini memiliki dua peran:

3089 3089 

3090* **Membangun daftar pantauan**: nilainya dipisah berdasarkan `|` dan setiap segmen didaftarkan sebagai nama file literal di direktori kerja, sehingga `".envrc|.env"` memantau tepat kedua file tersebut. Pola regex tidak berguna di sini: nilai seperti `^\.env` akan memantau file yang secara literal bernama `^\.env`.3090* **Membangun daftar pantau**: nilai dipisahkan pada `|` dan setiap segmen didaftarkan sebagai nama file literal di direktori kerja, sehingga `".envrc|.env"` memantau tepat kedua file tersebut. Pola regex tidak berguna di sini: nilai seperti `^\.env` akan memantau file yang secara literal bernama `^\.env`.

3091* **Memfilter hook mana yang berjalan**: ketika file yang dipantau berubah, nilai yang sama memfilter grup hook mana yang berjalan menggunakan [aturan matcher](#matcher-patterns) standar terhadap basename file yang berubah.3091* **Memfilter hook mana yang berjalan**: ketika file yang dipantau berubah, nilai yang sama memfilter grup hook mana yang berjalan menggunakan [aturan matcher](#matcher-patterns) standar terhadap basename file yang berubah.

3092 3092 

3093Contoh ini menormalkan akhir baris di `data.csv` setelah perubahan apa pun, termasuk perintah `Bash` atau skrip eksternal yang menulis ulang file:3093Contoh ini menormalkan akhir baris di `data.csv` setelah setiap perubahan, termasuk perintah `Bash` atau skrip eksternal yang menulis ulang file:

3094 3094 

3095```json theme={null}3095```json theme={null}

3096{3096{


3110}3110}

3111```3111```

3112 3112 

3113Hook membaca path absolut file yang berubah dari field `file_path` pada [input JSON](#filechanged-input) di stdin. Penjaga `grep`-nya menguji hal yang sama yang dihapus oleh `perl`, yaitu CR di akhir baris, sehingga eksekusi setelah normalisasi keluar tanpa menyentuh file. Penjaga yang lebih longgar akan berulang tanpa henti, karena `perl -i` menulis ulang file bahkan ketika tidak mengganti apa pun dan Claude Code menjalankan hook lagi setelah setiap penulisan ulang. Simpan skrip ini di `/path/to/normalize-line-endings.sh` dan jadikan dapat dieksekusi:3113Hook membaca path absolut file yang berubah dari field `file_path` pada [input JSON](#filechanged-input) di stdin. Penjaga `grep`-nya menguji hal yang sama yang dihapus oleh `perl`, yaitu CR di akhir baris, sehingga proses setelah normalisasi keluar tanpa menyentuh file. Penjaga yang lebih longgar akan berulang tanpa henti, karena `perl -i` menulis ulang file bahkan ketika tidak ada yang disubstitusi dan Claude Code menjalankan hook lagi setelah setiap penulisan ulang. Simpan skrip ini di `/path/to/normalize-line-endings.sh` dan jadikan dapat dieksekusi:

3114 3114 

3115```bash theme={null}3115```bash theme={null}

3116#!/bin/bash3116#!/bin/bash


3122 3122 

3123Untuk memastikan hook berfungsi, minta Claude menambahkan baris CRLF ke `data.csv` dengan perintah `Bash`. Claude Code menjalankan hook dan file akhirnya memiliki akhir baris LF.3123Untuk memastikan hook berfungsi, minta Claude menambahkan baris CRLF ke `data.csv` dengan perintah `Bash`. Claude Code menjalankan hook dan file akhirnya memiliki akhir baris LF.

3124 3124 

3125Untuk memantau file yang tidak dapat Anda sebutkan di awal, kembalikan [`watchPaths`](#filechanged-output) dari hook untuk memperbarui daftar pantauan secara dinamis. Claude Code memulai pemantau hanya ketika sesuatu menyebutkan file untuk dipantau, jadi isi awal daftar dengan grup FileChanged yang matcher-nya menyebutkan setidaknya satu file, atau dengan hook [SessionStart](#sessionstart-decision-control) atau [CwdChanged](#cwdchanged) yang mengembalikan `watchPaths`. Matcher tetap memfilter grup hook mana yang berjalan ketika file yang dipantau berubah, jadi berikan grup yang menangani path dinamis matcher yang dihilangkan, yang cocok dengan setiap file yang dipantau dan tidak menambahkan apa pun ke daftar pantauan. Matcher `"*"` juga cocok dengan setiap file, tetapi Claude Code mendaftarkannya dalam daftar pantauan seperti nilai lainnya, sebagai file literal bernama `*`.3125Untuk memantau file yang tidak dapat Anda sebutkan di awal, kembalikan [`watchPaths`](#filechanged-output) dari hook untuk memperbarui daftar pantau secara dinamis. Claude Code memulai pemantau hanya ketika sesuatu menyebutkan file untuk dipantau, jadi isi awal daftar dengan grup FileChanged yang matcher-nya menyebutkan setidaknya satu file, atau dengan hook [SessionStart](#sessionstart-decision-control) atau [CwdChanged](#cwdchanged) yang mengembalikan `watchPaths`. Matcher tetap memfilter grup hook mana yang berjalan ketika file yang dipantau berubah, jadi berikan grup yang menangani path dinamis matcher yang dihilangkan, yang cocok dengan setiap file yang dipantau dan tidak menambahkan apa pun ke daftar pantau. Matcher `"*"` juga cocok dengan setiap file, tetapi Claude Code mendaftarkannya dalam daftar pantau seperti nilai lainnya, sebagai file literal bernama `*`.

3126 3126 

3127Hook FileChanged memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya hingga event [CwdChanged](#cwdchanged) berikutnya, ketika Claude Code menghapusnya.3127Hook FileChanged memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya hingga event [CwdChanged](#cwdchanged) selanjutnya, ketika Claude Code menghapusnya.

3128 3128 

3129<h4 id="filechanged-input">3129<h4 id="filechanged-input">

3130 Input FileChanged3130 Input FileChanged


3152 Output FileChanged3152 Output FileChanged

3153</h4>3153</h4>

3154 3154 

3155Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook FileChanged dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:3155Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook FileChanged dapat mengembalikan `watchPaths` untuk memperbarui secara dinamis path file mana yang dipantau:

3156 3156 

3157| Field | Deskripsi |3157| Field | Deskripsi |

3158| :- | :- |3158| :- | :- |

3159| `watchPaths` | Array path absolut. Menggantikan daftar pantauan dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Gunakan ini ketika skrip hook Anda menemukan file tambahan untuk dipantau berdasarkan file yang berubah |3159| `watchPaths` | Array path absolut. Menggantikan daftar pantau dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Gunakan ini ketika skrip hook Anda menemukan file tambahan untuk dipantau berdasarkan file yang berubah |

3160 3160 

3161Hook FileChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir terjadinya perubahan file.3161Hook FileChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir terjadinya perubahan file.

3162 3162 


3166 WorktreeCreate3166 WorktreeCreate

3167</h3>3167</h3>

3168 3168 

3169Berjalan ketika worktree sedang dibuat, baik dari `claude --worktree`, dari [subagent yang menggunakan `isolation: "worktree"`](/docs/id/sub-agents#choose-the-subagent-scope), atau untuk [sesi latar belakang](/docs/id/agent-view#how-file-edits-are-isolated) yang diisolasi Claude Code dalam worktree-nya sendiri. Secara default, Claude Code membuat salinan kerja terisolasi dengan `git worktree`. Mengonfigurasi hook WorktreeCreate akan menggantikan perilaku git default tersebut, memungkinkan Anda menggunakan sistem kontrol versi yang berbeda seperti SVN, Perforce, atau Mercurial.3169Berjalan ketika worktree sedang dibuat, baik dari `claude --worktree`, dari [subagent yang menggunakan `isolation: "worktree"`](/docs/id/sub-agents#choose-the-subagent-scope), atau untuk [sesi latar belakang](/docs/id/agent-view#how-file-edits-are-isolated) yang diisolasi Claude Code dalam worktree-nya sendiri. Secara default Claude Code membuat salinan kerja terisolasi dengan `git worktree`. Mengonfigurasi hook WorktreeCreate menggantikan perilaku git default tersebut, sehingga Anda dapat menggunakan sistem kontrol versi lain seperti SVN, Perforce, atau Mercurial.

3170 3170 

3171Karena hook sepenuhnya menggantikan perilaku default, [`.worktreeinclude`](/docs/id/worktrees#copy-gitignored-files-into-worktrees) tidak diproses. Jika Anda perlu menyalin file konfigurasi lokal seperti `.env` ke worktree baru, lakukan di dalam skrip hook Anda.3171Karena hook sepenuhnya menggantikan perilaku default, [`.worktreeinclude`](/docs/id/worktrees#copy-gitignored-files-into-worktrees) tidak diproses. Jika Anda perlu menyalin file konfigurasi lokal seperti `.env` ke worktree baru, lakukan di dalam skrip hook Anda.

3172 3172 

3173Hook harus mengembalikan path ke direktori worktree yang dibuat. Claude Code menggunakan path ini sebagai direktori kerja untuk sesi terisolasi. Lihat [Output WorktreeCreate](#worktreecreate-output) untuk cara setiap jenis hook mengembalikan path.3173Hook harus mengembalikan path ke direktori worktree yang dibuat. Claude Code menggunakan path ini sebagai direktori kerja untuk sesi yang terisolasi. Lihat [Output WorktreeCreate](#worktreecreate-output) untuk cara setiap jenis hook mengembalikan path.

3174 3174 

3175Claude Code menindaklanjuti keberhasilan hook dan path yang dikembalikan, serta membuang `systemMessage` dan `continue`.3175Claude Code menindaklanjuti keberhasilan hook dan path yang dikembalikan, serta membuang `systemMessage` dan `continue`.

3176 3176 

3177Contoh ini membuat salinan kerja SVN dan mencetak path untuk digunakan Claude Code. Ganti URL repositori dengan milik Anda sendiri:3177Contoh ini membuat salinan kerja SVN dan mencetak path untuk digunakan oleh Claude Code. Ganti URL repositori dengan milik Anda sendiri:

3178 3178 

3179```json theme={null}3179```json theme={null}

3180{3180{


3193}3193}

3194```3194```

3195 3195 

3196Hook membaca `name` worktree dari input JSON di stdin, melakukan checkout salinan baru ke direktori baru, dan mencetak path direktori. `echo` pada baris terakhir adalah apa yang dibaca Claude Code sebagai path worktree. Alihkan output lainnya ke stderr agar tidak mengganggu path.3196Hook membaca `name` worktree dari input JSON di stdin, melakukan checkout salinan baru ke direktori baru, dan mencetak path direktori. `echo` pada baris terakhir adalah yang dibaca Claude Code sebagai path worktree. Alihkan output lainnya ke stderr agar tidak mengganggu path.

3197 3197 

3198<h4 id="worktreecreate-input">3198<h4 id="worktreecreate-input">

3199 Input WorktreeCreate3199 Input WorktreeCreate


3215 Output WorktreeCreate3215 Output WorktreeCreate

3216</h4>3216</h4>

3217 3217 

3218Hook WorktreeCreate tidak menggunakan model keputusan allow/block standar. Sebaliknya, keberhasilan atau kegagalan hook menentukan hasilnya. Hook harus mengembalikan path ke direktori worktree yang dibuat:3218Hook WorktreeCreate tidak menggunakan model keputusan izinkan/blokir standar. Sebagai gantinya, keberhasilan atau kegagalan hook menentukan hasilnya. Hook harus mengembalikan path ke direktori worktree yang dibuat:

3219 3219 

3220* **Hook command** (`type: "command"`): cetak path sebagai baris tidak kosong terakhir dari stdout. Claude Code menghapus kode escape ANSI sebelum membaca baris tersebut, sehingga banner startup shell yang dicetak sebelum `echo` Anda diabaikan. Alihkan output hook lainnya ke stderr.3220* **Hook perintah** (`type: "command"`): cetak path sebagai baris tidak kosong terakhir dari stdout. Claude Code menghapus kode escape ANSI sebelum membaca baris tersebut, sehingga banner startup shell yang dicetak sebelum `echo` Anda diabaikan. Alihkan output hook lainnya ke stderr.

3221* **Hook HTTP** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` di body respons.3221* **Hook HTTP** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` dalam body respons.

3222 3222 

3223Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan error.3223Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan error.

3224 3224 

3225Claude Code menyelesaikan path relatif terhadap direktori tempat hook dijalankan, sambil menyederhanakan segmen `.` atau `..` di dalamnya. Jika path yang dihasilkan bukan direktori yang dapat dimasuki Claude Code, sesi mencetak error yang menyebutkan path tersebut dan keluar dengan kode 1.3225Claude Code me-resolve path relatif terhadap direktori tempat hook dijalankan, dengan meringkas segmen `.` atau `..` di dalamnya. Jika path yang dihasilkan bukan direktori yang dapat dimasuki Claude Code, sesi mencetak error yang menyebutkan path tersebut dan keluar dengan kode 1.

3226 3226 

3227Claude Code menolak path absolut yang berisi segmen `.` atau `..`, serta path apa pun yang melewati symlink di bawah root repositori, karena symlink yang di-commit ke repositori dapat mengalihkan worktree ke luar repositori. Error tersebut menyebutkan komponen yang ditolak. Kembalikan path yang dinormalisasi yang tidak melewati symlink di dalam repositori. Sebelum v2.1.216, pembuatan worktree mengikuti path dari hook tanpa penyaringan ini.3227Claude Code menolak path absolut yang berisi segmen `.` atau `..`, serta path apa pun yang melewati symlink di bawah root repositori, karena symlink yang di-commit ke repositori dapat mengalihkan worktree ke luar repositori. Error tersebut menyebutkan komponen yang ditolak. Kembalikan path yang sudah dinormalisasi dan tidak melewati symlink di dalam repositori. Sebelum v2.1.216, pembuatan worktree mengikuti path dari hook tanpa pemeriksaan ini.

3228 3228 

3229<h3 id="worktreeremove">3229<h3 id="worktreeremove">

3230 WorktreeRemove3230 WorktreeRemove

3231</h3>3231</h3>

3232 3232 

3233Berjalan saat worktree sedang dihapus. Ini adalah pasangan pembersihan dari [WorktreeCreate](#worktreecreate). Event ini dipicu saat:3233Berjalan saat worktree sedang dihapus. Ini adalah pasangan pembersihan untuk [WorktreeCreate](#worktreecreate). Event ini dipicu ketika:

3234 3234 

3235* Anda keluar dari sesi `--worktree` dan memilih untuk menghapusnya3235* Anda keluar dari sesi `--worktree` dan memilih untuk menghapusnya

3236* subagent dengan `isolation: "worktree"` selesai3236* subagent dengan `isolation: "worktree"` selesai


3238 3238 

3239Untuk worktree berbasis git, Claude Code menangani pembersihan secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate, pasangkan dengan hook WorktreeRemove untuk mengontrol pembersihan worktree yang dibuatnya:3239Untuk worktree berbasis git, Claude Code menangani pembersihan secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate, pasangkan dengan hook WorktreeRemove untuk mengontrol pembersihan worktree yang dibuatnya:

3240 3240 

3241* **Tanpa hook WorktreeRemove**: saat Anda keluar dari sesi `--worktree` dan memilih penghapusan, Claude Code melakukan fallback ke `git worktree remove --force` pada path yang dikembalikan hook WorktreeCreate Anda, sehingga worktree yang dikenali git akan dihapus. Worktree yang tidak dikenali git, misalnya yang dibuat hook Anda dengan sistem kontrol versi non-git, tetap ada di disk. Untuk apa yang dilakukan penghapusan [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) terhadap worktree yang dibuat hook, lihat aturan penghapusan di agent view.3241* **Tanpa hook WorktreeRemove**: saat Anda keluar dari sesi `--worktree` dan memilih penghapusan, Claude Code beralih ke fallback `git worktree remove --force` pada path yang dikembalikan hook WorktreeCreate Anda, sehingga worktree yang dikenali git akan dihapus. Worktree yang tidak dikenali git, misalnya yang dibuat hook Anda dengan sistem kontrol versi non-git, tetap ada di disk. Untuk apa yang terjadi pada worktree yang dibuat hook saat menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes), lihat aturan penghapusan di agent view.

3242* **Hook keluar dengan 0**: worktree dianggap telah dihapus. Claude Code tidak membaca apa pun lagi dari hook, jadi pastikan hook Anda telah menghapus direktori tersebut.3242* **Hook keluar dengan 0**: worktree dianggap telah dihapus. Claude Code tidak membaca apa pun lagi dari hook, jadi pastikan hook Anda telah menghapus direktori tersebut.

3243* **Hook keluar dengan non-zero**: penghapusan gagal jika direktori di `worktree_path` masih ada setelahnya, dan worktree tetap ada di disk tanpa fallback git. Hook yang menghapus direktori sebelum keluar dengan non-zero dianggap telah dihapus. Untuk cara kegagalan dilaporkan, lihat [Input WorktreeRemove](#worktreeremove-input).3243* **Hook keluar dengan non-zero**: penghapusan gagal jika direktori di `worktree_path` masih ada setelahnya, dan worktree tetap ada di disk tanpa fallback git. Hook yang telah menghapus direktori sebelum keluar dengan non-zero dianggap berhasil menghapus. Untuk cara kegagalan dilaporkan, lihat [Input WorktreeRemove](#worktreeremove-input).

3244 3244 

3245Claude Code tidak pernah menghapus branch milik worktree yang dibuat hook, karena Claude Code hanya mengetahui path yang dikembalikan hook WorktreeCreate Anda. Jika hook WorktreeCreate Anda membuat branch, hapus branch tersebut di hook WorktreeRemove Anda.3245Claude Code tidak pernah menghapus branch milik worktree yang dibuat hook, karena Claude Code hanya mengetahui path yang dikembalikan hook WorktreeCreate Anda. Jika hook WorktreeCreate Anda membuat branch, hapus branch tersebut di hook WorktreeRemove Anda.

3246 3246 


3248 3248 

3249Untuk penghapusan sesi latar belakang, Claude Code memverifikasi path worktree yang tersimpan sebelum menjalankan hook dan menolak path yang merupakan symlink atau melewati symlink di bawah root repositori. Hook berjalan untuk worktree yang masih berisi file hanya ketika Anda mengonfirmasi penghapusan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes); untuk worktree seperti itu, [`claude rm`](/docs/id/agent-view#manage-sessions-from-the-shell) justru mempertahankan sesi dan worktree. Sebelum v2.1.216, hook berjalan pada path yang tersimpan tanpa pemeriksaan ini.3249Untuk penghapusan sesi latar belakang, Claude Code memverifikasi path worktree yang tersimpan sebelum menjalankan hook dan menolak path yang merupakan symlink atau melewati symlink di bawah root repositori. Hook berjalan untuk worktree yang masih berisi file hanya ketika Anda mengonfirmasi penghapusan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes); untuk worktree seperti itu, [`claude rm`](/docs/id/agent-view#manage-sessions-from-the-shell) justru mempertahankan sesi dan worktree. Sebelum v2.1.216, hook berjalan pada path yang tersimpan tanpa pemeriksaan ini.

3250 3250 

3251Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` di input hook. Contoh ini membaca path tersebut dan menghapus direktorinya:3251Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` dalam input hook. Contoh ini membaca path tersebut dan menghapus direktorinya:

3252 3252 

3253```json theme={null}3253```json theme={null}

3254{3254{


3285 3285 

3286Exit code hook WorktreeRemove menentukan hasilnya. Ketika hook keluar dengan non-zero dan direktori di `worktree_path` masih ada setelahnya, penghapusan gagal:3286Exit code hook WorktreeRemove menentukan hasilnya. Ketika hook keluar dengan non-zero dan direktori di `worktree_path` masih ada setelahnya, penghapusan gagal:

3287 3287 

3288* Worktree tetap ada di disk, dan perintah serta stderr hook masuk ke [log debug](#debug-hooks).3288* Worktree tetap ada di disk, dan perintah serta stderr hook dikirim ke [log debug](#debug-hooks).

3289* Jika Anda sedang menghapus sesi latar belakang, sesi tersebut juga tetap ada. Pesan penolakan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes) melaporkan bagaimana hook berakhir, seperti `exited 1`, mengutip bagian awal stderr-nya, dan menyebutkan apakah menghapus sesi lagi akan tetap menghapus direktori tersebut.3289* Jika Anda sedang menghapus sesi latar belakang, sesi tersebut juga tetap ada. Pesan penolakan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes) melaporkan bagaimana hook berakhir, seperti `exited 1`, mengutip bagian awal stderr-nya, dan menyebutkan apakah menghapus sesi lagi akan tetap menghapus direktori tersebut.

3290 3290 

3291<h3 id="precompact">3291<h3 id="precompact">


3299| Matcher | Kapan dipicu |3299| Matcher | Kapan dipicu |

3300| :- | :- |3300| :- | :- |

3301| `manual` | `/compact` |3301| `manual` | `/compact` |

3302| `auto` | Auto-compact saat percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |3302| `auto` | Auto-compact ketika percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |

3303 3303 

3304Keluar dengan kode 2 untuk memblokir compaction. Untuk `/compact` manual, pesan stderr ditampilkan kepada pengguna. Anda juga dapat memblokir dengan mengembalikan JSON dengan `"decision": "block"`.3304Keluar dengan kode 2 untuk memblokir compaction. Untuk `/compact` manual, pesan stderr ditampilkan kepada pengguna. Anda juga dapat memblokir dengan mengembalikan JSON dengan `"decision": "block"`.

3305 3305 

3306Memblokir compaction otomatis memiliki efek berbeda tergantung kapan dipicu. Jika compaction dipicu secara proaktif sebelum batas konteks, Claude Code melewatinya dan percakapan berlanjut tanpa dipadatkan. Jika compaction dipicu untuk memulihkan dari error batas konteks yang sudah dikembalikan oleh API, error yang mendasarinya muncul dan permintaan saat ini gagal.3306Memblokir compaction otomatis memiliki efek yang berbeda tergantung kapan dipicu. Jika compaction dipicu secara proaktif sebelum batas konteks, Claude Code melewatinya dan percakapan berlanjut tanpa di-compact. Jika compaction dipicu untuk memulihkan dari error batas konteks yang sudah dikembalikan oleh API, error yang mendasarinya akan muncul dan permintaan saat ini gagal.

3307 3307 

3308Claude Code membuang field `systemMessage` dan `continue` dari hook PreCompact.3308Claude Code membuang field `systemMessage` dan `continue` dari hook PreCompact.

3309 3309 


3311 Input PreCompact3311 Input PreCompact

3312</h4>3312</h4>

3313 3313 

3314Selain [field input umum](#common-input-fields), hook PreCompact menerima `trigger` dan `custom_instructions`. Untuk `manual`, `custom_instructions` berisi apa yang diteruskan pengguna ke `/compact` dan bernilai `null` jika pengguna tidak meneruskan apa pun. Untuk `auto`, `custom_instructions` bernilai `null`.3314Selain [field input umum](#common-input-fields), hook PreCompact menerima `trigger` dan `custom_instructions`. Untuk `manual`, `custom_instructions` berisi apa yang diteruskan pengguna ke `/compact` dan bernilai `null` ketika pengguna tidak meneruskan apa pun. Untuk `auto`, `custom_instructions` bernilai `null`.

3315 3315 

3316```json theme={null}3316```json theme={null}

3317{3317{


3328 PostCompact3328 PostCompact

3329</h3>3329</h3>

3330 3330 

3331Berjalan setelah Claude Code menyelesaikan operasi compact. Gunakan event ini untuk bereaksi terhadap status baru yang telah dipadatkan, misalnya untuk mencatat ringkasan yang dihasilkan atau memperbarui status eksternal. Claude Code membuang field `systemMessage` dan `continue` dari hook PostCompact.3331Berjalan setelah Claude Code menyelesaikan operasi compact. Gunakan event ini untuk bereaksi terhadap state baru yang telah di-compact, misalnya untuk mencatat ringkasan yang dihasilkan atau memperbarui state eksternal. Claude Code membuang field `systemMessage` dan `continue` dari hook PostCompact.

3332 3332 

3333Nilai matcher yang sama berlaku seperti untuk `PreCompact`:3333Nilai matcher yang sama berlaku seperti untuk `PreCompact`:

3334 3334 

3335| Matcher | Kapan dipicu |3335| Matcher | Kapan dipicu |

3336| :- | :- |3336| :- | :- |

3337| `manual` | Setelah `/compact` |3337| `manual` | Setelah `/compact` |

3338| `auto` | Setelah auto-compact saat percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |3338| `auto` | Setelah auto-compact ketika percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |

3339 3339 

3340<h4 id="postcompact-input">3340<h4 id="postcompact-input">

3341 Input PostCompact3341 Input PostCompact


3362 3362 

3363Berjalan sebelum Claude Code menerapkan peralihan model yang diminta oleh Anda atau klien. Gunakan untuk memblokir peralihan, meminta konfirmasi, atau menampilkan biaya peralihan sebelum terjadi.3363Berjalan sebelum Claude Code menerapkan peralihan model yang diminta oleh Anda atau klien. Gunakan untuk memblokir peralihan, meminta konfirmasi, atau menampilkan biaya peralihan sebelum terjadi.

3364 3364 

3365PreModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Claude Code menjalankannya untuk permintaan berikut:3365PreModelSwitch memerlukan Claude Code v2.1.251 atau yang lebih baru. Claude Code menjalankannya untuk permintaan berikut:

3366 3366 

3367* `/model <name>` dan pemilih `/model`3367* `/model <name>` dan pemilih `/model`

3368* Pemilih model `Option+P` atau `Alt+P`3368* Pemilih model `Option+P` atau `Alt+P`


3372 3372 

3373Claude Code tidak menjalankan hook PreModelSwitch untuk peralihan yang dilakukannya sendiri, seperti [fallback model otomatis](/docs/id/model-config#automatic-model-fallback) atau memulihkan model saat Anda melanjutkan sesi. Perubahan tersebut hanya mencapai [PostModelSwitch](#postmodelswitch).3373Claude Code tidak menjalankan hook PreModelSwitch untuk peralihan yang dilakukannya sendiri, seperti [fallback model otomatis](/docs/id/model-config#automatic-model-fallback) atau memulihkan model saat Anda melanjutkan sesi. Perubahan tersebut hanya mencapai [PostModelSwitch](#postmodelswitch).

3374 3374 

3375Claude Code membandingkan matcher dengan nama kanonis model tujuan peralihan sesi, dengan mengabaikan sufiks `[1m]`. Alias seperti `opus`, ID model bertanggal, dan ID khusus penyedia seperti ID model Amazon Bedrock semuanya cocok dengan satu nama kanonis yang menjadi hasil resolusinya, sehingga `claude-opus-5` mencakup setiap penulisan Opus 5.3375Claude Code membandingkan matcher dengan nama kanonis model yang menjadi tujuan peralihan sesi, dengan mengabaikan sufiks `[1m]`. Alias seperti `opus`, ID model bertanggal, dan ID khusus penyedia seperti ID model Amazon Bedrock semuanya cocok dengan satu nama kanonis yang menjadi hasil resolve-nya, sehingga `claude-opus-5` mencakup setiap penulisan Opus 5.

3376 3376 

3377Ketika Claude Code tidak dapat menentukan nama kanonis untuk target, misalnya ID model kustom yang hanya dikenal oleh [LLM gateway](/docs/id/llm-gateway) Anda, Claude Code menjalankan setiap hook PreModelSwitch terlepas dari matcher. Oleh karena itu, hook yang memblokir sebaiknya memeriksa `to_model` dari inputnya alih-alih hanya mengandalkan matcher.3377Ketika Claude Code tidak dapat menentukan nama kanonis untuk target, misalnya ID model kustom yang hanya diketahui oleh [LLM gateway](/docs/id/llm-gateway) Anda, Claude Code menjalankan setiap hook PreModelSwitch terlepas dari matcher. Oleh karena itu, hook yang memblokir sebaiknya memeriksa `to_model` dari inputnya alih-alih hanya mengandalkan matcher.

3378 3378 

3379Tulis matcher sebagai nama persis, daftar yang dipisahkan `|` seperti `claude-opus-4-6|claude-opus-5`, atau regular expression seperti `.*opus.*`. Contoh ini menggunakan matcher nama persis dan juga memeriksa `to_model` dari input hook, sehingga menolak peralihan ke Opus 4.6 dengan keluar menggunakan kode 2 dan membiarkan target lain lolos:3379Tulis matcher sebagai nama persis, daftar yang dipisahkan `|` seperti `claude-opus-4-6|claude-opus-5`, atau ekspresi reguler seperti `.*opus.*`. Contoh ini menggunakan matcher nama persis dan juga memeriksa `to_model` dari input hook, sehingga menolak peralihan ke Opus 4.6 dengan keluar menggunakan kode 2 dan membiarkan target lainnya lolos:

3380 3380 

3381<Tabs>3381<Tabs>

3382 <Tab title="macOS/Linux">3382 <Tab title="macOS/Linux">


3402 </Tab>3402 </Tab>

3403 3403 

3404 <Tab title="Windows (PowerShell)">3404 <Tab title="Windows (PowerShell)">

3405 Daftarkan hook command yang menjalankan skrip melalui PowerShell:3405 Daftarkan hook perintah yang menjalankan skrip melalui PowerShell:

3406 3406 

3407 ```json theme={null}3407 ```json theme={null}

3408 {3408 {


3454| :- | :- | :- |3454| :- | :- | :- |

3455| `from_model` | string | ID model asal peralihan |3455| `from_model` | string | ID model asal peralihan |

3456| `to_model` | string | ID model tujuan peralihan. Matcher dibandingkan dengan nama kanonis model ini |3456| `to_model` | string | ID model tujuan peralihan. Matcher dibandingkan dengan nama kanonis model ini |

3457| `requested_model` | string atau `null` | Model yang disebutkan dalam permintaan: alias seperti `opus`, ID model lengkap, atau `null` jika permintaan ditujukan untuk model default |3457| `requested_model` | string atau `null` | Model yang disebutkan dalam permintaan: alias seperti `opus`, ID model lengkap, atau `null` ketika permintaan ditujukan untuk model default |

3458| `source` | string | Asal permintaan: `"command"` untuk `/model <name>`, pengaturan Model di `/config`, atau mengaktifkan fast mode; `"picker"` untuk pemilih model; `"sdk"` untuk permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host Agent SDK atau Remote Control |3458| `source` | string | Asal permintaan: `"command"` untuk `/model <name>`, pengaturan Model di `/config`, atau mengaktifkan fast mode; `"picker"` untuk pemilih model; `"sdk"` untuk permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host Agent SDK atau Remote Control |

3459| `context_tokens` | number | Token yang dikirim ulang oleh permintaan berikutnya sebagai prompt-nya: token input, cache read, cache creation, dan output dari respons terakhir dalam percakapan utama, digabungkan. `0` sebelum respons pertama |3459| `context_tokens` | number | Token yang dikirim ulang oleh permintaan berikutnya sebagai prompt-nya: gabungan token input, cache read, cache creation, dan output dari respons terakhir di percakapan utama. `0` sebelum respons pertama |

3460| `prompt_cache_warm` | boolean | Apakah prompt cache model saat ini kemungkinan masih hangat, yang berarti peralihan akan mengorbankannya |3460| `prompt_cache_warm` | boolean | Apakah prompt cache model saat ini kemungkinan masih hangat, yang berarti peralihan akan mengorbankannya |

3461| `cache_ttl` | string | [Masa berlaku prompt cache](/docs/id/prompt-caching#cache-lifetime) yang diminta Claude Code untuk sesi ini: `"5m"` atau `"1h"` |3461| `cache_ttl` | string | [Masa berlaku prompt cache](/docs/id/prompt-caching#cache-lifetime) yang diminta Claude Code untuk sesi ini: `"5m"` atau `"1h"` |

3462| `estimated_cache_write_usd` | number | Estimasi biaya dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada `to_model` dengan tarif `cache_ttl`, tidak termasuk respons berikutnya. Server mungkin tidak perlu melakukan cache ulang seluruh konteks, jadi perlakukan ini sebagai estimasi |3462| `estimated_cache_write_usd` | number | Perkiraan biaya dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada `to_model` dengan tarif `cache_ttl`, tidak termasuk respons berikutnya. Server mungkin tidak perlu melakukan cache ulang seluruh konteks, jadi anggap ini sebagai perkiraan |

3463| `pricing` | string | Cara Claude Code menghitung harga `estimated_cache_write_usd`: `"configured"` dengan tarif organisasi Anda sendiri jika organisasi telah mengonfigurasinya, `"catalog"` dengan harga daftar, atau `"default"` jika `to_model` tidak memiliki harga yang diketahui dan Claude Code mengasumsikan tarif default |3463| `pricing` | string | Cara Claude Code menghitung harga `estimated_cache_write_usd`: `"configured"` dengan tarif organisasi Anda sendiri ketika organisasi telah mengonfigurasinya, `"catalog"` dengan harga daftar, atau `"default"` ketika `to_model` tidak memiliki harga yang diketahui dan Claude Code mengasumsikan tarif default |

3464 3464 

3465Contoh ini menunjukkan input untuk `/model opus` dalam sesi yang menjalankan Sonnet 5:3465Contoh ini menunjukkan input untuk `/model opus` dalam sesi yang menjalankan Sonnet 5:

3466 3466 


3493| Field | Deskripsi |3493| Field | Deskripsi |

3494| :- | :- |3494| :- | :- |

3495| `permissionDecision` | `"allow"` melanjutkan dan melewati [konfirmasi yang ditampilkan Claude Code saat prompt cache masih hangat](/docs/id/prompt-caching#switching-models). `"deny"` membatalkan peralihan. `"ask"` meminta pengguna untuk mengonfirmasinya |3495| `permissionDecision` | `"allow"` melanjutkan dan melewati [konfirmasi yang ditampilkan Claude Code saat prompt cache masih hangat](/docs/id/prompt-caching#switching-models). `"deny"` membatalkan peralihan. `"ask"` meminta pengguna untuk mengonfirmasinya |

3496| `permissionDecisionReason` | Untuk `"deny"`, ditampilkan kepada pengguna sebagai alasan peralihan diblokir, atau dikembalikan sebagai error untuk permintaan `set_model`. Untuk `"ask"`, ditampilkan dalam dialog konfirmasi. Diabaikan untuk `"allow"` |3496| `permissionDecisionReason` | Untuk `"deny"`, ditampilkan kepada pengguna sebagai alasan peralihan diblokir, atau dikembalikan sebagai error untuk permintaan `set_model`. Untuk `"ask"`, ditampilkan dalam prompt konfirmasi. Diabaikan untuk `"allow"` |

3497 3497 

3498Hanya `/model` dalam sesi interaktif yang dapat menampilkan dialog `"ask"`. Di setiap surface lainnya, termasuk mode non-interaktif dengan flag `-p`, `/config`, dan permintaan `set_model`, Claude Code memperlakukan `"ask"` sebagai penolakan.3498Hanya `/model` dalam sesi interaktif yang dapat menampilkan prompt `"ask"`. Di setiap surface lainnya, termasuk mode non-interaktif dengan flag `-p`, `/config`, dan permintaan `set_model`, Claude Code memperlakukan `"ask"` sebagai penolakan.

3499 3499 

3500Contoh ini meminta pengguna untuk mengonfirmasi dan mengutip jumlah token dari `context_tokens`:3500Contoh ini meminta pengguna untuk mengonfirmasi dan mengutip jumlah token dari `context_tokens`:

3501 3501 


3511 3511 

3512Ketika beberapa hook PreModelSwitch mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `ask` > `allow`.3512Ketika beberapa hook PreModelSwitch mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `ask` > `allow`.

3513 3513 

3514Claude Code menampilkan kepada pengguna setiap `systemMessage` yang dikembalikan hook Anda terlepas dari keputusannya, sehingga hook pelaporan biaya dapat mengembalikan `{"systemMessage": "..."}` dan keluar dengan 0.3514Claude Code menampilkan kepada pengguna setiap `systemMessage` yang dikembalikan hook Anda terlepas dari keputusannya, sehingga hook pelapor biaya dapat mengembalikan `{"systemMessage": "..."}` dan keluar dengan 0.

3515 3515 

3516Hook PreModelSwitch yang tidak merespons sebelum timeout-nya akan memblokir peralihan. Sebaliknya, pada [PreToolUse](#timeouts), hook command yang mengalami timeout membiarkan panggilan tool berlanjut. Timeout default untuk event ini adalah 30 detik. `PreModelSwitch` hanya menjalankan hook `command`, `http`, dan `mcp_tool`, sehingga default `prompt` dan `agent` tidak berlaku.3516Hook PreModelSwitch yang tidak merespons sebelum timeout-nya akan memblokir peralihan. Sebaliknya, pada [PreToolUse](#timeouts), hook perintah yang mengalami timeout membiarkan panggilan tool berlanjut. Timeout default untuk event ini adalah 30 detik. `PreModelSwitch` hanya menjalankan hook `command`, `http`, dan `mcp_tool`, sehingga default `prompt` dan `agent` tidak berlaku.

3517 3517 

3518Hook yang keluar dengan kode selain 0 atau 2 dan tidak mencetak keputusan JSON tidak memblokir: Claude Code menampilkan stderr-nya dan menerapkan peralihan, seperti dijelaskan di [Exit code lainnya](#other-exit-codes).3518Hook yang keluar dengan kode selain 0 atau 2 dan tidak mencetak keputusan JSON tidak memblokir: Claude Code menampilkan stderr-nya dan menerapkan peralihan, seperti yang dijelaskan di [Exit code lainnya](#other-exit-codes).

3519 3519 

3520<h3 id="postmodelswitch">3520<h3 id="postmodelswitch">

3521 PostModelSwitch3521 PostModelSwitch

3522</h3>3522</h3>

3523 3523 

3524Berjalan setelah model sesi berubah. Gunakan untuk memberi Claude panduan khusus model tanpa mengedit setiap CLAUDE.md, misalnya instruksi tingkat organisasi yang berlaku pada model tertentu.3524Berjalan setelah model sesi berubah. Gunakan untuk memberikan panduan khusus model kepada Claude tanpa mengedit setiap CLAUDE.md, misalnya instruksi tingkat organisasi yang berlaku pada model tertentu.

3525 3525 

3526PostModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Hook ini tidak dapat memblokir, karena model sudah berubah. Claude Code menjalankan hook PostModelSwitch setelah salah satu perubahan berikut:3526PostModelSwitch memerlukan Claude Code v2.1.251 atau yang lebih baru. Hook ini tidak dapat memblokir, karena model sudah berubah. Claude Code menjalankan hook PostModelSwitch setelah salah satu perubahan berikut:

3527 3527 

3528* Peralihan yang diminta oleh Anda atau klien3528* Peralihan yang diminta oleh Anda atau klien

3529* [Fallback model otomatis](/docs/id/model-config#automatic-model-fallback), yang mengubah model sesi3529* [Fallback model otomatis](/docs/id/model-config#automatic-model-fallback), yang mengubah model sesi

3530* Pengaturan seperti [`opusplan`](/docs/id/model-config#opusplan-model-setting) yang masuk atau keluar dari plan mode3530* Pengaturan seperti [`opusplan`](/docs/id/model-config#opusplan-model-setting) yang masuk atau keluar dari plan mode

3531* Claude Code memulihkan model saat Anda melanjutkan sesi3531* Claude Code memulihkan model saat Anda melanjutkan sesi

3532 3532 

3533Claude Code tidak menjalankan hook PostModelSwitch ketika model dari [rantai model fallback](/docs/id/model-config#fallback-model-chains) melayani sebuah giliran, karena substitusi tersebut hanya berlangsung satu giliran dan tidak mengubah model sesi.3533Claude Code tidak menjalankan hook PostModelSwitch ketika model dari [rantai model fallback](/docs/id/model-config#fallback-model-chains) melayani suatu giliran, karena substitusi tersebut hanya berlangsung satu giliran dan tidak mengubah model sesi.

3534 3534 

3535Matcher mengikuti aturan yang sama seperti [PreModelSwitch](#premodelswitch): Claude Code membandingkannya dengan nama kanonis model tujuan peralihan sesi.3535Matcher mengikuti aturan yang sama seperti [PreModelSwitch](#premodelswitch): Claude Code membandingkannya dengan nama kanonis model yang menjadi tujuan peralihan sesi.

3536 3536 

3537Contoh ini menambahkan panduan setiap kali model sesi berubah ke model Opus mana pun:3537Contoh ini menambahkan panduan setiap kali model sesi berubah ke model Opus mana pun:

3538 3538 


3574| :- | :- |3574| :- | :- |

3575| `additionalContext` | String yang ditambahkan ke konteks Claude bersama permintaan berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |3575| `additionalContext` | String yang ditambahkan ke konteks Claude bersama permintaan berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

3576 3576 

3577Jika hook belum selesai dalam lima detik setelah Anda mengirim prompt berikutnya, Claude Code mengirim permintaan tersebut tanpa output dan melampirkannya ke permintaan setelahnya. Jika model berubah beberapa kali sebelum permintaan berikutnya, Claude Code hanya mengirimkan output untuk model target dari peralihan terakhir.3577Jika hook belum selesai dalam lima detik setelah Anda mengirim prompt berikutnya, Claude Code mengirim permintaan tersebut tanpa output dan melampirkannya ke permintaan selanjutnya. Jika model berubah beberapa kali sebelum permintaan berikutnya, Claude Code hanya mengirimkan output untuk model target peralihan terakhir.

3578 3578 

3579<h3 id="sessionend">3579<h3 id="sessionend">

3580 SessionEnd3580 SessionEnd

3581</h3>3581</h3>

3582 3582 

3583Berjalan saat sesi Claude Code berakhir. Berguna untuk tugas pembersihan, mencatat statistik3583Berjalan ketika sesi Claude Code berakhir. Berguna untuk tugas pembersihan, mencatat statistik

3584sesi, atau menyimpan status sesi. Mendukung matcher untuk memfilter berdasarkan alasan keluar.3584sesi, atau menyimpan state sesi. Mendukung matcher untuk memfilter berdasarkan alasan keluar.

3585 3585 

3586Field `reason` dalam input hook menunjukkan mengapa sesi berakhir:3586Field `reason` dalam input hook menunjukkan mengapa sesi berakhir:

3587 3587 


3590| `clear` | Sesi dibersihkan dengan perintah `/clear` |3590| `clear` | Sesi dibersihkan dengan perintah `/clear` |

3591| `resume` | Sesi dialihkan melalui `/resume` interaktif |3591| `resume` | Sesi dialihkan melalui `/resume` interaktif |

3592| `logout` | Pengguna keluar (log out) |3592| `logout` | Pengguna keluar (log out) |

3593| `prompt_input_exit` | Pengguna keluar saat input prompt terlihat |3593| `prompt_input_exit` | Pengguna keluar saat input prompt sedang terlihat |

3594| `other` | Alasan keluar lainnya |3594| `other` | Alasan keluar lainnya |

3595| `bypass_permissions_disabled` | Dihapus di v2.1.234; Claude Code tidak mengirimkannya. Hapus dari matcher `SessionEnd` Anda |3595| `bypass_permissions_disabled` | Dihapus di v2.1.234; Claude Code tidak mengirimkannya. Hapus dari matcher `SessionEnd` Anda |

3596 3596 


3614 3614 

3615Hook SessionEnd memiliki timeout default 1,5 detik. Timeout ini berlaku saat Anda keluar, menjalankan `/clear`, atau beralih sesi dengan `/resume` interaktif. Anda dapat memberi hook lebih banyak waktu dengan dua cara:3615Hook SessionEnd memiliki timeout default 1,5 detik. Timeout ini berlaku saat Anda keluar, menjalankan `/clear`, atau beralih sesi dengan `/resume` interaktif. Anda dapat memberi hook lebih banyak waktu dengan dua cara:

3616 3616 

3617* **`timeout` per hook**: atur `timeout` di konfigurasi hook tersebut. Anggaran keseluruhan naik secara otomatis untuk menyesuaikan dengan `timeout` per hook tertinggi di file pengaturan Anda, hingga 60 detik. Jika Anda menaikkan anggaran dengan cara ini, hook tanpa `timeout` sendiri tetap menggunakan default. Timeout yang diatur pada hook yang disediakan plugin tidak menaikkan anggaran.3617* **`timeout` per hook**: atur `timeout` dalam konfigurasi hook tersebut. Anggaran keseluruhan naik secara otomatis untuk menyamai `timeout` per hook tertinggi di file pengaturan Anda, hingga 60 detik. Jika Anda menaikkan anggaran dengan cara ini, hook tanpa `timeout` sendiri tetap menggunakan default. Timeout yang diatur pada hook yang disediakan plugin tidak menaikkan anggaran.

3618* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: atur environment variable ini dalam milidetik untuk menimpa anggaran secara eksplisit. Nilai yang Anda atur juga menjadi timeout untuk setiap hook tanpa `timeout` sendiri.3618* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: atur environment variable ini dalam milidetik untuk menimpa anggaran secara eksplisit. Nilai yang Anda atur juga menjadi timeout untuk setiap hook tanpa `timeout` sendiri.

3619 3619 

3620Contoh ini mengatur anggaran menjadi 5 detik:3620Contoh ini mengatur anggaran menjadi 5 detik:


3629 Elicitation3629 Elicitation

3630</h3>3630</h3>

3631 3631 

3632Berjalan saat server MCP meminta input pengguna di tengah tugas. Secara default, Claude Code menampilkan dialog interaktif agar pengguna merespons. Hook dapat mencegat permintaan ini dan merespons secara terprogram, melewati dialog sepenuhnya.3632Berjalan ketika server MCP meminta input pengguna di tengah tugas. Secara default, Claude Code menampilkan dialog interaktif agar pengguna merespons. Hook dapat mencegat permintaan ini dan merespons secara terprogram, sehingga melewati dialog sepenuhnya.

3633 3633 

3634Field matcher dicocokkan dengan nama server MCP.3634Field matcher dicocokkan dengan nama server MCP.

3635 3635 


3699 3699 

3700Exit code 2 menolak elicitation. Claude Code tidak menampilkan pesan stderr Anda di mana pun.3700Exit code 2 menolak elicitation. Claude Code tidak menampilkan pesan stderr Anda di mana pun.

3701 3701 

3702Claude Code menindaklanjuti `hookSpecificOutput` dari output JSON hook Elicitation dan membuang `systemMessage` serta `continue`.3702Claude Code bertindak berdasarkan `hookSpecificOutput` dari output JSON hook Elicitation dan membuang `systemMessage` serta `continue`.

3703 3703 

3704<h3 id="elicitationresult">3704<h3 id="elicitationresult">

3705 ElicitationResult3705 ElicitationResult


3752 3752 

3753Exit code 2 memblokir respons, mengubah tindakan efektif menjadi `decline`. Claude Code tidak menampilkan pesan stderr Anda di mana pun.3753Exit code 2 memblokir respons, mengubah tindakan efektif menjadi `decline`. Claude Code tidak menampilkan pesan stderr Anda di mana pun.

3754 3754 

3755Claude Code menindaklanjuti `hookSpecificOutput` dari output JSON hook ElicitationResult dan membuang `systemMessage` serta `continue`.3755Claude Code bertindak berdasarkan `hookSpecificOutput` dari output JSON hook ElicitationResult dan membuang `systemMessage` serta `continue`.

3756 3756 

3757<h2 id="prompt-based-hooks">3757<h2 id="prompt-based-hooks">

3758 Prompt-based hooks3758 Prompt-based hooks

keybindings.md +27 −1

Details

68| `EffortSlider` | Slider upaya dibuka oleh `/effort` |68| `EffortSlider` | Slider upaya dibuka oleh `/effort` |

69| `Select` | Komponen pilih/daftar generik |69| `Select` | Komponen pilih/daftar generik |

70| `Plugin` | Dialog plugin (jelajahi, temukan, kelola) |70| `Plugin` | Dialog plugin (jelajahi, temukan, kelola) |

71| `Pane` | Panel yang digambar oleh sebuah [mod](/docs/id/plugins/mods/interface#know-which-keys-your-mod-can-receive) memiliki fokus keyboard |

72| `PaneField` | Kolom input atau pilihan dalam panel mod memiliki fokus keyboard |

71| `Agents` | [Tampilan Agent](/docs/id/agent-view) (`claude agents`) |73| `Agents` | [Tampilan Agent](/docs/id/agent-view) (`claude agents`) |

72| `Scroll` | Pengguliran percakapan dan pemilihan teks dalam mode layar penuh |74| `Scroll` | Pengguliran percakapan dan pemilihan teks dalam mode layar penuh |

73 75 


596 598 

597Ini juga berfungsi untuk binding chord. Membatalkan setiap chord yang berbagi awalan membebaskan awalan itu untuk digunakan sebagai binding tombol tunggal. Sebuah chord dalam konteks aktif apa pun menjaga awalannya tetap terlindungi, jadi Anda harus membatalkan setiap chord dalam konteks yang mendefinisikannya.599Ini juga berfungsi untuk binding chord. Membatalkan setiap chord yang berbagi awalan membebaskan awalan itu untuk digunakan sebagai binding tombol tunggal. Sebuah chord dalam konteks aktif apa pun menjaga awalannya tetap terlindungi, jadi Anda harus membatalkan setiap chord dalam konteks yang mendefinisikannya.

598 600 

599Claude Code mengikat chord default ini pada awalan `ctrl+x`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s`, dan `ctrl+x tab` di `Chat`, `ctrl+x ctrl+b` di `Task`, dan `ctrl+x b` di `DiffPanel`. Chord `ctrl+x enter` memerlukan v2.1.247 atau lebih baru, `ctrl+x b`, `ctrl+x ctrl+a`, dan `ctrl+x tab` memerlukan v2.1.260 atau lebih baru, dan `ctrl+x ctrl+s` memerlukan v2.1.275 atau lebih baru.601Claude Code mengikat chord default ini pada awalan `ctrl+x`, berdasarkan konteks:

602 

603* `Chat`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s`, dan `ctrl+x tab`

604* `Task`: `ctrl+x ctrl+b`

605* `DiffPanel`: `ctrl+x b`

606* `Pane`: `ctrl+x left`, `ctrl+x right`, `ctrl+x up`, `ctrl+x down`, dan `ctrl+x x`

607* `PaneField`: `ctrl+x x`

608 

609Chord `ctrl+x enter` memerlukan v2.1.247 atau lebih baru, `ctrl+x b`, `ctrl+x ctrl+a`, dan `ctrl+x tab` memerlukan v2.1.260 atau lebih baru, dan `ctrl+x ctrl+s` memerlukan v2.1.275 atau lebih baru.

600 610 

601Untuk mengklaim kembali `ctrl+x` itu sendiri sebagai binding tombol tunggal, batalkan semuanya:611Untuk mengklaim kembali `ctrl+x` itu sendiri sebagai binding tombol tunggal, batalkan semuanya:

602 612 


615 "ctrl+x b": null625 "ctrl+x b": null

616 }626 }

617 },627 },

628 {

629 "context": "Pane",

630 "bindings": {

631 "ctrl+x left": null,

632 "ctrl+x right": null,

633 "ctrl+x up": null,

634 "ctrl+x down": null,

635 "ctrl+x x": null

636 }

637 },

638 {

639 "context": "PaneField",

640 "bindings": {

641 "ctrl+x x": null

642 }

643 },

618 {644 {

619 "context": "Chat",645 "context": "Chat",

620 "bindings": {646 "bindings": {

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 

mcp.md +9 −11

Details

1478Penanganan [combinator tingkat root](#tool-input-schemas-with-a-root-level-combinator) terpisah dan mempertahankan perilakunya sendiri ketika pengambilan bendera dimatikan atau bendera tidak pernah tiba.1478Penanganan [combinator tingkat root](#tool-input-schemas-with-a-root-level-combinator) terpisah dan mempertahankan perilakunya sendiri ketika pengambilan bendera dimatikan atau bendera tidak pernah tiba.

1479 1479 

1480<h2 id="require-approval-for-a-specific-tool">1480<h2 id="require-approval-for-a-specific-tool">

1481 Memerlukan persetujuan untuk alat tertentu1481 Memerlukan persetujuan untuk tool tertentu

1482</h2>1482</h2>

1483 1483 

1484Jika Anda membangun server MCP, Anda dapat menandai alat sebagai memerlukan persetujuan eksplisit pada setiap panggilan dengan menetapkan `_meta["anthropic/requiresUserInteraction"]` ke `true` dalam entri respons `tools/list` alat. Nilainya harus berupa boolean JSON `true`; nilai lainnya diabaikan.1484Jika Anda membangun server MCP, Anda dapat menandai tool sebagai memerlukan persetujuan eksplisit pada setiap panggilan dengan menetapkan `_meta["anthropic/requiresUserInteraction"]` ke `true` dalam entri respons `tools/list` tool tersebut. Nilainya harus berupa boolean JSON `true`; nilai lainnya diabaikan.

1485 1485 

1486Claude Code menampilkan prompt izin alat tersebut pada setiap panggilan, bahkan dalam [mode izin](/docs/id/permissions#permission-modes) `acceptEdits`, `auto`, dan `bypassPermissions`, dan tidak menawarkan opsi "jangan tanya lagi" untuk itu. [Aturan Allow](/docs/id/permissions#permission-rule-syntax) yang cocok dengan alat juga tidak melewati prompt. Dalam mode `dontAsk`, yang tidak pernah menampilkan prompt, Claude Code menolak panggilan sebagai gantinya.1486Claude Code menampilkan dialog izin tool tersebut pada setiap panggilan, bahkan dalam [mode izin](/docs/id/permissions#permission-modes) `acceptEdits`, `auto`, dan `bypassPermissions`, dan tidak menawarkan opsi "jangan tanya lagi" untuk tool tersebut. [Aturan Allow](/docs/id/permissions#permission-rule-syntax) yang cocok dengan tool juga tidak melewati dialog izin. Dalam mode `dontAsk`, yang tidak pernah menampilkan dialog izin, Claude Code menolak panggilan sebagai gantinya.

1487 1487 

1488Prompt harus mencapai seseorang. Dalam mode non-interaktif dengan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags), hasil `allow` dari alat prompt untuk alat yang ditandai dikonversi menjadi penolakan dengan pesan `MCP tool requires user interaction; not supported via --permission-prompt-tool`. Callback [`canUseTool`](/docs/id/agent-sdk/permissions) dari Agent SDK menerima panggilan ini dan dapat menyetujuinya, karena aplikasi SDK Anda diharapkan menampilkannya kepada pengguna.1488Dialog izin harus sampai ke seseorang. Dalam mode non-interaktif dengan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags), hasil `allow` dari tool prompt untuk tool yang ditandai dikonversi menjadi penolakan dengan pesan `MCP tool requires user interaction; not supported via --permission-prompt-tool`. Callback [`canUseTool`](/docs/id/agent-sdk/permissions) dari Agent SDK memang menerima panggilan ini dan dapat menyetujuinya, karena aplikasi SDK Anda diharapkan menampilkannya kepada pengguna.

1489 1489 

1490Gunakan ini untuk alat yang prompt izinnya sendiri adalah intinya, seperti langkah persetujuan atau pemberian akses di mana persetujuan otomatis berarti tidak ada manusia yang pernah setuju. Alat lain dari server yang sama mempertahankan perilaku izin normal mereka.1490Gunakan ini untuk tool yang dialog izinnya sendiri adalah intinya, seperti langkah persetujuan atau pemberian akses di mana persetujuan otomatis berarti tidak ada manusia yang pernah setuju. Tool lain dari server yang sama mempertahankan perilaku izin normal mereka.

1491 1491 

1492Entri `tools/list` berikut menandai satu alat sebagai selalu memerlukan persetujuan.1492Entri `tools/list` berikut menandai satu tool sebagai selalu memerlukan persetujuan.

1493 1493 

1494```json theme={null}1494```json theme={null}

1495{1495{


1501}1501}

1502```1502```

1503 1503 

1504Anotasi `anthropic/requiresUserInteraction` memerlukan Claude Code v2.1.199 atau lebih baru. Versi sebelumnya mengabaikannya dan menerapkan alur izin standar.1504Beberapa surface, seperti [Remote Control](/docs/id/remote-control) dan aplikasi yang dibangun di [Agent SDK](/docs/id/agent-sdk/overview), biasanya memungkinkan Anda menyetujui panggilan tool dengan satu ketukan. Untuk tool yang ditandai dengan anotasi ini, Claude Code menahan tindakan satu ketukan dan menampilkan dialog izin lengkap tool tersebut sebagai gantinya, sehingga persetujuan tetap berasal dari seseorang yang menjawab dialog izin, bukan dari sebuah ketukan.

1505 1505 

1506Beberapa permukaan, seperti [Remote Control](/docs/id/remote-control) dan aplikasi yang dibangun di [Agent SDK](/docs/id/agent-sdk/overview), biasanya memungkinkan Anda menyetujui panggilan alat dengan satu ketukan. Untuk alat yang ditandai dengan anotasi ini, Claude Code menahan tindakan satu ketukan dan menampilkan prompt izin lengkap alat sebagai gantinya, sehingga persetujuan masih berasal dari seseorang yang menjawab prompt daripada ketukan.1506Claude Code menahan persetujuan satu ketukan dengan cara yang sama untuk permintaan izin apa pun yang hanya dapat dirender sepenuhnya oleh dialog terminal, seperti permintaan yang membawa peringatan keamanan atau opsi selalu-izinkan yang tidak dapat ditampilkan oleh surface jarak jauh. Anda menjawab permintaan itu di dialog terminal, bukan dari Remote Control. Memerlukan Claude Code v2.1.214 atau lebih baru.

1507 

1508Claude Code menahan persetujuan satu ketukan dengan cara yang sama untuk permintaan izin apa pun yang hanya dialog terminal yang dapat merender sepenuhnya, seperti yang membawa peringatan keamanan atau opsi selalu-izinkan yang permukaan jarak jauh tidak dapat tampilkan. Anda menjawab permintaan itu di dialog terminal daripada dari Remote Control. Memerlukan Claude Code v2.1.214 atau lebih baru.

1509 1507 

1510<h2 id="respond-to-mcp-elicitation-requests">1508<h2 id="respond-to-mcp-elicitation-requests">

1511 Merespons permintaan elicitation MCP1509 Merespons permintaan elicitation MCP


1516Server dapat meminta input dengan dua cara:1514Server dapat meminta input dengan dua cara:

1517 1515 

1518* **Form mode**: Claude Code menampilkan dialog dengan bidang formulir yang ditentukan oleh server (misalnya, prompt nama pengguna dan kata sandi). Isi bidang dan kirimkan.1516* **Form mode**: Claude Code menampilkan dialog dengan bidang formulir yang ditentukan oleh server (misalnya, prompt nama pengguna dan kata sandi). Isi bidang dan kirimkan.

1519* **URL mode**: Claude Code menanyakan apakah akan membuka tautan di browser Anda dan membukanya ketika Anda menerima. Server menggunakan mode ini untuk alur yang selesai di luar terminal, seperti sign-in.1517* **URL mode**: Claude Code menanyakan apakah akan membuka tautan di browser Anda. Server menggunakan mode ini untuk alur yang selesai di luar terminal, seperti sign-in.

1520 1518 

1521Dalam URL mode, Claude Code meneruskan URL sebagai argumen baris perintah ke penanganan URL sistem Anda, dan membatasi seberapa lama argumen tersebut dapat diterima. Ketika URL, setelah diloloskan untuk baris perintah, melampaui batas tersebut, Anda hanya dapat menolak permintaan. Setiap karakter yang perlu diloloskan, seperti `%` atau `&`, dihitung empat kali terhadap batas: karakternya sendiri ditambah tiga karakter lolos. URL tanpa karakter tersebut mencapai batas pada sekitar 8.000 karakter. URL yang dibangun sebagian besar dari percent-escapes, di mana setiap karakter ketiga adalah `%`, mencapainya pada kira-kira 4.000.1519Dalam URL mode, Claude Code meneruskan URL sebagai argumen baris perintah ke penanganan URL sistem Anda, dan membatasi seberapa lama argumen tersebut dapat diterima. Ketika URL, setelah diloloskan untuk baris perintah, melampaui batas tersebut, Anda hanya dapat menolak permintaan. Setiap karakter yang perlu diloloskan, seperti `%` atau `&`, dihitung empat kali terhadap batas: karakternya sendiri ditambah tiga karakter lolos. URL tanpa karakter tersebut mencapai batas pada sekitar 8.000 karakter. URL yang dibangun sebagian besar dari percent-escapes, di mana setiap karakter ketiga adalah `%`, mencapainya pada kira-kira 4.000.

1522 1520 

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 

Details

578 578 

579Jika Anda menetapkan mode `dontAsk`, Claude Code secara otomatis menolak setiap panggilan alat yang akan meminta sebaliknya. Claude masih menjalankan tindakan yang tidak memerlukan persetujuan dalam mode Manual, seperti pembacaan file di dalam direktori kerja Anda dan [perintah Bash read-only](/docs/id/permissions#read-only-commands), ditambah tindakan yang cocok dengan aturan `permissions.allow` Anda dan panggilan yang disetujui oleh [hook PreToolUse](/docs/id/permissions#extend-permissions-with-hooks). Gunakan mode ini untuk pipeline CI atau lingkungan terbatas di mana Anda pre-define apa yang Claude boleh lakukan; sesi tidak pernah menunggu input. Bilah status menunjukkan `⏵⏵ don't ask on` saat mode ini aktif.579Jika Anda menetapkan mode `dontAsk`, Claude Code secara otomatis menolak setiap panggilan alat yang akan meminta sebaliknya. Claude masih menjalankan tindakan yang tidak memerlukan persetujuan dalam mode Manual, seperti pembacaan file di dalam direktori kerja Anda dan [perintah Bash read-only](/docs/id/permissions#read-only-commands), ditambah tindakan yang cocok dengan aturan `permissions.allow` Anda dan panggilan yang disetujui oleh [hook PreToolUse](/docs/id/permissions#extend-permissions-with-hooks). Gunakan mode ini untuk pipeline CI atau lingkungan terbatas di mana Anda pre-define apa yang Claude boleh lakukan; sesi tidak pernah menunggu input. Bilah status menunjukkan `⏵⏵ don't ask on` saat mode ini aktif.

580 580 

581Claude Code menolak panggilan yang cocok dengan aturan [`ask`](/docs/id/permissions#manage-permissions) eksplisit Anda daripada meminta. Ini juga menolak alat `AskUserQuestion` bawaan bahkan jika aturan allow Anda cocok dengannya, dan melakukan hal yang sama untuk alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan itu mencapai Claude Code. Ini menolak alat MCP yang ditandai [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) dengan cara yang sama, karena kartu persetujuan mereka memerlukan jawaban yang mode ini tidak pernah kumpulkan; ini memerlukan Claude Code v2.1.199 atau lebih baru.581Claude Code menolak panggilan yang cocok dengan [aturan `ask`](/docs/id/permissions#manage-permissions) eksplisit Anda daripada meminta persetujuan. Ini juga menolak tool `AskUserQuestion` bawaan bahkan jika aturan allow Anda cocok dengannya, dan melakukan hal yang sama untuk tool konektor yang [diatur organisasi Anda ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan itu mencapai Claude Code. Ini menolak tool MCP yang ditandai [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) dengan cara yang sama, karena kartu persetujuan mereka memerlukan jawaban yang tidak pernah dikumpulkan oleh mode ini.

582 582 

583Penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](#critical-paths), seperti `rm -rf /` dan `rm -rf ~`, ditolak bahkan ketika aturan allow cocok dengannya atau hook `PreToolUse` memungkinkannya.583Penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](#critical-paths), seperti `rm -rf /` dan `rm -rf ~`, ditolak bahkan ketika aturan allow cocok dengannya atau hook `PreToolUse` memungkinkannya.

584 584 

Details

371| `workspaceFolder` | No | Path folder workspace untuk server |371| `workspaceFolder` | No | Path folder workspace untuk server |

372| `startupTimeout` | No | Milidetik untuk menunggu startup, integer positif |372| `startupTimeout` | No | Milidetik untuk menunggu startup, integer positif |

373| `shutdownTimeout` | No | Milidetik untuk menunggu shutdown yang elegan, integer positif. Saat timeout berlalu, Claude Code menghentikan proses server. Saat tidak diatur, tidak ada timeout yang berlaku |373| `shutdownTimeout` | No | Milidetik untuk menunggu shutdown yang elegan, integer positif. Saat timeout berlalu, Claude Code menghentikan proses server. Saat tidak diatur, tidak ada timeout yang berlaku |

374| `requestTimeout` | No | Milidetik untuk menunggu server menjawab permintaan, integer positif. Default ke `60000`, sehingga permintaan yang tidak pernah dijawab server gagal setelah 60 detik. Memerlukan v2.1.288 atau lebih baru |

374| `restartOnCrash` | No | Apakah memulai ulang server setelah crash. Default ke `true`. Atur ke `false` untuk membiarkan server yang crash tetap berhenti daripada memulai ulang |375| `restartOnCrash` | No | Apakah memulai ulang server setelah crash. Default ke `true`. Atur ke `false` untuk membiarkan server yang crash tetap berhenti daripada memulai ulang |

375| `maxRestarts` | No | Upaya restart sebelum menyerah, nol atau lebih |376| `maxRestarts` | No | Upaya restart sebelum menyerah, nol atau lebih |

376| `diagnostics` | No | Apakah mendorong diagnostik ke konteks setelah edit. Default ke `true` |377| `diagnostics` | No | Apakah mendorong diagnostik ke konteks setelah edit. Default ke `true` |

Details

377 Bagikan mod Anda377 Bagikan mod Anda

378</h2>378</h2>

379 379 

380Mod adalah plugin, jadi Anda memversinya dalam manifest dan orang menginstal dan memperbarui dengan perintah `/plugin`. Untuk memberikannya kepada orang lain, [tambahkan ke marketplace](/docs/id/plugins/publish).380Mod adalah plugin, jadi Anda memversinya dalam manifest dan orang menginstal dan memperbaruinya dengan perintah `/plugin`. Cara Anda membagikannya bergantung pada siapa penggunanya:

381 

382* **Beberapa orang**: kirimkan kepada mereka direktori plugin atau `.zip` darinya. Lihat [Bagikan plugin tanpa marketplace](/docs/id/plugins/publish#share-a-plugin-without-a-marketplace)

383* **Tim Anda**: cantumkan di [marketplace Anda sendiri](/docs/id/plugins/publish#publish-through-your-own-marketplace), seperti repositori privat dengan satu direktori untuk setiap plugin. Untuk menambahkan marketplace tersebut bagi semua orang yang bekerja di sebuah repositori, [daftarkan di pengaturan repositori](/docs/id/plugins/host-marketplace#register-the-marketplace-for-everyone-in-a-repository)

384* **Seluruh organisasi Anda**: seorang admin dapat [menginstal mod organisasi Anda](/docs/id/plugins/mods/admin#install-your-organizations-mods) melalui pengaturan terkelola

385* **Siapa pun**: jadikan repositori marketplace Anda publik, atau [kirimkan plugin ke direktori Anthropic](/docs/id/plugins/publish#submit-to-anthropics-directory)

381 386 

382Sebelum Anda melakukannya, periksa `name` plugin: `claude plugin validate` gagal nama yang [terlihat seperti salah satu milik Anthropic sendiri](/docs/id/plugins/manifest-reference#name), seperti yang dimulai dengan `claude-`. Peristiwa dan metode dapat berubah antar rilis, jadi README Anda adalah tempat untuk mengatakan versi Claude Code mana yang Anda uji.387Sebelum Anda melakukannya, periksa `name` plugin: `claude plugin validate` gagal nama yang [terlihat seperti salah satu milik Anthropic sendiri](/docs/id/plugins/manifest-reference#name), seperti yang dimulai dengan `claude-`. Peristiwa dan metode dapat berubah antar rilis, jadi README Anda adalah tempat untuk mengatakan versi Claude Code mana yang Anda uji.

383 388 

Details

531| Atas dan Bawah | Bergerak antar kontrol saat gambar Anda pas. Ketika panel atau pita memiliki lebih banyak baris daripada yang dapat ditampilkan, mereka menggulirnya. |531| Atas dan Bawah | Bergerak antar kontrol saat gambar Anda pas. Ketika panel atau pita memiliki lebih banyak baris daripada yang dapat ditampilkan, mereka menggulirnya. |

532| Enter | Menekan `Button` yang fokus, mengirimkan `Input` yang fokus, atau memilih di `Select` |532| Enter | Menekan `Button` yang fokus, mengirimkan `Input` yang fokus, atau memilih di `Select` |

533| Pintasan keyboard tombol | Menekan tombol itu. Saat `Input` memiliki fokus, setiap kunci yang dapat dicetak pergi ke bidang. |533| Pintasan keyboard tombol | Menekan tombol itu. Saat `Input` memiliki fokus, setiap kunci yang dapat dicetak pergi ke bidang. |

534| Page Up, Page Down, Home, dan End | Menggulir panel atau pita Anda ketika memiliki lebih banyak baris daripada yang dapat ditampilkan |

535| Ctrl+X kemudian tombol panah | Mengubah ukuran panel Anda. Kiri atau Atas memberinya lebih banyak ruang, dan Kanan atau Bawah mengembalikan ruang tersebut. |

536| Ctrl+X kemudian X | Menutup panel Anda, bahkan saat salah satu bidangnya memiliki fokus |

534| Esc | Mengembalikan fokus keyboard ke prompt. Dengan `closeOnEscape: true`, itu juga menutup panel. |537| Esc | Mengembalikan fokus keyboard ke prompt. Dengan `closeOnEscape: true`, itu juga menutup panel. |

535 538 

536Mod tidak dapat mengikat Tab atau tombol panah ke apa pun yang lain, jadi permainan mengarahkan dengan `w`, `a`, `s`, dan `d`.539Mod tidak dapat mengikat Tab atau tombol panah ke apa pun yang lain, jadi permainan mengarahkan dengan `w`, `a`, `s`, dan `d`.

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

routines.md +1 −1

Details

403 </Step>403 </Step>

404 404 

405 <Step title="Ubah tingkat akses jaringan">405 <Step title="Ubah tingkat akses jaringan">

406 Dalam dialog **Edit cloud environment**, ubah **Network access** menjadi **Custom** dan masukkan domain Anda di **Allowed domains**. Periksa **Also include default list of common package managers** untuk menyimpan [daftar allowlist default](/docs/id/cloud-environments#default-allowed-domains) bersama domain kustom Anda. Pilih **Full** sebagai gantinya untuk akses tanpa batas.406 Dalam dialog **Edit environment**, ubah **Network access** menjadi **Custom** dan masukkan domain Anda di **Allowed domains**. Centang **Also include default list of common package managers** untuk mempertahankan [allowlist default](/docs/id/cloud-environments#default-allowed-domains) bersama domain kustom Anda. Pilih **Full** sebagai gantinya untuk akses tanpa batas.

407 </Step>407 </Step>

408 408 

409 <Step title="Simpan">409 <Step title="Simpan">

sandboxing.md +2 −4

Details

459 Melakukan mask kredensial459 Melakukan mask kredensial

460</h3>460</h3>

461 461 

462Ketika Anda melakukan mask pada kredensial, Claude Code menampilkan placeholder per sesi yang disebut sentinel kepada perintah sandbox, dan [proxy sandbox](#network-isolation) mensubstitusi nilai sebenarnya pada permintaan keluar ke host yang Anda izinkan. Entri `deny` di [Melindungi kredensial](#protect-credentials) justru memblokir kredensial. Untuk file di macOS, Claude Code [memblokir file tersebut](#mask-credential-files) alih-alih melakukan mask.462Ketika Anda melakukan mask pada kredensial, Claude Code menampilkan placeholder per sesi yang disebut sentinel kepada perintah sandbox, dan [proxy sandbox](#network-isolation) mensubstitusi nilai sebenarnya pada permintaan keluar ke host yang Anda izinkan. Entri `deny` di [Melindungi kredensial](#protect-credentials) justru memblokir kredensial. Untuk file di macOS, Claude Code [memblokir file tersebut](#mask-credential-files) alih-alih melakukan mask. Referensi [`sandbox.credentials`](/docs/id/settings-reference#sandbox-credentials) mencantumkan setiap field.

463 

464Melakukan mask environment variable memerlukan Claude Code v2.1.199 atau lebih baru. Referensi [`sandbox.credentials`](/docs/id/settings-reference#sandbox-credentials) mencantumkan setiap field.

465 463 

466Masking memerlukan hal berikut:464Masking memerlukan hal berikut:

467 465 


620Dalam aturan `WebFetch(domain:...)`, sandbox mematuhi dua bentuk wildcard: `*.` di awal, seperti `*.example.com`, dan `*` tunggal. Bentuk `*` tunggal memerlukan Claude Code v2.1.186 atau yang lebih baru. Wildcard di posisi lain, seperti `WebFetch(domain:example.*)`, tetap cocok dengan pengambilan tetapi tidak berpengaruh pada perintah yang di-sandbox.618Dalam aturan `WebFetch(domain:...)`, sandbox mematuhi dua bentuk wildcard: `*.` di awal, seperti `*.example.com`, dan `*` tunggal. Bentuk `*` tunggal memerlukan Claude Code v2.1.186 atau yang lebih baru. Wildcard di posisi lain, seperti `WebFetch(domain:example.*)`, tetap cocok dengan pengambilan tetapi tidak berpengaruh pada perintah yang di-sandbox.

621 619 

622<Note>620<Note>

623 Proxy bawaan menerapkan allowlist berdasarkan hostname yang diminta dan, secara default, tidak mengakhiri atau memeriksa lalu lintas TLS. Pengaturan eksperimental [`network.tlsTerminate`](/docs/id/settings-reference#sandbox-network-tlsterminate), yang tersedia di Claude Code v2.1.199 dan yang lebih baru, membuat proxy bawaan mengakhiri TLS sendiri, yang diperlukan oleh [entri kredensial `mask`](#mask-credentials). Lihat [Keterbatasan keamanan](#security-limitations) untuk implikasi dari perilaku default, dan [Konfigurasi proxy kustom](#custom-proxy-configuration) jika model ancaman Anda memerlukan inspeksi TLS.621 Proxy bawaan menerapkan allowlist berdasarkan hostname yang diminta dan, secara default, tidak mengakhiri atau memeriksa lalu lintas TLS. Pengaturan eksperimental [`network.tlsTerminate`](/docs/id/settings-reference#sandbox-network-tlsterminate) membuat proxy bawaan mengakhiri TLS sendiri, yang diperlukan oleh [entri kredensial `mask`](#mask-credentials). Lihat [Keterbatasan keamanan](#security-limitations) untuk implikasi dari perilaku default, dan [Konfigurasi proxy kustom](#custom-proxy-configuration) jika model ancaman Anda memerlukan inspeksi TLS.

624</Note>622</Note>

625 623 

626<h4 id="hosts-outside-your-allowed-domains">624<h4 id="hosts-outside-your-allowed-domains">

sessions.md +1 −1

Details

299 Hapus data sesi299 Hapus data sesi

300</h3>300</h3>

301 301 

302Transkrip berusia di bawah [aturan penyapuan retensi](/docs/id/claude-directory#cleaned-up-automatically). Untuk menghapus transkrip proyek dan status terkait lebih cepat, jalankan [`claude project purge`](/docs/id/claude-directory#clear-local-data). Jika Anda menghapus [sesi latar belakang](/docs/id/agent-view) dengan [`claude rm <id>`](/docs/id/agent-view#what-deleting-a-session-removes), transkrip tetap di disk dan tetap tersedia melalui `claude --resume`.302Transkrip kedaluwarsa berdasarkan [aturan penyapuan retensi](/docs/id/claude-directory#cleaned-up-automatically). Untuk menghapus transkrip proyek dan status terkait lebih cepat, jalankan [`claude purge`](/docs/id/claude-directory#clear-local-data). Jika Anda menghapus [sesi latar belakang](/docs/id/agent-view) dengan [`claude rm <id>`](/docs/id/agent-view#what-deleting-a-session-removes), transkrip tetap di disk dan tetap tersedia melalui `claude --resume`.

303 303 

304<h3 id="name-the-project-directory-yourself">304<h3 id="name-the-project-directory-yourself">

305 Beri nama direktori proyek sendiri305 Beri nama direktori proyek sendiri

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.


2478 `sandbox.credentials.envVars`2481 `sandbox.credentials.envVars`

2479</h3>2482</h3>

2480 2483 

2481Lindungi environment variable dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code menghapus variabel dari environment perintah bersandbox. Dengan `"mode": "mask"`, perintah bersandbox melihat nilai sentinel per sesi, dan proxy sandbox mengganti nilai aslinya pada permintaan keluar ke `injectHosts` milik entri itu, sehingga alat seperti `gh` dan `npm` tetap dapat mengautentikasi tanpa pernah memegang kredensial asli. `"mode": "mask"` memerlukan Claude Code v2.1.199 atau lebih baru.2484Lindungi environment variable dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code menghapus variabel dari environment perintah bersandbox. Dengan `"mode": "mask"`, perintah bersandbox melihat nilai sentinel per sesi, dan proxy sandbox mengganti nilai aslinya pada permintaan keluar ke `injectHosts` milik entri itu, sehingga alat seperti `gh` dan `npm` tetap dapat mengautentikasi tanpa pernah memegang kredensial asli.

2482 2485 

2483* **Scope**: [`Any file`](#scopes). Claude Code membuang entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.2486* **Scope**: [`Any file`](#scopes). Claude Code membuang entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.

2484* **Type**: array objek, masing-masing dengan `name` dan `mode` bernilai `"deny"` atau `"mask"`, ditambah [mask fields for environment variables](#mask-fields-for-environment-variables) opsional2487* **Type**: array objek, masing-masing dengan `name` dan `mode` bernilai `"deny"` atau `"mask"`, ditambah [mask fields for environment variables](#mask-fields-for-environment-variables) opsional


2499}2502}

2500```2503```

2501 2504 

2502`name` harus dimulai dengan huruf atau garis bawah dan hanya berisi huruf, digit, dan garis bawah. Claude Code menggabungkan array dari setiap cakupan pengaturan yang dimuat sesi, dan menerapkan `deny` ketika variabel yang sama muncul dengan kedua mode. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`. Entri `mask` memerlukan Claude Code v2.1.199 atau lebih baru.2505`name` harus dimulai dengan huruf atau garis bawah dan hanya berisi huruf, digit, dan garis bawah. Claude Code menggabungkan array dari setiap cakupan pengaturan yang dimuat sesi, dan menerapkan `deny` ketika variabel yang sama muncul dengan kedua mode. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`.

2503 2506 

2504Substitusi `mask` hanya berjalan melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa; lihat [Mask credentials](/docs/id/sandboxing#mask-credentials). Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`.2507Substitusi `mask` hanya berjalan melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa; lihat [Mask credentials](/docs/id/sandboxing#mask-credentials). Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`.

2505 2508 


2525| `onExtractNoMatch` | `"warn"`, `"deny"`, atau `"error"`; default `"warn"`. Pada entri dengan `decode`, hanya `"warn"` yang diterima | Apa yang terjadi ketika `extract` tidak cocok dengan apa pun. `warn` meneruskan variabel tanpa disamarkan, `deny` menghapus pengaturan variabel di dalam sandbox, dan `error` menghentikan penyiapan sandbox sampai Anda memperbaiki konfigurasi. Memerlukan v2.1.224 atau lebih baru |2528| `onExtractNoMatch` | `"warn"`, `"deny"`, atau `"error"`; default `"warn"`. Pada entri dengan `decode`, hanya `"warn"` yang diterima | Apa yang terjadi ketika `extract` tidak cocok dengan apa pun. `warn` meneruskan variabel tanpa disamarkan, `deny` menghapus pengaturan variabel di dalam sandbox, dan `error` menghentikan penyiapan sandbox sampai Anda memperbaiki konfigurasi. Memerlukan v2.1.224 atau lebih baru |

2526| `decode` | string `"jwt"` | Verifikasi bahwa seluruh nilai adalah JWT dan ganti dengan token palsu yang valid secara struktural, sehingga kode di dalam sandbox yang mendekode token tetap bekerja; proxy mengganti seluruh token asli saat egress. Nilai yang tidak terverifikasi diteruskan tanpa disamarkan dengan peringatan. Memerlukan v2.1.224 atau lebih baru |2529| `decode` | string `"jwt"` | Verifikasi bahwa seluruh nilai adalah JWT dan ganti dengan token palsu yang valid secara struktural, sehingga kode di dalam sandbox yang mendekode token tetap bekerja; proxy mengganti seluruh token asli saat egress. Nilai yang tidak terverifikasi diteruskan tanpa disamarkan dengan peringatan. Memerlukan v2.1.224 atau lebih baru |

2527| `maskClaims` | array string, setidaknya satu nama klaim; memerlukan `decode` | Samarkan hanya klaim payload tingkat atas yang disebutkan di dalam JWT yang didekode dan bangun kembali token di sekitar payload yang dimodifikasi, sehingga klaim lain tetap dapat dibaca. Ketika tidak ada klaim yang disebutkan yang cocok, variabel diteruskan tanpa disamarkan dengan peringatan. Memerlukan v2.1.224 atau lebih baru |2530| `maskClaims` | array string, setidaknya satu nama klaim; memerlukan `decode` | Samarkan hanya klaim payload tingkat atas yang disebutkan di dalam JWT yang didekode dan bangun kembali token di sekitar payload yang dimodifikasi, sehingga klaim lain tetap dapat dibaca. Ketika tidak ada klaim yang disebutkan yang cocok, variabel diteruskan tanpa disamarkan dengan peringatan. Memerlukan v2.1.224 atau lebih baru |

2528| `injectHosts` | array string, masing-masing host yang juga diterima oleh [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Persempit host tempat proxy sandbox mengganti nilai aslinya. Ketika tidak diatur, proxy menggantinya pada permintaan ke setiap host di `sandbox.network.allowedDomains`. Tulis tujuan IPv6 sebagai alamat terkompresi tanpa kurung, seperti `"::1"`, bukan bentuk dengan tanda kurung siku; lihat [IPv6 destinations in `injectHosts`](/docs/id/sandboxing#ipv6-destinations-in-injecthosts). Memerlukan v2.1.199 atau lebih baru |2531| `injectHosts` | array string, masing-masing host yang juga diterima oleh [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Persempit host tempat proxy sandbox mengganti nilai aslinya. Ketika tidak diatur, proxy menggantinya pada permintaan ke setiap host di `sandbox.network.allowedDomains`. Tulis tujuan IPv6 sebagai alamat terkompresi tanpa kurung, seperti `"::1"`, bukan bentuk dengan tanda kurung siku; lihat [IPv6 destinations in `injectHosts`](/docs/id/sandboxing#ipv6-destinations-in-injecthosts) |

2529 2532 

2530Ini hanya menyamarkan kata sandi di dalam `DATABASE_URL`, menghapus pengaturan variabel jika pola tidak cocok dengan apa pun, dan menyamarkan JWT di `SERVICE_JWT` sambil membiarkan setiap klaim kecuali `api_key` tetap dapat dibaca:2533Ini hanya menyamarkan kata sandi di dalam `DATABASE_URL`, menghapus pengaturan variabel jika pola tidak cocok dengan apa pun, dan menyamarkan JWT di `SERVICE_JWT` sambil membiarkan setiap klaim kecuali `api_key` tetap dapat dibaca:

2531 2534 


2556 `sandbox.credentials.allowPlaintextInject`2559 `sandbox.credentials.allowPlaintextInject`

2557</h3>2560</h3>

2558 2561 

2559Izinkan substitusi `mask` pada permintaan HTTP biasa selain HTTPS dengan terminasi TLS. Pada HTTP biasa, identitas upstream tidak diverifikasi dan kredensial dikirim dalam cleartext, jadi biarkan mati di luar jaringan uji tepercaya. Memerlukan Claude Code v2.1.199 atau lebih baru.2562Izinkan substitusi `mask` pada permintaan HTTP biasa selain HTTPS dengan terminasi TLS. Pada HTTP biasa, identitas upstream tidak diverifikasi dan kredensial dikirim dalam cleartext, jadi biarkan mati di luar jaringan uji tepercaya.

2560 2563 

2561* **Scope**: [`User or managed`](#scopes)2564* **Scope**: [`User or managed`](#scopes)

2562* **Type**: Boolean2565* **Type**: Boolean


2574}2577}

2575```2578```

2576 2579 

2577Memerlukan Claude Code v2.1.199 atau lebih baru.

2578 

2579<h3 id="sandbox-credentials-awspairs">2580<h3 id="sandbox-credentials-awspairs">

2580 `sandbox.credentials.awsPairs`2581 `sandbox.credentials.awsPairs`

2581</h3>2582</h3>


2919}2920}

2920```2921```

2921 2922 

2922Ketika lebih dari satu sumber yang dihormati menetapkannya, Claude Code menggunakan nilai dari sumber dengan prioritas tertinggi: pengaturan terkelola, kemudian flag `--settings`, kemudian pengaturan pengguna. Memerlukan Claude Code v2.1.199 atau lebih baru.2923Ketika lebih dari satu sumber yang dihormati menetapkannya, Claude Code menggunakan nilai dari sumber dengan prioritas tertinggi: pengaturan terkelola, kemudian flag `--settings`, kemudian pengaturan pengguna.

2923 2924 

2924<span id="context-and-memory" />2925<span id="context-and-memory" />

2925 2926 


2967}2968}

2968```2969```

2969 2970 

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.2971Perintah [`/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 2972 

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

2973 `autoMemoryDirectory`2974 `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 

skills.md +108 −107

Details

198 Menyelesaikan skill yang memiliki nama yang sama198 Menyelesaikan skill yang memiliki nama yang sama

199</h3>199</h3>

200 200 

201Ketika dua skill memiliki nama direktori atau file yang sama, asal masing-masing menentukan mana yang dijalankan oleh `/name`. Untuk nama yang ditetapkan oleh field frontmatter `name`, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Tabel ini mencakup lokasi enterprise, personal, proyek, bersarang, plugin, dan claude.ai, skill bawaan, serta file perintah:201Ketika dua skill memiliki nama direktori atau file yang sama, asal masing-masing menentukan mana yang dijalankan oleh `/name`. Untuk nama yang ditetapkan oleh field frontmatter `name`, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Tabel ini mencakup lokasi enterprise, personal, proyek, bersarang, plugin, dan claude.ai, skill bawaan, perintah bawaan, serta file perintah:

202 202 

203| Nama yang sama di | Mana yang dijalankan |203| Nama yang sama di | Mana yang dijalankan |

204| :- | :- |204| :- | :- |

205| Dua di antara enterprise, personal, dan proyek | Enterprise di atas personal, dan personal di atas proyek. Dengan `deploy` di `~/.claude/skills/` dan di `.claude/skills/` milik proyek, `/deploy` menjalankan yang personal |205| Dua di antara enterprise, personal, dan proyek | Enterprise di atas personal, dan personal di atas proyek. Dengan `deploy` di `~/.claude/skills/` dan di `.claude/skills/` milik proyek, `/deploy` menjalankan yang personal |

206| Salah satu lokasi tersebut dan [skill bawaan](#bundled-skills) | Skill Anda menggantikan perintah bawaan, tetapi tidak menggantikan aliasnya. Skill proyek `code-review` menggantikan `/code-review`, dan alias bawaan `/review` tidak pernah menjalankan skill Anda |206| Salah satu lokasi tersebut dan [skill bawaan](#bundled-skills) | Skill Anda menggantikan perintah bawaan, tetapi tidak menggantikan aliasnya. Skill proyek `code-review` menggantikan `/code-review`, dan alias bawaan `/review` tidak pernah menjalankan skill Anda |

207| Salah satu lokasi tersebut dan [perintah bawaan](/docs/id/commands) | Dalam sesi terminal lokal, skill Anda menggantikan perintah bawaan, tetapi tidak menggantikan aliasnya. Skill proyek `usage` menggantikan `/usage`, dan alias bawaan `/cost` tetap menjalankan perintah bawaan |

207| Skill dan file di `.claude/commands/` | Skill |208| Skill dan file di `.claude/commands/` | Skill |

208| Skill di root proyek dan skill bersarang | Keduanya dimuat. Lihat [monorepo dan subdirektori](#discovery-from-parent-and-nested-directories) |209| Skill di root proyek dan skill bersarang | Keduanya dimuat. Lihat [monorepo dan subdirektori](#discovery-from-parent-and-nested-directories) |

209| Skill plugin dan skill di salah satu lokasi di atas | Keduanya dimuat, karena skill plugin diberi namespace sebagai `/plugin-name:skill-name` |210| Skill plugin dan skill di salah satu lokasi di atas | Keduanya dimuat, karena skill plugin diberi namespace sebagai `/plugin-name:skill-name` |


338Untuk mempertahankan skill personal atau proyek tetapi mencegah Claude memanggilnya sendiri, atur [`disable-model-invocation: true`](#control-who-invokes-a-skill) di frontmatter-nya, atau `"user-invocable-only"` di [`skillOverrides`](#override-skill-visibility-from-settings) jika Anda tidak ingin mengedit file tersebut.339Untuk mempertahankan skill personal atau proyek tetapi mencegah Claude memanggilnya sendiri, atur [`disable-model-invocation: true`](#control-who-invokes-a-skill) di frontmatter-nya, atau `"user-invocable-only"` di [`skillOverrides`](#override-skill-visibility-from-settings) jika Anda tidak ingin mengedit file tersebut.

339 340 

340<h2 id="configure-skills">341<h2 id="configure-skills">

341 Konfigurasi skills342 Mengonfigurasi skills

342</h2>343</h2>

343 344 

344Skills dikonfigurasi melalui frontmatter YAML di bagian atas `SKILL.md` dan konten markdown yang mengikutinya.345Skills dikonfigurasi melalui frontmatter YAML di bagian atas `SKILL.md` dan konten markdown yang mengikutinya.


347 Jenis konten skill348 Jenis konten skill

348</h3>349</h3>

349 350 

350File skill dapat berisi instruksi apa pun, tetapi memikirkan tentang cara Anda ingin menginvokasinya membantu memandu apa yang harus disertakan:351File skill dapat berisi instruksi apa pun, tetapi memikirkan bagaimana Anda ingin memanggilnya membantu menentukan apa yang perlu disertakan:

351 352 

352**Konten referensi** menambahkan pengetahuan yang Claude terapkan pada pekerjaan Anda saat ini. Konvensi, pola, panduan gaya, pengetahuan domain. Konten ini berjalan inline sehingga Claude dapat menggunakannya bersama konteks percakapan Anda.353**Konten referensi** menambahkan pengetahuan yang diterapkan Claude pada pekerjaan Anda saat ini. Konvensi, pola, panduan gaya, pengetahuan domain. Konten ini berjalan inline sehingga Claude dapat menggunakannya bersama konteks percakapan Anda.

353 354 

354```yaml theme={null}355```yaml theme={null}

355---356---


363- Include request validation364- Include request validation

364```365```

365 366 

366**Konten tugas** memberikan Claude instruksi langkah demi langkah untuk tindakan tertentu, seperti deployment, commit, atau pembuatan kode. Ini sering kali merupakan tindakan yang ingin Anda panggil langsung dengan `/skill-name` daripada membiarkan Claude memutuskan kapan menjalankannya. Tambahkan `disable-model-invocation: true` untuk mencegah Claude memicunya secara otomatis. Contoh di bawah menambahkan `context: fork`, yang menjalankan skill dalam konteks subagent-nya sendiri; lihat [Jalankan skills dalam subagent](#run-skills-in-a-subagent).367**Konten tugas** memberi Claude instruksi langkah demi langkah untuk tindakan tertentu, seperti deployment, commit, atau pembuatan kode. Ini sering kali merupakan tindakan yang ingin Anda panggil langsung dengan `/skill-name` daripada membiarkan Claude memutuskan kapan menjalankannya. Tambahkan `disable-model-invocation: true` untuk mencegah Claude memicunya secara otomatis. Contoh di bawah menambahkan `context: fork`, yang menjalankan skill dalam konteks subagent tersendiri; lihat [Menjalankan skills dalam subagent](#run-skills-in-a-subagent).

367 368 

368```yaml theme={null}369```yaml theme={null}

369---370---


3793. Push to the deployment target3803. Push to the deployment target

380```381```

381 382 

382Jaga isi tubuh tetap ringkas. Setelah skill dimuat, kontennya [tetap dalam konteks di seluruh giliran](#skill-content-lifecycle), jadi setiap baris adalah biaya token berulang. Nyatakan apa yang harus dilakukan daripada menceritakan bagaimana atau mengapa, dan terapkan tes keringkasan yang sama yang akan Anda lakukan untuk [konten CLAUDE.md](/docs/id/best-practices#write-an-effective-claude-md).383Jaga agar isi skill itu sendiri tetap ringkas. Setelah skill dimuat, kontennya [tetap berada dalam konteks di sepanjang giliran](#skill-content-lifecycle), sehingga setiap baris merupakan biaya token yang berulang. Nyatakan apa yang harus dilakukan alih-alih menjelaskan bagaimana atau mengapa, dan terapkan uji keringkasan yang sama seperti yang Anda lakukan untuk [konten CLAUDE.md](/docs/id/best-practices#write-an-effective-claude-md).

383 384 

384<h3 id="frontmatter-reference">385<h3 id="frontmatter-reference">

385 Referensi frontmatter386 Referensi frontmatter

386</h3>387</h3>

387 388 

388Konfigurasi skill dengan YAML [frontmatter](/docs/id/glossary#frontmatter) antara penanda `---` di bagian atas `SKILL.md`, dan tulis instruksi skill sebagai Markdown setelah penutup `---`. Nama bidang menggunakan kata-kata huruf kecil yang dipisahkan dengan tanda hubung, kecuali `when_to_use`. File [command](#where-skills-live) di `.claude/commands/` menerima bidang yang sama kecuali `name` dan `paths`. Contoh ini menetapkan empat bidang:389Konfigurasikan skill dengan [frontmatter](/docs/id/glossary#frontmatter) YAML di antara penanda `---` di bagian atas `SKILL.md`, dan tulis instruksi skill sebagai Markdown setelah penutup `---`. Nama field menggunakan kata-kata huruf kecil yang dipisahkan tanda hubung, kecuali `when_to_use`. [File perintah](#where-skills-live) di `.claude/commands/` menerima field yang sama kecuali `name` dan `paths`. Contoh ini mengatur empat field:

389 390 

390```yaml theme={null}391```yaml theme={null}

391---392---


398Your skill instructions here...399Your skill instructions here...

399```400```

400 401 

401Semua bidang bersifat opsional. Hanya `description` yang direkomendasikan sehingga Claude tahu kapan harus menggunakan skill. Nama bidang harus cocok dengan tabel dengan tepat, tanda hubung disertakan: Claude Code mengabaikan bidang yang tidak dikenalinya tanpa melaporkan kesalahan.402Semua field bersifat opsional. Hanya `description` yang direkomendasikan agar Claude tahu kapan harus menggunakan skill tersebut. Nama field harus sama persis dengan tabel, termasuk tanda hubungnya: Claude Code mengabaikan field yang tidak dikenalinya tanpa melaporkan kesalahan.

402 403 

403Claude Code membaca frontmatter hanya ketika pembukaan `---` adalah baris pertama file. Jika tidak, itu memperlakukan seluruh file, penanda `---` disertakan, sebagai konten skill. Jika YAML antara penanda tidak diuraikan, skill masih dimuat tanpa bidang yang ditetapkan; lihat [Skill tidak memicu](#skill-not-triggering) untuk menemukan dan memperbaiki kesalahan.404Claude Code membaca frontmatter hanya jika `---` pembuka berada di baris pertama file. Jika tidak, seluruh file, termasuk penanda `---`, diperlakukan sebagai konten skill. Jika YAML di antara penanda tidak dapat di-parse, skill tetap dimuat tanpa field apa pun yang diatur; lihat [Skill tidak terpicu](#skill-not-triggering) untuk menemukan dan memperbaiki kesalahannya.

404 405 

405Bidang Boolean menerima `yes`, `no`, `on`, `off`, `1`, dan `0` dalam huruf apa pun, selain `true` dan `false`. Sebelum v2.1.218, Claude Code hanya mengenali `true` dan `false`.406Field boolean menerima `yes`, `no`, `on`, `off`, `1`, dan `0` dalam huruf besar maupun kecil, selain `true` dan `false`. Sebelum v2.1.218, Claude Code hanya mengenali `true` dan `false`.

406 407 

407| Field | Required | Description |408| Field | Wajib | Deskripsi |

408| :- | :- | :- |409| :- | :- | :- |

409| `name` | No | Nama perintah yang ditampilkan dalam menu `/`. Default ke nama direktori. Lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name) untuk cara bidang berinteraksi dengan nama yang Anda ketik untuk menginvokasi skill. |410| `name` | Tidak | Nama perintah yang ditampilkan di menu `/`. Default-nya adalah nama direktori. Lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name) untuk cara field ini berinteraksi dengan nama yang Anda ketik untuk memanggil skill. |

410| `description` | Recommended | Apa yang dilakukan skill dan kapan menggunakannya. Claude menggunakan ini untuk memutuskan kapan menerapkan skill. Jika dihilangkan, menggunakan baris non-kosong pertama dari konten markdown. Letakkan kasus penggunaan utama terlebih dahulu: teks gabungan `description` dan `when_to_use` dipotong pada 1.536 karakter dalam daftar skill untuk mengurangi penggunaan konteks. |411| `description` | Direkomendasikan | Apa yang dilakukan skill dan kapan menggunakannya. Claude menggunakan ini untuk memutuskan kapan menerapkan skill. Jika dihilangkan, baris tidak kosong pertama dari konten markdown akan digunakan. Letakkan kasus penggunaan utama di awal: gabungan teks `description` dan `when_to_use` dipotong pada 1.536 karakter dalam daftar skill untuk mengurangi penggunaan konteks. |

411| `when_to_use` | No | Konteks tambahan untuk kapan Claude harus menginvokasi skill, seperti frasa pemicu atau permintaan contoh. Ditambahkan ke `description` dalam daftar skill dan dihitung menuju batas 1.536 karakter. |412| `when_to_use` | Tidak | Konteks tambahan tentang kapan Claude harus memanggil skill, seperti frasa pemicu atau contoh permintaan. Ditambahkan ke `description` dalam daftar skill dan dihitung dalam batas 1.536 karakter. |

412| `argument-hint` | No | Petunjuk yang ditampilkan selama autocomplete untuk menunjukkan argumen yang diharapkan. Contoh: `[issue-number]` atau `[filename] [format]`. |413| `argument-hint` | Tidak | Petunjuk yang ditampilkan selama pelengkapan otomatis untuk menunjukkan argumen yang diharapkan. Contoh: `[issue-number]` atau `[filename] [format]`. |

413| `arguments` | No | Argumen posisional bernama untuk [`$name` substitution](#available-string-substitutions) dalam konten skill. Menerima string yang dipisahkan spasi atau daftar YAML. Nama memetakan ke posisi argumen secara berurutan. |414| `arguments` | Tidak | Argumen posisional bernama untuk [substitusi `$name`](#available-string-substitutions) dalam konten skill. Menerima string yang dipisahkan spasi atau daftar YAML. Nama dipetakan ke posisi argumen secara berurutan. |

414| `disable-model-invocation` | No | Atur ke `true` untuk mencegah Claude memuat skill ini secara otomatis. Gunakan untuk alur kerja yang ingin Anda picu secara manual dengan `/name`. Juga mencegah skill dari [dimuat sebelumnya ke dalam subagents](/docs/id/sub-agents#preload-skills-into-subagents). Mulai dari v2.1.196, juga mencegah skill dari berjalan ketika [tugas terjadwal](/docs/id/scheduled-tasks) diaktifkan dengan skill sebagai promptnya. Default: `false`. |415| `disable-model-invocation` | Tidak | Atur ke `true` untuk mencegah Claude memuat skill ini secara otomatis. Gunakan untuk alur kerja yang ingin Anda picu secara manual dengan `/name`. Juga mencegah skill [dimuat lebih dulu ke dalam subagent](/docs/id/sub-agents#preload-skills-into-subagents). Sejak v2.1.196, juga mencegah skill berjalan ketika [tugas terjadwal](/docs/id/scheduled-tasks) dipicu dengan skill tersebut sebagai prompt-nya. Default: `false`. |

415| `user-invocable` | No | Atur ke `false` ketika hanya Claude yang harus menginvokasi skill: Claude Code menyembunyikannya dari menu `/` dan tidak menjalankannya ketika Anda mengetik `/name`. Gunakan untuk pengetahuan latar belakang yang tidak boleh pengguna invokasi secara langsung. Default: `true`. |416| `user-invocable` | Tidak | Atur ke `false` jika hanya Claude yang boleh memanggil skill: Claude Code menyembunyikannya dari menu `/` dan tidak menjalankannya ketika Anda mengetik `/name`. Gunakan untuk pengetahuan latar belakang yang tidak seharusnya dipanggil langsung oleh pengguna. Default: `true`. |

416| `allowed-tools` | No | Tools yang dapat Claude gunakan tanpa meminta izin selama giliran yang menginvokasi skill ini. Hibah dihapus ketika Anda mengirim pesan berikutnya. Menerima string yang dipisahkan spasi atau koma, atau daftar YAML. Lihat [Pra-setujui tools untuk skill](#pre-approve-tools-for-a-skill). |417| `allowed-tools` | Tidak | Tool yang dapat digunakan Claude tanpa meminta izin selama giliran yang memanggil skill ini. Pemberian izin ini dihapus ketika Anda mengirim pesan berikutnya. Menerima string yang dipisahkan spasi atau koma, atau daftar YAML. Lihat [Menyetujui tool terlebih dahulu untuk skill](#pre-approve-tools-for-a-skill). |

417| `disallowed-tools` | No | Tools yang dihapus dari pool tools yang tersedia Claude saat skill ini aktif. Gunakan untuk skills otonom yang tidak boleh memanggil tools tertentu, seperti `AskUserQuestion` untuk loop latar belakang. Menerima string yang dipisahkan spasi atau koma, atau daftar YAML. Pembatasan dihapus ketika Anda mengirim pesan berikutnya. Seperti aturan deny, bidang tidak dapat menghapus [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) saat tool lain tetap ada. |418| `disallowed-tools` | Tidak | Tool yang dihapus dari kumpulan tool yang tersedia bagi Claude selama skill ini aktif. Gunakan untuk skill otonom yang tidak boleh memanggil tool tertentu, seperti `AskUserQuestion` untuk loop latar belakang. Menerima string yang dipisahkan spasi atau koma, atau daftar YAML. Pembatasan ini dihapus ketika Anda mengirim pesan berikutnya. Seperti aturan deny, field ini tidak dapat menghapus [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) selama masih ada tool lain. |

418| `model` | No | Model yang digunakan ketika skill ini aktif. Penggantian berlaku untuk sisa giliran saat ini dan tidak disimpan ke pengaturan. Model sesi dilanjutkan ketika Anda mengirim prompt berikutnya. Menerima nilai yang sama seperti [`/model`](/docs/id/model-config), atau `inherit` untuk menjaga model aktif. Nilai yang dikecualikan oleh daftar izin [`availableModels`](/docs/id/model-config#restrict-model-selection) organisasi Anda tidak digunakan, dan sesi menyimpan model saat ini. Dalam [mode auto](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), dan dalam [mode plan saat classifier meninjau perintah](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), model yang tidak didukung mode auto juga tidak digunakan, dan sesi menyimpan model saat ini. Dengan `context: fork`, nilai menetapkan [model subagent yang bercabang](#run-skills-in-a-subagent) sebagai gantinya, dan nilai yang dikecualikan mengikuti [aturan yang sama seperti penggantian model subagent](/docs/id/model-config#restrict-model-selection). |419| `model` | Tidak | Model yang digunakan ketika skill ini aktif. Override berlaku untuk sisa giliran saat ini dan tidak disimpan ke pengaturan. Model sesi dilanjutkan ketika Anda mengirim prompt berikutnya. Menerima nilai yang sama dengan [`/model`](/docs/id/model-config), atau `inherit` untuk mempertahankan model yang aktif. Nilai yang dikecualikan oleh allowlist [`availableModels`](/docs/id/model-config#restrict-model-selection) organisasi Anda tidak digunakan, dan sesi mempertahankan model saat ini. Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), dan dalam [plan mode saat pengklasifikasi meninjau perintah](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), model yang tidak didukung auto mode juga tidak digunakan, dan sesi mempertahankan model saat ini. Dengan `context: fork`, nilai ini justru mengatur [model subagent hasil fork](#run-skills-in-a-subagent), dan nilai yang dikecualikan mengikuti [aturan yang sama dengan override model subagent](/docs/id/model-config#restrict-model-selection). |

419| `effort` | No | [Tingkat effort](/docs/id/model-config#adjust-effort-level) ketika skill ini aktif. Mengganti tingkat effort sesi. Default: mewarisi dari sesi. Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia tergantung pada model. |420| `effort` | Tidak | [Tingkat effort](/docs/id/model-config#adjust-effort-level) ketika skill ini aktif. Menimpa tingkat effort sesi. Jika Anda menghilangkannya, tingkatnya berasal dari [urutan resolusi effort](/docs/id/model-config#adjust-effort-level). Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia bergantung pada model. |

420| `context` | No | Atur ke `fork` untuk berjalan dalam konteks subagent yang bercabang. Lihat [Jalankan skills dalam subagent](#run-skills-in-a-subagent). |421| `context` | Tidak | Atur ke `fork` untuk menjalankan dalam konteks subagent hasil fork. Lihat [Menjalankan skills dalam subagent](#run-skills-in-a-subagent). |

421| `agent` | No | Jenis subagent mana yang digunakan ketika `context: fork` diatur. |422| `agent` | Tidak | Jenis subagent yang digunakan ketika `context: fork` diatur. |

422| `background` | No | Hanya berlaku dengan `context: fork`. Atur ke `false` untuk menunggu hasil subagent yang bercabang dalam giliran yang menginvokasi skill, daripada [menjalankannya di latar belakang](#run-skills-in-a-subagent). Default: `true`. Memerlukan Claude Code v2.1.218 atau lebih baru. |423| `background` | Tidak | Hanya berlaku dengan `context: fork`. Atur ke `false` untuk menunggu hasil subagent hasil fork dalam giliran yang memanggil skill, alih-alih [menjalankannya di latar belakang](#run-skills-in-a-subagent). Default: `true`. Memerlukan Claude Code v2.1.218 atau yang lebih baru. |

423| `hooks` | No | Hooks yang Claude Code daftarkan ketika skill diinvokasi dan terus berjalan untuk sisa sesi. Lihat [Hooks dalam skills dan agents](/docs/id/hooks#hooks-in-skills-and-agents) untuk format konfigurasi dan opsi `once`. |424| `hooks` | Tidak | Hook yang didaftarkan Claude Code ketika skill dipanggil dan tetap berjalan selama sisa sesi. Lihat [Hooks dalam skills dan agent](/docs/id/hooks#hooks-in-skills-and-agents) untuk format konfigurasi dan opsi `once`. |

424| `paths` | No | Pola glob yang membatasi kapan skill ini diaktifkan. Menerima string yang dipisahkan koma atau daftar YAML. Ketika diatur, Claude memuat skill secara otomatis hanya saat bekerja dengan file yang cocok dengan pola. Menggunakan format yang sama seperti [aturan khusus path](/docs/id/memory#path-specific-rules). |425| `paths` | Tidak | Pola glob yang membatasi kapan skill ini diaktifkan. Menerima string yang dipisahkan koma atau daftar YAML. Jika diatur, Claude memuat skill secara otomatis hanya ketika bekerja dengan file yang cocok dengan pola tersebut. Menggunakan format yang sama dengan [aturan khusus path](/docs/id/memory#path-specific-rules). |

425| `shell` | No | Shell yang digunakan untuk `` !`command` `` dan ` ```! ` blocks dalam skill ini. Menerima `bash` (default) atau `powershell`. Mengatur `powershell` menjalankan perintah shell inline melalui PowerShell ketika [tool PowerShell](/id/tools-reference#powershell-tool) diaktifkan: itu aktif secara default di Windows tanpa Git Bash, aktif secara default dengan Git Bash untuk akun claude.ai dan Console, dan memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` dalam sesi Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry dan di macOS, Linux, dan WSL. Atur ke `0` untuk mematikan tool. |426| `shell` | Tidak | Shell yang digunakan untuk blok `` !`command` `` dan ` ```! ` dalam skill ini. Menerima `bash` (default) atau `powershell`. Mengatur `powershell` menjalankan perintah shell inline melalui PowerShell ketika [tool PowerShell](/id/tools-reference#powershell-tool) diaktifkan: tool ini aktif secara default di Windows tanpa Git Bash, aktif secara default dengan Git Bash untuk akun claude.ai dan Console, dan memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` dalam sesi Amazon Bedrock, Agent Platform milik Google Cloud, dan Microsoft Foundry serta di macOS, Linux, dan WSL. Atur ke `0` untuk mematikan tool tersebut. |

426| `metadata` | No | Peta YAML bentuk bebas untuk data kunci-nilai Anda sendiri, seperti bidang entitlement atau katalog, dibaca oleh tooling Anda sendiri dari `SKILL.md`. Claude Code tidak bertindak atas isinya, dan menjatuhkan nilai yang bukan peta. Jangan gunakan kembali nama bidang frontmatter seperti `paths` sebagai kunci. |427| `metadata` | Tidak | Map YAML bentuk bebas untuk data key-value Anda sendiri, seperti field entitlement atau katalog, yang dibaca oleh tooling Anda sendiri dari `SKILL.md`. Claude Code tidak bertindak berdasarkan isinya, dan membuang nilai yang bukan map. Jangan menggunakan ulang nama field frontmatter seperti `paths` sebagai key. |

427| `license` | No | Lisensi yang mencakup skill. Bagian dari spesifikasi [Agent Skills](https://agentskills.io); lihat [Menggunakan skill frontmatter di luar Claude Code](#using-skill-frontmatter-outside-claude-code). Claude Code menerima bidang tetapi tidak bertindak atasnya. |428| `license` | Tidak | Lisensi yang mencakup skill. Bagian dari spesifikasi [Agent Skills](https://agentskills.io); lihat [Menggunakan frontmatter skill di luar Claude Code](#using-skill-frontmatter-outside-claude-code). Claude Code menerima field ini tetapi tidak bertindak berdasarkannya. |

428| `compatibility` | No | Persyaratan lingkungan untuk skill, seperti produk yang dimaksudkan atau prasyarat sistem, seperti yang didefinisikan oleh spesifikasi [Agent Skills](https://agentskills.io); lihat [Menggunakan skill frontmatter di luar Claude Code](#using-skill-frontmatter-outside-claude-code). Menerima string hingga 500 karakter. Claude Code menerima bidang tetapi tidak bertindak atasnya. |429| `compatibility` | Tidak | Persyaratan lingkungan untuk skill, seperti produk yang dituju atau prasyarat sistem, sebagaimana didefinisikan oleh spesifikasi [Agent Skills](https://agentskills.io); lihat [Menggunakan frontmatter skill di luar Claude Code](#using-skill-frontmatter-outside-claude-code). Menerima string hingga 500 karakter. Claude Code menerima field ini tetapi tidak bertindak berdasarkannya. |

429 430 

430<h4 id="using-skill-frontmatter-outside-claude-code">431<h4 id="using-skill-frontmatter-outside-claude-code">

431 Menggunakan skill frontmatter di luar Claude Code432 Menggunakan frontmatter skill di luar Claude Code

432</h4>433</h4>

433 434 

434Claude Code menerima setiap bidang dalam tabel di atas. Di luar Claude Code, Anda hanya dapat menggunakan bidang dalam spesifikasi [Agent Skills](https://agentskills.io):435Claude Code menerima setiap field dalam tabel di atas. Di luar Claude Code, Anda hanya dapat menggunakan field yang ada dalam spesifikasi [Agent Skills](https://agentskills.io):

435 436 

436| Distribution path | Frontmatter fields you can use |437| Jalur distribusi | Field frontmatter yang dapat Anda gunakan |

437| :- | :- |438| :- | :- |

438| Claude Code skills at [any level](#where-skills-live), including [plugin](/docs/id/plugins/overview) skills | Every field in the table above |439| Skills Claude Code di [tingkat mana pun](#where-skills-live), termasuk skill [plugin](/docs/id/plugins/overview) | Setiap field dalam tabel di atas |

439| claude.ai skill uploads, the Skills API, and packaging with `package_skill.py` from [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |440| Unggahan skill claude.ai, Skills API, dan pengemasan dengan `package_skill.py` dari [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |

440 441 

441Ketika Anda mengaktifkan skill pribadi untuk akun claude.ai Anda, misalnya untuk menggunakannya dalam [sesi Cowork dan cloud](#skills-in-cowork-and-cloud-sessions) dan rutinitas, Anda mengunggahnya ke claude.ai, jadi aturan yang sama berlaku.442Ketika Anda mengaktifkan skill pribadi untuk akun claude.ai Anda, misalnya untuk menggunakannya dalam [Cowork dan sesi cloud](#skills-in-cowork-and-cloud-sessions) serta routine, Anda mengunggahnya ke claude.ai, sehingga aturan yang sama berlaku.

442 443 

443Jika Anda menyertakan bidang apa pun yang tidak diizinkan oleh spesifikasi, pengemasan atau unggahan gagal dengan kesalahan keras daripada mengabaikan bidang:444Jika Anda menyertakan field apa pun yang tidak diizinkan oleh spesifikasi, pengemasan atau pengunggahan gagal dengan kesalahan keras alih-alih mengabaikan field tersebut:

444 445 

445```446```

446Unexpected key(s) in SKILL.md frontmatter: argument-hint. Allowed properties are: allowed-tools, compatibility, description, license, metadata, name447Unexpected key(s) in SKILL.md frontmatter: argument-hint. Allowed properties are: allowed-tools, compatibility, description, license, metadata, name

447```448```

448 449 

449Membatasi frontmatter ke enam bidang spesifikasi menghindari kesalahan kunci yang tidak terduga di atas. Spesifikasi [Agent Skills](https://agentskills.io) dan [persyaratan Skills API](https://docs.claude.com/en/api/skills-guide) mendefinisikan segalanya yang divalidasi oleh jalur tersebut. Fitur isi Claude Code-only, seperti [injeksi konteks dinamis](#inject-dynamic-context), tidak berfungsi dalam obrolan claude.ai atau melalui API. Claude Code menerima keenam bidang, jadi frontmatter yang mengikuti spesifikasi dimuat di Claude Code tanpa perubahan.450Membatasi frontmatter pada enam field spesifikasi menghindari kesalahan unexpected-key di atas. [Spesifikasi Agent Skills](https://agentskills.io) dan [persyaratan Skills API](https://docs.claude.com/en/api/skills-guide) mendefinisikan semua hal lain yang divalidasi oleh jalur-jalur tersebut. Fitur isi skill yang khusus Claude Code, seperti [injeksi konteks dinamis](#inject-dynamic-context), tidak berfungsi dalam obrolan claude.ai atau melalui API. Claude Code menerima keenam field tersebut, sehingga frontmatter yang mengikuti spesifikasi dapat dimuat di Claude Code tanpa perubahan.

450 451 

451<h4 id="how-a-skill-gets-its-command-name">452<h4 id="how-a-skill-gets-its-command-name">

452 Bagaimana skill mendapatkan nama perintahnya453 Bagaimana skill mendapatkan nama perintahnya

453</h4>454</h4>

454 455 

455Perintah yang Anda ketik untuk menginvokasi skill berasal dari tempat file skill berada dan, untuk direktori skill dan plugin skills, dari bidang frontmatter `name`. Dalam skill pribadi atau proyek, `name` menetapkan perintah yang ditampilkan menu `/` dan yang Anda ketik, kecuali perintah lain sudah menggunakan nama itu. Nama direktori juga menginvokasi skill. Dalam plugin skill, `name` menetapkan segmen terakhir dari perintah dan awalan plugin tetap ada.456Perintah yang Anda ketik untuk memanggil skill berasal dari lokasi file skill dan, untuk direktori skill dan skill plugin, dari field frontmatter `name`. Dalam direktori skill pribadi atau proyek, `name` mengatur perintah yang ditampilkan menu `/` dan yang Anda ketik, kecuali perintah lain sudah menggunakan nama tersebut. Nama direktori juga dapat memanggil skill. Dalam skill plugin, `name` mengatur segmen terakhir perintah dan prefiks plugin tetap dipertahankan.

456 457 

457Tabel di bawah menunjukkan dari mana nama perintah berasal untuk setiap tata letak:458Tabel di bawah menunjukkan asal nama perintah untuk setiap tata letak:

458 459 

459| Skill location | Command name source | Example |460| Lokasi skill | Sumber nama perintah | Contoh |

460| :- | :- | :- |461| :- | :- | :- |

461| Skill directory under `~/.claude/skills/` or `.claude/skills/` | Frontmatter `name` or the directory name | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging`, or `/deploy` with `name: deploy` |462| Direktori skill di bawah `~/.claude/skills/` atau `.claude/skills/` | Frontmatter `name` atau nama direktori | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging`, atau `/deploy` dengan `name: deploy` |

462| [Nested](#where-skills-live) `.claude/skills/` directory, when the directory name clashes with another skill | Subdirectory path relative to the working directory, then the skill directory name | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |463| Direktori `.claude/skills/` [bersarang](#where-skills-live), ketika nama direktori bentrok dengan skill lain | Path subdirektori relatif terhadap direktori kerja, lalu nama direktori skill | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |

463| File under `.claude/commands/` | File name without extension | `.claude/commands/deploy.md` → `/deploy` |464| File di bawah `.claude/commands/` | Nama file tanpa ekstensi | `.claude/commands/deploy.md` → `/deploy` |

464| File in a subdirectory of `.claude/commands/` | Subdirectory path relative to `commands/` with each `/` replaced by `:`, then the file name without extension | `.claude/commands/frontend/component.md` → `/frontend:component` |465| File dalam subdirektori `.claude/commands/` | Path subdirektori relatif terhadap `commands/` dengan setiap `/` diganti dengan `:`, lalu nama file tanpa ekstensi | `.claude/commands/frontend/component.md` → `/frontend:component` |

465| Plugin `skills/` subdirectory | Frontmatter `name` or the directory name, namespaced by plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, or `/my-plugin:fancy` with `name: fancy` |466| Subdirektori `skills/` plugin | Frontmatter `name` atau nama direktori, dengan namespace plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, atau `/my-plugin:fancy` dengan `name: fancy` |

466| Plugin root `SKILL.md` | Frontmatter `name`, with the plugin directory name as a fallback | `my-plugin/SKILL.md` with `name: review` → `/my-plugin:review`. See [a single skill at the plugin root](/docs/id/plugins/components#skills) |467| `SKILL.md` di root plugin | Frontmatter `name`, dengan nama direktori plugin sebagai fallback | `my-plugin/SKILL.md` dengan `name: review` → `/my-plugin:review`. Lihat [satu skill di root plugin](/docs/id/plugins/components#skills) |

467| Skill [synced from claude.ai](#how-synced-skills-behave) | The skill's name on your claude.ai account, prefixed with `anthropic-skills:` | Account skill `deploy` → `/anthropic-skills:deploy`, or `/deploy` while no other command uses that name |468| Skill yang [disinkronkan dari claude.ai](#how-synced-skills-behave) | Nama skill di akun claude.ai Anda, dengan prefiks `anthropic-skills:` | Skill akun `deploy` → `/anthropic-skills:deploy`, atau `/deploy` selama tidak ada perintah lain yang menggunakan nama tersebut |

468 469 

469Dalam skill plugin, frontmatter `name` menggantikan nama direktori dalam segmen terakhir perintah, jadi `my-plugin/skills/review/SKILL.md` dengan `name: fancy` menjadi `/my-plugin:fancy`. Perintah bare `/fancy` juga menginvokasi skill kecuali perintah lain sudah menggunakan nama itu. Jika `name` yang Anda tulis sudah dimulai dengan awalan plugin itu sendiri, Claude Code tidak menambahkan awalan lagi pada v2.1.246 atau lebih baru. Misalnya, `name: my-plugin:fancy` masih menjadi `/my-plugin:fancy`. Dari v2.1.216 hingga v2.1.245, Claude Code menggandakan awalan ketika `name` sudah membawanya.470Dalam skill plugin, frontmatter `name` menggantikan nama direktori di segmen terakhir perintah, sehingga `my-plugin/skills/review/SKILL.md` dengan `name: fancy` menjadi `/my-plugin:fancy`. `/fancy` tanpa prefiks juga memanggil skill kecuali perintah lain sudah menggunakan nama tersebut. Jika `name` yang Anda tulis sudah diawali dengan prefiks plugin itu sendiri, Claude Code tidak menambahkan prefiks lagi pada v2.1.246 atau yang lebih baru. Misalnya, `name: my-plugin:fancy` tetap menjadi `/my-plugin:fancy`. Dari v2.1.216 hingga v2.1.245, Claude Code menggandakan prefiks ketika `name` sudah membawanya.

470 471 

471Dalam [sesi non-interaktif](/docs/id/headless), nama `help` dan `feedback` tidak dicadangkan untuk perintah bawaan khusus terminal mereka, jadi skill plugin dengan salah satu nama tersebut menyimpan perintah bare-nya di sana. Setiap terminal-only built-in lainnya, seperti `/login`, tetap dicadangkan meskipun perintah tidak dapat dijalankan dalam sesi tersebut.472Dalam [sesi non-interaktif](/docs/id/headless), nama `help` dan `feedback` tidak dicadangkan untuk perintah bawaan khusus terminal, sehingga skill plugin dengan salah satu nama tersebut mempertahankan perintah tanpa prefiksnya di sana. Nama setiap perintah bawaan khusus terminal lainnya, seperti `/login`, tetap dicadangkan meskipun perintah tersebut tidak dapat berjalan dalam sesi tersebut.

472 473 

473Untuk `SKILL.md` akar plugin, tidak ada direktori skill untuk mengambil nama darinya, jadi `name` menyediakan seluruh segmen terakhir. Tanpa bidang `name`, Claude Code kembali ke nama direktori plugin.474Untuk `SKILL.md` di root plugin, tidak ada direktori skill yang dapat diambil namanya, sehingga `name` menyediakan seluruh segmen terakhir. Tanpa field `name`, Claude Code menggunakan nama direktori plugin sebagai fallback.

474 475 

475<h4 id="available-string-substitutions">476<h4 id="available-string-substitutions">

476 Substitusi string yang tersedia477 Substitusi string yang tersedia


478 479 

479Skills mendukung substitusi string untuk nilai dinamis dalam konten skill:480Skills mendukung substitusi string untuk nilai dinamis dalam konten skill:

480 481 

481| Variable | Description |482| Variabel | Deskripsi |

482| :- | :- |483| :- | :- |

483| `$ARGUMENTS` | Semua argumen yang diteruskan saat menginvokasi skill. Ketika tidak ada placeholder yang menerima argumen, Claude Code menambahkannya sebagai `ARGUMENTS: <value>`. Lihat [Teruskan argumen ke skills](#pass-arguments-to-skills). |484| `$ARGUMENTS` | Semua argumen yang diteruskan saat memanggil skill. Jika tidak ada placeholder yang menerima argumen, Claude Code menambahkannya sebagai `ARGUMENTS: <value>`. Lihat [Meneruskan argumen ke skills](#pass-arguments-to-skills). |

484| `$ARGUMENTS[N]` | Akses argumen tertentu berdasarkan indeks berbasis 0, seperti `$ARGUMENTS[0]` untuk argumen pertama. |485| `$ARGUMENTS[N]` | Mengakses argumen tertentu berdasarkan indeks berbasis 0, seperti `$ARGUMENTS[0]` untuk argumen pertama. |

485| `$N` | Shorthand untuk `$ARGUMENTS[N]`, seperti `$0` untuk argumen pertama atau `$1` untuk argumen kedua. |486| `$N` | Singkatan untuk `$ARGUMENTS[N]`, seperti `$0` untuk argumen pertama atau `$1` untuk argumen kedua. |

486| `$name` | Argumen bernama yang dideklarasikan dalam daftar frontmatter [`arguments`](#frontmatter-reference). Nama memetakan ke posisi secara berurutan, jadi dengan `arguments: [issue, branch]` placeholder `$issue` berkembang menjadi argumen pertama dan `$branch` menjadi argumen kedua. |487| `$name` | Argumen bernama yang dideklarasikan dalam daftar frontmatter [`arguments`](#frontmatter-reference). Nama dipetakan ke posisi secara berurutan, sehingga dengan `arguments: [issue, branch]` placeholder `$issue` diperluas menjadi argumen pertama dan `$branch` menjadi argumen kedua. |

487| `${CLAUDE_SESSION_ID}` | ID sesi saat ini. Berguna untuk logging, membuat file khusus sesi, atau mengkorelasikan output skill dengan sesi. |488| `${CLAUDE_SESSION_ID}` | ID sesi saat ini. Berguna untuk logging, membuat file khusus sesi, atau mengaitkan output skill dengan sesi. |

488| `${CLAUDE_EFFORT}` | Tingkat effort saat ini: `low`, `medium`, `high`, `xhigh`, atau `max`. Gunakan ini untuk menyesuaikan instruksi skill dengan pengaturan effort aktif. |489| `${CLAUDE_EFFORT}` | Tingkat effort saat ini: `low`, `medium`, `high`, `xhigh`, atau `max`. Gunakan ini untuk menyesuaikan instruksi skill dengan pengaturan effort yang aktif. |

489| `${CLAUDE_SKILL_DIR}` | Direktori yang berisi file `SKILL.md` skill. Untuk plugin skills, ini adalah subdirektori skill dalam plugin, bukan akar plugin. Gunakan ini dalam perintah injeksi bash untuk mereferensikan skrip atau file yang disertakan dengan skill, terlepas dari direktori kerja saat ini. |490| `${CLAUDE_SKILL_DIR}` | Direktori yang berisi file `SKILL.md` skill. Untuk skill plugin, ini adalah subdirektori skill di dalam plugin, bukan root plugin. Gunakan ini dalam perintah injeksi bash untuk mereferensikan skrip atau file yang dibundel dengan skill, terlepas dari direktori kerja saat ini. |

490| `${CLAUDE_PROJECT_DIR}` | Direktori akar proyek. Ini adalah path yang sama yang [hooks](/docs/id/hooks#reference-scripts-by-path) dan server MCP terima sebagai `CLAUDE_PROJECT_DIR`. Gunakan ini untuk mereferensikan skrip atau file lokal proyek, seperti `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, terlepas dari tempat skill diinstal. |491| `${CLAUDE_PROJECT_DIR}` | Direktori root proyek. Ini adalah path yang sama yang diterima [hook](/docs/id/hooks#reference-scripts-by-path) dan server MCP sebagai `CLAUDE_PROJECT_DIR`. Gunakan ini untuk mereferensikan skrip atau file lokal proyek, seperti `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, terlepas dari lokasi skill diinstal. |

491| `${CLAUDE_PLUGIN_ROOT}` | Direktori instalasi plugin. Disubstitusi hanya dalam plugin skills. Gunakan ini untuk mereferensikan skrip atau file yang disertakan di mana pun dalam plugin, termasuk sumber daya yang dibagikan antara skills plugin. Lihat [variabel lingkungan plugin](/docs/id/plugins/manifest-reference#environment-variables). |492| `${CLAUDE_PLUGIN_ROOT}` | Direktori instalasi plugin. Hanya disubstitusi dalam skill plugin. Gunakan ini untuk mereferensikan skrip atau file yang dibundel di mana pun dalam plugin, termasuk sumber daya yang dibagikan di antara skill plugin. Lihat [environment variable plugin](/docs/id/plugins/manifest-reference#environment-variables). |

492| `${CLAUDE_PLUGIN_DATA}` | [Direktori data persisten](/docs/id/plugins/components#path-variables-and-persistent-data) plugin, yang bertahan dari pembaruan plugin. Disubstitusi hanya dalam plugin skills. Gunakan ini untuk mereferensikan dependensi yang diinstal, file yang dihasilkan, atau cache yang harus bertahan dari pembaruan. |493| `${CLAUDE_PLUGIN_DATA}` | [Direktori data persisten](/docs/id/plugins/components#path-variables-and-persistent-data) plugin, yang tetap ada setelah pembaruan plugin. Hanya disubstitusi dalam skill plugin. Gunakan ini untuk mereferensikan dependensi yang terinstal, file yang dihasilkan, atau cache yang harus bertahan melewati pembaruan. |

493 494 

494Claude Code menggantikan `${CLAUDE_SKILL_DIR}` dan `${CLAUDE_PROJECT_DIR}` di dua tempat: konten markdown skill, dan aturan Bash dalam frontmatter [`allowed-tools`](#frontmatter-reference). Dalam skill plugin, Claude Code menggantikan `${CLAUDE_PLUGIN_ROOT}` dan `${CLAUDE_PLUGIN_DATA}` di tempat yang sama. Menggunakan variabel yang sama di kedua tempat memungkinkan skill menjalankan skrip bundel tanpa prompt izin. Skill berikut menunjukkan polanya:495Claude Code menyubstitusi `${CLAUDE_SKILL_DIR}` dan `${CLAUDE_PROJECT_DIR}` di dua tempat: konten markdown skill, dan aturan Bash dalam frontmatter [`allowed-tools`](#frontmatter-reference). Dalam skill plugin, Claude Code menyubstitusi `${CLAUDE_PLUGIN_ROOT}` dan `${CLAUDE_PLUGIN_DATA}` di dua tempat yang sama. Menggunakan variabel yang sama di kedua tempat memungkinkan skill menjalankan skrip yang dibundel tanpa permintaan izin. Skill berikut menunjukkan polanya:

495 496 

496```yaml theme={null}497```yaml theme={null}

497---498---


503Run `${CLAUDE_SKILL_DIR}/scripts/render.sh <csv-file>` to render the chart.504Run `${CLAUDE_SKILL_DIR}/scripts/render.sh <csv-file>` to render the chart.

504```505```

505 506 

506Jika skill ini diinstal di `~/.claude/skills/render-chart/`, kedua kemunculan `${CLAUDE_SKILL_DIR}` berkembang ke direktori itu. Aturan `allowed-tools` kemudian cocok dengan perintah yang tepat yang diberitahu skill body kepada Claude untuk dijalankan, jadi skrip berjalan tanpa meminta.507Jika skill ini diinstal di `~/.claude/skills/render-chart/`, kedua kemunculan `${CLAUDE_SKILL_DIR}` diperluas ke direktori tersebut. Aturan `allowed-tools` kemudian cocok dengan perintah persis yang diinstruksikan isi skill kepada Claude untuk dijalankan, sehingga skrip berjalan tanpa permintaan izin.

507 508 

508Substitusi `${CLAUDE_PROJECT_DIR}` memerlukan Claude Code v2.1.196 atau lebih baru.509Substitusi `${CLAUDE_PROJECT_DIR}` memerlukan Claude Code v2.1.196 atau yang lebih baru.

509 510 

510Argumen yang diindeks menggunakan kutipan gaya shell, jadi bungkus nilai multi-kata dalam tanda kutip untuk meneruskannya sebagai argumen tunggal. Misalnya, `/my-skill "hello world" second` membuat `$0` berkembang menjadi `hello world` dan `$1` menjadi `second`. Placeholder `$ARGUMENTS` selalu berkembang ke string argumen lengkap seperti yang diketik.511Argumen berindeks menggunakan kutipan gaya shell, jadi bungkus nilai multi-kata dalam tanda kutip untuk meneruskannya sebagai satu argumen. Misalnya, `/my-skill "hello world" second` membuat `$0` diperluas menjadi `hello world` dan `$1` menjadi `second`. Placeholder `$ARGUMENTS` selalu diperluas menjadi string argumen lengkap sebagaimana diketik.

511 512 

512Placeholder yang diindeks tanpa argumen yang sesuai, seperti `$2` ketika hanya satu argumen yang diteruskan, tetap dalam konten tidak berubah. Placeholder bernama dari frontmatter [`arguments`](#frontmatter-reference) tanpa argumen yang cocok berkembang menjadi string kosong.513Placeholder berindeks tanpa argumen yang sesuai, seperti `$2` ketika hanya satu argumen yang diteruskan, tetap berada dalam konten tanpa perubahan. Placeholder bernama dari frontmatter [`arguments`](#frontmatter-reference) tanpa argumen yang cocok diperluas menjadi string kosong.

513 514 

514Jika Anda meneruskan nilai argumen yang sendiri berisi teks seperti `$1` atau `$ARGUMENTS`, Claude Code menyisipkannya sebagai teks literal dan tidak memperluasnya. Misalnya, jika isi skill berisi `Summarize $0` dan Anda menjalankan `/summarize "$ARGUMENTS from yesterday"`, Claude menerima `Summarize $ARGUMENTS from yesterday`. Claude Code masih menggantikan variabel `${CLAUDE_*}` seperti `${CLAUDE_SKILL_DIR}` setelah menyisipkan argumen.515Jika Anda meneruskan nilai argumen yang sendirinya berisi teks seperti `$1` atau `$ARGUMENTS`, Claude Code menyisipkannya sebagai teks literal dan tidak memperluasnya. Misalnya, jika isi skill berisi `Summarize $0` dan Anda menjalankan `/summarize "$ARGUMENTS from yesterday"`, Claude menerima `Summarize $ARGUMENTS from yesterday`. Claude Code tetap mengganti variabel `${CLAUDE_*}` seperti `${CLAUDE_SKILL_DIR}` setelah menyisipkan argumen.

515 516 

516Untuk menyertakan literal `$` sebelum digit, `ARGUMENTS`, atau nama argumen yang dideklarasikan, seperti `$1.00` dalam prosa, lepaskan dengan garis miring terbalik: `\$1.00`. Garis miring terbalik sebelum `$` lainnya dibiarkan tidak berubah. Hanya satu garis miring terbalik langsung sebelum token yang melepaskan. Garis miring terbalik ganda seperti `\\$1` meninggalkan kedua garis miring terbalik di tempat, dan `$1` masih berkembang ke nilai argumen. Pelarian garis miring terbalik hanya mencakup placeholder argumen ini. Garis miring terbalik tidak mencegah substitusi variabel `${CLAUDE_*}` di mana variabel berlaku.517Untuk menyertakan `$` literal sebelum digit, `ARGUMENTS`, atau nama argumen yang dideklarasikan, seperti `$1.00` dalam teks, escape dengan backslash: `\$1.00`. Backslash sebelum `$` lainnya dibiarkan tanpa perubahan. Hanya satu backslash tepat sebelum token yang meng-escape-nya. Backslash ganda seperti `\\$1` membiarkan kedua backslash di tempatnya, dan `$1` tetap diperluas menjadi nilai argumen. Escape backslash hanya mencakup placeholder argumen ini. Backslash tidak mencegah substitusi variabel `${CLAUDE_*}` di tempat variabel tersebut berlaku.

517 518 

518**Contoh menggunakan substitusi:**519**Contoh penggunaan substitusi:**

519 520 

520```yaml theme={null}521```yaml theme={null}

521---522---


529```530```

530 531 

531<h3 id="add-supporting-files">532<h3 id="add-supporting-files">

532 Tambahkan file pendukung533 Menambahkan file pendukung

533</h3>534</h3>

534 535 

535Skills dapat mencakup beberapa file dalam direktorinya. Ini membuat `SKILL.md` fokus pada hal-hal penting sambil membiarkan Claude mengakses materi referensi terperinci hanya saat diperlukan. Dokumen referensi besar, spesifikasi API, atau koleksi contoh tidak perlu dimuat ke dalam konteks setiap kali skill berjalan.536Skills dapat menyertakan beberapa file dalam direktorinya. Ini menjaga `SKILL.md` tetap fokus pada hal-hal penting sambil memungkinkan Claude mengakses materi referensi terperinci hanya saat dibutuhkan. Dokumen referensi besar, spesifikasi API, atau kumpulan contoh tidak perlu dimuat ke dalam konteks setiap kali skill dijalankan.

536 537 

537```text theme={null}538```text theme={null}

538my-skill/539my-skill/


543 └── helper.py (utility script - executed, not loaded)544 └── helper.py (utility script - executed, not loaded)

544```545```

545 546 

546Referensikan file pendukung dari `SKILL.md` sehingga Claude tahu apa yang berisi setiap file dan kapan memuatnya:547Referensikan file pendukung dari `SKILL.md` agar Claude tahu isi setiap file dan kapan harus memuatnya:

547 548 

548```markdown theme={null}549```markdown theme={null}

549## Additional resources550## Additional resources


555<Tip>Jaga `SKILL.md` di bawah 500 baris. Pindahkan materi referensi terperinci ke file terpisah.</Tip>556<Tip>Jaga `SKILL.md` di bawah 500 baris. Pindahkan materi referensi terperinci ke file terpisah.</Tip>

556 557 

557<h3 id="control-who-invokes-a-skill">558<h3 id="control-who-invokes-a-skill">

558 Kontrol siapa yang menginvokasi skill559 Mengontrol siapa yang memanggil skill

559</h3>560</h3>

560 561 

561Secara default, baik Anda maupun Claude dapat menginvokasi skill apa pun. Anda dapat mengetik `/skill-name` untuk menginvokasinya secara langsung, dan Claude dapat memuatnya secara otomatis ketika relevan dengan percakapan Anda. Dua bidang frontmatter memungkinkan Anda membatasi ini:562Secara default, Anda dan Claude sama-sama dapat memanggil skill apa pun. Anda dapat mengetik `/skill-name` untuk memanggilnya secara langsung, dan Claude dapat memuatnya secara otomatis ketika relevan dengan percakapan Anda. Dua field frontmatter memungkinkan Anda membatasi hal ini:

562 563 

563* **`disable-model-invocation: true`**: Hanya Anda yang dapat menginvokasi skill. Gunakan ini untuk alur kerja dengan efek samping atau yang ingin Anda kontrol waktunya, seperti `/commit`, `/deploy`, atau `/send-slack-message`. Anda tidak ingin Claude memutuskan untuk deploy karena kode Anda terlihat siap.564* **`disable-model-invocation: true`**: Hanya Anda yang dapat memanggil skill. Gunakan ini untuk alur kerja yang memiliki efek samping atau yang waktunya ingin Anda kontrol, seperti `/commit`, `/deploy`, atau `/send-slack-message`. Anda tidak ingin Claude memutuskan untuk men-deploy karena kode Anda terlihat siap.

564 565 

565* **`user-invocable: false`**: Hanya Claude yang dapat menginvokasi skill. Gunakan ini untuk pengetahuan latar belakang yang tidak dapat ditindaklanjuti sebagai perintah. Skill `legacy-system-context` menjelaskan cara kerja sistem lama. Claude harus tahu ini ketika relevan, tetapi `/legacy-system-context` bukan tindakan yang bermakna bagi pengguna untuk diambil.566* **`user-invocable: false`**: Hanya Claude yang dapat memanggil skill. Gunakan ini untuk pengetahuan latar belakang yang tidak dapat dijalankan sebagai perintah. Skill `legacy-system-context` menjelaskan cara kerja sistem lama. Claude perlu mengetahui hal ini ketika relevan, tetapi `/legacy-system-context` bukanlah tindakan yang bermakna bagi pengguna.

566 567 

567Contoh ini membuat skill deploy yang hanya dapat Anda picu. Jika Anda menetapkan `disable-model-invocation: true`, Claude tidak dapat menjalankan skill secara otomatis:568Contoh ini membuat skill deploy yang hanya dapat Anda picu. Jika Anda mengatur `disable-model-invocation: true`, Claude tidak dapat menjalankan skill secara otomatis:

568 569 

569```yaml theme={null}570```yaml theme={null}

570---571---


5814. Verify the deployment succeeded5824. Verify the deployment succeeded

582```583```

583 584 

584Jika Claude mencoba bagaimanapun, Claude Code memblokir panggilan dan menginstruksikan untuk tidak mereproduksi langkah deploy dengan cara lain, jadi harapkan Claude menyarankan menjalankan `/deploy` sendiri.585Jika Claude tetap mencobanya, Claude Code memblokir panggilan tersebut dan menginstruksikannya untuk tidak mereproduksi langkah-langkah deploy dengan cara lain, jadi Claude kemungkinan akan menyarankan Anda menjalankan `/deploy` sendiri.

585 586 

586Berikut adalah bagaimana dua bidang mempengaruhi invokasi dan pemuatan konteks:587Berikut cara kedua field tersebut memengaruhi pemanggilan dan pemuatan konteks:

587 588 

588| Frontmatter | You can invoke | Claude can invoke | When loaded into context |589| Frontmatter | Anda dapat memanggil | Claude dapat memanggil | Kapan dimuat ke dalam konteks |

589| :- | :- | :- | :- |590| :- | :- | :- | :- |

590| (default) | Yes | Yes | Description always in context, full skill loads when invoked |591| (default) | Ya | Ya | Deskripsi selalu dalam konteks, skill lengkap dimuat saat dipanggil |

591| `disable-model-invocation: true` | Yes | No | Description not in context, full skill loads when you invoke |592| `disable-model-invocation: true` | Ya | Tidak | Deskripsi tidak dalam konteks, skill lengkap dimuat saat Anda memanggilnya |

592| `user-invocable: false` | No | Yes | Description always in context, full skill loads when invoked |593| `user-invocable: false` | Tidak | Ya | Deskripsi selalu dalam konteks, skill lengkap dimuat saat dipanggil |

593 594 

594<Note>595<Note>

595 Dalam sesi reguler, deskripsi skill dimuat ke dalam konteks sehingga Claude tahu apa yang tersedia, tetapi konten skill penuh hanya dimuat saat diinvokasi. [Subagents dengan skill yang dimuat sebelumnya](/docs/id/sub-agents#preload-skills-into-subagents) bekerja berbeda: konten skill penuh disuntikkan saat startup.596 Dalam sesi biasa, deskripsi skill dimuat ke dalam konteks agar Claude tahu apa saja yang tersedia, tetapi konten skill lengkap hanya dimuat saat dipanggil. [Subagent dengan skill yang dimuat lebih dulu](/docs/id/sub-agents#preload-skills-into-subagents) bekerja secara berbeda: konten skill lengkap disuntikkan saat startup.

596</Note>597</Note>

597 598 

598<h3 id="skill-content-lifecycle">599<h3 id="skill-content-lifecycle">

599 Siklus hidup konten skill600 Siklus hidup konten skill

600</h3>601</h3>

601 602 

602Ketika Anda atau Claude menginvokasi skill, konten `SKILL.md` yang dirender memasuki percakapan sebagai pesan tunggal dan tetap ada di seluruh giliran kemudian. Persistensi ini berlaku untuk instruksi skill, bukan izinnya: hibah [`allowed-tools`](#pre-approve-tools-for-a-skill) dihapus ketika Anda mengirim pesan berikutnya. Claude Code tidak membaca ulang file skill pada giliran kemudian, jadi tulis panduan yang harus berlaku sepanjang tugas sebagai instruksi berdiri daripada langkah sekali jalan.603Ketika Anda atau Claude memanggil skill, konten `SKILL.md` yang telah dirender masuk ke percakapan sebagai satu pesan dan tetap berada di sana di sepanjang giliran berikutnya. Persistensi ini berlaku untuk instruksi skill, bukan izinnya: pemberian izin [`allowed-tools`](#pre-approve-tools-for-a-skill) dihapus ketika Anda mengirim pesan berikutnya. Claude Code tidak membaca ulang file skill pada giliran berikutnya, jadi tulis panduan yang harus berlaku di sepanjang tugas sebagai instruksi tetap, bukan langkah satu kali.

603 604 

604Ketika Claude menginvokasi ulang skill yang konten yang dirender identik dengan salinan yang sudah ada dalam konteks, Claude Code menambahkan catatan singkat bahwa skill sudah dimuat daripada salinan kedua konten. Ketika konten yang dirender berbeda, karena argumen berubah atau perintah [konteks dinamis](#inject-dynamic-context) menghasilkan output baru, Claude Code menambahkan konten penuh lagi.605Ketika Claude memanggil ulang skill yang konten hasil rendernya identik dengan salinan yang sudah ada dalam konteks, Claude Code menambahkan catatan singkat bahwa skill sudah dimuat alih-alih salinan kedua dari konten tersebut. Ketika konten hasil rendernya berbeda, karena argumen berubah atau perintah [konteks dinamis](#inject-dynamic-context) menghasilkan output baru, Claude Code menambahkan konten lengkap lagi.

605 606 

606[Auto-compaction](/docs/id/how-claude-code-works#when-context-fills-up) membawa skill yang diinvokasi maju dalam anggaran token. Ketika percakapan diringkas untuk membebaskan konteks, Claude Code melampirkan kembali invokasi paling baru dari setiap skill setelah ringkasan, menyimpan 5.000 token pertama dari masing-masing. Skill yang dilampirkan kembali berbagi anggaran gabungan 25.000 token. Claude Code mengisi anggaran ini mulai dari skill yang paling baru diinvokasi, jadi skill yang lebih lama dapat dijatuhkan sepenuhnya setelah compaction jika Anda telah menginvokasi banyak dalam satu sesi.607[Auto-compaction](/docs/id/how-claude-code-works#when-context-fills-up) membawa skill yang telah dipanggil ke depan dalam batas anggaran token. Ketika percakapan diringkas untuk mengosongkan konteks, Claude Code melampirkan kembali pemanggilan terbaru setiap skill setelah ringkasan, dengan mempertahankan 5.000 token pertama dari masing-masing skill. Skill yang dilampirkan kembali berbagi anggaran gabungan sebesar 25.000 token. Claude Code mengisi anggaran ini mulai dari skill yang paling baru dipanggil, sehingga skill yang lebih lama dapat dibuang sepenuhnya setelah compaction jika Anda telah memanggil banyak skill dalam satu sesi.

607 608 

608Jika skill tampak berhenti mempengaruhi perilaku setelah respons pertama, konten biasanya masih ada dan model memilih alat atau pendekatan lain. Perkuat deskripsi skill dan instruksi sehingga model terus menyukainya, atau gunakan [hooks](/docs/id/hooks) untuk menegakkan perilaku secara deterministik. Jika skill besar atau Anda menginvokasi beberapa skill lain setelahnya, reinvokasi setelah compaction untuk mengembalikan konten penuh.609Jika Claude berhenti mengikuti skill di tengah sesi, lihat [Claude berhenti mengikuti skill](#claude-stops-following-a-skill).

609 610 

610<h3 id="pre-approve-tools-for-a-skill">611<h3 id="pre-approve-tools-for-a-skill">

611 Pra-setujui tools untuk skill612 Menyetujui tool terlebih dahulu untuk skill

612</h3>613</h3>

613 614 

614Bidang `allowed-tools` memberikan izin untuk tools yang terdaftar selama giliran yang menginvokasi skill, sehingga Claude dapat menggunakannya tanpa meminta persetujuan Anda. Hibah dihapus ketika Anda mengirim pesan berikutnya, meskipun konten skill [tetap dalam konteks](#skill-content-lifecycle); menginvokasi skill lagi menerapkannya kembali untuk giliran itu. Ini tidak membatasi tools mana yang tersedia: setiap tool tetap dapat dipanggil, dan [pengaturan izin](/docs/id/permissions) Anda masih mengatur tools yang tidak terdaftar. Untuk pra-setujui tools untuk seluruh sesi daripada satu giliran, tambahkan aturan izin ke pengaturan izin tersebut.615Field `allowed-tools` memberikan izin untuk tool yang tercantum selama giliran yang memanggil skill, sehingga Claude dapat menggunakannya tanpa meminta persetujuan Anda. Pemberian izin ini dihapus ketika Anda mengirim pesan berikutnya, meskipun konten skill [tetap berada dalam konteks](#skill-content-lifecycle); memanggil skill lagi akan menerapkannya kembali untuk giliran tersebut. Field ini tidak membatasi tool mana yang tersedia: setiap tool tetap dapat dipanggil, dan [pengaturan izin](/docs/id/permissions) Anda tetap mengatur tool yang tidak tercantum. Untuk menyetujui tool terlebih dahulu untuk seluruh sesi alih-alih satu giliran, tambahkan aturan allow ke pengaturan izin tersebut.

615 616 

616Kepercayaan workspace tidak membatasi bidang ini. Claude Code menerapkan `allowed-tools` skill proyek bahkan dalam jalankan `-p` dalam folder yang belum pernah Anda percayai. Skill dapat memberikan dirinya akses tool yang luas, jadi tinjau `allowed-tools` skill yang diperiksa ke dalam repositori sebelum Anda menjalankan Claude Code di sana. Untuk menahan bidang ini dari skill repositori di seluruh organisasi Anda, lihat [Ketika hanya aturan izin terkelola yang berlaku](#when-only-managed-permission-rules-apply).617Kepercayaan workspace tidak membatasi field ini. Claude Code menerapkan `allowed-tools` dari skill proyek bahkan dalam eksekusi `-p` di folder yang belum pernah Anda percayai. Skill dapat memberikan dirinya sendiri akses tool yang luas, jadi tinjau `allowed-tools` dari skill yang di-commit ke repositori sebelum Anda menjalankan Claude Code di sana. Untuk menahan field ini dari skill repositori di seluruh organisasi Anda, lihat [Ketika hanya aturan izin terkelola yang berlaku](#when-only-managed-permission-rules-apply).

617 618 

618Skill ini memungkinkan Claude menjalankan perintah git tanpa persetujuan per-penggunaan kapan pun Anda menginvokasinya:619Skill ini memungkinkan Claude menjalankan perintah git tanpa persetujuan per penggunaan setiap kali Anda memanggilnya:

619 620 

620```yaml theme={null}621```yaml theme={null}

621---622---


626---627---

627```628```

628 629 

629Untuk menghapus tools dari pool tools yang tersedia Claude saat skill aktif, daftarkan dalam `disallowed-tools` dalam frontmatter skill. Pembatasan dihapus ketika Anda mengirim pesan berikutnya. Seperti aturan deny, bidang tidak dapat menghapus [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) saat tool lain tetap ada. Untuk memblokir tools di semua skills dan prompts, tambahkan aturan deny dalam [pengaturan izin](/docs/id/permissions) Anda.630Untuk menghapus tool dari kumpulan tool yang tersedia bagi Claude selama skill aktif, cantumkan tool tersebut dalam `disallowed-tools` di frontmatter skill. Pembatasan ini dihapus ketika Anda mengirim pesan berikutnya. Seperti aturan deny, field ini tidak dapat menghapus [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) selama masih ada tool lain. Untuk memblokir tool di semua skill dan prompt, tambahkan aturan deny dalam [pengaturan izin](/docs/id/permissions) Anda.

630 631 

631<h4 id="when-only-managed-permission-rules-apply">632<h4 id="when-only-managed-permission-rules-apply">

632 Ketika hanya aturan izin terkelola yang berlaku633 Ketika hanya aturan izin terkelola yang berlaku

633</h4>634</h4>

634 635 

635Ketika organisasi Anda menetapkan `allowManagedPermissionRulesOnly` dalam pengaturan terkelola, Claude Code mengabaikan `allowed-tools` dalam skill proyek dan pribadi serta dalam [sumber lain yang tercantum dalam entri pengaturan tersebut](/docs/id/settings-reference#allowmanagedpermissionrulesonly). Ini memerlukan Claude Code v2.1.282 atau lebih baru.636Ketika organisasi Anda mengatur `allowManagedPermissionRulesOnly` dalam pengaturan terkelola, Claude Code mengabaikan `allowed-tools` dalam skill proyek dan pribadi serta dalam [sumber lain yang tercantum dalam entri pengaturan tersebut](/docs/id/settings-reference#allowmanagedpermissionrulesonly). Ini memerlukan Claude Code v2.1.282 atau yang lebih baru.

636 637 

637Tools yang dicantumkan oleh skill yang terdampak akan melalui aturan terkelola organisasi Anda dan permintaan izin normal sebagai gantinya. Jalankan `/status` untuk menampilkan daftar setiap skill yang `allowed-tools`-nya telah diabaikan oleh Claude Code sejauh ini dalam sesi. Perintah yang diinjeksikan dalam skill yang tidak diizinkan oleh aturan terkelola mana pun mengikuti [Pemeriksaan izin pada perintah yang diinjeksikan](#permission-checks-on-injected-commands).638Tool yang tercantum dalam skill yang terdampak akan melalui aturan terkelola organisasi Anda dan permintaan izin normal. Jalankan `/status` untuk menampilkan daftar setiap skill yang `allowed-tools`-nya telah diabaikan Claude Code sejauh ini dalam sesi. Perintah yang disuntikkan dalam skill yang tidak diizinkan oleh aturan terkelola mana pun mengikuti [Pemeriksaan izin pada perintah yang disuntikkan](#permission-checks-on-injected-commands).

638 639 

639<h3 id="pass-arguments-to-skills">640<h3 id="pass-arguments-to-skills">

640 Teruskan argumen ke skills641 Meneruskan argumen ke skills

641</h3>642</h3>

642 643 

643Baik Anda maupun Claude dapat meneruskan argumen saat menginvokasi skill. Argumen tersedia melalui placeholder `$ARGUMENTS`.644Anda dan Claude sama-sama dapat meneruskan argumen saat memanggil skill. Argumen tersedia melalui placeholder `$ARGUMENTS`.

644 645 

645Skill ini memperbaiki masalah GitHub berdasarkan nomor. Placeholder `$ARGUMENTS` diganti dengan apa pun yang mengikuti nama skill:646Skill ini memperbaiki issue GitHub berdasarkan nomor. Placeholder `$ARGUMENTS` diganti dengan apa pun yang mengikuti nama skill:

646 647 

647```yaml theme={null}648```yaml theme={null}

648---649---


662 663 

663Ketika Anda menjalankan `/fix-issue 123`, Claude menerima "Fix GitHub issue 123 following our coding standards..."664Ketika Anda menjalankan `/fix-issue 123`, Claude menerima "Fix GitHub issue 123 following our coding standards..."

664 665 

665Jika Anda menginvokasi skill dengan argumen tetapi tidak ada placeholder dalam konten skill yang menerima satu, Claude Code menambahkan `ARGUMENTS: <your input>` ke akhir konten skill sehingga Claude masih melihat apa yang Anda ketik. Placeholder adalah `$ARGUMENTS`, bentuk yang diindeks seperti `$1`, atau argumen bernama. Placeholder yang diindeks tanpa argumen pada posisinya tetap sebagai teks literal dan tidak dihitung sebagai menerima satu. Placeholder bernama dihitung bahkan ketika posisinya tidak memiliki argumen, karena berkembang menjadi string kosong.666Jika Anda memanggil skill dengan argumen tetapi tidak ada placeholder dalam konten skill yang menerimanya, Claude Code menambahkan `ARGUMENTS: <your input>` ke akhir konten skill agar Claude tetap melihat apa yang Anda ketik. Placeholder adalah `$ARGUMENTS`, bentuk berindeks seperti `$1`, atau argumen bernama. Placeholder berindeks tanpa argumen di posisinya tetap sebagai teks literal dan tidak dihitung sebagai menerima argumen. Placeholder bernama tetap dihitung meskipun posisinya tidak memiliki argumen, karena diperluas menjadi string kosong.

666 667 

667Anda juga dapat menumpuk beberapa skills di awal satu pesan. Mengetik `/write-tests /fix-issue 123` memuat kedua skills dan meneruskan teks trailing `123` sebagai `$ARGUMENTS` ke masing-masing. Sebelum v2.1.199, hanya skill pertama yang dimuat dan menerima `/fix-issue 123` sebagai teks argumen literal.668Anda juga dapat menumpuk beberapa skill di awal satu pesan. Mengetik `/write-tests /fix-issue 123` memuat kedua skill dan meneruskan teks di belakangnya, `123`, sebagai `$ARGUMENTS` ke masing-masing skill.

668 669 

669Claude Code memperluas skill pertama ditambah hingga lima lagi yang ditumpuk setelahnya. Ekspansi berhenti pada token pertama yang bukan skill yang dapat diinvokasi pengguna inline, jadi skill yang berjalan sebagai [subagent yang bercabang](#run-skills-in-a-subagent), seperti [`/code-review`](/docs/id/code-review#review-a-diff-locally), atau yang argumennya sendiri mungkin dimulai dengan perintah slash, seperti `/loop`, juga berakhir di sana. Token itu dan segalanya setelahnya menjadi teks argumen untuk setiap skill yang diperluas. `/code-review` berjalan sebagai subagent yang bercabang dari v2.1.218; pada versi sebelumnya itu berjalan inline dan ditumpuk.670Claude Code memperluas skill pertama ditambah hingga lima skill lagi yang ditumpuk setelahnya. Perluasan berhenti pada token pertama yang bukan skill inline yang dapat dipanggil pengguna, sehingga skill yang berjalan sebagai [subagent hasil fork](#run-skills-in-a-subagent), seperti [`/code-review`](/docs/id/code-review#review-a-diff-locally), atau skill yang argumennya sendiri dapat diawali dengan perintah garis miring, seperti `/loop`, juga mengakhiri rangkaian di sana. Token tersebut dan semua yang mengikutinya menjadi teks argumen untuk setiap skill yang diperluas. `/code-review` berjalan sebagai subagent hasil fork sejak v2.1.218; pada versi sebelumnya, skill ini berjalan inline dan dapat ditumpuk.

670 671 

671Untuk mengakses argumen individual berdasarkan posisi, gunakan `$ARGUMENTS[N]` atau yang lebih pendek `$N`:672Untuk mengakses argumen individual berdasarkan posisi, gunakan `$ARGUMENTS[N]` atau bentuk yang lebih pendek `$N`:

672 673 

673```yaml theme={null}674```yaml theme={null}

674---675---


680Preserve all existing behavior and tests.681Preserve all existing behavior and tests.

681```682```

682 683 

683Menjalankan `/migrate-component SearchBar JavaScript TypeScript` menggantikan `$ARGUMENTS[0]` dengan `SearchBar`, `$ARGUMENTS[1]` dengan `JavaScript`, dan `$ARGUMENTS[2]` dengan `TypeScript`. Skill yang sama menggunakan shorthand `$N`:684Menjalankan `/migrate-component SearchBar JavaScript TypeScript` mengganti `$ARGUMENTS[0]` dengan `SearchBar`, `$ARGUMENTS[1]` dengan `JavaScript`, dan `$ARGUMENTS[2]` dengan `TypeScript`. Skill yang sama menggunakan singkatan `$N`:

684 685 

685```yaml theme={null}686```yaml theme={null}

686---687---


923 924 

924Menu `/skills` memberi label status `"user-invocable-only"` `user-only`.925Menu `/skills` memberi label status `"user-invocable-only"` `user-only`.

925 926 

926Sejak v2.1.199, `"off"` juga menyembunyikan skill dari daftar perintah yang diiklankan ke klien [Remote Control](/docs/id/remote-control) dan ke pemanggil [Agent SDK](/docs/id/agent-sdk/skills#discover-available-commands), selain menu `/` terminal. Menginvokasi skill tersembunyi dengan nama lengkapnya masih mengembalikan kesalahan `skillOverrides` alih-alih menjalankannya.927`"off"` juga menyembunyikan skill dari daftar perintah yang diiklankan ke klien [Remote Control](/docs/id/remote-control) dan ke pemanggil [Agent SDK](/docs/id/agent-sdk/skills#discover-available-commands), selain menu `/` terminal. Menginvokasi skill tersembunyi dengan nama lengkapnya mengembalikan kesalahan `skillOverrides` alih-alih menjalankannya.

927 928 

928Skill yang tidak ada dalam `skillOverrides` diperlakukan sebagai `"on"`. Contoh di bawah ini menciutkan satu skill menjadi namanya dan mematikan yang lain sepenuhnya:929Skill yang tidak ada dalam `skillOverrides` diperlakukan sebagai `"on"`. Contoh di bawah ini menciutkan satu skill menjadi namanya dan mematikan yang lain sepenuhnya:

929 930 

sub-agents.md +2 −2

Details

986 986 

987Ketika sesuatu [memotong respons subagent di tengah-aliran](/docs/id/errors#the-response-above-may-be-incomplete), dan respons parsial berisi teks tetapi tidak ada panggilan tool, Claude Code meminta subagent untuk melanjutkan daripada mengakhiri run. Ini terjadi dalam sesi interaktif juga. Run berakhir pada kesalahan hanya setelah kelanjutan itu habis.987Ketika sesuatu [memotong respons subagent di tengah-aliran](/docs/id/errors#the-response-above-may-be-incomplete), dan respons parsial berisi teks tetapi tidak ada panggilan tool, Claude Code meminta subagent untuk melanjutkan daripada mengakhiri run. Ini terjadi dalam sesi interaktif juga. Run berakhir pada kesalahan hanya setelah kelanjutan itu habis.

988 988 

989Mulai dari v2.1.199, subagent yang run-nya berakhir pada kesalahan API, seperti batas penggunaan atau kesalahan server berulang, melaporkan kegagalan itu kembali ke Claude daripada mengembalikan teks kesalahan seolah-olah itu adalah temuan subagent. Apa yang Claude terima tergantung di mana subagent berjalan:989Subagent yang run-nya berakhir pada kesalahan API, seperti batas penggunaan atau kesalahan server berulang, melaporkan kegagalan itu kembali ke Claude. Apa yang Claude terima tergantung di mana subagent berjalan:

990 990 

991* **Foreground**: jika rate limit, kelebihan beban, atau kesalahan server memotong subagent yang sudah menghasilkan output teks, tool Agent mengembalikan output parsial itu dengan catatan bahwa subagent dipotong dan tidak menyelesaikan tugasnya. Subagent yang tidak menghasilkan apa pun, atau yang output-nya hanya panggilan tool, gagal dengan [`Agent terminated early due to an API error`](/docs/id/errors#agent-terminated-early-due-to-an-api-error), diikuti oleh detail kesalahan. Dalam v2.1.199, rate limit, kelebihan beban, atau kesalahan server yang memotong bentuk tool-calls-only mengembalikan hasil parsial kosong yang hanya berisi catatan cut-off sebagai gantinya.991* **Foreground**: jika rate limit, kelebihan beban, atau kesalahan server memotong subagent yang sudah menghasilkan output teks, tool Agent mengembalikan output parsial itu dengan catatan bahwa subagent dipotong dan tidak menyelesaikan tugasnya. Subagent yang tidak menghasilkan apa pun, atau yang output-nya hanya panggilan tool, gagal dengan [`Agent terminated early due to an API error`](/docs/id/errors#agent-terminated-early-due-to-an-api-error), diikuti oleh detail kesalahan. Dalam v2.1.199, rate limit, kelebihan beban, atau kesalahan server yang memotong bentuk tool-calls-only mengembalikan hasil parsial kosong yang hanya berisi catatan cut-off sebagai gantinya.

992* **Background**: subagent ditandai gagal, dan pesan yang Claude terima saat berakhir menyebutkan kesalahan API dan menyertakan output terakhir subagent, jadi pekerjaan parsial tidak hilang.992* **Background**: subagent ditandai gagal, dan pesan yang Claude terima saat berakhir menyebutkan kesalahan API dan menyertakan output terakhir subagent, jadi pekerjaan parsial tidak hilang.


1188 1188 

1189Melanjutkan memulai run baru dari agent di bawah ID yang sama, jadi subagent yang sudah gagal atau selesai menunjukkan sebagai berjalan lagi dalam daftar tugas dan dalam peristiwa tugas Agent SDK. Sebelum v2.1.205, itu terus menunjukkan status gagal atau selesai sebelumnya sementara run yang dilanjutkan sedang bekerja.1189Melanjutkan memulai run baru dari agent di bawah ID yang sama, jadi subagent yang sudah gagal atau selesai menunjukkan sebagai berjalan lagi dalam daftar tugas dan dalam peristiwa tugas Agent SDK. Sebelum v2.1.205, itu terus menunjukkan status gagal atau selesai sebelumnya sementara run yang dilanjutkan sedang bekerja.

1190 1190 

1191Mulai dari v2.1.199, `SendMessage` memeriksa bahwa nama masih merujuk ke agent yang sama yang dicapai sebelumnya dalam percakapan. Jika agent yang lebih baru telah mengambil nama, seperti agent background yang di-spawn ulang yang menggunakannya kembali, Claude Code menolak pengiriman daripada mengirimkannya ke agent yang salah, dan kesalahan melaporkan agent mana yang sekarang dicapai nama sehingga Claude dapat menargetkan ulang. Untuk mencapai agent sebelumnya sementara masih berjalan, Claude mengalamatkannya dengan ID agent yang diterima saat menghasilkan agent itu. Pemeriksaan dibatasi pada percakapan saat ini dan direset pada `/clear`.1191`SendMessage` memeriksa bahwa nama masih merujuk ke agent yang sama yang dicapai sebelumnya dalam percakapan. Jika agent yang lebih baru telah mengambil nama, seperti agent background yang di-spawn ulang yang menggunakannya kembali, Claude Code menolak pengiriman daripada mengirimkannya ke agent yang salah, dan kesalahan melaporkan agent mana yang sekarang dicapai nama sehingga Claude dapat menargetkan ulang. Untuk mencapai agent sebelumnya sementara masih berjalan, Claude mengalamatkannya dengan ID agent yang diterima saat menghasilkan agent itu. Pemeriksaan dibatasi pada percakapan saat ini dan direset pada `/clear`.

1192 1192 

1193Subagent memperlakukan pesan dari agent yang meluncurkannya sebagai arahan tugas normal, termasuk koreksi arah di tengah tugas, dan bertindak atas pesan tersebut dalam pengaturan izinnya sendiri. Dua batas tetap berlaku terlepas dari siapa yang mengirim pesan: tidak ada pesan dari agent apa pun yang dihitung sebagai persetujuan Anda untuk permintaan izin yang tertunda, dan tidak ada pesan agent yang dapat mengubah pengaturan izin subagent, `CLAUDE.md`, atau konfigurasi. Hanya sistem izin atau pesan Anda sendiri yang dapat memberikan persetujuan.1193Subagent memperlakukan pesan dari agent yang meluncurkannya sebagai arahan tugas normal, termasuk koreksi arah di tengah tugas, dan bertindak atas pesan tersebut dalam pengaturan izinnya sendiri. Dua batas tetap berlaku terlepas dari siapa yang mengirim pesan: tidak ada pesan dari agent apa pun yang dihitung sebagai persetujuan Anda untuk permintaan izin yang tertunda, dan tidak ada pesan agent yang dapat mengubah pengaturan izin subagent, `CLAUDE.md`, atau konfigurasi. Hanya sistem izin atau pesan Anda sendiri yang dapat memberikan persetujuan.

1194 1194 

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