SpyBara
Go Premium

Documentation 2026-10-01 23:59 UTC to 2026-10-02 02:02 UTC

36 files changed +2,429 −2,071. View all changes and history on the product overview
2026
Fri 2 03:00 Thu 1 23:59

accessibility.md +11 −5

Details

44| [`CLAUDE_AX_SCREEN_READER`](/docs/id/env-vars#variables) | Variabel lingkungan | Mode pembaca layar untuk sesi yang dimulai dari shell tempat Anda menetapkannya. |44| [`CLAUDE_AX_SCREEN_READER`](/docs/id/env-vars#variables) | Variabel lingkungan | Mode pembaca layar untuk sesi yang dimulai dari shell tempat Anda menetapkannya. |

45| [`axScreenReader`](/docs/id/settings-reference#axscreenreader) | Pengaturan | Mode pembaca layar untuk setiap sesi ketika `true`. |45| [`axScreenReader`](/docs/id/settings-reference#axscreenreader) | Pengaturan | Mode pembaca layar untuk setiap sesi ketika `true`. |

46| [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/id/env-vars#variables) | Variabel lingkungan | Berapa lama Claude Code menunggu setelah baris konfirmasi sebelum menggambar prompt pertama dalam mode pembaca layar. Memerlukan Claude Code v2.1.217 atau lebih baru. |46| [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/id/env-vars#variables) | Variabel lingkungan | Berapa lama Claude Code menunggu setelah baris konfirmasi sebelum menggambar prompt pertama dalam mode pembaca layar. Memerlukan Claude Code v2.1.217 atau lebih baru. |

47| [`CLAUDE_AX_PREPARK_MS`](/docs/id/env-vars#variables) | Variabel lingkungan | Berapa lama Claude Code menunggu, dengan kursor di awal baris, sebelum menulis baris baru atau berubah dalam mode pembaca layar. Memerlukan Claude Code v2.1.233 atau lebih baru. |47| [`CLAUDE_AX_PREPARK_MS`](/docs/id/env-vars#variables) | Environment variable | Ketika Anda menetapkannya, berapa milidetik Claude Code menahan kursor terminal di awal baris saat ini sebelum menulis baris baru atau berubah dalam mode pembaca layar. Memerlukan Claude Code v2.1.233 atau lebih baru. |

48| [`CLAUDE_CODE_ACCESSIBILITY`](/docs/id/env-vars#variables) | Variabel lingkungan | Kursor terminal yang tetap terlihat untuk pembesar layar seperti macOS Zoom ketika Anda menetapkannya ke `1`. Kursor mengikuti tanda sisip input dan, pada Claude Code v2.1.218 atau lebih baru, baris yang disorot dalam menu dan panel seperti `/config` dan `/plugin`. |48| [`CLAUDE_CODE_ACCESSIBILITY`](/docs/id/env-vars#variables) | Variabel lingkungan | Kursor terminal yang tetap terlihat untuk pembesar layar seperti macOS Zoom ketika Anda menetapkannya ke `1`. Kursor mengikuti tanda sisip input dan, pada Claude Code v2.1.218 atau lebih baru, baris yang disorot dalam menu dan panel seperti `/config` dan `/plugin`. |

49| [`prefersReducedMotion`](/docs/id/settings-reference#prefersreducedmotion) | Pengaturan | Spinner, shimmer, dan animasi lainnya berkurang atau tidak ada ketika `true`. |49| [`prefersReducedMotion`](/docs/id/settings-reference#prefersreducedmotion) | Pengaturan | Spinner, shimmer, dan animasi lainnya berkurang atau tidak ada ketika `true`. |

50| [`theme`](/docs/id/settings-reference#theme) | Pengaturan | Warna antarmuka, termasuk tema ramah buta warna `dark-daltonized` dan `light-daltonized`. Anda juga dapat memilih salah satu dengan [`/theme`](/docs/id/commands#all-commands). |50| [`theme`](/docs/id/settings-reference#theme) | Pengaturan | Warna antarmuka, termasuk tema ramah buta warna `dark-daltonized` dan `light-daltonized`. Anda juga dapat memilih salah satu dengan [`/theme`](/docs/id/commands#all-commands). |


60* Tidak ada petunjuk berbasis warna saja60* Tidak ada petunjuk berbasis warna saja

61* Tidak ada penggambaran ulang konten yang belum berubah. Spinner kemajuan ditampilkan sebagai teks statis61* Tidak ada penggambaran ulang konten yang belum berubah. Spinner kemajuan ditampilkan sebagai teks statis

62* Tabel dalam balasan Claude dibaca sebagai kalimat `Header: value` alih-alih kisi karakter kotak62* Tabel dalam balasan Claude dibaca sebagai kalimat `Header: value` alih-alih kisi karakter kotak

63* Diff dibaca sebagai teks biasa, baris demi baris dengan `+` dan `-` yang menandai baris yang ditambahkan dan dihapus, sehingga Anda dapat mendengar perubahan yang diusulkan dalam dialog persetujuan pengeditan file sebelum Anda menjawabnya

63 64 

64Claude Code meninggalkan semua yang dicetak di scrollback terminal Anda, sehingga Anda dapat membaca kembali giliran sebelumnya dengan perintah tinjauan pembaca layar Anda atau pencarian terminal Anda. Claude Code mengabaikan pengaturan [`tui`](/docs/id/settings-reference#tui) dalam mode pembaca layar. Terlepas dari sesi latar belakang terlampir yang tercantum di bawah [Batasan yang diketahui](#known-limitations), ia mencetak teks bergulir alih-alih [rendering layar penuh](/docs/id/fullscreen).65Claude Code meninggalkan semua yang dicetak di scrollback terminal Anda, sehingga Anda dapat membaca kembali giliran sebelumnya dengan perintah tinjauan pembaca layar Anda atau pencarian terminal Anda. Claude Code mengabaikan pengaturan [`tui`](/docs/id/settings-reference#tui) dalam mode pembaca layar. Terlepas dari sesi latar belakang terlampir yang tercantum di bawah [Batasan yang diketahui](#known-limitations), ia mencetak teks bergulir alih-alih [rendering layar penuh](/docs/id/fullscreen).

65 66 

66Claude Code juga menunggu di dua titik sehingga pembaca layar Anda dapat mengikuti:67Setelah Claude Code mencetak [baris konfirmasi](#turn-on-screen-reader-mode) saat startup, ia menunggu 3 detik sebelum menggambar prompt, sehingga pembaca layar Anda dapat menyelesaikan baris tersebut. Tekan tombol apa pun untuk mengakhiri penantian. Untuk mengubah panjang penantian, atur [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/id/env-vars#variables).

67 

68* Setelah Claude Code mencetak baris konfirmasi, ia menunggu 3 detik sebelum menggambar prompt, sehingga pembaca layar Anda dapat menyelesaikan baris. Tekan tombol apa pun untuk mengakhiri penantian. Untuk mengubah panjang penantian, atur [`CLAUDE_AX_STARTUP_QUIET_MS`](/docs/id/env-vars#variables).

69* Sebelum Claude Code menulis baris baru atau berubah, seperti petunjuk atau lebih banyak balasan Claude, ia memindahkan kursor ke awal baris dan menunggu 50 milidetik. Pembaca layar Anda kemudian membaca baris dari karakter pertamanya. Karakter yang Anda ketik atau hapus di akhir baris input muncul segera. Untuk mengubah panjang penantian, atur [`CLAUDE_AX_PREPARK_MS`](/docs/id/env-vars#variables).

70 68 

71Setiap pesan dalam transkrip dimulai dengan label yang diumumkan pembaca layar Anda, menamai apa itu: pesan Anda, balasan dan pemikiran Claude, aktivitas alat, kesalahan dan peringatan, serta prompt. Label juga dapat dicari, sehingga Anda dapat melompat antar bagian transkrip dengan mencari scrollback terminal Anda:69Setiap pesan dalam transkrip dimulai dengan label yang diumumkan pembaca layar Anda, menamai apa itu: pesan Anda, balasan dan pemikiran Claude, aktivitas alat, kesalahan dan peringatan, serta prompt. Label juga dapat dicari, sehingga Anda dapat melompat antar bagian transkrip dengan mencari scrollback terminal Anda:

72 70 


94 92 

95Ketika Anda mengubah [mode izin](/docs/id/permission-modes) dengan `Shift+Tab`, Claude Code mengumumkan mode izin yang Anda mendarat, seperti `[plan mode on]` atau `[accept edits on]`. Claude Code mencetak pengumuman sekali dan tidak mengulanginya pada penggambaran ulang nanti.93Ketika Anda mengubah [mode izin](/docs/id/permission-modes) dengan `Shift+Tab`, Claude Code mengumumkan mode izin yang Anda mendarat, seperti `[plan mode on]` atau `[accept edits on]`. Claude Code mencetak pengumuman sekali dan tidak mengulanginya pada penggambaran ulang nanti.

96 94 

95<h3 id="read-earlier-output-without-losing-your-place">

96 Membaca output sebelumnya tanpa kehilangan posisi Anda

97</h3>

98 

99Jika pembaca layar Anda melompat kembali ke prompt saat Anda sedang membaca output sebelumnya, itu karena pembaca layar mengikuti kursor terminal. Claude Code memindahkan kursor terminal kembali ke prompt setiap kali menulis teks baru.

100 

101Untuk mempertahankan posisi Anda saat membaca, hentikan pembaca layar Anda agar tidak mengikuti kursor terminal. Di NVDA, tekan `NVDA+6` untuk menghentikan kursor tinjauan agar tidak mengikuti kursor terminal. Tekan `NVDA+6` lagi untuk mengaktifkan kembali fitur mengikuti.

102 

97<h3 id="jump-between-turns">103<h3 id="jump-between-turns">

98 Melompat antar giliran104 Melompat antar giliran

99</h3>105</h3>

Details

325 325 

326Beberapa strategi untuk long-running agents:326Beberapa strategi untuk long-running agents:

327 327 

328* **Gunakan subagents untuk subtasks.** Setiap subagent dimulai dengan fresh conversation (tidak ada prior message history, meskipun dimuat system prompt dan project-level context seperti CLAUDE.md sendiri). Ini tidak melihat parent's turns, dan hanya final responsenya kembali ke parent sebagai tool result. Main agent's context tumbuh oleh summary itu, bukan oleh full subtask transcript. Lihat [What subagents inherit](/docs/id/agent-sdk/subagents#what-subagents-inherit) untuk details.328* **Gunakan subagent untuk subtugas.** Setiap subagent dimulai dengan percakapan baru (tanpa riwayat pesan sebelumnya, meskipun subagent tetap memuat system prompt-nya sendiri dan konteks tingkat proyek seperti CLAUDE.md). Subagent tidak melihat giliran milik induknya, dan hanya respons akhirnya yang dikembalikan ke induk. Konteks agent utama bertambah sebesar ringkasan tersebut, bukan sebesar transkrip subtugas lengkap. Lihat [Apa yang diwarisi subagent](/docs/id/agent-sdk/subagents#what-subagents-inherit) untuk detailnya.

329* **Jadilah selective dengan tools.** Setiap tool definition mengambil context space. Gunakan field `tools` pada [`AgentDefinition`](/docs/id/agent-sdk/subagents#agentdefinition-configuration) untuk scope subagents ke minimum set yang mereka butuhkan.329* **Jadilah selective dengan tools.** Setiap tool definition mengambil context space. Gunakan field `tools` pada [`AgentDefinition`](/docs/id/agent-sdk/subagents#agentdefinition-configuration) untuk scope subagents ke minimum set yang mereka butuhkan.

330* **Perhatikan MCP server costs.** [MCP tool search](/docs/id/agent-sdk/mcp#mcp-tool-search) menunda MCP tool schemas secara default dan memuat mereka on demand. Ketika tool search dimatikan atau telah kembali ke upfront loading, setiap MCP server menambahkan semua tool schemas-nya ke setiap request, jadi beberapa servers dengan banyak tools dapat mengkonsumsi significant context sebelum agent melakukan pekerjaan apa pun. Lihat [Configure tool search](/docs/id/agent-sdk/tool-search#configure-tool-search) untuk configurations di mana fallback berlaku.330* **Perhatikan MCP server costs.** [MCP tool search](/docs/id/agent-sdk/mcp#mcp-tool-search) menunda MCP tool schemas secara default dan memuat mereka on demand. Ketika tool search dimatikan atau telah kembali ke upfront loading, setiap MCP server menambahkan semua tool schemas-nya ke setiap request, jadi beberapa servers dengan banyak tools dapat mengkonsumsi significant context sebelum agent melakukan pekerjaan apa pun. Lihat [Configure tool search](/docs/id/agent-sdk/tool-search#configure-tool-search) untuk configurations di mana fallback berlaku.

331* **Gunakan lower effort untuk routine tasks.** Set [effort](#effort-level) ke `"low"` untuk agents yang hanya perlu membaca files atau list directories. Ini mengurangi token usage dan cost.331* **Gunakan lower effort untuk routine tasks.** Set [effort](#effort-level) ke `"low"` untuk agents yang hanya perlu membaca files atau list directories. Ini mengurangi token usage dan cost.

Details

1488Gunakan dengan field `betas` dalam `ClaudeAgentOptions` untuk mengaktifkan fitur beta.1488Gunakan dengan field `betas` dalam `ClaudeAgentOptions` untuk mengaktifkan fitur beta.

1489 1489 

1490<Warning>1490<Warning>

1491 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan header ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, atau Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), yang mencakup konteks 1M pada harga standar tanpa header beta yang diperlukan.1491 Pada Claude API, beta `context-1m-2025-08-07` sudah pensiun untuk Claude Sonnet 4.5 dan Claude Sonnet 4. Jika Anda masih meneruskannya dengan salah satu model tersebut, permintaan yang melebihi context window standar 200K token akan mengembalikan error, jadi hapus beta tersebut dari `betas`. Untuk menjalankan sesi dengan context window 1M token, atur `model` ke model yang [berjalan dengan window 1M secara default](/docs/id/model-config#extended-context), seperti `claude-sonnet-5-5` atau `claude-opus-5-5`. Untuk model yang mencapai 1M hanya melalui varian `[1m]`-nya, tambahkan sufiks tersebut ke ID model, seperti pada `claude-opus-4-6[1m]`.

1492</Warning>1492</Warning>

1493 1493 

1494<h3 id="mcpsdkserverconfig">1494<h3 id="mcpsdkserverconfig">

Details

166 166 

167Ketika Anda menjalankan contoh, versi TypeScript mencetak setiap respons saat selesai. Loop `receive_response()` versi Python berakhir pada pesan hasil pertama, jadi mencetak analisis keamanan; untuk membaca kedua respons, gunakan satu pasangan `query()` dan `receive_response()` per pesan seperti yang ditunjukkan dalam [contoh referensi Python tentang melanjutkan percakapan](/docs/id/agent-sdk/python#example-continuing-a-conversation).167Ketika Anda menjalankan contoh, versi TypeScript mencetak setiap respons saat selesai. Loop `receive_response()` versi Python berakhir pada pesan hasil pertama, jadi mencetak analisis keamanan; untuk membaca kedua respons, gunakan satu pasangan `query()` dan `receive_response()` per pesan seperti yang ditunjukkan dalam [contoh referensi Python tentang melanjutkan percakapan](/docs/id/agent-sdk/python#example-continuing-a-conversation).

168 168 

169Jika `source` dari sebuah blok gambar tidak ada atau bukan berupa objek, SDK tidak melaporkan kesalahan. Claude Code mengirimkan catatan teks kepada Claude sebagai pengganti gambar, seperti `[Image could not be processed: image block has no source object]`, dan sesi tetap berlanjut.

170 

169<Note>171<Note>

170 Dalam TypeScript SDK, jika generator pesan Anda melempar kesalahan, misalnya ketika file yang dibacanya hilang, aliran berakhir dengan kesalahan yang berbunyi `Claude Code process aborted by user` alih-alih kesalahan asli, jadi periksa kode di dalam generator Anda terlebih dahulu ketika Anda melihat pesan itu. Kesalahan juga dapat didahului oleh baris minified panjang dari sumber SDK bundel, jadi baca hingga akhir output untuk teks kesalahan.172 Dalam TypeScript SDK, jika generator pesan Anda melempar kesalahan, misalnya ketika file yang dibacanya hilang, aliran berakhir dengan kesalahan yang berbunyi `Claude Code process aborted by user` alih-alih kesalahan asli, jadi periksa kode di dalam generator Anda terlebih dahulu ketika Anda melihat pesan itu. Kesalahan juga dapat didahului oleh baris minified panjang dari sumber SDK bundel, jadi baca hingga akhir output untuk teks kesalahan.

171 173 

Details

204| Definisi alat (diwariskan dari induk atau subset dalam `tools`, [disaring untuk background runs](/docs/id/sub-agents#available-tools)) | Prompt sistem induk |204| Definisi alat (diwariskan dari induk atau subset dalam `tools`, [disaring untuk background runs](/docs/id/sub-agents#available-tools)) | Prompt sistem induk |

205 205 

206<Note>206<Note>

207 Induk menerima pesan terakhir subagent sebagai hasil alat Agent, tetapi dapat merangkumnya dalam respons miliknya sendiri. Untuk mempertahankan output subagent verbatim dalam respons yang menghadap pengguna, sertakan instruksi untuk melakukannya dalam prompt atau opsi `systemPrompt` yang Anda teruskan ke panggilan `query()` utama.207 Induk menerima laporan akhir subagent, tetapi dapat merangkumnya dalam respons miliknya sendiri. Untuk mempertahankan output subagent verbatim dalam respons yang menghadap pengguna, sertakan instruksi untuk melakukannya dalam prompt atau opsi `systemPrompt` yang Anda teruskan ke panggilan `query()` utama.

208 208 

209 Dalam v2.1.210 dan yang lebih baru, Claude Code [memindai pesan terakhir untuk pola berbentuk instruksi](/docs/id/sub-agents#subagent-output-scanning) sebelum induk membacanya. Pemindaian memperlakukan tiga jenis pola secara berbeda:209 Dalam v2.1.210 dan yang lebih baru, Claude Code [memindai pesan terakhir untuk pola berbentuk instruksi](/docs/id/sub-agents#subagent-output-scanning) sebelum induk membacanya. Pemindaian memperlakukan tiga jenis pola secara berbeda:

210 210 

Details

1593 1593 

1594Pada pesan yang membawa blok `tool_result`, `tool_use_result` adalah objek output terstruktur alat daripada teks yang dikirim ke model. Bentuknya tergantung pada alat yang dinamai oleh blok `tool_use` yang cocok, jadi bidang diketik `unknown`; bentuk bawaan tercantum di bawah [Jenis Output Alat](#tool-output-types).1594Pada pesan yang membawa blok `tool_result`, `tool_use_result` adalah objek output terstruktur alat daripada teks yang dikirim ke model. Bentuknya tergantung pada alat yang dinamai oleh blok `tool_use` yang cocok, jadi bidang diketik `unknown`; bentuk bawaan tercantum di bawah [Jenis Output Alat](#tool-output-types).

1595 1595 

1596Untuk alat `Agent`, `tool_use_result` adalah [`AgentOutput`](#agent-2). Pada hasil `completed`, `content` menyimpan laporan subagen tanpa ID agen dan trailer penggunaan yang Claude Code tambahkan ke teks `tool_result`, jadi render dari `tool_use_result` daripada mengurai teks itu.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.

1597 1597 

1598Untuk alat MCP yang hasilnya berisi blok `resource_link`, `tool_use_result` adalah objek dengan array `resourceLinks` dari entri [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude menerima setiap tautan sebagai baris teks dalam blok `tool_result`, jadi baca `resourceLinks` untuk merender file yang dikembalikan server daripada mengurai teks itu. Claude Code menghilangkan `resourceLinks` ketika hasil tidak memiliki tautan dan pada hasil dari subagen, menyimpan paling banyak 50 tautan per hasil, dan berhenti menambahkan tautan setelah array mencapai 64 KiB JSON terserialkan. `resourceLinks` memerlukan Agent SDK v0.3.257 atau lebih baru.1598Untuk alat MCP yang hasilnya berisi blok `resource_link`, `tool_use_result` adalah objek dengan array `resourceLinks` dari entri [`SDKMcpResourceLink`](#sdkmcpresourcelink). Claude menerima setiap tautan sebagai baris teks dalam blok `tool_result`, jadi baca `resourceLinks` untuk merender file yang dikembalikan server daripada mengurai teks itu. Claude Code menghilangkan `resourceLinks` ketika hasil tidak memiliki tautan dan pada hasil dari subagen, menyimpan paling banyak 50 tautan per hasil, dan berhenti menambahkan tautan setelah array mencapai 64 KiB JSON terserialkan. `resourceLinks` memerlukan Agent SDK v0.3.257 atau lebih baru.

1599 1599 


5092 5092 

5093| Nilai | Kunci yang digunakan |5093| Nilai | Kunci yang digunakan |

5094| - | - |5094| - | - |

5095| `ANTHROPIC_API_KEY` | Kunci dalam variabel lingkungan `ANTHROPIC_API_KEY` |5095| `ANTHROPIC_API_KEY` | Kunci dalam environment variable `ANTHROPIC_API_KEY` |

5096| `apiKeyHelper` | Kunci yang dikembalikan oleh perintah [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) Anda |5096| `apiKeyHelper` | Kunci yang dikembalikan oleh perintah [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) Anda |

5097| `/login managed key` | Kunci yang disimpan Claude Code ketika Anda masuk dengan akun [Claude Console](/docs/id/authentication#claude-console-authentication) |5097| `/login managed key` | Kunci yang disimpan Claude Code ketika Anda masuk dengan [akun Claude Console](/docs/id/authentication#claude-console-authentication) |

5098| `none` | Tidak ada kunci API. Sesi mengautentikasi dengan cara lain, seperti login claude.ai, token bearer, atau penyedia cloud |5098| `none` | Tidak ada kunci API. Sesi mengautentikasi dengan cara lain, seperti login claude.ai, token bearer, atau penyedia cloud |

5099 5099 

5100Agent SDK v0.3.234 dan yang lebih baru mencantumkan empat nilai ini dalam tipe. Tipe juga menyimpan `user`, `project`, `org`, `temporary`, dan `oauth` sehingga kode yang lebih lama masih dikompilasi, dan Claude Code tidak melaporkannya.5100Agent SDK v0.3.234 dan yang lebih baru mencantumkan empat nilai ini dalam tipe. Tipe juga menyimpan `user`, `project`, `org`, `temporary`, dan `oauth` sehingga kode yang lebih lama masih dapat dikompilasi, dan Claude Code tidak melaporkannya.

5101 5101 

5102<h3 id="sdkbeta">5102<h3 id="sdkbeta">

5103 `SdkBeta`5103 `SdkBeta`


5110```5110```

5111 5111 

5112<Warning>5112<Warning>

5113 Beta `context-1m-2025-08-07` sudah pensiun sejak 30 April 2026. Melewatkan nilai ini dengan Claude Sonnet 4.5 atau Sonnet 4 tidak berpengaruh, dan permintaan yang melebihi jendela konteks standar 200k-token mengembalikan error. Untuk menggunakan jendela konteks 1M-token, migrasikan ke [Claude Opus 5.5, Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.6, Claude Opus 4.7, atau Claude Opus 4.8](https://platform.claude.com/docs/en/about-claude/models/overview), yang mencakup konteks 1M dengan harga standar tanpa header beta yang diperlukan.5113 Di Claude API, beta `context-1m-2025-08-07` sudah pensiun untuk Claude Sonnet 4.5 dan Claude Sonnet 4. Jika Anda masih meneruskannya dengan salah satu model tersebut, permintaan yang melebihi context window standar 200K-token mengembalikan error, jadi hapus beta tersebut dari `betas`. Untuk menjalankan sesi dengan context window 1M-token, atur `model` ke model yang [berjalan dengan window 1M secara default](/docs/id/model-config#extended-context), seperti `claude-sonnet-5-5` atau `claude-opus-5-5`. Untuk model yang mencapai 1M hanya melalui varian `[1m]`-nya, tambahkan sufiks tersebut ke ID model, seperti pada `claude-opus-4-6[1m]`.

5114</Warning>5114</Warning>

5115 5115 

5116<h3 id="slashcommand">5116<h3 id="slashcommand">


5129};5129};

5130```5130```

5131 5131 

5132`builtin` adalah `true` pada baris ketika perintah adalah milik Claude Code sendiri dan mengetik `/name` menjalankannya. Tidak ada untuk perintah yang didefinisikan oleh pengguna, proyek, plugin, atau server MCP, dan untuk perintah bundel yang salah satu dari [mengganti menurut nama](/docs/id/skills#resolve-skills-that-share-a-name). Memerlukan Agent SDK v0.3.277 atau lebih baru.5132`builtin` bernilai `true` pada baris ketika perintah adalah milik Claude Code sendiri dan mengetik `/name` menjalankannya. Field ini tidak ada untuk perintah yang didefinisikan oleh pengguna, proyek, plugin, atau server MCP, dan untuk perintah bawaan yang [digantikan menurut nama](/docs/id/skills#resolve-skills-that-share-a-name) oleh salah satu dari mereka. Memerlukan Agent SDK v0.3.277 atau lebih baru.

5133 5133 

5134<h3 id="modelinfo">5134<h3 id="modelinfo">

5135 `ModelInfo`5135 `ModelInfo`


5154| Field | Tipe | Deskripsi |5154| Field | Tipe | Deskripsi |

5155| :- | :- | :- |5155| :- | :- | :- |

5156| `value` | `string` | Pengenal model untuk diteruskan dalam panggilan API |5156| `value` | `string` | Pengenal model untuk diteruskan dalam panggilan API |

5157| `resolvedModel` | `string \| undefined` | ID model wire kanonik yang diselesaikan oleh `value` entri ini. Entri alias seperti `sonnet` diselesaikan ke ID model eksplisit seperti `claude-sonnet-5`, sehingga host dapat mencocokkan ID model eksplisit yang disimpan terhadap entri alias yang mencakupnya. Memerlukan Claude Code v2.1.197 atau lebih baru. |5157| `resolvedModel` | `string \| undefined` | ID model yang menjadi hasil resolusi `value` entri ini, seperti `claude-sonnet-5-5` untuk entri alias `sonnet`. Memerlukan Claude Code v2.1.197 atau lebih baru. |

5158| `displayName` | `string` | Nama tampilan yang dapat dibaca manusia |5158| `displayName` | `string` | Nama tampilan yang dapat dibaca manusia |

5159| `description` | `string` | Deskripsi kemampuan model |5159| `description` | `string` | Deskripsi kemampuan model |

5160| `supportsEffort` | `boolean \| undefined` | Apakah model ini mendukung tingkat upaya |5160| `supportsEffort` | `boolean \| undefined` | Apakah model ini mendukung tingkat effort |

5161| `supportedEffortLevels` | `("low" \| "medium" \| "high" \| "xhigh" \| "max")[] \| undefined` | Tingkat upaya yang diterima model ini |5161| `supportedEffortLevels` | `("low" \| "medium" \| "high" \| "xhigh" \| "max")[] \| undefined` | Tingkat effort yang diterima model ini |

5162| `supportsAdaptiveThinking` | `boolean \| undefined` | Apakah model ini mendukung pemikiran adaptif, di mana Claude memutuskan kapan dan berapa banyak untuk berpikir |5162| `supportsAdaptiveThinking` | `boolean \| undefined` | Apakah model ini mendukung adaptive thinking, di mana Claude memutuskan kapan dan seberapa banyak untuk berpikir |

5163| `supportsFastMode` | `boolean \| undefined` | Apakah model ini mendukung mode cepat |5163| `supportsFastMode` | `boolean \| undefined` | Apakah model ini mendukung fast mode |

5164| `supportsAutoMode` | `boolean \| undefined` | Apakah model ini mendukung mode otomatis |5164| `supportsAutoMode` | `boolean \| undefined` | Apakah model ini mendukung auto mode |

5165 5165 

5166<h3 id="agentinfo">5166<h3 id="agentinfo">

5167 `AgentInfo`5167 `AgentInfo`

5168</h3>5168</h3>

5169 5169 

5170Informasi tentang subagen yang tersedia yang dapat dipanggil melalui tool Agent.5170Informasi tentang subagent yang tersedia yang dapat dipanggil melalui tool Agent.

5171 5171 

5172```typescript theme={null}5172```typescript theme={null}

5173type AgentInfo = {5173type AgentInfo = {


5179 5179 

5180| Field | Tipe | Deskripsi |5180| Field | Tipe | Deskripsi |

5181| :- | :- | :- |5181| :- | :- | :- |

5182| `name` | `string` | Pengenal tipe agen (misalnya, `"Explore"`, `"general-purpose"`) |5182| `name` | `string` | Pengenal tipe agent (misalnya, `"Explore"`, `"general-purpose"`) |

5183| `description` | `string` | Deskripsi tentang kapan menggunakan agen ini |5183| `description` | `string` | Deskripsi tentang kapan menggunakan agent ini |

5184| `model` | `string \| undefined` | Model yang digunakan agen ini: alias atau ID model, atau `'inherit'` untuk model parent. Ketika `undefined`, Claude Code memilih model dalam [urutan model subagen](/docs/id/sub-agents#choose-a-model) |5184| `model` | `string \| undefined` | Model yang digunakan agent ini: alias atau ID model, atau `'inherit'` untuk model parent. Ketika `undefined`, Claude Code memilih model dalam [urutan model subagent](/docs/id/sub-agents#choose-a-model) |

5185 5185 

5186<h3 id="mcpserverprovenance">5186<h3 id="mcpserverprovenance">

5187 `McpServerProvenance`5187 `McpServerProvenance`


5198 5198 

5199| Field | Tipe | Deskripsi |5199| Field | Tipe | Deskripsi |

5200| :- | :- | :- |5200| :- | :- | :- |

5201| `name` | `string` | Nama yang didaftarkan server, nilai yang sama yang dilaporkan [`mcpServerStatus()`](#query-object) untuk itu |5201| `name` | `string` | Nama yang didaftarkan untuk server, nilai yang sama yang dilaporkan [`mcpServerStatus()`](#query-object) untuknya |

5202| `source` | `string` | Tempat asal definisi server: `sdk`, `plugin`, atau cakupan konfigurasi |5202| `source` | `string` | Tempat asal definisi server: `sdk`, `plugin`, atau cakupan konfigurasi |

5203 5203 

5204`source` mengambil salah satu nilai berikut. Set terbuka, jadi perlakukan nilai yang tidak Anda kenali sebagai sumber yang dikonfigurasi, tidak pernah sebagai `sdk`:5204`source` mengambil salah satu nilai berikut. Set ini terbuka, jadi perlakukan nilai yang tidak Anda kenali sebagai sumber yang dikonfigurasi, tidak pernah sebagai `sdk`:

5205 5205 

5206* **`sdk`**: server dalam proses yang didaftarkan aplikasi Anda. Hanya aplikasi host SDK yang dapat mendaftarkan satu, jadi server yang dikonfigurasi tidak pernah melaporkan `sdk`, apa pun namanya.5206* **`sdk`**: server dalam proses yang didaftarkan aplikasi Anda. Hanya aplikasi host SDK yang dapat mendaftarkannya, jadi server yang dikonfigurasi tidak pernah melaporkan `sdk`, apa pun namanya.

5207* **`plugin`**: server yang disediakan [plugin](/docs/id/agent-sdk/plugins). `name` adalah bentuk `plugin:<plugin-name>:<server-name>` yang bersifat scoped seperti yang dijelaskan di bawah [server MCP yang disediakan plugin](/docs/id/mcp#plugin-provided-mcp-servers).5207* **`plugin`**: server yang disediakan [plugin](/docs/id/agent-sdk/plugins). `name`-nya adalah bentuk `plugin:<plugin-name>:<server-name>` yang bersifat scoped seperti yang dijelaskan di bawah [server MCP yang disediakan plugin](/docs/id/mcp#plugin-provided-mcp-servers).

5208* **Cakupan konfigurasi**: `user`, `project`, `local`, `dynamic`, `managed`, `enterprise`, `claudeai`, atau `agent`. Server `.mcp.json` melaporkan `project`, dan [cakupan instalasi MCP](/docs/id/mcp#mcp-installation-scopes) mendefinisikan `local`, `project`, dan `user`. Server yang diteruskan aplikasi Anda dalam opsi [`mcpServers`](#options), selain server SDK dalam proses, melaporkan `dynamic`.5208* **Cakupan konfigurasi**: `user`, `project`, `local`, `dynamic`, `managed`, `enterprise`, `claudeai`, atau `agent`. Server `.mcp.json` melaporkan `project`, dan [cakupan instalasi MCP](/docs/id/mcp#mcp-installation-scopes) mendefinisikan `local`, `project`, dan `user`. Server yang diteruskan aplikasi Anda dalam [opsi `mcpServers`](#options), selain server SDK dalam proses, melaporkan `dynamic`.

5209 5209 

5210Dasarkan keputusan kepercayaan pada `source`, bukan pada `name` atau awalan nama tool `mcp__<server>__`. Untuk sumber apa pun selain `sdk`, `name` adalah teks yang tidak dipercaya: escape sebelum ditampilkan.5210Dasarkan keputusan kepercayaan pada `source`, bukan pada `name` atau awalan nama tool `mcp__<server>__`. Untuk sumber apa pun selain `sdk`, `name` adalah teks yang tidak dipercaya: escape sebelum ditampilkan.

5211 5211 


5242};5242};

5243```5243```

5244 5244 

5245`source` mengatakan tempat asal definisi server, dengan nilai dan aturan kepercayaan yang sama seperti `source` [`McpServerProvenance`](#mcpserverprovenance). Field memerlukan Agent SDK v0.3.274 atau lebih baru dan tidak ada pada versi sebelumnya.5245`source` menyatakan tempat asal definisi server, dengan nilai dan aturan kepercayaan yang sama seperti `source` pada [`McpServerProvenance`](#mcpserverprovenance). Field ini memerlukan Agent SDK v0.3.274 atau lebih baru dan tidak ada pada versi sebelumnya.

5246 5246 

5247`_meta` pada entri `tools` membawa anggota MCP Apps dari `_meta` tool itu, sehingga aplikasi Anda dapat menemukan sumber daya `ui://` untuk dirender dengan [`readMcpResource()`](#query-object). Claude Code melewatkan objek `ui` dan string `ui/resourceUri` datar yang sudah usang, dan menahan setiap kunci lainnya. Di dalam `ui`, `resourceUri` adalah string `ui://` dan `visibility` array `"model"` dan `"app"` ketika server menetapkannya, dan anggota lainnya melewati tidak berubah. Claude Code menghapus salah satu kunci ketika nilainya tidak terbentuk dengan baik, dan menghilangkan `_meta` dari tool yang tidak mendeklarasikan keduanya. Field ini hadir hanya ketika [`capabilities`](#sdksystemmessage) pesan inisialisasi mencakup `mcp_tool_ui_meta_v1`, dan memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.5247`_meta` pada entri `tools` membawa anggota MCP Apps dari `_meta` tool itu, sehingga aplikasi Anda dapat menemukan sumber daya `ui://` untuk dirender dengan [`readMcpResource()`](#query-object). Claude Code meneruskan objek `ui` dan string datar `ui/resourceUri` yang sudah deprecated, dan menahan setiap kunci lainnya. Di dalam `ui`, `resourceUri` adalah string `ui://` dan `visibility` adalah array `"model"` dan `"app"` ketika server menetapkannya, dan anggota lainnya diteruskan tanpa perubahan. Claude Code menghapus salah satu kunci tersebut ketika nilainya tidak valid, dan menghilangkan `_meta` dari tool yang tidak mendeklarasikan keduanya. Field ini hadir hanya ketika [`capabilities`](#sdksystemmessage) pesan inisialisasi mencakup `mcp_tool_ui_meta_v1`, dan memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.

5248 5248 

5249<h3 id="mcpserverstatusconfig">5249<h3 id="mcpserverstatusconfig">

5250 `McpServerStatusConfig`5250 `McpServerStatusConfig`


5283 `ModelUsage`5283 `ModelUsage`

5284</h3>5284</h3>

5285 5285 

5286Statistik penggunaan per-model yang dikembalikan dalam pesan hasil. Nilai `costUSD` adalah estimasi sisi klien. Lihat [Lacak biaya dan penggunaan](/docs/id/agent-sdk/cost-tracking) untuk peringatan penagihan.5286Statistik penggunaan per-model yang dikembalikan dalam pesan hasil. Nilai `costUSD` adalah estimasi sisi klien. Lihat [Lacak biaya dan penggunaan](/docs/id/agent-sdk/cost-tracking) untuk catatan terkait penagihan.

5287 5287 

5288```typescript theme={null}5288```typescript theme={null}

5289type ModelUsage = {5289type ModelUsage = {


5302};5302};

5303```5303```

5304 5304 

5305`thinkingTokens` menghitung token pemikiran yang dihasilkan model ini. `outputTokens` sudah mencakupnya, jadi jangan menambahkan keduanya. Field ini tidak ada sampai putaran berjalan pada versi Claude Code yang mencatatnya, jadi sesi yang dilanjutkan yang dimulai pada versi sebelumnya melaporkan hitungan sebagian. `thinkingTokens` memerlukan Agent SDK v0.3.257 atau lebih baru.5305`thinkingTokens` menghitung thinking token yang dihasilkan model ini. `outputTokens` sudah mencakupnya, jadi jangan menjumlahkan keduanya. Field ini tidak ada sampai sebuah giliran berjalan pada versi Claude Code yang mencatatnya, jadi sesi yang dilanjutkan yang dimulai pada versi sebelumnya melaporkan hitungan sebagian. `thinkingTokens` memerlukan Agent SDK v0.3.257 atau lebih baru.

5306 5306 

5307Field `canonicalModel` dan `provider` memerlukan Claude Code v2.1.218 atau lebih baru. `canonicalModel` adalah ID model kanonik yang digunakan pencarian harga; dapat berbeda dari string model mentah yang menjadi kunci entri, misalnya ketika string itu adalah ID khusus penyedia atau alias.5307Field `canonicalModel` dan `provider` memerlukan Claude Code v2.1.218 atau lebih baru. `canonicalModel` adalah ID model kanonik yang digunakan pencarian harga; nilainya dapat berbeda dari string model mentah yang menjadi kunci entri, misalnya ketika string itu adalah ID khusus penyedia atau alias.

5308 5308 

5309`provider` menamai backend API yang melayani model, seperti `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, atau `gateway`.5309`provider` menamai backend API yang melayani model, seperti `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle`, atau `gateway`.

5310 5310 


5357 5357 

5358`BetaServerToolUsage`, `BetaIterationsUsage`, dan `BetaOutputTokensDetails` didefinisikan dalam `@anthropic-ai/sdk`.5358`BetaServerToolUsage`, `BetaIterationsUsage`, dan `BetaOutputTokensDetails` didefinisikan dalam `@anthropic-ai/sdk`.

5359 5359 

5360`output_tokens_details` memecah output yang ditagih menurut kategori. Saat ini membawa satu field, `thinking_tokens: number`, menghitung token output yang dihasilkan model sebagai penalaran internal, termasuk pembatas blok pemikiran. Field `output_tokens_details` memerlukan TypeScript SDK v0.3.228 atau lebih baru, yang menggabungkan Claude Code v2.1.228.5360`output_tokens_details` merinci output yang ditagih menurut kategori. Saat ini field ini membawa satu field, `thinking_tokens: number`, yang menghitung token output yang dihasilkan model sebagai penalaran internal, termasuk pembatas thinking block. Field `output_tokens_details` memerlukan TypeScript SDK v0.3.228 atau lebih baru, yang menyertakan Claude Code v2.1.228.

5361 5361 

5362* **Penagihan**: baca pemecahan untuk observabilitas, bukan untuk penagihan. `output_tokens` tetap menjadi total otoritatif, dan `output_tokens - thinking_tokens` mendekati output non-penalaran.5362* **Penagihan**: baca rincian ini untuk observabilitas, bukan untuk penagihan. `output_tokens` tetap menjadi total otoritatif, dan `output_tokens - thinking_tokens` mendekati output non-penalaran.

5363* **Apa yang dihitung**: penalaran mentah yang dihasilkan model, yang dapat lebih panjang dari teks pemikiran yang dikembalikan dalam badan respons. API menghitungnya dengan re-tokenizing teks mentah itu, jadi dapat berbeda dari hitungan generasi eksak model dengan beberapa token.5363* **Apa yang dihitung**: penalaran mentah yang dihasilkan model, yang dapat lebih panjang daripada teks thinking yang dikembalikan dalam badan respons. API menghitungnya dengan melakukan tokenisasi ulang teks mentah itu, jadi hasilnya dapat berbeda beberapa token dari hitungan generasi eksak model.

5364* **Streaming**: pada pesan asisten yang dialirkan pemecahan ini, seperti `output_tokens`, adalah placeholder `message_start` dan tidak membawa hitungan nyata, jadi bacanya dari pesan hasil `usage` seperti [Baca token output dari pesan hasil](/docs/id/agent-sdk/cost-tracking#read-output-tokens-from-the-result-message) menjelaskan. Pada pesan hasil, `thinking_tokens` membaca `0` ketika model atau penyedia tidak melaporkan pemecahan.5364* **Streaming**: pada pesan asisten yang di-streaming, rincian ini, seperti `output_tokens`, adalah placeholder `message_start` dan tidak membawa hitungan nyata, jadi bacalah dari `usage` pada pesan hasil seperti yang dijelaskan di [Baca token output dari pesan hasil](/docs/id/agent-sdk/cost-tracking#read-output-tokens-from-the-result-message). Pada pesan hasil, `thinking_tokens` bernilai `0` ketika model atau penyedia tidak melaporkan rincian.

5365* **Kasus `null`**: `output_tokens_details` sendiri adalah `null` pada pesan asisten yang disintesis Claude Code, seperti pesan kesalahan API.5365* **Kasus `null`**: `output_tokens_details` sendiri bernilai `null` pada pesan asisten yang disintesis Claude Code, seperti pesan error API.

5366 5366 

5367<h3 id="calltoolresult">5367<h3 id="calltoolresult">

5368 `CallToolResult`5368 `CallToolResult`


5374type CallToolResult = {5374type CallToolResult = {

5375 content: Array<{5375 content: Array<{

5376 type: "text" | "image" | "audio" | "resource" | "resource_link";5376 type: "text" | "image" | "audio" | "resource" | "resource_link";

5377 // Field tambahan bervariasi menurut tipe5377 // Additional fields vary by type

5378 }>;5378 }>;

5379 structuredContent?: Record<string, unknown>;5379 structuredContent?: Record<string, unknown>;

5380 isError?: boolean;5380 isError?: boolean;


5385 `SDKMcpResourceLink`5385 `SDKMcpResourceLink`

5386</h3>5386</h3>

5387 5387 

5388Satu file yang dikembalikan tool MCP dengan referensi. Claude Code membangun setiap entri dari blok `resource_link` dalam hasil tool dan mengirimkan daftar sebagai `resourceLinks` pada [`SDKUserMessage.tool_use_result`](#sdkusermessage), atau sebagai `resource_links` pada [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) ketika panggilan selesai di latar belakang. Memerlukan Agent SDK v0.3.257 atau lebih baru.5388Satu file yang dikembalikan tool MCP melalui referensi. Claude Code membangun setiap entri dari blok `resource_link` dalam hasil tool dan mengirimkan daftarnya sebagai `resourceLinks` pada [`SDKUserMessage.tool_use_result`](#sdkusermessage), atau sebagai `resource_links` pada [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) ketika panggilan selesai di latar belakang. Memerlukan Agent SDK v0.3.257 atau lebih baru.

5389 5389 

5390```typescript theme={null}5390```typescript theme={null}

5391type SDKMcpResourceLink = {5391type SDKMcpResourceLink = {


5399};5399};

5400```5400```

5401 5401 

5402Claude Code menghapus blok yang `uri` atau `name` bukan string, dan menghilangkan field opsional yang nilainya bukan dari tipe yang tercantum.5402Claude Code menghapus blok yang `uri` atau `name`-nya bukan string, dan menghilangkan field opsional yang nilainya bukan dari tipe yang tercantum.

5403 5403 

5404| Field | Tipe | Deskripsi |5404| Field | Tipe | Deskripsi |

5405| :- | :- | :- |5405| :- | :- | :- |


5415 `ThinkingConfig`5415 `ThinkingConfig`

5416</h3>5416</h3>

5417 5417 

5418Mengontrol perilaku pemikiran/penalaran Claude. Mengambil preseden atas `maxThinkingTokens` yang sudah usang.5418Mengontrol perilaku thinking/penalaran Claude. Diutamakan daripada `maxThinkingTokens` yang sudah deprecated.

5419 5419 

5420```typescript theme={null}5420```typescript theme={null}

5421type ThinkingDisplay = "summarized" | "omitted";5421type ThinkingDisplay = "summarized" | "omitted";

5422 5422 

5423type ThinkingConfig =5423type ThinkingConfig =

5424 | { type: "adaptive"; display?: ThinkingDisplay } // Model menentukan kapan dan berapa banyak untuk bernalar (Opus 4.6+)5424 | { type: "adaptive"; display?: ThinkingDisplay } // The model determines when and how much to reason (Opus 4.6+)

5425 | { type: "enabled"; budgetTokens?: number; display?: ThinkingDisplay } // Anggaran token pemikiran tetap5425 | { type: "enabled"; budgetTokens?: number; display?: ThinkingDisplay } // Fixed thinking token budget

5426 | { type: "disabled" }; // Tidak ada pemikiran yang diperluas5426 | { type: "disabled" }; // No extended thinking

5427```5427```

5428 5428 

5429Field `display` opsional mengontrol apakah teks pemikiran dikembalikan `"summarized"` atau `"omitted"`. Pada Claude Opus 4.7 dan yang lebih baru, default API adalah `"omitted"`, jadi atur `"summarized"` untuk menerima konten pemikiran dalam blok `thinking`. Claude Code tidak mengirimkan `display` ke Amazon Bedrock atau Agent Platform Google Cloud, jadi pada penyedia tersebut Opus 4.7 dan yang lebih baru mengembalikan blok `thinking` kosong bahkan ketika Anda menetapkan `display` ke `"summarized"`.5429Field `display` opsional mengontrol apakah teks thinking dikembalikan `"summarized"` atau `"omitted"`. Pada Claude Opus 4.7 dan yang lebih baru, default API adalah `"omitted"`, jadi atur `"summarized"` untuk menerima konten thinking dalam blok `thinking`. Claude Code tidak mengirimkan `display` ke Amazon Bedrock atau Agent Platform Google Cloud, jadi pada penyedia tersebut Opus 4.7 dan yang lebih baru mengembalikan blok `thinking` kosong bahkan ketika Anda menetapkan `display` ke `"summarized"`.

5430 5430 

5431<h3 id="spawnedprocess">5431<h3 id="spawnedprocess">

5432 `SpawnedProcess`5432 `SpawnedProcess`


5476```5476```

5477 5477 

5478<Note>5478<Note>

5479 Field `signal` memberi tahu fungsi spawn Anda kapan harus merobohkan proses. Teruskan sebagai opsi `signal` ke `spawn()` Node, atau teruskan ke handler teardown VM atau container Anda.5479 Field `signal` memberi tahu fungsi spawn Anda kapan harus menghentikan proses. Teruskan sebagai opsi `signal` ke `spawn()` Node, atau teruskan ke handler teardown VM atau container Anda.

5480 5480 

5481 Signal ini tidak menyala saat [`Options.abortController`](#options) membatalkan. SDK pertama-tama menutup stdin proses dan menunggu sekitar dua detik sehingga CLI dapat ditutup dengan bersih, kemudian membatalkan signal ini. Untuk bereaksi saat pemanggil membatalkan, dengarkan `Options.abortController.signal` Anda sendiri, yang dapat direferensikan fungsi spawn Anda dari cakupan penutupnya.5481 Signal ini tidak terpicu pada saat [`Options.abortController`](#options) membatalkan. SDK pertama-tama menutup stdin proses dan menunggu sekitar dua detik sehingga CLI dapat berhenti dengan bersih, kemudian membatalkan signal ini. Untuk bereaksi tepat saat pemanggil membatalkan, dengarkan `Options.abortController.signal` Anda sendiri, yang dapat direferensikan fungsi spawn Anda dari cakupan penutupnya.

5482</Note>5482</Note>

5483 5483 

5484<h3 id="mcpsetserversresult">5484<h3 id="mcpsetserversresult">


5495};5495};

5496```5496```

5497 5497 

5498Ketika Anda memanggil `setMcpServers()`, Claude Code menerapkan aturan ini:5498Ketika Anda memanggil `setMcpServers()`, Claude Code menerapkan aturan berikut:

5499 5499 

5500* **Server yang tidak dinamai panggilan**: Claude Code menjaga server yang disediakan plugin tetap berjalan. Memerlukan Agent SDK v0.3.210 atau lebih baru.5500* **Server yang tidak disebutkan dalam panggilan**: Claude Code menjaga server yang disediakan plugin tetap berjalan. Memerlukan Agent SDK v0.3.210 atau lebih baru.

5501* **Server yang dinamai panggilan**: kecuali untuk server bawaan yang dimulai CLI saat startup, Claude Code mengganti server yang berjalan hanya ketika konfigurasinya berbeda dari yang Anda teruskan.5501* **Server yang disebutkan dalam panggilan**: kecuali untuk server bawaan yang dimulai CLI saat startup, Claude Code mengganti server yang sedang berjalan hanya ketika konfigurasinya berbeda dari yang Anda teruskan.

5502* **Server bawaan yang dimulai CLI saat startup**: jika panggilan menamai satu, Claude Code menghapus entri itu dan melaporkannya dalam `errors`.5502* **Server bawaan yang dimulai CLI saat startup**: jika panggilan menyebutkan salah satunya, Claude Code menghapus entri itu dan melaporkannya dalam `errors`.

5503 5503 

5504Promise diselesaikan setelah server stdio, HTTP, dan SSE yang baru ditambahkan terhubung atau gagal, jadi tool dari server yang terhubung tersedia pada putaran berikutnya.5504Promise diselesaikan setelah server stdio, HTTP, dan SSE yang baru ditambahkan terhubung atau gagal, jadi tool dari server yang terhubung tersedia pada giliran berikutnya.

5505 5505 

5506`added` mencantumkan server yang ditambahkan atau diganti Claude Code, terlepas dari apakah mereka terhubung. Server yang gagal terhubung muncul di `added` dan `errors`, dengan teks kegagalan di bawah `errors` dan baris `failed` dalam [`mcpServerStatus()`](#methods). Sebelum Claude Code v2.1.257, server yang upaya koneksinya melempar dilaporkan hanya di bawah `errors`.5506`added` mencantumkan server yang ditambahkan atau diganti Claude Code, terlepas dari apakah server tersebut terhubung. Server yang gagal terhubung muncul di `added` dan `errors`, dengan teks kegagalan di bawah `errors` dan baris `failed` dalam [`mcpServerStatus()`](#methods). Sebelum Claude Code v2.1.257, server yang upaya koneksinya melempar error dilaporkan hanya di bawah `errors`.

5507 5507 

5508<h3 id="rewindfilesresult">5508<h3 id="rewindfilesresult">

5509 `RewindFilesResult`5509 `RewindFilesResult`


5522};5522};

5523```5523```

5524 5524 

5525`skippedLinks` menghitung jalur yang dilacak yang ditolak rewind untuk dipulihkan atau dihapus untuk keamanan link: symlink, hard link, atau file non-reguler lainnya di jalur yang dilacak, direktori parent yang tidak lagi diselesaikan ke tempat yang ditunjuk ketika checkpoint diambil, atau backup yang tidak dapat dibaca dengan aman. Field ini memerlukan Claude Code v2.1.216 atau lebih baru. Panggilan pratinjau dengan `rewindFiles(userMessageId, { dryRun: true })` tidak pernah menetapkannya.5525`skippedLinks` menghitung jalur yang dilacak yang ditolak rewind untuk dipulihkan atau dihapus demi keamanan link: symlink, hard link, atau file non-reguler lainnya di jalur yang dilacak, direktori parent yang tidak lagi mengarah ke tempat yang ditunjuknya ketika checkpoint diambil, atau backup yang tidak dapat dibaca dengan aman. Field ini memerlukan Claude Code v2.1.216 atau lebih baru. Panggilan pratinjau dengan `rewindFiles(userMessageId, { dryRun: true })` tidak pernah menetapkannya.

5526 5526 

5527<h3 id="sdkstatusmessage">5527<h3 id="sdkstatusmessage">

5528 `SDKStatusMessage`5528 `SDKStatusMessage`


5545 `SDKTaskNotificationMessage`5545 `SDKTaskNotificationMessage`

5546</h3>5546</h3>

5547 5547 

5548Notifikasi ketika tugas latar belakang selesai, gagal, atau dihentikan. Tugas latar belakang mencakup perintah Bash `run_in_background`, watch [Monitor](#monitor), dan subagen latar belakang. Untuk field `ambient`, lihat [`SDKTaskStartedMessage`](#sdktaskstartedmessage), yang mendefinisikannya dan persyaratan versinya.5548Notifikasi ketika tugas latar belakang selesai, gagal, atau dihentikan. Tugas latar belakang mencakup perintah Bash `run_in_background`, watch [Monitor](#monitor), dan subagent latar belakang. Untuk field `ambient`, lihat [`SDKTaskStartedMessage`](#sdktaskstartedmessage), yang mendefinisikannya beserta persyaratan versinya.

5549 5549 

5550```typescript theme={null}5550```typescript theme={null}

5551type SDKTaskNotificationMessage = {5551type SDKTaskNotificationMessage = {


5568};5568};

5569```5569```

5570 5570 

5571Ketika Claude Code [memindahkan panggilan tool MCP yang panjang ke latar belakang](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls), blok `tool_result` untuk panggilan itu hanya menyimpan placeholder dan hasil nyata panggilan tiba dalam notifikasi ini. Cocokkan notifikasi dengan panggilan menggunakan `tool_use_id`. Pada notifikasi `completed`, `resource_links` mencantumkan file yang dikembalikan tool dengan referensi sebagai entri [`SDKMcpResourceLink`](#sdkmcpresourcelink), dengan batas 50-link dan 64 KiB yang sama seperti [`tool_use_result.resourceLinks`](#sdkusermessage). Claude Code menghilangkan `resource_links` ketika hasil tidak memiliki link dan pada notifikasi untuk tugas yang bukan panggilan tool MCP. `resource_links` memerlukan Agent SDK v0.3.257 atau lebih baru.5571Ketika Claude Code [memindahkan panggilan tool MCP yang panjang ke latar belakang](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls), blok `tool_result` untuk panggilan itu hanya berisi placeholder dan hasil nyata panggilan tiba dalam notifikasi ini. Cocokkan notifikasi dengan panggilan menggunakan `tool_use_id`. Pada notifikasi `completed`, `resource_links` mencantumkan file yang dikembalikan tool melalui referensi sebagai entri [`SDKMcpResourceLink`](#sdkmcpresourcelink), dengan batas 50 link dan 64 KiB yang sama seperti [`tool_use_result.resourceLinks`](#sdkusermessage). Claude Code menghilangkan `resource_links` ketika hasil tidak memiliki link dan pada notifikasi untuk tugas yang bukan panggilan tool MCP. `resource_links` memerlukan Agent SDK v0.3.257 atau lebih baru.

5572 5572 

5573Claude Code menambahkan pemberitahuan ke setiap notifikasi tugas yang dikirimnya ke model, kecuali pengiriman yang dicap dengan [subkind `scheduled-trigger`](#task-notification-subkinds), yang membawa framing tugas yang ditugaskan sebagai gantinya. Pemberitahuan menyatakan bahwa tidak ada input manusia yang terjadi, jadi model tidak memperlakukan notifikasi sebagai instruksi atau persetujuan pengguna.5573Claude Code menambahkan pemberitahuan di awal setiap notifikasi tugas yang dikirimnya ke model, kecuali pengiriman yang ditandai dengan [subkind `scheduled-trigger`](#task-notification-subkinds), yang membawa framing tugas yang ditugaskan sebagai gantinya. Pemberitahuan tersebut menyatakan bahwa tidak ada input manusia yang terjadi, sehingga model tidak memperlakukan notifikasi sebagai instruksi atau persetujuan pengguna.

5574 5574 

5575Untuk mendeteksi putaran notifikasi tugas, periksa `origin.kind === "task-notification"` pada [`SDKUserMessage`](#sdkusermessage) atau [`SDKResultMessage`](#sdkresultmessage) daripada mencocokkan teks pemberitahuan. Baca `subkind` dari field yang sama jika Anda perlu tahu apa yang memicunya. Sebelum v2.1.205, Claude Code meninggalkan pemberitahuan pada notifikasi yang tiba saat sesi menganggur.5575Untuk mendeteksi giliran notifikasi tugas, periksa `origin.kind === "task-notification"` pada [`SDKUserMessage`](#sdkusermessage) atau [`SDKResultMessage`](#sdkresultmessage) alih-alih mencocokkan teks pemberitahuan. Baca `subkind` dari field yang sama jika Anda perlu tahu apa yang memicunya. Sebelum v2.1.205, Claude Code tidak menyertakan pemberitahuan pada notifikasi yang tiba saat sesi sedang idle.

5576 5576 

5577<h3 id="sdktoolusesummarymessage">5577<h3 id="sdktoolusesummarymessage">

5578 `SDKToolUseSummaryMessage`5578 `SDKToolUseSummaryMessage`


5594 `SDKHookStartedMessage`5594 `SDKHookStartedMessage`

5595</h3>5595</h3>

5596 5596 

5597Dipancarkan ketika hook mulai mengeksekusi.5597Dipancarkan ketika hook mulai dieksekusi.

5598 5598 

5599Claude Code mengirimkan pesan ini, [`SDKHookProgressMessage`](#sdkhookprogressmessage), dan [`SDKHookResponseMessage`](#sdkhookresponsemessage) ke aliran pesan segera, termasuk saat hook `SessionStart` atau `Setup` masih berjalan selama startup sesi. Claude Code v2.1.169 hingga v2.1.203 mengirimkan pesan ini dalam satu batch setelah hook `SessionStart` atau `Setup` selesai; v2.1.204 mengembalikan pengiriman langsung.5599Claude Code mengirimkan pesan ini, [`SDKHookProgressMessage`](#sdkhookprogressmessage), dan [`SDKHookResponseMessage`](#sdkhookresponsemessage) ke stream pesan dengan segera, termasuk saat hook `SessionStart` atau `Setup` masih berjalan selama startup sesi. Claude Code v2.1.169 hingga v2.1.203 mengirimkan pesan-pesan ini dalam satu batch setelah hook `SessionStart` atau `Setup` selesai; v2.1.204 mengembalikan pengiriman langsung.

5600 5600 

5601```typescript theme={null}5601```typescript theme={null}

5602type SDKHookStartedMessage = {5602type SDKHookStartedMessage = {


5635 `SDKHookResponseMessage`5635 `SDKHookResponseMessage`

5636</h3>5636</h3>

5637 5637 

5638Dipancarkan ketika hook selesai mengeksekusi.5638Dipancarkan ketika hook selesai dieksekusi.

5639 5639 

5640```typescript theme={null}5640```typescript theme={null}

5641type SDKHookResponseMessage = {5641type SDKHookResponseMessage = {


5658 `SDKToolProgressMessage`5658 `SDKToolProgressMessage`

5659</h3>5659</h3>

5660 5660 

5661Dipancarkan secara berkala saat tool sedang mengeksekusi untuk menunjukkan kemajuan.5661Dipancarkan secara berkala saat tool sedang dieksekusi untuk menunjukkan kemajuan.

5662 5662 

5663```typescript theme={null}5663```typescript theme={null}

5664type SDKToolProgressMessage = {5664type SDKToolProgressMessage = {


5683};5683};

5684```5684```

5685 5685 

5686Saat panggilan tool berjalan dalam percakapan utama, Claude Code memancarkan pesan `tool_progress` setiap 30 detik dengan `heartbeat: true`. Setiap detak jantung membawa nama tool dan detik yang telah berlalu, sehingga Anda dapat membedakan panggilan yang berjalan lama dari sesi yang terhenti. Claude Code tidak memancarkan detak jantung untuk panggilan tool di dalam subagen. Field `heartbeat` memerlukan Agent SDK v0.3.214 atau lebih baru. Sebelum v2.1.257, Claude Code tidak memancarkan detak jantung untuk panggilan tool Agent foreground juga.5686Saat panggilan tool berjalan dalam percakapan utama, Claude Code memancarkan pesan `tool_progress` setiap 30 detik dengan `heartbeat: true`. Setiap heartbeat membawa nama tool dan jumlah detik yang telah berlalu, sehingga Anda dapat membedakan panggilan yang berjalan lama dari sesi yang macet. Claude Code tidak memancarkan heartbeat untuk panggilan tool di dalam subagent. Field `heartbeat` memerlukan Agent SDK v0.3.214 atau lebih baru. Sebelum v2.1.257, Claude Code juga tidak memancarkan heartbeat untuk panggilan tool Agent foreground.

5687 5687 

5688Pada pesan `tool_progress` untuk tool Agent selain detak jantung, `subagent_type` menamai tipe subagen yang berjalan, seperti `general-purpose`. `subagent_retry` hadir saat subagen itu menunggu backoff kesalahan API, seperti batas laju atau kelebihan beban, dengan satu pesan per upaya retry. Kedua field memerlukan Agent SDK v0.3.214 atau lebih baru.5688Pada pesan `tool_progress` untuk tool Agent selain heartbeat, `subagent_type` menamai tipe subagent yang sedang berjalan, seperti `general-purpose`. `subagent_retry` hadir saat subagent itu menunggu backoff error API, seperti rate limit atau kelebihan beban, dengan satu pesan per upaya retry. Kedua field memerlukan Agent SDK v0.3.214 atau lebih baru.

5689 5689 

5690Untuk merender indikator retry dari `subagent_retry`:5690Untuk merender indikator retry dari `subagent_retry`:

5691 5691 

5692* Lacak indikator menurut `parent_tool_use_id`, yang unik per subagen. `tool_use_id` dibagikan oleh subagen paralel dari satu putaran asisten, jadi melacak menurut itu akan membiarkan pembaruan satu subagen menghapus indikator subagen lain.5692* Lacak indikator berdasarkan `parent_tool_use_id`, yang unik per subagent. `tool_use_id` dibagikan oleh subagent paralel dari satu giliran asisten, jadi melacak berdasarkan itu akan membuat pembaruan satu subagent menghapus indikator subagent lain.

5693* Hapus indikator ketika `tool_progress` yang lebih baru untuk `parent_tool_use_id` yang sama tiba tanpa `subagent_retry` maupun `heartbeat: true`, atau ketika pesan hasil tool tiba. Frame dengan `heartbeat: true` hanya melaporkan keaktifan, jadi pertahankan indikator ketika satu tiba. `attempt` dapat melebihi `max_retries` di bawah retry persisten, jadi jangan menurunkan penghapusan dari penghitung.5693* Hapus indikator ketika `tool_progress` berikutnya untuk `parent_tool_use_id` yang sama tiba tanpa `subagent_retry` maupun `heartbeat: true`, atau ketika pesan hasil tool tiba. Frame dengan `heartbeat: true` hanya melaporkan bahwa proses masih aktif, jadi pertahankan indikator ketika frame tersebut tiba. `attempt` dapat melebihi `max_retries` dalam retry persisten, jadi jangan menentukan penghapusan dari penghitung.

5694* Perlakukan `error_category` sebagai token untuk memilih teks pesan Anda sendiri, bukan sebagai teks tampilan. Nilainya adalah `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error`, dan `unknown`. Tangani nilai yang tidak Anda kenali dengan cara Anda menangani `unknown`, karena rilis yang lebih baru dapat menambahkan nilai.5694* Perlakukan `error_category` sebagai token untuk memilih teks pesan Anda sendiri, bukan sebagai teks tampilan. Nilainya adalah `rate_limit`, `overloaded`, `authentication_failed`, `server_error`, `cloud_credential_error`, dan `unknown`. Tangani nilai yang tidak Anda kenali dengan cara yang sama seperti Anda menangani `unknown`, karena rilis berikutnya dapat menambahkan nilai.

5695 5695 

5696<h3 id="sdkauthstatusmessage">5696<h3 id="sdkauthstatusmessage">

5697 `SDKAuthStatusMessage`5697 `SDKAuthStatusMessage`


5714 `SDKTaskStartedMessage`5714 `SDKTaskStartedMessage`

5715</h3>5715</h3>

5716 5716 

5717Dipancarkan ketika tugas dimulai. Field `task_type` adalah `"local_bash"` untuk perintah Bash dan watch [Monitor](#monitor), `"local_agent"` untuk subagen, atau `"remote_agent"`.5717Dipancarkan ketika tugas dimulai. Field `task_type` bernilai `"local_bash"` untuk perintah Bash dan watch [Monitor](#monitor), `"local_agent"` untuk subagent, atau `"remote_agent"`.

5718 5718 

5719```typescript theme={null}5719```typescript theme={null}

5720type SDKTaskStartedMessage = {5720type SDKTaskStartedMessage = {


5732};5732};

5733```5733```

5734 5734 

5735`ambient` adalah `true` untuk tugas yang bukan bagian dari pekerjaan sesi, seperti tugas yang dijalankan Claude Code untuk operasinya sendiri. Pemantau pembaruan langsung juga ambient, termasuk pemantau yang diminta pengguna. Kecualikan tugas ambient dari indikator aktivitas. Field ini memerlukan Agent SDK v0.3.247 atau lebih baru.5735`ambient` bernilai `true` untuk tugas yang bukan bagian dari pekerjaan sesi, seperti tugas yang dijalankan Claude Code untuk operasinya sendiri. Pemantau pembaruan langsung juga bersifat ambient, termasuk pemantau yang diminta pengguna. Kecualikan tugas ambient dari indikator aktivitas. Field ini memerlukan Agent SDK v0.3.247 atau lebih baru.

5736 5736 

5737`ambient` juga muncul pada [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) dan pada entri [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage).5737`ambient` juga muncul pada [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) dan pada entri [`SDKBackgroundTasksChangedMessage`](#sdkbackgroundtaskschangedmessage).

5738 5738 

5739`is_backgrounded` dan `spawn_depth` menjelaskan bagaimana Claude Code memulai tugas. Kedua field memerlukan Agent SDK v0.3.238 atau lebih baru.5739`is_backgrounded` dan `spawn_depth` menjelaskan bagaimana Claude Code memulai tugas. Kedua field memerlukan Agent SDK v0.3.238 atau lebih baru.

5740 5740 

5741* `is_backgrounded`: Claude Code menetapkannya pada tugas `"local_agent"` dan `"local_bash"`. `true` berarti tugas berjalan di latar belakang. `false` berarti tugas berjalan di foreground, dan panggilan tool yang memulainya tetap terblokir sampai tugas selesai atau pindah ke latar belakang.5741* `is_backgrounded`: Claude Code menetapkannya pada tugas `"local_agent"` dan `"local_bash"`. `true` berarti tugas berjalan di latar belakang. `false` berarti tugas berjalan di foreground, dan panggilan tool yang memulainya tetap terblokir sampai tugas selesai atau pindah ke latar belakang.

5742* `spawn_depth`: Claude Code menetapkannya pada tugas `"local_agent"` saja. Subagen yang dihasilkan thread utama memiliki kedalaman `1`. Subagen yang dihasilkan subagen kedalaman `1` memiliki kedalaman `2`, dan seterusnya.5742* `spawn_depth`: Claude Code menetapkannya hanya pada tugas `"local_agent"`. Subagent yang di-spawn oleh thread utama memiliki kedalaman `1`. Subagent yang di-spawn oleh subagent berkedalaman `1` memiliki kedalaman `2`, dan seterusnya.

5743 5743 

5744[Subagen yang dilanjutkan](/docs/id/agent-sdk/subagents#resume-subagents) selalu melaporkan `is_backgrounded: true`, karena Claude Code menjalankan setiap subagen yang dilanjutkan di latar belakang. Ketika tugas foreground pindah ke latar belakang nanti, Claude Code melaporkan nilai `is_backgrounded` baru dalam pesan [`task_updated`](#sdktaskupdatedmessage) daripada mengirimkan `task_started` kedua.5744[Subagent yang dilanjutkan](/docs/id/agent-sdk/subagents#resume-subagents) selalu melaporkan `is_backgrounded: true`, karena Claude Code menjalankan setiap subagent yang dilanjutkan di latar belakang. Ketika tugas foreground kemudian pindah ke latar belakang, Claude Code melaporkan nilai `is_backgrounded` yang baru dalam pesan [`task_updated`](#sdktaskupdatedmessage) alih-alih mengirimkan `task_started` kedua.

5745 5745 

5746<h3 id="sdktaskprogressmessage">5746<h3 id="sdktaskprogressmessage">

5747 `SDKTaskProgressMessage`5747 `SDKTaskProgressMessage`

5748</h3>5748</h3>

5749 5749 

5750Dipancarkan secara berkala saat subagen atau tugas latar belakang sedang berjalan.5750Dipancarkan secara berkala saat subagent atau tugas latar belakang sedang berjalan.

5751 5751 

5752Untuk tugas subagen, field `summary` membawa ringkasan kemajuan yang dihasilkan model dan diisi hanya ketika [`agentProgressSummaries`](#options) diaktifkan. Untuk [panggilan tool MCP yang di-background](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls), `summary` membawa kemajuan terbaru yang dilaporkan server MCP dan tidak bergantung pada opsi itu.5752Untuk tugas subagent, field `summary` membawa ringkasan kemajuan yang dihasilkan model dan diisi hanya ketika [`agentProgressSummaries`](#options) diaktifkan. Untuk [panggilan tool MCP yang dipindahkan ke latar belakang](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls), `summary` membawa kemajuan terbaru yang dilaporkan server MCP dan tidak bergantung pada opsi itu.

5753 5753 

5754```typescript theme={null}5754```typescript theme={null}

5755type SDKTaskProgressMessage = {5755type SDKTaskProgressMessage = {


5775 `SDKTaskUpdatedMessage`5775 `SDKTaskUpdatedMessage`

5776</h3>5776</h3>

5777 5777 

5778Dipancarkan ketika status tugas latar belakang berubah, seperti ketika transisi dari `running` ke `completed`. Gabungkan `patch` ke dalam peta tugas lokal Anda yang dikunci oleh `task_id`. Field `end_time` adalah timestamp epoch Unix dalam milidetik, dapat dibandingkan dengan `Date.now()`.5778Dipancarkan ketika status tugas latar belakang berubah, seperti ketika beralih dari `running` ke `completed`. Gabungkan `patch` ke dalam peta tugas lokal Anda yang dikunci oleh `task_id`. Field `end_time` adalah timestamp epoch Unix dalam milidetik, yang dapat dibandingkan dengan `Date.now()`.

5779 5779 

5780```typescript theme={null}5780```typescript theme={null}

5781type SDKTaskUpdatedMessage = {5781type SDKTaskUpdatedMessage = {


5799 `SDKBackgroundTasksChangedMessage`5799 `SDKBackgroundTasksChangedMessage`

5800</h3>5800</h3>

5801 5801 

5802Dipancarkan setiap kali set tugas latar belakang yang aktif berubah: tugas dimulai, selesai, dibunuh, agen foreground di-background, atau field `description` atau `ambient` tugas berubah.5802Dipancarkan setiap kali set tugas latar belakang yang aktif berubah: tugas dimulai, selesai, dihentikan paksa, agent foreground dipindahkan ke latar belakang, atau field `description` atau `ambient` suatu tugas berubah.

5803 5803 

5804Array `tasks` adalah set aktif lengkap. Ganti set yang di-cache dengan setiap payload alih-alih memasangkan acara `task_started` dan `task_notification`, sehingga perubahan keanggotaan berikutnya memperbaiki acara apa pun yang Anda lewatkan.5804Array `tasks` adalah set aktif lengkap. Ganti set yang di-cache dengan setiap payload alih-alih memasangkan event `task_started` dan `task_notification`, sehingga perubahan keanggotaan berikutnya memperbaiki event apa pun yang Anda lewatkan.

5805 5805 

5806Pengurutan relatif terhadap acara per-tugas tersebut tidak ditentukan, jadi jangan menghubungkan dua aliran tersebut.5806Urutan relatif terhadap event per-tugas tersebut tidak ditentukan, jadi jangan mengorelasikan kedua stream tersebut.

5807 5807 

5808Tidak ada yang dipancarkan saat startup. Atur ulang ke set kosong setiap kali proses CLI sesi dimulai atau dimulai ulang dan biarkan perubahan keanggotaan berikutnya mengisinya kembali.5808Tidak ada yang dipancarkan saat startup. Atur ulang ke set kosong setiap kali proses CLI sesi dimulai atau dimulai ulang dan biarkan perubahan keanggotaan berikutnya mengisinya kembali.

5809 5809 

5810Ketika Anda mengirimkan permintaan kontrol `initialize` berulang ke sesi yang berjalan, seperti dengan [`reinitialize()`](#query-object) setelah celah transport, Claude Code mengikuti respons dengan snapshot set aktif saat ini, bahkan ketika kosong. Host yang terhubung kembali dengan demikian mempelajari apa yang berjalan tanpa menunggu perubahan keanggotaan berikutnya. Sebelum Agent SDK v0.3.239, Claude Code tidak mengirimkan snapshot setelah `initialize` berulang.5810Ketika Anda mengirimkan permintaan kontrol `initialize` berulang ke sesi yang sedang berjalan, seperti dengan [`reinitialize()`](#query-object) setelah jeda transport, Claude Code menyusulkan respons dengan snapshot set aktif saat ini, bahkan ketika set tersebut kosong. Dengan demikian, host yang terhubung kembali mengetahui apa yang sedang berjalan tanpa menunggu perubahan keanggotaan berikutnya. Sebelum Agent SDK v0.3.239, Claude Code tidak mengirimkan snapshot setelah `initialize` berulang.

5811 5811 

5812Memerlukan Claude Code v2.1.203 atau lebih baru.5812Memerlukan Claude Code v2.1.203 atau lebih baru.

5813 5813 


5830 `SDKThinkingTokensMessage`5830 `SDKThinkingTokensMessage`

5831</h3>5831</h3>

5832 5832 

5833Dipancarkan saat Claude menghasilkan blok pemikiran, termasuk yang diredaksi. `estimated_tokens` adalah estimasi berjalan token pemikiran yang dihasilkan sejauh ini dalam blok saat ini, dan `estimated_tokens_delta` adalah kenaikan yang dibawa frame ini. Gunakan estimasi ini untuk tampilan kemajuan.5833Dipancarkan saat Claude menghasilkan thinking block, termasuk yang diredaksi. `estimated_tokens` adalah estimasi berjalan dari thinking token yang dihasilkan sejauh ini dalam blok saat ini, dan `estimated_tokens_delta` adalah kenaikan yang dibawa frame ini. Gunakan estimasi ini untuk tampilan kemajuan.

5834 5834 

5835Ketika model atau penyedia melaporkan pemecahan, hitungan akhir untuk loop agen tingkat atas adalah [`usage.output_tokens_details.thinking_tokens`](#usage) pesan hasil, yang [tidak termasuk token subagen](/docs/id/agent-sdk/cost-tracking#get-the-total-cost-of-a-query).5835Ketika model atau penyedia melaporkan rincian, hitungan akhir untuk loop agent tingkat atas adalah [`usage.output_tokens_details.thinking_tokens`](#usage) pada pesan hasil, yang [tidak mencakup token subagent](/docs/id/agent-sdk/cost-tracking#get-the-total-cost-of-a-query).

5836 5836 

5837Memerlukan Claude Code v2.1.153 atau lebih baru.5837Memerlukan Claude Code v2.1.153 atau lebih baru.

5838 5838 


5852 `SDKFilesPersistedEvent`5852 `SDKFilesPersistedEvent`

5853</h3>5853</h3>

5854 5854 

5855Dipancarkan ketika checkpoint file dipersistenkan ke disk.5855Dipancarkan ketika checkpoint file disimpan ke disk.

5856 5856 

5857```typescript theme={null}5857```typescript theme={null}

5858type SDKFilesPersistedEvent = {5858type SDKFilesPersistedEvent = {


5870 `SDKRateLimitEvent`5870 `SDKRateLimitEvent`

5871</h3>5871</h3>

5872 5872 

5873Dipancarkan ketika sesi mengalami batas laju.5873Dipancarkan ketika sesi mengalami rate limit.

5874 5874 

5875```typescript theme={null}5875```typescript theme={null}

5876type SDKRateLimitEvent = {5876type SDKRateLimitEvent = {


5888};5888};

5889```5889```

5890 5890 

5891Ketika `errorCode` adalah `"credits_required"`, penolakan berasal dari langganan claude.ai yang penggunaan yang disertakan sudah habis, dan sesi tidak dapat dilanjutkan sampai pengguna membeli kredit penggunaan. `canUserPurchaseCredits` menunjukkan apakah pengguna yang diautentikasi dapat membeli kredit untuk akun, dan `hasChargeableSavedPaymentMethod` menunjukkan apakah metode pembayaran yang disimpan ada di file. Ketiga field ini tidak ada pada acara batas laju yang bukan penolakan yang diperlukan kredit. Memerlukan Claude Code v2.1.181 atau lebih baru.5891Ketika `errorCode` bernilai `"credits_required"`, penolakan berasal dari langganan claude.ai yang penggunaan bawaannya sudah habis, dan sesi tidak dapat dilanjutkan sampai pengguna membeli kredit penggunaan. `canUserPurchaseCredits` menunjukkan apakah pengguna yang diautentikasi dapat membeli kredit untuk akun tersebut, dan `hasChargeableSavedPaymentMethod` menunjukkan apakah ada metode pembayaran yang tersimpan. Ketiga field ini tidak ada pada event rate limit yang bukan penolakan karena memerlukan kredit. Memerlukan Claude Code v2.1.181 atau lebih baru.

5892 5892 

5893<h3 id="sdklocalcommandoutputmessage">5893<h3 id="sdklocalcommandoutputmessage">

5894 `SDKLocalCommandOutputMessage`5894 `SDKLocalCommandOutputMessage`


5910 `SDKCommandsChangedMessage`5910 `SDKCommandsChangedMessage`

5911</h3>5911</h3>

5912 5912 

5913Dipancarkan ketika set perintah yang tersedia berubah di tengah sesi, seperti ketika Claude Code menemukan skills saat agen memasuki subdirektori. Array `commands` adalah daftar lengkap yang diperbarui, jadi ganti daftar perintah yang di-cache dengan payload ini. Memanggil [`supportedCommands()`](#query-object) setelah pesan ini mengembalikan daftar yang diperbarui yang sama, karena metode melacak push terbaru; ini memerlukan Agent SDK v0.3.216 atau lebih baru. Dalam versi SDK yang lebih awal, `supportedCommands()` mengembalikan snapshot yang ditangkap saat inisialisasi dan tidak pernah mencerminkan perubahan di tengah sesi.5913Dipancarkan ketika set perintah yang tersedia berubah di tengah sesi, seperti ketika Claude Code menemukan skills saat agent memasuki subdirektori. Array `commands` adalah daftar lengkap yang diperbarui, jadi ganti daftar perintah yang di-cache dengan payload ini. Memanggil [`supportedCommands()`](#query-object) setelah pesan ini mengembalikan daftar terbaru yang sama, karena metode tersebut melacak push terbaru; ini memerlukan Agent SDK v0.3.216 atau lebih baru. Dalam versi SDK sebelumnya, `supportedCommands()` mengembalikan snapshot yang ditangkap saat inisialisasi dan tidak pernah mencerminkan perubahan di tengah sesi.

5914 5914 

5915Claude Code juga memancarkan pesan ini ketika [prompts](/docs/id/mcp#use-mcp-prompts-as-commands) server MCP bergabung atau meninggalkan daftar, misalnya ketika server selesai terhubung setelah sesi dimulai. Ini memerlukan Claude Code v2.1.281 atau lebih baru.5915Claude Code juga memancarkan pesan ini ketika [prompt](/docs/id/mcp#use-mcp-prompts-as-commands) server MCP masuk ke atau keluar dari daftar, misalnya ketika server selesai terhubung setelah sesi dimulai. Ini memerlukan Claude Code v2.1.281 atau lebih baru.

5916 5916 

5917```typescript theme={null}5917```typescript theme={null}

5918type SDKCommandsChangedMessage = {5918type SDKCommandsChangedMessage = {


5928 `SDKPromptSuggestionMessage`5928 `SDKPromptSuggestionMessage`

5929</h3>5929</h3>

5930 5930 

5931Dipancarkan setelah putaran ketika [`promptSuggestions`](#options) diaktifkan dan Claude Code menghasilkan saran untuk putaran itu. Berisi prompt pengguna berikutnya yang diprediksi. Untuk putaran yang tidak mendapat saran, lihat [Ketika Claude Code melewatkan saran](/docs/id/interactive-mode#when-claude-code-skips-suggestions).5931Dipancarkan setelah giliran ketika [`promptSuggestions`](#options) diaktifkan dan Claude Code menghasilkan saran untuk giliran itu. Berisi prediksi prompt pengguna berikutnya. Untuk giliran yang tidak mendapat saran, lihat [Ketika Claude Code melewatkan saran](/docs/id/interactive-mode#when-claude-code-skips-suggestions).

5932 5932 

5933```typescript theme={null}5933```typescript theme={null}

5934type SDKPromptSuggestionMessage = {5934type SDKPromptSuggestionMessage = {


5959 5959 

5960Field opsional menjelaskan reset:5960Field opsional menjelaskan reset:

5961 5961 

5962* `trigger`: apa yang membuang percakapan. Atur ulang transkrip Anda pada setiap pesan `conversation_reset`, termasuk yang field ini tidak ada atau membawa nilai yang tidak Anda kenali.5962* `trigger`: apa yang membuang percakapan. Atur ulang transkrip Anda pada setiap pesan `conversation_reset`, termasuk pesan yang field ini tidak ada atau membawa nilai yang tidak Anda kenali.

5963* `user_message_uuid`: `uuid` dari pesan pengguna yang membawa `/clear`. Gunakan untuk mencocokkan reset ke pesan itu.5963* `user_message_uuid`: `uuid` dari pesan pengguna yang membawa `/clear`. Gunakan untuk mencocokkan reset dengan pesan itu.

5964* `timestamp`: kapan reset terjadi, sebagai string ISO 8601 dalam UTC. Gunakan untuk tampilan, bukan untuk mengurutkan pesan.5964* `timestamp`: kapan reset terjadi, sebagai string ISO 8601 dalam UTC. Gunakan untuk tampilan, bukan untuk mengurutkan pesan.

5965 5965 

5966Field `trigger`, `user_message_uuid`, dan `timestamp` memerlukan Claude Code v2.1.281 atau lebih baru.5966Field `trigger`, `user_message_uuid`, dan `timestamp` memerlukan Claude Code v2.1.281 atau lebih baru.

5967 5967 

5968Pengetikan yang dipublikasikan SDK mendeklarasikan `SDKConversationResetMessage` dalam Claude Code v2.1.203 dan lebih baru. Sebelum v2.1.203, `SDKMessage` mereferensikan tipe tanpa mendeklarasikannya, jadi penyempitan pada `type === "conversation_reset"` gagal untuk typecheck ketika `skipLibCheck` dinonaktifkan.5968Typing yang dipublikasikan SDK mendeklarasikan `SDKConversationResetMessage` dalam Claude Code v2.1.203 dan yang lebih baru. Sebelum v2.1.203, `SDKMessage` mereferensikan tipe tersebut tanpa mendeklarasikannya, sehingga penyempitan pada `type === "conversation_reset"` gagal dalam typecheck ketika `skipLibCheck` dinonaktifkan.

5969 5969 

5970<h3 id="aborterror">5970<h3 id="aborterror">

5971 `AbortError`5971 `AbortError`


5977class AbortError extends Error {}5977class AbortError extends Error {}

5978```5978```

5979 5979 

5980`AbortError` adalah satu-satunya kelas error dalam API yang diketik SDK. Kegagalan lainnya, seperti proses Claude Code keluar atau gagal diluncurkan, menolak iterasi pesan dengan error yang tidak membawa kelas SDK untuk dicocokkan. [Troubleshooting](/docs/id/agent-sdk/troubleshooting) mengetik error tersebut menurut pesan, dengan penyebab dan perbaikan untuk masing-masing.5980`AbortError` adalah satu-satunya kelas error dalam API bertipe SDK. Kegagalan lainnya, seperti proses Claude Code keluar atau gagal diluncurkan, menolak iterasi pesan dengan error yang tidak membawa kelas SDK untuk dicocokkan. [Pemecahan masalah](/docs/id/agent-sdk/troubleshooting) mengelompokkan error tersebut berdasarkan pesan, beserta penyebab dan perbaikan untuk masing-masing.

5981 5981 

5982<h2 id="sandbox-configuration">5982<h2 id="sandbox-configuration">

5983 Konfigurasi Sandbox5983 Konfigurasi Sandbox

Details

526 526 

527Jika organisasi Anda mengirimkan header guardrail melalui kebijakan [gateway aplikasi Claude](/docs/id/claude-apps-gateway) sebagai gantinya, mereka dihitung sebagai [pengaturan yang memerlukan persetujuan](/docs/id/server-managed-settings#environment-variables-and-the-approval-dialog).527Jika organisasi Anda mengirimkan header guardrail melalui kebijakan [gateway aplikasi Claude](/docs/id/claude-apps-gateway) sebagai gantinya, mereka dihitung sebagai [pengaturan yang memerlukan persetujuan](/docs/id/server-managed-settings#environment-variables-and-the-approval-dialog).

528 528 

529Ketika guardrail memblokir respons di tengah jalan, teks yang telah di-streaming sejauh ini tetap ada dan balasan diakhiri dengan pesan yang dikonfigurasi pada guardrail untuk respons yang diblokir.

530 

529<h2 id="use-the-mantle-endpoint">531<h2 id="use-the-mantle-endpoint">

530 Gunakan endpoint Mantle532 Gunakan endpoint Mantle

531</h2>533</h2>

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.

4 4 

5# Terapkan gateway aplikasi Claude di Google Cloud5# Deploy gateway aplikasi Claude di Google Cloud

6 6 

7> Contoh praktis menjalankan gateway aplikasi Claude di Google Cloud: Cloud Run atau GKE, Cloud SQL untuk PostgreSQL, Secret Manager, dan autentikasi service-account ke Agent Platform Google Cloud.7> Contoh praktis menjalankan gateway aplikasi Claude di Google Cloud: Cloud Run atau GKE, Cloud SQL untuk PostgreSQL, Secret Manager, dan autentikasi service-account ke Agent Platform Google Cloud.

8 8 


20 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/claude-gateway-gcp-architecture.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=cb705151c69128ac0da235852d5600ab" alt="Diagram gateway aplikasi Claude di Google Cloud: klien Claude Code terhubung melalui HTTPS ke gateway (Cloud Run atau GKE), yang berjalan di dalam VPC bersama database Cloud SQL IP pribadi untuk status sesi. Gateway menandatangani pengguna melalui OIDC terhadap Google Workspace, membaca konfigurasi dan rahasia dari Secret Manager, meneruskan permintaan model ke Agent Platform, dan menarik gambarnya dari Artifact Registry saat penyebaran." width="760" height="400" data-path="images/claude-gateway-gcp-architecture.svg" />20 <img src="https://mintcdn.com/claude-code/-uq-4JE0W_JO5Er5/images/claude-gateway-gcp-architecture.svg?fit=max&auto=format&n=-uq-4JE0W_JO5Er5&q=85&s=cb705151c69128ac0da235852d5600ab" alt="Diagram gateway aplikasi Claude di Google Cloud: klien Claude Code terhubung melalui HTTPS ke gateway (Cloud Run atau GKE), yang berjalan di dalam VPC bersama database Cloud SQL IP pribadi untuk status sesi. Gateway menandatangani pengguna melalui OIDC terhadap Google Workspace, membaca konfigurasi dan rahasia dari Secret Manager, meneruskan permintaan model ke Agent Platform, dan menarik gambarnya dari Artifact Registry saat penyebaran." width="760" height="400" data-path="images/claude-gateway-gcp-architecture.svg" />

21</Frame>21</Frame>

22 22 

23Konfigurasi referensi menyediakan:23Deployment ini terdiri dari:

24 24 

25* Layanan **Cloud Run** atau **GKE** Deployment yang menjalankan kontainer gateway25* Layanan **Cloud Run** atau **GKE** Deployment yang menjalankan kontainer gateway

26* Repositori **Artifact Registry** untuk gambar gateway26* Repositori **Artifact Registry** untuk gambar gateway

27* Instans **Cloud SQL untuk PostgreSQL**, IP pribadi saja, untuk [store](/docs/id/claude-apps-gateway-config#store) gateway27* Instans **Cloud SQL untuk PostgreSQL**, IP pribadi saja, untuk [store](/docs/id/claude-apps-gateway-config#store) gateway

28* Rahasia **Secret Manager** untuk `gateway.yaml`, kunci penandatanganan JWT, rahasia klien OIDC, dan URL Postgres28* Rahasia **Secret Manager** untuk `gateway.yaml`, kunci penandatanganan JWT, rahasia klien OIDC, dan URL Postgres

29* **Service account** dengan `roles/aiplatform.user`, terlampir langsung di Cloud Run atau terikat melalui Workload Identity di GKE29* **Service account** dengan `roles/aiplatform.user`, terlampir langsung di Cloud Run atau terikat melalui Workload Identity di GKE

30* **Internal Application Load Balancer** di Cloud Run, atau **GKE Ingress** internal dari kelas `gce-internal` di GKE, untuk HTTPS30* **Front end HTTPS** yang Anda sediakan: internal Application Load Balancer di depan Cloud Run, yang menjadi acuan konfigurasi gateway dalam panduan ini tetapi tidak dibuat oleh panduan ini, atau **GKE Ingress** internal dari kelas `gce-internal` di GKE

31 31 

32<h2 id="prerequisites">32<h2 id="prerequisites">

33 Prasyarat33 Prasyarat


143 <Step title="Tulis gateway.yaml">143 <Step title="Tulis gateway.yaml">

144 Blok `upstreams` menunjuk ke Agent Platform dengan `auth: {}`, jadi gateway mengautentikasi melalui Application Default Credentials dari service account runtime. Lihat [referensi konfigurasi](/docs/id/claude-apps-gateway-config) untuk setiap bidang.144 Blok `upstreams` menunjuk ke Agent Platform dengan `auth: {}`, jadi gateway mengautentikasi melalui Application Default Credentials dari service account runtime. Lihat [referensi konfigurasi](/docs/id/claude-apps-gateway-config) untuk setiap bidang.

145 145 

146 Dua bidang `listen` bergantung pada apa yang berada di depan gateway:146 Dua bidang `listen` menjelaskan apa yang berada di depan gateway:

147 147 

148 * `public_url`: diperlukan di belakang Cloud Run atau GKE Ingress. Gateway membangun `redirect_uri` IdP dan dokumen penemuannya hanya dari nilai ini, tidak pernah dari header `X-Forwarded-*`.148 * `public_url`: origin `https://` eksternal, diperlukan untuk bind apa pun yang bukan loopback; lihat [referensi `listen`](/docs/id/claude-apps-gateway-config#listen). Gateway membangun `redirect_uri` IdP dan dokumen penemuannya hanya dari nilai ini, tidak pernah dari header `X-Forwarded-*`.

149 * `trusted_proxies`: rentang sumber front end. Gateway menghormati `X-Forwarded-For` hanya ketika peer TCP berada dalam daftar ini, kemudian berjalan melalui rantai melewati hop terpercaya, jadi batas laju sign-in per-IP dan acara audit mencatat IP pengembang daripada load balancer.149 * `trusted_proxies`: rentang sumber front end. Gateway menghormati `X-Forwarded-For` hanya ketika peer TCP berada dalam daftar ini, kemudian berjalan melalui rantai melewati hop terpercaya, jadi rate limit sign-in per-IP dan acara audit mencatat IP pengembang daripada load balancer.

150 150 

151 Atur `trusted_proxies` agar sesuai dengan front end Anda. GKE Ingress eksternal dari kelas `gce` tidak terdaftar: ini menyediakan alamat forwarding-rule publik, yang pemeriksaan [jaringan pribadi](/docs/id/claude-apps-gateway#prerequisites) `/login` menolak.151 Atur `trusted_proxies` agar sesuai dengan front end Anda. GKE Ingress eksternal dari kelas `gce` tidak terdaftar: ini menyediakan alamat forwarding-rule publik, yang pemeriksaan [jaringan pribadi](/docs/id/claude-apps-gateway#prerequisites) `/login` menolak.

152 152 


179 179 

180 store:180 store:

181 postgres_url: ${GATEWAY_POSTGRES_URL} # GKE: ${file:/secrets/postgres-url}181 postgres_url: ${GATEWAY_POSTGRES_URL} # GKE: ${file:/secrets/postgres-url}

182 # readiness_grace_seconds: 300 # keep passing the readiness probe

183 # through a Cloud SQL failover

182 184 

183 upstreams:185 upstreams:

184 - provider: vertex186 - provider: vertex


219 --region="$REGION" \221 --region="$REGION" \

220 --service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com" \222 --service-account="claude-gateway@${PROJECT_ID}.iam.gserviceaccount.com" \

221 --min-instances=1 \223 --min-instances=1 \

224 --max-instances=8 \

222 --timeout=3600 \225 --timeout=3600 \

223 --ingress=internal-and-cloud-load-balancing \226 --ingress=internal \

224 --network="$VPC" --subnet=cc-gateway-subnet --vpc-egress=private-ranges-only \227 --network="$VPC" --subnet=cc-gateway-subnet --vpc-egress=private-ranges-only \

225 --set-secrets=/etc/claude/gateway.yaml=gateway-config:latest,GATEWAY_JWT_SECRET=gateway-jwt-secret:latest,OIDC_CLIENT_SECRET=gateway-oidc-client-secret:latest,GATEWAY_POSTGRES_URL=gateway-postgres-url:latest \228 --set-secrets=/etc/claude/gateway.yaml=gateway-config:latest,GATEWAY_JWT_SECRET=gateway-jwt-secret:latest,OIDC_CLIENT_SECRET=gateway-oidc-client-secret:latest,GATEWAY_POSTGRES_URL=gateway-postgres-url:latest \

226 --no-invoker-iam-check229 --no-invoker-iam-check

227 ```230 ```

228 231 

229 Egress VPC langsung, melalui `--network`, `--subnet`, dan `--vpc-egress=private-ranges-only`, memungkinkan layanan menjangkau IP pribadi Cloud SQL secara langsung. Egress publik ke endpoint Agent Platform dan `accounts.google.com` langsung ke internet daripada melalui VPC, jadi Cloud NAT tidak diperlukan.232 Egress VPC langsung, melalui `--network`, `--subnet`, dan `--vpc-egress=private-ranges-only`, memungkinkan layanan menjangkau IP pribadi Cloud SQL secara langsung. Setiap instans memegang hingga [`store.max_connections`](/docs/id/claude-apps-gateway-config#store) koneksi Postgres, lima secara default, jadi jaga agar jumlah instans maksimum × `store.max_connections` tetap di bawah batas koneksi tier Cloud SQL Anda; [aset referensi](#terraform-reference) membatasi instans pada 8 untuk tier `db-g1-small` karena alasan ini. Egress publik ke endpoint Agent Platform milik Google Cloud dan `accounts.google.com` langsung ke internet daripada melalui VPC, jadi Cloud NAT tidak diperlukan.

230 233 

231 Pemeriksaan IAM invoker harus terbuka atau dinonaktifkan. Gateway menjalankan OIDC-nya sendiri dan kliennya tidak membawa token GCP, jadi pemeriksaan invoker Cloud Run harus mengakui permintaan yang tidak diautentikasi. Autentikasi OIDC gateway mengautentikasi permintaan setelah mencapai kontainer, dengan `allowed_email_domains` membatasi domain mana yang dapat masuk.234 Pemeriksaan IAM invoker harus terbuka atau dinonaktifkan. Gateway menjalankan OIDC-nya sendiri dan kliennya tidak membawa token GCP, jadi pemeriksaan invoker Cloud Run harus mengakui permintaan yang tidak diautentikasi. Autentikasi OIDC gateway mengautentikasi permintaan setelah mencapai kontainer, dengan `allowed_email_domains` membatasi domain mana yang dapat masuk.

232 235 


239 242 

240 Secara default URL Cloud Run `*.run.app` diselesaikan ke alamat publik, yang pemeriksaan [jaringan pribadi](/docs/id/claude-apps-gateway#prerequisites) `/login` menolak. Dua topologi memberikan pengembang nama host yang dapat diselesaikan secara pribadi, dan Cloud Run tidak menyediakan keduanya untuk Anda:243 Secara default URL Cloud Run `*.run.app` diselesaikan ke alamat publik, yang pemeriksaan [jaringan pribadi](/docs/id/claude-apps-gateway#prerequisites) `/login` menolak. Dua topologi memberikan pengembang nama host yang dapat diselesaikan secara pribadi, dan Cloud Run tidak menyediakan keduanya untuk Anda:

241 244 

242 * **Internal Application Load Balancer**, topologi yang diasumsikan perintah deploy di atas: terapkan dengan `--ingress=internal-and-cloud-load-balancing`, sediakan Internal Application Load Balancer di depan layanan dengan nama DNS internal dan sertifikat, dan atur `listen.public_url` ke nama host itu.245 * **Internal Application Load Balancer**, topologi yang diasumsikan oleh `gateway.yaml` di halaman ini: sediakan Internal Application Load Balancer di depan layanan dengan nama DNS internal dan sertifikat, dan atur `listen.public_url` ke nama host itu. Pengaturan ingress `internal` sudah mengizinkan lalu lintas dari Internal Application Load Balancer; `internal-and-cloud-load-balancing` juga mengizinkan External Application Load Balancer, yang alamat publiknya ditolak oleh pemeriksaan jaringan pribadi `/login`, sehingga tidak ada topologi di halaman ini yang membutuhkannya.

243 * **Ingress internal saja tanpa load balancer**: terapkan dengan `--ingress=internal` dan biarkan `listen.public_url` sebagai URL `*.run.app`, default dalam [aset referensi](#terraform-reference) di bawah. Agar `*.run.app` diselesaikan secara pribadi, tim jaringan Anda harus sudah mengoperasikan endpoint Private Service Connect untuk Google APIs, zona DNS pribadi Cloud yang menyelesaikan `*.run.app` ke dalamnya, dan perutean on-premises ke endpoint itu.246 * **Ingress internal saja tanpa load balancer**: biarkan perintah deploy apa adanya dan biarkan `listen.public_url` sebagai URL `*.run.app`, default dalam [aset referensi](#terraform-reference) di bawah. Agar `*.run.app` diselesaikan secara pribadi, tim jaringan Anda harus sudah mengoperasikan endpoint Private Service Connect untuk Google APIs, zona DNS pribadi Cloud yang menyelesaikan `*.run.app` ke dalamnya, dan perutean on-premises ke endpoint itu.

244 247 

245 [Panduan jaringan pribadi Google untuk Cloud Run](https://cloud.google.com/run/docs/securing/private-networking) mencakup infrastruktur yang kedua opsi butuhkan. Verifikasi sign-in setelah gateway melayani pada nama host pribadi; sampai saat itu, konfirmasi kontainer boot dari lognya di Cloud Run.248 [Panduan jaringan pribadi Google untuk Cloud Run](https://cloud.google.com/run/docs/securing/private-networking) mencakup infrastruktur yang kedua opsi butuhkan. Verifikasi sign-in setelah gateway melayani pada nama host pribadi; sampai saat itu, konfirmasi kontainer boot dari lognya di Cloud Run.

246 249 


288 </Step>291 </Step>

289 292 

290 <Step title="Dorong URL gateway ke mesin pengembang">293 <Step title="Dorong URL gateway ke mesin pengembang">

291 Gateway sekarang berjalan, tetapi pengembang tidak dapat menjangkaunya dari `/login` sampai URL gateway berada di mesin mereka. Atur `forceLoginMethod` dan `forceLoginGatewayUrl` dalam [file pengaturan terkelola](/docs/id/claude-apps-gateway#set-the-gateway-url) yang Anda terapkan ke setiap perangkat melalui MDM. Tidak ada opsi gateway di pemilih login untuk pengembang memilih secara manual.294 Gateway sekarang berjalan, tetapi pengembang tidak dapat menjangkaunya dari `/login` sampai URL gateway berada di mesin mereka. Deploy [cuplikan pengaturan terkelola](/docs/id/claude-apps-gateway#set-the-gateway-url) lengkap, dengan `forceLoginMethod`, `forceLoginGatewayUrl`, dan opt-in `parentSettingsBehavior: "merge"`, ke setiap perangkat melalui MDM. Tidak ada opsi gateway di pemilih login untuk pengembang memilih secara manual.

292 </Step>295 </Step>

293</Steps>296</Steps>

294 297 


302* `terraform/`: penyebaran yang sama sebagai infrastruktur-sebagai-kode, untuk penyebaran greenfield: penerapan bertarget untuk membuat repositori Artifact Registry, kemudian membangun dan mendorong gambar, kemudian penerapan penuh305* `terraform/`: penyebaran yang sama sebagai infrastruktur-sebagai-kode, untuk penyebaran greenfield: penerapan bertarget untuk membuat repositori Artifact Registry, kemudian membangun dan mendorong gambar, kemudian penerapan penuh

303* `gateway.yaml.example` dan `Dockerfile` untuk gambar runtime distroless306* `gateway.yaml.example` dan `Dockerfile` untuk gambar runtime distroless

304 307 

305Artefak default ingress Cloud Run ke `internal`, jadi tidak ada load balancer yang diperlukan. Untuk mencocokkan penyebaran produksi-di-belakang-ALB halaman ini, jalankan `setup.sh` dengan `INGRESS=internal-and-cloud-load-balancing`, atau atur variabel Terraform `ingress` ke `INGRESS_TRAFFIC_INTERNAL_LOAD_BALANCER`. Artefak juga default lapisan invoker ke pemberian `run.invoker` `allUsers` daripada `--no-invoker-iam-check`, kebalikan dari panduan halaman ini; keduanya berfungsi, dan pilihan bergantung pada batasan kebijakan organisasi Anda.308Artefak menetapkan default ingress Cloud Run ke `internal`, sesuai dengan perintah deploy di halaman ini; pengaturan tersebut berfungsi dengan atau tanpa internal Application Load Balancer di depan layanan, dan artefak juga tidak membuat load balancer tersebut. Artefak juga default lapisan invoker ke pemberian `run.invoker` `allUsers` daripada `--no-invoker-iam-check`, kebalikan dari panduan halaman ini; keduanya berfungsi, dan pilihan bergantung pada batasan kebijakan organisasi Anda.

306 309 

307Aset disediakan sebagai contoh kerja, bukan sebagai artefak produksi yang didukung; tinjau dan sesuaikan dengan lingkungan Anda.310Aset disediakan sebagai contoh kerja, bukan sebagai artefak produksi yang didukung; tinjau dan sesuaikan dengan lingkungan Anda.

308 311 


317| Cloud Run mengembalikan `403 Forbidden` sebelum mencapai kontainer | Pemeriksaan IAM invoker masih diaktifkan | Terapkan dengan `--no-invoker-iam-check`, atau berikan peran `run.invoker` kepada `allUsers` dengan `--allow-unauthenticated` |320| Cloud Run mengembalikan `403 Forbidden` sebelum mencapai kontainer | Pemeriksaan IAM invoker masih diaktifkan | Terapkan dengan `--no-invoker-iam-check`, atau berikan peran `run.invoker` kepada `allUsers` dengan `--allow-unauthenticated` |

318| `--no-invoker-iam-check` ditolak dengan `invoker_iam_disabled is not currently available` | Diblokir oleh `constraints/run.managed.requireInvokerIam` | Gunakan `--allow-unauthenticated`. Jika Domain Restricted Sharing melalui `constraints/iam.allowedPolicyMemberDomains` juga memblokir itu, gunakan jalur GKE, yang mengekspos gateway di lapisan jaringan tanpa ikatan `allUsers`. |321| `--no-invoker-iam-check` ditolak dengan `invoker_iam_disabled is not currently available` | Diblokir oleh `constraints/run.managed.requireInvokerIam` | Gunakan `--allow-unauthenticated`. Jika Domain Restricted Sharing melalui `constraints/iam.allowedPolicyMemberDomains` juga memblokir itu, gunakan jalur GKE, yang mengekspos gateway di lapisan jaringan tanpa ikatan `allUsers`. |

319| `Container manifest type … must support amd64/linux` saat penyebaran | Gambar dibangun di host non-amd64, atau buildx memancarkan indeks gambar OCI | Bangun dengan `--platform=linux/amd64 --provenance=false` |322| `Container manifest type … must support amd64/linux` saat penyebaran | Gambar dibangun di host non-amd64, atau buildx memancarkan indeks gambar OCI | Bangun dengan `--platform=linux/amd64 --provenance=false` |

320| Boot gateway keluar dengan kesalahan timeout koneksi Postgres di Cloud Run | Layanan tidak terlampir ke VPC, atau Cloud SQL tidak memiliki IP pribadi di VPC itu; store berhenti menunggu setelah 5 detik | Terapkan dengan `--network` dan `--subnet` untuk egress VPC Langsung, dan buat instans Cloud SQL dengan `--no-assign-ip` dan `--network` menunjuk ke VPC yang sama |323| Boot gateway keluar dengan kesalahan timeout koneksi Postgres di Cloud Run | Layanan tidak terlampir ke VPC, atau Cloud SQL tidak memiliki IP pribadi di VPC itu | Terapkan dengan `--network` dan `--subnet` untuk egress VPC Langsung, dan buat instans Cloud SQL dengan `--no-assign-ip` dan `--network` menunjuk ke VPC yang sama |

321| Permintaan Agent Platform mengembalikan `403 PERMISSION_DENIED` | Runtime tidak menggunakan service account `claude-gateway`, atau model tidak diaktifkan di Model Garden untuk proyek | Atur `--service-account` di Cloud Run atau ikat Workload Identity di GKE, dan aktifkan setiap model Claude di Model Garden untuk wilayah target |324| Permintaan Agent Platform mengembalikan `403 PERMISSION_DENIED` | Runtime tidak menggunakan service account `claude-gateway`, atau model tidak diaktifkan di Model Garden untuk proyek | Atur `--service-account` di Cloud Run atau ikat Workload Identity di GKE, dan aktifkan setiap model Claude di Model Garden untuk wilayah target |

322| Respons streaming terpotong setelah durasi tetap | Timeout permintaan front-end: layanan backend load balancer di belakang GKE Ingress default ke 30 detik dan Cloud Run ke 300 detik | Lampirkan BackendConfig dengan `timeoutSec` yang ditingkatkan di GKE, atau terapkan dengan `--timeout=3600` di Cloud Run |325| Respons streaming terpotong setelah durasi tetap | Timeout permintaan front-end: layanan backend load balancer di belakang GKE Ingress default ke 30 detik dan Cloud Run ke 300 detik | Lampirkan BackendConfig dengan `timeoutSec` yang ditingkatkan di GKE, atau terapkan dengan `--timeout=3600` di Cloud Run |

323 326 

cli-reference.md +15 −7

Details

26| `claude install [version]` | Instal atau instal ulang binary asli. Menerima versi seperti `2.1.118`, atau `stable` atau `latest`. Lihat [Instal versi tertentu](/docs/id/setup#install-a-specific-version) | `claude install stable` |26| `claude install [version]` | Instal atau instal ulang binary asli. Menerima versi seperti `2.1.118`, atau `stable` atau `latest`. Lihat [Instal versi tertentu](/docs/id/setup#install-a-specific-version) | `claude install stable` |

27| `claude auth login` | Masuk ke akun Anthropic Anda. Gunakan `--email` untuk mengisi email Anda sebelumnya, `--sso` untuk memaksa autentikasi SSO, dan `--console` untuk masuk dengan Anthropic Console untuk penagihan penggunaan API alih-alih langganan Claude | `claude auth login --console` |27| `claude auth login` | Masuk ke akun Anthropic Anda. Gunakan `--email` untuk mengisi email Anda sebelumnya, `--sso` untuk memaksa autentikasi SSO, dan `--console` untuk masuk dengan Anthropic Console untuk penagihan penggunaan API alih-alih langganan Claude | `claude auth login --console` |

28| `claude auth logout` | Keluar dari akun Anthropic Anda | `claude auth logout` |28| `claude auth logout` | Keluar dari akun Anthropic Anda | `claude auth logout` |

29| `claude auth status` | Tampilkan status autentikasi sebagai JSON. Gunakan `--text` untuk output yang dapat dibaca manusia. Keluar dengan kode 0 jika masuk, 1 jika tidak. JSON mencakup bidang `configDirectory` yang menamai [direktori konfigurasi](/docs/id/claude-directory) yang digunakan CLI. Bidang ini memerlukan Claude Code v2.1.268 atau lebih baru | `claude auth status` |29| `claude auth status` | Tampilkan status autentikasi sebagai JSON. Gunakan `--text` untuk output yang dapat dibaca manusia. Keluar dengan kode 0 jika masuk, 1 jika tidak. JSON mencakup bidang `configDirectory` yang menamai [direktori konfigurasi](/docs/id/claude-directory) yang digunakan CLI. Bidang ini memerlukan Claude Code v2.1.268 atau lebih baru. Bidang `authMethod` pada JSON bernilai salah satu dari `none`, `claude.ai`, `oauth_token`, `api_key`, `api_key_helper`, atau `third_party` | `claude auth status` |

30| `claude agents` | Buka [tampilan agen](/docs/id/agent-view) untuk memantau dan mengirim sesi latar belakang paralel. Gunakan `--cwd <path>` untuk menampilkan hanya sesi yang dimulai di bawah direktori tersebut, atau `--json` untuk mencetak sesi langsung sebagai array JSON untuk skrip (`--json --all` juga mencakup sesi latar belakang yang selesai). Lewatkan `--permission-mode`, `--model`, `--effort`, atau `--agent` untuk menetapkan [default untuk sesi yang dikirim](/docs/id/agent-view#permission-mode-model-and-effort). Menerima `--settings`, `--add-dir`, `--plugin-dir`, dan `--mcp-config` seperti perintah `claude` tingkat atas. Membuka tampilan agen memerlukan terminal interaktif | `claude agents --json` |30| `claude agents` | Buka [tampilan agent](/docs/id/agent-view) untuk memantau dan mengirim sesi latar belakang paralel. Gunakan `--cwd <path>` untuk menampilkan hanya sesi yang dimulai di bawah direktori tersebut, atau `--json` untuk mencetak sesi aktif sebagai array JSON untuk skrip (`--json --all` juga mencakup sesi latar belakang yang selesai). Lewatkan `--permission-mode`, `--model`, `--effort`, atau `--agent` untuk menetapkan [default untuk sesi yang dikirim](/docs/id/agent-view#permission-mode-model-and-effort). Menerima `--settings`, `--add-dir`, `--plugin-dir`, dan `--mcp-config` seperti perintah `claude` tingkat atas. Membuka tampilan agent memerlukan terminal interaktif | `claude agents --json` |

31| `claude attach <id>` | Lampirkan ke [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) di terminal ini | `claude attach 7c5dcf5d` |31| `claude attach <id>` | Lampirkan ke [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) di terminal ini | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | Cetak aturan pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) bawaan sebagai JSON. Gunakan `claude auto-mode config` untuk melihat konfigurasi efektif Anda dengan pengaturan yang diterapkan. `--label <prefix>` mencetak hanya aturan yang labelnya dimulai dengan awalan tersebut, cocok tanpa memperhatikan huruf besar-kecil. Memerlukan Claude Code v2.1.208 atau lebih baru | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | Cetak aturan pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) bawaan sebagai JSON. Gunakan `claude auto-mode config` untuk melihat konfigurasi efektif Anda dengan pengaturan yang diterapkan. `--label <prefix>` mencetak hanya aturan yang labelnya dimulai dengan awalan tersebut, cocok tanpa memperhatikan huruf besar-kecil. Memerlukan Claude Code v2.1.208 atau lebih baru | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | Pulihkan konfigurasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) default dengan menghapus bagian `autoMode` dari file pengaturan pengguna Anda. Meminta konfirmasi sebelum menulis; lewatkan `-y`/`--yes` untuk melewati prompt. Aturan dari [pengaturan yang dikelola](/docs/id/server-managed-settings) atau flag `--settings` masih berlaku. Memerlukan Claude Code v2.1.212 atau lebih baru. Lihat [Periksa default dan konfigurasi efektif Anda](/docs/id/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | Pulihkan konfigurasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) default dengan menghapus bagian `autoMode` dari file pengaturan pengguna Anda. Meminta konfirmasi sebelum menulis; lewatkan `-y`/`--yes` untuk melewati prompt. Aturan dari [pengaturan terkelola](/docs/id/server-managed-settings) atau flag `--settings` masih berlaku. Memerlukan Claude Code v2.1.212 atau lebih baru. Lihat [Periksa default dan konfigurasi efektif Anda](/docs/id/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

34| `claude daemon status` | Cetak status [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang, versi, direktori soket, dan jumlah pekerja untuk diagnostik. Keluar dengan 1 jika supervisor tidak berjalan | `claude daemon status` |34| `claude daemon status` | Cetak status [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang, versi, direktori soket, dan jumlah pekerja untuk diagnostik. Keluar dengan 1 jika supervisor tidak berjalan | `claude daemon status` |

35| `claude daemon stop --any` | Hentikan [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang dan sesi yang dihosting. Lewatkan `--keep-workers` untuk membiarkan sesi latar belakang tetap berjalan sehingga supervisor berikutnya dapat terhubung kembali ke sesi tersebut. `--any` mengonfirmasi penghentian supervisor sesuai permintaan, yang merupakan default. Gunakan ini untuk pulih dari [supervisor yang tidak responsif](/docs/id/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |35| `claude daemon stop --any` | Hentikan [supervisor](/docs/id/agent-view#the-supervisor-process) sesi latar belakang dan sesi yang dihosting. Lewatkan `--keep-workers` untuk membiarkan sesi latar belakang tetap berjalan sehingga supervisor berikutnya dapat terhubung kembali ke sesi tersebut. `--any` mengonfirmasi penghentian supervisor sesuai permintaan, yang merupakan default. Gunakan ini untuk pulih dari [supervisor yang tidak responsif](/docs/id/agent-view#agent-view-says-the-background-service-did-not-respond) | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | Cetak diagnostik instalasi dan pengaturan hanya-baca dari terminal tanpa memulai sesi, termasuk kesehatan instalasi, kesalahan validasi file pengaturan, dan kelayakan Remote Control. Untuk pemeriksaan pengaturan dalam sesi yang juga dapat menerapkan perbaikan, jalankan [`/doctor`](/docs/id/commands#all-commands) | `claude doctor` |36| `claude doctor` | Cetak diagnostik instalasi dan pengaturan read-only dari terminal tanpa memulai sesi, termasuk kesehatan instalasi, kesalahan validasi file pengaturan, dan kelayakan Remote Control. Untuk pemeriksaan pengaturan dalam sesi yang juga dapat menerapkan perbaikan, jalankan [`/doctor`](/docs/id/commands#all-commands) | `claude doctor` |

37| `claude import [source]` | Mulai sesi interaktif yang menjalankan [`/import`](/docs/id/commands#all-commands) untuk membawa konfigurasi dari agen pengkodean lain ke Claude Code. Menerima opsi `--dry-run` dan `--yes` yang sama dengan perintah. Tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform di AWS. Juga tidak tersedia ketika Anda mematikan [pengambilan flag fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching). Memerlukan Claude Code v2.1.213 atau lebih baru | `claude import codex --dry-run` |37| `claude import [source]` | Mulai sesi interaktif yang menjalankan [`/import`](/docs/id/commands#all-commands) untuk membawa konfigurasi dari agent pengkodean lain ke Claude Code. Menerima opsi `--dry-run` dan `--yes` yang sama dengan perintah. Tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform di AWS. Juga tidak tersedia ketika Anda mematikan [pengambilan flag fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching). Memerlukan Claude Code v2.1.213 atau lebih baru | `claude import codex --dry-run` |

38| `claude logs <id>` | Cetak output terbaru dari [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |38| `claude logs <id>` | Cetak output terbaru dari [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |

39| `claude mcp` | Konfigurasi server Model Context Protocol (MCP) | Lihat [dokumentasi Claude Code MCP](/docs/id/mcp). |39| `claude mcp` | Konfigurasi server Model Context Protocol (MCP) | Lihat [dokumentasi Claude Code MCP](/docs/id/mcp). |

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


47| `claude self-hosted-runner` | Mulai proses runner yang mendaftarkan mesin atau kontainer ini dengan [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments) dan menghosting sesi cloud Claude Code di infrastruktur Anda. Jalankan `claude self-hosted-runner setup` untuk panduan operator interaktif, `claude self-hosted-runner doctor` untuk [mendiagnosis runner yang diterapkan](/docs/id/self-hosted-environments-deploy#troubleshooting), dan `claude self-hosted-runner orchestrator` untuk menelurkan [runner sesuai permintaan](/docs/id/self-hosted-environments-configuration#on-demand-runners). Memerlukan Claude Code v2.1.224 atau lebih baru | `claude self-hosted-runner setup` |47| `claude self-hosted-runner` | Mulai proses runner yang mendaftarkan mesin atau kontainer ini dengan [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments) dan menghosting sesi cloud Claude Code di infrastruktur Anda. Jalankan `claude self-hosted-runner setup` untuk panduan operator interaktif, `claude self-hosted-runner doctor` untuk [mendiagnosis runner yang diterapkan](/docs/id/self-hosted-environments-deploy#troubleshooting), dan `claude self-hosted-runner orchestrator` untuk menelurkan [runner sesuai permintaan](/docs/id/self-hosted-environments-configuration#on-demand-runners). Memerlukan Claude Code v2.1.224 atau lebih baru | `claude self-hosted-runner setup` |

48| `claude setup-token` | Hasilkan token OAuth yang tahan lama untuk CI dan skrip. Mencetak token ke terminal tanpa menyimpannya. Memerlukan langganan Claude. Lihat [Hasilkan token yang tahan lama](/docs/id/authentication#generate-a-long-lived-token) | `claude setup-token` |48| `claude setup-token` | Hasilkan token OAuth yang tahan lama untuk CI dan skrip. Mencetak token ke terminal tanpa menyimpannya. Memerlukan langganan Claude. Lihat [Hasilkan token yang tahan lama](/docs/id/authentication#generate-a-long-lived-token) | `claude setup-token` |

49| `claude stop <id>` | Hentikan [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell). Juga menerima `claude kill` | `claude stop 7c5dcf5d` |49| `claude stop <id>` | Hentikan [sesi latar belakang](/docs/id/agent-view#manage-sessions-from-the-shell). Juga menerima `claude kill` | `claude stop 7c5dcf5d` |

50| `claude ultrareview [target]` | Jalankan [ultrareview](/docs/id/ultrareview#run-ultrareview-non-interactively) secara non-interaktif. Mencetak temuan ke stdout dan keluar dengan 0 saat berhasil atau 1 saat gagal. Gunakan `--json` untuk payload mentah dan `--timeout <minutes>` untuk mengganti default 45 menit. Gunakan `--post` pada target pull request `github.com` untuk memposting temuan yang selesai ke PR sebagai satu komentar biasa dari akun GitHub Anda. `--no-post` adalah default. `--post` dan `--no-post` memerlukan Claude Code v2.1.227 atau lebih baru. Lihat [Posting temuan ke pull request](/docs/id/ultrareview#post-findings-to-the-pull-request) | `claude ultrareview 1234 --json` |50| `claude ultrareview [target]` | Jalankan [ultrareview](/docs/id/ultrareview#run-ultrareview-non-interactively) secara non-interaktif. Mencetak temuan ke stdout dan keluar dengan 0 saat berhasil atau 1 saat gagal. Gunakan `--json` untuk payload mentah dan `--timeout <minutes>` untuk menimpa default 45 menit. Gunakan `--post` pada target pull request `github.com` untuk memposting temuan yang selesai ke PR sebagai satu komentar biasa dari akun GitHub Anda. `--no-post` adalah default. `--post` dan `--no-post` memerlukan Claude Code v2.1.227 atau lebih baru. Lihat [Posting temuan ke pull request](/docs/id/ultrareview#post-findings-to-the-pull-request) | `claude ultrareview 1234 --json` |

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 


156| `--append-system-prompt-file` | Menambahkan konten file ke prompt default | `claude --append-system-prompt-file ./style-rules.txt` |156| `--append-system-prompt-file` | Menambahkan konten file ke prompt default | `claude --append-system-prompt-file ./style-rules.txt` |

157| `--system-prompt-snapshot` | Dengan `off`, membangun kembali prompt pada setiap permintaan. Dengan `on`, default, menggunakan kembali prompt yang dicatat di mana [pencatatan berlaku](#system-prompt-flags-in-resumed-conversations) | `claude --append-system-prompt "Draft rules" --system-prompt-snapshot off` |157| `--system-prompt-snapshot` | Dengan `off`, membangun kembali prompt pada setiap permintaan. Dengan `on`, default, menggunakan kembali prompt yang dicatat di mana [pencatatan berlaku](#system-prompt-flags-in-resumed-conversations) | `claude --append-system-prompt "Draft rules" --system-prompt-snapshot off` |

158 158 

159`--system-prompt` dan `--system-prompt-file` saling eksklusif. Bendera append dapat digabungkan dengan bendera penggantian apa pun.159Anda dapat menggabungkan flag-flag ini. Untuk mengganti prompt default dan tetap menambahkan teks Anda sendiri, teruskan `--append-system-prompt` atau `--append-system-prompt-file` bersama dengan `--system-prompt` atau `--system-prompt-file`. Dengan Claude Code v2.1.283 atau lebih baru, Anda juga dapat meneruskan sebuah flag bersama dengan bentuk filenya sendiri, seperti `--append-system-prompt` dengan `--append-system-prompt-file`, dan Claude Code menggunakan keduanya.

160 

161Misalnya, jalankan perintah berikut di shell Anda untuk menambahkan panduan gaya dari file sekaligus satu instruksi tambahan:

162 

163```bash theme={null}

164claude -p --append-system-prompt-file ./style.md --append-system-prompt "Always reply in French" "Summarize README.md"

165```

166 

167Claude menerima system prompt default diikuti oleh konten `style.md`, sebuah baris kosong, lalu `Always reply in French`. Konten file selalu berada di depan meskipun Anda meneruskan `--append-system-prompt` sebelum `--append-system-prompt-file`.

160 168 

161Ketika teks penggantian menggabungkan instruksi yang sama pada setiap jalankan dengan konteks yang berubah per jalankan, tambahkan baris yang berisi hanya `__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__` antara instruksi dan konteks. Claude Code membagi prompt pada baris pertama seperti itu dan menghapus baris itu, jadi bagian di atasnya tetap di-cache sementara bagian di bawahnya berubah. Memerlukan Claude Code v2.1.275 atau lebih baru. [Cache bagian statis dari prompt khusus](/docs/id/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt) mencantumkan konfigurasi di mana pemisahan berlaku.169Ketika teks penggantian menggabungkan instruksi yang sama pada setiap jalankan dengan konteks yang berubah per jalankan, tambahkan baris yang berisi hanya `__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__` antara instruksi dan konteks. Claude Code membagi prompt pada baris pertama seperti itu dan menghapus baris itu, jadi bagian di atasnya tetap di-cache sementara bagian di bawahnya berubah. Memerlukan Claude Code v2.1.275 atau lebih baru. [Cache bagian statis dari prompt khusus](/docs/id/agent-sdk/modifying-system-prompts#cache-the-static-part-of-a-custom-prompt) mencantumkan konfigurasi di mana pemisahan berlaku.

162 170 

commands.md +1 −1

Details

99| `/goal [condition\|clear]` | Atur [tujuan](/docs/id/goal): Claude terus bekerja di seluruh giliran sampai kondisi terpenuhi atau tujuan [jelas untuk alasan lain](/docs/id/goal#how-evaluation-works). Tanpa argumen, menunjukkan tujuan saat ini atau yang paling baru dicapai. `clear`, `stop`, `off`, `reset`, `none`, atau `cancel` menghapus tujuan aktif lebih awal |99| `/goal [condition\|clear]` | Atur [tujuan](/docs/id/goal): Claude terus bekerja di seluruh giliran sampai kondisi terpenuhi atau tujuan [jelas untuk alasan lain](/docs/id/goal#how-evaluation-works). Tanpa argumen, menunjukkan tujuan saat ini atau yang paling baru dicapai. `clear`, `stop`, `off`, `reset`, `none`, atau `cancel` menghapus tujuan aktif lebih awal |

100| `/heapdump` | Tulis snapshot heap JavaScript dan rincian memori ke `~/Desktop`, atau direktori home Anda di Linux tanpa folder Desktop, untuk mendiagnosis penggunaan memori tinggi. Lampirkan hanya file `-diagnostics.json` saat melaporkan masalah memori; `.heapsnapshot` berisi percakapan lengkap dan kredensial Anda, jadi jangan bagikan. [Tersembunyi dari menu perintah](#how-the-command-menu-matches-what-you-type); ketik sepenuhnya. Lihat [apa yang harus dilakukan dengan output](/docs/id/troubleshooting#high-cpu-or-memory-usage) |100| `/heapdump` | Tulis snapshot heap JavaScript dan rincian memori ke `~/Desktop`, atau direktori home Anda di Linux tanpa folder Desktop, untuk mendiagnosis penggunaan memori tinggi. Lampirkan hanya file `-diagnostics.json` saat melaporkan masalah memori; `.heapsnapshot` berisi percakapan lengkap dan kredensial Anda, jadi jangan bagikan. [Tersembunyi dari menu perintah](#how-the-command-menu-matches-what-you-type); ketik sepenuhnya. Lihat [apa yang harus dilakukan dengan output](/docs/id/troubleshooting#high-cpu-or-memory-usage) |

101| `/help` | Tampilkan bantuan dan perintah tersedia |101| `/help` | Tampilkan bantuan dan perintah tersedia |

102| `/hooks` | Lihat konfigurasi [hook](/docs/id/hooks) untuk acara alat |102| `/hooks` | Lihat konfigurasi [hook](/docs/id/hooks#the-%2Fhooks-menu) |

103| `/ide` | Kelola integrasi IDE dan tampilkan status |103| `/ide` | Kelola integrasi IDE dan tampilkan status |

104| `/import [codex\|gemini\|cursor] [--dry-run] [--yes]` | Bawa konfigurasi dari OpenAI Codex, Google Gemini CLI, atau Cursor di mesin Anda ke Claude Code, termasuk file instruksi, server MCP, perintah, subagent, dan skill. Dalam [mode non-interaktif](/docs/id/headless) dengan `-p`, `/import` mencantumkan apa yang ditemukan dan memberikan perintah yang mengonfirmasi impor. Tambahkan `--dry-run` untuk pratinjau tanpa menulis apa pun, atau `--yes` untuk melewati pemilih interaktif. Tidak tersedia di Amazon Bedrock, Platform Agen Google Cloud, Microsoft Foundry, atau Claude Platform di AWS, atau melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway#availability-and-limitations). Juga tidak tersedia ketika Anda mematikan [pengambilan bendera fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching). Memerlukan Claude Code v2.1.213 atau lebih baru. Mengimpor dari Cursor memerlukan v2.1.265 atau lebih baru |104| `/import [codex\|gemini\|cursor] [--dry-run] [--yes]` | Bawa konfigurasi dari OpenAI Codex, Google Gemini CLI, atau Cursor di mesin Anda ke Claude Code, termasuk file instruksi, server MCP, perintah, subagent, dan skill. Dalam [mode non-interaktif](/docs/id/headless) dengan `-p`, `/import` mencantumkan apa yang ditemukan dan memberikan perintah yang mengonfirmasi impor. Tambahkan `--dry-run` untuk pratinjau tanpa menulis apa pun, atau `--yes` untuk melewati pemilih interaktif. Tidak tersedia di Amazon Bedrock, Platform Agen Google Cloud, Microsoft Foundry, atau Claude Platform di AWS, atau melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway#availability-and-limitations). Juga tidak tersedia ketika Anda mematikan [pengambilan bendera fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching). Memerlukan Claude Code v2.1.213 atau lebih baru. Mengimpor dari Cursor memerlukan v2.1.265 atau lebih baru |

105| `/init` | Inisialisasi proyek dengan panduan `CLAUDE.md`. Atur `CLAUDE_CODE_NEW_INIT=1` untuk alur interaktif yang juga memandu melalui skill, hook, dan file memori pribadi. Jika `/init` menemukan konfigurasi OpenAI Codex atau Google Gemini CLI, ia menawarkan untuk membawanya dengan `/import` |105| `/init` | Inisialisasi proyek dengan panduan `CLAUDE.md`. Atur `CLAUDE_CODE_NEW_INIT=1` untuk alur interaktif yang juga memandu melalui skill, hook, dan file memori pribadi. Jika `/init` menemukan konfigurasi OpenAI Codex atau Google Gemini CLI, ia menawarkan untuk membawanya dengan `/import` |

Details

65 Periksa hooks65 Periksa hooks

66</h2>66</h2>

67 67 

68Jalankan `/hooks` untuk mencantumkan setiap hook yang terdaftar untuk sesi saat ini, dikelompokkan berdasarkan acara. Jika hook yang Anda tentukan tidak muncul, itu tidak dibaca: hooks berada di bawah kunci `"hooks"` dalam file pengaturan, bukan dalam file mandiri.68Jalankan `/hooks` untuk mencantumkan setiap hook yang terdaftar untuk sesi saat ini, dikelompokkan berdasarkan acara. Jika hook yang Anda tentukan tidak muncul, Claude Code tidak memuatnya. Periksa penyebab berikut:

69 

70* Hook didefinisikan dalam file mandiri. Hooks berada di bawah kunci `"hooks"` dalam [file pengaturan](/docs/id/settings#settings-files).

71* Nilai `matcher` adalah array, bukan string tunggal. Claude Code mencantumkan entri tersebut sebagai pengaturan yang tidak valid saat Anda memulai sesi interaktif dan di `claude doctor`. Jika array berada di bawah `PreToolUse` atau `PermissionRequest`, hook lain dari file tersebut juga tidak ada yang dimuat.

69 72 

70Jika hook muncul tetapi tidak aktif, matcher adalah penyebab yang biasa. Periksa matcher untuk kesalahan berikut:73Jika hook muncul tetapi tidak aktif, matcher adalah penyebab yang biasa. Periksa matcher untuk kesalahan berikut:

71 74 

72* Bidang `matcher` adalah string tunggal yang menggunakan `|` untuk mencocokkan beberapa nama alat, misalnya `"Edit|Write"`. Pemisah `,` setara, jadi `"Edit,Write"` mencocokkan alat yang sama. Sebelum v2.1.191, koma jatuh ke evaluasi regex dan matcher tidak pernah cocok, jadi gunakan `|` jika Anda belum berada di v2.1.191.75* Bidang `matcher` adalah string tunggal yang menggunakan `|` untuk mencocokkan beberapa nama alat, misalnya `"Edit|Write"`. Pemisah `,` setara, jadi `"Edit,Write"` mencocokkan alat yang sama. Sebelum v2.1.191, koma jatuh ke evaluasi regex dan matcher tidak pernah cocok, jadi gunakan `|` jika Anda belum berada di v2.1.191.

73* Nama alat yang salah eja menghasilkan matcher yang tidak mencocokkan apa pun, jadi hook gagal diam-diam.76* Nama alat yang salah eja menghasilkan matcher yang tidak mencocokkan apa pun, jadi hook gagal diam-diam.

74* Nilai array adalah kesalahan schema: Claude Code menampilkan pemberitahuan kesalahan pengaturan dan menolak seluruh file pengaturan pengguna, proyek, atau lokal, `claude doctor` melaporkan kegagalan validasi, dan tidak ada hook dari file tersebut yang muncul di `/hooks`. Dalam [pengaturan terkelola](/docs/id/managed-settings), Claude Code menghapus seluruh kunci `hooks` dari file yang berisi array, jadi tidak ada hook dari file tersebut yang berlaku. Pengaturan lain dari file masih berlaku, dan `claude doctor` mencantumkan kunci yang dihapus.

75 77 

76Saat Anda mengedit `settings.json`, perubahan berlaku dalam sesi yang berjalan setelah penundaan stabilitas file singkat, bahkan jika Anda membuat file atau folder `.claude/` proyek itu sendiri setelah sesi dimulai. Anda tidak perlu memulai ulang. Sebelum v2.1.257, Claude Code tidak mendeteksi edit dalam folder `.claude/` yang dibuat setelah sesi dimulai.78Saat Anda mengedit `settings.json`, perubahan berlaku dalam sesi yang berjalan setelah penundaan stabilitas file singkat, bahkan jika Anda membuat file atau folder `.claude/` proyek itu sendiri setelah sesi dimulai. Anda tidak perlu memulai ulang. Sebelum v2.1.257, Claude Code tidak mendeteksi edit dalam folder `.claude/` yang dibuat setelah sesi dimulai.

77 79 

env-vars.md +362 −358

Details

16* [Melihat fitur mana yang berhenti berfungsi](#features-that-need-feature-flag-fetching) ketika variabel mematikan pengambilan bendera fitur16* [Melihat fitur mana yang berhenti berfungsi](#features-that-need-feature-flag-fetching) ketika variabel mematikan pengambilan bendera fitur

17 17 

18<h2 id="set-environment-variables">18<h2 id="set-environment-variables">

19 Atur variabel lingkungan19 Atur environment variable

20</h2>20</h2>

21 21 

22Variabel yang Anda atur di shell Anda berlaku untuk sesi terminal tersebut, sementara variabel dalam file pengaturan berlaku setiap kali `claude` dijalankan.22Variabel yang Anda atur di shell Anda berlaku untuk sesi terminal tersebut, sementara variabel dalam file pengaturan berlaku setiap kali `claude` dijalankan.


56 </Tab>56 </Tab>

57</Tabs>57</Tabs>

58 58 

59Baris penugasan tidak mencetak apa pun saat berhasil, jadi konfirmasi variabel diatur dengan mencetaknya di shell yang sama sebelum Anda menjalankan `claude`:59Baris penugasan tidak mencetak apa pun saat berhasil. Untuk mengonfirmasi bahwa variabel telah diatur, cetak variabel tersebut di shell yang sama:

60 60 

61<Tabs>61<Tabs>

62 <Tab title="macOS, Linux, WSL">62 <Tab title="macOS, Linux, WSL">


124 Variabel124 Variabel

125</h2>125</h2>

126 126 

127Variabel numerik seperti timeout, anggaran token, dan jumlah percobaan ulang menerima notasi ilmiah dan ejaan pemisah digit selain digit biasa, kecuali di mana baris variabel 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` menetapkan timeout ke 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 mengaktifkan atau menonaktifkan perilaku, atur `1` atau `true` untuk mengaktifkannya dan `0` atau `false` untuk menonaktifkannya, dalam huruf apa pun.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.

131 131 

132 Beberapa variabel hanya membaca apakah Anda menetapkannya sama sekali, jadi nilai apa pun yang tidak kosong termasuk `0` mengaktifkan perilaku, dan Anda menonaktifkan perilaku dengan membatalkan penetapan variabel atau menetapkannya ke nilai kosong. Variabel-variabel ini bekerja dengan cara itu: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:

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 lainnya memiliki aturannya sendiri: `FORCE_HYPERLINK` membaca angka, jadi hanya `0` yang menonaktifkannya. Setiap baris variabel juga menyatakan aturannya sendiri.141 Satu variabel lain memiliki aturannya sendiri: `FORCE_HYPERLINK` membaca angka, sehingga hanya `0` yang mematikannya. 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`. Ketika diatur, kunci ini digunakan sebagai pengganti langganan Claude Pro, Max, Team, atau Enterprise Anda bahkan jika Anda sudah masuk. Dalam mode non-interaktif (`-p`), kunci selalu digunakan saat ada. Dalam mode interaktif, Anda diminta untuk menyetujui kunci sekali sebelum mengganti 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 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` |

147| `ANTHROPIC_AUTH_TOKEN` | Nilai khusus 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 atur di sini akan diawali dengan `Bearer `) |

148| `ANTHROPIC_AWS_API_KEY` | Kunci API Workspace untuk [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dihasilkan di AWS Console. Dikirim sebagai `x-api-key` dan mengambil prioritas di atas 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` | Ganti URL endpoint [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Gunakan untuk wilayah khusus atau saat merutekan melalui [gateway LLM](/docs/id/llm-gateway). Default ke `https://aws-external-anthropic.{region}.api.aws`. Claude Code menyelesaikan wilayah dengan [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 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) |

150| `ANTHROPIC_AWS_WORKSPACE_ID` | Diperlukan 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` | Ganti endpoint API untuk merutekan permintaan melalui proxy atau gateway. Ketika diatur ke host non-pihak pertama, [pencarian alat MCP](/docs/id/mcp#scale-with-mcp-tool-search) dinonaktifkan secara default. Atur `ENABLE_TOOL_SEARCH=true` jika proxy Anda meneruskan blok `tool_reference`. Mulai dari v2.1.196, [Remote Control](/docs/id/remote-control#requirements) dinonaktifkan ketika ini menunjuk 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 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 |

152| `ANTHROPIC_BEDROCK_BASE_URL` | Ganti URL endpoint Amazon Bedrock. Gunakan untuk endpoint Amazon Bedrock khusus atau saat merutekan melalui [gateway LLM](/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` | Ganti 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` | Awalan profil inferensi lintas wilayah (`us`, `eu`, `apac`, `jp`, `au`, atau `global`) yang Claude Code coba terlebih dahulu sebagai pengganti yang berasal dari wilayah AWS. Diabaikan di wilayah 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 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` | [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) |

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 memilih [beta API Anthropic](https://platform.claude.com/docs/en/api/beta-headers) sebelum Claude Code menambahkan dukungan asli. Tidak seperti [flag `--betas`](/docs/id/cli-reference#cli-flags), yang memerlukan autentikasi kunci API, variabel ini bekerja dengan semua metode auth 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 khusus untuk ditambahkan ke permintaan (format `Name: Value`, dipisahkan baris baru untuk beberapa header). Jika nama atau nilai berisi karakter yang tidak dapat dibawa header HTTP, seperti tanda kutip melengkung atau spasi lebar nol, permintaan gagal dengan kesalahan yang mengidentifikasi pasangan berdasarkan posisi. Memerlukan Claude Code v2.1.227 atau lebih baru. [Nilai header permintaan tidak valid](/docs/id/errors#invalid-request-header-value) mencantumkan set karakter yang tepat dan tempat pemeriksaan berjalan. Nilai yang menetapkan kredensial, org atau tenant, perutean, atau header 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 untuk kapan nilai `env` diterapkan](/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 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) |

158| `ANTHROPIC_CUSTOM_MODEL_OPTION` | ID Model untuk ditambahkan sebagai entri khusus di pemilih `/model`. Gunakan ini untuk membuat model non-standar atau spesifik 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 khusus di pemilih `/model`. Default ke `Custom model (<model-id>)` ketika tidak diatur |159| `ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION` | Deskripsi tampilan untuk entri model kustom di pemilih `/model`. Default ke `Custom model (<model-id>)` jika tidak diatur |

160| `ANTHROPIC_CUSTOM_MODEL_OPTION_NAME` | Nama tampilan untuk entri model khusus di pemilih `/model`. Ketika tidak diatur, entri menampilkan nama model jika Claude Code [mengenali ID](/docs/id/model-config#customize-pinned-model-display-and-capabilities), dan ID model sebaliknya |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 |

161| `ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES` | Daftar [kemampuan](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang dipisahkan koma yang didukung model khusus, 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 alias `fable` selesaikan, dan ID yang Claude Code kenali sebagai model Fable untuk [fallback model otomatis](/docs/id/model-config#automatic-model-fallback) di 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 disematkan di pemilih `/model`. Ketika tidak diatur, baris menampilkan deskripsi default yang dimulai dengan `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 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) |

164| `ANTHROPIC_DEFAULT_FABLE_MODEL_NAME` | Nama tampilan untuk model Fable yang disematkan di pemilih `/model`. Ketika tidak diatur, baris menampilkan nama model jika Claude Code mengenali ID yang disematkan, dan ID yang disematkan sebaliknya. 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) |

165| `ANTHROPIC_DEFAULT_FABLE_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kemampuan](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang dipisahkan koma yang didukung model Fable yang disematkan, 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 di-pin, 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 alias `haiku` selesaikan, 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 disematkan di pemilih `/model`. Ketika tidak diatur, baris menampilkan deskripsi default yang dimulai dengan `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 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) |

168| `ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME` | Nama tampilan untuk model Haiku yang disematkan di pemilih `/model`. Ketika tidak diatur, baris menampilkan nama model jika Claude Code mengenali ID yang disematkan, dan ID yang disematkan sebaliknya. 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) |

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

170| `ANTHROPIC_DEFAULT_MODEL` | Model yang sesi baru mulai secara default. Memerlukan Claude Code v2.1.236 atau lebih baru. Lihat [Atur 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. 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) |

171| `ANTHROPIC_DEFAULT_OPUS_MODEL` | ID Model yang alias `opus` selesaikan, dan yang `opusplan` gunakan 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 disematkan di pemilih `/model`. Ketika tidak diatur, baris menampilkan deskripsi default yang dimulai dengan `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 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) |

173| `ANTHROPIC_DEFAULT_OPUS_MODEL_NAME` | Nama tampilan untuk model Opus yang disematkan di pemilih `/model`. Ketika tidak diatur, baris menampilkan nama model jika Claude Code mengenali ID yang disematkan, dan ID yang disematkan sebaliknya. 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) |

174| `ANTHROPIC_DEFAULT_OPUS_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kemampuan](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang dipisahkan koma yang didukung model Opus yang disematkan, 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 di-pin, 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 alias `sonnet` selesaikan, dan yang `opusplan` gunakan ketika 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 disematkan di pemilih `/model`. Ketika tidak diatur, baris menampilkan deskripsi default yang dimulai dengan `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 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) |

177| `ANTHROPIC_DEFAULT_SONNET_MODEL_NAME` | Nama tampilan untuk model Sonnet yang disematkan di pemilih `/model`. Ketika tidak diatur, baris menampilkan nama model jika Claude Code mengenali ID yang disematkan, dan ID yang disematkan sebaliknya. 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) |

178| `ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES` | Daftar [kemampuan](/docs/id/model-config#customize-pinned-model-display-and-capabilities) yang dipisahkan koma yang didukung model Sonnet yang disematkan, 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 di-pin, 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). Ketika Anda menetapkannya bersama dengan `ANTHROPIC_ORGANIZATION_ID`, Claude Code memilih kredensial federasi, yang berada di atas 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 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) |

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 pembawa untuk autentikasi Microsoft Foundry, seperti token akses Microsoft Entra. Claude Code mengirimnya sebagai header `Authorization: Bearer`. Mengambil prioritas di atas `ANTHROPIC_FOUNDRY_API_KEY` dan di atas 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` | 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 |

182| `ANTHROPIC_FOUNDRY_BASE_URL` | URL dasar lengkap untuk sumber daya 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 sumber daya Microsoft Foundry (misalnya, `my-resource`). Diperlukan jika `ANTHROPIC_FOUNDRY_BASE_URL` tidak diatur (lihat [Microsoft Foundry](/docs/id/microsoft-foundry)) |183| `ANTHROPIC_FOUNDRY_RESOURCE` | Nama resource Microsoft Foundry (misalnya, `my-resource`). Wajib jika `ANTHROPIC_FOUNDRY_BASE_URL` tidak diatur (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 dengan `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). Atur bersama `ANTHROPIC_FEDERATION_RULE_ID`. Lihat [prioritas autentikasi](/docs/id/authentication#authentication-precedence) |

186| `ANTHROPIC_PROFILE` | Nama profil Anthropic untuk autentikasi, seperti 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` | Ganti wilayah AWS untuk model kelas Haiku saat menggunakan Amazon Bedrock atau Amazon Bedrock Mantle. Di Amazon Bedrock, ini hanya berlaku ketika `ANTHROPIC_DEFAULT_HAIKU_MODEL` atau `ANTHROPIC_SMALL_FAST_MODEL` yang sudah usang juga diatur, karena Amazon Bedrock sebaliknya menjalankan tugas latar belakang di [model Sonnet default atau model utama](/docs/id/amazon-bedrock#4-pin-model-versions) di wilayah 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 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 |

189| `ANTHROPIC_VERTEX_BASE_URL` | Ganti URL endpoint Google Cloud's Agent Platform. Gunakan untuk endpoint Google Cloud's Agent Platform khusus atau saat merutekan melalui [gateway LLM](/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 permintaan Google Cloud's Agent Platform ditujukan. Lihat [Konfigurasi 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 [federasi identitas beban kerja](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Atur ini ketika aturan federasi Anda mencakup lebih dari satu workspace sehingga pertukaran token tahu workspace mana yang ditargetkan |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 |

192| `API_FORCE_IDLE_TIMEOUT` | Ganti timeout idle badan 5 menit yang menghentikan respons model streaming ketika tidak ada byte yang tiba. Atur ke `0` untuk menonaktifkan timeout, misalnya ketika [gateway](/docs/id/llm-gateway) lambat atau model lokal berhenti lebih lama dari 5 menit antara chunk, atau `1` untuk menyimpannya untuk setiap penyedia. Ketika tidak diatur, timeout aktif di penyedia selain API Anthropic langsung, [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan Amazon Bedrock dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` diatur. [Watchdog aliran](/docs/id/network-config#streaming-idle-watchdogs) berjalan independen darinya dan menghentikan jeda senyap yang panjang bahkan ketika Anda menetapkan `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. 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 |

193| `API_TIMEOUT_MS` | Timeout untuk permintaan API dalam milidetik (default: 600000, atau 10 menit; maksimum: 2147483647). Tingkatkan ini ketika permintaan timeout di jaringan lambat atau saat merutekan melalui proxy. Nilai di atas maksimum meluap timer yang mendasar dan menyebabkan permintaan gagal segera |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 |

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 bash yang berjalan lama (default: 120000, atau 2 menit) |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). Batas waktu latar belakang memerlukan Claude Code v2.1.285 atau lebih baru |

196| `BASH_MAX_OUTPUT_LENGTH` | Jumlah maksimum karakter output bash yang Claude Code baca kembali ke 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) |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) |

197| `BASH_MAX_TIMEOUT_MS` | Timeout maksimum yang dapat ditetapkan model untuk perintah bash yang berjalan lama (default: 600000, atau 10 menit). Batas efektif adalah yang lebih besar dari ini dan `BASH_DEFAULT_TIMEOUT_MS` |197| `BASH_MAX_TIMEOUT_MS` | Timeout maksimum yang dapat diatur 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). Batas waktu latar belakang memerlukan Claude Code v2.1.285 atau lebih baru |

198| `BETA_TRACING_ENDPOINT` | Endpoint OTLP untuk [pelacakan beta terperinci](/docs/id/monitoring-usage#traces-beta): dengan `ENABLE_BETA_TRACING_DETAILED=1`, log dan jejak pergi ke sana sebagai pengganti pengekspor yang dikonfigurasi. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |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) |

199| `CCR_FORCE_BUNDLE` | Atur ke `1` untuk memaksa [`claude --cloud`](/docs/id/claude-code-on-the-web#send-local-repositories-without-github) untuk membundel dan mengunggah repositori lokal Anda sebagai pengganti kloning dari remote-nya |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 |

200| `CLAUDECODE` | Atur ke `1` di subproses yang Claude Code luncurkan (alat Bash dan PowerShell, sesi tmux, perintah [hook](/docs/id/hooks), perintah [status line](/docs/id/statusline), subproses [server MCP](/docs/id/mcp) stdio). Ekstensi IDE juga menetapkan ini di terminal terintegrasi mereka. Gunakan untuk mendeteksi ketika skrip berjalan di dalam subproses yang diluncurkan oleh Claude Code. Untuk memeriksa apakah proses saat ini diluncurkan langsung oleh panggilan alat atau hook, daripada di dalam server MCP stdio yang Claude Code mulai, gunakan `CLAUDE_CODE_CHILD_SESSION` sebagai gantinya |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 |

201| `CLAUDE_AFK_COUNTDOWN_MS` | Berapa milidetik sebelum lanjut otomatis hitungan mundur di layar muncul di dialog [`AskUserQuestion`](/docs/id/tools-reference) yang belum dijawab. Default `20000` (20 detik), dibatasi pada timeout lanjut otomatis. Tidak berpengaruh kecuali lanjut otomatis 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 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 |

202| `CLAUDE_AFK_TIMEOUT_MS` | Berapa milidetik waktu idle sebelum dialog [`AskUserQuestion`](/docs/id/tools-reference) yang belum dijawab lanjut otomatis tanpa Anda. Lanjut otomatis dimatikan secara default; pilih dengan pengaturan [`askUserQuestionTimeout`](/docs/id/settings-reference#askuserquestiontimeout). Variabel ini adalah pengganti untuk demo dan tes otomatis: ketika diatur, itu mengambil prioritas di atas pengaturan itu dan mengaktifkan lanjut otomatis bahkan ketika pengaturan tidak diatur atau `never`. Menetapkan `0` tidak menonaktifkan timeout; itu menutup dialog segera. Di v2.1.198 dan v2.1.199, lanjut otomatis 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 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 |

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 untuk pengguna SDK yang menginginkan papan tulis kosong. Ini juga menghapus `general-purpose`, subagent yang Claude Code jalankan ketika panggilan alat 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` | 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) |

204| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Atur ke `1` untuk melewati awalan `mcp__<server>__` pada nama alat dari server MCP yang dibuat SDK. Alat menggunakan nama asli mereka. Penggunaan SDK saja |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 |

205| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Timeout stall dalam milidetik untuk subagent. Default `600000` (10 menit); jika Anda menaikkan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` saat watchdog aliran aktif, default naik dengannya, seperti [Tangani respons API lambat atau terhenti](/docs/id/agent-sdk/typescript#handle-slow-or-stalled-api-responses) menjelaskan. Timer direset pada setiap acara kemajuan streaming; jika tidak ada kemajuan yang tiba dalam jendela, Claude Code menghentikan subagent dan melaporkan stall ke induk |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 |

206| `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` | Atur persentase (1-100) dari jendela auto-compact di mana auto-compaction dipicu. Gunakan nilai lebih rendah seperti `50` untuk compact lebih awal; variabel tidak dapat menaikkan ambang, jadi nilai di atas persentase default diabaikan. Ini hanya berlaku di sesi yang [compact sebelum batas konteks model](/docs/id/model-config#context-window-and-auto-compaction). Berlaku untuk percakapan utama dan subagent |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 |

207| `CLAUDE_AUTO_BACKGROUND_TASKS` | Atur ke `1` untuk memaksa-mengaktifkan backgrounding otomatis dari tugas agent yang berjalan lama. Ketika diaktifkan, subagent dipindahkan ke latar belakang setelah berjalan selama sekitar dua menit. Juga mengaktifkan [backgrounding otomatis dari panggilan alat MCP yang panjang](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls) dalam mode non-interaktif di Claude Code v2.1.212 atau lebih baru |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 |

208| `CLAUDE_AX_PREPARK_MS` | Dalam [mode pembaca layar](/docs/id/accessibility#what-your-screen-reader-hears), berapa milidetik Claude Code menunggu, dengan kursor di awal baris, sebelum menulis baris baru atau berubah. Default `50`. Atur `0` untuk menulis segera. Claude Code membatasi tunggu pada `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 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 |

209| `CLAUDE_AX_SCREEN_READER` | Atur ke `1` untuk merender output ramah pembaca layar: teks datar tanpa batas dekoratif atau animasi. Atur ke `0` untuk memaksa mode pembaca layar mati bahkan ketika [`axScreenReader`](/docs/id/settings-reference#axscreenreader) adalah `true`. Flag [`--ax-screen-reader`](/docs/id/cli-reference#cli-flags) mengambil prioritas. Memerlukan Claude Code v2.1.181 atau 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 |

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 berbicara baris secara penuh sebelum output baru mengganggu. Default `3000`. Atur `0` untuk merender segera. Claude Code membatasi tahan pada `600000` (10 menit). Keystroke pertama Anda mengakhiri tahan 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 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 |

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 asli setelah setiap perintah Bash atau PowerShell di sesi utama |

212| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | Timeout dalam milidetik untuk watchdog idle streaming tingkat byte; ketika diatur, itu mengambil prioritas di atas `CLAUDE_STREAM_IDLE_TIMEOUT_MS` untuk watchdog itu dan meninggalkan watchdog tingkat acara tidak berubah. Claude Code menjepit 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 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 |

213| `CLAUDE_CLIENT_PRESENCE_FILE` | Path ke file yang alat eksternal, seperti pendengar kunci layar, buat ketika Anda membuka kunci layar dan hapus ketika Anda menguncinya. Saat file ada, Claude Code melewati [pemberitahuan push mobile Remote Control](/docs/id/remote-control#mobile-push-notifications), jadi Anda berhenti mendapatkan push saat Anda secara aktif menggunakan komputer. Ketika file tidak ada atau tidak dapat dibaca, pemberitahuan dikirim seperti biasa. Claude Code memeriksa file sekali per acara pemicu push daripada menyelidiki. 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 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 |

214| `CLAUDE_CODE_ACCESSIBILITY` | Atur ke `1` untuk menjaga kursor terminal asli tetap terlihat dan menonaktifkan indikator kursor teks terbalik. Memungkinkan pembesar layar seperti macOS Zoom untuk melacak posisi kursor |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 |

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

216| `CLAUDE_CODE_ALT_SCREEN_FULL_REPAINT` | Atur ke `1` untuk melukis ulang seluruh layar pada setiap frame dalam [rendering fullscreen](/docs/id/fullscreen) daripada mengirim pembaruan inkremental. Gunakan ini jika mode fullscreen menampilkan fragmen teks basi atau salah tempat. Claude Code mengaktifkan ini secara otomatis untuk sesi latar belakang dan [tampilan agent](/docs/id/agent-view) di Windows |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 |

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 mampu effort. Gunakan ini saat merutekan melalui [gateway LLM](/docs/id/llm-gateway) atau penyedia pihak ketiga yang melayani model di bawah pengidentifikasi khusus. 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, masih dikecualikan sehingga permintaan tidak gagal |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 |

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

219| `CLAUDE_CODE_ARTIFACT_AUTO_OPEN` | Atur ke `0` untuk menghentikan Claude Code dari membuka browser secara otomatis ketika [artifact](/docs/id/artifacts#create-an-artifact) baru dipublikasikan |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 |

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 [menonaktifkan artifact](/docs/id/artifacts#availability). Memerlukan Claude Code v2.1.221 atau lebih baru |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 |

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

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 prompt sistem. Caching pada koneksi langsung ke API Anthropic tidak terpengaruh. Dalam beberapa pengaturan koneksi langsung, Claude Code menyimpan blok di permintaan pengklasifikasi [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) bahkan ketika Anda menetapkan `0`. Di [Blok atribusi prompt sistem](/docs/id/llm-gateway-protocol#system-prompt-attribution-block), periksa koneksi dan kredensial mana yang tercakup. Sebelum v2.1.181 blok menyertakan token per-permintaan di URL dasar khusus dan koneksi Microsoft Foundry, jadi di versi itu atur ke `0` ketika gateway LLM Anda cache pada badan permintaan atau meneruskan permintaan ke penyedia pihak ketiga, atau ketika Anda terhubung ke Microsoft Foundry secara langsung |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 |

223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Ketika `CLAUDE_AUTO_BACKGROUND_TASKS` diaktifkan, detik antara pengingat kepada Claude untuk memeriksa [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang masih berjalan. Menerima bilangan bulat biasa dari `1` hingga `86400` saja; nilai atau ejaan lain dibaca sebagai tidak diatur. Ketika tidak diatur, tidak ada pengingat check-in. 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 diatur. Jika tidak diatur, tidak ada pengingat pemeriksaan. Memerlukan Claude Code v2.1.248 atau 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`. Menerima bilangan bulat biasa seperti `500000` saja: nilai seperti `500k` dibaca sebagai `500` dan dijepit ke minimum 100K. Jendela efektif juga dibatasi pada jendela konteks model. Mengambil prioritas di atas perintah `/autocompact`, flag `--autocompact`, dan pengaturan `autoCompactWindow`. Persentase `used_percentage` status line selalu diukur terhadap jendela konteks penuh model, jadi setelah variabel ini diatur, persentase itu tidak lagi menunjukkan kapan compaction akan berjalan |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 |

225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Ganti [koneksi IDE](/docs/id/vs-code) otomatis. Secara default, Claude Code terhubung secara otomatis ketika diluncurkan di dalam terminal terintegrasi IDE yang didukung. Atur ke `false` untuk mencegah ini. Atur ke `true` untuk memaksa upaya koneksi ketika auto-deteksi gagal, seperti ketika tmux mengaburkan terminal induk. Mengambil prioritas di atas 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. 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) |

226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Mengontrol apakah Claude Code meminta server untuk [meninjau tindakan mode otomatis](/docs/id/permission-modes#server-side-classifier-review). Atur ke `0` untuk menggunakan permintaan pengklasifikasi Claude Code sendiri sebagai gantinya. Pada koneksi langsung ke API Anthropic, memerlukan v2.1.281 atau lebih baru. Bagian yang ditautkan mencantumkan sesi mana yang meminta server ketika variabel tidak diatur, dan 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). 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 |

227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Waktu dalam milidetik Claude Code menunggu 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 ketika langkah dalam rantai Anda secara sah membutuhkan lebih lama, seperti masuk SSO berbasis browser dengan MFA melalui pembungkus 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 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 |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Atur ke `0` untuk menonaktifkan [diff dari file yang perintah Bash ubah](/docs/id/hooks#bash), atau `1` untuk mencatatnya dalam setiap mode izin. Mengambil prioritas di atas pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled). Memerlukan Claude Code v2.1.269 atau 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 |

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 melampaui akhir giliran saat pekerjaan latar belakang seperti agent latar belakang atau [alur kerja](/docs/id/workflows) masih aktif. Ini membuat host yang memantau status, seperti daftar sesi jarak jauh, dari mengumumkan bahwa Claude menunggu input Anda di tengah pekerjaan. Perintah shell latar belakang, seperti server dev, tidak menahan status berjalan. Default status berjalan dan opt-out `0` memerlukan Claude Code v2.1.269 atau lebih baru; di versi yang lebih awal, atur `1` untuk menahan status berjalan |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 |

230| `CLAUDE_CODE_BRIDGE_SESSION_ID` | Atur secara otomatis di subproses alat Bash dan [perintah hook](/docs/id/hooks) saat sesi memiliki koneksi [Remote Control](/docs/id/remote-control) aktif, dan dihapus ketika koneksi berakhir. Nilainya adalah ID sesi dalam bentuk `session_`, pengidentifikasi yang sama yang muncul di URL `claude.ai/code` sesi, jadi skrip dapat menghubungkan 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` | 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 |

231| `CLAUDE_CODE_BS_AS_CTRL_BACKSPACE` | Atur ke `0` untuk membuat Claude Code membaca byte `0x08`, juga ditulis `^H`, sebagai Backspace biasa, atau `1` untuk membacanya sebagai Ctrl+Backspace. Nilai apa pun 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 di mana [Backspace menghapus seluruh kata](/docs/id/terminal-config#fix-backspace-deleting-a-whole-word-on-windows) |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) |

232| `CLAUDE_CODE_CERT_STORE` | Daftar sumber sertifikat CA yang dipisahkan koma untuk koneksi TLS. `bundled` adalah set CA Mozilla yang dikirim dengan Claude Code. `system` adalah penyimpanan kepercayaan sistem operasi, dibaca hanya di runtime dengan `tls.getCACertificates`: biner asli, atau Node 22.15 atau lebih baru untuk instalasi npm. Lihat [Penyimpanan sertifikat CA](/docs/id/network-config#ca-certificate-store). Default adalah `bundled,system` |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` |

233| `CLAUDE_CODE_CHILD_SESSION` | Atur ke `1` di subproses Claude Code luncurkan melalui alat Bash, PowerShell, dan Monitor, perintah [hook](/docs/id/hooks), dan perintah [status line](/docs/id/statusline). Tidak diatur untuk subproses [server MCP](/docs/id/mcp) stdio, yang berumur panjang dan melampaui sesi yang meluncurkannya. Tidak seperti `CLAUDECODE`, ini hanya diatur oleh Claude Code sendiri ketika meluncurkan subproses dan bukan oleh ekstensi IDE, jadi itu secara andal membedakan sesi bersarang dari `claude` tingkat atas yang diluncurkan di terminal terintegrasi IDE. `claude` TUI 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 masih bertahan. Atur `CLAUDE_CODE_FORCE_SESSION_PERSISTENCE=1` untuk mengganti pengecualian ini. Memerlukan Claude Code v2.1.172 atau lebih baru |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 |

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 pribadi klien untuk autentikasi mTLS |235| `CLAUDE_CODE_CLIENT_KEY` | Path ke file kunci privat klien untuk autentikasi mTLS |

236| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | Frasa sandi untuk CLAUDE\_CODE\_CLIENT\_KEY 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 beroperasi. 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` |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` |

238| `CLAUDE_CODE_DEBUG_LOGS_DIR` | Ganti path file log debug. Meskipun namanya, ini adalah path file, bukan direktori. Memerlukan mode debug diaktifkan secara terpisah melalui `--debug`, `/debug`, atau variabel lingkungan `DEBUG`: menetapkan 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. 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` |

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 volume tinggi seperti output perintah status line penuh, atau naikkan ke `error` untuk mengurangi kebisingan |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 |

240| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | Atur ke `1` untuk menonaktifkan dukungan [jendela konteks 1M](/docs/id/model-config#extended-context). Ketika diatur, varian model 1M tidak tersedia di pemilih model, dan Claude Code menahan sesi di model dengan jendela 1M asli, seperti [Sonnet 5.5](/docs/id/model-config#sonnet-5-5-and-sonnet-5-context-window) dan model Fable, ke jendela 200K; lihat [Konteks Diperpanjang](/docs/id/model-config#extended-context) untuk cara tahan ditegakkan. Berguna untuk lingkungan perusahaan dengan persyaratan kepatuhan. Untuk perannya dalam mengoreksi jendela untuk ID model `[1m]` yang tidak dikenali, lihat [Koreksi jendela untuk ID model gateway atau khusus](/docs/id/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |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) |

241| `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` | Atur ke `1` untuk menonaktifkan [penalaran adaptif](/docs/id/model-config#adjust-effort-level) di Opus 4.6 dan Sonnet 4.6 dan kembali ke anggaran pemikiran tetap yang dikendalikan oleh `MAX_THINKING_TOKENS`. Tidak berpengaruh pada [model Fable](/docs/id/model-config#extended-thinking), Sonnet 5 dan lebih baru, atau Opus 4.7 dan lebih baru, yang selalu menggunakan penalaran adaptif |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 |

242| `CLAUDE_CODE_DISABLE_ADMIN_ENV_UNION` | Atur ke `1` untuk menghentikan Claude Code dari penggabungan blok `env` [pengaturan yang dikelola](/docs/id/managed-settings#precedence-within-the-managed-tier) per kunci di seluruh sumber admin, jadi hanya blok `env` sumber prioritas tertinggi yang berlaku, seperti sebelum v2.1.223. Atur di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirim melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.223 atau lebih baru |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 |

243| `CLAUDE_CODE_DISABLE_ADVISOR_TOOL` | Atur ke `1` untuk menonaktifkan [alat penasihat](/docs/id/advisor). Perintah `/advisor` menjadi tidak tersedia, `advisorModel` yang dikonfigurasi apa pun diabaikan, dan flag `--advisor` diterima tetapi tidak berpengaruh, jadi skrip yang ada yang meneruskannya terus bekerja tanpa kesalahan |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 |

244| `CLAUDE_CODE_DISABLE_AGENT_VIEW` | Atur ke `1` untuk menonaktifkan [agen latar belakang dan tampilan agent](/docs/id/agent-view): `claude agents`, `--bg`, `/background`, dan supervisor sesuai permintaan. Setara dengan pengaturan [`disableAgentView`](/docs/id/settings-reference#disableagentview) |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) |

245| `CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN` | Atur ke `1` untuk menonaktifkan [rendering fullscreen](/docs/id/fullscreen) dan gunakan renderer layar utama klasik. Percakapan tetap di scrollback asli terminal Anda sehingga `Cmd+f` dan mode salinan tmux bekerja seperti biasa. Mengambil prioritas di atas `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 [tampilan agent](/docs/id/agent-view), yang selalu menggunakan rendering fullscreen |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 |

246| `CLAUDE_CODE_DISABLE_ARTIFACT` | Atur ke `1` untuk menonaktifkan alat [Artifact](/docs/id/artifacts), yang mempublikasikan output sesi sebagai halaman web pribadi di claude.ai. Setelah Anda menetapkannya, tidak ada file pengaturan yang mengaktifkan alat kembali. Untuk menonaktifkan alat dari file pengaturan sebagai gantinya, atur [`enableArtifact`](/docs/id/settings-reference#enableartifact) ke `false`; kunci [`disableArtifact`](/docs/id/settings-reference#disableartifact) yang sudah usang juga menonaktifkannya |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 |

247| `CLAUDE_CODE_DISABLE_ATTACHMENTS` | Atur ke `1` untuk menonaktifkan pemrosesan lampiran. Penyebutan file dengan sintaks `@` dikirim sebagai teks biasa daripada diperluas ke konten file |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 |

248| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Atur ke `1` untuk menonaktifkan [memori otomatis](/docs/id/memory#auto-memory). Atur ke `0` untuk memaksa memori otomatis aktif bahkan ketika mode `--bare` atau [`autoMemoryEnabled: false`](/docs/id/settings-reference#automemoryenabled) akan menonaktifkannya. Ketika dinonaktifkan, Claude tidak membuat atau memuat file memori otomatis |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 |

249| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Atur ke `1` untuk menonaktifkan semua fungsionalitas tugas latar belakang, termasuk parameter `run_in_background` pada alat Bash dan subagent, auto-backgrounding, dan pintasan Ctrl+B |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 |

250| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Atur ke `1` untuk menghentikan Claude Code dari memperlakukan respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) dengan header `Content-Type` yang hilang atau kosong sebagai aliran acara biner Amazon Bedrock. Secara default, Claude Code mengasumsikan gateway menghilangkan header dari respons yang sebaliknya tidak dimodifikasi, jadi itu mendekode badan dan streaming terus bekerja. Atur ini hanya untuk gateway yang juga memancarkan ulang aliran sebagai acara yang dikirim server; Claude Code kemudian membaca badan tanpa header sebagai acara yang dikirim server sebagai gantinya. Memerlukan Claude Code v2.1.239 atau lebih baru |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 |

251| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Atur ke `1` untuk melewati pemeriksaan bahwa respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) membawa jenis konten `application/vnd.amazon.eventstream`. Tanpa variabel ini, ketika respons membawa jenis konten berbeda, Claude Code gagal permintaan dengan kesalahan yang menyebutkan jenis itu, yang berarti [gateway atau proxy mengubah respons](/docs/id/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). Konfigurasikan gateway untuk meneruskan header `Content-Type` dan badan tanpa dimodifikasi daripada menetapkan variabel ini. Memerlukan Claude Code v2.1.208 atau lebih baru |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 |

252| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Atur ke `1` untuk menghentikan perintah shell latar belakang sesi [latar belakang](/docs/id/agent-view) yang berjalan, alur kerja dinamis, dan, mulai dari v2.1.198, subagent latar belakang ketika [supervisor](/docs/id/agent-view#the-supervisor-process) berhenti, memulai ulang, atau memperbarui proses sesi itu, daripada menyerahkannya ke proses berikutnya sesi. Hanya mempengaruhi penyerahan itu: backgrounding sesi dengan `←` atau [`/background`](/docs/id/agent-view#from-inside-a-session) masih membawa pekerjaan dalam penerbangan, dan `CLAUDE_DISABLE_ADOPT` menonaktifkan keduanya. Memerlukan Claude Code v2.1.196 atau 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 |

253| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Atur ke `1` untuk menghentikan Claude Code dari menghentikan [perintah shell latar belakang](/docs/id/interactive-mode#background-bash-commands) ketika sistem operasi melaporkan tekanan memori. Secara default, di macOS dan Linux, Claude Code menghentikan shell latar belakang yang dimulai di sesi utama pada sinyal tekanan memori setelah sesi telah menganggur selama 30 menit dan tidak ada giliran atau subagent yang berjalan. Windows tidak memiliki sinyal tekanan memori, jadi variabel ini tidak berpengaruh di sana. Memerlukan Claude Code v2.1.193 atau 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 |

254| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Atur ke `1` untuk menonaktifkan [skills](/docs/id/skills) dan alur kerja yang disertakan dengan Claude Code: skills bundel dan alur kerja 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. Skills dari plugin, `.claude/skills/`, dan `.claude/commands/` tidak terpengaruh. Setara dengan pengaturan [`disableBundledSkills`](/docs/id/settings-reference#disablebundledskills) |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 |

255| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Atur ke `1` untuk menjaga alat browser [Claude in Chrome](/docs/id/chrome) tetap tersedia sambil menghilangkan bagian Chrome dari prompt sistem dan skill bundel `/claude-in-chrome` [](/docs/id/skills#bundled-skills). Untuk host yang menyematkan Claude Code dan menyediakan panduan browser mereka sendiri. Memerlukan Claude Code v2.1.257 atau 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) |

256| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Atur ke `1` untuk mencegah memuat file memori CLAUDE.md apa pun ke dalam konteks, termasuk file memori pengguna, proyek, dan otomatis |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 |

257| `CLAUDE_CODE_DISABLE_CRON` | Atur ke `1` untuk menonaktifkan [tugas terjadwal](/docs/id/scheduled-tasks). Skill `/loop` dan alat cron menjadi tidak tersedia dan tugas yang sudah dijadwalkan apa pun berhenti diaktifkan, termasuk tugas yang sudah berjalan di tengah sesi |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 |

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

259| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Atur ke `1` untuk menghapus header permintaan `anthropic-beta` spesifik Anthropic dan bidang skema alat beta (seperti `defer_loading` dan `eager_input_streaming`) dari permintaan API. Gunakan ini ketika gateway proxy menolak permintaan dengan kesalahan seperti "Unexpected value(s) for the `anthropic-beta` header" atau "Extra inputs are not permitted". Bidang standar (`name`, `description`, `input_schema`, `cache_control`) dipertahankan. [Pencarian alat MCP](/docs/id/mcp#scale-with-mcp-tool-search) dinonaktifkan dan semua alat MCP dimuat di muka, bahkan ketika Anda menetapkan `ENABLE_TOOL_SEARCH`. Di Claude Code v2.1.227 atau lebih baru, [pengaturan yang dikelola](/docs/id/managed-settings) dapat menjaga pencarian alat tetap aktif. [Nonaktifkan kemampuan pra-rilis](/docs/id/llm-gateway-protocol#disable-pre-release-capabilities) mencakup tempat penggantian berlaku |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 |

260| `CLAUDE_CODE_DISABLE_EXPLORE_PLAN_AGENTS` | Atur ke `1` untuk menonaktifkan [subagent Explore dan Plan](/docs/id/sub-agents#built-in-subagents) bawaan. Claude mengeksplorasi dengan alat pencarian atau subagent tujuan umum sebagai gantinya, dan [mode rencana](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) membaca file secara langsung daripada meluncurkan agen Explore dan Plan. Subagent khusus 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 |260| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Atur ke `1` untuk menghapus header permintaan `anthropic-beta` khusus Anthropic dan field skema tool beta (seperti `defer_loading` dan `eager_input_streaming`) dari permintaan API. Gunakan ini ketika proxy gateway menolak permintaan dengan error seperti "Unexpected value(s) for the `anthropic-beta` header" atau "Extra inputs are not permitted". Field standar (`name`, `description`, `input_schema`, `cache_control`) dipertahankan. [MCP tool search](/docs/id/mcp#scale-with-mcp-tool-search) dinonaktifkan dan semua tool MCP dimuat di awal, bahkan ketika Anda mengatur `ENABLE_TOOL_SEARCH`. Pada Claude Code v2.1.227 atau lebih baru, [pengaturan terkelola](/docs/id/managed-settings) dapat menjaga tool search tetap aktif. [Menonaktifkan kapabilitas pra-rilis](/docs/id/llm-gateway-protocol#disable-pre-release-capabilities) menjelaskan di mana override tersebut berlaku |

261| `CLAUDE_CODE_DISABLE_FAST_MODE` | Atur ke `1` untuk menonaktifkan [mode cepat](/docs/id/fast-mode) |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 |

262| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Atur ke `1` untuk menonaktifkan survei kualitas sesi "Bagaimana Claude melakukannya?". Survei juga dinonaktifkan ketika `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur, kecuali `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` memilih kembali. Untuk menetapkan tingkat sampel daripada menonaktifkan sepenuhnya, gunakan pengaturan [`feedbackSurveyRate`](/docs/id/settings-reference#feedbacksurveyrate). Lihat [Survei kualitas sesi](/docs/id/data-usage#session-quality-surveys) |262| `CLAUDE_CODE_DISABLE_FAST_MODE` | Atur ke `1` untuk menonaktifkan [fast mode](/docs/id/fast-mode) |

263| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Atur ke `1` untuk menonaktifkan file [checkpointing](/docs/id/checkpointing). Perintah `/rewind` tidak akan dapat mengembalikan perubahan kode. Mengganti pengaturan [`fileCheckpointingEnabled`](/docs/id/settings-reference#filecheckpointingenabled) |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) |

264| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Atur ke `1` untuk menghapus instruksi alur kerja commit dan PR bawaan dan snapshot status git dari prompt sistem Claude. Berguna saat menggunakan skill alur kerja git Anda sendiri. Mengambil prioritas di atas pengaturan [`includeGitInstructions`](/docs/id/settings-reference#includegitinstructions) ketika diatur |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) |

265| `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 API Anthropic. 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 |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 |

266| `CLAUDE_CODE_DISABLE_MOUSE` | Atur ke `1` untuk menonaktifkan pelacakan mouse dalam [rendering fullscreen](/docs/id/fullscreen). Pengguliran keyboard dengan `PgUp` dan `PgDn` masih bekerja. Gunakan ini untuk menjaga perilaku salinan-pada-pilih asli terminal Anda |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 |

267| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Atur ke `1` untuk menonaktifkan penanganan klik, seret, dan hover dalam [rendering fullscreen](/docs/id/fullscreen) sambil menjaga pengguliran roda mouse. Gunakan ini ketika Anda ingin pengguliran roda bekerja di dalam Claude Code tetapi tidak ingin klik memposisikan kursor, memperluas output alat, atau membuka tautan. `CLAUDE_CODE_DISABLE_MOUSE` mengambil prioritas ketika keduanya diatur. Memerlukan Claude Code v2.1.195 atau lebih baru |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 |

268| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Atur ke `1` untuk menghentikan Claude Code dari membaca ulang [sertifikat klien mTLS dan kunci](/docs/id/network-config#mtls-authentication) ketika permintaan API gagal dengan kesalahan tingkat koneksi, seperti pengaturan ulang koneksi atau kesalahan jabat tangan TLS. Dengan reload dinonaktifkan, Claude Code memuat file yang diputar hanya ketika berikutnya menerapkan pengaturan atau pada startup berikutnya. Memerlukan Claude Code v2.1.232 atau 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 |

269| `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 kesalahan, perintah `/feedback`, [umpan balik yang ditulis 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 [mode cepat](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). Ini juga menghentikan [jalankan latar belakang dari sumber `command` plugin](/docs/id/plugins/loading#when-a-command-source-re-runs), yang merupakan perintah lokal daripada lalu lintas jaringan, karena mereka dapat memicu instalasi ketergantungan. **Menetapkannya ke `0` atau `false` masih menonaktifkan lalu lintas ini**, tidak seperti sebagian besar variabel aktif/mati; batalkan penetapan variabel untuk mengizinkannya lagi. Juga menonaktifkan pengambilan flag fitur, yang membuat [Remote Control](/docs/id/remote-control#requirements) dan [fitur lain yang memerlukan pengambilan flag fitur](#features-that-need-feature-flag-fetching) tidak tersedia. Instalasi otomatis marketplace plugin resmi tidak tercakup; nonaktifkan dengan `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. Tidak mempengaruhi [penemuan model gateway](/docs/id/llm-gateway-connect#add-gateway-models-to-the-model-picker), yang memiliki opt-in sendiri |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 |

270| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Atur ke `1` untuk menonaktifkan fallback non-streaming ketika permintaan streaming gagal di tengah-tengah. Kesalahan streaming menyebar ke lapisan percobaan ulang sebagai gantinya. Berguna ketika proxy atau gateway menyebabkan fallback menghasilkan eksekusi alat duplikat |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 |

271| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Atur ke `1` untuk mengirim pemberitahuan desktop alat `PushNotification` bahkan saat Anda mengetik atau fokus pada terminal. Secara default alat melewati pemberitahuan desktop dan [push mobile](/docs/id/remote-control#mobile-push-notifications) ketika mendeteksi aktivitas keyboard atau fokus terminal baru-baru ini. Variabel ini hanya menonaktifkan pemeriksaan lokal itu, jadi server masih dapat menekan push mobile ketika mendeteksi bahwa Anda aktif. Memerlukan Claude Code v2.1.193 atau 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 |

272| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Atur ke `1` untuk menonaktifkan pendaftaran otomatis marketplace plugin resmi. Claude Code membaca variabel ketika akan mendaftarkan marketplace, biasanya selama peluncuran interaktif mesin pertama. Jika variabel diatur pada titik itu, Claude Code melewati pendaftaran secara permanen. Membatalkan penetapan variabel nanti tidak membatalkan lompatan. Jalankan `claude plugin marketplace add anthropics/claude-plugins-official` untuk mendaftarkan marketplace kapan saja |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 |

273| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Atur ke `1` untuk menghentikan Claude Code dari menjalankan [hook `Notification` Anda untuk permintaan izin yang belum dijawab](/docs/id/hooks#notification) di sesi di mana Claude Code mengirimnya ke callback `canUseTool` Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code menampilkan Claude Code. Tidak berpengaruh di sesi terminal. Memerlukan Claude Code v2.1.233 atau lebih baru |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 |

274| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Atur ke `1` untuk melewati pemuatan skills dari direktori skills yang dikelola di seluruh sistem. Berguna untuk sesi container atau CI yang tidak boleh memuat skills yang disediakan operator |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 |

275| `CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY` | Atur ke `1` untuk menonaktifkan pemeriksaan [alat PowerShell](/docs/id/tools-reference#powershell-tool) yang menolak perintah bawaan `cmd` `rd`, `rmdir`, `del`, dan `erase` pada [jalur sistem](/docs/id/permission-modes#remove-item-in-powershell), seperti akar drive atau direktori home Anda. Claude Code mengabaikan variabel ini di blok `env` file pengaturan. Memerlukan Claude Code v2.1.283 atau lebih baru |275| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Atur ke `1` untuk menghentikan Claude Code menjalankan [hook `Notification` Anda untuk permintaan izin yang belum dijawab](/docs/id/hooks#notification) di sesi tempat Claude Code mengirimkannya ke callback `canUseTool` Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code meng-host Claude Code. Tidak berpengaruh di sesi terminal. Memerlukan Claude Code v2.1.233 atau lebih baru |

276| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Atur ke `1` untuk menonaktifkan pemeriksaan [jalur kritis](/docs/id/permission-modes#critical-paths) untuk `rm` rekursif yang targetnya sepenuhnya output dari substitusi perintah, seperti `rm -rf "$(pwd)"`. Pemeriksaan jalur kritis lainnya terus berjalan. Atur di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirim melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.281 atau lebih baru |276| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Atur ke `1` untuk melewati pemuatan skill dari direktori skill terkelola tingkat sistem. Berguna untuk sesi container atau CI yang tidak boleh memuat skill yang disediakan operator |

277| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Atur ke `1` untuk menonaktifkan pembaruan judul terminal otomatis berdasarkan konteks percakapan. Ini juga melewati permintaan model kecil/cepat latar belakang yang [menghasilkan judul sesi](/docs/id/sessions#name-your-sessions) |277| `CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY` | Atur ke `1` untuk mematikan pemeriksaan [tool PowerShell](/docs/id/tools-reference#powershell-tool) yang menolak built-in `cmd` `rd`, `rmdir`, `del`, dan `erase` pada [jalur sistem](/docs/id/permission-modes#remove-item-in-powershell), seperti root drive atau direktori home Anda. Claude Code mengabaikan variabel ini di blok `env` file pengaturan. Memerlukan Claude Code v2.1.283 atau lebih baru |

278| `CLAUDE_CODE_DISABLE_THINKING` | Atur ke `1` untuk menghilangkan parameter `thinking` dari permintaan API sepenuhnya. Ini adalah opsi kompatibilitas untuk proxy dan gateway yang menolak parameter. Di model yang berpikir secara default, menghilangkan parameter berarti model mungkin masih berpikir. Untuk secara eksplisit menonaktifkan [pemikiran yang diperpanjang](https://platform.claude.com/docs/en/build-with-claude/extended-thinking) di API Anthropic, gunakan `MAX_THINKING_TOKENS=0` sebagai gantinya. Tidak ada variabel yang menonaktifkan pemikiran di Opus 5.5, Sonnet 5.5, atau model Fable, yang tidak dapat memiliki pemikiran dinonaktifkan. Di [penyedia pihak ketiga](/docs/id/third-party-integrations), `MAX_THINKING_TOKENS=0` demikian pula menghilangkan parameter, jadi kedua variabel berperilaku sama di sana |278| `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT` | Atur ke `1` untuk mematikan pemeriksaan [jalur kritis](/docs/id/permission-modes#critical-paths) untuk `rm` rekursif yang targetnya sepenuhnya merupakan output dari substitusi perintah, seperti `rm -rf "$(pwd)"`. Pemeriksaan jalur kritis lainnya tetap berjalan. Atur di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirimkan melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.281 atau lebih baru |

279| `CLAUDE_CODE_DISABLE_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 [gateway LLM](/docs/id/llm-gateway). Tanpa variabel ini, Claude Code compact pada jendela konteks yang diasumsikan untuk ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` dapat mengoreksi jendela yang diasumsikan sebagai gantinya; lihat [Koreksi jendela untuk ID model gateway atau khusus](/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 lebih baru |279| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Atur ke `1` untuk menonaktifkan pembaruan judul terminal otomatis berdasarkan konteks percakapan. Ini juga melewati permintaan model small/fast di latar belakang yang [menghasilkan judul sesi](/docs/id/sessions#name-your-sessions) |

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

281| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Atur ke `1` untuk memulai perintah [alat PowerShell](/docs/id/tools-reference#powershell-tool) di Windows secara langsung daripada melalui peluncur `cmd.exe`. Secara default, peluncur memungkinkan perintah PowerShell [berjalan di latar belakang](/docs/id/tools-reference#background-commands) [membawa ke proses sesi berikutnya](/docs/id/agent-view#the-supervisor-process), seperti ketika Anda [menempatkan sesi di latar belakang](/docs/id/agent-view#from-inside-a-session). Jika Anda menetapkan variabel, perintah PowerShell yang dilatarbelakangkan berhenti ketika proses sesi keluar. Perintah Bash tidak terpengaruh. Memerlukan Claude Code v2.1.269 atau lebih baru |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 |

282| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Atur ke `1` untuk menonaktifkan [alur kerja](/docs/id/workflows#turn-workflows-off). Setara dengan pengaturan [`disableWorkflows`](/docs/id/settings-reference#disableworkflows) |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 |

283| `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 tergantung pada model. Mengambil prioritas di atas `--effort`, `/effort`, dan pengaturan `modelSettings` dan `effortLevel`. Batas [`maxEffortLevel`](/docs/id/settings-reference#maxeffortlevel) masih berlaku. Lihat [Sesuaikan tingkat effort](/docs/id/model-config#adjust-effort-level) |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 |

284| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Diterima untuk kompatibilitas dengan rilis yang lebih lama dan tidak berpengaruh. Mode otomatis tersedia secara default di setiap penyedia, termasuk Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, dan sesi [gateway aplikasi Claude](/docs/id/claude-apps-gateway) yang masuk. Di v2.1.158 melalui v2.1.206, menetapkan ini ke `1` diperlukan untuk membuat [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) tersedia di penyedia itu |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 |

285| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Ganti ketersediaan [ringkasan sesi](/docs/id/interactive-mode#session-recap). Atur ke `0` untuk memaksa ringkasan mati terlepas dari toggle `/config`. Atur ke `1` untuk memaksa ringkasan aktif ketika [`awaySummaryEnabled`](/docs/id/settings-reference#awaysummaryenabled) adalah `false`. Mengambil prioritas di atas pengaturan dan toggle `/config` |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) |

286| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Atur ke `1` untuk menyegarkan status plugin di batas giliran dalam [mode non-interaktif](/docs/id/headless) setelah instalasi latar belakang selesai. Dimatikan secara default karena penyegaran mengubah prompt sistem di tengah sesi, yang membatalkan [prompt caching](/docs/id/prompt-caching) untuk giliran itu |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) |

287| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Atur ke `1` untuk merutekan survei kualitas sesi "Bagaimana Claude melakukannya?" ke [kolektor OpenTelemetry](/docs/id/monitoring-usage) Anda sendiri ketika lalu lintas nonessential terikat Anthropic diblokir. Peringkat survei dipancarkan hanya sebagai acara OTEL ke kolektor yang dikonfigurasi. 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 sebaliknya. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` dan kebijakan umpan balik produk organisasi mengambil prioritas |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 |

288| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Mengontrol apakah input panggilan alat mengalir dari API saat Claude menghasilkannya. Dengan ini dimatikan, input alat besar seperti penulisan file panjang tiba hanya setelah Claude selesai menghasilkannya, yang dapat terlihat seperti itu tergantung. Diaktifkan secara default di API Anthropic. Di Amazon Bedrock dan Google Cloud's Agent Platform, diaktifkan per model di mana kontainer yang digunakan mendukungnya. Atur ke `0` untuk memilih keluar. Atur ke `1` untuk memaksa aktif saat merutekan melalui proxy melalui `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, atau `ANTHROPIC_BEDROCK_BASE_URL`. Dimatikan secara default di Microsoft Foundry dan koneksi [gateway](/docs/id/llm-gateway) |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` |

289| `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 Anthropic seperti LiteLLM, Kong, atau proxy internal. Dimatikan secara default karena gateway yang didukung oleh kunci API bersama akan menampilkan setiap pengguna setiap model yang dapat diakses kunci. Model yang ditemukan masih disaring oleh daftar izin [`availableModels`](/docs/id/settings-reference#availablemodels) yang diterima sesi; berikan daftar melalui [MDM atau file pengaturan yang dikelola](/docs/id/managed-settings#delivery-mechanisms), karena [pengiriman yang dikelola server tidak tersedia di konfigurasi gateway](/docs/id/server-managed-settings#platform-availability) |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_OPUS_4_7_FAST_MODE` | Dihapus di v2.1.142, ketika default [mode cepat](/docs/id/fast-mode) pindah dari Opus 4.6 ke Opus 4.7 |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_PROMPT_SUGGESTION` | Atur ke `false` untuk menonaktifkan saran prompt, prediksi abu-abu yang muncul di input prompt Anda. Mengambil prioritas di atas pengaturan [`promptSuggestionEnabled`](/docs/id/settings-reference#promptsuggestionenabled), yang merupakan apa yang toggle **Saran prompt** di `/config` tulis. Claude Code juga [menjeda saran saat akun Anda mendekati atau mencapai batas penggunaan](/docs/id/interactive-mode#when-claude-code-skips-suggestions). Atur ke `true` untuk menyimpannya aktif sampai Anda mencapai batas. Memerlukan Claude Code v2.1.238 atau lebih baru. Lihat [Saran prompt](/docs/id/interactive-mode#prompt-suggestions) |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_TASKS` | Memilih alat pelacakan tugas mana yang Claude Code sediakan di [sesi yang memilikinya](/docs/id/tools-reference#task-tool-availability). Secara default, Claude Code menyediakan alat Task `TaskCreate`, `TaskUpdate`, `TaskGet`, dan `TaskList`. Atur ke `0` untuk mendapatkan alat `TodoWrite` warisan sebagai gantinya. Lihat [Daftar tugas](/docs/id/interactive-mode#task-list) |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_TELEMETRY` | Atur ke `1` untuk mengaktifkan pengumpulan data OpenTelemetry untuk metrik dan logging. Diperlukan sebelum mengonfigurasi pengekspor OTel. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Lihat [Monitoring](/docs/id/monitoring-usage) |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_TODO_TOOLS` | Atur ke `1` untuk mendapatkan alat pelacakan tugas di setiap model. Tanpanya, Claude Code menyediakannya secara default hanya di model yang tercantum di bawah [Ketersediaan alat Task](/docs/id/tools-reference#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` masih memilih alat Task atau `TodoWrite`. Memerlukan Claude Code v2.1.233 atau lebih baru |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_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 menggunakan mode SDK |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_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_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_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 |

296| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Atur ke `1` untuk mengaktifkan [tim agent](/docs/id/agent-teams). Tim agent bersifat eksperimental dan dinonaktifkan secara default |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 |

297| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke tingkat atas setiap badan permintaan API. Berguna untuk meneruskan parameter spesifik penyedia yang Claude Code tidak tunjukkan secara langsung. 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 shell dan menggunakan salinan apa pun yang diwarisi proses supervisor latar belakang |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 |

298| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Ganti batas token default untuk pembacaan file. Berguna ketika Anda perlu membaca file yang lebih besar secara penuh |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 |

299| `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 dimulai oleh alat Bash Claude Code, menyebabkan sesi tingkat atas asli diklasifikasikan sebagai bersarang. Mulai dari v2.1.178, Claude Code mendeteksi kasus tmux secara otomatis dan mengabaikan penanda yang diwarisi, jadi tmux tidak lagi memerlukan variabel ini. Juga dihormati di v2.1.169 dan lebih awal; tidak berpengaruh di v2.1.170 dan v2.1.171, di mana deteksi sesi bersarang yang ditimpanya dihapus |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 |

300| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | Atur ke `1` untuk memaksa rendering strikethrough untuk `~~text~~` dalam respons Claude ketika terminal Anda mendukungnya tetapi tidak terdeteksi otomatis, seperti melalui SSH tanpa `TERM_PROGRAM` diteruskan. Tanpa ini, terminal yang tidak terdeteksi menampilkan penanda `~~` literal sebagai gantinya merender teks sebagai strikethrough. Memerlukan Claude Code v2.1.186 atau lebih baru |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 |

301| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | Atur ke `1` untuk memaksa-mengaktifkan mode pribadi DEC 2026 [output tersinkronisasi](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036) ketika terminal Anda mendukungnya tetapi tidak terdeteksi otomatis. Berguna untuk emulator seperti Emacs `eat` yang mengimplementasikan BSU/ESU tetapi tidak merespons probe kemampuan. Tidak berpengaruh di bawah tmux. Tidak seperti `CLAUDE_CODE_NO_FLICKER`, yang beralih ke [rendering fullscreen](/docs/id/fullscreen), ini tidak mengubah renderer |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 |

302| `CLAUDE_CODE_FORK_SUBAGENT` | Mengontrol [mode fork](/docs/id/sub-agents#turn-fork-mode-on-or-off), yang memungkinkan Claude untuk memunculkan [subagent yang difork](/docs/id/sub-agents#fork-the-current-conversation) sendiri dan aktif secara default hanya dalam sesi interaktif. Atur ke `1` untuk mengaktifkannya di `claude -p` dan Agent SDK juga, atau `0` untuk menonaktifkannya di setiap jenis sesi. Anda dapat menjalankan `/subtask` apakah mode fork aktif atau tidak. Default interaktif memerlukan Claude Code v2.1.232 atau lebih baru; di versi yang lebih awal, atur variabel ke `1` untuk mengaktifkan mode fork |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 |

303| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | Atur ke `1` untuk memancarkan blok teks dan pemikiran [subagent](/docs/id/sub-agents) dalam output `claude -p --output-format stream-json`, perilaku yang sama seperti flag [`--forward-subagent-text`](/docs/id/cli-reference#cli-flags). Gunakan variabel ketika harness memanggil `claude` dan tidak dapat meneruskan flag itu sendiri. Tidak seperti flag, yang keluar dengan kesalahan di luar mode non-interaktif dengan output stream-json, variabel diabaikan di sana sehingga invokasi bersarang terus bekerja ketika diatur di seluruh proses. Memerlukan Claude Code v2.1.211 atau lebih baru |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 |

304| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | Atur ke `1` untuk mengirim [header hint gateway](/docs/id/llm-gateway-protocol#gateway-hint-headers), seperti `x-claude-code-request-class` dan `x-claude-code-compaction`, pada proxy khusus atau penyedia pihak ketiga seperti Amazon Bedrock atau Claude Platform on AWS. Atur ke `0` untuk menghentikan pengiriman mereka pada setiap koneksi, termasuk koneksi langsung ke API Anthropic, di mana Claude Code mengirimnya secara default. Memerlukan Claude Code v2.1.273 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 |

305| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | Timeout dalam milidetik untuk permintaan [penemuan model gateway](/docs/id/llm-gateway-protocol#model-discovery) yang `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` aktifkan (default: `3000`). Naikkan ketika gateway Anda memerlukan lebih lama dari tiga detik untuk menjawab `/v1/models` saat startup. Hanya menerima digit biasa; `0`, nilai negatif, dan ejaan lain menyimpan default. Memerlukan Claude Code v2.1.269 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 |

306| `CLAUDE_CODE_GIT_BASH_PATH` | Hanya Windows: path ke executable Git Bash (`bash.exe`). Gunakan ketika Git Bash diinstal tetapi tidak di `PATH` Anda. Jika path tidak ada atau file tidak bernama `bash.exe`, `sh.exe`, `bash`, atau `sh`, Claude Code mengabaikan variabel dan auto-deteksi Git Bash seolah-olah tidak diatur, mencatat peringatan yang terlihat dengan `--debug`. Sebelum v2.1.219, Claude Code keluar saat startup ketika path tidak ada, dan menggunakan file yang ada sebagai shell tanpa memeriksa bahwa itu adalah bash atau sh. Lihat [Pengaturan Windows](/docs/id/setup#set-up-on-windows) |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) |

307| `CLAUDE_CODE_GLOB_HIDDEN` | Atur ke `false` untuk mengecualikan dotfile dari hasil ketika Claude memanggil alat [Glob](/docs/id/tools-reference#glob-tool-behavior). Disertakan secara default. Tidak mempengaruhi autocomplete file `@`, `ls`, Grep, atau Read |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 |

308| `CLAUDE_CODE_GLOB_NO_IGNORE` | Atur ke `false` untuk membuat alat [Glob](/docs/id/tools-reference#glob-tool-behavior) menghormati pola `.gitignore`. Secara default, Glob mengembalikan semua file yang cocok termasuk yang diabaikan git. Tidak mempengaruhi autocomplete file `@`, yang memiliki pengaturan [`respectGitignore`](/docs/id/settings-reference#respectgitignore) sendiri |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 |

309| `CLAUDE_CODE_GLOB_TIMEOUT_SECONDS` | Timeout dalam detik untuk penemuan file alat Glob. Default ke 20 detik di sebagian besar platform dan 60 detik di WSL |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 |

310| `CLAUDE_CODE_GOAL_CHECKIN_MINUTES` | Berapa menit pekerjaan latar belakang dapat membuat tujuan aktif menunggu sebelum Claude Code [meminta Claude untuk memeriksanya](/docs/id/goal#background-work-defers-evaluation). Default `30`. Atur `0` untuk menonaktifkan check-in. Berikan menit utuh dalam digit biasa, paling banyak `10080`, yang merupakan satu minggu. Claude Code memperlakukan nilai apa pun sebagai tidak diatur dan menggunakan default. Memerlukan Claude Code v2.1.234 atau lebih baru |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 |

311| `CLAUDE_CODE_HIDE_CWD` | Atur ke `1` untuk menyembunyikan direktori kerja dalam logo startup. Berguna untuk screenshare atau rekaman di mana path mengekspos nama pengguna OS Anda |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 |

312| `CLAUDE_CODE_IDE_HOST_OVERRIDE` | Ganti alamat host yang digunakan untuk terhubung ke ekstensi IDE. Secara default Claude Code auto-deteksi alamat yang benar, termasuk perutean WSL-ke-Windows |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 |

313| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Atur ke `1` untuk melewati auto-instalasi ekstensi IDE. Setara dengan menetapkan [`autoInstallIdeExtension`](/docs/id/settings-reference#autoinstallideextension) ke `false` |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` |

314| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Atur ke `1` untuk melewati validasi entri lockfile IDE selama koneksi. Gunakan ketika auto-connect gagal menemukan IDE Anda meskipun itu berjalan |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 |

315| `CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS` | Berapa banyak [subagent](/docs/id/sub-agents#concurrent-subagent-limit) dapat berjalan dalam satu sesi sebelum alat Agent menolak untuk memunculkan yang lain (default: 20). Menerima bilangan bulat positif dalam digit biasa; apa pun yang lain diabaikan, jadi variabel dapat menyesuaikan batas tetapi tidak dapat menonaktifkannya. Memerlukan Claude Code v2.1.217 atau lebih baru |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 |

316| `CLAUDE_CODE_MAX_CONTEXT_TOKENS` | Ganti ukuran jendela konteks yang Claude Code asumsikan untuk model aktif. Mulai dari v2.1.193, cara penerapannya tergantung pada cara Claude Code menyelesaikan ID model; lihat [Koreksi jendela untuk ID model gateway atau khusus](/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 jendela konteksnya tidak cocok dengan ukuran bawaan untuk namanya |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 |

317| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Panjang maksimum dalam karakter dari setiap deskripsi alat MCP dan instruksi server MCP yang Claude Code kirim 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. Apa pun yang lain diabaikan dan default berlaku. Memerlukan Claude Code v2.1.280 atau lebih baru |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 |

318| `CLAUDE_CODE_MAX_OUTPUT_TOKENS` | Atur 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 default ke 32000 untuk ID model yang tidak dikenalinya, seperti nama spesifik gateway, dan menurunkan nilai di atas batas model ke batas. Meningkatkan nilai ini mengurangi jendela konteks efektif yang tersedia sebelum [auto-compaction](/docs/id/costs#reduce-token-usage) dipicu |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 |

319| `CLAUDE_CODE_MAX_RETRIES` | Ganti jumlah kali untuk mencoba ulang permintaan API yang gagal (default: 10). Dibatasi pada 15 mulai dari v2.1.186; mulai dari v2.1.199, `CLAUDE_CODE_RETRY_WATCHDOG` menaikkan default dan menghapus batas. Untuk sesi tanpa pengawasan yang perlu menunggu melalui pemadaman yang lebih lama, atur `CLAUDE_CODE_RETRY_WATCHDOG` sebagai gantinya |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 |

320| `CLAUDE_CODE_MAX_SUBAGENTS_PER_SESSION` | Dihapus di v2.1.224 dan sekarang tidak beroperasi. Sebelumnya membatasi jumlah total [subagent](/docs/id/sub-agents) yang dapat Claude luncurkan dengan alat Agent dalam satu sesi (default: 200); memunculkan melampaui 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) masih berlaku |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 |

321| `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 menonaktifkan nesting. Di v2.1.217 melalui v2.1.218, default adalah 1, jadi subagent tidak dapat memunculkan miliknya sendiri kecuali Anda menaikkan batas; v2.1.219 menaikkan default ke 3. Menerima bilangan bulat positif dalam digit biasa; apa pun yang lain diabaikan, jadi batas dapat disesuaikan tetapi tidak dihapus. Memerlukan Claude Code v2.1.217 atau lebih baru |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 |

322| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | Jumlah maksimum alat baca-saja dan subagent yang dapat dieksekusi secara paralel (default: 10). Nilai yang lebih tinggi meningkatkan paralelisme tetapi mengonsumsi lebih banyak sumber daya |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 |

323| `CLAUDE_CODE_MAX_TURNS` | Batasi jumlah giliran agentic ketika tidak ada batas eksplisit yang diteruskan. Setara dengan meneruskan [`--max-turns`](/docs/id/cli-reference#cli-flags), yang mengambil prioritas ketika keduanya diatur. Nilai yang bukan bilangan bulat positif ditolak saat startup dengan kesalahan daripada diperlakukan sebagai tidak ada batas |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 |

324| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | Batas pada jumlah total panggilan [WebSearch](/docs/id/tools-reference#websearch-tool-behavior) satu sesi dapat membuat (default: 200). Ketika Claude mencapai batas, panggilan WebSearch lebih lanjut mengembalikan pemberitahuan yang memberitahunya untuk melanjutkan dengan informasi yang sudah dikumpulkannya. Menerima bilangan bulat positif tanpa batas atas. Apa pun yang lain diabaikan dan default berlaku, jadi batas dapat dinaikkan tetapi tidak dinonaktifkan. Memerlukan Claude Code v2.1.212 atau lebih baru |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 |

325| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | Atur ke `1` untuk memunculkan server MCP stdio dengan hanya lingkungan dasar yang aman ditambah `env` yang dikonfigurasi server, daripada mewarisi lingkungan shell Anda |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 |

326| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | Waktu yang telah berlalu dalam milidetik sebelum panggilan alat MCP yang masih berjalan [pindah ke tugas latar belakang](/docs/id/mcp#automatic-backgrounding-of-long-tool-calls) (default: 120000, atau 2 menit). Atur ke `0` untuk menonaktifkan backgrounding otomatis. Memerlukan Claude Code v2.1.212 atau lebih baru |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 |

327| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | Berapa lama dalam milidetik giliran pertama sesi [non-interaktif](/docs/id/headless) menunggu server MCP yang masih terhubung, sebagai pengganti [tunggu giliran pertama](/docs/id/agent-sdk/mcp#connection-timing) default. Ketika diatur, tunggu mencakup setiap server yang tertunda. Atur ke `0` untuk melewati tunggu. Server [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) menyimpan tunggu `MCP_TIMEOUT` sendiri terlepas dari nilainya. Memerlukan Claude Code v2.1.274 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 |

328| `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` | Timeout idle dalam milidetik untuk panggilan alat MCP. Ketika server MCP stdio, HTTP, SSE, WebSocket, atau [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) mengirim tidak ada respons dan tidak ada pemberitahuan kemajuan untuk waktu yang lama, panggilan alat menghentikan dengan kesalahan daripada menunggu `MCP_TOOL_TIMEOUT` keseluruhan. Mengganti default per-transport 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 ke satu detik, dan nilai dibatasi pada `MCP_TOOL_TIMEOUT` efektif. `timeout` per-server di `.mcp.json` setidaknya 1000 menaikkan jendela idle server itu setidaknya ke 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 |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 |

329| `CLAUDE_CODE_MESSAGING_SOCKET` | Atur oleh Claude Code, bukan oleh Anda: di sesi yang mengikat [soket inbox](/docs/id/cross-session-messaging#the-sessions-inbox-socket), Claude Code mengekspor path soket itu ke hook dan perintah Bash ketika mengikat soket. Di sesi yang dimulai dengan messaging aktif, Claude Code mengikat soket sebelum hook apa pun berjalan. Sesi lain di mesin mengirimkan pesan ke path ini. Setiap sesi mengekspor soketnya sendiri daripada yang diwarisi dari induk, dan pesan yang tiba di dalamnya melalui [kontrol inbound](/docs/id/cross-session-messaging#control-inbound-messages) sesi. Blok `env` pengaturan tidak dapat menetapkannya. Memerlukan Claude Code v2.1.224 atau lebih baru |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 |

330| `CLAUDE_CODE_MESSAGING_TOKEN` | Atur oleh Claude Code, bukan oleh Anda: di sesi yang mengikat [soket inbox](/docs/id/cross-session-messaging#the-sessions-inbox-socket), Claude Code mengekspor token per-sesi ini ke hook dan perintah Bash bersama `CLAUDE_CODE_MESSAGING_SOCKET`. Skrip yang memposting ke soket dapat mengirim `{"type":"auth","token":"<token>"}` sebagai baris pertamanya untuk membuktikan bahwa itu milik sesi. Di Windows asli, Claude Code memerlukan baris ini dan menutup koneksi apa pun yang tidak dibuka dengan yang valid. [Aturan anak sendiri](/docs/id/cross-session-messaging#the-sessions-inbox-socket) mengatakan kapan Claude Code berkonsultasi dengan token. Setiap sesi mengekspor token sendiri, tidak pernah yang diwarisi dari sesi induk. Blok `env` pengaturan tidak dapat menetapkannya. Memerlukan Claude Code v2.1.228 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 |

331| `CLAUDE_CODE_NATIVE_CURSOR` | Atur ke `1` untuk menampilkan kursor terminal sendiri di karet input daripada blok yang ditarik. Kursor menghormati pengaturan blink, bentuk, dan fokus terminal |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 |

332| `CLAUDE_CODE_NEW_INIT` | Atur ke `1` untuk membuat `/init` menjalankan alur pengaturan interaktif. Alur menanyakan file mana yang akan dihasilkan, termasuk CLAUDE.md, skills, dan hooks, sebelum menjelajahi codebase dan menulisnya. Tanpa variabel ini, `/init` menghasilkan CLAUDE.md secara otomatis tanpa meminta |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 |

333| `CLAUDE_CODE_NONBLOCKING_STDOUT` | Atur ke `1` untuk menulis output terminal melalui deskriptor file non-blocking kedua, jadi terminal yang berhenti membaca, seperti pane kontrol-mode tmux yang dijeda atau koneksi SSH yang terhenti, 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 |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 |

334| `CLAUDE_CODE_NO_FLICKER` | Atur ke `1` untuk mengaktifkan [rendering fullscreen](/docs/id/fullscreen), pratinjau penelitian yang mengurangi flicker dan menjaga memori datar dalam percakapan panjang. Mengganti pengaturan [`tui`](/docs/id/settings-reference#tui); Anda juga dapat beralih dengan `/tui fullscreen` |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` |

335| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token penyegaran OAuth untuk autentikasi Claude.ai. Ketika diatur, `claude auth login` menukar token ini secara langsung daripada membuka browser. Memerlukan `CLAUDE_CODE_OAUTH_SCOPES`. Berguna untuk menyediakan autentikasi di lingkungan otomatis |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 |

336| `CLAUDE_CODE_OAUTH_SCOPES` | Ruang lingkup OAuth yang dipisahkan spasi yang token penyegaran dikeluarkan dengan, seperti `"user:profile user:inference user:sessions:claude_code"`. Diperlukan ketika `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` diatur |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 |

337| `CLAUDE_CODE_OAUTH_TOKEN` | Token akses OAuth untuk autentikasi claude.ai. Alternatif untuk `/login` untuk SDK dan lingkungan otomatis. Mengambil prioritas di atas kredensial yang disimpan keychain. Hasilkan satu 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, hasilkan yang baru dan mulai ulang |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 |

338| `CLAUDE_CODE_OPUS_4_6_FAST_MODE_OVERRIDE` | Dihapus di v2.1.160 dan sekarang tidak beroperasi. Sebelumnya menyematkan [mode cepat](/docs/id/fast-mode) ke Claude Opus 4.6 daripada default saat ini. Opus 4.6 tidak lagi mendukung mode cepat |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 |

339| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | Panjang maksimum atribut OpenTelemetry yang membawa konten (respons model, konten alat, prompt sistem, badan API mentah), penanda pemotongan disertakan, dalam unit kode UTF-16 (default: 61440, yaitu 60 KB). Naikkan hanya jika backend telemetri Anda menerima nilai atribut lebih besar dari 64 KB, atau turunkan untuk mengurangi volume telemetri. Memerlukan Claude Code v2.1.214 atau lebih baru. Lihat [Monitoring](/docs/id/monitoring-usage) |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) |

340| `CLAUDE_CODE_OTEL_DIAG_STDERR` | Atur ke `1` untuk menulis kesalahan diagnostik pengekspor OpenTelemetry ke stderr. Secara default kesalahan ini hanya muncul dengan `--debug`, jadi pengekspor yang salah dikonfigurasi seperti tabrakan port Prometheus sebaliknya gagal diam-diam. Memerlukan Claude Code v2.1.179 atau lebih baru. Lihat [Monitoring](/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) |

341| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Timeout dalam milidetik untuk menyiram rentang OpenTelemetry yang tertunda (default: 5000). Lihat [Monitoring](/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) |

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

343| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Timeout dalam milidetik untuk pengekspor OpenTelemetry selesai saat shutdown (default: 2000). Naikkan jika metrik dijatuhkan saat keluar. Lihat [Monitoring](/docs/id/monitoring-usage) |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) |

344| `CLAUDE_CODE_PACKAGE_MANAGER_AUTO_UPDATE` | Atur ke `1` untuk membiarkan Claude Code menjalankan perintah upgrade manajer paket Anda di latar belakang ketika versi baru tersedia. Berlaku untuk instalasi Homebrew dan WinGet. Manajer paket lain terus menampilkan perintah upgrade tanpa menjalankannya. Lihat [Pembaruan otomatis](/docs/id/setup#auto-updates) |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) |

345| `CLAUDE_CODE_PERFORCE_MODE` | Atur ke `1` untuk mengaktifkan perlindungan penulisan yang menyadari Perforce. Ketika diatur, Edit, Write, dan NotebookEdit gagal dengan petunjuk `p4 edit <file>` jika file target tidak memiliki bit pemilik-tulis, yang Perforce hapus pada file yang disinkronkan sampai `p4 edit` membukanya. Ini mencegah Claude Code dari melewati pelacakan perubahan Perforce |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 |

346| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Ganti direktori root plugin. Meskipun namanya, ini menetapkan direktori induk, bukan cache itu sendiri: marketplace dan cache plugin hidup di subdirektori di bawah path ini. Default ke `~/.claude/plugins` |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` |

347| `CLAUDE_CODE_PLUGIN_DIRS` | Direktori plugin untuk dimuat untuk sesi, masing-masing dimuat dengan cara flag [`--plugin-dir`](/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) memuat. Pisahkan beberapa path dengan `:` di Unix atau `;` di Windows. Berikan setiap path sebagai path absolut atau mulai dengan `~`, karena Claude Code melewati path relatif. Memerlukan Claude Code v2.1.280 atau lebih baru. Lihat [Muat plugin untuk satu sesi](/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) |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) |

348| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout dalam milidetik untuk kloning atau penyegaran marketplace plugin (default: 120000). Naikkan nilai ini untuk repositori besar atau koneksi jaringan lambat. Lihat [Git clone timed out](/docs/id/plugins/troubleshooting#git-clone-timed-out-after-120s) |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) |

349| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Atur ke `1` untuk melewati upaya re-clone dan terus menggunakan checkout marketplace yang ada ketika penyegaran marketplace tidak dapat menjangkau atau mengautentikasi ke remote. Berguna di lingkungan offline atau airgapped di mana re-cloning akan gagal dengan cara yang sama. Lihat [Pembaruan Marketplace gagal di lingkungan offline](/docs/id/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |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) |

350| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Atur ke `1` untuk mengkloning shorthand sumber GitHub `owner/repo` melalui HTTPS daripada SSH. Berlaku untuk instalasi plugin dan update, dan untuk `/plugin marketplace add` dan `update`. Berguna di runner CI, container, atau lingkungan apa pun tanpa kunci SSH yang dikonfigurasi untuk `github.com` |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` |

351| `CLAUDE_CODE_PLUGIN_SEED_DIR` | Path ke satu atau lebih direktori seed plugin baca-saja, dipisahkan oleh `:` di Unix atau `;` di Windows. Gunakan ini untuk membundel direktori plugin yang sudah diisi sebelumnya ke dalam gambar container. Claude Code mendaftarkan marketplace dari direktori ini saat startup dan menggunakan plugin yang di-cache sebelumnya tanpa re-cloning. Lihat [Pre-populate plugins untuk container](/docs/id/plugins/org#seed-containers-and-ci) |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) |

352| `CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY` | Atur ke `1` untuk menghentikan Claude Code dari meneruskan `-ExecutionPolicy Bypass` saat memunculkan PowerShell untuk panggilan alat, hook, dan perintah status line, dan menghormati kebijakan eksekusi efektif mesin sebagai gantinya. Secara default Claude Code melewati kebijakan eksekusi di ruang lingkup proses sehingga skrip `.ps1` dan impor modul bekerja pada instalasi Windows default-Restricted. Bypass ruang lingkup proses tidak pernah mengganti Kebijakan Grup `MachinePolicy` atau `UserPolicy` terlepas dari pengaturan ini |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 |

353| `CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS` | Batas dalam milidetik pada menunggu idle untuk subagent latar belakang dan alur kerja setelah giliran terakhir dalam [mode non-interaktif](/docs/id/headless#background-tasks-at-exit) dengan flag `-p`. Menunggu idle dimulai lagi setiap kali Claude mengambil giliran untuk menangani hasil latar belakang. Default: `600000`, atau 10 menit. Ketika menunggu idle mencapai batas, Claude Code berhenti menunggu tugas latar belakang yang tersisa dan keluar. Atur ke `0` untuk menunggu tanpa batas. Batas ini terpisah dari periode grace lima detik yang berlaku untuk shell latar belakang biasa. Memerlukan Claude Code v2.1.182 atau lebih baru |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 |

354| `CLAUDE_CODE_PROCESS_WRAPPER` | Luncurkan proses yang Claude Code mulai dari binernya sendiri, seperti layanan latar belakang yang menampilkan sesi [tampilan agent](/docs/id/agent-view), melalui peluncur perusahaan yang diberikan sebagai awalan argv seperti `/opt/corp/launcher`. Atur di blok `env` pengaturan pengguna atau [yang dikelola](/docs/id/managed-settings), bukan sebagai ekspor shell, jadi layanan latar belakang yang terpisah mewarisnya; pengaturan proyek dan lokal tidak dapat menetapkannya. Setara dengan pengaturan [`processWrapper`](/docs/id/settings-reference#processwrapper), yang memerlukan Claude Code v2.1.210 atau lebih baru; variabel ini mengambil prioritas ketika keduanya diatur. Ekstensi VS Code mengonfigurasi peluncur sendiri secara terpisah melalui pengaturan `claudeProcessWrapper`. Diabaikan di Windows. Lihat [Jalankan Claude Code di balik peluncur perusahaan](/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 |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 |

355| `CLAUDE_CODE_PROJECT_DIR_NAME` | Atur bersama dengan `CLAUDE_CONFIG_DIR` untuk memilih nama direktori `projects/` Claude Code menyimpan transkrip sesi itu dan memori otomatis di bawah, sebagai pengganti yang berasal 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 lingkungan yang Anda mulai `claude` dari, tidak pernah dari blok `env` [file pengaturan](#in-settings-files). Lihat [Beri nama direktori proyek sendiri](/docs/id/sessions#name-the-project-directory-yourself). Memerlukan Claude Code v2.1.234 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 |

356| `CLAUDE_CODE_PROMPT_CACHE_TTL` | Atur `5m` atau `1h`, satu-satunya nilai yang Claude Code terima, untuk memilih [prompt cache TTL](/docs/id/prompt-caching#cache-lifetime) untuk percakapan utama: giliran interaktif, `-p`, dan SDK Anda, ditambah pembantu yang berjalan inline dengannya. Mengambil prioritas di atas pengaturan `promptCacheTtl` dan di atas `ENABLE_PROMPT_CACHING_1H`, dan `FORCE_PROMPT_CACHING_5M` menimpanya. Penulisan cache 1 jam ditagih dengan tarif lebih tinggi. Memerlukan Claude Code v2.1.242 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 |

357| `CLAUDE_CODE_PROPAGATE_TRACEPARENT` | Atur ke `1` untuk menyebarkan konteks jejak W3C ketika `ANTHROPIC_BASE_URL` menunjuk ke proxy khusus. Penyebaran mencakup header `traceparent` pada permintaan model dan MCP HTTP dan variabel lingkungan `TRACEPARENT` untuk subproses Bash, PowerShell, dan hook. Secara default, penyebaran diaktifkan hanya ketika terhubung langsung ke API Anthropic. Ditambahkan di v2.1.152. Lihat [Jejak (beta)](/docs/id/monitoring-usage#traces-beta) |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) |

358| `CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST` | Atur oleh platform host yang menyematkan Claude Code dan mengelola perutean penyedia model atas namanya. Ketika diatur, Claude Code mengabaikan penyedia-seleksi, endpoint, dan variabel autentikasi seperti `CLAUDE_CODE_USE_BEDROCK`, `ANTHROPIC_BASE_URL`, dan `ANTHROPIC_API_KEY` di file pengaturan, jadi pengaturan pengguna tidak dapat mengganti perutean host. Claude Code juga mengabaikan kunci seleksi model seperti `model`, `fallbackModel`, dan `modelOverrides` di [pengaturan yang dikelola](/docs/id/managed-settings), sumber yang dikelola mana pun yang mengirimkannya, jadi konfigurasi model host mengambil prioritas di atas pin model yang sudah usang. Claude Code juga mengabaikan variabel seleksi model seperti `ANTHROPIC_MODEL` dan keluarga `ANTHROPIC_DEFAULT_*_MODEL` di blok `env` yang dikelola; daftar izin [`availableModels`](/docs/id/model-config#restrict-model-selection) di pengaturan yang dikelola masih berlaku kecuali host menyediakan miliknya sendiri. Claude Code juga melewati opt-out telemetri otomatis yang sebaliknya diterapkan di penyedia pihak ketiga seperti Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, dan Microsoft Foundry, jadi telemetri mengikuti opt-out `DISABLE_TELEMETRY` standar. Lihat [Perilaku default menurut penyedia API](/docs/id/data-usage#default-behaviors-by-api-provider) |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) |

359| `CLAUDE_CODE_PROXY_RESOLVES_HOSTS` | Atur ke `1` untuk memungkinkan proxy melakukan resolusi DNS daripada pemanggil. Opt-in untuk lingkungan di mana proxy harus menangani resolusi nama host |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 |

360| `CLAUDE_CODE_REMOTE` | Atur secara otomatis ke `true` ketika Claude Code berjalan sebagai [sesi cloud](/docs/id/claude-code-on-the-web). Baca ini dari hook atau skrip setup untuk mendeteksi apakah Anda berada di sesi cloud |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 |

361| `CLAUDE_CODE_REMOTE_SESSION_ID` | Atur secara otomatis di [sesi cloud](/docs/id/claude-code-on-the-web) ke ID sesi saat ini. Baca ini untuk membuat tautan kembali ke transkrip sesi. Lihat [Tautan output kembali ke sesi](/docs/id/cloud-environments#link-output-back-to-the-session) |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) |

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

363| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Atur ke `1` untuk secara otomatis melanjutkan jika sesi sebelumnya berakhir di tengah-giliran. Digunakan dalam mode SDK sehingga model melanjutkan tanpa memerlukan SDK untuk mengirim ulang prompt. Untuk menonaktifkan ini, batalkan penetapan variabel atau atur ke `0`. Sebelum v2.1.221, Claude Code mengabaikan `0` dan nilai falsy lainnya, jadi menetapkan `0` masih memicu resume dalam mode non-interaktif dan membatalkan penetapan variabel adalah satu-satunya cara untuk menonaktifkannya |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 menonaktifkannya, hapus pengaturan variabel atau atur ke `0`. Sebelum v2.1.221, Claude Code mengabaikan `0` dan nilai falsy lainnya, sehingga mengatur `0` tetap memicu pelanjutan dalam mode non-interaktif dan menghapus pengaturan variabel adalah satu-satunya cara untuk menonaktifkannya |

364| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Usia maksimum dalam milidetik dari pesan transkrip terakhir untuk sesi yang berakhir di tengah-giliran untuk melanjutkan secara otomatis pada resume. Ketika pesan terakhir lebih lama dari batas ini, Claude Code melewati resume otomatis `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` dan pesan lanjutan `CLAUDE_CODE_RESUME_PROMPT` yang disuntikkan, dan sesi dimulai idle sehingga Anda melanjutkan secara eksplisit. Tidak diatur atau `0` berarti tidak ada batas, kecuali bahwa giliran yang permintaan terakhirnya gagal dengan kesalahan API melanjutkan hanya saat kesalahan itu kurang dari enam jam. Nilai positif mengikat setiap giliran, termasuk yang; nilai negatif atau non-numerik menerapkan batas satu jam. Skrip spawn untuk agent yang berjalan lama dapat menetapkan ini sehingga restart terhadap transkrip lama tidak menjalankan kembali prompt basi. Claude Code menetapkan batas satu jam sendiri ketika memulai ulang sesi [tampilan agent](/docs/id/agent-view) yang mogok yang mewarisi percakapannya dari sesi interaktif. Memerlukan Claude Code v2.1.211 atau lebih baru |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 |

365| `CLAUDE_CODE_RESUME_PROMPT` | Ganti pesan lanjutan yang dikirim Claude Code ke Claude saat `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` melanjutkan giliran yang terputus alih-alih mengirim ulang prompt-nya, atau saat Anda melanjutkan [panggilan alat yang ditunda](/docs/id/hooks#defer-a-tool-call-for-later) dengan `-p`. Default ke `Continue from where you left off.`. String kosong menggunakan default |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 |

366| `CLAUDE_CODE_RETRY_WATCHDOG` | Atur ke `1` untuk sesi tanpa pengawasan seperti harness eval, pekerjaan CI, atau pekerja jarak jauh. Percobaan ulang `429` dan `529` kesalahan kapasitas tanpa batas daripada gagal setelah upaya `CLAUDE_CODE_MAX_RETRIES`. Claude Code gagal sekaligus ketika permintaan kecepatan standar mendapat `429` yang melaporkan batas pengeluaran atau kredit penggunaan yang habis, bahkan satu 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 mode cepat, lihat [Tangani batas laju](/docs/id/fast-mode#handle-rate-limits). Watchdog mundur hingga 5 menit antara upaya, atau sampai batas direset ketika respons membawa waktu reset batas laju, jadi sesi yang mencapai batas penggunaan menunggu jendela yang tersisa. Di v2.1.199 atau lebih baru itu juga menaikkan jumlah percobaan ulang default untuk kesalahan transien lainnya, seperti kesalahan server, timeout, dan koneksi yang dijatuhkan, ke 300, kira-kira tiga jam mundur, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda menetapkan variabel itu secara eksplisit. Memerlukan Claude Code v2.1.186 atau lebih baru |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 |

367| `CLAUDE_CODE_SAFE_MODE` | Atur ke `1` untuk memulai dalam mode aman: CLAUDE.md, skills, plugin, hook, server MCP, perintah khusus dan agent, gaya output, alur kerja, tema khusus, pintasan keyboard khusus, perintah status line dan saran file, server LSP, dan memori otomatis tidak dimuat, untuk pemecahan masalah konfigurasi yang rusak. Kebijakan pengaturan yang dikelola masih berlaku, termasuk hook, status line, dan perintah saran file yang dikonfigurasi kebijakan; plugin yang dikelola, skills yang dikelola, CLAUDE.md yang dikelola, dan server MCP yang dikonfigurasi kebijakan tidak. Setara dengan meneruskan [`--safe-mode`](/docs/id/cli-reference#cli-flags). Proses anak yang diluncurkan secara langsung mewarisi variabel |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 |

368| `CLAUDE_CODE_SCRIPT_CAPS` | Objek JSON yang membatasi berapa kali skrip spesifik dapat dipanggil per sesi ketika `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` diatur. Kunci adalah substring yang cocok dengan teks perintah; nilai adalah batas panggilan bilangan bulat. Misalnya, `{"deploy.sh": 2}` memungkinkan `deploy.sh` dipanggil paling banyak dua kali. Pencocokan berbasis substring jadi trik ekspansi shell seperti `./scripts/deploy.sh $(evil)` masih dihitung terhadap batas. Fan-out runtime melalui `xargs` atau `find -exec` tidak terdeteksi; ini adalah kontrol pertahanan mendalam |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 |

369| `CLAUDE_CODE_SCROLL_SPEED` | Atur pengganda pengguliran roda mouse dalam [rendering fullscreen](/docs/id/fullscreen#mouse-wheel-scrolling). Menerima nilai positif apa pun hingga 20, termasuk nilai fraksional di bawah 1 seperti `0.5` untuk memperlambat pengguliran trackpad dan roda yang dipercepat di terminal yang sudah memperkuat acara roda. Atur ke `3` untuk mencocokkan `vim` jika terminal Anda mengirim satu acara roda per takik tanpa amplifikasi. Diabaikan di terminal IDE JetBrains, di mana Claude Code menggunakan penanganan pengguliran sendiri |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 |

370| `CLAUDE_CODE_SEND_FEEDBACK` | Atur ke `0` untuk menonaktifkan [umpan balik yang ditulis Claude](/docs/id/tools-reference#sendfeedback-tool-behavior) untuk sesi. Atur ke `1` untuk mengaktifkannya di mana akun Anda sudah memiliki akses; variabel tidak dapat memberikan akses itu sendiri, dan switch lain yang menonaktifkan umpan balik, seperti `DISABLE_FEEDBACK_COMMAND` dan nilai `off` pengaturan [`feedbackDrafts`](/docs/id/settings-reference#feedbackdrafts), masih berlaku |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 |

371| `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` | Ganti anggaran waktu dalam milidetik untuk hook [SessionEnd](/docs/id/hooks#sessionend). Nilainya juga timeout untuk setiap hook yang tidak menetapkan `timeout` miliknya sendiri. Berlaku untuk keluar sesi, `/clear`, dan beralih sesi melalui `/resume` interaktif. Secara default anggaran adalah 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 |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 |

372| `CLAUDE_CODE_SESSION_ID` | Atur secara otomatis ke ID sesi saat ini di subproses alat 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 bidang `session_id` dalam input JSON hook dan diperbarui di `/clear`. Subproses server MCP mempertahankan ID yang diluncurkan dengannya. Di `--resume <session-id>` itu menerima ID yang dilanjutkan, cocok dengan hook dan Bash. Di `--continue` atau `--resume` tanpa ID eksplisit itu mungkin menerima ID startup awal sebagai gantinya. Gunakan untuk menghubungkan skrip dan alat eksternal dengan sesi Claude Code yang meluncurkannya |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 |

373| `CLAUDE_CODE_SHELL` | Atur shell yang Claude Code gunakan untuk menjalankan perintah alat Bash. Menerima path ke biner `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 auto-deteksi. Auto-deteksi menggunakan `$SHELL` Anda ketika menunjuk ke `bash` atau `zsh`, sebaliknya memilih `zsh` pertama yang berfungsi kemudian `bash` yang ditemukan di `PATH` Anda dan lokasi instalasi standar |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 |

374| `CLAUDE_CODE_SHELL_PREFIX` | Awalan perintah yang membungkus perintah shell Claude Code luncurkan: panggilan alat Bash, perintah [hook](/docs/id/hooks), perintah [status line](/docs/id/statusline), dan perintah startup [server MCP](/docs/id/mcp) stdio. Hook PowerShell dan hook bentuk exec berjalan tanpa awalan. Berguna untuk logging atau audit. Menetapkan path executable telanjang seperti `/path/to/logger.sh` menjalankan setiap perintah sebagai `/path/to/logger.sh '<command>'`. Pembungkus menerima baris perintah sebagai argumen shell-quoted tunggal di `$1`, jadi pembungkus harus mengevaluasi ulang `$1` dengan shell, misalnya `exec bash -c "$1"`. Memperlakukan `$1` sebagai path executable telanjang memecahkan server MCP stdio yang meneruskan argumen seperti `npx -y <package>`. Untuk panggilan alat Bash, `$1` berisi invokasi shell penuh yang Claude Code rakitkan, termasuk setup lingkungan, bukan hanya perintah yang Claude jalankan |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 |

375| `CLAUDE_CODE_SIMPLE` | Atur ke `1` untuk menjalankan dengan prompt sistem minimal dan hanya alat Bash, pembacaan file, dan pengeditan file. Alat MCP dari `--mcp-config` masih tersedia. Menonaktifkan auto-discovery hook, skills, perintah khusus, subagent, plugin, server MCP, memori otomatis, dan CLAUDE.md. Skills di direktori yang Anda teruskan dengan `--add-dir` masih dimuat. Token OAuth dan kredensial keychain tidak dibaca, jadi autentikasi Anthropic harus berasal dari `ANTHROPIC_API_KEY` atau `apiKeyHelper` di `--settings`. Setara dengan meneruskan [`--bare`](/docs/id/headless#start-faster-with-bare-mode) |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) |

376| `CLAUDE_CODE_SIMPLE_SYSTEM_PROMPT` | Atur ke `1` untuk menggunakan prompt sistem yang lebih pendek dan deskripsi alat yang disingkat di model apa pun. Atur ke `0`, `false`, `no`, atau `off` untuk memilih keluar bahkan di model di mana eksperimen atau konfigurasi server akan mengaktifkannya. Set alat penuh, penemuan hook, server MCP, dan CLAUDE.md tetap diaktifkan |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 |

377| `CLAUDE_CODE_SKIP_ANTHROPIC_AWS_AUTH` | Lewati autentikasi sisi klien untuk [Claude Platform on AWS](/docs/id/claude-platform-on-aws), untuk gateway yang menandatangani permintaan sendiri |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 |

378| `CLAUDE_CODE_SKIP_AWS_CRED_CACHE` | Atur ke `1` untuk menonaktifkan cache dalam proses kredensial yang diselesaikan dari rantai penyedia kredensial default AWS, jadi Claude Code menyelesaikan rantai pada setiap permintaan API. Dengan cache dimatikan, profil yang didukung SSO meminta kredensial dari IAM Identity Center pada setiap permintaan. Lihat [credential caching and resolution timeout](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout). Memerlukan Claude Code v2.1.207 atau lebih baru |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 |

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

380| `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS` | Atur ke `1` untuk memperlakukan pemeriksaan ketersediaan [mode cepat](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) yang gagal sebagai tersedia, untuk jaringan yang memblokir permintaan langsung pemeriksaan ke `api.anthropic.com`. Claude Code masih menghormati respons "disabled by your organization" |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" |

381| `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK` | Atur ke `1` untuk melewati pemeriksaan ketersediaan [mode cepat](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways) sisi klien, untuk proxy yang mencegat permintaan pemeriksaan daripada menolaknya. API masih menolak permintaan mode cepat ketika organisasi Anda memiliki mode cepat dinonaktifkan |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 |

382| `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` | Lewati autentikasi Azure untuk Microsoft Foundry, untuk proxy atau gateway yang menyuntikkan header `Authorization` sendiri. Claude Code mengirim permintaan tanpa kredensial Azure dan mempertahankan header `Authorization` yang Anda sediakan, misalnya melalui `ANTHROPIC_CUSTOM_HEADERS`. Diabaikan ketika `ANTHROPIC_FOUNDRY_API_KEY` atau `ANTHROPIC_FOUNDRY_AUTH_TOKEN` diatur. Sebelum v2.1.203, variabel ini meninggalkan klien Microsoft Foundry tidak mampu mengirim permintaan kecuali kunci API juga diatur |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 |

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

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 |

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

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

386| `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` | Atur ke `1` untuk memiliki sesi yang dimulai dengan `--output-format stream-json` menulis [pesan hasil yang menyebutkan mengapa Claude Code menolak untuk memulai](/docs/id/agent-sdk/typescript#startup_failure_reason) untuk kegagalan startup yang sebaliknya berakhir dengan stderr saja. Memerlukan Claude Code v2.1.274 atau lebih baru |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 |

387| `CLAUDE_CODE_STOP_HOOK_BLOCK_CAP` | Jumlah maksimum kali berturut-turut hook [Stop](/docs/id/hooks#stop) atau [SubagentStop](/docs/id/hooks#subagentstop) dapat memblokir giliran dari berakhir sebelum Claude Code menimpanya dan mengakhiri giliran bagaimanapun (default: 8). Atur ke `0` untuk menonaktifkan batas. Naikkan ini jika hook Anda secara sah memerlukan lebih banyak iterasi untuk diselesaikan |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 |

388| `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 agen [alur kerja](/docs/id/workflows) yang tidak ditugaskan model dengan cara lain. Menerima alias seperti `haiku` atau nama model penuh. Dua sumber mengambil prioritas di atasnya: model yang Claude teruskan ketika memunculkan agent, dan bidang `model` dalam definisi agent, termasuk `inherit`. Untuk mengubah itu, atur [`CLAUDE_CODE_SUBAGENT_MODEL_FORCE`](/docs/id/sub-agents#run-every-subagent-on-one-model). Lihat [Pilih model](/docs/id/sub-agents#choose-a-model) untuk urutan penuh. Menetapkannya ke `inherit` sama dengan membiarkannya tidak diatur. Sebelum v2.1.251, variabel ini mengganti model per-invokasi dan bidang `model` definisi |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 |

389| `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | Atur ke `1` untuk memaksa satu model ke subagent, rekan tim, dan agen alur kerja. [Jalankan setiap subagent di satu model](/docs/id/sub-agents#run-every-subagent-on-one-model) mengatakan model mana itu. Memerlukan Claude Code v2.1.257 atau lebih baru |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 |

390| `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL` | Atur `5m` atau `1h`, satu-satunya nilai yang Claude Code terima, untuk memilih [prompt cache TTL](/docs/id/prompt-caching#cache-lifetime) untuk permintaan di luar percakapan utama, seperti [subagent](/docs/id/sub-agents), alur kerja, dan pekerjaan latar belakang. Mengambil prioritas di atas pengaturan `subagentPromptCacheTtl` dan di atas `ENABLE_PROMPT_CACHING_1H`, dan `FORCE_PROMPT_CACHING_5M` menimpanya. Penulisan cache 1 jam ditagih dengan tarif lebih tinggi. Memerlukan Claude Code v2.1.242 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 |

391| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Atur ke `1` untuk menghapus kredensial dari lingkungan subproses (alat Bash, hook, server MCP stdio): kredensial Anthropic dan penyedia cloud, variabel lain apa pun yang Claude Code kenali sebagai kredensial, dan kredensial yang tertanam dalam URL registri paket. Proses Claude induk menyimpan kredensial ini untuk panggilan API, tetapi proses anak tidak dapat membacanya, mengurangi paparan terhadap serangan injeksi prompt yang mencoba mengeksfiltrasikan rahasia melalui ekspansi shell. Di v2.1.251 atau lebih baru, scrub juga menghapus variabel penunjuk penyimpanan konfigurasi Claude Code sendiri (seperti `CLAUDE_CONFIG_DIR`), jadi proses anak tidak dapat menemukan direktori konfigurasi yang dipindahkan. Biarkan scrub tidak diatur jika subproses memerlukan variabel ini. Di Linux, ini juga menjalankan subproses Bash dalam namespace PID terisolasi sehingga mereka tidak dapat membaca lingkungan proses host melalui `/proc`; sebagai efek samping, `ps`, `pgrep`, dan `kill` tidak dapat melihat atau menandatangani proses host. `claude-code-action` menetapkan ini secara otomatis ketika `allowed_non_write_users` dikonfigurasi |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 |

392| `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 memasang di latar belakang dan mungkin tidak tersedia di giliran pertama. Gabungkan dengan `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` untuk mengikat tunggu |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 |

393| `CLAUDE_CODE_SYNC_PLUGIN_INSTALL_TIMEOUT_MS` | Timeout dalam milidetik untuk instalasi plugin sinkron. Ketika terlampaui, Claude Code melanjutkan tanpa plugin dan mencatat kesalahan. Tidak ada default: tanpa variabel ini, instalasi sinkron menunggu sampai selesai |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 |

394| `CLAUDE_CODE_SYNC_SKILLS` | Atur ke `1` dalam mode non-interaktif dengan flag `-p` untuk membuat Claude Code mengunduh skills yang diaktifkan untuk akun claude.ai Anda dalam jalankan itu dan menunggu daftar mereka, 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 menginvokasinya. Memerlukan autentikasi claude.ai. Sesi terminal di mana Anda masuk dengan akun claude.ai Anda [mengunduh skills ini](/docs/id/skills#where-synced-skills-load) ke `~/.claude/skills/synced/` dan resync sekitar setiap 10 menit tanpa variabel ini, jadi atur hanya ketika jalankan `-p` memerlukan skills saat ini pada kueri pertamanya. Sebelum v2.1.273, sesi terminal mengunduhnya hanya dalam jalankan `-p` dengan variabel ini diatur. Nama folder `synced` [dicadangkan untuk unduhan ini](/docs/id/skills#where-skills-live). Sebelum v2.1.227, skills mengunduh ke `~/.claude/skills/` secara langsung. Claude Code menerapkan [aturan ekstra ke skills yang diunduh](/docs/id/skills#how-synced-skills-behave), seperti tidak menjalankan perintah `!` mereka di mesin Anda |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 |

395| `CLAUDE_CODE_SYNC_SKILLS_INSTALL_TIMEOUT_MS` | Timeout dalam milidetik untuk resync skills yang berjalan di tengah-sesi ketika aplikasi yang dibangun di [Agent SDK](/docs/id/agent-sdk/typescript#query-object) memuat ulang skills (default: 30000). Ketika terlampaui, reload berlanjut dengan skills apa pun yang telah tiba, dan unduhan yang tersisa selesai di latar belakang |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 |

396| `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` | Timeout dalam milidetik untuk kueri pertama menunggu daftar skill awal ketika `CLAUDE_CODE_SYNC_SKILLS` diatur (default: 5000). Ketika terlampaui, kueri pertama berjalan dengan skills apa pun yang telah tiba. Unduhan selesai di latar belakang bagaimanapun, dan Claude menunggu unduhan skill ketika menginvokasinya |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 |

397| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Atur ke `false` untuk menonaktifkan penyorotan sintaks dalam output diff. Berguna ketika warna mengganggu pengaturan terminal Anda. Untuk juga menonaktifkan penyorotan dalam blok kode dan pratinjau file, gunakan pengaturan [`syntaxHighlightingDisabled`](/docs/id/settings-reference#syntaxhighlightingdisabled) |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) |

398| `CLAUDE_CODE_TASK_LIST_ID` | Bagikan daftar tugas di seluruh sesi. Atur ID yang sama di beberapa instans Claude Code untuk berkoordinasi pada daftar tugas bersama, di [sesi yang memiliki alat Task](/docs/id/tools-reference#task-tool-availability). Lihat [Daftar tugas](/docs/id/interactive-mode#task-list) |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) |

399| `CLAUDE_CODE_TEAM_TEARDOWN_PARK_TIMEOUT_MS` | Ganti, dalam milidetik, berapa lama sesi non-interaktif menunggu saat keluar untuk [tim agent](/docs/id/agent-teams) selesai merobohkan. Menerima 1000 hingga 60000; nilai di luar jangkauan diabaikan dan default 10000 berlaku. Memerlukan Claude Code v2.1.206 atau lebih baru |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 |

400| `CLAUDE_CODE_TMPDIR` | Ganti direktori temp yang digunakan untuk file temp internal. Claude Code menambahkan `/claude-{uid}/` di Unix atau `/claude/` di Windows ke path ini. Default: `/tmp` di macOS, `os.tmpdir()` di Linux dan Windows. Di macOS dan Linux, subproses Bash [sandboxed](/docs/id/sandboxing) menerima fallback `$TMPDIR` pendek di bawah default sistem ketika override Anda adalah path panjang, karena beberapa alat gagal ketika path temp menjadi terlalu panjang. Perintah Bash yang tidak disandbox mewarisi `$TMPDIR` shell Anda tidak berubah. File temp Claude Code sendiri selalu menggunakan override Anda. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |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) |

401| `CLAUDE_CODE_TMUX_TRUECOLOR` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk memungkinkan output truecolor 24-bit di dalam tmux. **Menetapkannya ke `0` atau `false` masih memungkinkan truecolor**, tidak seperti sebagian besar variabel aktif/mati; batalkan penetapan variabel untuk mengembalikan penjepit warna 256. Secara default, Claude Code menjepit ke 256 warna ketika `$TMUX` diatur karena tmux tidak meneruskan urutan escape truecolor kecuali dikonfigurasi untuk. Atur ini setelah menambahkan `set -ga terminal-overrides ',*:Tc'` ke `~/.tmux.conf` Anda. Lihat [Konfigurasi Terminal](/docs/id/terminal-config) untuk pengaturan tmux lainnya |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 |

402| `CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE` | Di Linux dan WSL, atur ke daftar jenis proses yang dipisahkan koma yang Claude Code [mengecualikan dari batas memori alat](/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 alat Bash, PowerShell, dan Monitor. Claude Code menjaga perintah alat Bash, PowerShell, dan Monitor di bawah batas apa pun yang Anda daftarkan. Memerlukan Claude Code v2.1.246 atau lebih baru |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 |

403| `CLAUDE_CODE_TOOL_MEMORY_LIMIT` | Di Linux dan WSL, atur ke ukuran seperti `4G` untuk [membatasi memori yang perintah alat Bash dan PowerShell dapat gunakan](/docs/id/tools-reference#memory-limit-on-linux-and-wsl), dan perintah alat Monitor di v2.1.246 atau lebih baru. Tulis ukuran dalam digit biasa, saja untuk jumlah byte atau dengan akhiran `K`, `M`, `G`, atau `T`. Atur `0` atau `off` untuk menonaktifkan batas. Setelah proses pertama Claude Code mulai telah mengaktifkan atau menonaktifkan batas, nilai yang berubah berlaku saat berikutnya Anda meluncurkan `claude`. Memerlukan Claude Code v2.1.233 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 |

404| `CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS` | Tenggat waktu dalam milidetik sebelum Claude Code membatalkan dialog yang diteruskan ke klien jarak jauh seperti [Remote Control](/docs/id/remote-control) atau host SDK, atau dialog persetujuan untuk [pesan lintas sesi yang ditahan](/docs/id/cross-session-messaging#control-inbound-messages); prompt izin dan pertanyaan `AskUserQuestion` menggunakan alur mereka sendiri dan tidak diatur olehnya. Di Claude Code v2.1.236 atau lebih baru, itu juga mengikat prompt persetujuan kredit penggunaan Fable [mid-session](/docs/id/model-config#fable-and-usage-credits) di sesi yang mungkin berjalan tanpa pengawasan. [Kontrol pesan inbound](/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 penuh, termasuk kasus di mana tenggat waktu tidak berlaku. Mengganti pengaturan [`dialogExpiry`](/docs/id/settings-reference#dialogexpiry). `0` atau nilai negatif menonaktifkan tenggat waktu |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 |

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

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

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

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

409| `CLAUDE_CODE_USE_NATIVE_FILE_SEARCH` | Atur ke `1` untuk menemukan perintah khusus, subagent, dan gaya output menggunakan API file Node.js daripada ripgrep. Atur ini jika biner ripgrep bundel tidak tersedia atau diblokir di lingkungan Anda. Tidak mempengaruhi alat Grep atau pencarian file |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 |

410| `CLAUDE_CODE_USE_POWERSHELL_TOOL` | Mengontrol alat PowerShell. Di Windows tanpa Git Bash, alat diaktifkan secara otomatis; atur ke `0` untuk menonaktifkannya. Di Windows dengan Git Bash diinstal, alat 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 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 asli daripada merutekan melalui Git Bash. Lihat [Alat PowerShell](/docs/id/tools-reference#powershell-tool) |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) |

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

412| `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. Default adalah `900000`, yang merupakan 15 menit. Hanya menerima digit biasa; `0`, desimal, atau ejaan lain apa pun menyimpan default. Claude Code membaca nilai sekali per peluncuran, jadi perubahan di blok `env` pengaturan berlaku saat Anda berikutnya meluncurkan `claude`. Memerlukan Claude Code v2.1.233 atau lebih baru |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 |

413| `CLAUDE_CODE_WEBFETCH_DEADLINE_MS` | Batas atas dalam milidetik tentang berapa lama [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior) menunggu halaman untuk diunduh, termasuk pengalihan apa pun yang diikutinya. Unduhan yang belum selesai pada saat itu gagal dengan kesalahan tenggat waktu. Default adalah `300000`, yang merupakan lima menit. Atur ke `0` untuk menghapus batas. Hanya menerima digit biasa; desimal atau ejaan lain apa pun menyimpan default. Memerlukan Claude Code v2.1.268 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 |

414| `CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS` | Berapa banyak agen [alur kerja](/docs/id/workflows) menjalankan sekaligus, dari `1` hingga `256`. Secara default, jalankan menjalankan hingga 16 agen sekaligus, lebih sedikit ketika Claude Code memiliki lebih sedikit CPU yang tersedia; panggilan `agent()` yang antri menunggu slot gratis. Transkrip setiap agen yang berjalan tetap dalam memori Claude Code, jadi nilai yang lebih tinggi menaikkan penggunaan memori. Hanya menerima digit biasa; nilai di luar jangkauan dan ejaan lain menyimpan default. Memerlukan Claude Code v2.1.269 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 |

415| `CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS` | Batas atas dalam milidetik tentang berapa lama agen [alur kerja](/docs/id/workflows) menunggu respons pertama sibling yang sama-awalan sebelum mengirim permintaan pertamanya sendiri. Ketika fan-out memulai beberapa agen yang berbagi [awalan cache prompt](/docs/id/workflows#prompt-caching-in-a-fan-out), Claude Code menahan semua kecuali agen pertama untuk waktu yang lama sehingga sisanya membaca awalan yang di-cache daripada masing-masing memprosesnya tanpa cache. Default `5000`. Atur ke `0` untuk menonaktifkan tunggu. Ketika `DISABLE_PROMPT_CACHING` diatur, agen tidak pernah menunggu. Memerlukan Claude Code v2.1.229 atau 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 |

416| `CLAUDE_CONFIG_DIR` | Ganti direktori konfigurasi (default: `~/.claude`). Semua pengaturan, riwayat sesi, dan plugin disimpan di bawah path ini. Untuk kredensial, lihat [di mana Claude Code menyimpan kredensial](/docs/id/authentication#credential-management). Berguna untuk menjalankan beberapa akun berdampingan: misalnya, `alias claude-work='CLAUDE_CONFIG_DIR=~/.claude-work claude'`. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |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) |

417| `CLAUDE_DISABLE_ADOPT` | Atur ke `1` untuk menghentikan pekerjaan latar belakang dalam penerbangan daripada membawanya saat Anda menempatkan sesi di latar belakang dengan menekan `←` atau dengan [`/background`](/docs/id/agent-view#from-inside-a-session). Claude Code meminta Anda untuk mengonfirmasi sebelum backgrounding, kemudian menghentikan tugas yang sebaliknya akan dibawa. Memerlukan Claude Code v2.1.195 atau lebih baru |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 |

418| `CLAUDE_EFFORT` | Atur secara otomatis di subproses alat Bash dan perintah hook ke [tingkat effort](/docs/id/model-config#adjust-effort-level) yang berlaku ketika subproses dimulai: `low`, `medium`, `high`, `xhigh`, atau `max`. Cocok dengan bidang `effort.level` yang diteruskan ke [hook](/docs/id/hooks). Hanya diatur ketika model saat ini mendukung parameter effort |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 |

419| `CLAUDE_ENABLE_BYTE_WATCHDOG` | Atur ke `1` untuk memaksa-mengaktifkan watchdog idle streaming tingkat byte, atau atur ke `0` untuk memaksa-menonaktifkannya. `0` juga menonaktifkan [tenggat waktu byte pertama](/docs/id/network-config#streaming-idle-watchdogs) pada koneksi di mana tenggat waktu itu berjalan. Ketika tidak diatur, watchdog diaktifkan secara default untuk koneksi API Anthropic langsung dan [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan untuk respons streaming di koneksi [gateway](/docs/id/gateways) yang dicapai melalui `ANTHROPIC_BASE_URL` atau `ANTHROPIC_AWS_BASE_URL`; sebelum v2.1.222 itu tidak berjalan di koneksi gateway itu, jadi watchdog tingkat acara dapat melaporkan stall di sana bahkan saat ping keep-alive tiba. Untuk timeout dan cara timer berinteraksi, lihat [Streaming idle watchdogs](/docs/id/network-config#streaming-idle-watchdogs) |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) |

420| `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 waktu byte pertama](/docs/id/network-config#streaming-idle-watchdogs) pada permintaan streaming Bedrock. Dimatikan secara default. Konfigurasikan timeout dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` |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` |

421| `CLAUDE_ENABLE_STREAM_WATCHDOG` | Atur ke `0` untuk memaksa-menonaktifkan watchdog idle streaming tingkat acara, atau atur ke `1` untuk memaksa-mengaktifkannya. Ketika tidak diatur, watchdog aktif secara default untuk semua penyedia. Sebelum v2.1.196, default yang tidak diatur dikendalikan server di API Anthropic langsung dan dimatikan di penyedia lain. Konfigurasikan timeout dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`; untuk timer stall lainnya yang berjalan bersama ini, lihat [Streaming idle watchdogs](/docs/id/network-config#streaming-idle-watchdogs) |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) |

422| `CLAUDE_ENV_FILE` | Path ke skrip shell yang isinya Claude Code jalankan sebelum setiap perintah Bash dalam proses shell yang sama, jadi 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) |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) |

423| `CLAUDE_JOB_DIR` | Atur oleh Claude Code di setiap [sesi latar belakang](/docs/id/agent-view) ke direktori `~/.claude/jobs/<id>` sesi itu. Perintah shell yang dijalankan sesi mewarisnya. Tulis file scratch 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 |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 |

424| `CLAUDE_PID` | Claude Code menetapkan ini ke ID proses miliknya sendiri di subproses yang diluncurkannya: perintah alat Bash dan PowerShell dan perintah hook. Di Linux, integrasi shell alat Bash menggunakannya untuk menolak pola `pkill` yang akan cocok dengan proses Claude Code itu sendiri; lihat [referensi kesalahan](/docs/id/errors#pkill-pattern-matches-the-claude-code-process). Bacanya dari skrip Anda sendiri untuk mengidentifikasi atau menandatangani proses Claude Code induk dengan sengaja. Memerlukan Claude Code v2.1.214 atau lebih baru |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 |

425| `CLAUDE_REMOTE_CONTROL_SESSION_NAME_PREFIX` | Awalan untuk nama sesi [Remote Control](/docs/id/remote-control) yang dihasilkan otomatis ketika tidak ada nama eksplisit yang disediakan. Default ke nama host mesin Anda, menghasilkan nama seperti `myhost-graceful-unicorn`. Flag CLI `--remote-control-session-name-prefix` menetapkan nilai yang sama untuk satu invokasi |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 |

426| `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` | Tenggat waktu dalam milidetik untuk byte respons pertama dari permintaan streaming, pada koneksi di mana [tenggat waktu byte pertama](/docs/id/network-config#streaming-idle-watchdogs) berjalan. Untuk cara Claude Code menjepit, waktu ekstra yang ditambahkannya untuk badan permintaan besar, dan cara memilih tenggat waktu 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 |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 |

427| `CLAUDE_STREAM_IDLE_TIMEOUT_MS` | Timeout dalam milidetik sebelum watchdog idle streaming tingkat acara dan byte menutup koneksi yang terhenti. Ketika Anda menetapkan variabel ini secara eksplisit, minimum adalah `300000` (5 menit); nilai lebih rendah secara diam-diam dijepit untuk menyerap jeda pemikiran yang diperpanjang dan buffering proxy, dan watchdog tingkat byte membatasi nilai pada 30 menit. `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` mengambil prioritas di atas variabel ini untuk watchdog tingkat byte. Untuk default yang tidak diatur per-watchdog, lihat [Streaming idle watchdogs](/docs/id/network-config#streaming-idle-watchdogs) |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) |

428| `CLAUDE_SUBAGENT_BG_SHELL_MAX_MS` | Dihapus di v2.1.260 dan sekarang tidak beroperasi. Sebelumnya membatasi berapa lama [perintah shell latar belakang](/docs/id/interactive-mode#background-bash-commands) yang [subagent](/docs/id/sub-agents) mulai dapat berjalan, dalam milidetik, dengan default 60 menit. Lihat [aturan lifetime perintah latar belakang](/docs/id/tools-reference#background-commands) |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) |

429| `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, jadi pola namespace seperti `DEBUG=express:*` yang diatur untuk alat lain tidak memicunya |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 |

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

431| `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. Mengganti pengaturan [`autoCompactEnabled`](/docs/id/settings-reference#autocompactenabled) |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) |

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

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

434| `DISABLE_DOCTOR_COMMAND` | Atur ke `1` untuk menyembunyikan skill checkup [`/doctor`](/docs/id/commands#all-commands) dan alias `/checkup` miliknya. Berguna untuk deployment yang dikelola di mana pengguna tidak boleh menjalankan diagnostik setup dari sesi. Tidak mempengaruhi perintah terminal `claude doctor`. Sebelum v2.1.205, variabel ini menyembunyikan layar diagnostik `/doctor` |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` |

435| `DISABLE_ERROR_REPORTING` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk memilih keluar dari pelaporan kesalahan. **Menetapkannya ke `0` atau `false` masih memilih keluar**, tidak seperti sebagian besar variabel aktif/mati; batalkan penetapan variabel untuk mengaktifkan pelaporan kesalahan kembali |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 |

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

437| `DISABLE_FEEDBACK_COMMAND` | Atur ke `1` untuk menonaktifkan perintah `/feedback` dan [umpan balik yang ditulis Claude](/docs/id/tools-reference#sendfeedback-tool-behavior). Juga menonaktifkan `/bug` dan `/share`, yang melaporkan melalui path yang sama; sebelum v2.1.212 mereka adalah alias `/feedback`, jadi perintah dinonaktifkan di bawah setiap nama. Nama lama `DISABLE_BUG_COMMAND` juga diterima |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 |

438| `DISABLE_GROWTHBOOK` | Atur ke `1` atau `true` untuk menonaktifkan pengambilan flag fitur GrowthBook dan menggunakan default kode untuk setiap flag. Ini membuat [Remote Control](/docs/id/remote-control#requirements) dan [fitur lain yang memerlukan pengambilan flag fitur](#features-that-need-feature-flag-fetching) tidak tersedia. Menetapkannya ke `0` atau `false` meninggalkan pengambilan aktif. Logging acara telemetri tetap aktif kecuali `DISABLE_TELEMETRY` juga diatur |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 |

439| `DISABLE_INSTALLATION_CHECKS` | Atur ke `1` untuk menonaktifkan peringatan instalasi. Gunakan hanya saat mengelola lokasi instalasi secara manual, karena ini dapat menyembunyikan masalah dengan instalasi standar |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 |

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

441| `DISABLE_INTERLEAVED_THINKING` | Atur ke `1` untuk mencegah pengiriman header beta pemikiran yang disisipi. Berguna ketika gateway LLM atau penyedia Anda tidak mendukung [pemikiran yang disisipi](https://platform.claude.com/docs/en/build-with-claude/extended-thinking#interleaved-thinking) |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) |

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

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

444| `DISABLE_PROMPT_CACHING` | Atur ke `1` untuk menonaktifkan [prompt caching](/docs/id/prompt-caching#disable-prompt-caching) untuk semua model (mengambil prioritas di atas pengaturan per-model) |448| `DISABLE_PROMPT_CACHING` | Atur ke `1` untuk menonaktifkan [prompt caching](/docs/id/prompt-caching#disable-prompt-caching) untuk semua model (diutamakan daripada pengaturan per model) |

445| `DISABLE_PROMPT_CACHING_FABLE` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Fable |449| `DISABLE_PROMPT_CACHING_FABLE` | Atur ke `1` untuk menonaktifkan prompt caching untuk model Fable |

446| `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 itu berjalan |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 |

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

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

449| `DISABLE_TELEMETRY` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk memilih keluar dari telemetri. **Menetapkannya ke `0` atau `false` masih memilih keluar**, tidak seperti sebagian besar variabel aktif/mati; batalkan penetapan variabel untuk mengaktifkan telemetri kembali. Acara telemetri tidak menyertakan data pengguna seperti kode, path file, atau perintah bash. Juga menonaktifkan [pengambilan flag fitur](#features-that-need-feature-flag-fetching). Lihat [Matikan telemetri untuk organisasi Anda](/docs/id/managed-settings#turn-telemetry-off-for-your-organization) |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) |

450| `DISABLE_UPDATES` | Atur ke `1` untuk memblokir semua pembaruan termasuk manual `claude update` dan `claude install`. Lebih ketat daripada `DISABLE_AUTOUPDATER`. Gunakan saat mendistribusikan Claude Code melalui saluran Anda sendiri dan pengguna tidak boleh self-update |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 |

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

452| `DO_NOT_TRACK` | Atur ke `1` untuk memilih keluar dari telemetri, dengan efek yang sama seperti `DISABLE_TELEMETRY`, termasuk pada [pengambilan flag fitur](#features-that-need-feature-flag-fetching). Claude Code membaca variabel ini sebagai boolean standar, jadi `0` meninggalkan telemetri aktif, dan menghormatinya sebagai konvensi lintas alat yang diakui oleh banyak CLI pengembang |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 |

453| `ENABLE_BETA_TRACING_DETAILED` | Atur ke `1`, bersama dengan `BETA_TRACING_ENDPOINT`, untuk mengaktifkan [pelacakan beta terperinci](/docs/id/monitoring-usage#traces-beta), yang menambahkan atribut span yang membawa konten dan span `claude_code.hook`. Sesi CLI interaktif juga memerlukan organisasi Anda untuk dimasukkan dalam daftar putih untuk beta. Kedua variabel diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env) |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) |

454| `ENABLE_CLAUDEAI_MCP_SERVERS` | Atur ke `false` untuk menghentikan Claude Code dari mengambil [server MCP claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai). Diaktifkan secara default untuk pengguna yang masuk. Untuk menonaktifkan per-proyek atau per-org, atur [`disableClaudeAiConnectors`](/docs/id/settings-reference#disableclaudeaiconnectors) di pengaturan sebagai gantinya |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 |

455| `ENABLE_PROMPT_CACHING_1H` | Atur ke `1` untuk meminta [prompt cache TTL](/docs/id/prompt-caching#cache-lifetime) 1 jam daripada default 5 menit. Dimaksudkan untuk 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 pengguna [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Pengguna langganan dalam penggunaan yang disertakan menerima TTL 1 jam secara otomatis di [percakapan utama](/docs/id/prompt-caching#which-ttl-each-request-gets). Pengguna langganan yang menarik pada [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) dapat menetapkannya untuk menyimpan TTL 1 jam. Penulisan cache 1 jam ditagih dengan tarif lebih tinggi. Untuk memilih TTL per bucket permintaan sebagai gantinya, gunakan `CLAUDE_CODE_PROMPT_CACHE_TTL` dan `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, yang mengambil prioritas di atas variabel ini |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 |

456| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Sudah usang. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |460| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |

457| `ENABLE_TOOL_SEARCH` | Mengontrol [pencarian alat MCP](/docs/id/mcp#scale-with-mcp-tool-search). Tidak diatur, Claude Code menunda semua alat MCP secara default. Itu masih memuat mereka di muka di model Google Cloud's Agent Platform lebih awal dari generasi Claude 4.5, di deployment Microsoft Foundry yang dihosting di Azure, dan ketika `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama. `true` selalu menunda dan mengirim header beta, kecuali di model Agent Platform yang sama dan deployment Microsoft Foundry; permintaan gagal di proxy yang tidak mendukung `tool_reference`. `auto` memuat di muka ketika definisi alat cocok dalam 10% konteks. `auto:N` menetapkan ambang khusus, seperti `auto:5` untuk 5%. `false` memuat semua alat di muka. Nilai yang Anda atur sendiri diabaikan ketika `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` diatur. Sebelum v2.1.221, Claude Code menonaktifkan pencarian alat untuk semua model di Google Cloud's Agent Platform kecuali Anda menetapkan variabel ini ke `true` |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` |

458| `FALLBACK_FOR_ALL_PRIMARY_MODELS` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk membuat Claude Code berhenti mencoba ulang pada kesalahan overload berulang untuk setiap model ketika tidak ada fallback model yang dikonfigurasi. **Menetapkannya ke `0` atau `false` masih mengaktifkan ini**, tidak seperti sebagian besar variabel aktif/mati; batalkan penetapan variabel untuk mengembalikan perilaku percobaan ulang default. Tanpanya, Claude Code berhenti mencoba ulang dengan cara ini di model yang dikenalinya sebagai model Opus, Fable, atau Mythos ketika Anda mengautentikasi dengan kunci API atau [penyedia pihak ketiga](/docs/id/third-party-integrations) daripada langganan Claude. Di Claude Code v2.1.160 atau lebih baru, Claude Code beralih ke [rantai fallback model](/docs/id/model-config#fallback-model-chains) yang dikonfigurasi pada kesalahan overload berulang untuk model utama apa pun, jadi variabel ini tidak mempengaruhi beralih ke fallback model |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 |

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

460| `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, jadi nilai seperti `false`, `no`, atau `off` mengaktifkan hyperlink daripada menonaktifkannya. Lencana [PR atau merge request](/docs/id/interactive-mode#pr-review-status) footer merender sebagai hyperlink bahkan ketika Claude Code tidak dapat mendeteksi dukungan terminal, seperti melalui SSH. Atur `0` untuk merender lencana sebagai teks biasa |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 |

461| `FORCE_PROMPT_CACHING_5M` | Atur ke `1` untuk memaksa TTL cache prompt 5 menit bahkan ketika TTL 1 jam akan berlaku sebaliknya. Mengganti `CLAUDE_CODE_PROMPT_CACHE_TTL`, `CLAUDE_CODE_SUBAGENT_PROMPT_CACHE_TTL`, `ENABLE_PROMPT_CACHING_1H`, dan pengaturan `promptCacheTtl` dan `subagentPromptCacheTtl` |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` |

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

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

464| `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`, dan melewati onboarding. **Menetap kannya ke `0` atau `false` masih mengaktifkan mode demo**, tidak seperti sebagian besar variabel aktif/mati; batalkan penetapan variabel untuk menonaktifkannya. Berguna saat streaming atau merekam sesi |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 |

465| `MAX_MCP_OUTPUT_TOKENS` | Jumlah maksimum token yang diizinkan dalam respons alat MCP. Claude Code menampilkan peringatan ketika output melebihi 10.000 token. Alat yang mendeklarasikan [`anthropic/maxResultSizeChars`](/docs/id/mcp#raise-the-limit-for-a-specific-tool) menggunakan batas karakter itu untuk konten teks sebagai gantinya, tetapi konten gambar dari alat itu masih tunduk pada variabel ini (default: 25000) |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) |

466| `MAX_STRUCTURED_OUTPUT_RETRIES` | Jumlah upaya yang Claude Code izinkan ketika respons model gagal validasi terhadap [`--json-schema`](/docs/id/cli-reference#cli-flags) dalam mode non-interaktif dengan flag `-p`; setelah banyak upaya gagal tanpa output yang valid, jalankan gagal. Batas yang sama berlaku ketika output terstruktur subagent [alur kerja](/docs/id/workflows) gagal validasi. Default ke 5, upaya pertama ditambah empat percobaan ulang |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 |

467| `MAX_THINKING_TOKENS` | Anggaran token tetap untuk [pemikiran yang diperpanjang](https://platform.claude.com/docs/en/build-with-claude/extended-thinking). Claude Code membatasinya pada satu token di bawah token output maksimum permintaan dan tidak pernah di bawah 1.024. Lihat `CLAUDE_CODE_MAX_OUTPUT_TOKENS` untuk cara batas itu ditetapkan. Ketika tidak diatur dan pemikiran diaktifkan, model dengan [penalaran adaptif](/docs/id/model-config#adjust-effort-level) memilih kedalaman pemikiran mereka sendiri, dan model lain menggunakan batas. Atur ke `0` untuk menonaktifkan pemikiran di API Anthropic, kecuali di Opus 5.5, Sonnet 5.5, dan model Fable, yang tidak dapat memiliki pemikiran dinonaktifkan. Di [penyedia pihak ketiga](/docs/id/third-party-integrations), `0` menghilangkan parameter `thinking` sebagai gantinya. Dengan pemikiran dinonaktifkan di API Anthropic, Claude Code mengirim effort `high` daripada level yang lebih tinggi ke model yang diketahuinya [tidak menerima kombinasi itu](/docs/id/errors#effort-isnt-available-with-thinking-turned-off), seperti Opus 5. Claude Code mengabaikan nilai nonzero di model penalaran adaptif, kecuali di model di mana `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` menonaktifkan penalaran adaptif |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 |

468| `MCP_CLIENT_SECRET` | Rahasia klien OAuth untuk server MCP yang memerlukan [kredensial yang dikonfigurasi sebelumnya](/docs/id/mcp#use-pre-configured-oauth-credentials). Menghindari prompt interaktif saat menambahkan server dengan `--client-secret` |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` |

469| `MCP_CONNECTION_NONBLOCKING` | Mengontrol apakah startup menunggu server MCP terhubung sebelum kueri pertama. Startup MCP non-blocking secara default: server terhubung di latar belakang dan alat mereka menjadi tersedia saat mereka selesai. Atur ke `0` untuk membuat Claude Code menunggu server terhubung sebelum kueri pertama. Server yang dikonfigurasi dengan [`alwaysLoad: true`](/docs/id/mcp#exempt-a-server-from-deferral) masih membuat startup menunggu terlepas dari itu, kecuali ketika dilayani dari [cache penemuan](/docs/id/mcp#server-status-detail), karena alat mereka 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, tunggu memiliki tenggat waktu yang lebih lama; lihat entri flag itu untuk pengecualian server yang di-cache |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 |

470| `MCP_CONNECT_TIMEOUT_MS` | Berapa lama startup MCP yang memblokir menunggu, dalam milidetik, untuk batch koneksi sebelum mengambil snapshot daftar alat (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 pada tenggat waktu terus terhubung di latar belakang. Berbeda dari `MCP_TIMEOUT`, yang mengikat upaya koneksi server individual |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 |

471| `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 alat pertama daripada saat startup. Cache dimatikan secara default kecuali rollout bertahap telah mengaktifkannya untuk akun Anda. Atur ke `1` untuk mengaktifkannya, atau `0` untuk menyimpannya dimatikan bahkan ketika rollout telah mengaktifkannya. Status `cached` memerlukan Claude Code v2.1.221 atau lebih baru |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 |

472| `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 lama dari itu, Claude Code membuangnya dan menghubungkan server saat startup, seperti yang dilakukannya dengan cache dimatikan. Claude Code membatasi nilai pada 7 hari. Sebelum v2.1.238, default adalah 86400, atau 24 jam, dan Claude Code tidak membatasi nilai |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 |

473| `MCP_DISCOVERY_CACHE_STRIKES` | Pada startup di mana entri [cache penemuan](/docs/id/mcp#server-status-detail) lebih lama dari `MCP_DISCOVERY_CACHE_TTL_S`, Claude Code menyegarkannya di latar belakang. Variabel ini menetapkan berapa banyak penyegaran berturut-turut yang dapat gagal sebelum Claude Code membuang entri dan menghubungkan server pada startup berikutnya sebagai gantinya (default: 1). Naikkan jika koneksi jaringan Anda sesekali putus, jadi satu penyegaran yang gagal tidak membuang entri. Memerlukan Claude Code v2.1.238 atau lebih baru |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 |

474| `MCP_DISCOVERY_CACHE_TTL_S` | Detik di mana Claude Code menggunakan entri [cache penemuan](/docs/id/mcp#server-status-detail) tanpa menyegarkannya (default: 900). Pada startup di mana entri lebih lama dari itu, Claude Code masih menggunakannya tetapi menyegarkannya di latar belakang. Setelah entri lebih lama dari `MCP_DISCOVERY_CACHE_MAX_STALE_S`, Claude Code membuangnya sebagai gantinya. Claude Code membatasi nilai pada `MCP_DISCOVERY_CACHE_MAX_STALE_S`, yang default 4 jam. Sebelum v2.1.238, Claude Code tidak membatasi nilai |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 |

475| `MCP_OAUTH_CALLBACK_PORT` | Port tetap untuk callback pengalihan OAuth, sebagai alternatif untuk `--callback-port` saat menambahkan server MCP dengan [kredensial yang dikonfigurasi sebelumnya](/docs/id/mcp#use-pre-configured-oauth-credentials) |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) |

476| `MCP_PROTOCOL_NEGOTIATION` | Di [runtime klien MCP v2](/docs/id/mcp#mcp-client-runtimes) saja, apakah Claude Code menyelidiki server untuk revisi protokol MCP 2026-07-28. Atur `auto` untuk menyelidiki server HTTP, konektor claude.ai, dan stdio; server yang tidak menjawab probe terhubung pada protokol yang lebih awal sebagai gantinya, seperti yang selalu dilakukan server SSE dan WebSocket. Atur `legacy` untuk melewati probe untuk setiap server. Tanpa variabel, Claude Code menyelidiki server HTTP, dan juga menyelidiki server konektor claude.ai di sesi di mana itu [mengambil flag fitur](#features-that-need-feature-flag-fetching). Nilai apa pun diabaikan dengan peringatan di log debug. Memerlukan Claude Code v2.1.221 atau lebih baru |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 |

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

478| `MCP_SDK_GENERATION` | Sematkan [runtime klien MCP](/docs/id/mcp#mcp-client-runtimes) mana yang proses ini terhubung ke server MCP dengan: `v1`, dibangun di MCP TypeScript SDK 1.x, atau `v2`, dibangun di [MCP TypeScript SDK 2.0](https://ts.sdk.modelcontextprotocol.io/v2/). Tanpa variabel, Claude Code menggunakan v2, mulai dengan versi yang tercantum di bagian itu. Di Claude Code v2.1.221 atau lebih baru, runtime v2 memeriksa penerbit yang dikembalikan server OAuth MCP dalam respons otorisasinya dan gagal sign-in dengan kesalahan yang dimulai dengan `Issuer mismatch in authorization response` ketika tidak cocok. Runtime v1 tidak menjalankan pemeriksaan ini. Jika Anda menetapkan 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 |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 |

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

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

481| `MCP_TOOL_TIMEOUT` | Timeout dalam milidetik untuk eksekusi alat MCP (default: 100000000, sekitar 28 jam). Untuk server HTTP, SSE, atau konektor claude.ai, setiap permintaan juga timeout setelah 60 detik secara default; atur variabel ini, atau `timeout` per-server, di atas 60000 untuk menaikkan batas per-permintaan itu. Nilai yang lebih rendah masih mempersingkat timeout eksekusi alat keseluruhan tetapi meninggalkan batas per-permintaan pada 60 detik. Server stdio dan WebSocket tidak memiliki timer per-permintaan. Bidang `timeout` per-server di `.mcp.json` mengganti ini untuk server itu. Bidang `timeout` per-server setidaknya 1000 juga menetapkan jendela idle minimum untuk panggilan alat server itu, jadi `CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT` tidak pernah menghentikan mereka lebih awal; lantai ini memerlukan Claude Code v2.1.203 atau lebih baru. Untuk variabel env, nilai di bawah 1000 didasarkan ke satu detik; untuk bidang per-server, nilai di bawah 1000 diabaikan |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 |

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

483| `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` | Batas panjang nilai atribut SDK OpenTelemetry standar. Claude Code membatasi atribut telemetri yang membawa konten pada yang lebih kecil dari ini dan `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH`, jadi 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 set terkecil berlaku untuk semua sinyal. Memerlukan Claude Code v2.1.214 atau lebih baru. Lihat [Monitoring](/docs/id/monitoring-usage#common-configuration-variables) |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) |

484| `OTEL_LOG_ASSISTANT_RESPONSES` | Atur ke `1` untuk menyertakan teks respons model pada acara log OpenTelemetry `assistant_response`. Ketika tidak diatur, nilai `OTEL_LOG_USER_PROMPTS` digunakan sebagai gantinya. Atur ke `0` untuk menjaga respons diredaksi bahkan ketika `OTEL_LOG_USER_PROMPTS` diatur. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. 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 [Monitoring](/docs/id/monitoring-usage#assistant-response-event) |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) |

485| `OTEL_LOG_MANAGED_SETTINGS` | Atur ke `1` untuk menambahkan pengaturan yang dikelola yang diredaksi, dan digest SHA-256 dari pengaturan sebelum redaksi, ke acara log OpenTelemetry `managed_settings_resolved`. Dinonaktifkan secara default. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola; nilai di pengaturan proyek atau lokal tidak mengaktifkannya. Memerlukan Claude Code v2.1.274 atau lebih baru. Lihat [Monitoring](/docs/id/monitoring-usage#managed-settings-resolved-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) |

486| `OTEL_LOG_RAW_API_BODIES` | Pancarkan JSON API Pesan Anthropic permintaan dan respons sebagai acara log `api_request_body` / `api_response_body`. Atur ke `1` untuk badan inline dipotong pada batas konten, atau `file:<dir>` untuk menulis badan 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; badan menyertakan seluruh riwayat percakapan. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Lihat [Monitoring](/docs/id/monitoring-usage#api-request-body-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) |

487| `OTEL_LOG_TOOL_CONTENT` | Atur ke `1` untuk menyertakan konten alat dalam acara span OpenTelemetry `tool.output`. Atribut span membawa konten alat di bawah [gerbang mereka sendiri](/docs/id/monitoring-usage#new-context-gates). Memerlukan [pelacakan](/docs/id/monitoring-usage#traces-beta). Dinonaktifkan secara default untuk melindungi data sensitif. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan bagian itu. Lihat [Monitoring](/docs/id/monitoring-usage#tool-output-span-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) |

488| `OTEL_LOG_TOOL_DETAILS` | Atur ke `1` untuk menyertakan argumen input alat; nama server MCP; nama alur kerja yang ditulis pengguna; string kesalahan mentah pada kegagalan alat; kategori penolakan `category` pada acara `api_refusal`; nama agen, skill, plugin, dan server MCP yang sebenarnya pada [metrik biaya dan token](/docs/id/monitoring-usage#cost-counter); dan detail alat lainnya dalam metrik, jejak, dan log OpenTelemetry. Dinonaktifkan secara default untuk melindungi PII. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan bagian itu. Lihat [Monitoring](/docs/id/monitoring-usage) |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) |

489| `OTEL_LOG_USER_PROMPTS` | Atur ke `1` untuk menyertakan teks prompt pengguna dalam jejak dan log OpenTelemetry. Dinonaktifkan secara default (prompt diredaksi). Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan bagian itu. Lihat [Monitoring](/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) |

490| `OTEL_METRICS_INCLUDE_ACCOUNT_UUID` | Atur ke `false` untuk mengecualikan UUID akun dari atribut metrik (default: disertakan). Lihat [Monitoring](/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) |

491| `OTEL_METRICS_INCLUDE_ENTRYPOINT` | Atur ke `true` untuk menyertakan titik masuk sesi dalam atribut metrik (default: dikecualikan). Ditambahkan di v2.1.152. Lihat [Monitoring](/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) |

492| `OTEL_METRICS_INCLUDE_REPOSITORY` | Atur ke `true` untuk menandai metrik dan acara 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) |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) |

493| `OTEL_METRICS_INCLUDE_RESOURCE_ATTRIBUTES` | Mulai dari v2.1.161, Claude Code melampirkan kunci `OTEL_RESOURCE_ATTRIBUTES` ke label titik data metrik. Atur ke `false` untuk mengecualikannya (default: disertakan). Lihat [Monitoring](/docs/id/monitoring-usage#multi-team-organization-support) |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) |

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

495| `OTEL_METRICS_INCLUDE_VERSION` | Atur ke `true` untuk menyertakan versi Claude Code dalam atribut metrik (default: dikecualikan). Lihat [Monitoring](/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) |

496| `SLASH_COMMAND_TOOL_CHAR_BUDGET` | Ganti anggaran karakter untuk metadata skill yang ditampilkan ke [alat Skill](/docs/id/skills#control-who-invokes-a-skill). Anggaran diskalakan secara dinamis pada 1% dari jendela konteks, dengan fallback 8.000 karakter. Nama warisan disimpan untuk kompatibilitas mundur |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 |

497| `TASK_MAX_OUTPUT_LENGTH` | Dihapus di v2.1.277 dan sekarang tidak beroperasi, bersama dengan alat `TaskOutput` yang disizingnya. Sebelumnya menetapkan jumlah maksimum karakter output [tugas latar belakang](/docs/id/tools-reference#background-commands) yang alat `TaskOutput` simpan. Claude membaca file output tugas latar belakang dengan `Read` sebagai gantinya |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 |

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

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

500| `VERTEX_REGION_CLAUDE_3_5_SONNET` | Ganti wilayah untuk Claude 3.5 Sonnet 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 |

501| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Ganti wilayah untuk Claude 3.7 Sonnet saat menggunakan Google Cloud's Agent Platform |505| `VERTEX_REGION_CLAUDE_3_7_SONNET` | Menimpa region untuk Claude 3.7 Sonnet saat menggunakan Google Cloud's Agent Platform |

502| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Ganti wilayah untuk Claude 4.0 Opus saat menggunakan Google Cloud's Agent Platform |506| `VERTEX_REGION_CLAUDE_4_0_OPUS` | Menimpa region untuk Claude 4.0 Opus saat menggunakan Google Cloud's Agent Platform |

503| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Ganti wilayah untuk Claude 4.0 Sonnet saat menggunakan Google Cloud's Agent Platform |507| `VERTEX_REGION_CLAUDE_4_0_SONNET` | Menimpa region untuk Claude 4.0 Sonnet saat menggunakan Google Cloud's Agent Platform |

504| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Ganti wilayah untuk Claude 4.1 Opus saat menggunakan Google Cloud's Agent Platform |508| `VERTEX_REGION_CLAUDE_4_1_OPUS` | Menimpa region untuk Claude 4.1 Opus saat menggunakan Google Cloud's Agent Platform |

505| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Ganti wilayah untuk Claude Opus 4.5 saat menggunakan Google Cloud's Agent Platform |509| `VERTEX_REGION_CLAUDE_4_5_OPUS` | Menimpa region untuk Claude Opus 4.5 saat menggunakan Google Cloud's Agent Platform |

506| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Ganti wilayah untuk Claude Sonnet 4.5 saat menggunakan Google Cloud's Agent Platform |510| `VERTEX_REGION_CLAUDE_4_5_SONNET` | Menimpa region untuk Claude Sonnet 4.5 saat menggunakan Google Cloud's Agent Platform |

507| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Ganti wilayah untuk Claude Opus 4.6 saat menggunakan Google Cloud's Agent Platform |511| `VERTEX_REGION_CLAUDE_4_6_OPUS` | Menimpa region untuk Claude Opus 4.6 saat menggunakan Google Cloud's Agent Platform |

508| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Ganti wilayah untuk Claude Sonnet 4.6 saat menggunakan Google Cloud's Agent Platform |512| `VERTEX_REGION_CLAUDE_4_6_SONNET` | Menimpa region untuk Claude Sonnet 4.6 saat menggunakan Google Cloud's Agent Platform |

509| `VERTEX_REGION_CLAUDE_4_7_OPUS` | Ganti wilayah untuk Claude Opus 4.7 saat menggunakan Google Cloud's Agent Platform |513| `VERTEX_REGION_CLAUDE_4_7_OPUS` | Menimpa region untuk Claude Opus 4.7 saat menggunakan Google Cloud's Agent Platform |

510| `VERTEX_REGION_CLAUDE_4_8_OPUS` | Ganti wilayah untuk Claude Opus 4.8 saat menggunakan Google Cloud's Agent Platform |514| `VERTEX_REGION_CLAUDE_4_8_OPUS` | Menimpa region untuk Claude Opus 4.8 saat menggunakan Google Cloud's Agent Platform |

511| `VERTEX_REGION_CLAUDE_5_5_OPUS` | Ganti wilayah untuk Claude Opus 5.5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.280 |515| `VERTEX_REGION_CLAUDE_5_5_OPUS` | Menimpa region untuk Claude Opus 5.5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.280 |

512| `VERTEX_REGION_CLAUDE_5_5_SONNET` | Ganti wilayah untuk Claude Sonnet 5.5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.284 |516| `VERTEX_REGION_CLAUDE_5_5_SONNET` | Menimpa region untuk Claude Sonnet 5.5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.284 |

513| `VERTEX_REGION_CLAUDE_5_OPUS` | Ganti wilayah untuk Claude Opus 5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.219 |517| `VERTEX_REGION_CLAUDE_5_OPUS` | Menimpa region untuk Claude Opus 5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.219 |

514| `VERTEX_REGION_CLAUDE_5_SONNET` | Ganti wilayah untuk Claude Sonnet 5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.197 |518| `VERTEX_REGION_CLAUDE_5_SONNET` | Menimpa region untuk Claude Sonnet 5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.197 |

515| `VERTEX_REGION_CLAUDE_FABLE_5` | Ganti wilayah untuk Claude Fable 5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.170 |519| `VERTEX_REGION_CLAUDE_FABLE_5` | Menimpa region untuk Claude Fable 5 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.170 |

516| `VERTEX_REGION_CLAUDE_FABLE_5_1` | Ganti wilayah untuk Claude Fable 5.1 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.257 |520| `VERTEX_REGION_CLAUDE_FABLE_5_1` | Menimpa region untuk Claude Fable 5.1 saat menggunakan Google Cloud's Agent Platform. Ditambahkan di v2.1.257 |

517| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Ganti wilayah untuk Claude Haiku 4.5 saat menggunakan Google Cloud's Agent Platform |521| `VERTEX_REGION_CLAUDE_HAIKU_4_5` | Menimpa region untuk Claude Haiku 4.5 saat menggunakan Google Cloud's Agent Platform |

518 522 

519Variabel pengekspor 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 spesifik sinyal) juga didukung. Lihat [Monitoring](/docs/id/monitoring-usage) untuk detail konfigurasi.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.

520 524 

521Atur `CLAUDE_CODE_ENABLE_TELEMETRY` dan variabel OpenTelemetry yang mengaktifkan ekspor, memilih tujuannya, atau menangkap konten di shell, pengaturan pengguna, atau pengaturan yang dikelola. Claude Code [mengabaikannya di pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env), kecuali nilai off yang dijelaskan bagian itu. `OTEL_RESOURCE_ATTRIBUTES` dan variabel interval ekspor, timeout, dan kompresi, seperti `OTEL_METRIC_EXPORT_INTERVAL`, masih berlaku dari pengaturan proyek dan lokal.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.

522 526 

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

524 Fitur yang memerlukan pengambilan feature-flag528 Fitur yang memerlukan pengambilan feature-flag

errors.md +637 −613

Details

8 8 

9Halaman ini mencantumkan kesalahan runtime yang ditampilkan Claude Code dan cara memulihkan dari masing-masing, ditambah apa yang harus diperiksa ketika respons tampak tidak normal tanpa kesalahan. Untuk kesalahan instalasi seperti `command not found` atau kegagalan TLS selama penyiapan, lihat [Troubleshoot installation and login](/docs/id/troubleshoot-install).9Halaman ini mencantumkan kesalahan runtime yang ditampilkan Claude Code dan cara memulihkan dari masing-masing, ditambah apa yang harus diperiksa ketika respons tampak tidak normal tanpa kesalahan. Untuk kesalahan instalasi seperti `command not found` atau kegagalan TLS selama penyiapan, lihat [Troubleshoot installation and login](/docs/id/troubleshoot-install).

10 10 

11Kecuali untuk [Wrapper and IDE errors](#wrapper-and-ide-errors), yang dicetak oleh program peluncur daripada Claude Code itu sendiri, kesalahan dan perintah pemulihan ini berlaku di seluruh CLI, [Desktop app](/docs/id/desktop), dan [cloud sessions](/docs/id/claude-code-on-the-web), karena ketiganya membungkus CLI Claude Code yang sama. Untuk masalah spesifik permukaan lainnya, lihat bagian pemecahan masalah di halaman permukaan tersebut.11Kecuali untuk [Wrapper and IDE errors](#wrapper-and-ide-errors), yang dicetak oleh program peluncur daripada Claude Code itu sendiri, kesalahan dan perintah pemulihan ini berlaku di seluruh CLI, [Desktop app](/docs/id/desktop), dan [cloud sessions](/docs/id/claude-code-on-the-web), karena ketiganya membungkus CLI Claude Code yang sama. Untuk masalah spesifik surface lainnya, lihat bagian pemecahan masalah di halaman surface tersebut.

12 12 

13<Note>13<Note>

14 Claude Code memanggil Claude API untuk respons model, jadi sebagian besar kesalahan runtime memetakan ke kode kesalahan API yang mendasar. Halaman ini mencakup apa arti setiap kesalahan di dalam Claude Code dan cara memulihkan. Untuk definisi kode status HTTP mentah, lihat [Claude Platform error reference](https://platform.claude.com/docs/en/api/errors).14 Claude Code memanggil Claude API untuk respons model, jadi sebagian besar kesalahan runtime memetakan ke kode kesalahan API yang mendasar. Halaman ini mencakup apa arti setiap kesalahan di dalam Claude Code dan cara memulihkan. Untuk definisi kode status HTTP mentah, lihat [Claude Platform error reference](https://platform.claude.com/docs/en/api/errors).


176| `role 'system' must precede an 'assistant' message` | [Request errors](#role-system-must-precede-an-assistant-message) |176| `role 'system' must precede an 'assistant' message` | [Request errors](#role-system-must-precede-an-assistant-message) |

177| `Invalid encrypted_content in search_result block` / `Invalid encrypted_index in text block` / `Failed to decrypt web search result content` | [Request errors](#invalid-encrypted-content-in-search-result-block) |177| `Invalid encrypted_content in search_result block` / `Invalid encrypted_index in text block` / `Failed to decrypt web search result content` | [Request errors](#invalid-encrypted-content-in-search-result-block) |

178| `Invalid encrypted_stdout in encrypted_code_execution_result block` | [Request errors](#invalid-encrypted-content-in-search-result-block) |178| `Invalid encrypted_stdout in encrypted_code_execution_result block` | [Request errors](#invalid-encrypted-content-in-search-result-block) |

179| `server_tool_use.name: Input should be` pada setiap putaran sesi yang dilanjutkan | [Request errors](#unsupported-tool-content-removed) |179| `server_tool_use.name: Input should be` pada setiap giliran sesi yang dilanjutkan | [Request errors](#unsupported-tool-content-removed) |

180| `<model> can't help with this. Start a new session to continue` | [Request errors](#usage-policy-refusal) |180| `<model> can't help with this. Start a new session to continue` | [Request errors](#usage-policy-refusal) |

181| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Request errors](#usage-policy-refusal) |181| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Request errors](#usage-policy-refusal) |

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


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

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

188| `--bg and --print conflict` | [Command-line errors](#conflict-between-bg-and-print) |188| `--bg and --print conflict` | [Command-line errors](#conflict-between-bg-and-print) |

189| `Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.` | [Command-line errors](#conflict-between-a-system-prompt-flag-and-its-file-form) |

189| `Cloud sessions cannot be created from a --restricted session` | [Command-line errors](#cloud-sessions-cannot-be-created-from-a-restricted-session) |190| `Cloud sessions cannot be created from a --restricted session` | [Command-line errors](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

190| `Cloud sessions are disabled by your organization's policy` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |191| `Cloud sessions are disabled by your organization's policy` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |

191| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |192| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |


250| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Plugin errors](#plugin-command-references-user-config) |251| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Plugin errors](#plugin-command-references-user-config) |

251| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Plugin errors](#plugin-command-references-user-config) |252| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Plugin errors](#plugin-command-references-user-config) |

252| `Plugin archive integrity check failed` | [Plugin errors](#plugin-archive-integrity-check-failed) |253| `Plugin archive integrity check failed` | [Plugin errors](#plugin-archive-integrity-check-failed) |

254| `An npm plugin source must name a registry package` | [Plugin troubleshooting](/docs/id/plugins/troubleshooting#an-npm-plugin-source-must-name-a-registry-package) |

253| `path escapes plugin directory` | [Plugin errors](#path-escapes-plugin-directory) |255| `path escapes plugin directory` | [Plugin errors](#path-escapes-plugin-directory) |

254| `path could not be checked` | [Plugin errors](#path-could-not-be-checked) |256| `path could not be checked` | [Plugin errors](#path-could-not-be-checked) |

255| `its marketplace entry path does not stay inside the marketplace directory` | [Plugin errors](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |257| `its marketplace entry path does not stay inside the marketplace directory` | [Plugin errors](#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory) |


418 Kesalahan server420 Kesalahan server

419</h2>421</h2>

420 422 

421Sebagian besar kesalahan ini berasal dari penyedia inferensi: layanan Anthropic di Anthropic API, dan layanan di balik titik akhir penyedia tersebut di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau gateway khusus. [Auto mode tidak dapat menentukan keamanan suatu tindakan](#auto-mode-cannot-determine-the-safety-of-an-action) dan [Agent dihentikan lebih awal karena kesalahan API](#agent-terminated-early-due-to-an-api-error) juga mencakup penyebab di sisi Anda, seperti akun Amazon Bedrock yang tidak dapat memanggil model pengklasifikasi atau subagent yang mencapai batas penggunaan.423Sebagian besar kesalahan ini berasal dari penyedia inferensi: layanan Anthropic di Anthropic API, dan layanan di balik endpoint penyedia tersebut di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau gateway khusus. [Auto mode tidak dapat menentukan keamanan suatu tindakan](#auto-mode-cannot-determine-the-safety-of-an-action) dan [Agent dihentikan lebih awal karena kesalahan API](#agent-terminated-early-due-to-an-api-error) juga mencakup penyebab di sisi Anda, seperti akun Amazon Bedrock yang tidak dapat memanggil model pengklasifikasi atau subagent yang mencapai batas penggunaan.

422 424 

423<h3 id="api-error-500-internal-server-error">425<h3 id="api-error-500-internal-server-error">

424 API Error: 500 Internal server error426 API Error: 500 Internal server error


432 434 

433Kalimat terakhir menyebutkan tempat untuk memeriksa kesehatan layanan dan bervariasi menurut penyedia. Konfigurasi Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry menyebutkan status layanan penyedia tersebut. `ANTHROPIC_BASE_URL` khusus menyebutkan host gateway.435Kalimat terakhir menyebutkan tempat untuk memeriksa kesehatan layanan dan bervariasi menurut penyedia. Konfigurasi Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry menyebutkan status layanan penyedia tersebut. `ANTHROPIC_BASE_URL` khusus menyebutkan host gateway.

434 436 

435Ini menunjukkan kegagalan yang tidak terduga di dalam API. Ini tidak disebabkan oleh prompt, pengaturan, atau akun Anda.437Respons 5xx dari API itu sendiri menunjukkan kegagalan yang tidak terduga di dalam API. Ini tidak disebabkan oleh prompt, pengaturan, atau akun Anda.

436 438 

437Ketika proxy, load balancer, atau gateway menjawab dengan halaman kesalahan HTML, pesan menampilkan kode status dan judul halaman, seperti `API Error: 502 Bad Gateway`. Untuk halaman tanpa judul, pesan menampilkan kode status dan nama standarnya. Sebelum v2.1.281, kode status dijatuhkan ketika halaman memiliki judul, dan markup mentah halaman dicetak ketika tidak ada.439Ketika proxy, load balancer, atau gateway menjawab dengan halaman kesalahan HTML, pesan menampilkan kode status dan judul halaman, seperti `API Error: 502 Bad Gateway`. Untuk halaman tanpa judul, pesan menampilkan kode status dan nama standarnya. Sebelum v2.1.281, kode status dijatuhkan ketika halaman memiliki judul, dan markup mentah halaman dicetak ketika tidak ada.

438 440 


446 API Error: Repeated 529 Overloaded errors448 API Error: Repeated 529 Overloaded errors

447</h3>449</h3>

448 450 

449API sementara pada kapasitas di semua pengguna. Claude Code telah mencoba kembali beberapa kali sebelum menampilkan pesan ini:451API sementara pada kapasitas di semua pengguna. Claude Code telah mencoba ulang beberapa kali sebelum menampilkan pesan ini:

450 452 

451```text theme={null}453```text theme={null}

452API Error: Repeated 529 Overloaded errors. The API is at capacity — this is usually temporary. Try again in a moment. If it persists, check https://status.claude.com.454API Error: Repeated 529 Overloaded errors. The API is at capacity — this is usually temporary. Try again in a moment. If it persists, check https://status.claude.com.


474Request timed out476Request timed out

475```477```

476 478 

477Ini dapat terjadi selama periode beban tinggi atau ketika model menghasilkan respons yang sangat besar. Waktu tunggu permintaan default adalah 10 menit.479Ini dapat terjadi selama periode beban tinggi atau ketika model menghasilkan respons yang sangat besar. Timeout permintaan default adalah 10 menit.

478 480 

479**Yang harus dilakukan:**481**Yang harus dilakukan:**

480 482 

481* Coba lagi permintaan483* Coba lagi permintaan

482* Jika penyebabnya adalah jaringan lambat atau proxy, naikkan `API_TIMEOUT_MS` seperti yang dijelaskan dalam [Automatic retries](#automatic-retries)484* Jika penyebabnya adalah jaringan lambat atau proxy, naikkan `API_TIMEOUT_MS` seperti yang dijelaskan dalam [Automatic retries](#automatic-retries)

483* Jika waktu tunggu sering terjadi dan jaringan Anda sehat, lihat [Network and connection errors](#network-and-connection-errors) di bawah485* Jika timeout sering terjadi dan jaringan Anda sehat, lihat [Network and connection errors](#network-and-connection-errors) di bawah

484 486 

485<h3 id="no-response-from-api">487<h3 id="no-response-from-api">

486 No response from API488 No response from API

487</h3>489</h3>

488 490 

489Claude Code mengirim permintaan streaming dan API tidak mengembalikan header respons dalam batas waktu untuk byte pertama, jadi Claude Code membatalkan permintaan alih-alih menunggu waktu tunggu permintaan `API_TIMEOUT_MS` penuh, 10 menit secara default. Claude Code mengirim permintaan lagi paling banyak sekali, jika [retry budget](#tune-retry-behavior) memungkinkan. Ketika percobaan ulang juga tidak dijawab, giliran berakhir dengan pesan ini, yang menunjukkan berapa lama setiap upaya menunggu. Ketika Anda menetapkan [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/id/env-vars), batas satu percobaan ulang tidak berlaku dan Claude Code mencoba ulang di bawah anggaran yang dijelaskan dalam [Tune retry behavior](#tune-retry-behavior).491Claude Code mengirim permintaan streaming dan API tidak mengembalikan header respons dalam batas waktu untuk byte pertama, jadi Claude Code membatalkan permintaan alih-alih menunggu timeout permintaan `API_TIMEOUT_MS` penuh, 10 menit secara default. Claude Code mengirim permintaan lagi paling banyak sekali, jika [retry budget](#tune-retry-behavior) memungkinkan. Ketika retry juga tidak dijawab, giliran berakhir dengan pesan ini, yang menunjukkan berapa lama setiap upaya menunggu. Ketika Anda menetapkan [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/id/env-vars), batas satu retry tidak berlaku dan Claude Code mencoba ulang di bawah anggaran yang dijelaskan dalam [Tune retry behavior](#tune-retry-behavior).

490 492 

491```text theme={null}493```text theme={null}

492API Error: No response from API (waited 3m, then 10m on the retry). If a proxy or gateway on your network holds responses until they complete, raise API_TIMEOUT_MS or CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS to wait longer.494API Error: No response from API (waited 3m, then 10m on the retry). If a proxy or gateway on your network holds responses until they complete, raise API_TIMEOUT_MS or CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS to wait longer.

493```495```

494 496 

495Claude Code menetapkan tunggu header respons upaya pertama dan tunggu percobaan ulang secara terpisah:497Claude Code menetapkan tunggu header respons upaya pertama dan tunggu retry secara terpisah:

496 498 

497* **Upaya pertama**: [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/id/env-vars) ketika Anda menetapkannya ke 1 atau lebih, diklem antara 10 detik dan 30 menit. Jika tidak, Claude Code menggunakan waktu tunggu watchdog tingkat byte yang tercantum dalam [Streaming idle watchdogs](/docs/id/network-config#streaming-idle-watchdogs), jadi variabel yang mengubah waktu tunggu itu mengubah tunggu ini juga. Bagaimanapun, Claude Code menambahkan satu detik untuk setiap 32KB badan permintaan.499* **Upaya pertama**: [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/id/env-vars) ketika Anda menetapkannya ke 1 atau lebih, diklem antara 10 detik dan 30 menit. Jika tidak, Claude Code menggunakan timeout watchdog tingkat byte yang tercantum dalam [Streaming idle watchdogs](/docs/id/network-config#streaming-idle-watchdogs), jadi variabel yang mengubah timeout itu mengubah tunggu ini juga. Bagaimanapun, Claude Code menambahkan satu detik untuk setiap 32KB badan permintaan.

498* **Percobaan ulang**: satu detik kurang dari `API_TIMEOUT_MS`, hanya di bawah 10 menit secara default, sehingga percobaan ulang dapat melampaui proxy atau gateway yang menahan respons hingga generasi selesai. Di Amazon Bedrock, percobaan ulang menggunakan batas waktu yang sama dengan upaya pertama, dan pesan menunjukkan satu durasi alih-alih dua.500* **Retry**: satu detik kurang dari `API_TIMEOUT_MS`, hanya di bawah 10 menit secara default, sehingga retry dapat melampaui proxy atau gateway yang menahan respons hingga generasi selesai. Di Amazon Bedrock, retry menggunakan batas waktu yang sama dengan upaya pertama, dan pesan menunjukkan satu durasi alih-alih dua.

499 501 

500Tidak ada tunggu yang melebihi satu detik kurang dari `API_TIMEOUT_MS` positif, dan `API_TIMEOUT_MS` positif di bawah 11 detik mematikan batas waktu. Watchdog tingkat byte dimulai hanya setelah header respons tiba, jadi respons yang berhenti mengirim byte setelah itu mengikuti [stalled-stream rules](#automatic-retries) alih-alih batas waktu ini.502Tidak ada tunggu yang melebihi satu detik kurang dari `API_TIMEOUT_MS` positif, dan `API_TIMEOUT_MS` positif di bawah 11 detik mematikan batas waktu. Watchdog tingkat byte dimulai hanya setelah header respons tiba, jadi respons yang berhenti mengirim byte setelah itu mengikuti [stalled-stream rules](#automatic-retries) alih-alih batas waktu ini.

501 503 


503 505 

504* Kirim pesan Anda lagi. Pesan asli Anda masih ada dalam percakapan, jadi untuk prompt yang panjang Anda dapat mengetik `try again` alih-alih menempel seluruh hal.506* Kirim pesan Anda lagi. Pesan asli Anda masih ada dalam percakapan, jadi untuk prompt yang panjang Anda dapat mengetik `try again` alih-alih menempel seluruh hal.

505* Jika terulang, perlakukan sebagai [network or proxy problem](#unable-to-connect-to-api).507* Jika terulang, perlakukan sebagai [network or proxy problem](#unable-to-connect-to-api).

506* Jika proxy atau gateway di jaringan Anda menahan respons hingga selesai, naikkan `API_TIMEOUT_MS` sehingga percobaan ulang menunggu lebih lama. Di Amazon Bedrock, naikkan `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` juga.508* Jika proxy atau gateway di jaringan Anda menahan respons hingga selesai, naikkan `API_TIMEOUT_MS` sehingga retry menunggu lebih lama. Di Amazon Bedrock, naikkan `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` juga.

507* Jika upaya pertama terus habis waktu dan percobaan ulang kemudian berhasil, naikkan `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` sehingga upaya pertama juga menunggu cukup lama.509* Jika upaya pertama terus habis waktu dan retry kemudian berhasil, naikkan `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` sehingga upaya pertama juga menunggu cukup lama.

508 510 

509Sebelum v2.1.242, Claude Code menunggu waktu tunggu permintaan `API_TIMEOUT_MS` penuh, 10 menit secara default, sebelum gagal permintaan streaming yang tidak dijawab. Sebelum v2.1.261, percobaan ulang menunggu batas waktu yang sama dengan upaya pertama dan pesan tidak menunjukkan durasi.511Sebelum v2.1.242, Claude Code menunggu timeout permintaan `API_TIMEOUT_MS` penuh, 10 menit secara default, sebelum menggagalkan permintaan streaming yang tidak dijawab. Sebelum v2.1.261, retry menunggu batas waktu yang sama dengan upaya pertama dan pesan tidak menunjukkan durasi.

510 512 

511<h3 id="the-response-above-may-be-incomplete">513<h3 id="the-response-above-may-be-incomplete">

512 The response above may be incomplete514 The response above may be incomplete

513</h3>515</h3>

514 516 

515Permintaan streaming gagal sementara respons masih berlangsung, setelah Claude menyelesaikan blok teks atau panggilan alat, atau telah memulai satu setelah menyelesaikan pemikirannya. Mengirim ulang permintaan dapat menjalankan panggilan alat yang sama dua kali, jadi Claude Code menyimpan output yang Claude selesaikan dan menambahkan pemberitahuan ini alih-alih membuang giliran. Varian mana yang Anda lihat menyebutkan penyebabnya:517Permintaan streaming gagal sementara respons masih berlangsung, setelah Claude menyelesaikan blok teks atau panggilan tool, atau telah memulai satu setelah menyelesaikan pemikirannya. Mengirim ulang permintaan dapat menjalankan panggilan tool yang sama dua kali, jadi Claude Code menyimpan output yang Claude selesaikan dan menambahkan pemberitahuan ini alih-alih membuang giliran. Varian mana yang Anda lihat menyebutkan penyebabnya:

516 518 

517```text theme={null}519```text theme={null}

518API Error: Server error mid-response. The response above may be incomplete.520API Error: Server error mid-response. The response above may be incomplete.


526* `Server error mid-response`: kesalahan server overloaded atau 5xx mid-stream. Varian ini memerlukan Claude Code v2.1.199 atau lebih baru; sebelumnya kasus itu membuang output parsial dan melaporkan seluruh giliran sebagai kesalahan.528* `Server error mid-response`: kesalahan server overloaded atau 5xx mid-stream. Varian ini memerlukan Claude Code v2.1.199 atau lebih baru; sebelumnya kasus itu membuang output parsial dan melaporkan seluruh giliran sebagai kesalahan.

527* `Connection lost mid-response`: koneksi putus. Anda juga melihat varian ini ketika proxy atau gateway mengakhiri badan respons dengan bersih sebelum respons selesai.529* `Connection lost mid-response`: koneksi putus. Anda juga melihat varian ini ketika proxy atau gateway mengakhiri badan respons dengan bersih sebelum respons selesai.

528* `Your computer went to sleep mid-response`: Claude Code mendeteksi bahwa komputer Anda tertidur saat respons streaming. Setelah komputer Anda bangun, Claude Code memperlakukan koneksi sebagai rusak dan berhenti membacanya.530* `Your computer went to sleep mid-response`: Claude Code mendeteksi bahwa komputer Anda tertidur saat respons streaming. Setelah komputer Anda bangun, Claude Code memperlakukan koneksi sebagai rusak dan berhenti membacanya.

529* `Part of the response never arrived`: peristiwa aliran dijatuhkan antara API dan Claude Code, jadi peristiwa yang lebih baru mereferensikan konten yang tidak pernah tiba. Sebelum v2.1.281, kasus ini mengakhiri giliran dengan `API Error: Content block not found`.531* `Part of the response never arrived`: peristiwa stream dijatuhkan antara API dan Claude Code, jadi peristiwa yang lebih baru mereferensikan konten yang tidak pernah tiba. Sebelum v2.1.281, kasus ini mengakhiri giliran dengan `API Error: Content block not found`.

530* `The response stream was malformed`: peristiwa tiba untuk blok konten yang sudah selesai, atau peristiwa tiba rusak. Peristiwa yang rusak adalah peristiwa yang datanya bukan JSON yang valid, yang kontennya hilang, atau yang kontennya tidak cocok dengan jenis peristiwa. Sebelum v2.1.284, kesalahan parser mentah, seperti yang dimulai dengan `API Error: JSON Parse error`, muncul sebagai gantinya ketika peristiwa dengan JSON yang tidak valid tiba setelah Claude menyelesaikan pemikirannya, blok teks, atau panggilan alat.532* `The response stream was malformed`: peristiwa tiba untuk blok konten yang sudah selesai, atau peristiwa tiba rusak. Peristiwa yang rusak adalah peristiwa yang datanya bukan JSON yang valid, yang kontennya hilang, atau yang kontennya tidak cocok dengan jenis peristiwa. Sebelum v2.1.284, kesalahan parser mentah, seperti yang dimulai dengan `API Error: JSON Parse error`, muncul sebagai gantinya ketika peristiwa dengan JSON yang tidak valid tiba setelah Claude menyelesaikan pemikirannya, blok teks, atau panggilan tool. Sebelum v2.1.287, ketika [guardrail Amazon Bedrock](/docs/id/amazon-bedrock#aws-guardrails) memblokir respons yang sudah melakukan streaming thinking dan sebagian teks, varian ini muncul menggantikan pesan guardrail tersebut.

531* `The response stopped arriving`: koneksi tetap terbuka tetapi berhenti mengirimkan data, jadi watchdog streaming idle membatalkannya. Sebelum v2.1.222, Claude Code juga dapat melaporkan kegagalan ini pada koneksi [gateway](/docs/id/gateways) yang dicapai melalui `ANTHROPIC_BASE_URL` atau `ANTHROPIC_AWS_BASE_URL` sementara ping keep-alive server masih tiba, karena hanya menghitung peristiwa respons yang diurai di sana; upgrade menghentikan waktu tunggu palsu itu di rute tersebut. Gateway yang dicapai melalui URL dasar penyedia seperti `ANTHROPIC_BEDROCK_BASE_URL` tidak dibungkus oleh watchdog byte; lihat [Streaming idle watchdogs](/docs/id/network-config#streaming-idle-watchdogs).533* `The response stopped arriving`: koneksi tetap terbuka tetapi berhenti mengirimkan data, jadi watchdog streaming idle membatalkannya. Sebelum v2.1.222, Claude Code juga dapat melaporkan kegagalan ini pada koneksi [gateway](/docs/id/gateways) yang dicapai melalui `ANTHROPIC_BASE_URL` atau `ANTHROPIC_AWS_BASE_URL` sementara ping keep-alive server masih tiba, karena hanya menghitung peristiwa respons yang diurai di sana; upgrade menghentikan timeout palsu itu di rute tersebut. Gateway yang dicapai melalui URL dasar penyedia seperti `ANTHROPIC_BEDROCK_BASE_URL` tidak dibungkus oleh watchdog byte; lihat [Streaming idle watchdogs](/docs/id/network-config#streaming-idle-watchdogs).

532 534 

533Sebelum v2.1.227, `Connection lost mid-response` membaca `Connection closed mid-response` dan `The response stopped arriving` membaca `Response stalled mid-stream`.535Sebelum v2.1.227, `Connection lost mid-response` berbunyi `Connection closed mid-response` dan `The response stopped arriving` berbunyi `Response stalled mid-stream`.

534 536 

535Ketika peristiwa aliran yang dijatuhkan, diduplikasi, atau rusak tiba sebelum Claude memulai teks atau panggilan alat apa pun, Anda tidak melihat pemberitahuan ini:537Ketika peristiwa stream yang dijatuhkan, diduplikasi, atau rusak tiba sebelum Claude memulai teks atau panggilan tool apa pun, Anda tidak melihat pemberitahuan ini:

536 538 

537* Jika Claude hanya menyelesaikan pemikirannya, Claude Code mengeluarkan kembali permintaan. Ketika aliran yang diterbitkan kembali putus dengan cara yang sama, giliran berakhir dengan `Part of the response never arrived and no response was produced. Try again.` atau `The response stream was malformed and no response was produced. Try again.`539* Jika Claude hanya menyelesaikan pemikirannya, Claude Code mengeluarkan kembali permintaan. Ketika stream yang diterbitkan kembali putus dengan cara yang sama, giliran berakhir dengan `Part of the response never arrived and no response was produced. Try again.` atau `The response stream was malformed and no response was produced. Try again.`

538* Jika tidak ada yang selesai, Claude Code mengirim ulang permintaan tanpa streaming. Jika Anda mematikan fallback itu dengan [`CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK`](/docs/id/env-vars), giliran berakhir dengan `API Error: Content block not found` untuk peristiwa yang dijatuhkan atau `API Error: Content block already closed` untuk peristiwa yang diduplikasi. Untuk peristiwa yang rusak dengan fallback dimatikan, giliran berakhir dengan `API Error: Stream event unreadable` atau kesalahan parser mentah.540* Jika tidak ada yang selesai, Claude Code mengirim ulang permintaan tanpa streaming. Jika Anda mematikan fallback itu dengan [`CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK`](/docs/id/env-vars), giliran berakhir dengan `API Error: Content block not found` untuk peristiwa yang dijatuhkan atau `API Error: Content block already closed` untuk peristiwa yang diduplikasi. Untuk peristiwa yang rusak dengan fallback dimatikan, giliran berakhir dengan `API Error: Stream event unreadable` atau kesalahan parser mentah.

539 541 

540Dalam empat kasus, Claude Code menangani kegagalan tanpa menampilkan pemberitahuan ini segera:542Dalam empat kasus, Claude Code menangani kegagalan tanpa menampilkan pemberitahuan ini segera:

541 543 

542* Sebelumnya dalam respons, Claude Code baik mencoba ulang kegagalan atau mengakhiri giliran dengan kesalahan yang berbeda. Lihat [Automatic retries](#automatic-retries).544* Sebelumnya dalam respons, Claude Code baik mencoba ulang kegagalan atau mengakhiri giliran dengan kesalahan yang berbeda. Lihat [Automatic retries](#automatic-retries).

543* Ketika salah satu kegagalan ini tiba setelah Claude menyelesaikan respons, Claude Code menyimpan respons lengkap dan mengakhiri giliran secara normal, tanpa pemberitahuan ini. Sebelum v2.1.222, Claude Code menampilkan pemberitahuan ini ketika koneksi putus atau macet setelah respons selesai, dan melaporkan giliran sebagai kesalahan meskipun respons lengkap.545* Ketika salah satu kegagalan ini tiba setelah Claude menyelesaikan respons, Claude Code menyimpan respons lengkap dan mengakhiri giliran secara normal, tanpa pemberitahuan ini. Sebelum v2.1.222, Claude Code menampilkan pemberitahuan ini ketika koneksi putus atau macet setelah respons selesai, dan melaporkan giliran sebagai kesalahan meskipun respons lengkap.

544* Dalam [non-interactive session](/docs/id/headless), seperti run `-p`, run [Agent SDK](/docs/id/agent-sdk/overview), atau [cloud session](/docs/id/claude-code-on-the-web), Anda tidak harus mengirim `continue` sendiri ketika respons cut-off berada dalam percakapan utama dan berisi teks tetapi tidak ada panggilan alat: Claude Code menyimpan output parsial dan meminta Claude untuk melanjutkan dari tempat ia berhenti, hingga tiga kali berturut-turut. Anda melihat pemberitahuan ini untuk respons seperti itu hanya setelah Claude Code menggunakan kelanjutan itu. Sebelum v2.1.246, Claude Code mengakhiri giliran non-interaktif dengan pemberitahuan ini pada cut-off pertama.546* Dalam [non-interactive session](/docs/id/headless), seperti run `-p`, run [Agent SDK](/docs/id/agent-sdk/overview), atau [cloud session](/docs/id/claude-code-on-the-web), Anda tidak harus mengirim `continue` sendiri ketika respons cut-off berada dalam percakapan utama dan berisi teks tetapi tidak ada panggilan tool: Claude Code menyimpan output parsial dan meminta Claude untuk melanjutkan dari tempat ia berhenti, hingga tiga kali berturut-turut. Anda melihat pemberitahuan ini untuk respons seperti itu hanya setelah Claude Code menggunakan kelanjutan itu. Sebelum v2.1.246, Claude Code mengakhiri giliran non-interaktif dengan pemberitahuan ini pada cut-off pertama.

545* Dalam [subagent](/docs/id/sub-agents#api-errors-in-subagents), apakah sesi interaktif atau tidak: ketika respons cut-off-nya berisi teks tetapi tidak ada panggilan alat, Claude Code meminta subagent untuk melanjutkan. Pemberitahuan menjadi pesan terakhir subagent hanya setelah kelanjutan itu digunakan. Sebelum v2.1.257, subagent menampilkan pemberitahuan ini pada cut-off pertama.547* Dalam [subagent](/docs/id/sub-agents#api-errors-in-subagents), apakah sesi interaktif atau tidak: ketika respons cut-off-nya berisi teks tetapi tidak ada panggilan tool, Claude Code meminta subagent untuk melanjutkan. Pemberitahuan menjadi pesan terakhir subagent hanya setelah kelanjutan itu digunakan. Sebelum v2.1.257, subagent menampilkan pemberitahuan ini pada cut-off pertama.

546 548 

547**Yang harus dilakukan:**549**Yang harus dilakukan:**

548 550 

549* Dalam sesi interaktif, baca respons yang tetap di layar: Claude Code menyimpan setiap blok yang Claude selesaikan sebelum kesalahan, tetapi membuang blok akhir yang terputus ketika giliran berakhir, jadi kalimat atau panggilan alat terakhir mungkin hilang. Balas dengan `continue` untuk membuat Claude melanjutkan dari blok terakhir yang diselesaikannya.551* Dalam sesi interaktif, baca respons yang tetap di layar: Claude Code menyimpan setiap blok yang Claude selesaikan sebelum kesalahan, tetapi membuang blok akhir yang terputus ketika giliran berakhir, jadi kalimat atau panggilan tool terakhir mungkin hilang. Balas dengan `continue` untuk membuat Claude melanjutkan dari blok terakhir yang diselesaikannya.

550* Dalam [non-interactive mode](/docs/id/headless) (`-p`):552* Dalam [non-interactive mode](/docs/id/headless) (`-p`):

551 * Dengan output teks default, Claude Code mencetak blok teks terakhir yang diselesaikan yang masih dipegang dari sebelumnya dalam giliran, diikuti oleh pesan ini. Ketika tidak memegang apa pun, Claude Code mencetak pesan ini saja, misalnya karena Claude Code memadatkan percakapan di tengah-giliran dan menghapus teks itu. Sebelum v2.1.219, Claude Code hanya mencetak pesan ini dalam output teks `-p` dan menjatuhkan respons yang sudah dihasilkan.553 * Dengan output teks default, Claude Code mencetak blok teks terakhir yang diselesaikan yang masih dipegang dari sebelumnya dalam giliran, diikuti oleh pesan ini. Ketika tidak memegang apa pun, Claude Code mencetak pesan ini saja, misalnya karena Claude Code memadatkan percakapan di tengah-giliran dan menghapus teks itu. Sebelum v2.1.219, Claude Code hanya mencetak pesan ini dalam output teks `-p` dan menjatuhkan respons yang sudah dihasilkan.

552 * Dengan `--output-format json` atau `stream-json`, Claude Code melaporkan pesan ini di bidang `result`.554 * Dengan `--output-format json` atau `stream-json`, Claude Code melaporkan pesan ini di bidang `result`.


566<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.568<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.

567```569```

568 570 

569Ketika Claude Code dapat menentukan kategori kegagalan, ia menyebutkan kategori dalam tanda kurung setelah `temporarily unavailable`, misalnya `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Kategorinya adalah `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)`, dan `(connection failed)`. Jika `(timed out)` atau `(connection failed)` terulang, periksa koneksi Anda; lihat [Unable to connect to API](#unable-to-connect-to-api). Sebelum v2.1.229, pesan tidak pernah menyebutkan kategori dan membaca `Wait briefly and then try this action again`.571Ketika Claude Code dapat menentukan kategori kegagalan, ia menyebutkan kategori dalam tanda kurung setelah `temporarily unavailable`, misalnya `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`. Kategorinya adalah `(rate-limited)`, `(overloaded)`, `(server error)`, `(timed out)`, dan `(connection failed)`. Jika `(timed out)` atau `(connection failed)` terulang, periksa koneksi Anda; lihat [Unable to connect to API](#unable-to-connect-to-api). Sebelum v2.1.229, pesan tidak pernah menyebutkan kategori dan berbunyi `Wait briefly and then try this action again`.

570 572 

571Ketika tidak ada kategori yang cocok, pesan muncul tanpa kategori dalam tanda kurung; lebih dari satu kegagalan menghasilkan bentuk itu. Di [Amazon Bedrock](/docs/id/amazon-bedrock), termasuk [Mantle endpoint](/docs/id/amazon-bedrock#use-the-mantle-endpoint), itu juga muncul ketika akun AWS Anda tidak dapat memanggil model yang disebutkan dalam pesan, dan kegagalan itu terulang pada setiap percobaan ulang sampai akun Anda diberi akses ke model.573Ketika tidak ada kategori yang cocok, pesan muncul tanpa kategori dalam tanda kurung; lebih dari satu kegagalan menghasilkan bentuk itu. Di [Amazon Bedrock](/docs/id/amazon-bedrock), termasuk [Mantle endpoint](/docs/id/amazon-bedrock#use-the-mantle-endpoint), itu juga muncul ketika akun AWS Anda tidak dapat memanggil model yang disebutkan dalam pesan, dan kegagalan itu terulang pada setiap retry sampai akun Anda diberi akses ke model.

572 574 

573**Yang harus dilakukan:**575**Yang harus dilakukan:**

574 576 

575* Coba lagi setelah beberapa detik; Claude melihat pesan yang sama dan biasanya mencoba ulang sendiri. Kegagalan sementara tidak terkait dengan [auto mode eligibility](/docs/id/permission-modes#eliminate-prompts-with-auto-mode); Anda tidak perlu mengubah pengaturan577* Coba lagi setelah beberapa detik; Claude melihat pesan yang sama dan biasanya mencoba ulang sendiri. Kegagalan sementara tidak terkait dengan [auto mode eligibility](/docs/id/permission-modes#eliminate-prompts-with-auto-mode); Anda tidak perlu mengubah pengaturan

576* Jika percobaan ulang terus gagal, lanjutkan dengan tugas read-only dan kembali ke tindakan yang diblokir nanti578* Jika retry terus gagal, lanjutkan dengan tugas read-only dan kembali ke tindakan yang diblokir nanti

577* Di Amazon Bedrock, jika pesan kembali pada setiap percobaan ulang, periksa bahwa akun Anda dapat memanggil model yang disebutkan: untuk model Amazon Bedrock standar, konfirmasi [IAM policy](/docs/id/amazon-bedrock#iam-configuration) Anda memungkinkan memanggilnya; untuk ID model Mantle, [hubungi tim akun AWS Anda](/docs/id/amazon-bedrock#mantle-endpoint-errors)579* Di Amazon Bedrock, jika pesan kembali pada setiap retry, periksa bahwa akun Anda dapat memanggil model yang disebutkan: untuk model Amazon Bedrock standar, konfirmasi [IAM policy](/docs/id/amazon-bedrock#iam-configuration) Anda memungkinkan memanggilnya; untuk ID model Mantle, [hubungi tim akun AWS Anda](/docs/id/amazon-bedrock#mantle-endpoint-errors)

578 580 

579Ketika permintaan pengklasifikasi gagal karena token OAuth Anda kedaluwarsa atau diputar oleh sesi lain, Claude Code menyegarkan token dan mencoba ulang permintaan sekali, jadi kedaluwarsa token rutin tidak muncul sebagai pesan ini. Sebelum v2.1.216, token yang kedaluwarsa atau diputar gagal setiap permintaan pengklasifikasi, dan auto mode menolak setiap tindakan yang diperiksa dengan pesan ini sampai token disegarkan.581Ketika permintaan pengklasifikasi gagal karena token OAuth Anda kedaluwarsa atau diputar oleh sesi lain, Claude Code menyegarkan token dan mencoba ulang permintaan sekali, jadi kedaluwarsa token biasa tidak muncul sebagai pesan ini. Sebelum v2.1.216, token yang kedaluwarsa atau diputar menggagalkan setiap permintaan pengklasifikasi, dan auto mode menolak setiap tindakan yang diperiksa dengan pesan ini sampai token disegarkan.

580 582 

581Ketika pengklasifikasi mengembalikan respons yang tidak dapat diurai:583Ketika pengklasifikasi mengembalikan respons yang tidak dapat diurai:

582 584 


609* Dalam sesi interaktif, beralih ke [permission mode](/docs/id/permission-modes) yang berbeda sehingga Anda dapat menyetujui tindakan ketika diminta611* Dalam sesi interaktif, beralih ke [permission mode](/docs/id/permission-modes) yang berbeda sehingga Anda dapat menyetujui tindakan ketika diminta

610* Mulai percakapan segar tanpa konten pemicu612* Mulai percakapan segar tanpa konten pemicu

611 613 

612Ketika percakapan telah tumbuh lebih besar dari jendela konteks pengklasifikasi:614Ketika percakapan telah tumbuh lebih besar dari context window pengklasifikasi:

613 615 

614```text theme={null}616```text theme={null}

615Auto mode classifier transcript exceeded context window — falling back to manual approval (try /compact to reduce conversation size)617Auto mode classifier transcript exceeded context window — falling back to manual approval (try /compact to reduce conversation size)


617 619 

618Apa yang terjadi pada tindakan tergantung pada tempat Claude memintanya:620Apa yang terjadi pada tindakan tergantung pada tempat Claude memintanya:

619 621 

620* Dalam sesi interaktif, auto mode kembali ke prompt izin normal untuk tindakan itu sehingga Anda dapat menyetujui atau menolaknya secara manual622* Dalam sesi interaktif, auto mode melakukan fallback ke dialog izin normal untuk tindakan itu sehingga Anda dapat menyetujui atau menolaknya secara manual

621* Ke [background subagent](/docs/id/sub-agents#run-subagents-in-foreground-or-background) dalam run `-p` [non-interactive](/docs/id/headless) tanpa `--input-format stream-json`, Claude Code mengembalikan hasil kesalahan yang berisi `Agent aborted: auto mode classifier transcript exceeded context window in headless mode`, dan run berlanjut623* Ke [background subagent](/docs/id/sub-agents#run-subagents-in-foreground-or-background) dalam run `-p` [non-interactive](/docs/id/headless) tanpa `--input-format stream-json`, Claude Code mengembalikan hasil kesalahan yang berisi `Agent aborted: auto mode classifier transcript exceeded context window in headless mode`, dan run berlanjut

622* Di tempat lain dalam run `-p` tanpa [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags), tidak ada prompt untuk kembali, jadi tindakan tidak berjalan dan run berlanjut624* Di tempat lain dalam run `-p` tanpa [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags), tidak ada dialog izin untuk fallback, jadi tindakan tidak berjalan dan run berlanjut

623 625 

624**Yang harus dilakukan:**626**Yang harus dilakukan:**

625 627 

626* Dalam sesi interaktif, setujui atau tolak tindakan dalam prompt yang muncul628* Dalam sesi interaktif, setujui atau tolak tindakan dalam dialog izin yang muncul

627* Dalam sesi interaktif, jalankan `/compact` untuk mengurangi ukuran percakapan sehingga tindakan berikutnya cocok dalam jendela pengklasifikasi lagi629* Dalam sesi interaktif, jalankan `/compact` untuk mengurangi ukuran percakapan sehingga tindakan berikutnya cocok dalam jendela pengklasifikasi lagi

628 630 

629<h3 id="the-server-returned-no-safety-verdict">631<h3 id="the-server-returned-no-safety-verdict">


636The server-side auto mode classifier gave no verdict (timed out), so auto mode cannot determine the safety of <tool>.638The server-side auto mode classifier gave no verdict (timed out), so auto mode cannot determine the safety of <tool>.

637```639```

638 640 

639Sisa pesan memberi tahu Claude apakah satu percobaan ulang dapat membantu. Sebelum beberapa penolakan ini, Claude Code menunggu sehingga upaya Claude berikutnya tidak mengikuti sekaligus. Selama tunggu dalam sesi interaktif, spinner menunjukkan `Auto mode check unavailable` dengan hitungan mundur, dan menekan `Esc` mengganggu giliran.641Sisa pesan memberi tahu Claude apakah satu retry dapat membantu. Sebelum beberapa penolakan ini, Claude Code menunggu sehingga upaya Claude berikutnya tidak mengikuti sekaligus. Selama tunggu dalam sesi interaktif, spinner menunjukkan `Auto mode check unavailable` dengan hitungan mundur, dan menekan `Esc` mengganggu giliran.

640 642 

641Setelah sepuluh respons berturut-turut tanpa putusan, auto mode menghentikan giliran:643Setelah sepuluh respons berturut-turut tanpa putusan, auto mode menghentikan giliran:

642 644 


647Pesan berhenti muncul di tempat yang berbeda dalam setiap jenis sesi:649Pesan berhenti muncul di tempat yang berbeda dalam setiap jenis sesi:

648 650 

649* Dalam sesi interaktif, pesan muncul sebagai peringatan dalam transkrip dan giliran berakhir651* Dalam sesi interaktif, pesan muncul sebagai peringatan dalam transkrip dan giliran berakhir

650* Dalam run `-p` [non-interactive](/docs/id/headless), run berakhir dan melaporkan kesalahan eksekusi. Dengan output teks default, pesan mencetak di stderr.652* Dalam run `-p` [non-interactive](/docs/id/headless), run berakhir dan melaporkan kesalahan eksekusi. Dengan output teks default, pesan dicetak di stderr.

651* Ketika [subagent](/docs/id/sub-agents) mencapai batas, subagent berhenti sebelum selesai, dan Claude menerima apa pun yang dihasilkan dengan catatan bahwa auto mode menghentikannya653* Ketika [subagent](/docs/id/sub-agents) mencapai batas, subagent berhenti sebelum selesai, dan Claude menerima apa pun yang dihasilkan dengan catatan bahwa auto mode menghentikannya

652 654 

653**Yang harus dilakukan:**655**Yang harus dilakukan:**


663 Agent terminated early due to an API error665 Agent terminated early due to an API error

664</h3>666</h3>

665 667 

666Permintaan API [subagent](/docs/id/sub-agents) gagal secara terminal, misalnya karena batas penggunaan tercapai atau percobaan ulang untuk kesalahan server habis, jadi subagent berhenti sebelum menyelesaikan tugasnya. Pesan ini memerlukan Claude Code v2.1.199 atau lebih baru; sebelumnya teks kesalahan API dikembalikan ke Claude seolah-olah itu adalah hasil subagent.668Permintaan API [subagent](/docs/id/sub-agents) gagal secara terminal, misalnya karena batas penggunaan tercapai atau retry untuk kesalahan server habis, jadi subagent berhenti sebelum menyelesaikan tugasnya. Pesan ini memerlukan Claude Code v2.1.199 atau lebih baru; sebelumnya teks kesalahan API dikembalikan ke Claude seolah-olah itu adalah hasil subagent.

667 669 

668```text theme={null}670```text theme={null}

669Agent terminated early due to an API error: <error detail>671Agent terminated early due to an API error: <error detail>


674* Cocokkan detail kesalahan setelah titik dua dengan bagiannya sendiri di halaman ini, seperti [Usage limits](#usage-limits) atau [Server errors](#server-errors), dan ikuti langkah bagian itu676* Cocokkan detail kesalahan setelah titik dua dengan bagiannya sendiri di halaman ini, seperti [Usage limits](#usage-limits) atau [Server errors](#server-errors), dan ikuti langkah bagian itu

675* Setelah kesalahan yang mendasar hilang, minta Claude untuk mencoba ulang tugas atau [resume the subagent](/docs/id/sub-agents#resume-subagents)677* Setelah kesalahan yang mendasar hilang, minta Claude untuk mencoba ulang tugas atau [resume the subagent](/docs/id/sub-agents#resume-subagents)

676 678 

677Ketika batas laju, overload, atau kesalahan server mengganggu subagent foreground yang sudah menghasilkan output teks, Claude menerima output parsial itu ditandai sebagai tidak lengkap alih-alih kesalahan ini. Subagent yang satu-satunya output adalah panggilan alat mendapat kesalahan ini juga; dalam v2.1.199 bentuk itu mengembalikan hasil parsial kosong. Lihat [API errors in subagents](/docs/id/sub-agents#api-errors-in-subagents).679Ketika rate limit, overload, atau kesalahan server mengganggu subagent foreground yang sudah menghasilkan output teks, Claude menerima output parsial itu ditandai sebagai tidak lengkap alih-alih kesalahan ini. Subagent yang satu-satunya output adalah panggilan tool mendapat kesalahan ini juga; dalam v2.1.199 bentuk itu mengembalikan hasil parsial kosong. Lihat [API errors in subagents](/docs/id/sub-agents#api-errors-in-subagents).

678 680 

679<h2 id="usage-limits">681<h2 id="usage-limits">

680 Batas penggunaan682 Batas penggunaan


885 Kesalahan autentikasi887 Kesalahan autentikasi

886</h2>888</h2>

887 889 

888Kesalahan ini berarti Claude Code tidak dapat membuktikan identitas Anda kepada API. Jalankan `/status` kapan saja untuk melihat kredensial mana yang saat ini aktif.890Kesalahan-kesalahan ini berarti Claude Code tidak dapat membuktikan identitas Anda kepada API. Jalankan `/status` kapan saja untuk melihat kredensial mana yang sedang aktif.

889 891 

890<h3 id="not-logged-in">892<h3 id="not-logged-in">

891 Belum masuk893 Belum masuk

892</h3>894</h3>

893 895 

894Tidak ada kredensial yang valid tersedia untuk sesi ini.896Tidak ada kredensial valid yang tersedia untuk sesi ini.

895 897 

896```text theme={null}898```text theme={null}

897Not logged in · Please run /login899Not logged in · Please run /login

898```900```

899 901 

900Dalam sesi yang dijalankan aplikasi Claude Desktop, seperti tab Code atau Cowork, pesan berbunyi `Authentication required · Sign in again to continue`, dan Anda masuk lagi dari aplikasi.902Dalam sesi yang dijalankan oleh aplikasi Claude Desktop, seperti tab Code atau Cowork, pesannya berbunyi `Authentication required · Sign in again to continue`, dan Anda masuk kembali dari aplikasi tersebut.

903 

904Jika Anda masuk dengan akun claude.ai Anda di jendela Claude Code lain yang menggunakan [direktori konfigurasi](/docs/id/claude-directory) yang sama, sesi interaktif yang menampilkan pesan ini akan mulai menggunakan login tersebut dengan sendirinya. Anda tidak perlu memulai ulang sesi tersebut.

905 

906Sebelum v2.1.286 di macOS, sesi dapat terus menampilkan pesan tersebut setelah Anda masuk dari jendela lain. Pada versi-versi tersebut, mulai ulang sesi yang menampilkan pesan tersebut.

901 907 

902**Yang harus dilakukan:**908**Yang harus dilakukan:**

903 909 

904* Jalankan `/login` untuk autentikasi dengan langganan Claude atau akun Console Anda910* Jalankan `/login` untuk melakukan autentikasi dengan langganan Claude atau akun Console Anda

905* Jika Anda mengharapkan variabel lingkungan untuk mengautentikasi Anda, konfirmasi bahwa `ANTHROPIC_API_KEY` diatur dan diekspor di shell tempat Anda meluncurkan `claude`911* Jika Anda mengharapkan environment variable mengautentikasi Anda, pastikan `ANTHROPIC_API_KEY` telah diatur dan diekspor di shell tempat Anda menjalankan `claude`

906* Untuk CI atau otomasi di mana login interaktif tidak mungkin, konfigurasikan skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) yang mengambil kunci saat startup912* Untuk CI atau otomatisasi yang tidak memungkinkan login interaktif, konfigurasikan skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) yang mengambil kunci saat startup

907* Lihat [Urutan prioritas autentikasi](/docs/id/authentication#authentication-precedence) untuk memahami kredensial mana yang digunakan Claude Code ketika beberapa tersedia913* Lihat [Prioritas autentikasi](/docs/id/authentication#authentication-precedence) untuk memahami kredensial mana yang digunakan Claude Code ketika terdapat beberapa kredensial

908 914 

909Jika Anda diminta untuk masuk berulang kali, lihat [Belum masuk atau token kedaluwarsa](/docs/id/troubleshoot-install#not-logged-in-or-token-expired) untuk pemeriksaan jam sistem dan langkah pemulihan penyimpanan kredensial macOS.915Jika Anda berulang kali diminta untuk masuk, lihat [Belum masuk atau token kedaluwarsa](/docs/id/troubleshoot-install#not-logged-in-or-token-expired) untuk pemeriksaan jam sistem dan langkah pemulihan penyimpanan kredensial macOS.

910 916 

911<h3 id="could-not-resolve-authentication-method">917<h3 id="could-not-resolve-authentication-method">

912 Tidak dapat menyelesaikan metode autentikasi918 Tidak dapat menentukan metode autentikasi

913</h3>919</h3>

914 920 

915Sesi mencapai klien API tanpa kredensial apa pun. [Sesi latar belakang](/docs/id/agent-view) dan sesi cloud menampilkan pesan ini ketika worker dimulai tanpa kredensial. Jalankan interaktif, `-p`, dan Agent SDK melaporkan kondisi yang sama seperti [Belum masuk](#not-logged-in) dan menulis string ini hanya ke log debug mereka, jadi jika Anda menemukannya di sana, ikuti entri itu sebagai gantinya.921Sesi mencapai klien API tanpa kredensial apa pun. [Sesi latar belakang](/docs/id/agent-view) dan sesi cloud menampilkan pesan ini ketika worker dimulai tanpa kredensial. Proses interaktif, `-p`, dan Agent SDK melaporkan kondisi yang sama sebagai [Belum masuk](#not-logged-in) dan hanya menulis string ini ke log debug mereka, jadi jika Anda menemukannya di sana, ikuti entri tersebut.

916 922 

917```text theme={null}923```text theme={null}

918Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted924Could not resolve authentication method. Expected one of apiKey, authToken, credentials, config, or profile to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted

919```925```

920 926 

921Pada versi saat ini, kesalahan berarti tidak ada kredensial yang tersedia untuk proses worker. Sebelum v2.1.174, sesi latar belakang yang ditugaskan ke worker yang sudah diinisialisasi dan menganggur dapat gagal dengan cara ini bahkan ketika kredensial yang valid dikonfigurasi. Sebelum v2.1.176, sesi cloud yang menganggur sebelum diklaim juga dapat. Tingkatkan untuk memulihkan.927Pada versi saat ini, kesalahan ini berarti tidak ada kredensial yang tersedia untuk proses worker. Sebelum v2.1.174, sesi latar belakang yang ditugaskan ke worker pra-inisialisasi yang menganggur dapat gagal dengan cara ini bahkan ketika kredensial yang valid telah dikonfigurasi. Sebelum v2.1.176, sesi cloud yang menganggur sebelum diklaim juga dapat gagal dengan cara ini. Lakukan upgrade untuk memulihkannya.

922 928 

923**Yang harus dilakukan:**929**Yang harus dilakukan:**

924 930 

925* Tingkatkan ke v2.1.176 atau lebih baru jika ini muncul dalam sesi latar belakang atau cloud dan kredensial Anda sudah dikonfigurasi931* Upgrade ke v2.1.176 atau yang lebih baru jika pesan ini muncul di sesi latar belakang atau sesi cloud dan kredensial Anda sudah dikonfigurasi

926* Konfirmasi bahwa `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN`, atau kredensial penyedia cloud Anda diatur di lingkungan yang meluncurkan worker, bukan hanya di shell interaktif Anda932* Pastikan `ANTHROPIC_API_KEY`, `CLAUDE_CODE_OAUTH_TOKEN`, atau kredensial penyedia cloud Anda diatur di lingkungan yang menjalankan worker, bukan hanya di shell interaktif Anda

927* Untuk Agent SDK, lihat [pengaturan autentikasi dalam quickstart](/docs/id/agent-sdk/quickstart#setup)933* Untuk Agent SDK, lihat [penyiapan autentikasi di mulai cepat](/docs/id/agent-sdk/quickstart#setup)

928* Jalankan `/status` dalam sesi interaktif di lingkungan yang sama untuk mengonfirmasi sumber kredensial mana yang diselesaikan934* Jalankan `/status` dalam sesi interaktif di lingkungan yang sama untuk memastikan sumber kredensial mana yang digunakan

929 935 

930<h3 id="invalid-api-key">936<h3 id="invalid-api-key">

931 Kunci API tidak valid937 Kunci API tidak valid

932</h3>938</h3>

933 939 

934Variabel lingkungan `ANTHROPIC_API_KEY` atau skrip `apiKeyHelper` mengembalikan kunci yang ditolak API, atau Claude Code memblokir kunci dari `ANTHROPIC_API_KEY` sebelum mengirimnya.940Environment variable `ANTHROPIC_API_KEY` atau skrip `apiKeyHelper` mengembalikan kunci yang ditolak oleh API, atau Claude Code memblokir kunci dari `ANTHROPIC_API_KEY` sebelum mengirimkannya.

935 941 

936```text theme={null}942```text theme={null}

937Invalid API key · Fix external API key943Invalid API key · Fix external API key

938```944```

939 945 

940Ketika pesan berlanjut melampaui `Fix external API key` dengan deskripsi seperti `Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break at character 41 (120 characters on 2 lines).`, API tidak pernah melihat kunci. Claude Code menemukan karakter yang tidak dapat dibawa header HTTP dan menghentikan permintaan sebelum mengirimnya. Lihat [Nilai header permintaan tidak valid](#invalid-request-header-value) untuk cara membaca deskripsi dan memperbaiki nilai.946Ketika pesan berlanjut setelah `Fix external API key` dengan deskripsi seperti `Invalid X-Api-Key header value from ANTHROPIC_API_KEY: it contains a line break at character 41 (120 characters on 2 lines).`, API tidak pernah melihat kunci tersebut. Claude Code menemukan karakter yang tidak dapat dibawa oleh header HTTP dan menghentikan permintaan sebelum mengirimkannya. Lihat [Nilai header permintaan tidak valid](#invalid-request-header-value) untuk cara membaca deskripsi dan memperbaiki nilainya.

941 947 

942**Yang harus dilakukan:**948**Yang harus dilakukan:**

943 949 

944* Periksa kesalahan ketik dan konfirmasi bahwa kunci belum dicabut di [Console](https://platform.claude.com/settings/keys)950* Periksa kesalahan ketik dan pastikan kunci belum dicabut di [Console](https://platform.claude.com/settings/keys)

945* Di shell yang sama, jalankan `env | grep ANTHROPIC`, atau di PowerShell `Get-ChildItem Env:ANTHROPIC*`. Alat seperti direnv, plugin shell dotenv, dan terminal IDE dapat memuat kunci lama dari file `.env` di proyek Anda tanpa Anda mengaturnya secara eksplisit.951* Di shell yang sama, jalankan `env | grep ANTHROPIC`, atau di PowerShell `Get-ChildItem Env:ANTHROPIC*`. Alat seperti direnv, plugin shell dotenv, dan terminal IDE dapat memuat kunci usang dari file `.env` di proyek Anda tanpa Anda mengaturnya secara eksplisit.

946* Batalkan pengaturan `ANTHROPIC_API_KEY` dan jalankan `/login` untuk menggunakan autentikasi langganan sebagai gantinya952* Hapus pengaturan `ANTHROPIC_API_KEY` dan jalankan `/login` untuk menggunakan autentikasi langganan sebagai gantinya

947* Jika kunci berasal dari skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper), jalankan skrip secara langsung untuk mengonfirmasi bahwa skrip mencetak kunci yang valid ke stdout953* Jika kunci berasal dari skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper), jalankan skrip tersebut secara langsung untuk memastikan skrip mencetak kunci yang valid ke stdout

948* Jalankan `/status` untuk mengonfirmasi sumber kredensial mana yang sebenarnya digunakan Claude Code954* Jalankan `/status` untuk memastikan sumber kredensial mana yang sebenarnya digunakan Claude Code

949 955 

950<h3 id="your-apikeyhelper-script-is-failing">956<h3 id="your-apikeyhelper-script-is-failing">

951 Skrip apiKeyHelper Anda gagal957 Skrip apiKeyHelper Anda gagal

952</h3>958</h3>

953 959 

954Claude Code menjalankan perintah dalam pengaturan [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) Anda dan tidak mendapatkan kunci kembali. Tanpa satu, permintaan mencapai API dengan kredensial placeholder, dan API menolaknya dengan `401`. Panel `Authentication` di terminal menunjukkan mana dari ini yang terjadi:960Claude Code menjalankan perintah di pengaturan [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) Anda dan tidak mendapatkan kunci kembali. Tanpa kunci, permintaan mencapai API dengan kredensial placeholder, dan API menolaknya dengan `401`. Panel `Authentication` di terminal menunjukkan mana yang terjadi di antara berikut ini:

955 961 

956* Perintah keluar dengan kesalahan atau habis waktu962* Perintah keluar dengan kesalahan atau mengalami timeout

957* Perintah tidak mencetak apa pun ke stdout963* Perintah tidak mencetak apa pun ke stdout

958* Perintah mencetak sesuatu selain kunci, seperti banner login atau baris log. Panel menampilkan `returned output that cannot be used as an API key` dan mengatakan apa yang salah, tanpa mengulangi output. Sebelum v2.1.227, Claude Code mengirim apa pun yang dicetak perintah, setelah memangkas spasi putih di sekitarnya.964* Perintah mencetak sesuatu selain kunci, seperti banner login atau baris log. Panel menampilkan `returned output that cannot be used as an API key` dan menyebutkan apa yang salah, tanpa mengulang output tersebut. Sebelum v2.1.227, Claude Code mengirimkan apa pun yang dicetak perintah, setelah memangkas spasi di sekitarnya.

959 965 

960```text theme={null}966```text theme={null}

961Your apiKeyHelper script is failing · This usually means you need to re-authenticate with your provider · Run /status to see the script's error output967Your apiKeyHelper script is failing · This usually means you need to re-authenticate with your provider · Run /status to see the script's error output

962```968```

963 969 

964Dalam [mode non-interaktif](/docs/id/headless), stderr juga membawa alasan spesifik, diawali dengan `apiKeyHelper failed:`.970Dalam [mode non-interaktif](/docs/id/headless), stderr juga memuat alasan spesifiknya, dengan awalan `apiKeyHelper failed:`.

965 971 

966Claude Code menjalankan kembali skrip dan mencoba kembali permintaan hingga dua kali lagi sebelum menampilkan pesan ini, jadi kegagalan muncul dalam tiga upaya. Sebelum v2.1.208, Claude Code menghabiskan [anggaran percobaan ulang](#automatic-retries) penuh mengirim ulang permintaan dengan kredensial placeholder dan kemudian melaporkan kesalahan autentikasi `401` generik sebagai gantinya dari kegagalan skrip.972Claude Code menjalankan ulang skrip dan mencoba ulang permintaan hingga dua kali lagi sebelum menampilkan pesan ini, sehingga kegagalan muncul dalam tiga percobaan. Sebelum v2.1.208, Claude Code menghabiskan seluruh [anggaran retry](#automatic-retries) untuk mengirim ulang permintaan dengan kredensial placeholder, lalu melaporkan kesalahan autentikasi `401` generik alih-alih kegagalan skrip.

967 973 

968Menjalankan `/login` tidak membantu di sini: output helper [mengambil prioritas](/docs/id/authentication#authentication-precedence) atas login yang disimpan selama pengaturan ada.974Menjalankan `/login` tidak membantu di sini: output helper [diutamakan](/docs/id/authentication#authentication-precedence) daripada login tersimpan selama pengaturan tersebut ada.

969 975 

970**Yang harus dilakukan:**976**Yang harus dilakukan:**

971 977 

972* Jalankan perintah yang dikonfigurasi dalam `apiKeyHelper` secara langsung di shell Anda untuk mereproduksi kegagalan978* Jalankan perintah yang dikonfigurasi di `apiKeyHelper` secara langsung di shell Anda untuk mereproduksi kegagalan

973* Jika perintah melaporkan sesi yang kedaluwarsa, autentikasi ulang dengan penyedia kredensial Anda, misalnya dengan masuk kembali ke SSO atau vault rahasia Anda979* Jika perintah melaporkan sesi yang kedaluwarsa, lakukan autentikasi ulang dengan penyedia kredensial Anda, misalnya dengan masuk kembali ke SSO atau vault rahasia Anda

974* Perbaiki perintah sehingga hanya mencetak kunci ke stdout, sebagai token tunggal ASCII yang dapat dicetak hingga 16.384 karakter, dan keluar dengan kode 0. Lihat [putar kredensial dengan apiKeyHelper](/docs/id/llm-gateway-connect#rotate-credentials-with-apikeyhelper) untuk pengaturan yang berfungsi.980* Perbaiki perintah agar hanya mencetak kunci ke stdout, sebagai satu token ASCII yang dapat dicetak hingga 16.384 karakter, dan keluar dengan kode 0. Lihat [merotasi kredensial dengan apiKeyHelper](/docs/id/llm-gateway-connect#rotate-credentials-with-apikeyhelper) untuk penyiapan yang berfungsi.

975* Jalankan `/status` untuk melihat kegagalan dan konfirmasi bahwa `apiKeyHelper` adalah sumber kredensial aktif. Baris `apiKeyHelper` menampilkan `Failing` dengan detail kegagalan terakhir, seperti kode keluar dan output kesalahan perintah, dan hilang setelah jalankan berhasil berikutnya. Sebelum v2.1.274, `/status` hanya menampilkan sumber kredensial, bukan kegagalan.981* Jalankan `/status` untuk melihat kegagalan dan memastikan `apiKeyHelper` adalah sumber kredensial yang aktif. Baris `apiKeyHelper` menampilkan `Failing` dengan detail kegagalan terakhir, seperti exit code dan output kesalahan perintah, dan menghilang setelah eksekusi berhasil berikutnya. Sebelum v2.1.274, `/status` hanya menampilkan sumber kredensial, bukan kegagalannya.

976* Setiap kali perintah gagal, kode keluar dan output kesalahannya juga muncul dalam panel `Authentication` di terminal. Sebelum v2.1.212, panel berjudul `Cloud authentication`.982* Setiap kali perintah gagal, exit code dan output kesalahannya juga muncul di panel `Authentication` di terminal. Sebelum v2.1.212, panel tersebut berjudul `Cloud authentication`.

977 983 

978<h3 id="invalid-request-header-value">984<h3 id="invalid-request-header-value">

979 Nilai header permintaan tidak valid985 Nilai header permintaan tidak valid

980</h3>986</h3>

981 987 

982Nilai yang akan dikirim Claude Code sebagai header permintaan berisi karakter yang tidak dapat dibawa header HTTP: jeda baris, byte NUL, atau karakter di atas `U+00FF`, seperti tanda kutip melengkung atau spasi lebar nol. Claude Code menghentikan permintaan sebelum apa pun dikirim dan menamai variabel atau pengaturan untuk diperbaiki. Penyebab biasanya adalah kredensial yang ditempel dari dokumen atau obrolan yang membawa karakter tak terlihat atau jeda baris yang tersesat.988Nilai yang hendak dikirim Claude Code sebagai header permintaan mengandung karakter yang tidak dapat dibawa oleh header HTTP: jeda baris, byte NUL, atau karakter di atas `U+00FF`, seperti tanda kutip melengkung atau spasi lebar-nol. Claude Code menghentikan permintaan sebelum apa pun dikirim dan menyebutkan variabel atau pengaturan yang perlu diperbaiki. Penyebab umumnya adalah kredensial yang ditempel dari dokumen atau obrolan yang membawa karakter tak terlihat atau jeda baris yang tidak disengaja.

983 989 

984Claude Code menjalankan pemeriksaan ini ketika mengirim permintaan ke Claude API secara langsung atau melalui [gateway LLM](/docs/id/llm-gateway). Pada penyedia cloud pihak ketiga seperti [Amazon Bedrock](/docs/id/amazon-bedrock), Claude Code tidak menjalankannya sebelum mengirim.990Claude Code menjalankan pemeriksaan ini ketika mengirim permintaan ke Claude API secara langsung atau melalui [LLM gateway](/docs/id/llm-gateway). Pada penyedia cloud pihak ketiga seperti [Amazon Bedrock](/docs/id/amazon-bedrock), Claude Code tidak menjalankannya sebelum mengirim.

985 991 

986```text theme={null}992```text theme={null}

987Invalid auth token · Fix external auth token993Invalid auth token · Fix external auth token


989Invalid request header from the environment · Fix the environment variable995Invalid request header from the environment · Fix the environment variable

990```996```

991 997 

992Bagian pertama pesan tergantung pada tempat nilai buruk berasal:998Bagian pertama pesan bergantung pada asal nilai yang salah:

993 999 

994* `Invalid auth token`: token pembawa dari [`ANTHROPIC_AUTH_TOKEN`](/docs/id/env-vars) atau [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars)1000* `Invalid auth token`: bearer token dari [`ANTHROPIC_AUTH_TOKEN`](/docs/id/env-vars) atau [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars)

995* `Invalid ANTHROPIC_CUSTOM_HEADERS`: nama header atau nilai yang Anda atur dalam [`ANTHROPIC_CUSTOM_HEADERS`](/docs/id/env-vars). Deskripsi menghitung pasangan `Name: Value` mana yang bersalah, seperti `distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS`, tanpa mengulangi nama atau nilai, karena Anda memilih keduanya.1001* `Invalid ANTHROPIC_CUSTOM_HEADERS`: nama atau nilai header yang Anda atur di [`ANTHROPIC_CUSTOM_HEADERS`](/docs/id/env-vars). Deskripsi menghitung pasangan `Name: Value` mana yang bermasalah, seperti `distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS`, tanpa mengulang nama atau nilainya, karena Anda yang memilih keduanya.

996* `Invalid request header from the environment`: nilai yang Claude Code salin ke header permintaan dari variabel lingkungan lain, seperti `CLAUDE_AGENT_SDK_CLIENT_APP`. Deskripsi menamai variabel untuk diperbaiki.1002* `Invalid request header from the environment`: nilai yang disalin Claude Code ke header permintaan dari environment variable lain, seperti `CLAUDE_AGENT_SDK_CLIENT_APP`. Deskripsi menyebutkan variabel yang perlu diperbaiki.

997 1003 

998Claude Code melaporkan `ANTHROPIC_API_KEY` buruk yang ditangkap oleh pemeriksaan ini sebagai [Kunci API tidak valid](#invalid-api-key), dengan deskripsi trailing yang sama. Ini melaporkan kredensial `/login` yang disimpan buruk sebagai [Belum masuk](#not-logged-in) sebagai gantinya; jalankan `/login` untuk menyimpan yang baru. Output skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) tidak pernah mencapai pemeriksaan ini: Claude Code memvalidasinya ketika skrip berjalan, dan output yang tidak dapat dibawa header HTTP gagal dengan [Skrip apiKeyHelper Anda gagal](#your-apikeyhelper-script-is-failing).1004Claude Code melaporkan `ANTHROPIC_API_KEY` yang salah yang tertangkap oleh pemeriksaan ini sebagai [Kunci API tidak valid](#invalid-api-key), dengan deskripsi penutup yang sama. Claude Code melaporkan kredensial `/login` tersimpan yang salah sebagai [Belum masuk](#not-logged-in); jalankan `/login` untuk menyimpan kredensial baru. Output skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) tidak pernah mencapai pemeriksaan ini: Claude Code memvalidasinya saat skrip dijalankan, dan output yang tidak dapat dibawa oleh header HTTP akan gagal dengan [Skrip apiKeyHelper Anda gagal](#your-apikeyhelper-script-is-failing).

999 1005 

1000Setelah `·` kedua, pesan menjelaskan masalahnya, seperti dalam contoh lengkap ini:1006Setelah `·` kedua, pesan menjelaskan masalahnya, seperti pada contoh lengkap berikut:

1001 1007 

1002```text theme={null}1008```text theme={null}

1003Invalid auth token · Fix external auth token · Invalid Authorization header value from ANTHROPIC_AUTH_TOKEN: it contains a line break at character 41 (120 characters on 2 lines).1009Invalid auth token · Fix external auth token · Invalid Authorization header value from ANTHROPIC_AUTH_TOKEN: it contains a line break at character 41 (120 characters on 2 lines).

1004```1010```

1005 1011 

1006Posisi menghitung karakter mulai dari satu. Deskripsi dibangun dari frasa tetap dan penghitungan karakter, jadi tidak pernah menyertakan nilai itu sendiri. Ini menamai karakter yang menyinggung hanya ketika itu adalah karakter tak terlihat atau tipografi yang terkenal, seperti tanda urutan byte, spasi lebar nol, atau tanda kutip melengkung, dan melaporkan apa pun yang lain sebagai `a non-ASCII character`.1012Posisi menghitung karakter mulai dari satu. Deskripsi dibangun dari frasa tetap dan jumlah karakter, sehingga tidak pernah menyertakan nilai itu sendiri. Deskripsi menyebutkan karakter yang bermasalah hanya jika karakter tersebut adalah karakter tak terlihat atau tipografis yang dikenal luas, seperti byte-order mark, spasi lebar-nol, atau tanda kutip melengkung, dan melaporkan karakter lainnya sebagai `a non-ASCII character`.

1007 1013 

1008**Yang harus dilakukan:**1014**Yang harus dilakukan:**

1009 1015 

1010* Atur ulang variabel atau pengaturan yang dinamai pesan, mengetik ulang karakter di sekitar posisi yang dilaporkan daripada menempel dari sumber yang sama lagi1016* Atur ulang variabel atau pengaturan yang disebutkan pesan, dengan mengetik ulang karakter di sekitar posisi yang dilaporkan alih-alih menempel lagi dari sumber yang sama

1011* Untuk `ANTHROPIC_CUSTOM_HEADERS`, simpan satu pasangan `Name: Value` per baris dan tulis ulang pasangan yang dihitung pesan1017* Untuk `ANTHROPIC_CUSTOM_HEADERS`, pertahankan satu pasangan `Name: Value` per baris dan tulis ulang pasangan yang dihitung oleh pesan

1012* Jalankan `/status` untuk mengonfirmasi sumber kredensial mana yang aktif1018* Jalankan `/status` untuk memastikan sumber kredensial mana yang aktif

1013 1019 

1014<h3 id="this-organization-has-been-disabled">1020<h3 id="this-organization-has-been-disabled">

1015 Organisasi ini telah dinonaktifkan1021 Organisasi ini telah dinonaktifkan

1016</h3>1022</h3>

1017 1023 

1018Claude Code menggunakan `ANTHROPIC_API_KEY` lama dari organisasi Console yang dinonaktifkan. Ketika Anda memiliki login langganan yang disimpan, kunci menimpanya.1024Claude Code menggunakan `ANTHROPIC_API_KEY` usang dari organisasi Console yang dinonaktifkan. Ketika Anda memiliki login langganan yang tersimpan, kunci tersebut menimpanya.

1019 1025 

1020```text theme={null}1026```text theme={null}

1021Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your subscription instead1027Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your subscription instead


1023API Error: 400 ... This organization has been disabled.1029API Error: 400 ... This organization has been disabled.

1024```1030```

1025 1031 

1026Petunjuk setelah `·` tergantung pada kredensial yang disimpan Anda: bentuk pertama muncul ketika `/login` yang disimpan dapat mengambil alih setelah Anda membatalkan pengaturan kunci, dan yang kedua ketika kunci adalah satu-satunya kredensial Anda.1032Petunjuk setelah `·` bergantung pada kredensial tersimpan Anda: bentuk pertama muncul ketika `/login` yang tersimpan dapat menggantikannya setelah Anda menghapus pengaturan kunci, dan bentuk kedua ketika kunci tersebut adalah satu-satunya kredensial Anda.

1027 1033 

1028Variabel lingkungan mengambil prioritas atas `/login`, jadi kunci yang diekspor dalam profil shell Anda atau dimuat dari file `.env` digunakan bahkan ketika Anda memiliki langganan Pro atau Max yang berfungsi. Dalam mode non-interaktif (`-p`), kunci selalu digunakan saat ada.1034Environment variable diutamakan daripada `/login`, sehingga kunci yang diekspor di profil shell Anda atau dimuat dari file `.env` tetap digunakan bahkan ketika Anda memiliki langganan Pro atau Max yang berfungsi. Dalam mode non-interaktif (`-p`), kunci selalu digunakan jika ada.

1029 1035 

1030**Yang harus dilakukan:**1036**Yang harus dilakukan:**

1031 1037 

1032* Batalkan pengaturan `ANTHROPIC_API_KEY` di shell saat ini dan hapus dari profil shell Anda, kemudian luncurkan ulang `claude`1038* Hapus pengaturan `ANTHROPIC_API_KEY` di shell saat ini dan hapus dari profil shell Anda, lalu jalankan ulang `claude`

1033* Jika pesan mengatakan `Update or unset`, Anda tidak memiliki login yang disimpan untuk kembali. Batalkan pengaturan kunci dan jalankan `/login`, atau ganti kunci dengan yang dari organisasi Console aktif.1039* Jika pesan menyebutkan `Update or unset`, Anda tidak memiliki login tersimpan untuk dijadikan cadangan. Hapus pengaturan kunci dan jalankan `/login`, atau ganti kunci dengan kunci dari organisasi Console yang aktif.

1034* Jalankan `/status` setelahnya untuk mengonfirmasi kredensial aktif adalah langganan Anda1040* Jalankan `/status` setelahnya untuk memastikan kredensial yang aktif adalah langganan Anda

1035* Jika tidak ada variabel lingkungan yang diatur dan kesalahan berlanjut, hubungi dukungan atau masuk dengan akun berbeda.1041* Jika tidak ada environment variable yang diatur dan kesalahan tetap terjadi, hubungi dukungan atau masuk dengan akun lain.

1036 1042 

1037<h3 id="your-organization-has-disabled-api-key-authentication">1043<h3 id="your-organization-has-disabled-api-key-authentication">

1038 Organisasi Anda telah menonaktifkan autentikasi kunci API1044 Organisasi Anda telah menonaktifkan autentikasi kunci API

1039</h3>1045</h3>

1040 1046 

1041Pesan ini memerlukan Claude Code v2.1.169 atau lebih baru. Admin organisasi Console Anda telah mematikan autentikasi kunci API, jadi API menolak kunci yang dikirim Claude Code. Petunjuk pemulihan setelah `·` bervariasi tergantung pada tempat kunci berasal:1047Pesan ini memerlukan Claude Code v2.1.169 atau yang lebih baru. Admin organisasi Console Anda telah mematikan autentikasi kunci API, sehingga API menolak kunci yang dikirim Claude Code. Petunjuk pemulihan setelah `·` bervariasi tergantung dari mana kunci berasal:

1042 1048 

1043```text theme={null}1049```text theme={null}

1044Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account1050Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account


1048Your organization has disabled API key authentication · Sign in again with your claude.ai account1054Your organization has disabled API key authentication · Sign in again with your claude.ai account

1049```1055```

1050 1056 

1051Bentuk terakhir muncul dalam sesi yang dijalankan aplikasi Claude Desktop, seperti tab Code atau Cowork, di mana Anda masuk lagi dari aplikasi.1057Bentuk terakhir muncul dalam sesi yang dijalankan oleh aplikasi Claude Desktop, seperti tab Code atau Cowork, tempat Anda masuk kembali dari aplikasi tersebut.

1052 1058 

1053Variabel lingkungan dan `apiKeyHelper` mengambil prioritas atas `/login`, jadi menjalankan `/login` saja tidak membantu sementara salah satu masih memasok kunci. Lihat [Urutan prioritas autentikasi](/docs/id/authentication#authentication-precedence).1059Environment variable dan `apiKeyHelper` diutamakan daripada `/login`, sehingga menjalankan `/login` saja tidak membantu selama salah satunya masih menyediakan kunci. Lihat [Prioritas autentikasi](/docs/id/authentication#authentication-precedence).

1054 1060 

1055**Yang harus dilakukan:**1061**Yang harus dilakukan:**

1056 1062 

1057* Jika pesan menamai `ANTHROPIC_API_KEY`, batalkan pengaturannya di shell saat ini dan hapus dari profil shell atau file `.env` Anda, kemudian luncurkan ulang `claude`1063* Jika pesan menyebutkan `ANTHROPIC_API_KEY`, hapus pengaturannya di shell saat ini dan hapus dari profil shell atau file `.env` Anda, lalu jalankan ulang `claude`

1058* Jika pesan menamai `apiKeyHelper`, hapus pengaturan [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) dari `settings.json` Anda1064* Jika pesan menyebutkan `apiKeyHelper`, hapus pengaturan [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) dari `settings.json` Anda

1059* Jalankan `/login` untuk masuk dengan akun claude.ai Anda1065* Jalankan `/login` untuk masuk dengan akun claude.ai Anda

1060* Jalankan `/status` setelahnya untuk mengonfirmasi kredensial aktif adalah langganan Anda daripada kunci API1066* Jalankan `/status` setelahnya untuk memastikan kredensial yang aktif adalah langganan Anda, bukan kunci API

1061* Jika Anda memerlukan autentikasi kunci API untuk otomasi, minta admin organisasi Anda untuk mengaktifkannya kembali di Console1067* Jika Anda memerlukan autentikasi kunci API untuk otomatisasi, minta admin organisasi Anda untuk mengaktifkannya kembali di Console

1062 1068 

1063<h3 id="your-organization-has-disabled-claude-subscription-access">1069<h3 id="your-organization-has-disabled-claude-subscription-access">

1064 Organisasi Anda telah menonaktifkan akses langganan Claude1070 Organisasi Anda telah menonaktifkan akses langganan Claude

1065</h3>1071</h3>

1066 1072 

1067Organisasi Claude Anda tidak memungkinkan masuk ke Claude Code dengan login langganan. Menjalankan `/login` lagi dengan akun yang sama mengembalikan kesalahan yang sama.1073Organisasi Claude Anda tidak mengizinkan masuk ke Claude Code dengan login langganan. Menjalankan `/login` lagi dengan akun yang sama akan menghasilkan kesalahan yang sama.

1068 1074 

1069```text theme={null}1075```text theme={null}

1070Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access1076Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access

1071```1077```

1072 1078 

1073Ini adalah pengaturan organisasi sisi server, jadi tidak dapat ditimpa dari pengaturan lokal, variabel lingkungan, atau flag CLI.1079Ini adalah pengaturan organisasi di sisi server, sehingga tidak dapat ditimpa dari pengaturan lokal, environment variable, atau flag CLI.

1074 1080 

1075Agent SDK dan mode non-interaktif `-p` menampilkan ini sebagai kode kesalahan `oauth_org_not_allowed`.1081Agent SDK dan mode non-interaktif `-p` menampilkan ini sebagai kode kesalahan `oauth_org_not_allowed`.

1076 1082 

1077**Yang harus dilakukan:**1083**Yang harus dilakukan:**

1078 1084 

1079* Minta admin Anda untuk mengaktifkan akses Claude Code untuk organisasi Anda1085* Minta admin Anda untuk mengaktifkan akses Claude Code bagi organisasi Anda

1080* Autentikasi dengan kunci API Console sebagai gantinya dari langganan Anda. Lihat [Autentikasi Claude Console](/docs/id/authentication#claude-console-authentication) untuk pengaturan.1086* Lakukan autentikasi dengan kunci API Console alih-alih langganan Anda. Lihat [Autentikasi Claude Console](/docs/id/authentication#claude-console-authentication) untuk penyiapan.

1081* Jika Anda adalah admin dan tidak melihat opsi untuk mengaktifkan akses, hubungi [dukungan Anthropic](https://support.claude.com)1087* Jika Anda adalah admin dan tidak melihat opsi untuk mengaktifkan akses, hubungi [dukungan Anthropic](https://support.claude.com)

1082 1088 

1083<h3 id="routines-are-disabled-by-your-organizations-policy">1089<h3 id="routines-are-disabled-by-your-organizations-policy">

1084 Rutinitas dinonaktifkan oleh kebijakan organisasi Anda1090 Routines dinonaktifkan oleh kebijakan organisasi Anda

1085</h3>1091</h3>

1086 1092 

1087An Owner dalam organisasi Tim atau Enterprise Anda telah mematikan rutinitas di tingkat organisasi. Kesalahan muncul ketika Anda mencoba membuat atau menjalankan rutinitas, misalnya dari UI [Rutinitas](/docs/id/routines) di claude.ai/code. Pada Claude Code v2.1.227 atau lebih baru, pengaturan yang sama juga [menyembunyikan `/schedule`](/docs/id/routines#troubleshooting) di CLI.1093Seorang Owner di organisasi Team atau Enterprise Anda telah mematikan routine di tingkat organisasi. Kesalahan muncul ketika Anda mencoba membuat atau menjalankan routine, misalnya dari UI [Routines](/docs/id/routines) di claude.ai/code. Pada Claude Code v2.1.227 atau yang lebih baru, pengaturan yang sama juga [menyembunyikan `/schedule`](/docs/id/routines#troubleshooting) di CLI.

1088 1094 

1089```text theme={null}1095```text theme={null}

1090Routines are disabled by your organization's policy.1096Routines are disabled by your organization's policy.

1091```1097```

1092 1098 

1093Ini adalah pengaturan sisi server, jadi tidak dapat ditimpa dari pengaturan lokal, variabel lingkungan, atau flag CLI.1099Ini adalah pengaturan di sisi server, sehingga tidak dapat ditimpa dari pengaturan lokal, environment variable, atau flag CLI.

1094 1100 

1095**Yang harus dilakukan:**1101**Yang harus dilakukan:**

1096 1102 

1097* Minta Pemilik dalam organisasi Anda untuk mengaktifkan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)1103* Minta seorang Owner di organisasi Anda untuk mengaktifkan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

1098* Untuk pekerjaan terjadwal satu kali yang tidak memerlukan rutinitas tingkat organisasi, lihat [tugas terjadwal](/docs/id/scheduled-tasks)1104* Untuk pekerjaan terjadwal satu kali yang tidak memerlukan routine tingkat organisasi, lihat [tugas terjadwal](/docs/id/scheduled-tasks)

1099 1105 

1100<h3 id="remote-control-requires-the-anthropic-api">1106<h3 id="remote-control-requires-the-anthropic-api">

1101 Remote Control memerlukan Anthropic API1107 Remote Control memerlukan Anthropic API

1102</h3>1108</h3>

1103 1109 

1104Sesi tidak berbicara langsung ke Anthropic API, yang [Remote Control](/docs/id/remote-control) memerlukan.1110Sesi tidak berkomunikasi langsung dengan Anthropic API, yang diperlukan oleh [Remote Control](/docs/id/remote-control).

1105 1111 

1106```text theme={null}1112```text theme={null}

1107Remote Control is only available when using Claude via api.anthropic.com. CLAUDE_CODE_USE_BEDROCK is set, so this session is using Amazon Bedrock — unset it (or run in a shell without it) to use Remote Control.1113Remote Control is only available when using Claude via api.anthropic.com. CLAUDE_CODE_USE_BEDROCK is set, so this session is using Amazon Bedrock — unset it (or run in a shell without it) to use Remote Control.

1108```1114```

1109 1115 

1110Kalimat kedua menjelaskan apa yang mengarahkan sesi menjauh dari Anthropic API; sebelum v2.1.219, pesan hanya kalimat pertama. Tergantung pada penyebabnya, pesan menamai:1116Kalimat kedua menjelaskan apa yang mengalihkan sesi dari Anthropic API; sebelum v2.1.219, pesan hanya berisi kalimat pertama. Bergantung pada penyebabnya, pesan menyebutkan:

1111 1117 

1112* Variabel penyedia `CLAUDE_CODE_USE_*`, seperti `CLAUDE_CODE_USE_BEDROCK` untuk [Amazon Bedrock](/docs/id/amazon-bedrock) atau `CLAUDE_CODE_USE_VERTEX` untuk [Platform Agen Google Cloud](/docs/id/google-vertex-ai)1118* Variabel penyedia `CLAUDE_CODE_USE_*`, seperti `CLAUDE_CODE_USE_BEDROCK` untuk [Amazon Bedrock](/docs/id/amazon-bedrock) atau `CLAUDE_CODE_USE_VERTEX` untuk [Agent Platform milik Google Cloud](/docs/id/google-vertex-ai)

1113* [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) menunjuk ke host selain `api.anthropic.com`, seperti [gateway LLM](/docs/id/llm-gateway) atau proxy, bahkan ketika Anda masuk dengan claude.ai; sebelum v2.1.196, URL dasar khusus tidak memblokir Remote Control1119* [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) yang mengarah ke host selain `api.anthropic.com`, seperti [LLM gateway](/docs/id/llm-gateway) atau proxy, bahkan ketika Anda masuk dengan claude.ai; sebelum v2.1.196, base URL kustom tidak memblokir Remote Control

1114* `ANTHROPIC_UNIX_SOCKET` diatur, jadi sesi mengirim permintaannya melalui soket lokal daripada ke `api.anthropic.com`1120* `ANTHROPIC_UNIX_SOCKET` diatur, sehingga sesi mengirim permintaannya melalui socket lokal alih-alih ke `api.anthropic.com`

1115* Masuk [gateway cloud](/docs/id/claude-apps-gateway) perusahaan yang dibuat melalui `/login`, yang tidak mendukung Remote Control dan tidak memiliki variabel untuk dibatalkan pengaturannya1121* Login [cloud gateway](/docs/id/claude-apps-gateway) enterprise yang dilakukan melalui `/login`, yang tidak mendukung Remote Control dan tidak memiliki variabel untuk dihapus pengaturannya

1116 1122 

1117**Yang harus dilakukan:**1123**Yang harus dilakukan:**

1118 1124 

1119* Batalkan pengaturan variabel yang dinamai pesan, seperti `CLAUDE_CODE_USE_BEDROCK` atau `ANTHROPIC_BASE_URL`, dan mulai ulang sesi, atau mulai Remote Control dari sesi yang berbicara langsung ke Anthropic API1125* Hapus pengaturan variabel yang disebutkan pesan, seperti `CLAUDE_CODE_USE_BEDROCK` atau `ANTHROPIC_BASE_URL`, dan mulai ulang sesi, atau mulai Remote Control dari sesi yang berkomunikasi langsung dengan Anthropic API

1120* Jika variabel tidak diatur di shell Anda, periksa kunci `env` dalam [file pengaturan](/docs/id/settings#where-settings-live) Anda, yang menerapkan variabel lingkungan ke setiap sesi1126* Jika variabel tidak diatur di shell Anda, periksa kunci `env` di [file pengaturan](/docs/id/settings#where-settings-live) Anda, yang menerapkan environment variable ke setiap sesi

1121* Untuk pesan startup Remote Control ini dan lainnya, lihat [Troubleshoot Remote Control](/docs/id/remote-control#troubleshooting)1127* Untuk pesan ini dan pesan startup Remote Control lainnya, lihat [Pemecahan masalah Remote Control](/docs/id/remote-control#troubleshooting)

1122 1128 

1123<h3 id="remote-control-couldnt-refresh-your-login">1129<h3 id="remote-control-couldnt-refresh-your-login">

1124 Remote Control tidak dapat menyegarkan login Anda1130 Remote Control tidak dapat memperbarui login Anda

1125</h3>1131</h3>

1126 1132 

1127Claude Code menjalankan koneksi [Remote Control](/docs/id/remote-control) langsung pada kredensial berumur pendek yang diperoleh dan diperbarui menggunakan login claude.ai yang disimpan. Ketika claude.ai berhenti menerima login itu, atau Claude Code tidak memiliki login yang disimpan lagi, Claude Code menghentikan Remote Control dan memerlukan Anda untuk masuk lagi. Kedua kegagalan dapat terjadi saat Claude Code masih terhubung atau nanti, ketika memperbaharui kredensial.1133Claude Code menjalankan koneksi [Remote Control](/docs/id/remote-control) aktif dengan kredensial berumur pendek yang diperoleh dan diperbaruinya menggunakan login claude.ai tersimpan Anda. Ketika claude.ai berhenti menerima login tersebut, atau Claude Code tidak lagi memiliki login tersimpan, Claude Code menghentikan Remote Control dan mengharuskan Anda masuk kembali. Kedua kegagalan ini dapat terjadi saat Claude Code masih menyambungkan atau nanti, saat memperbarui kredensial.

1128 1134 

1129Ketika Claude Code meminta layanan login untuk menyegarkan login yang disimpan dan tidak mendapat jawaban, itu membuat Remote Control tetap berjalan dan mencoba penyegaran lagi saat kredensial koneksi masih berlaku. Penyegaran tidak mendapat jawaban ketika Claude Code tidak dapat menjangkau layanan login, permintaan habis waktu, atau layanan gagal tanpa menolak login Anda. Jika layanan login masih tidak menjawab ketika kredensial itu kedaluwarsa, Claude Code menghentikan Remote Control dan melaporkan `OAuth token refresh failed`.1135Ketika Claude Code meminta layanan login untuk memperbarui login tersimpan Anda dan tidak mendapat jawaban, Claude Code tetap menjalankan Remote Control dan mencoba pembaruan lagi selama kredensial koneksi saat ini masih valid. Pembaruan tidak mendapat jawaban ketika Claude Code tidak dapat menjangkau layanan login, permintaan mengalami timeout, atau layanan gagal tanpa menolak login Anda. Jika layanan login masih belum menjawab saat kredensial tersebut kedaluwarsa, Claude Code menghentikan Remote Control dan melaporkan `OAuth token refresh failed`.

1130 1136 

1131Ketika Claude Code menghentikan Remote Control, itu menunjukkan alasannya dalam peringatan dan dalam baris transkrip yang dimulai dengan `Remote Control disconnected`. Sesi lokal Anda terus berjalan tanpa Remote Control. Bagian ini mencakup baris-baris ini:1137Ketika Claude Code menghentikan Remote Control, Claude Code menampilkan alasannya dalam peringatan dan dalam baris transkrip yang diawali dengan `Remote Control disconnected`. Sesi lokal Anda tetap berjalan tanpa Remote Control. Bagian ini membahas baris-baris berikut:

1132 1138 

1133```text theme={null}1139```text theme={null}

1134Remote Control disconnected — Claude.ai login expired — run /login to restore Remote Control1140Remote Control disconnected — Claude.ai login expired — run /login to restore Remote Control


1140Remote Control disconnected — Signed out of Claude — run /login, then /remote-control1146Remote Control disconnected — Signed out of Claude — run /login, then /remote-control

1141```1147```

1142 1148 

1143Claude Code menamai penyebabnya di tengah pesan:1149Claude Code menyebutkan penyebabnya di bagian tengah pesan:

1144 1150 

1145* ` Claude.ai login expired` dan `Claude.ai login was rejected`: claude.ai tidak lagi menerima token login yang disimpan Anda, karena kedaluwarsa atau dicabut1151* `Claude.ai login expired` dan `Claude.ai login was rejected`: claude.ai tidak lagi menerima token login tersimpan Anda, karena token tersebut kedaluwarsa atau dicabut

1146* ` OAuth token unavailable`: Claude Code tidak memiliki token login yang disimpan ketika kredensial koneksi jatuh tempo untuk pembaruan1152* `OAuth token unavailable`: Claude Code tidak memiliki token login tersimpan ketika kredensial koneksi jatuh tempo untuk diperbarui

1147* `OAuth token refresh failed`: claude.ai menolak token login yang disimpan Anda saat Claude Code terhubung kembali, dan menyegarkan token tidak menghasilkan yang baru1153* `OAuth token refresh failed`: claude.ai menolak token login tersimpan Anda saat Claude Code sedang menyambung ulang, dan pembaruan token tidak menghasilkan token baru

1148* `JWT refresh failed: no OAuth token`: Claude Code tidak menemukan token login yang disimpan untuk diperbarui1154* `JWT refresh failed: no OAuth token`: Claude Code tidak menemukan token login tersimpan untuk melakukan pembaruan

1149* ` Signed out of Claude`: Anda keluar di mesin ini, misalnya dengan menjalankan `/logout` di terminal lain, jadi Claude Code tidak memiliki login yang disimpan lagi untuk memperbarui koneksi1155* `Signed out of Claude`: Anda keluar di mesin ini, misalnya dengan menjalankan `/logout` di terminal lain, sehingga Claude Code tidak lagi memiliki login tersimpan untuk memperbarui koneksi

1150 1156 

1151**Yang harus dilakukan:**1157**Yang harus dilakukan:**

1152 1158 

1153* Jalankan `/login` untuk masuk lagi1159* Jalankan `/login` untuk masuk kembali

1154* Jalankan `/remote-control` untuk menghubungkan kembali sesi. Pesan yang berakhir `run /login to restore Remote Control` tidak memerlukan langkah ini: Claude Code terhubung kembali dengan sendirinya setelah Anda masuk.1160* Jalankan `/remote-control` untuk menyambungkan ulang sesi. Pesan yang diakhiri dengan `run /login to restore Remote Control` tidak memerlukan langkah ini: Claude Code menyambung ulang dengan sendirinya setelah Anda masuk.

1155 1161 

1156Sebelum v2.1.224, `OAuth token refresh failed — run /login to re-authenticate` berbunyi `OAuth token refresh failed — re-authenticate, then re-enable Remote Control`, dan `JWT refresh failed: no OAuth token — run /login` berbunyi `no OAuth token available for recovery (code <N>)`. Pesan `Claude.ai login expired`, `Claude.ai login was rejected`, dan `OAuth token unavailable` ditambahkan dalam v2.1.225.1162Sebelum v2.1.224, `OAuth token refresh failed — run /login to re-authenticate` berbunyi `OAuth token refresh failed — re-authenticate, then re-enable Remote Control`, dan `JWT refresh failed: no OAuth token — run /login` berbunyi `no OAuth token available for recovery (code <N>)`. Pesan `Claude.ai login expired`, `Claude.ai login was rejected`, dan `OAuth token unavailable` ditambahkan di v2.1.225.

1157 1163 

1158Sebelum v2.1.238, Claude Code melaporkan kasus yang sekarang mengatakan `Signed out of Claude` sebagai `JWT refresh failed: no OAuth token — run /login`, dan menghentikan Remote Control dengan `Claude.ai login expired — run /login to restore Remote Control` segera setelah satu penyegaran login tidak mendapat jawaban.1164Sebelum v2.1.238, Claude Code melaporkan kasus-kasus yang kini berbunyi `Signed out of Claude` sebagai `JWT refresh failed: no OAuth token — run /login`, dan menghentikan Remote Control dengan `Claude.ai login expired — run /login to restore Remote Control` segera setelah satu pembaruan login tidak mendapat jawaban.

1159 1165 

1160<h3 id="remote-control-stopped-because-the-signed-in-account-changed">1166<h3 id="remote-control-stopped-because-the-signed-in-account-changed">

1161 Remote Control berhenti karena akun yang masuk berubah1167 Remote Control berhenti karena akun yang masuk berubah

1162</h3>1168</h3>

1163 1169 

1164Claude Code menampilkan baris ini selama sesi [Remote Control](/docs/id/remote-control) ketika Anda masuk ke akun claude.ai atau organisasi berbeda di mesin ini. Anda membuat switch di luar sesi Claude Code, misalnya dengan menjalankan `/login` di terminal lain.1170Claude Code menampilkan baris ini selama sesi [Remote Control](/docs/id/remote-control) ketika Anda masuk ke akun atau organisasi claude.ai yang berbeda di mesin ini. Anda melakukan peralihan di luar sesi Claude Code, misalnya dengan menjalankan `/login` di terminal lain.

1165 1171 

1166Sesi Remote Control yang Anda mulai saat masuk melalui `/login` milik akun claude.ai dan organisasi yang masuk pada saat itu.1172Sesi Remote Control yang Anda mulai saat masuk melalui `/login` dimiliki oleh akun dan organisasi claude.ai yang sedang masuk pada saat itu.

1167 1173 

1168```text theme={null}1174```text theme={null}

1169Remote Control disconnected — signed-in claude.ai account or organization changed on this machine — run /remote-control to start a session for the current account, or /login to switch back, then /remote-control1175Remote Control disconnected — signed-in claude.ai account or organization changed on this machine — run /remote-control to start a session for the current account, or /login to switch back, then /remote-control

1170```1176```

1171 1177 

1172Claude Code menghentikan sesi Remote Control segera setelah claude.ai mengonfirmasi bahwa akun atau organisasi berubah. Sesi lokal Anda terus berjalan tanpa Remote Control.1178Claude Code menghentikan sesi Remote Control segera setelah claude.ai mengonfirmasi bahwa akun atau organisasi telah berubah. Sesi lokal Anda tetap berjalan tanpa Remote Control.

1173 1179 

1174**Yang harus dilakukan:**1180**Yang harus dilakukan:**

1175 1181 

1176* Jalankan `/remote-control` untuk memulai sesi Remote Control baru di bawah akun atau organisasi saat ini1182* Jalankan `/remote-control` untuk memulai sesi Remote Control baru di bawah akun atau organisasi saat ini

1177* Untuk beralih kembali, jalankan `/login` dan masuk ke akun atau organisasi sebelumnya lagi. Kemudian jalankan `/remote-control`.1183* Untuk beralih kembali, jalankan `/login` dan masuk lagi ke akun atau organisasi sebelumnya. Lalu jalankan `/remote-control`.

1178 1184 

1179Sebelum v2.1.234, Claude Code tidak memperhatikan ketika Anda beralih ke akun atau organisasi berbeda di luar sesi Claude Code. Claude Code membuat sesi Remote Control tetap terhubung sampai permintaan nanti ke server Remote Control gagal dengan `Remote Control server rejected the request (HTTP 404)`. Kegagalan itu bisa datang berjam-jam setelah switch.1185Sebelum v2.1.234, Claude Code tidak menyadari ketika Anda beralih ke akun atau organisasi lain di luar sesi Claude Code. Claude Code tetap menyambungkan sesi Remote Control hingga permintaan berikutnya ke server Remote Control gagal dengan `Remote Control server rejected the request (HTTP 404)`. Kegagalan tersebut dapat terjadi berjam-jam setelah peralihan.

1180 1186 

1181<h3 id="remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts">1187<h3 id="remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts">

1182 Remote Control berhenti karena aplikasi yang menjalankan sesi keluar atau beralih akun1188 Remote Control berhenti karena aplikasi yang menjalankan sesi keluar atau beralih akun

1183</h3>1189</h3>

1184 1190 

1185Ketika aplikasi desktop Claude atau IDE menghosting sesi Anda, Claude Code mendapatkan token login dari aplikasi itu daripada dari `/login`. Ketika claude.ai menolak token itu, Claude Code meminta aplikasi untuk yang baru. Jika aplikasi menjawab bahwa itu keluar, atau bahwa itu sekarang masuk ke akun Claude berbeda, Claude Code mengakhiri sesi [Remote Control](/docs/id/remote-control) dan mengirim aplikasi salah satu baris ini:1191Ketika aplikasi desktop Claude atau IDE menjadi host sesi Anda, Claude Code mendapatkan token login dari aplikasi tersebut, bukan dari `/login`. Ketika claude.ai menolak token tersebut, Claude Code meminta token baru dari aplikasi. Jika aplikasi menjawab bahwa aplikasi sudah keluar, atau bahwa aplikasi kini masuk ke akun Claude yang berbeda, Claude Code mengakhiri sesi [Remote Control](/docs/id/remote-control) dan mengirimkan salah satu baris berikut ke aplikasi:

1186 1192 

1187```text theme={null}1193```text theme={null}

1188Remote Control stopped — the app running this session is now signed in to a different Claude account1194Remote Control stopped — the app running this session is now signed in to a different Claude account

1189Remote Control stopped — the app running this session is signed out of Claude. Sign in there, then turn Remote Control back on1195Remote Control stopped — the app running this session is signed out of Claude. Sign in there, then turn Remote Control back on

1190```1196```

1191 1197 

1192Sesi lokal Anda terus berjalan tanpa Remote Control.1198Sesi lokal Anda tetap berjalan tanpa Remote Control.

1193 1199 

1194**Yang harus dilakukan:**1200**Yang harus dilakukan:**

1195 1201 

1196* Jika aplikasi keluar, masuk lagi, kemudian aktifkan Remote Control kembali di aplikasi1202* Jika aplikasi sudah keluar, masuk kembali ke aplikasi tersebut, lalu aktifkan kembali Remote Control di aplikasi

1197* Jika aplikasi beralih akun, Claude Code tidak dapat melanjutkan sesi yang berakhir di bawah akun baru. Mulai sesi Remote Control baru di bawah akun itu.1203* Jika aplikasi beralih akun, Claude Code tidak dapat melanjutkan sesi yang telah berakhir di bawah akun baru. Mulai sesi Remote Control baru di bawah akun tersebut.

1198 1204 

1199Sebelum v2.1.238, Claude Code mengirim aplikasi pesan `run /login` yang tercantum di bawah [Remote Control tidak dapat menyegarkan login Anda](#remote-control-couldnt-refresh-your-login) dalam kedua kasus.1205Sebelum v2.1.238, Claude Code mengirimkan pesan `run /login` yang tercantum di bawah [Remote Control tidak dapat memperbarui login Anda](#remote-control-couldnt-refresh-your-login) ke aplikasi dalam kedua kasus.

1200 1206 

1201<h3 id="oauth-token-revoked-or-expired">1207<h3 id="oauth-token-revoked-or-expired">

1202 Token OAuth dicabut atau kedaluwarsa1208 Token OAuth dicabut atau kedaluwarsa

1203</h3>1209</h3>

1204 1210 

1205Login yang disimpan tidak lagi valid. Token yang dicabut berarti Anda keluar di mana-mana atau admin menghapus akses; token yang kedaluwarsa berarti penyegaran otomatis gagal di tengah sesi.1211Login tersimpan Anda tidak lagi valid. Token yang dicabut berarti Anda keluar di semua tempat atau admin menghapus akses; token yang kedaluwarsa berarti pembaruan otomatis gagal di tengah sesi.

1206 1212 

1207Kedua pesan melaporkan penolakan yang dikembalikan API untuk permintaan yang dikirim Claude Code. Ketika login yang disimpan sudah dihapus setelah penyegaran yang gagal, Anda melihat [Login kedaluwarsa](#login-expired) sebagai gantinya. Jika Anda autentikasi dengan token berumur panjang dalam [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), Anda melihat pesan yang sama ketika token itu kedaluwarsa atau dicabut.1213Kedua pesan melaporkan penolakan yang dikembalikan API untuk permintaan yang dikirim Claude Code. Ketika login tersimpan sudah dihapus setelah pembaruan yang gagal, Anda akan melihat [Login kedaluwarsa](#login-expired). Jika Anda melakukan autentikasi dengan token berumur panjang di [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), Anda akan melihat pesan yang sama ketika token tersebut kedaluwarsa atau dicabut.

1208 1214 

1209```text theme={null}1215```text theme={null}

1210OAuth token revoked · Please run /login1216OAuth token revoked · Please run /login


1213 1219 

1214**Yang harus dilakukan:**1220**Yang harus dilakukan:**

1215 1221 

1216* Jalankan `/login` untuk masuk lagi1222* Jalankan `/login` untuk masuk kembali

1217* Jika Anda autentikasi dengan variabel lingkungan `CLAUDE_CODE_OAUTH_TOKEN`, Claude Code terus mengirim nilai yang Anda atur setelah permintaan gagal dengan 401, daripada beralih ke token login yang disimpan. [`/status`](/docs/id/commands) menampilkan kredensial ini sebagai baris `Auth token` membaca `CLAUDE_CODE_OAUTH_TOKEN`. Hasilkan token baru dengan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token) dan mulai ulang dengannya, atau batalkan pengaturan variabel dan jalankan `/login`. Sebelum v2.1.225, Claude Code dapat mengganti nilai variabel di tengah sesi dengan token akses berumur pendek dari login yang disimpan, dan sesi gagal dengan kesalahan 401 lagi setelah token itu kedaluwarsa.1223* Jika Anda melakukan autentikasi dengan environment variable `CLAUDE_CODE_OAUTH_TOKEN`, Claude Code tetap mengirimkan nilai yang Anda atur setelah permintaan gagal dengan 401, alih-alih beralih ke token login tersimpan. [`/status`](/docs/id/commands) menampilkan kredensial ini sebagai baris `Auth token` yang berbunyi `CLAUDE_CODE_OAUTH_TOKEN`. Buat token baru dengan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token) dan mulai ulang dengan token tersebut, atau hapus pengaturan variabel dan jalankan `/login`. Sebelum v2.1.225, Claude Code dapat mengganti nilai variabel di tengah sesi dengan access token berumur pendek dari login tersimpan, dan sesi kembali gagal dengan kesalahan 401 setelah token tersebut kedaluwarsa.

1218* Untuk prompt berulang untuk masuk di seluruh peluncuran, lihat pemeriksaan jam sistem dan langkah pemulihan penyimpanan kredensial macOS dalam [Troubleshooting](/docs/id/troubleshoot-install#not-logged-in-or-token-expired)1224* Untuk permintaan masuk yang berulang di setiap peluncuran, lihat pemeriksaan jam sistem dan langkah pemulihan penyimpanan kredensial macOS di [Pemecahan masalah](/docs/id/troubleshoot-install#not-logged-in-or-token-expired)

1219* Untuk kegagalan lainnya termasuk `403 Forbidden` dan masalah browser OAuth, lihat [Login dan autentikasi](/docs/id/troubleshoot-install#login-and-authentication)1225* Untuk kegagalan lain termasuk `403 Forbidden` dan masalah browser OAuth, lihat [Login dan autentikasi](/docs/id/troubleshoot-install#login-and-authentication)

1220 1226 

1221<h3 id="api-error-401-invalid-authentication-credentials">1227<h3 id="api-error-401-invalid-authentication-credentials">

1222 API Error: 401 Kredensial autentikasi tidak valid1228 API Error: 401 Invalid authentication credentials

1223</h3>1229</h3>

1224 1230 

1225API mengenali format kredensial Anda tetapi menolak akun atau organisasi di baliknya. Anthropic mengembalikan pesan ini ketika kredensial baru saja dicabut, ketika organisasi dinonaktifkan atau menghapus akses Anda, atau ketika akun itu sendiri dinonaktifkan, jadi token yang kedaluwarsa bukan penyebabnya. Kredensial dapat berupa login yang disimpan atau `ANTHROPIC_API_KEY` yang disetujui, dan perbaikannya berbeda, jadi mulai dengan menjalankan `/status` untuk melihat mana yang aktif.1231API mengenali format kredensial Anda tetapi menolak akun atau organisasi di baliknya. Anthropic mengembalikan pesan ini ketika kredensial baru saja dicabut, ketika organisasi dinonaktifkan atau menghapus akses Anda, atau ketika akun itu sendiri dinonaktifkan, sehingga token yang kedaluwarsa bukanlah penyebabnya. Kredensial tersebut dapat berupa login tersimpan Anda atau `ANTHROPIC_API_KEY` yang disetujui, dan perbaikannya berbeda, jadi mulailah dengan menjalankan `/status` untuk melihat mana yang aktif.

1226 1232 

1227```text theme={null}1233```text theme={null}

1228Please run /login · API Error: 401 Invalid authentication credentials1234Please run /login · API Error: 401 Invalid authentication credentials


1230 1236 

1231**Yang harus dilakukan:**1237**Yang harus dilakukan:**

1232 1238 

1233* Jika `/status` menampilkan baris `API key` yang tidak ditandai sebagai tidak digunakan, `ANTHROPIC_API_KEY` yang disetujui]\(/id/authentication#authentication-precedence) adalah kredensial aktif dan mengambil prioritas atas login Anda, jadi `/login` tidak menggantinya. Putar kunci di Claude Console, atau kembali ke langganan Anda dengan menjalankan `unset ANTHROPIC_API_KEY`, atau di PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`.1239* Jika `/status` menampilkan baris `API key` yang tidak ditandai sebagai tidak digunakan, [`ANTHROPIC_API_KEY`](/docs/id/authentication#authentication-precedence) yang disetujui adalah kredensial aktif dan diutamakan daripada login Anda, sehingga `/login` tidak menggantikannya. Rotasi kunci di Claude Console, atau kembali ke langganan Anda dengan menjalankan `unset ANTHROPIC_API_KEY`, atau di PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`.

1234* Jika `/status` hanya menampilkan login Anda, jalankan `/login` sekali. Jika kredensial dicabut, login baru menggantinya.1240* Jika `/status` hanya menampilkan login Anda, jalankan `/login` sekali. Jika kredensial telah dicabut, login baru akan menggantikannya.

1235* Jika pesan yang sama kembali untuk akun login yang sama, akun atau organisasi tidak lagi aktif. Periksa akun dan organisasi yang dilaporkan `/status`, dan minta admin organisasi Anda untuk memulihkan akses.1241* Jika pesan yang sama muncul kembali untuk akun login yang sama, akun atau organisasi tersebut tidak lagi aktif. Periksa akun dan organisasi yang dilaporkan `/status`, dan minta admin organisasi Anda untuk memulihkan akses.

1236* Jika [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) menunjuk ke [gateway LLM](/docs/id/llm-gateway), teks setelah `401` adalah pesan gateway Anda daripada Anthropic, dan `/login` tidak mengubahnya. Perbaiki kredensial yang diharapkan gateway Anda sebagai gantinya.1242* Jika [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) mengarah ke [LLM gateway](/docs/id/llm-gateway), teks setelah `401` adalah pesan dari gateway Anda, bukan dari Anthropic, dan `/login` tidak mengubahnya. Perbaiki kredensial yang diharapkan gateway Anda.

1237 1243 

1238<h3 id="login-expired">1244<h3 id="login-expired">

1239 Login kedaluwarsa1245 Login kedaluwarsa

1240</h3>1246</h3>

1241 1247 

1242Claude Code mencoba memperbarui login claude.ai atau Claude Console yang disimpan dan layanan OAuth menolak token penyegaran yang disimpan, jadi Claude Code menghapus kredensial yang disimpan. Setelah itu, setiap permintaan model berhenti secara lokal dengan pesan ini sebelum mencapai API, karena hanya `/login` yang dapat membuat kredensial baru.1248Claude Code mencoba memperbarui login claude.ai tersimpan Anda dan layanan OAuth menolak refresh token yang tersimpan, sehingga Claude Code menghapus kredensial tersimpan. Setelah itu, setiap permintaan model berhenti secara lokal dengan pesan ini sebelum mencapai API, karena hanya `/login` yang dapat membuat kredensial baru.

1243 1249 

1244Sebelum v2.1.206, Claude Code mengirim permintaan model bagaimanapun dengan kredensial apa pun yang tersisa di lingkungan, dan setiap model kemudian gagal dengan [Ada masalah dengan model yang dipilih](#theres-an-issue-with-the-selected-model) atau 401 sebagai gantinya dari prompt untuk masuk.1250Sebelum v2.1.206, Claude Code tetap mengirimkan permintaan model dengan kredensial apa pun yang tersisa di lingkungan, dan setiap model kemudian gagal dengan [Ada masalah dengan model yang dipilih](#theres-an-issue-with-the-selected-model) atau 401 alih-alih permintaan untuk masuk.

1245 1251 

1246```text theme={null}1252```text theme={null}

1247Login expired · Please run /login1253Login expired · Please run /login

1248```1254```

1249 1255 

1250Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), pesan berbunyi sebagai berikut, dan kode kesalahan terstruktur adalah `authentication_failed`:1256Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), pesannya berbunyi sebagai berikut, dan kode kesalahan terstrukturnya adalah `authentication_failed`:

1251 1257 

1252```text theme={null}1258```text theme={null}

1253Failed to authenticate: OAuth session expired and could not be refreshed1259Failed to authenticate: OAuth session expired and could not be refreshed

1254```1260```

1255 1261 

1256Ini bukan keadaan yang sama seperti [Token OAuth dicabut atau kedaluwarsa](#oauth-token-revoked-or-expired). Pesan-pesan itu melaporkan penolakan yang dikembalikan API. Claude Code itu sendiri menghasilkan `Login expired` untuk login yang sudah gagal diperbarui, jadi tidak mengirim permintaan. Ketika pembaruan gagal karena akun itu sendiri ditangguhkan daripada login yang sudah lama, Claude Code menampilkan [Akun Anda ditahan](#your-account-is-on-hold) sebagai gantinya.1262Ini bukan kondisi yang sama dengan [Token OAuth dicabut atau kedaluwarsa](#oauth-token-revoked-or-expired). Pesan-pesan tersebut melaporkan penolakan yang dikembalikan API. Claude Code sendiri yang menghasilkan `Login expired` untuk login yang sudah gagal diperbaruinya, sehingga tidak mengirim permintaan. Ketika pembaruan gagal karena akun itu sendiri ditangguhkan, bukan karena login yang usang, Claude Code menampilkan [Akun Anda ditangguhkan](#your-account-is-on-hold).

1257 1263 

1258Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login yang disimpan dan tidak pernah melihat pesan ini.1264Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login tersimpan dan tidak pernah melihat pesan ini.

1259 1265 

1260Anda dapat memeriksa keadaan ini sebelum permintaan gagal: [`/status`](/docs/id/commands) menampilkan baris `Login` membaca `Expired — log in again`, ditambah organisasi dan email yang disimpannya untuk login yang kedaluwarsa. Baris muncul hanya ketika login yang disimpan adalah kredensial aktif Anda dan tidak dapat lagi disegarkan. Sesi yang diautentikasi dengan cara lain tidak menampilkan baris, bahkan jika login yang kedaluwarsa tetap disimpan. Sebelum v2.1.210, `/status` tidak memberikan indikasi dalam keadaan ini bahwa login pernah ada, karena kredensial yang dihapus meninggalkannya tidak ada untuk dilaporkan.1266Anda dapat memeriksa kondisi ini sebelum permintaan gagal: [`/status`](/docs/id/commands) menampilkan baris `Login` yang berbunyi `Expired — log in again`, ditambah organisasi dan email yang tersimpan untuk login yang kedaluwarsa. Baris ini hanya muncul ketika login tersimpan adalah kredensial aktif Anda dan tidak dapat diperbarui lagi. Sesi yang diautentikasi dengan cara lain tidak menampilkan baris ini, meskipun login yang kedaluwarsa masih tersimpan. Sebelum v2.1.210, `/status` tidak memberikan indikasi apa pun dalam kondisi ini bahwa pernah ada login, karena kredensial yang dihapus tidak menyisakan apa pun untuk dilaporkan.

1261 1267 

1262**Yang harus dilakukan:**1268**Yang harus dilakukan:**

1263 1269 

1264* Jalankan `/login` untuk masuk lagi. Mencoba lagi tanpa masuk menampilkan pesan yang sama pada setiap permintaan.1270* Jalankan `/login` untuk masuk kembali. Mencoba ulang tanpa masuk akan menampilkan pesan yang sama pada setiap permintaan.

1265* Dalam mode non-interaktif, jalankan `claude` di lingkungan yang sama, selesaikan `/login`, kemudian jalankan kembali perintah Anda. Untuk otomasi yang tidak dapat masuk secara interaktif, autentikasi dengan `ANTHROPIC_API_KEY` atau [hasilkan token berumur panjang dengan `claude setup-token`](/docs/id/authentication#generate-a-long-lived-token).1271* Jika Anda masuk dengan akun claude.ai Anda di jendela Claude Code lain, lihat [Belum masuk](#not-logged-in) untuk mengetahui kapan sesi ini mulai menggunakan login tersebut dengan sendirinya.

1272* Dalam mode non-interaktif, jalankan `claude` di lingkungan yang sama, selesaikan `/login`, lalu jalankan ulang perintah Anda. Untuk otomatisasi yang tidak dapat masuk secara interaktif, lakukan autentikasi dengan `ANTHROPIC_API_KEY` atau [buat token berumur panjang dengan `claude setup-token`](/docs/id/authentication#generate-a-long-lived-token).

1266* Jika masuk terus gagal, lihat [Login dan autentikasi](/docs/id/troubleshoot-install#login-and-authentication)1273* Jika masuk terus gagal, lihat [Login dan autentikasi](/docs/id/troubleshoot-install#login-and-authentication)

1267 1274 

1268<h3 id="could-not-refresh-your-login">1275<h3 id="could-not-refresh-your-login">

1269 Tidak dapat menyegarkan login Anda karena proses Claude Code lain menyegarkannya1276 Tidak dapat memperbarui login Anda karena proses Claude Code lain sedang memperbaruinya

1270</h3>1277</h3>

1271 1278 

1272Pesan ini tidak berarti login Anda ditolak. Login claude.ai yang disimpan kedaluwarsa dan perlu diperbarui. Proses Claude Code lain di mesin yang sama menahan kunci penyegaran bersama, atau keluar dan meninggalkannya, dan penyegaran tidak membuat kemajuan saat sesi ini menunggu. Claude Code menghentikan permintaan sebelum mengirimnya:1279Pesan ini tidak berarti login Anda ditolak. Login claude.ai tersimpan Anda telah kedaluwarsa dan perlu diperbarui. Proses Claude Code lain di mesin yang sama memegang kunci pembaruan bersama, atau keluar dan meninggalkannya, dan pembaruan tidak mengalami kemajuan selama sesi ini menunggu. Claude Code menghentikan permintaan sebelum mengirimkannya:

1273 1280 

1274```text theme={null}1281```text theme={null}

1275Could not refresh your login because another Claude Code process is refreshing it (or exited mid-refresh) · Try again in a minute; if it keeps happening, close other Claude Code windows or sign in again with /login1282Could not refresh your login because another Claude Code process is refreshing it (or exited mid-refresh) · Try again in a minute; if it keeps happening, close other Claude Code windows or sign in again with /login

1276```1283```

1277 1284 

1278Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), pesan berbunyi sebagai berikut, dan kode kesalahan terstruktur adalah `server_error`:1285Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), pesannya berbunyi sebagai berikut, dan kode kesalahan terstrukturnya adalah `server_error`:

1279 1286 

1280```text theme={null}1287```text theme={null}

1281Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again1288Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again

1282```1289```

1283 1290 

1284Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login yang disimpan dan tidak pernah melihat pesan ini.1291Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login tersimpan dan tidak pernah melihat pesan ini.

1285 1292 

1286**Yang harus dilakukan:**1293**Yang harus dilakukan:**

1287 1294 

1288* Coba lagi dalam satu menit. Jika proses lain menyelesaikan penyegaran terlebih dahulu, sesi ini menggunakan login yang diperbarui.1295* Coba lagi dalam satu menit. Jika proses lain menyelesaikan pembaruan terlebih dahulu, sesi ini menggunakan login yang telah diperbarui.

1289* Jika pesan terus kembali, tutup jendela dan proses Claude Code lainnya, kemudian coba lagi.1296* Jika pesan terus muncul, tutup jendela dan proses Claude Code lainnya, lalu coba lagi.

1290* Jika kembali tanpa proses Claude Code lain yang berjalan, jalankan `/login`. Masuk lagi tidak menunggu kunci penyegaran.1297* Jika pesan muncul tanpa ada proses Claude Code lain yang berjalan, jalankan `/login`. Masuk kembali tidak menunggu kunci pembaruan.

1291 1298 

1292<h3 id="couldnt-save-your-login">1299<h3 id="couldnt-save-your-login">

1293 Tidak dapat menyimpan login Anda1300 Tidak dapat menyimpan login Anda

1294</h3>1301</h3>

1295 1302 

1296Anda masuk dengan claude.ai, tetapi Claude Code tidak dapat menyimpan login ke penyimpanan kredensialnya, jadi login tidak selesai. Di macOS ini dapat terjadi ketika keychain login terkunci, misalnya saat tidur atau menganggur, setelah Claude Code sudah membaca atau menyimpan kredensial di dalamnya selama sesi yang sama.1303Anda masuk dengan claude.ai, tetapi Claude Code tidak dapat menyimpan login ke penyimpanan kredensialnya, sehingga login tidak selesai. Di macOS, hal ini dapat terjadi ketika keychain login terkunci, misalnya saat sleep atau idle, setelah Claude Code sudah membaca atau menyimpan kredensial di dalamnya selama sesi yang sama.

1297 1304 

1298```text theme={null}1305```text theme={null}

1299Couldn't save your login. If your Mac's keychain is locked, unlock it and log in again.1306Couldn't save your login. If your Mac's keychain is locked, unlock it and log in again.

1300Couldn't save your login. Try logging in again.1307Couldn't save your login. Try logging in again.

1301```1308```

1302 1309 

1303Bentuk pertama muncul di macOS dan yang kedua di mana-mana. Kegagalan penyimpanan kredensial sementara, seperti timeout atau penyimpanan yang tidak dapat dibaca, menghasilkan pesan yang sama.1310Bentuk pertama muncul di macOS dan bentuk kedua di platform lainnya. Kegagalan penyimpanan kredensial yang bersifat sementara, seperti timeout atau penyimpanan yang tidak dapat dibaca, menghasilkan pesan yang sama.

1304 1311 

1305**Yang harus dilakukan:**1312**Yang harus dilakukan:**

1306 1313 

1307* Di macOS, buka kunci keychain login, kemudian jalankan `/login` lagi1314* Di macOS, buka kunci keychain login, lalu jalankan `/login` lagi

1308* Di platform lain, jalankan `/login` lagi1315* Di platform lain, jalankan `/login` lagi

1309* Jika login masih tidak menyimpan, lihat [Belum masuk atau token kedaluwarsa](/docs/id/troubleshoot-install#not-logged-in-or-token-expired) untuk perintah buka kunci keychain dan langkah pemulihan penyimpanan kredensial lainnya1316* Jika login masih tidak tersimpan, lihat [Belum masuk atau token kedaluwarsa](/docs/id/troubleshoot-install#not-logged-in-or-token-expired) untuk perintah membuka kunci keychain dan langkah pemulihan penyimpanan kredensial lainnya

1310 1317 

1311<h3 id="failed-to-start-oauth-callback-server">1318<h3 id="failed-to-start-oauth-callback-server">

1312 Gagal memulai server callback OAuth1319 Gagal memulai server callback OAuth

1313</h3>1320</h3>

1314 1321 

1315Ketika `/login`, `claude auth login`, atau `claude setup-token` menandatangani Anda melalui browser, Claude Code membuka port mendengarkan pada `127.0.0.1` sehingga browser Anda dapat mengembalikan hasil masuk ke sana. Pesan ini berarti Claude Code tidak dapat membuka port itu, dan masuk berhenti sebelum jendela browser atau URL login muncul:1322Ketika `/login`, `claude auth login`, atau `claude setup-token` memasukkan Anda melalui browser, Claude Code membuka port yang mendengarkan di `127.0.0.1` agar browser Anda dapat mengembalikan hasil login kepadanya. Pesan ini berarti Claude Code tidak dapat membuka port tersebut, dan proses masuk berhenti sebelum jendela browser atau URL login muncul:

1316 1323 

1317```text theme={null}1324```text theme={null}

1318Failed to start OAuth callback server: Failed to start server. Is port 0 in use?1325Failed to start OAuth callback server: Failed to start server. Is port 0 in use?

1319```1326```

1320 1327 

1321Jika pesan Anda berakhir dengan `Is port 0 in use?`, upaya untuk mendengarkan pada alamat loopback IPv4 `127.0.0.1` gagal total. Karena kegagalan terjadi sebelum URL login ada, alur `Paste code here if prompted` tidak tersedia sebagai solusi.1328Jika pesan Anda diakhiri dengan `Is port 0 in use?`, upaya untuk mendengarkan di alamat loopback IPv4 `127.0.0.1` gagal sepenuhnya. Karena kegagalan terjadi sebelum URL login ada, alur `Paste code here if prompted` tidak tersedia sebagai solusi alternatif.

1322 1329 

1323**Yang harus dilakukan:**1330**Yang harus dilakukan:**

1324 1331 

1325* Untuk masuk sekarang tanpa pendengar lokal: jika Anda menggunakan langganan claude.ai, jalankan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token) di mesin tempat masuk berfungsi dan atur token yang dicetak sebagai `CLAUDE_CODE_OAUTH_TOKEN` di mesin ini. Jika tidak, atur `ANTHROPIC_API_KEY` ke kunci dari [Claude Console](https://platform.claude.com/settings/keys). [Urutan prioritas autentikasi](/docs/id/authentication#authentication-precedence) menjelaskan bagaimana Claude Code memilih antara kredensial.1332* Untuk langsung masuk tanpa listener lokal: jika Anda menggunakan langganan claude.ai, jalankan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token) di mesin tempat proses masuk berfungsi dan atur token yang dicetaknya sebagai `CLAUDE_CODE_OAUTH_TOKEN` di mesin ini. Jika tidak, atur `ANTHROPIC_API_KEY` ke kunci dari [Claude Console](https://platform.claude.com/settings/keys). [Prioritas autentikasi](/docs/id/authentication#authentication-precedence) menjelaskan cara Claude Code memilih di antara kredensial.

1326* Untuk menggunakan masuk browser di mesin ini sebagai gantinya, Claude Code harus dapat mendengarkan pada `127.0.0.1`. Jika berjalan di dalam sandbox, periksa bahwa kebijakan sandbox memungkinkan mendengarkan pada port lokal, kemudian jalankan `/login` lagi. Jika seharusnya dapat dan masih gagal, jalankan `/feedback` sehingga laporan mencakup detail lingkungan Anda.1333* Untuk menggunakan login browser di mesin ini, Claude Code harus dapat mendengarkan di `127.0.0.1`. Jika Claude Code berjalan di dalam sandbox, periksa apakah kebijakan sandbox mengizinkan mendengarkan di port lokal, lalu jalankan `/login` lagi. Jika seharusnya bisa dan masih gagal, jalankan `/feedback` agar laporan menyertakan detail lingkungan Anda.

1327 1334 

1328<h3 id="claude-login-not-accepted">1335<h3 id="claude-login-not-accepted">

1329 Login Claude tidak diterima1336 Login Claude tidak diterima

1330</h3>1337</h3>

1331 1338 

1332Anda mencoba memulai [sesi cloud](/docs/id/claude-code-on-the-web), dan server menolak untuk membuatnya dengan 401: itu tidak menerima login Claude yang dikirim mesin ini, biasanya karena login kedaluwarsa atau dicabut.1339Anda mencoba memulai [sesi cloud](/docs/id/claude-code-on-the-web), dan server menolak membuatnya dengan 401: server tidak menerima login Claude yang dikirim mesin ini, biasanya karena login telah kedaluwarsa atau dicabut.

1333 1340 

1334Bagian pertama dari baris adalah alasan server sendiri ketika memberikan satu. Jika tidak, baris berbunyi:1341Bagian pertama baris adalah alasan dari server itu sendiri jika server memberikannya. Jika tidak, barisnya berbunyi:

1335 1342 

1336```text theme={null}1343```text theme={null}

1337Claude login not accepted · Run /login, then try again1344Claude login not accepted · Run /login, then try again


1339 1346 

1340**Yang harus dilakukan:**1347**Yang harus dilakukan:**

1341 1348 

1342* Jalankan `/login`, selesaikan masuk, kemudian mulai sesi lagi1349* Jalankan `/login`, selesaikan proses masuk, lalu mulai sesi lagi

1343 1350 

1344<h3 id="artifacts-need-a-claude-ai-login">1351<h3 id="artifacts-need-a-claude-ai-login">

1345 Artefak memerlukan login claude.ai1352 Artifact memerlukan login claude.ai

1346</h3>1353</h3>

1347 1354 

1348Claude Code menolak publikasi atau pembacaan [artefak](/docs/id/artifacts) karena sesi tidak memiliki login claude.ai yang dapat digunakan untuk artefak.1355Claude Code menolak publikasi atau pembacaan [artifact](/docs/id/artifacts) karena sesi tidak memiliki login claude.ai yang dapat digunakan untuk artifact.

1349 1356 

1350Setiap bentuk pesan dimulai dengan kata-kata yang sama, diikuti dengan solusi yang tergantung pada cara sesi Anda autentikasi. Tanpa kredensial yang bersaing, itu berbunyi:1357Setiap bentuk pesan diawali dengan kata-kata yang sama, diikuti dengan solusi yang bergantung pada cara sesi Anda diautentikasi. Tanpa kredensial yang bersaing, pesannya berbunyi:

1351 1358 

1352```text theme={null}1359```text theme={null}

1353Artifacts need a claude.ai login. Run /login and select "Claude account with subscription", then retry — the "Anthropic Console account" option does not provide claude.ai credentials.1360Artifacts need a claude.ai login. Run /login and select "Claude account with subscription", then retry — the "Anthropic Console account" option does not provide claude.ai credentials.


1356**Yang harus dilakukan:**1363**Yang harus dilakukan:**

1357 1364 

1358* Jalankan `/login` dan pilih **Claude account with subscription**. Opsi **Anthropic Console account** tidak menyediakan kredensial claude.ai.1365* Jalankan `/login` dan pilih **Claude account with subscription**. Opsi **Anthropic Console account** tidak menyediakan kredensial claude.ai.

1359* Ketika pesan menamai kredensial yang mengambil prioritas, seperti `ANTHROPIC_API_KEY`, pengaturan `apiKeyHelper`, atau kunci Console yang disimpan oleh `/login` sebelumnya, hapus dengan cara yang dikatakan pesan, kemudian jalankan `/login`1366* Ketika pesan menyebutkan kredensial yang diutamakan, seperti `ANTHROPIC_API_KEY`, pengaturan `apiKeyHelper`, atau kunci Console yang disimpan oleh `/login` sebelumnya, hapus kredensial tersebut sesuai petunjuk pesan, lalu jalankan `/login`

1360* Ketika pesan mengatakan sesi jarak jauh ini autentikasi melalui mesin yang meluncurkannya, masuk ke claude.ai di mesin itu, kemudian hubungkan kembali sesi1367* Ketika pesan menyebutkan bahwa sesi jarak jauh ini diautentikasi melalui mesin yang meluncurkannya, masuk ke claude.ai di mesin tersebut, lalu sambungkan ulang sesi

1361* Ketika pesan mengatakan kredensial disuntikkan oleh lingkungan host sesi, Anda tidak dapat mengubahnya dalam sesi itu; mulai sesi yang masuk ke claude.ai1368* Ketika pesan menyebutkan bahwa kredensial disuntikkan oleh lingkungan host sesi, Anda tidak dapat mengubahnya di sesi tersebut; mulai sesi yang telah masuk ke claude.ai

1362* Lihat [Ketersediaan](/docs/id/artifacts#availability) untuk persyaratan lain yang dimiliki artefak, seperti rencana, penyedia model, dan kebijakan organisasi1369* Lihat [Ketersediaan](/docs/id/artifacts#availability) untuk persyaratan lain yang dimiliki artifact, seperti paket, penyedia model, dan kebijakan organisasi

1363 1370 

1364<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">1371<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">

1365 Kebijakan administrator memerlukan masuk Cloud gateway1372 Kebijakan administrator mengharuskan login Cloud gateway

1366</h3>1373</h3>

1367 1374 

1368Pengaturan [managed settings](/docs/id/managed-settings) administrator di mesin ini menetapkan [`forceLoginMethod`](/docs/id/settings-reference#forceloginmethod) ke `"gateway"` atau menetapkan [`forceLoginGatewayUrl`](/docs/id/settings-reference#forcelogingatewayurl). Kecuali Anda memilih penyedia cloud melalui variabel seperti `CLAUDE_CODE_USE_BEDROCK`, Claude Code kemudian hanya menerima masuk [gateway aplikasi Claude](/docs/id/claude-apps-gateway). Anda melihat salah satu dari dua pesan:1375[Pengaturan terkelola](/docs/id/managed-settings) administrator di mesin ini mengatur [`forceLoginMethod`](/docs/id/settings-reference#forceloginmethod) ke `"gateway"` atau mengatur [`forceLoginGatewayUrl`](/docs/id/settings-reference#forcelogingatewayurl). Kecuali Anda memilih penyedia cloud melalui variabel seperti `CLAUDE_CODE_USE_BEDROCK`, Claude Code kemudian hanya menerima login [Claude apps gateway](/docs/id/claude-apps-gateway). Anda akan melihat salah satu dari dua pesan:

1369 1376 

1370```text theme={null}1377```text theme={null}

1371Not signed in to the Cloud gateway — run /login.1378Not signed in to the Cloud gateway — run /login.

1372```1379```

1373 1380 

1374Permintaan model gagal dengan pesan ini ketika sesi tidak memiliki masuk gateway, misalnya karena Anda belum menjalankan `/login` sejak kebijakan mencapai mesin.1381Permintaan model gagal dengan pesan ini ketika sesi tidak memiliki login gateway, misalnya karena Anda belum menjalankan `/login` sejak kebijakan tersebut mencapai mesin.

1375 1382 

1376Jika mesin juga menyimpan kredensial yang diterbitkan Anthropic dan pengaturan yang dikelola menetapkan `forceLoginMethod` atau `forceLoginOrgUUID`, Claude Code keluar saat startup sebagai gantinya. Kredensial itu dapat berupa variabel `ANTHROPIC_API_KEY` atau `ANTHROPIC_AUTH_TOKEN`, pengaturan `apiKeyHelper`, atau kunci API yang disimpan oleh login Claude Console sebelumnya. Pesan dimulai:1383Jika mesin juga menyimpan kredensial yang diterbitkan Anthropic dan pengaturan terkelola mengatur `forceLoginMethod` atau `forceLoginOrgUUID`, Claude Code keluar saat startup. Kredensial tersebut dapat berupa variabel `ANTHROPIC_API_KEY` atau `ANTHROPIC_AUTH_TOKEN`, pengaturan `apiKeyHelper`, atau kunci API yang disimpan oleh login Claude Console sebelumnya. Pesannya diawali dengan:

1377 1384 

1378```text theme={null}1385```text theme={null}

1379Administrator policy requires a Cloud gateway sign-in on this machine; the1386Administrator policy requires a Cloud gateway sign-in on this machine; the


1383 1390 

1384**Yang harus dilakukan:**1391**Yang harus dilakukan:**

1385 1392 

1386* Jalankan `/login` dan selesaikan masuk di layar **Cloud gateway**1393* Jalankan `/login` dan selesaikan proses masuk di layar **Cloud gateway**

1387* Untuk pesan startup, hapus `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau pengaturan `apiKeyHelper` yang Anda konfigurasikan. Untuk menghapus kunci API Console yang disimpan, jalankan `claude auth logout`, yang juga menghapus login claude.ai yang disimpan. Jika Anda memilih penyedia cloud dengan `CLAUDE_CODE_USE_*`, sesi kemudian dimulai tanpa masuk. Jika tidak, mulai `claude` dan jalankan `/login`1394* Untuk pesan startup, hapus pengaturan `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` yang Anda konfigurasikan. Untuk menghapus kunci API Console yang tersimpan, jalankan `claude auth logout`, yang juga menghapus login claude.ai yang tersimpan. Jika Anda memilih penyedia cloud dengan `CLAUDE_CODE_USE_*`, sesi kemudian dimulai tanpa login. Jika tidak, mulai `claude` dan jalankan `/login`

1388* Jika Anda percaya mesin tidak boleh memerlukan gateway, minta administrator yang mengelolanya untuk menghapus `forceLoginMethod` dan `forceLoginGatewayUrl` dari pengaturan yang dikelolanya1395* Jika Anda yakin mesin tersebut seharusnya tidak mengharuskan gateway, minta administrator yang mengelolanya untuk menghapus `forceLoginMethod` dan `forceLoginGatewayUrl` dari pengaturan terkelolanya

1389 1396 

1390Pada v2.1.265, regresi juga menampilkan pesan pertama dalam beberapa konfigurasi gateway LLM dan proxy yang autentikasi dengan kunci API, `apiKeyHelper`, atau header khusus, bahkan tanpa persyaratan administrator di mesin. Perbarui ke v2.1.266 atau lebih baru. Anda tidak perlu mengubah konfigurasi Anda.1397Pada v2.1.265, sebuah regresi juga menampilkan pesan pertama di beberapa konfigurasi LLM gateway dan proxy yang melakukan autentikasi dengan kunci API, `apiKeyHelper`, atau header kustom, bahkan tanpa persyaratan administrator di mesin tersebut. Perbarui ke v2.1.266 atau yang lebih baru. Anda tidak perlu mengubah konfigurasi Anda.

1391 1398 

1392Sebelum v2.1.261, pada mesin yang menetapkan `forceLoginMethod` ke `"gateway"`, Claude Code menggunakan login yang disimpan sisa daripada gagal permintaan model, dan melaporkan kredensial lingkungan yang dikonfigurasi dengan `This machine's managed settings require a first-party login` daripada pesan startup. Sebelum v2.1.265, mesin yang pengaturan yang dikelolanya hanya menetapkan `forceLoginGatewayUrl` tidak memerlukan masuk gateway, dan Claude Code menggunakan kredensial sisa di sana.1399Sebelum v2.1.261, pada mesin yang mengatur `forceLoginMethod` ke `"gateway"`, Claude Code menggunakan login tersimpan yang tersisa alih-alih menggagalkan permintaan model, dan melaporkan kredensial lingkungan yang dikonfigurasi dengan `This machine's managed settings require a first-party login` alih-alih pesan startup. Sebelum v2.1.265, mesin yang pengaturan terkelolanya hanya mengatur `forceLoginGatewayUrl` tidak mengharuskan login gateway, dan Claude Code menggunakan kredensial yang tersisa di sana.

1393 1400 

1394<h3 id="your-account-is-on-hold">1401<h3 id="your-account-is-on-hold">

1395 Akun Anda ditahan1402 Akun Anda ditangguhkan

1396</h3>1403</h3>

1397 1404 

1398Akun Claude di balik login Anda telah ditangguhkan. Claude Code menampilkan pesan pertama ketika mencoba memperbarui login yang disimpan dan mempelajari tentang penahan, dan yang kedua ketika masuk yang Anda selesaikan di browser melaporkannya:1405Akun Claude di balik login Anda telah ditangguhkan. Claude Code menampilkan pesan pertama ketika mencoba memperbarui login tersimpan Anda dan mengetahui adanya penangguhan, dan pesan kedua ketika proses masuk yang Anda selesaikan di browser melaporkannya:

1399 1406 

1400```text theme={null}1407```text theme={null}

1401Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted1408Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted

1402Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted1409Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted

1403```1410```

1404 1411 

1405Masuk lagi dengan akun yang sama tidak menghapus pesan, karena penahan ada di akun daripada login. Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), kode kesalahan terstruktur adalah `account_on_hold`. Sebelum v2.1.235, Claude Code melaporkan akun yang ditahan sebagai [Login kedaluwarsa · Jalankan /login](#login-expired), yang langkah pemulihannya tidak dapat menghapus penahan.1412Masuk kembali dengan akun yang sama tidak menghilangkan pesan ini, karena penangguhan berlaku pada akun, bukan pada login. Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), kode kesalahan terstrukturnya adalah `account_on_hold`. Sebelum v2.1.235, Claude Code melaporkan akun yang ditangguhkan sebagai [Login expired · Please run /login](#login-expired), yang langkah pemulihannya tidak dapat menghapus penangguhan.

1406 1413 

1407**Yang harus dilakukan:**1414**Yang harus dilakukan:**

1408 1415 

1409* Buka tautan dalam pesan untuk melihat detail penahan atau mengajukan banding1416* Buka tautan di pesan untuk melihat detail penangguhan atau mengajukan banding

1410* Jika Anda memiliki akun Claude lain atau kunci API yang tidak terpengaruh oleh penahan, Anda dapat terus bekerja saat penahan diselesaikan: jalankan `/login` dengan akun itu, atau atur kunci dengan `ANTHROPIC_API_KEY`1417* Jika Anda memiliki akun Claude lain atau kunci API yang tidak terpengaruh oleh penangguhan, Anda dapat terus bekerja selama penangguhan diselesaikan: jalankan `/login` dengan akun tersebut, atau atur kunci dengan `ANTHROPIC_API_KEY`

1411 1418 

1412<h3 id="anthropic-profile-login-expired">1419<h3 id="anthropic-profile-login-expired">

1413 Login profil Anthropic kedaluwarsa1420 Login profil Anthropic kedaluwarsa

1414</h3>1421</h3>

1415 1422 

1416Claude Code autentikasi melalui profil kredensial Anthropic yang kredensial login yang disimpannya kedaluwarsa, dan profil tidak menyimpan kredensial penyegaran yang dapat digunakan Claude Code untuk memperbarui. Claude Code menghentikan setiap permintaan secara lokal tanpa mencoba ulang, karena percobaan ulang akan membaca kredensial yang sama yang kedaluwarsa.1423Claude Code melakukan autentikasi melalui profil kredensial Anthropic yang kredensial login tersimpannya telah kedaluwarsa, dan profil tersebut tidak menyimpan kredensial pembaruan yang dapat digunakan Claude Code untuk memperbaruinya. Claude Code menghentikan setiap permintaan secara lokal tanpa mencoba ulang, karena retry akan membaca kredensial kedaluwarsa yang sama.

1417 1424 

1418```text theme={null}1425```text theme={null}

1419Anthropic profile login expired · Re-authenticate your Anthropic profile1426Anthropic profile login expired · Re-authenticate your Anthropic profile

1420Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile1427Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile

1421```1428```

1422 1429 

1423Ini muncul hanya ketika kredensial aktif berasal dari profil kredensial Anthropic, yang Anda pilih dengan variabel lingkungan `ANTHROPIC_PROFILE`, yang Claude Code temukan sebagai profil aktif di direktori konfigurasi Anthropic Anda, atau yang Claude Code tulis ketika Anda [masuk tanpa kunci API](/docs/id/authentication#sign-in-without-an-api-key). Sesi yang autentikasi dengan opsi claude.ai `/login`, kunci API, token pembawa seperti `ANTHROPIC_AUTH_TOKEN`, atau penyedia pihak ketiga tidak pernah melihat pesan ini.1430Pesan ini hanya muncul ketika kredensial aktif berasal dari profil kredensial Anthropic, yaitu profil yang Anda pilih dengan environment variable `ANTHROPIC_PROFILE`, yang ditemukan Claude Code sebagai profil aktif di direktori konfigurasi Anthropic Anda, atau yang ditulis Claude Code ketika Anda [masuk tanpa kunci API](/docs/id/authentication#sign-in-without-an-api-key). Sesi yang diautentikasi dengan kunci API, bearer token seperti `ANTHROPIC_AUTH_TOKEN`, atau penyedia pihak ketiga tidak pernah melihat pesan ini.

1424 1431 

1425Di mesin yang [menawarkan masuk tanpa kunci](/docs/id/authentication#sign-in-without-an-api-key), jalankan `/login`, pilih akun Anthropic Console, dan masuk lagi untuk memperbarui profil yang ditulis oleh masuk Console tanpa kunci atau CLI Platform Claude `ant auth login`. Claude Code mengganti kredensial yang kedaluwarsa dalam profil itu. Untuk profil federasi atau yang dibuat alat lain, `/login` tidak memperbarui kredensial. Bentuk mana yang Anda lihat tergantung pada apakah Anda memilih profil atau Claude Code menemukannya:1432Pada mesin yang [menawarkan login tanpa kunci](/docs/id/authentication#sign-in-without-an-api-key), jalankan `/login`, pilih akun Anthropic Console, dan masuk kembali untuk memperbarui profil yang ditulis oleh login Console tanpa kunci atau oleh `ant auth login` dari Claude Platform CLI. Claude Code mengganti kredensial yang kedaluwarsa di profil tersebut. Untuk profil federasi atau profil yang dibuat oleh alat lain, `/login` tidak memperbarui kredensial. Bentuk yang Anda lihat bergantung pada apakah Anda memilih profil tersebut atau Claude Code menemukannya:

1426 1433 

1427* Ketika Anda menetapkan `ANTHROPIC_PROFILE` secara eksplisit, pesan berakhir dengan `Re-authenticate your Anthropic profile`.1434* Ketika Anda mengatur `ANTHROPIC_PROFILE` secara eksplisit, pesan diakhiri dengan `Re-authenticate your Anthropic profile`.

1428* Ketika Claude Code menemukan profil dari direktori konfigurasi Anda, pesan menawarkan `/login`, karena Claude Code memberikan prioritas `/login` yang berfungsi atas profil yang ditemukan dan kemudian autentikasi dengan akun claude.ai atau Console Anda sebagai gantinya. Sebelum v2.1.234, Claude Code menampilkan bentuk `Re-authenticate your Anthropic profile` dalam kasus ini juga.1435* Ketika Claude Code menemukan profil dari direktori konfigurasi Anda, pesan menawarkan `/login`, karena Claude Code mengutamakan `/login` yang berfungsi daripada profil yang ditemukan, lalu melakukan autentikasi dengan akun claude.ai atau Console Anda. Sebelum v2.1.234, Claude Code menampilkan bentuk `Re-authenticate your Anthropic profile` dalam kasus ini juga.

1429 1436 

1430**Yang harus dilakukan:**1437**Yang harus dilakukan:**

1431 1438 

1432* Masuk ke profil lagi, kemudian coba ulang: di mesin yang [menawarkan masuk tanpa kunci](/docs/id/authentication#sign-in-without-an-api-key), jalankan `/login` dan pilih akun Anthropic Console untuk profil yang ditulis oleh masuk Console tanpa kunci atau CLI Platform Claude `ant auth login`; untuk profil lain, gunakan alat yang membuatnya1439* Masuk kembali ke profil, lalu coba lagi: pada mesin yang [menawarkan login tanpa kunci](/docs/id/authentication#sign-in-without-an-api-key), jalankan `/login` dan pilih akun Anthropic Console untuk profil yang ditulis oleh login Console tanpa kunci atau oleh `ant auth login` dari Claude Platform CLI; untuk profil lain, gunakan alat yang membuatnya

1433* Jika administrator memprovisikan kredensial profil, minta mereka untuk mengeluarkan yang baru1440* Jika administrator menyediakan kredensial profil tersebut, minta mereka untuk menerbitkan yang baru

1434* Jalankan `/status` untuk mengonfirmasi sumber kredensial aktif dan nama profil1441* Jalankan `/status` untuk memastikan sumber kredensial aktif dan nama profil

1435* Untuk berhenti menggunakan profil, batalkan pengaturan `ANTHROPIC_PROFILE` jika Anda menetapkannya, kemudian autentikasi dengan cara lain, seperti `/login` atau `ANTHROPIC_API_KEY`1442* Untuk berhenti menggunakan profil, hapus pengaturan `ANTHROPIC_PROFILE` jika Anda mengaturnya, lalu lakukan autentikasi dengan cara lain, seperti `/login` atau `ANTHROPIC_API_KEY`

1436 1443 

1437<h3 id="oauth-scope-requirement">1444<h3 id="oauth-scope-requirement">

1438 Persyaratan cakupan OAuth1445 Persyaratan scope OAuth

1439</h3>1446</h3>

1440 1447 

1441Token yang disimpan mendahului cakupan izin yang diperlukan fitur yang lebih baru:1448Token tersimpan dibuat sebelum adanya scope izin yang dibutuhkan oleh fitur yang lebih baru:

1442 1449 

1443```text theme={null}1450```text theme={null}

1444OAuth token does not meet scope requirement: user:profile1451OAuth token does not meet scope requirement: user:profile


1446 1453 

1447**Yang harus dilakukan:**1454**Yang harus dilakukan:**

1448 1455 

1449* Jalankan `/login` untuk mendapatkan token baru dengan cakupan saat ini. Anda tidak perlu keluar terlebih dahulu.1456* Jalankan `/login` untuk mendapatkan token baru dengan scope saat ini. Anda tidak perlu keluar terlebih dahulu.

1450 1457 

1451<h3 id="claude-ai-rejected-the-session-token">1458<h3 id="claude-ai-rejected-the-session-token">

1452 claude.ai menolak token sesi1459 claude.ai menolak token sesi

1453</h3>1460</h3>

1454 1461 

1455Permintaan [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) gagal karena claude.ai menolak token dari login Claude Code Anda. Token yang ditolak adalah login Anda, bukan otorisasi konektor sendiri di claude.ai, jadi mengotorisasi konektor lagi tidak menyelesaikannya. Dalam `/mcp`, konektor menampilkan sebagai `session token rejected` dan tampilan detailnya berbunyi:1462Permintaan [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) gagal karena claude.ai menolak token dari login Claude Code Anda. Token yang ditolak adalah login Anda, bukan otorisasi konektor itu sendiri di claude.ai, sehingga mengotorisasi ulang konektor tidak menyelesaikannya. Di `/mcp`, konektor ditampilkan sebagai `session token rejected` dan tampilan detailnya berbunyi:

1456 1463 

1457```text theme={null}1464```text theme={null}

1458claude.ai rejected the session token. Run /login, then reconnect.1465claude.ai rejected the session token. Run /login, then reconnect.


1460 1467 

1461**Yang harus dilakukan:**1468**Yang harus dilakukan:**

1462 1469 

1463* Jalankan `/login` untuk masuk lagi1470* Jalankan `/login` untuk masuk kembali

1464* Hubungkan kembali konektor dari `/mcp`, atau jalankan `/mcp reconnect <server>`. Menghubungkan kembali sebelum Anda masuk lagi meninggalkan konektor dalam keadaan yang sama. Opsi **Reconnect** panel `/mcp` melaporkan `your claude.ai session token was rejected`; bentuk `/mcp reconnect <server>` yang diketik melaporkan reconnect yang berhasil meskipun token masih ditolak.1471* Sambungkan ulang konektor dari `/mcp`, atau jalankan `/mcp reconnect <server>`. Menyambung ulang sebelum Anda masuk kembali akan membiarkan konektor dalam kondisi yang sama. Opsi **Reconnect** di panel `/mcp` melaporkan `your claude.ai session token was rejected`; bentuk `/mcp reconnect <server>` yang diketik melaporkan penyambungan ulang yang berhasil meskipun token masih ditolak.

1465 1472 

1466Sebelum v2.1.222, Claude Code menandai konektor sebagai memerlukan autentikasi sebagai gantinya, yang menunjukkan Anda pada alur otorisasi konektor meskipun menyelesaikannya tidak menyelesaikan keadaan.1473Sebelum v2.1.222, Claude Code menandai konektor sebagai memerlukan autentikasi, yang mengarahkan Anda ke alur otorisasi konektor meskipun menyelesaikannya tidak menyelesaikan kondisi tersebut.

1467 1474 

1468<h3 id="mcp-server-needs-you-to-sign-in-again">1475<h3 id="mcp-server-needs-you-to-sign-in-again">

1469 Server MCP memerlukan Anda untuk masuk lagi1476 Server MCP mengharuskan Anda masuk kembali

1470</h3>1477</h3>

1471 1478 

1472Server [MCP](/docs/id/mcp) jarak jauh menolak kredensial pada panggilan alat di tengah sesi, biasanya karena masuk atau token kedaluwarsa atau karena token kekurangan izin yang diperlukan alat. Panggilan alat gagal, dan `/mcp` menandai server sebagai [memerlukan autentikasi](/docs/id/mcp#authenticate-with-remote-mcp-servers).1479[Server MCP](/docs/id/mcp) jarak jauh menolak kredensial pada panggilan tool di tengah sesi, biasanya karena login atau token telah kedaluwarsa atau karena token tidak memiliki izin yang dibutuhkan tool tersebut. Panggilan tool gagal, dan `/mcp` menandai server sebagai [memerlukan autentikasi](/docs/id/mcp#authenticate-with-remote-mcp-servers).

1473 1480 

1474Untuk server yang Anda masuki dari Claude Code, termasuk konektor claude.ai, masuk kedaluwarsa atau dicabut:1481Untuk server yang Anda masuki dari Claude Code, termasuk konektor claude.ai, login telah kedaluwarsa atau dicabut:

1475 1482 

1476```text theme={null}1483```text theme={null}

1477MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)1484MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)

1478```1485```

1479 1486 

1480Jalankan `/mcp`, pilih server, dan masuk lagi dari menunya.1487Jalankan `/mcp`, pilih server, dan masuk kembali dari menunya.

1481 1488 

1482Untuk server yang dikonfigurasi dengan skrip [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication), Claude Code sudah menjalankan kembali helper dan mencoba ulang panggilan sekali sebelum menampilkan ini:1489Untuk server yang dikonfigurasi dengan skrip [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication), Claude Code telah menjalankan ulang helper dan mencoba ulang panggilan sekali sebelum menampilkan ini:

1483 1490 

1484```text theme={null}1491```text theme={null}

1485MCP server "<name>" rejected the credential from its headersHelper (check the helper and run /mcp to reconnect, or to authenticate if the server also uses OAuth)1492MCP server "<name>" rejected the credential from its headersHelper (check the helper and run /mcp to reconnect, or to authenticate if the server also uses OAuth)

1486```1493```

1487 1494 

1488Periksa bahwa helper mengembalikan kredensial yang diterima server, kemudian hubungkan kembali dari `/mcp`, yang menjalankan helper lagi.1495Periksa apakah helper mengembalikan kredensial yang diterima server, lalu sambungkan ulang dari `/mcp`, yang menjalankan helper lagi.

1489 1496 

1490Untuk server dengan header `Authorization` statis dalam konfigurasinya:1497Untuk server dengan header `Authorization` statis dalam konfigurasinya:

1491 1498 


1493MCP server "<name>" rejected the Authorization header in its config (update it, then run /mcp to reconnect)1500MCP server "<name>" rejected the Authorization header in its config (update it, then run /mcp to reconnect)

1494```1501```

1495 1502 

1496Perbarui nilai header tempat server dikonfigurasi, kemudian hubungkan kembali dari `/mcp`.1503Perbarui nilai header di tempat server dikonfigurasi, lalu sambungkan ulang dari `/mcp`.

1497 1504 

1498Sebelum v2.1.273, kasus masuk yang kedaluwarsa, `headersHelper`, dan header `Authorization` semuanya menampilkan `MCP server "<name>" requires re-authorization (token expired)`.1505Sebelum v2.1.273, kasus login kedaluwarsa, `headersHelper`, dan header `Authorization` semuanya menampilkan `MCP server "<name>" requires re-authorization (token expired)`.

1499 1506 

1500Server juga dapat menolak panggilan alat dengan HTTP 403 `insufficient_scope` untuk meminta Anda mengotorisasi cakupan, kadang-kadang yang sudah tercantum dalam token Anda. Pesan menamai cakupan itu:1507Server juga dapat menolak panggilan tool dengan HTTP 403 `insufficient_scope` untuk meminta Anda mengotorisasi suatu scope, terkadang scope yang sudah tercantum dalam token Anda. Pesan menyebutkan scope tersebut:

1501 1508 

1502```text theme={null}1509```text theme={null}

1503MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate1510MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate

1504```1511```

1505 1512 

1506Jalankan `/mcp`, pilih server, dan autentikasi lagi dari menunya.1513Jalankan `/mcp`, pilih server, dan lakukan autentikasi ulang dari menunya.

1507 1514 

1508Ketika konfigurasi server tidak menetapkan [`oauth.scopes`](/docs/id/mcp#restrict-oauth-scopes) atau [`authServerMetadataUrl`](/docs/id/mcp#override-oauth-metadata-discovery), Claude Code meminta cakupan yang dinamai server. Dengan pengaturan apa pun, Claude Code meminta cakupan pengaturan itu sebagai gantinya. Jika Anda menyematkan `oauth.scopes`, tambahkan cakupan yang hilang ke daftar itu sebelum Anda autentikasi lagi.1515Ketika konfigurasi server tidak mengatur [`oauth.scopes`](/docs/id/mcp#restrict-oauth-scopes) maupun [`authServerMetadataUrl`](/docs/id/mcp#override-oauth-metadata-discovery), Claude Code meminta scope yang disebutkan server. Dengan salah satu pengaturan tersebut, Claude Code meminta scope dari pengaturan tersebut. Jika Anda menetapkan `oauth.scopes`, tambahkan scope yang kurang ke daftar tersebut sebelum Anda melakukan autentikasi ulang.

1509 1516 

1510Sebelum v2.1.274, kasus ini menampilkan pesan `needs you to sign in again`, dan sebelum v2.1.273 itu menampilkan `requires re-authorization (token expired)` seperti kasus lainnya.1517Sebelum v2.1.274, kasus ini menampilkan pesan `needs you to sign in again`, dan sebelum v2.1.273 kasus ini menampilkan `requires re-authorization (token expired)` seperti kasus lainnya.

1511 1518 

1512<h3 id="mcp-server-url-is-missing-or-not-a-valid-url">1519<h3 id="mcp-server-url-is-missing-or-not-a-valid-url">

1513 URL server MCP hilang atau bukan URL yang valid1520 URL server MCP tidak ada atau bukan URL yang valid

1514</h3>1521</h3>

1515 1522 

1516Claude Code menolak untuk memulai masuk OAuth untuk server MCP jarak jauh karena `url` server yang dikonfigurasi tidak diuraikan sebagai URL. Kecuali Claude Code memiliki masalah konfigurasi yang lebih spesifik untuk dilaporkan untuk server, menjalankan [`claude mcp login <name>`](/docs/id/mcp#authenticate-from-the-command-line) di shell Anda mencetak penolakan sebagai:1523Claude Code menolak memulai login OAuth untuk server MCP jarak jauh karena `url` yang dikonfigurasi untuk server tersebut tidak dapat diurai sebagai URL. Kecuali Claude Code memiliki masalah konfigurasi yang lebih spesifik untuk dilaporkan bagi server tersebut, menjalankan [`claude mcp login <name>`](/docs/id/mcp#authenticate-from-the-command-line) di shell Anda mencetak penolakan tersebut sebagai:

1517 1524 

1518```text theme={null}1525```text theme={null}

1519Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.1526Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.


1521 1528 

1522**Yang harus dilakukan:**1529**Yang harus dilakukan:**

1523 1530 

1524* Atur entri `url` ke titik akhir server yang sebenarnya tempat server dikonfigurasi, atau atur variabel lingkungan yang dirujuk [`${VAR}`](/docs/id/mcp#environment-variable-expansion-in-mcp-json)-nya, kemudian jalankan masuk lagi.1531* Atur `url` entri ke endpoint server yang sebenarnya di tempat server dikonfigurasi, atau atur environment variable yang disebutkan oleh [referensi `${VAR}`](/docs/id/mcp#environment-variable-expansion-in-mcp-json)-nya, lalu jalankan proses masuk lagi.

1525 1532 

1526<h3 id="issuer-mismatch-in-authorization-response">1533<h3 id="issuer-mismatch-in-authorization-response">

1527 Ketidaksesuaian penerbit dalam respons otorisasi1534 Ketidakcocokan issuer dalam respons otorisasi

1528</h3>1535</h3>

1529 1536 

1530Selama [masuk OAuth MCP](/docs/id/mcp#authenticate-with-remote-mcp-servers), server otorisasi dialihkan kembali ke Claude Code dengan parameter `iss` yang tidak menamai penerbit yang diharapkan Claude Code dari metadata OAuth server. Penerbit yang salah pada langkah ini adalah bagaimana serangan pencampuran server otorisasi terlihat, jadi Claude Code gagal masuk daripada menukar kode otorisasi. Claude Code menampilkan kesalahan dalam menu server `/mcp` setelah masuk browser:1537Selama [login OAuth MCP](/docs/id/mcp#authenticate-with-remote-mcp-servers), server otorisasi mengalihkan kembali ke Claude Code dengan parameter `iss` yang tidak menyebutkan issuer yang diharapkan Claude Code dari metadata OAuth server. Issuer yang salah pada langkah ini adalah tanda serangan mix-up server otorisasi, sehingga Claude Code menggagalkan proses masuk alih-alih menukarkan kode otorisasi. Claude Code menampilkan kesalahan di menu server `/mcp` setelah proses masuk di browser:

1531 1538 

1532```text theme={null}1539```text theme={null}

1533Issuer mismatch in authorization response (RFC 9207): expected "https://auth.example.com", received "https://other.example.com"1540Issuer mismatch in authorization response (RFC 9207): expected "https://auth.example.com", received "https://other.example.com"

1534```1541```

1535 1542 

1536`expected` adalah penerbit dari metadata OAuth server, dan `received` adalah nilai `iss` yang dibawa pengalihan. Masuk yang pengalihannya tidak membawa parameter `iss` melewati pemeriksaan, kecuali metadata server menetapkan `authorization_response_iss_parameter_supported`, dalam hal ini Claude Code gagal masuk.1543`expected` adalah issuer dari metadata OAuth server, dan `received` adalah nilai `iss` yang dibawa oleh pengalihan. Proses masuk yang pengalihannya tidak membawa parameter `iss` lolos pemeriksaan, kecuali metadata server mengatur `authorization_response_iss_parameter_supported`, yang dalam hal ini Claude Code menggagalkan proses masuk.

1537 1544 

1538**Yang harus dilakukan:**1545**Yang harus dilakukan:**

1539 1546 

1540* Coba masuk lagi dari `/mcp`1547* Coba proses masuk lagi dari `/mcp`

1541* Jika kesalahan berulang, laporkan ke operator server. Perbaikannya adalah sisi server: server otorisasi harus mengembalikan penerbit yang sama dalam parameter `iss` yang diiklankan dalam metadata-nya1548* Jika kesalahan berulang, laporkan ke operator server. Perbaikannya ada di sisi server: server otorisasi harus mengembalikan issuer yang sama di parameter `iss` dengan yang diiklankannya di metadata

1542* Untuk terhubung saat server sedang diperbaiki, mulai Claude Code dengan [`MCP_SDK_GENERATION=v1`](/docs/id/env-vars), yang [runtime](/docs/id/mcp#mcp-client-runtimes)-nya tidak menjalankan pemeriksaan ini. Ini menghapus perlindungan terhadap serangan pencampuran, jadi lebih suka perbaikan sisi server1549* Untuk terhubung selagi server diperbaiki, mulai Claude Code dengan [`MCP_SDK_GENERATION=v1`](/docs/id/env-vars), yang [runtime](/docs/id/mcp#mcp-client-runtimes)-nya tidak menjalankan pemeriksaan ini. Ini menghilangkan perlindungan terhadap serangan mix-up, jadi utamakan perbaikan di sisi server

1543 1550 

1544Sebelum v2.1.232, Claude Code menggunakan runtime v2 hanya dalam peluncuran bertahap atau ketika Anda menetapkan `MCP_SDK_GENERATION=v2`.1551Sebelum v2.1.232, Claude Code hanya menggunakan runtime v2 dalam peluncuran bertahap atau ketika Anda mengatur `MCP_SDK_GENERATION=v2`.

1545 1552 

1546<h3 id="refusing-to-send-credentials-to-non-https-token-endpoint">1553<h3 id="refusing-to-send-credentials-to-non-https-token-endpoint">

1547 Menolak mengirim kredensial ke titik akhir token non-https1554 Menolak mengirim kredensial ke token endpoint non-https

1548</h3>1555</h3>

1549 1556 

1550Pada [runtime v2](/docs/id/mcp#mcp-client-runtimes), Claude Code mengirim permintaan token [OAuth MCP](/docs/id/mcp#authenticate-with-remote-mcp-servers) hanya ke titik akhir token yang disajikan melalui HTTPS atau di `localhost`, `127.0.0.1`, atau `::1`. Pesan ini berarti titik akhir token server bukan keduanya, jadi Claude Code berhenti sebelum mengirim permintaan. Itu terjadi setelah masuk browser, jadi langkah browser berhasil terlebih dahulu, dan lagi setiap kali Claude Code menyegarkan token server.1557Pada [runtime v2](/docs/id/mcp#mcp-client-runtimes), Claude Code mengirim permintaan token [OAuth MCP](/docs/id/mcp#authenticate-with-remote-mcp-servers) hanya ke token endpoint yang dilayani melalui HTTPS atau di `localhost`, `127.0.0.1`, atau `::1`. Pesan ini berarti token endpoint server bukan salah satunya, sehingga Claude Code berhenti sebelum mengirim permintaan. Hal itu terjadi setelah proses masuk di browser, sehingga langkah browser berhasil terlebih dahulu, dan terjadi lagi setiap kali Claude Code memperbarui token server.

1551 1558 

1552Dalam bentuk lengkapnya, pesan berasal dari MCP SDK dan mengutip titik akhir token yang ditolaknya. Dalam log debug, itu mengikuti `Error during auth completion:` untuk masuk atau `Token refresh failed:` untuk penyegaran. Di shell Anda, `claude mcp login <name>` mencetaknya setelah `Couldn't complete authentication for "<name>":`, dan dalam sesi, `/mcp` menampilkannya di bawah menu server:1559Dalam bentuk lengkapnya, pesan ini berasal dari MCP SDK dan mengutip token endpoint yang ditolaknya. Di log debug, pesan ini mengikuti `Error during auth completion:` untuk proses masuk atau `Token refresh failed:` untuk pembaruan. Di shell Anda, `claude mcp login <name>` mencetaknya setelah `Couldn't complete authentication for "<name>":`, dan dalam sesi, `/mcp` menampilkannya di bawah menu server:

1553 1560 

1554```text theme={null}1561```text theme={null}

1555Refusing to send credentials to non-https token endpoint 'http://192.168.1.50:8123/oauth/token'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).1562Refusing to send credentials to non-https token endpoint 'http://192.168.1.50:8123/oauth/token'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).

1556```1563```

1557 1564 

1558Claude Code memperlakukan URL server yang memiliki string kueri atau segmen jalur panjang yang terlihat acak sebagai kemungkinan rahasia. Untuk server seperti itu, itu menyunting kesalahan masuk yang dimunculkan MCP SDK sebelum ditampilkan atau dicatat. Kesalahan ini kemudian berbunyi sebagai nama pendek yang dapat berubah antar rilis, seperti `io`, diikuti oleh `from the MCP SDK for` dan URL server yang disunting. Kesalahan lain dari MCP SDK mengambil bentuk yang sama di sana. Pesan yang disunting hanya dapat menjadi kesalahan ini ketika titik akhir token server adalah `http://` biasa di alamat selain `localhost`, `127.0.0.1`, atau `::1`.1565Claude Code memperlakukan URL server yang memiliki query string atau segmen path panjang yang tampak acak sebagai kemungkinan rahasia. Untuk server semacam itu, Claude Code menyamarkan kesalahan login yang dimunculkan MCP SDK sebelum menampilkan atau mencatatnya ke log. Kesalahan ini kemudian terbaca sebagai nama pendek yang dapat berubah antar rilis, seperti `io`, diikuti dengan `from the MCP SDK for` dan URL server yang disamarkan. Kesalahan lain dari MCP SDK memiliki bentuk yang sama di sana. Pesan yang disamarkan dapat berupa kesalahan ini hanya jika token endpoint server adalah `http://` biasa di alamat selain `localhost`, `127.0.0.1`, atau `::1`.

1559 1566 

1560**Yang harus dilakukan:**1567**Yang harus dilakukan:**

1561 1568 

1562* Sajikan titik akhir token itu melalui HTTPS, misalnya dengan menempatkan server di belakang proxy terbalik atau terowongan yang menghentikan TLS dan mengonfigurasi server untuk mengiklankan alamat `https://`1569* Layani token endpoint tersebut melalui HTTPS, misalnya dengan menempatkan server di belakang reverse proxy atau tunnel yang menangani TLS dan mengonfigurasi server untuk mengiklankan alamat `https://`

1563* Untuk terhubung tanpa mengubah server, mulai Claude Code dengan [`MCP_SDK_GENERATION=v1`](/docs/id/env-vars), yang [runtime](/docs/id/mcp#mcp-client-runtimes)-nya tidak menerapkan aturan ini dan mengirim permintaan token melalui HTTP biasa. Pilihan itu berlangsung sampai Anda keluar dan berlaku untuk setiap server. Runtime v1 juga melewati [pemeriksaan penerbit](#issuer-mismatch-in-authorization-response), jadi lebih suka menyajikan titik akhir melalui HTTPS1570* Untuk terhubung tanpa mengubah server, mulai Claude Code dengan [`MCP_SDK_GENERATION=v1`](/docs/id/env-vars), yang [runtime](/docs/id/mcp#mcp-client-runtimes)-nya tidak menerapkan aturan ini dan mengirim permintaan token melalui HTTP biasa. Pilihan tersebut berlaku hingga Anda keluar dan berlaku untuk setiap server. Runtime v1 juga melewati [pemeriksaan issuer](#issuer-mismatch-in-authorization-response), jadi utamakan melayani endpoint melalui HTTPS

1564 1571 

1565<h3 id="aws-credentials-expired-or-invalid">1572<h3 id="aws-credentials-expired-or-invalid">

1566 Kredensial AWS kedaluwarsa atau tidak valid1573 Kredensial AWS kedaluwarsa atau tidak valid

1567</h3>1574</h3>

1568 1575 

1569Token sesi AWS Anda kedaluwarsa atau ditolak. Pesan ini muncul pada 401 dari [Claude Platform di AWS](/docs/id/claude-platform-on-aws) atau [titik akhir Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint), yang merupakan cara penyedia itu melaporkan token keamanan yang kedaluwarsa.1576Token sesi AWS Anda telah kedaluwarsa atau ditolak. Pesan ini muncul pada 401 dari [Claude Platform on AWS](/docs/id/claude-platform-on-aws) atau [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint), yang merupakan cara penyedia tersebut melaporkan token keamanan yang kedaluwarsa.

1570 1577 

1571Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `AWS credentials expired or invalid` terkemuka:1578Petunjuk tindakan di bagian tengah bervariasi sesuai penyiapan Anda. Bagian yang tetap adalah `AWS credentials expired or invalid` di awal:

1572 1579 

1573```text theme={null}1580```text theme={null}

1574AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...1581AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...

1575```1582```

1576 1583 

1577Sebelum v2.1.273, pesan ini muncul hanya ketika `awsAuthRefresh` dikonfigurasi.1584Sebelum v2.1.273, pesan ini hanya muncul ketika `awsAuthRefresh` dikonfigurasi.

1578 1585 

1579**Yang harus dilakukan:**1586**Yang harus dilakukan:**

1580 1587 

1581* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1588* Jika petunjuk menyebutkan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1582* Jika [`awsAuthRefresh`](/docs/id/amazon-bedrock#advanced-credential-configuration) diatur, jalankan perintah yang dinamai dalam pesan, seperti `aws sso login --profile myprofile`, di terminal lain dan selesaikan masuk browser, kemudian coba ulang. Jika tidak, segarkan kredensial AWS yang Anda gunakan sendiri: masuk SSO, kunci akses, kunci API, atau token proxy Anda1589* Jika [`awsAuthRefresh`](/docs/id/amazon-bedrock#advanced-credential-configuration) diatur, jalankan perintah yang disebutkan dalam pesan, seperti `aws sso login --profile myprofile`, di terminal lain dan selesaikan proses masuk di browser, lalu coba lagi. Jika tidak, perbarui sendiri kredensial AWS yang Anda gunakan: login SSO, access key, kunci API, atau token proxy Anda

1583* Dengan `awsAuthRefresh` diatur dalam sesi interaktif, Anda dapat menjalankan `/login`, pilih **3rd-party platform**, kemudian pilih **Claude Platform on AWS · refresh credentials** di bawah **Using 3rd-party platforms** untuk menjalankan perintah yang sama tanpa memulai ulang Claude Code. Lihat [Konfigurasi kredensial AWS](/docs/id/claude-platform-on-aws#1-configure-aws-credentials)1590* Dengan `awsAuthRefresh` diatur dalam sesi interaktif, Anda dapat menjalankan `/login`, memilih **3rd-party platform**, lalu memilih **Claude Platform on AWS · refresh credentials** di bawah **Using 3rd-party platforms** untuk menjalankan perintah yang sama tanpa memulai ulang Claude Code. Lihat [Mengonfigurasi kredensial AWS](/docs/id/claude-platform-on-aws#1-configure-aws-credentials)

1584* Jika kesalahan berulang setelah perintah penyegaran berhasil, konfirmasi identitas valid di luar Claude Code dengan `aws sts get-caller-identity` di shell dan profil yang sama1591* Jika kesalahan berulang setelah perintah pembaruan berhasil, pastikan identitas valid di luar Claude Code dengan `aws sts get-caller-identity` di shell dan profil yang sama

1585 1592 

1586<h3 id="aws-authentication-failed">1593<h3 id="aws-authentication-failed">

1587 Autentikasi AWS gagal1594 Autentikasi AWS gagal


1589 1596 

1590Penyedia AWS Anda mengembalikan 403, atau [Amazon Bedrock](/docs/id/amazon-bedrock) mengembalikan 401.1597Penyedia AWS Anda mengembalikan 403, atau [Amazon Bedrock](/docs/id/amazon-bedrock) mengembalikan 401.

1591 1598 

1592Amazon Bedrock melaporkan token keamanan yang kedaluwarsa sebagai 403, tetapi 403 juga merupakan cara itu melaporkan penolakan otorisasi, seperti `AccessDeniedException` dari izin IAM yang hilang. Claude Code tidak dapat membedakan kedua penyebab itu.1599Amazon Bedrock melaporkan token keamanan yang kedaluwarsa sebagai 403, tetapi 403 juga merupakan cara Amazon Bedrock melaporkan penolakan otorisasi, seperti `AccessDeniedException` karena izin IAM yang tidak ada. Claude Code tidak dapat membedakan kedua penyebab tersebut.

1593 1600 

1594401 dari Amazon Bedrock juga mendarat di sini daripada di bawah [Kredensial AWS kedaluwarsa atau tidak valid](#aws-credentials-expired-or-invalid), karena Amazon Bedrock tidak melaporkan token yang kedaluwarsa sebagai 401. 401 dari titik akhir itu biasanya berasal dari sesuatu yang lain dalam jalur permintaan, seperti proxy perusahaan.1601401 dari Amazon Bedrock juga masuk ke sini alih-alih ke [Kredensial AWS kedaluwarsa atau tidak valid](#aws-credentials-expired-or-invalid), karena Amazon Bedrock tidak melaporkan token yang kedaluwarsa sebagai 401. 401 dari endpoint tersebut biasanya berasal dari hal lain di jalur permintaan, seperti proxy perusahaan.

1595 1602 

1596Penyegaran kredensial memperbaiki token yang kedaluwarsa dan tidak dapat memperbaiki penyebab lainnya, jadi pesan menawarkan keduanya:1603Pembaruan kredensial memperbaiki token yang kedaluwarsa dan tidak dapat memperbaiki penyebab lainnya, sehingga pesan menawarkan keduanya:

1597 1604 

1598```text theme={null}1605```text theme={null}

1599AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...1606AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...

1600```1607```

1601 1608 

1602Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `AWS authentication failed` terkemuka.1609Petunjuk tindakan di bagian tengah bervariasi sesuai penyiapan Anda. Bagian yang tetap adalah `AWS authentication failed` di awal.

1603 1610 

1604Ketika 403 adalah jawaban Amazon Bedrock bahwa Anda tidak memiliki akses ke model dengan ID model yang ditentukan, petunjuk sebagai gantinya memberi tahu Anda untuk mengaktifkan model untuk akun dan wilayah Anda di konsol Amazon Bedrock.1611Ketika 403 tersebut adalah jawaban Amazon Bedrock bahwa Anda tidak memiliki akses ke model dengan ID model yang ditentukan, petunjuknya justru meminta Anda untuk mengaktifkan model untuk akun dan region Anda di konsol Amazon Bedrock.

1605 1612 

1606Sebelum v2.1.273, pesan ini muncul hanya ketika `awsAuthRefresh` dikonfigurasi.1613Sebelum v2.1.273, pesan ini hanya muncul ketika `awsAuthRefresh` dikonfigurasi.

1607 1614 

1608**Yang harus dilakukan:**1615**Yang harus dilakukan:**

1609 1616 

1610* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1617* Jika petunjuk menyebutkan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1611* Segarkan kredensial AWS Anda jika kredensial yang kedaluwarsa mungkin menjadi penyebabnya: jalankan perintah [`awsAuthRefresh`](/docs/id/amazon-bedrock#advanced-credential-configuration) yang dinamai dalam pesan ketika satu diatur, atau segarkan masuk SSO, kunci akses, kunci API, atau token proxy Anda sendiri1618* Perbarui kredensial AWS Anda untuk berjaga-jaga jika kredensial yang kedaluwarsa adalah penyebabnya: jalankan perintah [`awsAuthRefresh`](/docs/id/amazon-bedrock#advanced-credential-configuration) yang disebutkan dalam pesan jika ada, atau perbarui sendiri login SSO, access key, kunci API, atau token proxy Anda

1612* Jika kredensial Anda saat ini, konfirmkan izin IAM dalam [Konfigurasi IAM](/docs/id/amazon-bedrock#iam-configuration) dilampirkan ke identitas yang Anda gunakan dan model yang dipilih diaktifkan untuk akun dan wilayah Anda1619* Jika kredensial Anda masih berlaku, pastikan izin IAM di [Konfigurasi IAM](/docs/id/amazon-bedrock#iam-configuration) terpasang pada identitas yang Anda gunakan dan bahwa model yang dipilih diaktifkan untuk akun dan region Anda

1613* Jalankan `aws sts get-caller-identity` untuk mengonfirmasi identitas mana yang digunakan permintaan Anda1620* Jalankan `aws sts get-caller-identity` untuk memastikan identitas mana yang digunakan permintaan Anda

1614 1621 

1615<h3 id="google-cloud-credentials-expired-or-invalid">1622<h3 id="google-cloud-credentials-expired-or-invalid">

1616 Kredensial Google Cloud kedaluwarsa atau tidak valid1623 Kredensial Google Cloud kedaluwarsa atau tidak valid

1617</h3>1624</h3>

1618 1625 

1619Kredensial Google Cloud Anda untuk [Platform Agen Google Cloud](/docs/id/google-vertex-ai) kedaluwarsa atau ditolak: permintaan mengembalikan 401, yang merupakan cara Platform Agen melaporkan kedaluwarsa kredensial.1626Kredensial Google Cloud Anda untuk [Agent Platform milik Google Cloud](/docs/id/google-vertex-ai) telah kedaluwarsa atau ditolak: permintaan mengembalikan 401, yang merupakan cara Agent Platform melaporkan kedaluwarsanya kredensial.

1620 1627 

1621Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `Google Cloud credentials expired or invalid` terkemuka:1628Petunjuk tindakan di bagian tengah bervariasi sesuai penyiapan Anda. Bagian yang tetap adalah `Google Cloud credentials expired or invalid` di awal:

1622 1629 

1623```text theme={null}1630```text theme={null}

1624Google Cloud credentials expired or invalid · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · API Error: 401 ...1631Google Cloud credentials expired or invalid · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · API Error: 401 ...


1626 1633 

1627**Yang harus dilakukan:**1634**Yang harus dilakukan:**

1628 1635 

1629* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1636* Jika petunjuk menyebutkan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1630* Jika Anda autentikasi dengan kredensial default aplikasi, jalankan perintah [`gcpAuthRefresh`](/docs/id/google-vertex-ai#advanced-credential-configuration) yang dinamai dalam pesan, atau `gcloud auth application-default login`, dan selesaikan masuk, kemudian coba ulang1637* Jika Anda melakukan autentikasi dengan application default credentials, jalankan perintah [`gcpAuthRefresh`](/docs/id/google-vertex-ai#advanced-credential-configuration) yang disebutkan dalam pesan, atau `gcloud auth application-default login`, dan selesaikan proses masuk, lalu coba lagi

1631* Jika Anda merutekan melalui [gateway LLM](/docs/id/llm-gateway) dengan `CLAUDE_CODE_SKIP_VERTEX_AUTH` diatur, segarkan token gateway dalam `ANTHROPIC_AUTH_TOKEN` atau `ANTHROPIC_CUSTOM_HEADERS`, kemudian coba ulang1638* Jika Anda merutekan melalui [LLM gateway](/docs/id/llm-gateway) dengan `CLAUDE_CODE_SKIP_VERTEX_AUTH` diatur, perbarui token gateway di `ANTHROPIC_AUTH_TOKEN` atau `ANTHROPIC_CUSTOM_HEADERS`, lalu coba lagi

1632* Jika Anda autentikasi dengan file kunci akun layanan, konfirmkan `GOOGLE_APPLICATION_CREDENTIALS` menunjuk ke kunci yang valid. Lihat [Konfigurasi kredensial GCP](/docs/id/google-vertex-ai#3-configure-gcp-credentials)1639* Jika Anda melakukan autentikasi dengan file kunci service account, pastikan `GOOGLE_APPLICATION_CREDENTIALS` mengarah ke kunci yang valid. Lihat [Mengonfigurasi kredensial GCP](/docs/id/google-vertex-ai#3-configure-gcp-credentials)

1633* Jika kesalahan berulang setelah penyegaran, konfirmkan identitas bekerja di luar Claude Code dengan `gcloud auth application-default print-access-token` di shell yang sama1640* Jika kesalahan berulang setelah pembaruan, pastikan identitas berfungsi di luar Claude Code dengan `gcloud auth application-default print-access-token` di shell yang sama

1634 1641 

1635Sebelum v2.1.273, 401 dari Platform Agen menampilkan pesan `Please run /login` atau `Failed to authenticate` generik sebagai gantinya, yang tidak dapat menyegarkan kredensial Google Cloud.1642Sebelum v2.1.273, 401 dari Agent Platform menampilkan pesan generik `Please run /login` atau `Failed to authenticate`, yang tidak dapat memperbarui kredensial Google Cloud.

1636 1643 

1637<h3 id="google-cloud-authentication-failed">1644<h3 id="google-cloud-authentication-failed">

1638 Autentikasi Google Cloud gagal1645 Autentikasi Google Cloud gagal

1639</h3>1646</h3>

1640 1647 

1641[Platform Agen Google Cloud](/docs/id/google-vertex-ai) mengembalikan 403, yang digunakan untuk penolakan otorisasi daripada kredensial yang kedaluwarsa. Biasanya identitas yang Anda autentikasi dengan hilang izin IAM, atau model tidak diaktifkan untuk proyek Anda.1648[Agent Platform milik Google Cloud](/docs/id/google-vertex-ai) mengembalikan 403, yang digunakannya untuk penolakan otorisasi, bukan untuk kredensial yang kedaluwarsa. Biasanya identitas yang Anda gunakan untuk autentikasi tidak memiliki izin IAM, atau model tidak diaktifkan untuk proyek Anda.

1642 1649 

1643Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `Google Cloud authentication failed` terkemuka:1650Petunjuk tindakan di bagian tengah bervariasi sesuai penyiapan Anda. Bagian yang tetap adalah `Google Cloud authentication failed` di awal:

1644 1651 

1645```text theme={null}1652```text theme={null}

1646Google Cloud authentication failed · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · if credentials are current, check GCP IAM permissions and Vertex AI model access · API Error: 403 ...1653Google Cloud authentication failed · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · if credentials are current, check GCP IAM permissions and Vertex AI model access · API Error: 403 ...


1648 1655 

1649**Yang harus dilakukan:**1656**Yang harus dilakukan:**

1650 1657 

1651* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1658* Jika petunjuk menyebutkan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1652* Konfirmkan peran dalam [Konfigurasi IAM](/docs/id/google-vertex-ai#iam-configuration) diberikan kepada identitas yang Anda autentikasi dengan1659* Pastikan peran di [Konfigurasi IAM](/docs/id/google-vertex-ai#iam-configuration) diberikan kepada identitas yang Anda gunakan untuk autentikasi

1653* Konfirmkan model diaktifkan untuk proyek Anda. Lihat [Minta akses model](/docs/id/google-vertex-ai#2-request-model-access)1660* Pastikan model diaktifkan untuk proyek Anda. Lihat [Meminta akses model](/docs/id/google-vertex-ai#2-request-model-access)

1654 1661 

1655Sebelum v2.1.273, 403 dari Platform Agen menampilkan pesan `Please run /login` atau `Failed to authenticate` generik sebagai gantinya, yang tidak dapat menyegarkan kredensial Google Cloud.1662Sebelum v2.1.273, 403 dari Agent Platform menampilkan pesan generik `Please run /login` atau `Failed to authenticate`, yang tidak dapat memperbarui kredensial Google Cloud.

1656 1663 

1657<h3 id="microsoft-foundry-authentication-failed">1664<h3 id="microsoft-foundry-authentication-failed">

1658 Autentikasi Microsoft Foundry gagal1665 Autentikasi Microsoft Foundry gagal

1659</h3>1666</h3>

1660 1667 

1661[Microsoft Foundry](/docs/id/microsoft-foundry) mengembalikan 401 atau 403: kredensial Azure pada permintaan ditolak, atau identitas di baliknya tidak memiliki akses ke sumber daya Foundry. `/login` tidak dapat mencetak kredensial Azure. Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `Microsoft Foundry authentication failed` terkemuka:1668[Microsoft Foundry](/docs/id/microsoft-foundry) mengembalikan 401 atau 403: kredensial Azure pada permintaan ditolak, atau identitas di baliknya tidak memiliki akses ke sumber daya Foundry. `/login` tidak dapat membuat kredensial Azure. Petunjuk tindakan di bagian tengah bervariasi sesuai pengaturan Anda. Bagian yang tetap adalah awalan `Microsoft Foundry authentication failed`:

1662 1669 

1663```text theme={null}1670```text theme={null}

1664Microsoft Foundry authentication failed · refresh your Foundry credential (ANTHROPIC_FOUNDRY_AUTH_TOKEN, ANTHROPIC_FOUNDRY_API_KEY, Azure sign-in for Entra, or your proxy token) and retry · if credentials are current, check access to the Foundry resource · API Error: 401 ...1671Microsoft Foundry authentication failed · refresh your Foundry credential (ANTHROPIC_FOUNDRY_AUTH_TOKEN, ANTHROPIC_FOUNDRY_API_KEY, Azure sign-in for Entra, or your proxy token) and retry · if credentials are current, check access to the Foundry resource · API Error: 401 ...


1666 1673 

1667**Yang harus dilakukan:**1674**Yang harus dilakukan:**

1668 1675 

1669* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1676* Jika petunjuk menyatakan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1670* Segarkan kredensial yang Anda konfigurasikan dalam [Konfigurasi kredensial Azure](/docs/id/microsoft-foundry#2-configure-azure-credentials): putar `ANTHROPIC_FOUNDRY_API_KEY`, cetak `ANTHROPIC_FOUNDRY_AUTH_TOKEN` baru, atau jalankan `az login` sehingga rantai kredensial Microsoft Entra default dapat masuk lagi1677* Perbarui kredensial yang Anda konfigurasikan di [Konfigurasikan kredensial Azure](/docs/id/microsoft-foundry#2-configure-azure-credentials): rotasi `ANTHROPIC_FOUNDRY_API_KEY`, buat `ANTHROPIC_FOUNDRY_AUTH_TOKEN` yang baru, atau jalankan `az login` agar rantai kredensial Microsoft Entra default dapat masuk kembali

1671* Jika kredensial saat ini, konfirmkan identitas memiliki akses ke sumber daya Foundry. Lihat [Konfigurasi Azure RBAC](/docs/id/microsoft-foundry#azure-rbac-configuration)1678* Jika kredensial masih berlaku, pastikan identitas tersebut memiliki akses ke sumber daya Foundry. Lihat [Konfigurasi Azure RBAC](/docs/id/microsoft-foundry#azure-rbac-configuration)

1672 1679 

1673Sebelum v2.1.273, 401 atau 403 dari Microsoft Foundry menampilkan pesan `Please run /login` atau `Failed to authenticate` generik sebagai gantinya, yang tidak dapat menyegarkan kredensial Azure.1680Sebelum v2.1.273, 401 atau 403 dari Microsoft Foundry menampilkan pesan generik `Please run /login` atau `Failed to authenticate`, yang tidak dapat memperbarui kredensial Azure.

1674 1681 

1675<h3 id="could-not-load-aws-or-google-cloud-credentials">1682<h3 id="could-not-load-aws-or-google-cloud-credentials">

1676 Tidak dapat memuat kredensial AWS atau Google Cloud1683 Tidak dapat memuat kredensial AWS atau Google Cloud

1677</h3>1684</h3>

1678 1685 

1679Claude Code tidak dapat memperoleh kredensial yang dapat digunakan dari rantai penyedia kredensial AWS atau dari kredensial default aplikasi Google Anda di mesin tempat itu berjalan, jadi tidak ada permintaan yang mencapai penyedia cloud Anda. Claude Code menghapus kredensial yang disimpan dalam cache dan mencoba ulang dua kali sebelum menampilkan pesan ini. Detail setelah `·` menamai penyebab spesifik, seperti sesi SSO yang kedaluwarsa, kredensial default aplikasi yang hilang dilaporkan sebagai `Could not load the default credentials`, atau masuk yang dicabut dilaporkan sebagai `invalid_grant`:1686Claude Code tidak dapat memperoleh kredensial yang dapat digunakan dari rantai penyedia kredensial AWS atau dari kredensial default aplikasi Google Anda di mesin tempat Claude Code berjalan, sehingga tidak ada permintaan yang mencapai penyedia cloud Anda. Claude Code menghapus kredensial yang di-cache dan mencoba ulang dua kali sebelum menampilkan pesan ini. Detail setelah `·` menyebutkan penyebab spesifiknya, seperti sesi SSO yang kedaluwarsa, kredensial default aplikasi yang tidak ada yang dilaporkan sebagai `Could not load the default credentials`, atau proses masuk yang dicabut yang dilaporkan sebagai `invalid_grant`:

1680 1687 

1681```text theme={null}1688```text theme={null}

1682API Error: Could not load AWS credentials · Could not load credentials from any providers. Check or refresh your AWS credentials and try again.1689API Error: Could not load AWS credentials · Could not load credentials from any providers. Check or refresh your AWS credentials and try again.

1683API Error: Could not load Google Cloud credentials · invalid_grant. Check or refresh your Google Cloud credentials and try again.1690API Error: Could not load Google Cloud credentials · invalid_grant. Check or refresh your Google Cloud credentials and try again.

1684```1691```

1685 1692 

1686Dalam [mode non-interaktif](/docs/id/headless) dengan `-p` dan dalam [Agent SDK](/docs/id/agent-sdk/overview), kode kesalahan terstruktur adalah `cloud_credential_error`. Sebelum v2.1.267, pesan hanya menampilkan teks detail setelah `API Error:`, dan kode terstruktur adalah `server_error` atau `unknown`.1693Dalam [mode non-interaktif](/docs/id/headless) dengan `-p` dan di [Agent SDK](/docs/id/agent-sdk/overview), kode kesalahan terstrukturnya adalah `cloud_credential_error`. Sebelum v2.1.267, pesan hanya menampilkan teks detail setelah `API Error:`, dan kode terstrukturnya adalah `server_error` atau `unknown`.

1687 1694 

1688**Yang harus dilakukan:**1695**Yang harus dilakukan:**

1689 1696 

1690* Jalankan perintah masuk penyedia Anda, seperti `aws sso login --profile myprofile` atau `gcloud auth application-default login`, kemudian coba ulang. [Kredensial Bedrock, Platform Agen, atau Foundry tidak memuat](/docs/id/troubleshoot-install#bedrock-agent-platform-or-foundry-credentials-not-loading) menunjukkan cara mengonfirmasi kredensial di luar Claude Code1697* Jalankan perintah masuk penyedia Anda, seperti `aws sso login --profile myprofile` atau `gcloud auth application-default login`, lalu coba lagi. [Kredensial Bedrock, Agent Platform, atau Foundry tidak termuat](/docs/id/troubleshoot-install#bedrock-agent-platform-or-foundry-credentials-not-loading) menunjukkan cara memverifikasi kredensial di luar Claude Code

1691* Jika detail membaca `AWS default-chain credential resolve timed out`, rantai tergantung daripada gagal, jadi ikuti [Resolusi kredensial rantai default AWS habis waktu](#aws-default-chain-credential-resolve-timed-out) sebagai gantinya1698* Jika detailnya berbunyi `AWS default-chain credential resolve timed out`, rantai tersebut macet alih-alih gagal, jadi ikuti [Resolusi kredensial rantai default AWS mengalami timeout](#aws-default-chain-credential-resolve-timed-out) sebagai gantinya

1692 1699 

1693<h3 id="aws-default-chain-credential-resolve-timed-out">1700<h3 id="aws-default-chain-credential-resolve-timed-out">

1694 Resolusi kredensial rantai default AWS habis waktu1701 Resolusi kredensial rantai default AWS mengalami timeout

1695</h3>1702</h3>

1696 1703 

1697Rantai penyedia kredensial default AWS tidak menghasilkan kredensial dalam 60 detik, jadi Claude Code menghentikan resolusi dan gagal permintaan. Timeout ini adalah satu penyebab [Tidak dapat memuat kredensial AWS atau Google Cloud](#could-not-load-aws-or-google-cloud-credentials). Kegagalan adalah resolusi kredensial lokal: permintaan tidak pernah mencapai [Amazon Bedrock](/docs/id/amazon-bedrock), [Claude Platform di AWS](/docs/id/claude-platform-on-aws), atau [titik akhir Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint). Claude Code menghapus [cache kredensial](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout) dan mencoba ulang sebelum kesalahan ini muncul, jadi pada saat Anda melihatnya rantai telah macet pada upaya berulang.1704Rantai penyedia kredensial default AWS tidak menghasilkan kredensial dalam 60 detik, sehingga Claude Code menghentikan resolusi dan menggagalkan permintaan. Timeout ini adalah salah satu penyebab [Tidak dapat memuat kredensial AWS atau Google Cloud](#could-not-load-aws-or-google-cloud-credentials). Kegagalan ini terjadi pada resolusi kredensial lokal: permintaan tidak pernah mencapai [Amazon Bedrock](/docs/id/amazon-bedrock), [Claude Platform on AWS](/docs/id/claude-platform-on-aws), atau [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint). Claude Code menghapus [cache kredensial](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout) dan mencoba ulang sebelum kesalahan ini muncul, sehingga saat Anda melihatnya, rantai tersebut telah macet pada beberapa percobaan berulang.

1698 1705 

1699```text theme={null}1706```text theme={null}

1700API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again.1707API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again.

1701```1708```

1702 1709 

1703Penyebab umum adalah perintah `credential_process` dalam profil AWS Anda yang menunggu input yang tidak dapat diterima, dan kontainer atau VM yang instance metadata service (IMDS)-nya tidak pernah menjawab probe rantai.1710Penyebab umumnya adalah perintah `credential_process` di profil AWS Anda yang menunggu input yang tidak dapat diterimanya, serta container atau VM yang layanan metadata instance-nya (IMDS) tidak pernah menjawab probe dari rantai tersebut.

1704 1711 

1705Sebelum v2.1.267, pesan berbunyi `API Error: AWS default-chain credential resolve timed out`.1712Sebelum v2.1.267, pesannya berbunyi `API Error: AWS default-chain credential resolve timed out`.

1706Sebelum v2.1.207, rantai yang macet meninggalkan permintaan menunggu tanpa batas waktu daripada gagal.1713Sebelum v2.1.207, rantai yang macet membuat permintaan menunggu tanpa batas alih-alih gagal.

1707 1714 

1708**Yang harus dilakukan:**1715**Yang harus dilakukan:**

1709 1716 

1710* Jalankan `aws sts get-caller-identity` di shell yang sama dengan `AWS_PROFILE` yang sama. Jika juga tergantung, perbaiki profil; perintah `credential_process` yang meminta secara interaktif adalah penyebab umum.1717* Jalankan `aws sts get-caller-identity` di shell yang sama dengan `AWS_PROFILE` yang sama. Jika perintah itu juga macet, perbaiki profilnya; perintah `credential_process` yang meminta input secara interaktif adalah penyebab umum.

1711* Selesaikan langkah masuk sebelum memulai Claude Code, misalnya `aws sso login --profile myprofile`, sehingga rantai diselesaikan dari cache SSO lokal daripada menunggu alur browser1718* Selesaikan langkah masuk sebelum memulai Claude Code, misalnya `aws sso login --profile myprofile`

1712* Jika rantai Anda menjalankan masuk interaktif yang secara sah memerlukan lebih dari 60 detik, seperti SSO dengan MFA melalui pembungkus seperti `aws-vault`, naikkan batas dalam milidetik dengan [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars)1719* Jika rantai Anda menjalankan proses masuk interaktif yang memang membutuhkan lebih dari 60 detik, seperti SSO dengan MFA melalui wrapper seperti `aws-vault`, naikkan batasnya dalam milidetik dengan [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars)

1713 1720 

1714<h3 id="bedrock-setup-verification-timed-out-waiting-for-aws">1721<h3 id="bedrock-setup-verification-timed-out-waiting-for-aws">

1715 Verifikasi pengaturan Bedrock habis waktu menunggu AWS1722 Verifikasi penyiapan Bedrock mengalami timeout saat menunggu AWS

1716</h3>1723</h3>

1717 1724 

1718Panggilan ke AWS selama [wizard pengaturan Bedrock](/docs/id/amazon-bedrock#sign-in-with-bedrock), seperti pencarian kredensial atau pemeriksaan identitas, tidak selesai dalam batas 60 detik. Wizard berhenti menunggu dan gagal langkah verifikasi:1725Panggilan ke AWS selama verifikasi kredensial di [wizard penyiapan Bedrock](/docs/id/amazon-bedrock#sign-in-with-bedrock), seperti pencarian kredensial atau pemeriksaan identitas, tidak selesai dalam batas 60 detik. Wizard berhenti menunggu dan menggagalkan langkah verifikasi:

1719 1726 

1720```text theme={null}1727```text theme={null}

1721Timed out after 60s waiting for AWS. Check your network and proxy settings; if a credential helper needs longer to prompt you, raise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS.1728Timed out after 60s waiting for AWS. Check your network and proxy settings; if a credential helper needs longer to prompt you, raise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS.

1722```1729```

1723 1730 

1724Angka mencerminkan batas Anda: 60 detik secara default, atau nilai yang Anda atur dalam [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars).1731Angka tersebut mencerminkan batas Anda: 60 detik secara default, atau nilai yang Anda tetapkan di [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars).

1725 1732 

1726Penyebab umum adalah jaringan atau proxy yang macet permintaan ke AWS, termasuk penyegaran token SSO, dan helper kredensial masih menunggu input yang tidak dapat Anda lihat. Naikkan batas hanya ketika helper secara sah memerlukan lebih banyak waktu.1733Penyebab umumnya adalah jaringan atau proxy yang menahan permintaan ke AWS, termasuk pembaruan token SSO, serta credential helper yang masih menunggu input yang tidak dapat Anda lihat. Naikkan batas hanya jika helper tersebut memang membutuhkan waktu lebih lama.

1727 1734 

1728Permintaan tunggal yang macet ke AWS juga dapat gagal pada timeout per-permintaan-nya sendiri, yang menampilkan pesan yang lebih pendek pada langkah yang sama:1735Satu permintaan ke AWS yang macet juga dapat gagal karena timeout per permintaannya sendiri, yang menampilkan pesan lebih singkat pada langkah yang sama:

1729 1736 

1730```text theme={null}1737```text theme={null}

1731A request to AWS timed out. Check your network and proxy settings, then try again.1738A request to AWS timed out. Check your network and proxy settings, then try again.

1732```1739```

1733 1740 

1734Ketika timeout yang sama terjadi pada langkah pin model, wizard menandai model sebagai `unreachable` daripada menampilkan pesan apa pun.1741Ketika timeout yang sama terjadi pada langkah penyematan model, wizard menandai model sebagai `unreachable` alih-alih menampilkan salah satu pesan tersebut.

1735 1742 

1736**Yang harus dilakukan:**1743**Yang harus dilakukan:**

1737 1744 

1738* Jalankan `aws sts get-caller-identity` di shell yang sama. Jika juga tergantung, macet ada di luar Claude Code, di jaringan Anda, proxy Anda, atau helper kredensial dalam profil AWS Anda; perbaiki itu terlebih dahulu.1745* Jalankan `aws sts get-caller-identity` di shell yang sama. Jika perintah itu juga macet, kemacetan berada di luar Claude Code, yaitu di jaringan Anda, proxy Anda, atau credential helper di profil AWS Anda; perbaiki itu terlebih dahulu.

1739* Selesaikan masuk interaktif apa pun sebelum membuka wizard, misalnya `aws sso login --profile myprofile`1746* Selesaikan proses masuk interaktif apa pun sebelum membuka wizard, misalnya `aws sso login --profile myprofile`

1740* Jika helper kredensial dalam profil AWS Anda secara sah memerlukan lebih lama dari 60 detik untuk meminta Anda, naikkan batas dalam milidetik dengan [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars)1747* Jika credential helper di profil AWS Anda memang membutuhkan lebih dari 60 detik untuk meminta input Anda, naikkan batasnya dalam milidetik dengan [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars)

1741 1748 

1742<h3 id="cloud-gateway-session-expired">1749<h3 id="cloud-gateway-session-expired">

1743 Sesi gateway cloud kedaluwarsa1750 Sesi cloud gateway kedaluwarsa

1744</h3>1751</h3>

1745 1752 

1746Anda masuk melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway), dan sesi gateway yang disimpan di mesin ini kedaluwarsa dan tidak dapat diperbarui, atau gateway tidak lagi menerimanya, misalnya setelah [rahasia JWT gateway diganti](/docs/id/claude-apps-gateway-deploy#jwt-secret-rotation). Jika Anda melihat baris ini ketika memulai `claude` secara interaktif, sesi telah dibuka tanpa masuk ke gateway:1753Anda masuk melalui [Claude apps gateway](/docs/id/claude-apps-gateway), dan sesi gateway yang tersimpan di mesin ini telah kedaluwarsa dan tidak dapat diperbarui, atau gateway tidak lagi menerimanya, misalnya setelah [JWT secret gateway diganti](/docs/id/claude-apps-gateway-deploy#jwt-secret-rotation). Jika Anda melihat baris ini saat memulai `claude` secara interaktif, sesi telah dibuka dalam keadaan keluar dari gateway:

1747 1754 

1748```text theme={null}1755```text theme={null}

1749Cloud gateway session expired — run /login to reconnect.1756Cloud gateway session expired — run /login to reconnect.

1750```1757```

1751 1758 

1752Baris yang sama dapat muncul di tengah sesi ketika kredensial gateway kedaluwarsa dan Claude Code tidak dapat memperbarui.1759Baris yang sama dapat muncul di tengah sesi ketika kredensial gateway kedaluwarsa dan Claude Code tidak dapat memperbaruinya.

1753 1760 

1754Dalam jalankan [non-interaktif](/docs/id/headless), sesi latar belakang atau sesi lain yang tidak diawasi, atau subperintah `claude` selain `claude auth`, Claude Code keluar dengan pesan ini sebagai gantinya ketika gateway tidak lagi menerima sesi:1761Dalam eksekusi [non-interaktif](/docs/id/headless), sesi latar belakang atau sesi tanpa pengawasan lainnya, atau subperintah `claude` selain `claude auth`, Claude Code keluar dengan pesan ini sebagai gantinya ketika gateway tidak lagi menerima sesi tersebut:

1755 1762 

1756```text theme={null}1763```text theme={null}

1757Cloud gateway <url> no longer accepts this session. Start `claude` and sign in again with /login.1764Cloud gateway <url> no longer accepts this session. Start `claude` and sign in again with /login.


1759 1766 

1760**Yang harus dilakukan:**1767**Yang harus dilakukan:**

1761 1768 

1762* Jalankan `/login` dalam sesi dan selesaikan masuk browser1769* Jalankan `/login` di sesi tersebut dan selesaikan proses masuk melalui browser

1763* Untuk peluncuran non-interaktif, mulai `claude` di lingkungan yang sama, jalankan `/login`, kemudian jalankan kembali perintah Anda1770* Untuk peluncuran non-interaktif, mulai `claude` di lingkungan yang sama, jalankan `/login`, lalu jalankan ulang perintah Anda

1764 1771 

1765<h3 id="sign-in-timed-out-while-waiting-for-you-to-continue">1772<h3 id="sign-in-timed-out-while-waiting-for-you-to-continue">

1766 Masuk habis waktu saat menunggu Anda untuk melanjutkan1773 Proses masuk mengalami timeout saat menunggu Anda melanjutkan

1767</h3>1774</h3>

1768 1775 

1769Selama masuk [gateway aplikasi Claude](/docs/id/claude-apps-gateway), gateway menamai akun yang masuk, dan Claude Code meminta Anda untuk mengonfirmasinya sebelum menyimpan kredensial. Anda meninggalkan konfirmasi terbuka melampaui kedaluwarsa masuk itu sendiri, dan gateway tidak mengeluarkan token penyegaran yang dapat memperbarui, jadi Claude Code tidak menyimpan apa pun ketika Anda melanjutkan:1776Selama proses masuk [Claude apps gateway](/docs/id/claude-apps-gateway), gateway menyebutkan akun yang masuk, dan Claude Code meminta Anda mengonfirmasinya sebelum menyimpan kredensial. Anda membiarkan konfirmasi terbuka melewati masa berlaku proses masuk itu sendiri, dan gateway tidak menerbitkan refresh token yang dapat memperbaruinya, sehingga Claude Code tidak menyimpan apa pun saat Anda melanjutkan:

1770 1777 

1771```text theme={null}1778```text theme={null}

1772Sign-in timed out while waiting for you to continue. Try again.1779Sign-in timed out while waiting for you to continue. Try again.


1774 1781 

1775**Yang harus dilakukan:**1782**Yang harus dilakukan:**

1776 1783 

1777* Jalankan `/login` lagi dan konfirmkan akun sebelum masuk kedaluwarsa1784* Jalankan `/login` lagi dan konfirmasikan akun sebelum proses masuk kedaluwarsa

1778 1785 

1779<h3 id="gateway-refused-the-request">1786<h3 id="gateway-refused-the-request">

1780 Gateway menolak permintaan1787 Gateway menolak permintaan

1781</h3>1788</h3>

1782 1789 

1783Anda masuk melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway), dan permintaan mengembalikan 403: gateway, atau upstream di baliknya, menolaknya. Masuk lagi tidak mengubah penolakan, jadi pesan menunjuk ke administrator gateway Anda:1790Anda masuk melalui [Claude apps gateway](/docs/id/claude-apps-gateway), dan sebuah permintaan mengembalikan 403: gateway, atau upstream di belakangnya, menolaknya. Masuk kembali tidak mengubah penolakan, sehingga pesan tersebut mengarahkan Anda ke administrator gateway Anda:

1784 1791 

1785```text theme={null}1792```text theme={null}

1786Gateway refused the request · signing in again won't change this — check with your gateway administrator · API Error: 403 ...1793Gateway refused the request · signing in again won't change this — check with your gateway administrator · API Error: 403 ...


1788 1795 

1789**Yang harus dilakukan:**1796**Yang harus dilakukan:**

1790 1797 

1791* Minta administrator gateway Anda untuk mencari permintaan. Ekor `API Error:` membawa penolakan yang dikembalikan gateway1798* Minta administrator gateway Anda untuk menelusuri permintaan tersebut. Bagian akhir `API Error:` memuat penolakan yang dikembalikan gateway

1792* Untuk administrator: aturan [kontrol akses](/docs/id/claude-apps-gateway-config#http-tuning) pada gateway mengembalikan 403 yang dicatat [log audit](/docs/id/claude-apps-gateway-deploy#logs) dengan alasannya, dan penolakan otorisasi upstream melewati per [Pesan kesalahan Upstream](/docs/id/claude-apps-gateway-config#upstream-error-messages)1799* Untuk administrator: [aturan kontrol akses](/docs/id/claude-apps-gateway-config#http-tuning) pada gateway mengembalikan 403 yang dicatat oleh [log audit](/docs/id/claude-apps-gateway-deploy#logs) beserta alasannya, dan penolakan otorisasi dari upstream diteruskan sesuai [Pesan kesalahan upstream](/docs/id/claude-apps-gateway-config#upstream-error-messages)

1793 1800 

1794Sebelum v2.1.273, 403 pada sesi gateway menampilkan pesan `Please run /login` atau `Failed to authenticate` generik sebagai gantinya, dan masuk lagi tidak menghapus penolakan.1801Sebelum v2.1.273, 403 pada sesi gateway menampilkan pesan generik `Please run /login` atau `Failed to authenticate`, dan masuk kembali tidak menghilangkan penolakan tersebut.

1795 1802 

1796<h2 id="network-and-connection-errors">1803<h2 id="network-and-connection-errors">

1797 Kesalahan jaringan dan koneksi1804 Kesalahan jaringan dan koneksi


2849* Jalankan `claude doctor` dari shell Anda untuk diagnostik instalasi2856* Jalankan `claude doctor` dari shell Anda untuk diagnostik instalasi

2850 2857 

2851<h2 id="command-line-errors">2858<h2 id="command-line-errors">

2852 Kesalahan command-line2859 Error baris perintah

2853</h2>2860</h2>

2854 2861 

2855Kesalahan ini berasal dari command line `claude` dan subcommand-nya, dari nama command yang Anda kirimkan di prompt, dan dari command seperti `/security-review` yang mengumpulkan konteks dengan menjalankan shell command sebelum prompt mereka berjalan. Mereka juga berasal dari `/tui`, yang meluncurkan kembali CLI.2862Error ini berasal dari baris perintah `claude` dan subperintahnya, dari nama perintah yang Anda kirimkan di prompt, dan dari perintah seperti `/security-review` yang mengumpulkan konteks dengan menjalankan perintah shell sebelum prompt-nya berjalan. Error ini juga berasal dari `/tui`, yang meluncurkan ulang CLI.

2856 2863 

2857<h3 id="conflict-between-bg-and-print">2864<h3 id="conflict-between-bg-and-print">

2858 Konflik antara `--bg` dan `--print`2865 Konflik antara `--bg` dan `--print`

2859</h3>2866</h3>

2860 2867 

2861Pesan ini memerlukan Claude Code v2.1.198 atau lebih baru. Anda menggabungkan `--bg` dengan `-p` atau `--print` dalam invokasi `claude` yang sama. `--bg` memulai [sesi background](/docs/id/agent-view#from-your-shell) yang kemudian Anda lampirkan dengan `claude agents`, sementara `--print` berjalan [non-interaktif](/docs/id/headless) dan tidak pernah memulai sesi interaktif yang `claude agents` lampirkan. Sebelum v2.1.198, kombinasi ini secara diam-diam membuat pekerjaan background yang tidak pernah bisa dilampirkan.2868Pesan ini memerlukan Claude Code v2.1.198 atau yang lebih baru. Anda menggabungkan `--bg` dengan `-p` atau `--print` dalam pemanggilan `claude` yang sama. `--bg` memulai [sesi latar belakang](/docs/id/agent-view#from-your-shell) yang nantinya Anda sambungkan dengan `claude agents`, sedangkan `--print` berjalan secara [non-interaktif](/docs/id/headless) dan tidak pernah memulai sesi interaktif yang disambungkan oleh `claude agents`. Sebelum v2.1.198, kombinasi ini secara diam-diam membuat pekerjaan latar belakang yang tidak pernah dapat disambungkan.

2869 

2870```text theme={null}

2871--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.

2872```

2873 

2874**Yang harus dilakukan:**

2875 

2876* Hapus `-p` atau `--print`. `--bg` menerima prompt sebagai argumen posisionalnya, sehingga `claude --bg "<task>"` adalah perintah yang lengkap. Lihat [Mengirim agent baru dari shell Anda](/docs/id/agent-view#from-your-shell).

2877* Untuk menjalankan prompt secara non-interaktif dan mencetak hasilnya alih-alih membuat sesi latar belakang, hapus `--bg` dan jalankan `claude -p "<task>"`

2878 

2879<h3 id="conflict-between-a-system-prompt-flag-and-its-file-form">

2880 Konflik antara flag system prompt dan bentuk file-nya

2881</h3>

2882 

2883Anda meneruskan [`--append-subagent-system-prompt`](/docs/id/cli-reference#cli-flags) bersama dengan `--append-subagent-system-prompt-file` dalam satu pemanggilan `claude`, sehingga `claude` keluar dengan kode 1 alih-alih memulai sesi:

2862 2884 

2863```text theme={null}2885```text theme={null}

2886Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.

2864```2887```

2865 2888 

2889Sebelum v2.1.283, `claude` keluar dengan cara yang sama ketika Anda meneruskan `--system-prompt` dengan `--system-prompt-file`, atau `--append-system-prompt` dengan `--append-system-prompt-file`, karena pasangan tersebut berkonflik alih-alih [digabungkan](/docs/id/cli-reference#system-prompt-flags). Pada versi tersebut, pesan menyebutkan pasangan yang Anda gabungkan.

2890 

2866**Yang harus dilakukan:**2891**Yang harus dilakukan:**

2867 2892 

2868* Hilangkan `-p` atau `--print`. `--bg` mengambil prompt sebagai argumen positional-nya, jadi `claude --bg "<task>"` adalah command lengkapnya. Lihat [Dispatch new agents from your shell](/docs/id/agent-view#from-your-shell).2893* Pertahankan satu bentuk flag dan hapus yang lainnya. Untuk menggabungkan file prompt tetap dengan teks per-run, gabungkan teks tersebut ke dalam file sebelum meluncurkan alih-alih meneruskan kedua flag

2869* Untuk menjalankan prompt non-interaktif dan mencetak hasilnya alih-alih membuat sesi background, hilangkan `--bg` dan jalankan `claude -p "<task>"`

2870 2894 

2871<h3 id="invalid-agents-configuration">2895<h3 id="invalid-agents-configuration">

2872 Konfigurasi `--agents` tidak valid2896 Konfigurasi `--agents` tidak valid

2873</h3>2897</h3>

2874 2898 

2875Nilai yang Anda berikan ke `--agents` tidak valid, jadi `claude` keluar dengan kode 1 alih-alih memulai sesi. Ketika Anda memberikan `--safe-mode` atau mengatur [`CLAUDE_CODE_SAFE_MODE`](/docs/id/env-vars#variables), Claude Code mengabaikan `--agents` sepenuhnya. Dengan `--resume` atau `--continue`, nilai JSON inline tidak diperiksa dan sesi dimulai; nilai yang dibaca dari file diperiksa pada setiap peluncuran. Sebelum v2.1.242, Claude Code memulai sesi bagaimanapun.2899Nilai yang Anda teruskan ke `--agents` tidak valid, sehingga `claude` keluar dengan kode 1 alih-alih memulai sesi. Ketika Anda meneruskan `--safe-mode` atau mengatur [`CLAUDE_CODE_SAFE_MODE`](/docs/id/env-vars#variables), Claude Code mengabaikan `--agents` sepenuhnya. Dengan `--resume` atau `--continue`, nilai JSON inline tidak diperiksa dan sesi dimulai; nilai yang dibaca dari file diperiksa pada setiap peluncuran. Sebelum v2.1.242, Claude Code tetap memulai sesi.

2876 2900 

2877```text theme={null}2901```text theme={null}

2878Error: Invalid --agents configuration:2902Error: Invalid --agents configuration:

2879<what failed>2903<what failed>

2880```2904```

2881 2905 

2882Apa yang mengikuti baris pertama tergantung pada bagaimana nilai gagal. Claude Code menjalankan pemeriksaan ini secara berurutan dan berhenti di yang pertama gagal. Jika nilai Anda memiliki dua jenis masalah, Anda hanya melihat yang kedua setelah Anda memperbaiki yang pertama:2906Apa yang mengikuti baris pertama bergantung pada bagaimana nilai tersebut gagal. Claude Code menjalankan pemeriksaan ini secara berurutan dan berhenti pada pemeriksaan pertama yang gagal. Jika nilai Anda memiliki dua jenis masalah, Anda baru melihat yang kedua setelah memperbaiki yang pertama:

2883 2907 

28841. Ketika nilai dimulai dengan `{` tetapi tidak diuraikan sebagai JSON, atau isi file `--agents` tidak diuraikan, Claude Code mencetak satu baris `invalid JSON:` yang membawa pesan parser JSON sendiri29081. Ketika nilai diawali dengan `{` tetapi tidak dapat di-parse sebagai JSON, atau isi file `--agents` tidak dapat di-parse, Claude Code mencetak satu baris `invalid JSON:` yang memuat pesan dari parser JSON itu sendiri

28852. Ketika diuraikan tetapi definisi agent tidak cocok dengan skema untuk [subagent yang ditentukan CLI](/docs/id/sub-agents#choose-the-subagent-scope), Claude Code mencetak satu baris per masalah29092. Ketika nilai dapat di-parse tetapi definisi agent tidak cocok dengan skema untuk [subagent yang didefinisikan melalui CLI](/docs/id/sub-agents#choose-the-subagent-scope), Claude Code mencetak satu baris per masalah

28863. Ketika nama agent dimulai dengan `-`, Claude Code mencetak `<name>: agent names must not start with '-'`29103. Ketika nama agent diawali dengan `-`, Claude Code mencetak `<name>: agent names must not start with '-'`

2887 2911 

2888Ketika ada lebih dari 20 baris masalah, Claude Code mencetak 20 yang pertama dan mengganti sisanya dengan `…and N more`.2912Ketika ada lebih dari 20 baris masalah, Claude Code mencetak 20 baris pertama dan mengganti sisanya dengan `…and N more`.

2889 2913 

2890Dengan `--print`, `--agents` juga menerima [path ke file JSON](/docs/id/sub-agents#choose-the-subagent-scope) sebagai pengganti objek inline. Sebelum v2.1.281, `--agents` hanya menerima JSON inline dan memperlakukan path file sebagai JSON tidak valid. Bentuk file memiliki penolakan sendiri, dicetak sebagai pengganti pesan ini, termasuk yang berikut:2914Dengan `--print`, `--agents` juga menerima [path ke file JSON](/docs/id/sub-agents#choose-the-subagent-scope) sebagai pengganti objek inline. Sebelum v2.1.281, `--agents` hanya menerima JSON inline dan memperlakukan path file sebagai JSON yang tidak valid. Bentuk file memiliki penolakannya sendiri, yang dicetak sebagai pengganti pesan ini, termasuk yang berikut:

2891 2915 

2892* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code membaca nilai sebagai path file dalam sesi interaktif. Berikan definisi sebagai JSON inline, atau tambahkan `-p` untuk membacanya dari file.2916* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code membaca nilai tersebut sebagai path file dalam sesi interaktif. Teruskan definisi sebagai JSON inline, atau tambahkan `-p` untuk membacanya dari file.

2893* **`Error: --agents file not found: <path>`**: tidak ada file yang ada di path tersebut. Nilai yang tidak dimulai dengan `{` dan bukan JSON valid dibaca sebagai path, jadi JSON inline yang shell Anda rusak dapat gagal dengan cara ini juga. Periksa path atau kutipan dan jalankan command lagi.2917* **`Error: --agents file not found: <path>`**: tidak ada file di path tersebut. Nilai yang tidak diawali dengan `{` dan bukan JSON yang valid dibaca sebagai path, sehingga JSON inline yang dirusak oleh shell Anda juga dapat gagal dengan cara ini. Periksa path atau tanda kutipnya dan jalankan perintah lagi.

2894 2918 

2895**Yang harus dilakukan:**2919**Yang harus dilakukan:**

2896 2920 

2897* Perbaiki setiap masalah yang pesan daftarkan, kemudian jalankan command lagi. Lihat [field yang diambil subagent yang ditentukan CLI](/docs/id/sub-agents#choose-the-subagent-scope).2921* Perbaiki setiap masalah yang dicantumkan dalam pesan, lalu jalankan perintah lagi. Lihat [field yang diterima oleh subagent yang didefinisikan melalui CLI](/docs/id/sub-agents#choose-the-subagent-scope).

2898 2922 

2899<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">2923<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">

2900 Sesi cloud tidak dapat dibuat dari sesi `--restricted`2924 Sesi cloud tidak dapat dibuat dari sesi `--restricted`

2901</h3>2925</h3>

2902 2926 

2903Ketika Anda memulai sesi dengan [`--restricted`](/docs/id/cli-reference#cli-flags), Claude Code menolak untuk membuat [sesi cloud](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) darinya, karena sesi baru akan berjalan di luar proses terbatas dan tidak akan memberlakukan mode terbatas. Claude Code menolak di klien, sebelum menghubungi server, jadi tidak ada sesi cloud yang dibuat:2927Ketika Anda memulai sesi dengan [`--restricted`](/docs/id/cli-reference#cli-flags), Claude Code menolak membuat [sesi cloud](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) dari sesi tersebut, karena sesi baru akan berjalan di luar proses yang dibatasi dan tidak akan menerapkan mode terbatas. Claude Code menolak di sisi klien, sebelum menghubungi server, sehingga tidak ada sesi cloud yang dibuat:

2904 2928 

2905```text theme={null}2929```text theme={null}

2906Cloud sessions cannot be created from a --restricted session: they would not enforce it.2930Cloud sessions cannot be created from a --restricted session: they would not enforce it.


2909 2932 

2910**Yang harus dilakukan:**2933**Yang harus dilakukan:**

2911 2934 

2912* Jalankan tugas secara lokal dalam sesi terbatas2935* Jalankan tugas secara lokal di sesi yang dibatasi

2913* Jika Anda mengontrol bagaimana sesi diluncurkan, mulai sesi `claude` baru tanpa `--restricted` dan buat sesi cloud dari sana2936* Jika Anda mengontrol cara sesi diluncurkan, mulai sesi `claude` baru tanpa `--restricted` dan buat sesi cloud dari sana

2914 2937 

2915Sebelum v2.1.248, Claude Code tidak memiliki flag `--restricted`; versi sebelumnya menolak flag itu sendiri dengan kesalahan unknown-option.2938Sebelum v2.1.248, Claude Code tidak memiliki flag `--restricted`; versi sebelumnya menolak flag itu sendiri dengan error opsi tidak dikenal.

2916 2939 

2917<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">2940<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">

2918 Sesi cloud dinonaktifkan oleh kebijakan organisasi Anda2941 Sesi cloud dinonaktifkan oleh kebijakan organisasi Anda

2919</h3>2942</h3>

2920 2943 

2921Kebijakan `allow_remote_sessions` organisasi Anda mati, jadi [sesi cloud](/docs/id/claude-code-on-the-web) dan command yang menggunakannya tidak tersedia:2944Kebijakan `allow_remote_sessions` organisasi Anda dinonaktifkan, sehingga [sesi cloud](/docs/id/claude-code-on-the-web) dan perintah yang menggunakannya tidak tersedia:

2922 2945 

2923```text theme={null}2946```text theme={null}

2924Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.2947Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.

2925```2948```

2926 2949 

2927Pesan muncul ketika Anda [membuat sesi cloud dari terminal](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) dan ketika Anda mengirimkan command yang memerlukan sesi cloud, seperti `/teleport`, `/remote-env`, atau `/web-setup`. Sebelum v2.1.268, mengirimkan salah satu command tersebut mengembalikan [`Unknown command`](#unknown-command) sebagai gantinya.2950Pesan ini muncul ketika Anda [membuat sesi cloud dari terminal](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) dan ketika Anda mengirimkan perintah yang memerlukan sesi cloud, seperti `/teleport`, `/remote-env`, atau `/web-setup`. Sebelum v2.1.268, mengirimkan salah satu perintah tersebut menghasilkan [`Unknown command`](#unknown-command) sebagai gantinya.

2928 2951 

2929Ini adalah kebijakan organisasi sisi server, jadi tidak dapat ditimpa dari pengaturan lokal, variabel lingkungan, atau flag CLI.2952Ini adalah kebijakan organisasi di sisi server, sehingga tidak dapat ditimpa dari pengaturan lokal, environment variable, atau flag CLI.

2930 2953 

2931Jika Claude Code belum memuat kebijakan organisasi Anda atau tidak dapat mengambilnya, command tersebut menjawab `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` sebagai gantinya.2954Jika Claude Code belum memuat kebijakan organisasi Anda atau tidak dapat mengambilnya, perintah tersebut menjawab `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` sebagai gantinya.

2932 2955 

2933**Yang harus dilakukan:**2956**Yang harus dilakukan:**

2934 2957 

2935* Minta [Owner](/docs/id/server-managed-settings#access-control) di organisasi Anda untuk mengaktifkan sesi cloud dalam pengaturan admin Claude Code di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)2958* Minta [Owner](/docs/id/server-managed-settings#access-control) di organisasi Anda untuk mengaktifkan sesi cloud di pengaturan admin Claude Code di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

2936* Jika pesan mengatakan tidak dapat memverifikasi kebijakan, periksa koneksi jaringan Anda, kemudian restart Claude Code dan coba lagi2959* Jika pesan menyatakan bahwa kebijakan tidak dapat diverifikasi, periksa koneksi jaringan Anda, lalu mulai ulang Claude Code dan coba lagi

2937 2960 

2938<h3 id="the-json-schema-value-is-not-a-valid-json-schema">2961<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

2939 Nilai `--json-schema` bukan JSON Schema yang valid2962 Nilai `--json-schema` bukan JSON Schema yang valid

2940</h3>2963</h3>

2941 2964 

2942Skema yang Anda berikan ke [`--json-schema`](/docs/id/cli-reference#cli-flags) dalam [mode non-interaktif](/docs/id/headless#get-structured-output) gagal kompilasi JSON Schema, jadi `claude` keluar dengan kode 1 alih-alih menjalankan prompt. Sebelum v2.1.205, skema tidak valid menghasilkan output tidak terstruktur tanpa kesalahan, dan skema apa pun yang menggunakan keyword `format` diperlakukan sebagai tidak valid.2965Skema yang Anda teruskan ke [`--json-schema`](/docs/id/cli-reference#cli-flags) dalam [mode non-interaktif](/docs/id/headless#get-structured-output) gagal dalam kompilasi JSON Schema, sehingga `claude` keluar dengan kode 1 alih-alih menjalankan prompt. Sebelum v2.1.205, skema yang tidak valid menghasilkan output tidak terstruktur tanpa error, dan skema apa pun yang menggunakan kata kunci `format` diperlakukan sebagai tidak valid.

2943 2966 

2944```text theme={null}2967```text theme={null}

2945Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values2968Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values

2946```2969```

2947 2970 

2948Teks setelah titik dua kedua adalah diagnostik validator dan menamai keyword atau lokasi yang gagal. Skema yang menggunakan keyword `format`, seperti `"format": "email"`, valid: Claude Code menerima `format` sebagai anotasi dan tidak memberlakukannya.2971Teks setelah titik dua kedua adalah diagnostik dari validator dan menyebutkan kata kunci atau lokasi yang gagal. Skema yang menggunakan kata kunci `format`, seperti `"format": "email"`, adalah valid: Claude Code menerima `format` sebagai anotasi dan tidak menerapkannya.

2949 2972 

2950Claude Code menjalankan dua pemeriksaan sebelum kompilasi skema: menolak nilai yang tidak dapat diuraikan JSON dengan `Error: --json-schema is not valid JSON`, dan JSON valid yang bukan objek dengan `Error: --json-schema must be a JSON object`.2973Claude Code menjalankan dua pemeriksaan sebelum kompilasi skema: Claude Code menolak nilai yang bukan JSON yang dapat di-parse dengan `Error: --json-schema is not valid JSON`, dan JSON valid yang bukan objek dengan `Error: --json-schema must be a JSON object`.

2951 2974 

2952**Yang harus dilakukan:**2975**Yang harus dilakukan:**

2953 2976 

2954* Perbaiki bagian skema yang diagnostik namakan, kemudian jalankan kembali command2977* Perbaiki bagian skema yang disebutkan oleh diagnostik, lalu jalankan ulang perintah

2955* Lihat [Get structured output](/docs/id/headless#get-structured-output) untuk skema kerja dan command2978* Lihat [Mendapatkan output terstruktur](/docs/id/headless#get-structured-output) untuk skema dan perintah yang berfungsi

2956 2979 

2957<h3 id="settings-file-exceeds-the-2mib-limit">2980<h3 id="settings-file-exceeds-the-2mib-limit">

2958 File pengaturan melebihi batas 2MiB2981 File pengaturan melebihi batas 2MiB

2959</h3>2982</h3>

2960 2983 

2961File yang Anda berikan ke [`--settings`](/docs/id/cli-reference#cli-flags) lebih besar dari 2 MiB, jadi `claude` keluar dengan kode 1 saat startup alih-alih memuatnya. Sebelum v2.1.214, Claude Code membaca file tanpa pemeriksaan ukuran, dan file multi-gigabyte atau file perangkat seperti `/dev/zero` menumbuhkan memori tanpa batas.2984File yang Anda teruskan ke [`--settings`](/docs/id/cli-reference#cli-flags) lebih besar dari 2 MiB, sehingga `claude` keluar dengan kode 1 saat startup alih-alih memuatnya. Sebelum v2.1.214, Claude Code membaca file tanpa pemeriksaan ukuran, dan file berukuran beberapa gigabyte atau file perangkat seperti `/dev/zero` membuat memori bertambah tanpa batas.

2962 2985 

2963```text theme={null}2986```text theme={null}

2964Error: Settings file exceeds the 2MiB limit: /path/to/settings.json2987Error: Settings file exceeds the 2MiB limit: /path/to/settings.json

2965```2988```

2966 2989 

2967Claude Code menolak path `--settings` yang bukan file reguler dengan cara yang sama: perangkat, FIFO, atau socket melaporkan `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))` diikuti oleh path, dan direktori melaporkan alasan `EISDIR`.2990Claude Code menolak path `--settings` yang bukan file biasa dengan cara yang sama: perangkat, FIFO, atau socket melaporkan `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))` diikuti oleh path-nya, dan direktori melaporkan alasan `EISDIR`.

2968 2991 

2969**Yang harus dilakukan:**2992**Yang harus dilakukan:**

2970 2993 

2971* Arahkan `--settings` ke file pengaturan JSON reguler di bawah 2 MiB. Lihat [Settings](/docs/id/settings) untuk formatnya.2994* Arahkan `--settings` ke file pengaturan JSON biasa yang berukuran di bawah 2 MiB. Lihat [Pengaturan](/docs/id/settings) untuk formatnya.

2972 2995 

2973<h3 id="the-current-directory-no-longer-exists">2996<h3 id="the-current-directory-no-longer-exists">

2974 Direktori saat ini tidak lagi ada2997 Direktori saat ini sudah tidak ada

2975</h3>2998</h3>

2976 2999 

2977Anda memulai `claude` dari direktori yang dihapus atau dipindahkan setelah shell Anda memasukkannya, misalnya worktree atau direktori temp yang shell lain hapus. Claude Code tidak dapat membaca direktori kerjanya, jadi keluar dengan kode 1 sebelum memulai sesi, dalam mode interaktif dan [non-interaktif](/docs/id/headless) sama-sama. Sebelum v2.1.239, Claude Code mogok dengan sumber bundle minified dan `ENOENT ... uv_cwd` stack mentah di stderr alih-alih pesan ini.3000Anda memulai `claude` dari direktori yang dihapus atau dipindahkan setelah shell Anda memasukinya, misalnya worktree atau direktori sementara yang dihapus oleh shell lain. Claude Code tidak dapat membaca direktori kerjanya, sehingga keluar dengan kode 1 sebelum memulai sesi, baik dalam mode interaktif maupun [non-interaktif](/docs/id/headless). Sebelum v2.1.239, Claude Code crash dengan sumber bundle yang di-minify dan stack `ENOENT ... uv_cwd` mentah di stderr alih-alih pesan ini.

2978 3001 

2979```text theme={null}3002```text theme={null}

2980The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.3003The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.


2983 3006 

2984Penyebab dan perbaikannya sama untuk kedua bentuk.3007Penyebab dan perbaikannya sama untuk kedua bentuk.

2985 3008 

2986Ketika Claude Code tidak dapat membaca direktori kerja karena alasan berbeda, seperti perubahan izin, pesan menamai kode kesalahan sebagai gantinya: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`3009Ketika Claude Code tidak dapat membaca direktori kerja karena alasan lain, seperti perubahan permission, pesan menyebutkan kode error sebagai gantinya: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`

2987 3010 

2988Di macOS, `EPERM` untuk direktori di `~/Desktop`, `~/Documents`, `~/Downloads`, atau iCloud Drive biasanya berarti macOS memblokir aplikasi terminal Anda dari folder tersebut. Command lain yang membaca folder itu gagal dengan cara yang sama: `ls` di sana melaporkan `Operation not permitted`, bahkan dengan `sudo`.3011Di macOS, `EPERM` untuk direktori di `~/Desktop`, `~/Documents`, `~/Downloads`, atau iCloud Drive biasanya berarti macOS memblokir aplikasi terminal Anda dari folder tersebut. Perintah lain yang membaca folder tersebut gagal dengan cara yang sama: `ls` di sana melaporkan `Operation not permitted`, bahkan dengan `sudo`.

2989 3012 

2990**Yang harus dilakukan:**3013**Yang harus dilakukan:**

2991 3014 

2992* Ubah ke direktori yang ada, seperti direktori home atau project Anda, kemudian jalankan `claude` lagi3015* Pindah ke direktori yang ada, seperti direktori home atau direktori proyek Anda, lalu jalankan `claude` lagi

2993* Jika direktori dibuat kembali di path yang sama, shell Anda masih memegang yang dihapus. Jalankan `cd "$PWD"` atau tinggalkan dan masuki kembali direktori, kemudian jalankan `claude` lagi3016* Jika direktori dibuat ulang di path yang sama, shell Anda masih memegang direktori yang telah dihapus. Jalankan `cd "$PWD"` atau keluar lalu masuk kembali ke direktori tersebut, lalu jalankan `claude` lagi

2994* Untuk `EPERM` di macOS, keluar dari aplikasi terminal Anda dengan Cmd+Q, buka lagi, kembali ke folder itu, dan jalankan `claude`. Jika `ls` di folder itu masih gagal, buka **System Settings > Privacy & Security > Files and Folders**, aktifkan folder untuk aplikasi terminal Anda, kemudian buka kembali terminal3017* Untuk `EPERM` di macOS, tutup aplikasi terminal Anda dengan Cmd+Q, buka kembali, kembali ke folder tersebut, dan jalankan `claude`. Jika `ls` di folder tersebut masih gagal, buka **System Settings > Privacy & Security > Files and Folders**, aktifkan folder tersebut untuk aplikasi terminal Anda, lalu buka kembali terminal

2995 3018 

2996<h3 id="temp-directory-refused-or-cannot-be-created">3019<h3 id="temp-directory-refused-or-cannot-be-created">

2997 Direktori temp ditolak atau tidak dapat dibuat3020 Direktori sementara ditolak atau tidak dapat dibuat

2998</h3>3021</h3>

2999 3022 

3000Di macOS dan Linux, Claude Code membuat direktori temp pribadi saat startup, `claude-<uid>` di bawah direktori temp sistem atau override [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars). Ketika direktori tidak dapat dibuat, atau entri yang sudah ada di path itu gagal pemeriksaan keamanan, Claude Code mencetak kegagalan ke stderr dan keluar dengan kode 1 alih-alih memulai sesi:3023Di macOS dan Linux, Claude Code membuat direktori sementara pribadi saat startup, yaitu `claude-<uid>` di bawah direktori sementara sistem atau override [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars). Ketika direktori tidak dapat dibuat, atau entri yang sudah ada di path tersebut gagal dalam pemeriksaan keamanan, Claude Code mencetak kegagalan tersebut ke stderr dan keluar dengan kode 1 alih-alih memulai sesi:

3001 3024 

3002```text wrap theme={null}3025```text wrap theme={null}

3003ENOSPC: no space left on device, mkdir '/tmp/claude-501'3026ENOSPC: no space left on device, mkdir '/tmp/claude-501'


3011 3034 

3012**Yang harus dilakukan:**3035**Yang harus dilakukan:**

3013 3036 

3014* Untuk `ENOSPC`, bebaskan ruang disk di volume yang menyimpan direktori temp3037* Untuk `ENOSPC`, kosongkan ruang disk pada volume yang menampung direktori sementara

3015* Untuk bentuk `Refusing to use it`, hapus entri bernama itu sendiri, bukan apa yang link tunjuk, dan mulai Claude Code lagi; untuk bentuk `owned by uid`, hanya administrator atau pengguna itu yang dapat menghapusnya3038* Untuk bentuk `Refusing to use it`, hapus entri yang disebutkan itu sendiri, bukan apa yang ditunjuk oleh link, lalu mulai Claude Code lagi; untuk bentuk `owned by uid`, hanya administrator atau pengguna tersebut yang dapat menghapusnya

3016* Untuk `is not readable`, jalankan `chmod 0700` di direktori bernama, atau hapus dan mulai lagi3039* Untuk `is not readable`, jalankan `chmod 0700` pada direktori yang disebutkan, atau hapus direktori tersebut dan mulai lagi

3017* Dalam kasus apa pun, atur [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars) ke direktori yang Anda kontrol dan mulai Claude Code lagi, meninggalkan path yang ditolak sendirian3040* Dalam kasus mana pun, atur [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars) ke direktori yang Anda kendalikan dan mulai Claude Code lagi, dengan membiarkan path yang ditolak apa adanya

3018 3041 

3019<h3 id="directory-couldnt-be-resolved-to-a-real-location">3042<h3 id="directory-couldnt-be-resolved-to-a-real-location">

3020 Direktori tidak dapat diselesaikan ke lokasi nyata3043 Direktori tidak dapat di-resolve ke lokasi sebenarnya

3021</h3>3044</h3>

3022 3045 

3023Anda menjalankan `/add-dir` untuk subdirektori dari direktori kerja Anda, dan Claude Code tidak dapat menyelesaikan direktori ke lokasi nyatanya.3046Anda menjalankan `/add-dir` untuk subdirektori dari direktori kerja Anda, dan Claude Code tidak dapat me-resolve direktori tersebut ke lokasi sebenarnya.

3024 3047 

3025Anda sudah memiliki akses file ke subdirektori dari direktori kerja, jadi `/add-dir` hanya memuat skill, command, dan agent-nya. Sebelum memuatnya, Claude Code memeriksa bahwa lokasi nyata direktori, dengan symlink apa pun diselesaikan, berada di dalam direktori kerja. Ketika Claude Code tidak dapat menyelesaikan lokasi itu, tidak memuat apa pun dan menampilkan pesan ini:3048Anda sudah memiliki akses file ke subdirektori dari direktori kerja, sehingga `/add-dir` hanya memuat skill, perintah, dan agent-nya. Sebelum memuatnya, Claude Code memeriksa bahwa lokasi sebenarnya dari direktori tersebut, dengan semua symlink telah di-resolve, berada di dalam direktori kerja. Ketika Claude Code tidak dapat me-resolve lokasi tersebut, Claude Code tidak memuat apa pun dan menampilkan pesan ini:

3026 3049 

3027```text theme={null}3050```text theme={null}

3028packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.3051packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.


3030 3053 

3031**Yang harus dilakukan:**3054**Yang harus dilakukan:**

3032 3055 

3033* Periksa bahwa path menamai direktori nyata di dalam direktori kerja, kemudian jalankan `/add-dir` lagi3056* Periksa bahwa path tersebut menunjuk ke direktori nyata di dalam direktori kerja, lalu jalankan `/add-dir` lagi

3034* Pesan tidak mengubah akses file Anda; hanya melaporkan bahwa konten `.claude/` direktori tidak dimuat3057* Pesan ini tidak mengubah akses file Anda; pesan ini hanya melaporkan bahwa konten `.claude/` dari direktori tersebut tidak dimuat

3035 3058 

3036Sebelum v2.1.261, pesan ini juga muncul untuk setiap `/add-dir <subdirectory>` ketika direktori kerja berada di automount `/net/<host>`, di mana Claude Code menolak untuk menyelesaikan path dengan desain; direktori baik-baik saja dan mencoba lagi tidak bisa membantu.3059Sebelum v2.1.261, pesan ini juga muncul untuk setiap `/add-dir <subdirectory>` ketika direktori kerja berada di automount `/net/<host>`, di mana Claude Code memang dirancang untuk tidak me-resolve path; direktorinya baik-baik saja dan mencoba ulang tidak membantu.

3037 3060 

3038<h3 id="workspace-not-trusted-when-starting-remote-control">3061<h3 id="workspace-not-trusted-when-starting-remote-control">

3039 Workspace tidak dipercaya saat memulai Remote Control3062 Workspace tidak dipercaya saat memulai Remote Control

3040</h3>3063</h3>

3041 3064 

3042Anda memulai mode server [Remote Control](/docs/id/remote-control) dengan `claude remote-control` atau alias `claude rc` di direktori yang belum Anda percayai, dan command tidak dapat menanyakan apakah akan mempercayainya. Misalnya, input atau output standar command bukan terminal karena salah satunya dialihkan atau dipipa. Command keluar dengan kode 1:3065Anda memulai mode server [Remote Control](/docs/id/remote-control) dengan `claude remote-control` atau alias `claude rc` di direktori yang belum Anda percayai, dan perintah tersebut tidak dapat menanyakan apakah Anda ingin memercayainya. Misalnya, input standar atau output standar perintah bukan terminal karena salah satunya dialihkan atau di-pipe. Perintah keluar dengan kode 1:

3043 3066 

3044```text theme={null}3067```text theme={null}

3045Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.3068Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.

3046```3069```

3047 3070 

3048Dua varian yang juga dimulai dengan `Error: Workspace not trusted.` muncul di terminal juga terlalu kecil untuk menunjukkan apa yang mempercayai direktori aktifkan, atau yang tidak melaporkan ukurannya. Perbesar jendela atau beralih ke jendela terminal normal, kemudian jalankan `claude rc` lagi.3071Dua varian yang juga diawali dengan `Error: Workspace not trusted.` muncul di terminal yang terlalu kecil untuk menampilkan apa yang diaktifkan dengan memercayai direktori tersebut, atau terminal yang tidak melaporkan ukurannya. Perbesar jendela atau beralih ke jendela terminal normal, lalu jalankan `claude rc` lagi.

3049 3072 

3050Di direktori home Anda pesan berbeda, karena dialog kepercayaan workspace tidak pernah menyimpan kepercayaan untuk direktori home, jadi menerimanya di sana tidak dapat memenuhi pemeriksaan ini. Sebelum v2.1.214, direktori home menunjukkan pesan di atas, yang sarannya tidak dapat berhasil di sana.3073Di direktori home Anda, pesannya berbeda, karena dialog kepercayaan workspace tidak pernah menyimpan kepercayaan untuk direktori home, sehingga menerimanya di sana tidak dapat memenuhi pemeriksaan ini. Sebelum v2.1.214, direktori home menampilkan pesan di atas, yang sarannya tidak dapat berhasil di sana.

3051 3074 

3052```text theme={null}3075```text theme={null}

3053Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).3076Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).

3054```3077```

3055 3078 

3056Jika Anda menjawab `n` atau tekan Enter di pertanyaan [`Trust <directory>?`](/docs/id/remote-control#requirements), command mencetak pesan `Remote Control did not start` yang menamai direktori dan keluar dengan kode 1. Jalankan `claude rc` lagi untuk menjawab `y`.3079Jika Anda menjawab `n` atau menekan Enter pada [pertanyaan `Trust <directory>?`](/docs/id/remote-control#requirements), perintah mencetak pesan `Remote Control did not start` yang menyebutkan direktori tersebut dan keluar dengan kode 1. Jalankan `claude rc` lagi untuk menjawab `y`.

3057 3080 

3058**Yang harus dilakukan:**3081**Yang harus dilakukan:**

3059 3082 

3060* Percayai direktori dari terminal terlebih dahulu: jalankan `claude rc` di sana dan jawab `y`, atau jalankan `claude` di sana dan terima [dialog kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust), kemudian jalankan command asli Anda lagi3083* Percayai direktori dari terminal terlebih dahulu: jalankan `claude rc` di sana dan jawab `y`, atau jalankan `claude` di sana dan terima [dialog kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust), lalu jalankan perintah asli Anda lagi

3061* Di direktori home Anda, ubah ke direktori project dan mulai Remote Control di sana3084* Di direktori home Anda, pindah ke direktori proyek dan mulai Remote Control di sana

3062 3085 

3063Sebelum v2.1.284, command tidak pernah menanyakan, bahkan di terminal.3086Sebelum v2.1.284, perintah tersebut tidak pernah bertanya, bahkan di terminal.

3064 3087 

3065<h3 id="not-carried-over-to-the-sessions-remote-control-starts">3088<h3 id="not-carried-over-to-the-sessions-remote-control-starts">

3066 Tidak dibawa ke sesi yang Remote Control mulai3089 Tidak diteruskan ke sesi yang dimulai Remote Control

3067</h3>3090</h3>

3068 3091 

3069Anda memulai [Remote Control](/docs/id/remote-control) dengan flag `claude` global sebelum verb `remote-control`, yang akan membatasi atau mengonfigurasi sesi yang Remote Control mulai, seperti `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, atau `--mcp-config`. Flag yang ditempatkan sebelum verb tidak pernah mencapai sesi tersebut. Claude Code menolak untuk memulai sebagai gantinya, menamai flag:3092Anda memulai [Remote Control](/docs/id/remote-control) dengan flag `claude` global sebelum verb `remote-control`, yaitu flag yang akan membatasi atau mengonfigurasi sesi yang dimulai Remote Control, seperti `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, atau `--mcp-config`. Flag yang ditempatkan sebelum verb tidak pernah mencapai sesi tersebut. Claude Code menolak untuk memulai, dengan menyebutkan flag tersebut:

3070 3093 

3071```text theme={null}3094```text theme={null}

3072Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).3095Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).

3073```3096```

3074 3097 

3075Claude Code tidak menolak flag global yang tidak berbahaya untuk dijatuhkan, seperti `--verbose`, `--model`, atau wrapper-injected `--session-id` atau `--plugin-dir`: mengabaikannya dan Remote Control dimulai.3098Claude Code tidak menolak flag global yang aman untuk diabaikan, seperti `--verbose`, `--model`, atau `--session-id` maupun `--plugin-dir` yang disisipkan oleh wrapper: Claude Code mengabaikannya dan Remote Control dimulai.

3076 3099 

3077Claude Code juga menolak untuk memulai untuk flag global yang belum dikenalinya sebagai tidak berbahaya, jadi flag yang ditambahkan dalam rilis lebih baru dapat muncul dalam pesan ini sampai rilis kemudian menandainya tidak berbahaya.3100Claude Code juga menolak untuk memulai untuk flag global yang belum dikenalinya sebagai aman, sehingga flag yang ditambahkan dalam rilis yang lebih baru dapat muncul dalam pesan ini sampai rilis berikutnya menandainya sebagai aman.

3078 3101 

3079**Yang harus dilakukan:**3102**Yang harus dilakukan:**

3080 3103 

3081* Hapus flag dari sebelum verb dan berikan [opsi Remote Control sendiri](/docs/id/remote-control#start-a-remote-control-session) setelahnya; `claude remote-control --help` mencantumnya3104* Hapus flag dari posisi sebelum verb dan teruskan [opsi Remote Control sendiri](/docs/id/remote-control#start-a-remote-control-session) setelahnya; `claude remote-control --help` mencantumkan opsi-opsi tersebut

3082* Ketika flag yang ditolak adalah `--permission-mode`, jalankan `claude remote-control --permission-mode <mode>` untuk mengatur mode izin untuk sesi yang Remote Control mulai3105* Ketika flag yang ditolak adalah `--permission-mode`, jalankan `claude remote-control --permission-mode <mode>` untuk mengatur mode izin bagi sesi yang dimulai Remote Control

3083 3106 

3084Sebelum v2.1.248, `claude remote-control` tidak menerima flag-nya sendiri ketika flag global datang terlebih dahulu, dan command gagal dengan kesalahan unknown option.3107Sebelum v2.1.248, `claude remote-control` tidak menerima flag-nya sendiri ketika flag global diletakkan lebih dulu, dan perintah gagal dengan error `unknown option`.

3085 3108 

3086<h3 id="claude-import-is-not-yet-available-in-this-build">3109<h3 id="claude-import-is-not-yet-available-in-this-build">

3087 claude import belum tersedia dalam build ini3110 claude import belum tersedia dalam build ini

3088</h3>3111</h3>

3089 3112 

3090Anda menjalankan [`claude import`](/docs/id/cli-reference#cli-commands), dan Claude Code menemukan alur impor dimatikan, jadi command keluar dengan kode 1 alih-alih memulai impor. Sebelum v2.1.222, build dengan alur impor mati memperlakukan `import` sebagai prompt dan memulai sesi interaktif alih-alih mencetak pesan ini.3113Anda menjalankan [`claude import`](/docs/id/cli-reference#cli-commands), dan Claude Code mendapati alur impor dalam keadaan nonaktif, sehingga perintah keluar dengan kode 1 alih-alih memulai impor. Sebelum v2.1.222, build dengan alur impor nonaktif memperlakukan `import` sebagai prompt dan memulai sesi interaktif alih-alih mencetak pesan ini.

3091 3114 

3092```text theme={null}3115```text theme={null}

3093`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.3116`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.

3094```3117```

3095 3118 

3096Claude Code mengaktifkan `claude import` melalui feature flag yang diambilnya dari Anthropic dan disimpan di disk. Pesan ini berarti nilai yang disimpan mati. Penyebabnya biasanya salah satu dari berikut:3119Claude Code mengaktifkan `claude import` melalui feature flag yang diambilnya dari Anthropic dan disimpan dalam cache di disk. Pesan ini berarti nilai yang tersimpan dalam cache dinonaktifkan. Penyebabnya biasanya salah satu dari berikut ini:

3097 3120 

3098* Anda belum memulai sesi sejak instalasi, jadi Claude Code belum mengambil flag. `claude import` pertama dapat mencetak ini bahkan ketika fitur tersedia untuk Anda.3121* Anda belum memulai sesi sejak instalasi, sehingga Claude Code belum mengambil flag tersebut. `claude import` yang pertama dapat mencetak pesan ini meskipun fitur tersebut tersedia untuk Anda.

3099* Anda menggunakan Claude Code melalui Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform di AWS, atau melalui [Claude apps gateway](/docs/id/claude-apps-gateway#availability-and-limitations). Claude Code tidak mengambil feature flag dalam sesi ini, jadi `claude import` tetap tidak tersedia.3122* Anda menggunakan Claude Code melalui Amazon Bedrock, Agent Platform dari Google Cloud, Microsoft Foundry, atau Claude Platform di AWS, atau melalui [Claude apps gateway](/docs/id/claude-apps-gateway#availability-and-limitations). Claude Code tidak mengambil feature flag dalam sesi ini, sehingga `claude import` tetap tidak tersedia.

3100* Anda mengatur `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK`, atau [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars), yang mematikan pengambilan feature flag, jadi `claude import` tetap tidak tersedia.3123* Anda mengatur `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK`, atau [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars), yang menonaktifkan pengambilan feature flag, sehingga `claude import` tetap tidak tersedia.

3101 3124 

3102**Yang harus dilakukan:**3125**Yang harus dilakukan:**

3103 3126 

3104* Pada instalasi segar, mulai `claude`, tunggu sesi dimuat, keluar, dan jalankan `claude import` lagi3127* Pada instalasi baru, mulai `claude`, tunggu hingga sesi dimuat, keluar, lalu jalankan `claude import` lagi

3105* Di mana pengambilan feature flag tetap mati, atur konfigurasi sendiri: tambahkan server MCP dengan [`claude mcp add`](/docs/id/mcp#installing-mcp-servers), dan buat file [`CLAUDE.md`](/docs/id/memory#how-claude-md-files-load), [skill dan command](/docs/id/skills#where-skills-live), dan [subagent](/docs/id/sub-agents#choose-the-subagent-scope) yang ingin Anda bawa. Pesan juga menamai `~/.claude/settings.json`. Dari konfigurasi yang `claude import` bawa, file itu hanya menyimpan [mode izin](/docs/id/settings-reference#permission-settings); Claude Code tidak membaca server MCP darinya.3128* Jika pengambilan feature flag tetap nonaktif, siapkan konfigurasi sendiri: tambahkan server MCP dengan [`claude mcp add`](/docs/id/mcp#installing-mcp-servers), dan buat [file `CLAUDE.md`](/docs/id/memory#how-claude-md-files-load), [skill dan perintah](/docs/id/skills#where-skills-live), serta [subagent](/docs/id/sub-agents#choose-the-subagent-scope) yang ingin Anda bawa. Pesan tersebut juga menyebutkan `~/.claude/settings.json`. Dari konfigurasi yang dibawa oleh `claude import`, file tersebut hanya menyimpan [mode izin](/docs/id/settings-reference#permission-settings); Claude Code tidak membaca server MCP dari file tersebut.

3106 3129 

3107<h3 id="could-not-read-claude-code-config">3130<h3 id="could-not-read-claude-code-config">

3108 Tidak dapat membaca konfigurasi Claude Code3131 Tidak dapat membaca konfigurasi Claude Code

3109</h3>3132</h3>

3110 3133 

3111Anda menjalankan [`claude import`](/docs/id/cli-reference#cli-commands) sementara Claude Code tidak dapat menguraikan `~/.claude.json`, file tempat menyimpan login dan status per-project Anda. Subcommand membaca file itu untuk memeriksa ketersediaan tetapi tidak menampilkan dialog pemulihan yang sesi interaktif tampilkan, jadi keluar dengan kode 1. Sebelum v2.1.222, `claude import` dengan file konfigurasi yang tidak dapat dibaca memulai sesi interaktif, yang dialog pemulihannya menangani file.3134Anda menjalankan [`claude import`](/docs/id/cli-reference#cli-commands) ketika Claude Code tidak dapat mem-parse `~/.claude.json`, file tempat Claude Code menyimpan login dan status per proyek Anda. Subperintah tersebut membaca file itu untuk memeriksa ketersediaan tetapi tidak menampilkan dialog pemulihan yang ditampilkan sesi interaktif, sehingga keluar dengan kode 1. Sebelum v2.1.222, `claude import` dengan file konfigurasi yang tidak dapat dibaca memulai sesi interaktif, yang dialog pemulihannya menangani file tersebut.

3112 3135 

3113```text theme={null}3136```text theme={null}

3114Could not read Claude Code config — run `claude` with no arguments to recover it.3137Could not read Claude Code config — run `claude` with no arguments to recover it.


3116 3139 

3117**Yang harus dilakukan:**3140**Yang harus dilakukan:**

3118 3141 

3119* Jalankan `claude` tanpa argumen. Claude Code mendeteksi file tidak valid dan menawarkan untuk mengatur ulangnya. Kemudian jalankan `claude import` lagi.3142* Jalankan `claude` tanpa argumen. Claude Code mendeteksi file yang tidak valid dan menawarkan untuk mengatur ulangnya. Kemudian jalankan `claude import` lagi.

3120* Untuk menyimpan edit manual yang telah Anda buat, perbaiki sintaks JSON di `~/.claude.json` di editor sebagai gantinya, kemudian jalankan kembali `claude import`3143* Untuk mempertahankan pengeditan manual yang telah Anda buat, perbaiki sintaks JSON di `~/.claude.json` dalam editor, lalu jalankan ulang `claude import`

3121 3144 

3122<h3 id="could-not-import-a-server-from-claude-desktop">3145<h3 id="could-not-import-a-server-from-claude-desktop">

3123 Tidak dapat mengimpor server dari Claude Desktop3146 Tidak dapat mengimpor server dari Claude Desktop

3124</h3>3147</h3>

3125 3148 

3126Claude Code tidak dapat menambahkan salah satu server yang Anda pilih di `claude mcp add-from-claude-desktop`. Command masih mengimpor server yang dipilih lainnya dan mencetak satu baris per server yang tidak dapat ditambahkan. Sebelum v2.1.205, server pertama yang gagal menghentikan impor.3149Claude Code tidak dapat menambahkan salah satu server yang Anda pilih dalam `claude mcp add-from-claude-desktop`. Perintah tersebut tetap mengimpor server lain yang dipilih dan mencetak satu baris per server yang tidak dapat ditambahkan. Sebelum v2.1.205, server pertama yang gagal menghentikan impor.

3127 3150 

3128```text theme={null}3151```text theme={null}

3129Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.3152Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.

3130```3153```

3131 3154 

3132Teks setelah nama server adalah alasannya. Yang paling umum adalah pemeriksaan nama: Claude Desktop memungkinkan karakter dalam nama server, seperti spasi dan titik, yang `claude mcp` batasi ke huruf, angka, tanda hubung, dan garis bawah. Alasan lain termasuk konfigurasi server yang gagal validasi dan server yang diblokir oleh [kebijakan MCP](/docs/id/managed-mcp) organisasi Anda.3155Teks setelah nama server adalah alasannya. Yang paling umum adalah pemeriksaan nama: Claude Desktop mengizinkan karakter dalam nama server, seperti spasi dan titik, yang dibatasi oleh `claude mcp` hanya pada huruf, angka, tanda hubung, dan garis bawah. Alasan lainnya termasuk konfigurasi server yang gagal validasi dan server yang diblokir oleh [kebijakan MCP](/docs/id/managed-mcp) organisasi Anda.

3133 3156 

3134**Yang harus dilakukan:**3157**Yang harus dilakukan:**

3135 3158 

3136* Ubah nama server di `claude_desktop_config.json` untuk hanya menggunakan huruf, angka, tanda hubung, dan garis bawah, kemudian jalankan `claude mcp add-from-claude-desktop` lagi3159* Ganti nama server di `claude_desktop_config.json` agar hanya menggunakan huruf, angka, tanda hubung, dan garis bawah, lalu jalankan `claude mcp add-from-claude-desktop` lagi

3137* Tambahkan server itu langsung dengan `claude mcp add` atau `claude mcp add-json` di bawah nama yang valid. Lihat [Import MCP servers from Claude Desktop](/docs/id/mcp#import-mcp-servers-from-claude-desktop).3160* Tambahkan server tersebut secara langsung dengan `claude mcp add` atau `claude mcp add-json` dengan nama yang valid. Lihat [Mengimpor server MCP dari Claude Desktop](/docs/id/mcp#import-mcp-servers-from-claude-desktop).

3138 3161 

3139<h3 id="cannot-add-mcp-server-to-the-managed-scope">3162<h3 id="cannot-add-mcp-server-to-the-managed-scope">

3140 Tidak dapat menambahkan server MCP ke scope yang dikelola3163 Tidak dapat menambahkan server MCP ke cakupan managed

3141</h3>3164</h3>

3142 3165 

3143Anda menjalankan `claude mcp add` atau `claude mcp add-json` dengan `--scope managed`. Scope itu menyimpan server yang organisasi Anda sediakan melalui pengaturan yang dikelola [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers). Claude Code membacanya dari pengaturan yang dikelola saja, jadi command tidak dapat menulis server ke scope itu.3166Anda menjalankan `claude mcp add` atau `claude mcp add-json` dengan `--scope managed`. Cakupan tersebut menampung server yang disediakan organisasi Anda melalui pengaturan terkelola [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers). Claude Code hanya membacanya dari pengaturan terkelola, sehingga perintah tersebut tidak dapat menulis server ke cakupan tersebut.

3144 3167 

3145```text theme={null}3168```text theme={null}

3146Cannot add MCP server to scope: managed3169Cannot add MCP server to scope: managed


3148 3171 

3149**Yang harus dilakukan:**3172**Yang harus dilakukan:**

3150 3173 

3151* Tambahkan server ke scope yang dapat Anda tulis: `local`, `user`, atau `project`. Tanpa `--scope`, command menggunakan `local`. Lihat [MCP installation scopes](/docs/id/mcp#mcp-installation-scopes)3174* Tambahkan server ke cakupan yang dapat Anda tulis: `local`, `user`, atau `project`. Tanpa `--scope`, perintah menggunakan `local`. Lihat [Cakupan instalasi MCP](/docs/id/mcp#mcp-installation-scopes)

3152* Untuk menyediakan server ke setiap pengguna di organisasi Anda, tambahkan ke [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) dalam pengaturan yang dikelola yang Anda deploy3175* Untuk menyediakan server bagi setiap pengguna di organisasi Anda, tambahkan ke [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) dalam pengaturan terkelola yang Anda deploy

3153 3176 

3154<h3 id="cant-read-mcp-json">3177<h3 id="cant-read-mcp-json">

3155 Tidak dapat membaca .mcp.json3178 Tidak dapat membaca .mcp.json

3156</h3>3179</h3>

3157 3180 

3158Command yang membaca [`.mcp.json`](/docs/id/mcp#project-scope) project, seperti `claude mcp add` atau `claude mcp add-json` dengan `--scope project`, atau `claude mcp remove`, menemukan bahwa file di direktori saat ini bukan file reguler atau lebih besar dari 2 MiB, jadi keluar dengan kesalahan ini alih-alih membaca file.3181Perintah yang membaca [`.mcp.json`](/docs/id/mcp#project-scope) proyek, seperti `claude mcp add` atau `claude mcp add-json` dengan `--scope project`, atau `claude mcp remove`, mendapati bahwa file di direktori Anda saat ini bukan file biasa atau lebih besar dari 2 MiB, sehingga perintah keluar dengan error ini alih-alih membaca file tersebut.

3159 3182 

3160```text theme={null}3183```text theme={null}

3161Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.3184Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.

3162```3185```

3163 3186 

3164Sebelum v2.1.257, FIFO di `.mcp.json` membiarkan command menunggu selamanya tanpa output, dan symlink ke file perangkat seperti `/dev/zero` menumbuhkan memori sampai proses dibunuh.3187Sebelum v2.1.257, FIFO di `.mcp.json` membuat perintah menunggu selamanya tanpa output, dan symlink ke file perangkat seperti `/dev/zero` membuat memori bertambah hingga proses dihentikan.

3165 3188 

3166**Yang harus dilakukan:**3189**Yang harus dilakukan:**

3167 3190 

3168* Periksa apa yang duduk di `.mcp.json` di direktori saat ini. Ganti dengan file JSON biasa dalam [format project-scope](/docs/id/mcp#project-scope), atau hapus, kemudian jalankan command lagi.3191* Periksa apa yang ada di `.mcp.json` di direktori Anda saat ini. Ganti dengan file JSON biasa dalam [format cakupan proyek](/docs/id/mcp#project-scope), atau hapus, lalu jalankan perintah lagi.

3169 3192 

3170<h3 id="mcp-server-was-not-saved-or-removed">3193<h3 id="mcp-server-was-not-saved-or-removed">

3171 Server MCP tidak disimpan atau dihapus3194 Server MCP tidak disimpan atau dihapus

3172</h3>3195</h3>

3173 3196 

3174Anda menjalankan `claude mcp add`, `claude mcp add-json`, atau `claude mcp remove` untuk server dalam scope `user` atau `local` [scope](/docs/id/mcp#mcp-installation-scopes). Kedua scope disimpan di `~/.claude.json`, dan perubahan tidak ada dalam file itu ketika Claude Code membacanya kembali setelah menulis. Command keluar dengan kesalahan ini alih-alih baris suksesnya.3197Anda menjalankan `claude mcp add`, `claude mcp add-json`, atau `claude mcp remove` untuk server dalam [cakupan](/docs/id/mcp#mcp-installation-scopes) `user` atau `local`. Kedua cakupan disimpan di `~/.claude.json`, dan perubahan tersebut tidak ada di file itu ketika Claude Code membacanya kembali setelah menulis. Perintah keluar dengan error ini alih-alih baris keberhasilannya.

3175 3198 

3176```text theme={null}3199```text theme={null}

3177MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.3200MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.

3178```3201```

3179 3202 

3180Setelah remove, pesan membaca `was not removed from` dan berakhir dengan `then remove the server again`. Untuk server scope `local`, path diikuti oleh direktori project yang entri milik, sebagai `(local scope for /path/to/project)`.3203Setelah penghapusan, pesan berbunyi `was not removed from` dan diakhiri dengan `then remove the server again`. Untuk server dengan cakupan `local`, path diikuti oleh direktori proyek tempat entri tersebut berada, sebagai `(local scope for /path/to/project)`.

3181 3204 

3182Sebelum v2.1.283, `claude mcp add`, `claude mcp add-json`, dan `claude mcp remove` melaporkan kesuksesan bahkan ketika perubahan tidak mencapai file.3205Sebelum v2.1.283, `claude mcp add`, `claude mcp add-json`, dan `claude mcp remove` melaporkan keberhasilan bahkan ketika perubahan tidak mencapai file.

3183 3206 

3184**Yang harus dilakukan:**3207**Yang harus dilakukan:**

3185 3208 

3186* Buat file yang pesan namakan dapat ditulis, atau jalankan command di luar sandbox, kemudian jalankan command add atau remove yang sama lagi.3209* Jadikan file yang disebutkan dalam pesan dapat ditulis, atau jalankan perintah di luar sandbox, lalu jalankan perintah add atau remove yang sama lagi.

3187 3210 

3188<h3 id="mcp-server-may-not-have-been-saved-or-removed">3211<h3 id="mcp-server-may-not-have-been-saved-or-removed">

3189 Server MCP mungkin tidak disimpan atau dihapus3212 Server MCP mungkin tidak disimpan atau dihapus

3190</h3>3213</h3>

3191 3214 

3192Anda menjalankan `claude mcp add`, `claude mcp add-json`, atau `claude mcp remove` untuk server dalam scope `user` atau `local` [scope](/docs/id/mcp#mcp-installation-scopes), dan Claude Code tidak dapat membaca `~/.claude.json` kembali untuk mengkonfirmasi perubahan. Perubahan mungkin atau mungkin tidak ada di disk. Teks dalam tanda kurung adalah kesalahan dari pembacaan itu.3215Anda menjalankan `claude mcp add`, `claude mcp add-json`, atau `claude mcp remove` untuk server dalam [cakupan](/docs/id/mcp#mcp-installation-scopes) `user` atau `local`, dan Claude Code tidak dapat membaca kembali `~/.claude.json` untuk mengonfirmasi perubahan. Perubahan tersebut mungkin ada atau mungkin tidak ada di disk. Teks dalam tanda kurung adalah error dari pembacaan tersebut.

3193 3216 

3194```text theme={null}3217```text theme={null}

3195MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.3218MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.

3196```3219```

3197 3220 

3198Setelah remove, pesan membaca `may not have been removed` dan berakhir dengan `then remove the server again if it is still listed`.3221Setelah penghapusan, pesan berbunyi `may not have been removed` dan diakhiri dengan `then remove the server again if it is still listed`.

3199 3222 

3200Sebelum v2.1.283, command melaporkan kesuksesan bahkan ketika perubahan tidak dapat dikonfirmasi.3223Sebelum v2.1.283, perintah-perintah tersebut melaporkan keberhasilan bahkan ketika perubahan tidak dapat dikonfirmasi.

3201 3224 

3202**Yang harus dilakukan:**3225**Yang harus dilakukan:**

3203 3226 

3204* Jalankan `claude mcp get <name>` untuk memeriksa apakah perubahan ada di disk. Untuk server scope `local`, jalankan dari direktori project yang server milik, karena scope lokal per project.3227* Jalankan `claude mcp get <name>` untuk memeriksa apakah perubahan ada di disk. Untuk server dengan cakupan `local`, jalankan dari direktori proyek tempat server tersebut berada, karena cakupan local bersifat per proyek.

3205* Jika server hilang setelah add, atau masih terdaftar setelah remove, jalankan command add atau remove yang sama lagi.3228* Jika server tidak ada setelah penambahan, atau masih tercantum setelah penghapusan, jalankan perintah add atau remove yang sama lagi.

3206 3229 

3207<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">3230<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">

3208 Server adalah Anthropic-hosted dan tidak mendukung OAuth lokal3231 Server di-host oleh Anthropic dan tidak mendukung OAuth lokal

3209</h3>3232</h3>

3210 3233 

3211Anda memulai sign-in untuk server MCP yang URL-nya menunjuk ke host connector yang dihosting Anthropic yang mengautentikasi melalui penyedia identitas pihak ketiga. Host ini termasuk `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com`, dan `gcal.mcp.claude.com`. Claude Code menolak untuk memulai alur OAuth lokal untuk host ini dari panel `/mcp` dan `claude mcp login`, karena [sign-in mereka hanya bekerja melalui claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai).3234Anda memulai proses masuk untuk server MCP yang URL-nya mengarah ke host konektor yang di-host oleh Anthropic yang melakukan autentikasi melalui penyedia identitas pihak ketiga. Host ini termasuk `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com`, dan `gcal.mcp.claude.com`. Claude Code menolak memulai alur OAuth lokalnya untuk host ini, baik dari panel `/mcp` maupun `claude mcp login`, karena [proses masuknya hanya berfungsi melalui claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai).

3212 3235 

3213```text theme={null}3236```text theme={null}

3214"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.3237"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.

3215```3238```

3216 3239 

3217Claude Code mencocokkan host ini dengan URL, jadi pesan muncul ketika server yang Anda tambahkan dengan `claude mcp add` atau di `.mcp.json` menunjuk ke salah satunya.

3218 

3219**Yang harus dilakukan:**3240**Yang harus dilakukan:**

3220 3241 

3221* Hapus entri Anda dengan `claude mcp remove <name>`, jadi tidak dapat menyembunyikan connector claude.ai di URL yang sama3242* Hapus entri Anda dengan `claude mcp remove <name>`, agar entri tersebut tidak menyembunyikan konektor claude.ai di URL yang sama

3222* Setelah menghapusnya, hubungkan layanan di [claude.ai/customize/connectors](https://claude.ai/customize/connectors), saat masuk ke akun yang Anda gunakan di Claude Code. Setelah terhubung, [connector muncul di Claude Code secara otomatis](/docs/id/mcp#use-mcp-servers-from-claude-ai) jika metode autentikasi aktif Anda adalah login langganan claude.ai3243* Setelah menghapusnya, hubungkan layanan di [claude.ai/customize/connectors](https://claude.ai/customize/connectors), dalam keadaan masuk ke akun yang Anda gunakan di Claude Code. Setelah terhubung, [konektor muncul di Claude Code secara otomatis](/docs/id/mcp#use-mcp-servers-from-claude-ai) jika metode autentikasi aktif Anda adalah login langganan claude.ai

3223 3244 

3224<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">3245<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">

3225 Server menolak header Authorization yang dicetak oleh headersHelper yang dikonfigurasi3246 Server menolak header Authorization yang dibuat oleh headersHelper yang dikonfigurasi

3226</h3>3247</h3>

3227 3248 

3228Server MCP yang [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication)-nya memasok header `Authorization` menjawab koneksi dengan HTTP 401 atau 403, jadi Claude Code melaporkan koneksi sebagai gagal. Karena helper memasok header `Authorization`, Claude Code [tidak jatuh kembali ke OAuth](/docs/id/mcp#authenticate-with-remote-mcp-servers) untuk server:3249Server MCP yang header `Authorization`-nya disediakan oleh [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication) menjawab koneksi dengan HTTP 401 atau 403, sehingga Claude Code melaporkan koneksi sebagai gagal. Karena helper menyediakan header `Authorization`, Claude Code [tidak melakukan fallback ke OAuth](/docs/id/mcp#authenticate-with-remote-mcp-servers) untuk server tersebut:

3229 3250 

3230```text theme={null}3251```text theme={null}

3231Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.3252Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.

3232```3253```

3233 3254 

3234Claude Code menjalankan kembali helper pada setiap upaya koneksi, jadi retry setelah penolakan sementara, seperti race rotasi token, dapat berhasil dengan kredensial segar.3255Claude Code menjalankan ulang helper pada setiap upaya koneksi, sehingga retry setelah penolakan sementara, seperti race rotasi token, dapat berhasil dengan kredensial baru.

3235 3256 

3236**Yang harus dilakukan:**3257**Yang harus dilakukan:**

3237 3258 

3238* Jalankan command `headersHelper` sendiri dengan cara Claude Code menjalankannya: dari [direktori Claude Code menjalankannya](/docs/id/mcp#where-the-helper-runs), dengan [variabel lingkungan Claude Code menetapkannya](/docs/id/mcp#use-dynamic-headers-for-custom-authentication), dan tanpa [variabel kredensial Claude Code menghapusnya](/docs/id/mcp#which-variables-a-helper-can-read) untuk server dari `.mcp.json` project, plugin, atau file agent project. Periksa bahwa mencetak nilai `Authorization` yang endpoint server terima3259* Jalankan perintah `headersHelper` sendiri dengan cara yang sama seperti Claude Code menjalankannya: dari [direktori tempat Claude Code menjalankannya](/docs/id/mcp#where-the-helper-runs), dengan [environment variable yang diatur Claude Code untuknya](/docs/id/mcp#use-dynamic-headers-for-custom-authentication), dan tanpa [variabel kredensial yang dihapus Claude Code](/docs/id/mcp#which-variables-a-helper-can-read) untuk server dari `.mcp.json` proyek, plugin, atau file agent proyek. Periksa bahwa perintah tersebut mencetak nilai `Authorization` yang diterima oleh endpoint server

3239* Setelah memperbaiki helper atau sumber kredensialnya, pilih server di `/mcp` dan pilih **Reconnect**3260* Setelah memperbaiki helper atau sumber kredensialnya, pilih server di `/mcp` dan pilih **Reconnect**

3240 3261 

3241Sebelum v2.1.248, Claude Code menjalankan penemuan OAuth untuk server yang helper-nya memasok header `Authorization`. Penemuan itu dapat gagal dengan `Incompatible auth server: does not support dynamic client registration` alih-alih melaporkan kredensial yang ditolak.3262Sebelum v2.1.248, Claude Code menjalankan discovery OAuth untuk server yang helper-nya menyediakan header `Authorization`. Discovery tersebut dapat gagal dengan `Incompatible auth server: does not support dynamic client registration` alih-alih melaporkan kredensial yang ditolak.

3242 3263 

3243<h3 id="mcp-permission-prompt-tool-not-found">3264<h3 id="mcp-permission-prompt-tool-not-found">

3244 Tool prompt izin MCP tidak ditemukan3265 Tool permintaan izin MCP tidak ditemukan

3245</h3>3266</h3>

3246 3267 

3247Tool yang Anda berikan ke [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) tidak ada di antara tool MCP yang terhubung ketika run pertama kali memerlukan keputusan izin, baik karena server-nya tidak pernah terhubung atau karena tidak ada server yang terhubung yang mengekspos tool dengan nama itu. Claude Code masih mengirim prompt Anda: run [non-interaktif](/docs/id/headless) keluar dengan kesalahan ini, dan kode keluar 1, pada panggilan tool pertama, jadi menghasilkan tidak ada jawaban meskipun permintaan dibuat. Sebelum prompt pertama, Claude Code menunggu hingga timeout koneksi per-server 30 detik yang ditetapkan oleh [`MCP_TIMEOUT`](/docs/id/env-vars) untuk server itu terhubung. Sebelum v2.1.206, startup tidak menunggu server selesai terhubung, jadi server yang lambat dimulai tetapi sehat menghasilkan kesalahan ini juga.3268Tool yang Anda teruskan ke [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) tidak termasuk di antara tool MCP yang terhubung ketika run pertama kali memerlukan keputusan izin, baik karena server-nya tidak pernah terhubung maupun karena tidak ada server terhubung yang mengekspos tool dengan nama tersebut. Claude Code tetap mengirimkan prompt Anda: run [non-interaktif](/docs/id/headless) keluar dengan error ini, dan exit code 1, pada panggilan tool pertama, sehingga tidak menghasilkan jawaban meskipun permintaan telah dibuat. Sebelum prompt pertama, Claude Code menunggu hingga timeout koneksi per server selama 30 detik yang diatur oleh [`MCP_TIMEOUT`](/docs/id/env-vars) agar server tersebut terhubung. Sebelum v2.1.206, startup tidak menunggu server selesai terhubung, sehingga server yang lambat dimulai tetapi sehat juga menghasilkan error ini.

3248 3269 

3249```text theme={null}3270```text theme={null}

3250Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none3271Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none

3251```3272```

3252 3273 

3253Daftar setelah `Available MCP tools:` menamai tool MCP yang terhubung.3274Daftar setelah `Available MCP tools:` menyebutkan tool MCP yang terhubung.

3254 3275 

3255**Yang harus dilakukan:**3276**Yang harus dilakukan:**

3256 3277 

3257* Periksa bahwa server dimulai dan tetap terhubung: jalankan `claude mcp list` di direktori yang sama dan konfirmasi server terdaftar sebagai terhubung3278* Periksa bahwa server dimulai dan tetap terhubung: jalankan `claude mcp list` di direktori yang sama dan pastikan server tercantum sebagai terhubung

3258* Konfirmkan nama tool cocok dengan nama `mcp__<server>__<tool>` yang server ekspos3279* Pastikan nama tool cocok dengan nama `mcp__<server>__<tool>` yang diekspos server

3259* Jika server memerlukan lebih lama dari 30 detik untuk dimulai, naikkan [`MCP_TIMEOUT`](/docs/id/env-vars)3280* Jika server membutuhkan lebih dari 30 detik untuk dimulai, naikkan [`MCP_TIMEOUT`](/docs/id/env-vars)

3260 3281 

3261<h3 id="oauth-callback-port-is-already-in-use">3282<h3 id="oauth-callback-port-is-already-in-use">

3262 Port callback OAuth sudah digunakan3283 Port callback OAuth sudah digunakan

3263</h3>3284</h3>

3264 3285 

3265Ketika Anda masuk ke server MCP jarak jauh dengan OAuth, Claude Code memulai pendengar lokal untuk menerima callback sign-in. Jika port yang pendengar itu butuhkan dipegang oleh proses lain, sign-in gagal dengan pesan ini. Ini sebagian besar terjadi dengan [port callback tetap](/docs/id/mcp#use-a-fixed-oauth-callback-port) yang ditetapkan melalui variabel [`MCP_OAUTH_CALLBACK_PORT`](/docs/id/env-vars) atau `--callback-port`, karena tanpa satu Claude Code memilih port yang tersedia.3286Ketika Anda masuk ke server MCP jarak jauh dengan OAuth, Claude Code memulai listener lokal untuk menerima callback masuk. Jika port yang dibutuhkan listener tersebut dipegang oleh proses lain, proses masuk gagal dengan pesan ini. Hal ini sebagian besar terjadi dengan [port callback tetap](/docs/id/mcp#use-a-fixed-oauth-callback-port) yang diatur melalui variabel [`MCP_OAUTH_CALLBACK_PORT`](/docs/id/env-vars) atau `--callback-port`, karena tanpanya Claude Code memilih port yang tersedia.

3266 3287 

3267```text theme={null}3288```text theme={null}

3268OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.3289OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.

3269```3290```

3270 3291 

3271Di Windows, command yang disarankan adalah `netstat -ano | findstr :<port>` sebagai gantinya.3292Di Windows, perintah yang disarankan adalah `netstat -ano | findstr :<port>` sebagai gantinya.

3272 3293 

3273**Yang harus dilakukan:**3294**Yang harus dilakukan:**

3274 3295 

3275* Jalankan command dari pesan untuk menemukan proses yang memegang port, dan hentikan atau tunggu selesai3296* Jalankan perintah dari pesan untuk menemukan proses yang memegang port, lalu hentikan proses tersebut atau tunggu hingga selesai

3276* Jika program lain memerlukan port itu secara permanen, daftarkan URI redirect berbeda dengan server dan atur port-nya dengan `MCP_OAUTH_CALLBACK_PORT` atau `--callback-port`, mana pun yang Anda gunakan3297* Jika program lain membutuhkan port tersebut secara permanen, daftarkan redirect URI yang berbeda pada server dan atur port-nya dengan `MCP_OAUTH_CALLBACK_PORT` atau `--callback-port`, mana pun yang Anda gunakan

3277* Kemudian mulai sign-in lagi, misalnya dengan memilih server di `/mcp`3298* Kemudian mulai proses masuk lagi, misalnya dengan memilih server di `/mcp`

3278 3299 

3279<h3 id="no-available-ports-for-oauth-redirect">3300<h3 id="no-available-ports-for-oauth-redirect">

3280 Tidak ada port yang tersedia untuk redirect OAuth3301 Tidak ada port yang tersedia untuk redirect OAuth

3281</h3>3302</h3>

3282 3303 

3283Ketika Anda masuk ke server MCP jarak jauh dengan [OAuth](/docs/id/mcp#authenticate-with-remote-mcp-servers), Claude Code memulai pendengar lokal untuk menerima callback sign-in. Sign-in gagal dengan pesan ini ketika Claude Code tidak dapat mengikat port lokal untuk itu. Sesuatu di mesin mencegah mendengarkan di `127.0.0.1`, misalnya software keamanan atau kebijakan sandbox yang menolak pendengar lokal.3304Ketika Anda masuk ke server MCP jarak jauh dengan [OAuth](/docs/id/mcp#authenticate-with-remote-mcp-servers), Claude Code memulai listener lokal untuk menerima callback masuk. Proses masuk gagal dengan pesan ini ketika Claude Code tidak dapat mengikat port lokal untuknya. Sesuatu di mesin mencegahnya mendengarkan di `127.0.0.1`, misalnya perangkat lunak keamanan atau kebijakan sandbox yang menolak listener lokal.

3284 3305 

3285```text theme={null}3306```text theme={null}

3286No available ports for OAuth redirect3307No available ports for OAuth redirect

3287```3308```

3288 3309 

3289Sebelum v2.1.268, Claude Code tidak jatuh kembali ke port yang ditugaskan sistem operasi, jadi pesan juga muncul ketika hanya port yang dipilih sendiri tidak dapat diikat. Itu dapat terjadi pada host Windows di mana Hyper-V memesan rentang port yang mencakup port yang Claude Code pilih dari.3310Sebelum v2.1.268, Claude Code tidak melakukan fallback ke port yang ditetapkan oleh sistem operasi, sehingga pesan ini juga muncul ketika hanya port yang dipilihnya sendiri yang tidak dapat diikat. Hal itu dapat terjadi pada host Windows di mana Hyper-V mencadangkan rentang port yang mencakup port yang dipilih oleh Claude Code.

3290 3311 

3291**Yang harus dilakukan:**3312**Yang harus dilakukan:**

3292 3313 

3293* Periksa apakah software keamanan atau kebijakan sandbox memblokir proses dari mendengarkan di `127.0.0.1`, dan izinkan Claude Code mengikat port lokal3314* Periksa apakah perangkat lunak keamanan atau kebijakan sandbox memblokir proses agar tidak mendengarkan di `127.0.0.1`, dan izinkan Claude Code untuk mengikat port lokal

3294* Kemudian mulai sign-in lagi, misalnya dengan memilih server di `/mcp`3315* Kemudian mulai proses masuk lagi, misalnya dengan memilih server di `/mcp`

3295 3316 

3296<h3 id="security-review-fails-without-origin-head">3317<h3 id="security-review-fails-without-origin-head">

3297 /security-review gagal tanpa origin/HEAD3318 /security-review gagal tanpa origin/HEAD

3298</h3>3319</h3>

3299 3320 

3300[`/security-review`](/docs/id/commands#all-commands) membangun konteks review dengan membedakan branch Anda terhadap `origin/HEAD`, ref lokal yang mencatat branch mana yang default di remote `origin` Anda. Ketika ref itu tidak ada, command git yang mengumpulkan diff gagal dan review berhenti sebelum dimulai.3321[`/security-review`](/docs/id/commands#all-commands) membangun konteks tinjauannya dengan membuat diff branch Anda terhadap `origin/HEAD`, ref lokal yang mencatat branch mana yang menjadi default pada remote `origin` Anda. Ketika ref tersebut tidak ada, perintah git yang mengumpulkan diff gagal dan tinjauan berhenti sebelum dimulai.

3301 3322 

3302```text theme={null}3323```text theme={null}

3303Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]3324Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]


3306'git <command> [<revision>...] -- [<file>...]'3327'git <command> [<revision>...] -- [<file>...]'

3307```3328```

3308 3329 

3309Pesan dapat mengutip `git log` atau `git diff` berbeda sebagai gantinya. Git membuat `origin/HEAD` hanya ketika remote mengiklankan branch default dan refspec fetch Anda mencakupnya, yang full `git clone` dari remote dengan commit lakukan. Ref hilang dalam setup ini:3330Pesan tersebut mungkin mengutip `git log` atau `git diff` yang berbeda. Git membuat `origin/HEAD` hanya ketika remote mengiklankan branch default dan refspec fetch Anda mencakupnya, yang dilakukan oleh `git clone` penuh dari remote yang memiliki commit. Ref tersebut tidak ada dalam penyiapan berikut:

3310 3331 

3311* Single-branch atau CI checkout, yang mengambil refspec terlalu sempit3332* Checkout single-branch atau CI, yang mengambil refspec terlalu sempit

3312* Remote yang server-side HEAD menunjuk ke branch yang tidak ada yang dorong3333* Remote yang HEAD sisi servernya menunjuk ke branch yang tidak pernah di-push siapa pun

3313* Repository tanpa remote `origin`, atau yang tidak pernah Anda ambil3334* Repositori tanpa remote `origin`, atau yang tidak pernah Anda fetch

3314 3335 

3315Claude Code menunjukkan kesalahan yang sama untuk skill apa pun yang [menyuntikkan konteks dinamis](/docs/id/skills#when-an-injected-command-fails), dan command yang disuntikkan gagal menghentikan invokasi skill itu. Dua string sibling api sebelum command berjalan sama sekali:3336Claude Code menampilkan error yang sama untuk skill apa pun yang [menyisipkan konteks dinamis](/docs/id/skills#when-an-injected-command-fails), dan perintah sisipan yang gagal membatalkan pemanggilan skill tersebut. Dua string serupa muncul sebelum perintah dijalankan sama sekali:

3316 3337 

3317* `Shell command permission check failed for pattern "..."`: pemeriksaan izin command tidak mengizinkannya. [Permission checks on injected commands](/docs/id/skills#permission-checks-on-injected-commands) mencakup hasil mana yang menghentikan dalam setiap mode izin dan cara pre-approve command dengan `allowed-tools`3338* `Shell command permission check failed for pattern "..."`: pemeriksaan izin perintah tidak mengizinkannya. [Pemeriksaan izin pada perintah sisipan](/docs/id/skills#permission-checks-on-injected-commands) membahas hasil mana yang membatalkan di setiap mode izin dan cara menyetujui perintah sebelumnya dengan `allowed-tools`

3318* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter skill menuntut bash di mesin tanpanya. Instal Git untuk Windows atau ubah frontmatter ke `shell: powershell`. Lihat [How injected commands run](/docs/id/skills#how-injected-commands-run)3339* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter skill menuntut bash pada mesin yang tidak memilikinya. Instal Git for Windows atau ubah frontmatter menjadi `shell: powershell`. Lihat [Cara perintah sisipan dijalankan](/docs/id/skills#how-injected-commands-run)

3319 3340 

3320**Yang harus dilakukan:**3341**Yang harus dilakukan:**

3321 3342 

3322* Buat ref dengan menamai branch default remote Anda: `git remote set-head origin <default-branch>`. Ini bekerja kapan pun ref tracking lokal `origin/<default-branch>` ada. Jika tidak, seperti dalam clone single-branch, ambil branch terlebih dahulu: jalankan `git remote set-branches --add origin <branch>`, kemudian `git fetch origin`, kemudian jalankan kembali command set-head. Jalankan kembali `/security-review`.3343* Buat ref dengan menyebutkan branch default remote Anda: `git remote set-head origin <default-branch>`. Ini berfungsi setiap kali ref pelacakan lokal `origin/<default-branch>` ada. Jika tidak ada, seperti pada clone single-branch, fetch branch tersebut terlebih dahulu: jalankan `git remote set-branches --add origin <branch>`, lalu `git fetch origin`, lalu jalankan ulang perintah set-head. Jalankan ulang `/security-review`.

3323* Jika Anda lebih suka tidak menamai branch, jalankan `git fetch origin` dan kemudian `git remote set-head origin --auto`, yang menanyakan remote branch mana yang default-nya. Gagal dengan `error: Cannot determine remote HEAD` ketika remote tidak mengiklankan branch default, karena kosong atau HEAD-nya menunjuk ke branch yang tidak ada yang dorong; namai branch secara eksplisit sebagai gantinya. Gagal dengan `error: Not a valid ref` ketika clone Anda tidak mengambil branch itu; perluas refspec seperti di atas terlebih dahulu.3344* Jika Anda lebih suka tidak menyebutkan branch, jalankan `git fetch origin` lalu `git remote set-head origin --auto`, yang menanyakan kepada remote branch mana yang menjadi default-nya. Perintah ini gagal dengan `error: Cannot determine remote HEAD` ketika remote tidak mengiklankan branch default, karena remote kosong atau HEAD-nya menunjuk ke branch yang tidak pernah di-push siapa pun; sebutkan branch secara eksplisit sebagai gantinya. Perintah ini gagal dengan `error: Not a valid ref` ketika clone Anda tidak mengambil branch tersebut; perluas refspec seperti di atas terlebih dahulu.

3324* Jika repository tidak memiliki remote, tambahkan dengan `git remote add origin <url>` dan ambil sebelum membuat ref. Jika remote kosong, dorong branch Anda terlebih dahulu dengan `git push -u origin HEAD` dan namai branch itu dalam command set-head; `origin/HEAD` kemudian menunjuk ke branch yang baru saja Anda dorong, jadi `/security-review` melihat diff kosong sampai branch menyimpang darinya.3345* Jika repositori tidak memiliki remote, tambahkan dengan `git remote add origin <url>` dan lakukan fetch sebelum membuat ref. Jika remote kosong, push branch Anda terlebih dahulu dengan `git push -u origin HEAD` dan sebutkan branch tersebut dalam perintah set-head; `origin/HEAD` kemudian menunjuk ke branch yang baru saja Anda push, sehingga `/security-review` melihat diff kosong sampai branch menyimpang darinya.

3325 3346 

3326<h3 id="input-must-be-provided-when-using-print">3347<h3 id="input-must-be-provided-when-using-print">

3327 Input harus disediakan saat menggunakan `--print`3348 Input harus diberikan saat menggunakan `--print`

3328</h3>3349</h3>

3329 3350 

3330Bare `claude` memerlukan stdout menjadi terminal untuk memulai UI interaktif. Ketika stdout dialihkan, atau konsol bukan terminal nyata, seperti PowerShell ISE dan beberapa pane output IDE, `claude` berjalan [non-interaktif](/docs/id/headless) sebagai gantinya. Itu adalah mode yang sama dengan `claude -p`, yang memerlukan prompt, jadi pesan menamai `--print` bahkan ketika Anda tidak melewatkan flag. Melewatkan `-p`/`--print` tanpa prompt dan tidak ada yang dipipa di stdin menghasilkan kesalahan yang sama di mana pun.3351`claude` tanpa argumen memerlukan stdout berupa terminal untuk memulai UI interaktif. Ketika stdout dialihkan, atau konsol bukan terminal sungguhan, seperti PowerShell ISE dan beberapa panel output IDE, `claude` berjalan secara [non-interaktif](/docs/id/headless) sebagai gantinya. Itu adalah mode yang sama dengan `claude -p`, yang memerlukan prompt, sehingga pesan menyebutkan `--print` meskipun Anda tidak meneruskan flag tersebut. Meneruskan `-p`/`--print` tanpa prompt dan tanpa apa pun yang di-pipe ke stdin menghasilkan error yang sama di mana saja.

3331 3352 

3332```text theme={null}3353```text theme={null}

3333Error: Input must be provided either through stdin or as a prompt argument when using --print3354Error: Input must be provided either through stdin or as a prompt argument when using --print


3335 3356 

3336**Yang harus dilakukan:**3357**Yang harus dilakukan:**

3337 3358 

3338* Untuk penggunaan interaktif, jalankan `claude` di terminal nyata: Windows Terminal atau konsol PowerShell daripada ISE, dan terminal terintegrasi IDE Anda daripada pane output3359* Untuk penggunaan interaktif, jalankan `claude` di terminal sungguhan: Windows Terminal atau konsol PowerShell alih-alih ISE, dan terminal terintegrasi IDE Anda alih-alih panel output

3339* Untuk penggunaan satu kali, berikan prompt: `claude -p "your question"`, atau pipanya dengan `echo "your question" | claude -p`3360* Untuk penggunaan sekali jalan, teruskan prompt: `claude -p "your question"`, atau pipe dengan `echo "your question" | claude -p`

3340 3361 

3341<h3 id="input-contained-only-whitespace">3362<h3 id="input-contained-only-whitespace">

3342 Input hanya berisi whitespace3363 Input hanya berisi spasi kosong

3343</h3>3364</h3>

3344 3365 

3345Dalam [mode non-interaktif](/docs/id/headless), Claude Code menolak prompt yang terdiri sepenuhnya dari spasi, tab, atau newline alih-alih mengirimnya, karena API menolak pesan tanpa teks terlihat. Pesan mana yang Anda lihat tergantung di mana prompt kosong berasal:3366Dalam [mode non-interaktif](/docs/id/headless), Claude Code menolak prompt yang seluruhnya terdiri dari spasi, tab, atau baris baru alih-alih mengirimkannya, karena API menolak pesan tanpa teks yang terlihat. Pesan yang Anda lihat bergantung pada dari mana prompt kosong tersebut berasal:

3346 3367 

3347* **Argumen prompt atau stdin yang dipipa untuk `claude -p`**: `claude` keluar dengan `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`3368* **Argumen prompt atau stdin yang di-pipe untuk `claude -p`**: `claude` keluar dengan `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`

3348* **Pesan yang dikirimkan ke sesi `--input-format stream-json` atau [Agent SDK](/docs/id/agent-sdk/overview) yang berjalan**: Claude Code mengakhiri giliran tanpa memanggil model dan sesi tetap dapat digunakan. Penolakan tiba sebagai pesan informatif dan sebagai teks hasil giliran: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`3369* **Pesan yang dikirimkan ke sesi `--input-format stream-json` atau [Agent SDK](/docs/id/agent-sdk/overview) yang sedang berjalan**: Claude Code mengakhiri giliran tanpa memanggil model dan sesi tetap dapat digunakan. Penolakan tiba sebagai pesan informasi dan sebagai teks hasil giliran: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`

3349 3370 

3350Sebelum v2.1.229, Claude Code mengirim pesan whitespace-only ke API, yang menolak permintaan dengan kesalahan 400.3371Sebelum v2.1.229, Claude Code mengirimkan pesan yang hanya berisi spasi kosong ke API, yang menolak permintaan dengan error 400.

3351 3372 

3352**Yang harus dilakukan:**3373**Yang harus dilakukan:**

3353 3374 

3354* Sertakan teks terlihat dalam prompt. Jika script membangun prompt dari variabel atau file, periksa bahwa sumber tidak kosong sebelum memanggil Claude Code.3375* Sertakan teks yang terlihat dalam prompt. Jika skrip membangun prompt dari variabel atau file, periksa bahwa sumbernya tidak kosong sebelum memanggil Claude Code.

3355 3376 

3356<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">3377<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">

3357 stream-json input membawa lebih dari 256M karakter tanpa newline3378 Input stream-json membawa lebih dari 256M karakter tanpa baris baru

3358</h3>3379</h3>

3359 3380 

3360Program Anda mengirim lebih dari 268.435.456 karakter di stdin tanpa newline ke run `claude -p --input-format stream-json`, jadi Claude Code mencetak kesalahan ini ke stderr dan keluar dengan kode 1 alih-alih membuffer lebih banyak input. Pesan menyatakan anggaran itu sebagai `256M`. Sebelum v2.1.257, Claude Code membuffer input seperti itu tanpa batas, menumbuhkan memori sampai proses mogok atau dibunuh.3381Program Anda mengirimkan lebih dari 268.435.456 karakter di stdin tanpa baris baru ke run `claude -p --input-format stream-json`, sehingga Claude Code mencetak error ini ke stderr dan keluar dengan kode 1 alih-alih mem-buffer lebih banyak input. Pesan menyatakan batas tersebut sebagai `256M`. Sebelum v2.1.257, Claude Code mem-buffer input seperti itu tanpa batas, menambah memori hingga proses crash atau dihentikan.

3361 3382 

3362```text theme={null}3383```text theme={null}

3363Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.3384Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.

3364```3385```

3365 3386 

3366Input sepanjang ini tanpa newline biasanya berarti producer bukan producer stream-json sama sekali, seperti file biner atau output log biasa yang dipipa secara tidak sengaja. Pesan tunggal di atas anggaran gagal pemeriksaan yang sama.3387Input sepanjang ini tanpa baris baru biasanya berarti produsennya sama sekali bukan produsen stream-json, seperti file biner atau output log biasa yang tidak sengaja di-pipe. Satu pesan yang melebihi batas gagal dalam pemeriksaan yang sama.

3367 3388 

3368**Yang harus dilakukan:**3389**Yang harus dilakukan:**

3369 3390 

3370* Periksa apa yang dipipa ke stdin. Dengan [`--input-format stream-json`](/docs/id/cli-reference#cli-flags), setiap pesan harus satu baris JSON yang diakhiri newline3391* Periksa apa yang di-pipe ke stdin. Dengan [`--input-format stream-json`](/docs/id/cli-reference#cli-flags), setiap pesan harus berupa satu baris JSON yang diakhiri baris baru

3371* Untuk mengirim teks biasa sebagai gantinya, hilangkan `--input-format stream-json`; `claude -p` membaca prompt teks biasa dari stdin secara default3392* Untuk mengirim teks biasa, hapus `--input-format stream-json`; `claude -p` membaca prompt teks biasa dari stdin secara default

3372 3393 

3373<h3 id="unknown-command">3394<h3 id="unknown-command">

3374 Perintah tidak dikenal3395 Perintah tidak dikenal

3375</h3>3396</h3>

3376 3397 

3377Dalam sesi terminal interaktif, Anda mengirimkan nama `/` yang tidak cocok dengan command apa pun dalam sesi ini, jadi Claude Code melaporkan nama alih-alih menjalankan apa pun:3398Dalam sesi terminal interaktif, Anda mengirimkan nama `/` yang tidak cocok dengan perintah apa pun dalam sesi ini, sehingga Claude Code melaporkan nama tersebut alih-alih menjalankan apa pun:

3378 3399 

3379```text theme={null}3400```text theme={null}

3380Unknown command: /hepl. Did you mean /help?3401Unknown command: /hepl. Did you mean /help?

3381```3402```

3382 3403 

3383Claude Code menyarankan nama command atau alias terdekat yang menu daftarkan dalam sesi ini. Ketika tidak ada yang dekat, pesan berakhir setelah nama. Penyebabnya biasanya salah satu dari berikut:3404Claude Code menyarankan nama perintah atau alias terdekat yang dicantumkan menu dalam sesi ini. Ketika tidak ada yang mendekati, pesan berakhir setelah nama tersebut. Penyebabnya biasanya salah satu dari berikut ini:

3384 3405 

3385* Typo, seperti `/hepl` untuk `/help`. [How the command menu matches what you type](/docs/id/commands#how-the-command-menu-matches-what-you-type) mencakup memilih kecocokan dekat sebelum Anda kirimkan3406* Salah ketik, seperti `/hepl` untuk `/help`. [Cara menu perintah mencocokkan apa yang Anda ketik](/docs/id/commands#how-the-command-menu-matches-what-you-type) membahas cara memilih kecocokan terdekat sebelum Anda mengirimkan

3386* Command yang ada tetapi tidak tersedia dalam sesi ini karena persyaratan tidak terpenuhi, seperti platform, plan, atau metode autentikasi Anda. Entri troubleshooting untuk [`/web-setup`](/docs/id/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) dan [`/schedule`](/docs/id/routines#schedule-returns-unknown-command) berjalan melalui dua kasus umum. Beberapa command menjawab dengan pesan mereka sendiri ketika kebijakan organisasi Anda menonaktifkannya, seperti [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)3407* Perintah yang ada tetapi tidak tersedia dalam sesi ini karena suatu persyaratan tidak terpenuhi, seperti platform, paket, atau metode autentikasi Anda. Entri pemecahan masalah untuk [`/web-setup`](/docs/id/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) dan [`/schedule`](/docs/id/routines#schedule-returns-unknown-command) menjelaskan dua kasus umum. Beberapa perintah menjawab dengan pesannya sendiri ketika kebijakan organisasi Anda menonaktifkannya, seperti [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)

3387* Command dari [plugin](/docs/id/plugins/overview) atau [server MCP](/docs/id/mcp#use-mcp-prompts-as-commands) yang tidak diinstal atau terhubung dalam sesi ini3408* Perintah dari [plugin](/docs/id/plugins/overview) atau [server MCP](/docs/id/mcp#use-mcp-prompts-as-commands) yang tidak diinstal atau tidak terhubung dalam sesi ini

3388 3409 

3389Claude Code menjawab nama `/` yang tidak cocok dengan cara ini hanya dalam sesi terminal interaktif. Dalam setiap sesi lain, mengirim prompt ke Claude sebagai pesan normal sebagai gantinya, dengan catatan bahwa command tidak berjalan dan daftar command yang Claude dapat jalankan dalam sesi. Sesi tersebut termasuk:3410Claude Code menjawab nama `/` yang tidak cocok dengan cara ini hanya dalam sesi terminal interaktif. Di setiap sesi lain, Claude Code mengirimkan prompt ke Claude sebagai pesan biasa, dengan catatan bahwa perintah tidak dijalankan dan daftar perintah yang dapat dijalankan Claude dalam sesi tersebut. Sesi tersebut meliputi:

3390 3411 

3391* Run `-p`3412* Run `-p`

3392* Aplikasi [Agent SDK](/docs/id/agent-sdk/overview)3413* Aplikasi [Agent SDK](/docs/id/agent-sdk/overview)

3393* Tab Code dari [Desktop app](/docs/id/desktop)3414* Tab Code di [aplikasi Desktop](/docs/id/desktop)

3394* Panel chat dari [VS Code extension](/docs/id/vs-code)3415* Panel obrolan [ekstensi VS Code](/docs/id/vs-code)

3395* [Sesi cloud](/docs/id/claude-code-on-the-web) dan [routine](/docs/id/routines)3416* [Sesi cloud](/docs/id/claude-code-on-the-web) dan [routine](/docs/id/routines)

3396 3417 

3397Untuk command built-in yang tidak dapat berjalan dalam salah satu sesi itu, Claude Code masih menjawab bahwa command tidak tersedia alih-alih mengirimnya ke Claude. Sebelum v2.1.274, hanya sesi cloud dan routine yang mengirim nama yang tidak cocok ke Claude. Sebelum v2.1.273, mereka menjawab `Unknown command` juga.3418Untuk perintah bawaan yang tidak dapat berjalan di salah satu sesi tersebut, Claude Code tetap menjawab bahwa perintah tidak tersedia alih-alih mengirimkannya ke Claude. Sebelum v2.1.274, hanya sesi cloud dan routine yang mengirimkan nama yang tidak cocok ke Claude. Sebelum v2.1.273, sesi tersebut juga menjawab `Unknown command`.

3398 3419 

3399Claude Code tidak memperlakukan setiap prompt yang dimulai dengan `/` sebagai command. Mengirim prompt ke Claude sebagai pesan normal ketika kata pertama setelah `/` dimulai dengan tanda baca, seperti `/--` yang membuka komentar doc Lean, atau adalah path seperti `/var/log/syslog`.3420Claude Code tidak memperlakukan setiap prompt yang diawali dengan `/` sebagai perintah. Claude Code mengirimkan prompt ke Claude sebagai pesan biasa ketika kata pertama setelah `/` diawali dengan tanda baca, seperti `/--` yang membuka komentar dokumentasi Lean, atau berupa path seperti `/var/log/syslog`.

3400 3421 

3401Sebelum v2.1.236, jika Anda menekan `Enter` sementara menu command mencantumkan kecocokan dekat untuk nama yang Anda ketik, Claude Code menjalankan kecocokan itu, jadi typo seperti `/hepl` menjalankan `/help` alih-alih menghasilkan pesan ini.3422Sebelum v2.1.236, jika Anda menekan `Enter` saat menu perintah mencantumkan kecocokan terdekat untuk nama yang Anda ketik, Claude Code menjalankan kecocokan tersebut, sehingga salah ketik seperti `/hepl` menjalankan `/help` alih-alih menghasilkan pesan ini.

3402 3423 

3403**Yang harus dilakukan:**3424**Yang harus dilakukan:**

3404 3425 

3405* Jalankan nama yang disarankan, atau ketik `/` diikuti bagian dari nama untuk melihat apa yang tersedia dalam sesi ini3426* Jalankan nama yang disarankan, atau ketik `/` diikuti sebagian nama untuk melihat apa yang tersedia dalam sesi ini

3406* Jika Claude Code melaporkan command yang didokumentasikan sebagai tidak dikenal, periksa barisnya dalam [referensi command](/docs/id/commands) untuk persyaratan yang dinamainya3427* Jika Claude Code melaporkan perintah yang terdokumentasi sebagai tidak dikenal, periksa barisnya di [referensi perintah](/docs/id/commands) untuk persyaratan yang disebutkannya

3407 3428 

3408<h3 id="diff-is-too-large-for-ultrareview">3429<h3 id="diff-is-too-large-for-ultrareview">

3409 Diff terlalu besar untuk ultrareview3430 Diff terlalu besar untuk ultrareview

3410</h3>3431</h3>

3411 3432 

3412Diff antara branch Anda dan branch base, termasuk perubahan yang tidak berkomit dan staged, melebihi batas ukuran untuk [ultrareview](/docs/id/ultrareview), jadi `/code-review ultra` dan subcommand `claude ultrareview` menolak review sebelum sesi cloud dimulai. Review yang ditolak tidak menggunakan run gratis dan tidak menagih kredit penggunaan. Pesan menamai batas yang berlaku, ukuran diff Anda, dan file yang berkontribusi paling banyak baris yang berubah. Sebelum v2.1.216, pesan menunjukkan hanya statistik diff mentah.3433Diff antara branch Anda dan branch dasar, termasuk perubahan yang belum di-commit dan yang sudah di-stage, melebihi batas ukuran untuk [ultrareview](/docs/id/ultrareview), sehingga `/code-review ultra` dan subperintah `claude ultrareview` menolak tinjauan sebelum sesi cloud dimulai. Tinjauan yang ditolak tidak menggunakan run gratis dan tidak menagih kredit penggunaan. Pesan menyebutkan batas yang berlaku, ukuran diff Anda, dan file yang menyumbang baris perubahan terbanyak. Sebelum v2.1.216, pesan hanya menampilkan statistik diff mentah.

3413 3434 

3414```text theme={null}3435```text theme={null}

3415Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.3436Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.

3416```3437```

3417 3438 

3418Meninjau pull request menerapkan batas yang sama; bentuk pesan itu dimulai `PR #<N> is too large for ultrareview` dan menamai file dan jumlah baris PR.3439Meninjau pull request menerapkan batas yang sama; bentuk pesan tersebut diawali dengan `PR #<N> is too large for ultrareview` dan menyebutkan jumlah file dan baris PR tersebut.

3419 3440 

3420**Yang harus dilakukan:**3441**Yang harus dilakukan:**

3421 3442 

3422* Berikan branch base yang lebih dekat ke pekerjaan Anda, seperti `/code-review ultra develop`, jadi review mencakup hanya diff terhadap branch itu3443* Teruskan branch dasar yang lebih dekat dengan pekerjaan Anda, seperti `/code-review ultra develop`, sehingga tinjauan hanya mencakup diff terhadap branch tersebut

3423* Pisahkan perubahan menjadi branch yang lebih kecil dan tinjau masing-masing. File yang pesan namakan berkontribusi paling banyak baris yang berubah, jadi mulai dengan memindahkan yang ke branch mereka sendiri.3444* Pecah perubahan menjadi branch yang lebih kecil dan tinjau masing-masing. File yang disebutkan dalam pesan menyumbang baris perubahan terbanyak, jadi mulailah dengan memindahkan file-file tersebut ke branch-nya sendiri.

3424 3445 

3425<h3 id="could-not-find-merge-base-with-the-base-branch">3446<h3 id="could-not-find-merge-base-with-the-base-branch">

3426 Tidak dapat menemukan merge-base dengan branch base3447 Tidak dapat menemukan merge-base dengan branch dasar

3427</h3>3448</h3>

3428 3449 

3429`/code-review ultra` dan subcommand `claude ultrareview` meninjau diff antara branch Anda dan branch base, yang memerlukan commit yang keduanya bagikan. Ketika `git merge-base` tidak menemukan satu pun, Claude Code menolak review sebelum sesi cloud dimulai. Pada clone yang Claude Code dapat verifikasi lengkap, dengan setidaknya satu branch, jatuh kembali ke [meninjau setiap file yang dilacak](/docs/id/ultrareview#diff-limits-and-fallbacks) alih-alih menolak. Anda melihat penolakan ini ketika branch base tidak dapat ditemukan sama sekali, ketika Claude Code tidak dapat memverifikasi bahwa clone Anda lengkap, atau di repository langka di mana diff seluruh pohon tidak mungkin, seperti format objek SHA-256.3450`/code-review ultra` dan subperintah `claude ultrareview` meninjau diff antara branch Anda dan branch dasar, yang memerlukan commit yang dimiliki bersama oleh keduanya. Ketika `git merge-base` tidak menemukannya, Claude Code menolak tinjauan sebelum sesi cloud dimulai. Pada clone yang dapat diverifikasi Claude Code sebagai lengkap, dengan setidaknya satu branch, Claude Code melakukan fallback ke [meninjau setiap file yang dilacak](/docs/id/ultrareview#diff-limits-and-fallbacks) alih-alih menolak. Anda melihat penolakan ini ketika branch dasar sama sekali tidak dapat ditemukan, ketika Claude Code tidak dapat memverifikasi bahwa clone Anda lengkap, atau pada repositori langka di mana diff seluruh pohon tidak memungkinkan, seperti format objek SHA-256.

3430 3451 

3431```text theme={null}3452```text theme={null}

3432Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.3453Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.

3433```3454```

3434 3455 

3435Petunjuk setelah kalimat pertama tergantung pada apa yang Claude Code amati:3456Petunjuk setelah kalimat pertama bergantung pada apa yang diamati Claude Code:

3436 3457 

3437* **Anda tidak melewatkan branch base**: Claude Code dibandingkan terhadap branch default repository dan menyarankan melewatkan base Anda secara eksplisit, seperti dalam contoh di atas3458* **Anda tidak meneruskan branch dasar**: Claude Code membandingkan dengan branch default repositori dan menyarankan untuk meneruskan branch dasar Anda secara eksplisit, seperti pada contoh di atas

3438* **Anda melewatkan branch base yang sudah ada di clone Anda**: petunjuk membaca ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3459* **Anda meneruskan branch dasar yang sudah ada di clone Anda**: petunjuk berbunyi ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3439* **Anda melewatkan branch base yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuk membaca ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; ketika Claude Code tidak dapat mengatakan apakah clone Anda dangkal, menyarankan `git fetch --unshallow origin` sebagai gantinya. Sebelum v2.1.221, petunjuk menyarankan `git fetch --unshallow origin` untuk setiap branch base yang diambil, dan pada clone lengkap command itu gagal dengan `fatal: --unshallow on a complete repository does not make sense`.3460* **Anda meneruskan branch dasar yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuk berbunyi ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; ketika Claude Code tidak dapat mengetahui apakah clone Anda dangkal, Claude Code menyarankan `git fetch --unshallow origin` sebagai gantinya. Sebelum v2.1.221, petunjuk menyarankan `git fetch --unshallow origin` untuk setiap branch dasar yang diambil, dan pada clone yang lengkap perintah tersebut gagal dengan `fatal: --unshallow on a complete repository does not make sense`.

3440 3461 

3441**Yang harus dilakukan:**3462**Yang harus dilakukan:**

3442 3463 

3443* Jika branch lain adalah base nyata Anda, lewatkan secara eksplisit: `/code-review ultra <branch>`3464* Jika branch lain adalah branch dasar Anda yang sebenarnya, teruskan secara eksplisit: `/code-review ultra <branch>`

3444* Jika clone Anda mungkin tidak memiliki riwayat lengkap, jalankan `git fetch --unshallow origin` dan jalankan kembali review3465* Jika clone Anda mungkin tidak memiliki riwayat lengkap, jalankan `git fetch --unshallow origin` dan jalankan ulang tinjauan

3445 3466 

3446<h3 id="your-checkout-has-no-branches">3467<h3 id="your-checkout-has-no-branches">

3447 Checkout Anda tidak memiliki branch3468 Checkout Anda tidak memiliki branch

3448</h3>3469</h3>

3449 3470 

3450Checkout dapat memiliki commit tetapi tidak ada branch: jika Anda menjalankan `git init` diikuti `git fetch <url>` dan `git checkout FETCH_HEAD`, Anda mendapatkan HEAD terlepas dengan tidak ada ref. Claude Code mengemas repository Anda sebagai git bundle untuk mengunggahnya untuk [ultrareview](/docs/id/ultrareview), dan tidak dapat membundle repository yang tidak memiliki branch atau ref lain, jadi `/code-review ultra` dan subcommand `claude ultrareview` menolak review sebelum sesi cloud dimulai.3471Checkout dapat memiliki commit tetapi tidak memiliki branch: jika Anda menjalankan `git init` diikuti dengan `git fetch <url>` dan `git checkout FETCH_HEAD`, Anda mendapatkan HEAD terlepas (detached) tanpa ref. Claude Code mengemas repositori Anda sebagai git bundle untuk mengunggahnya bagi [ultrareview](/docs/id/ultrareview), dan Claude Code tidak dapat membuat bundle dari repositori yang tidak memiliki branch atau ref lain, sehingga `/code-review ultra` dan subperintah `claude ultrareview` menolak tinjauan sebelum sesi cloud dimulai.

3451 3472 

3452```text theme={null}3473```text theme={null}

3453Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.3474Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.


3457 3478 

3458**Yang harus dilakukan:**3479**Yang harus dilakukan:**

3459 3480 

3460* Buat branch di commit saat ini dengan `git checkout -b <name>`, kemudian jalankan kembali review3481* Buat branch pada commit Anda saat ini dengan `git checkout -b <name>`, lalu jalankan ulang tinjauan

3461 3482 

3462<h3 id="no-github-account-is-connected-to-your-claude-account">3483<h3 id="no-github-account-is-connected-to-your-claude-account">

3463 Tidak ada akun GitHub yang terhubung ke akun Claude Anda3484 Tidak ada akun GitHub yang terhubung ke akun Claude Anda

3464</h3>3485</h3>

3465 3486 

3466Anda menjalankan `/code-review ultra <PR#>` atau `claude ultrareview <PR#>`, dan sebelum membuat sesi cloud Claude Code menanyakan server apakah [akun GitHub yang terhubung ke akun Claude Anda](/docs/id/ultrareview#review-a-pull-request) dapat mencapai repository PR. Tidak ada akun yang terhubung, atau koneksi kedaluwarsa, jadi clone cloud akan gagal dan Claude Code menolak peluncuran. Claude Code tidak menghabiskan run gratis atau menagih kredit penggunaan untuk peluncuran yang ditolak.3487Anda menjalankan `/code-review ultra <PR#>` atau `claude ultrareview <PR#>`, dan sebelum membuat sesi cloud, Claude Code menanyakan kepada server apakah [akun GitHub yang terhubung ke akun Claude Anda](/docs/id/ultrareview#review-a-pull-request) dapat menjangkau repositori PR tersebut. Tidak ada akun yang terhubung, atau koneksinya kedaluwarsa, sehingga clone di cloud akan gagal dan Claude Code menolak peluncuran. Claude Code tidak menggunakan run gratis atau menagih kredit penggunaan untuk peluncuran yang ditolak.

3467 3488 

3468```text theme={null}3489```text theme={null}

3469Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).3490Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).

3470```3491```

3471 3492 

3472Ketika [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) tidak tersedia dalam sesi Anda, pesan hanya menamai link claude.ai.3493Ketika [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) tidak tersedia dalam sesi Anda, pesan hanya menyebutkan link claude.ai.

3473 3494 

3474**Yang harus dilakukan:**3495**Yang harus dilakukan:**

3475 3496 

3476* Jalankan `/web-setup` untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda, atau hubungkan akun di [claude.ai/connect-github](https://claude.ai/connect-github)3497* Jalankan `/web-setup` untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda, atau hubungkan akun di [claude.ai/connect-github](https://claude.ai/connect-github)

3477* Jalankan kembali review semenit setelah terhubung3498* Jalankan ulang tinjauan satu menit setelah terhubung

3478 3499 

3479Sebelum v2.1.248, Claude Code tidak memeriksa ini sebelum peluncuran.3500Sebelum v2.1.248, Claude Code tidak memeriksa hal ini sebelum peluncuran.

3480 3501 

3481<h3 id="your-connected-github-account-cant-see-the-repository">3502<h3 id="your-connected-github-account-cant-see-the-repository">

3482 Akun GitHub yang terhubung Anda tidak dapat melihat repository3503 Akun GitHub yang terhubung tidak dapat melihat repositori

3483</h3>3504</h3>

3484 3505 

3485Anda menjalankan `/code-review ultra <PR#>` atau `claude ultrareview <PR#>`, dan [akun GitHub yang terhubung ke akun Claude Anda](/docs/id/ultrareview#review-a-pull-request) tidak dapat membaca repository PR, jadi clone cloud akan gagal dan Claude Code menolak peluncuran. Claude Code tidak menghabiskan run gratis atau menagih kredit penggunaan untuk peluncuran yang ditolak.3506Anda menjalankan `/code-review ultra <PR#>` atau `claude ultrareview <PR#>`, dan [akun GitHub yang terhubung ke akun Claude Anda](/docs/id/ultrareview#review-a-pull-request) tidak dapat membaca repositori PR tersebut, sehingga clone di cloud akan gagal dan Claude Code menolak peluncuran. Claude Code tidak menggunakan run gratis atau menagih kredit penggunaan untuk peluncuran yang ditolak.

3486 3507 

3487```text theme={null}3508```text theme={null}

3488Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.3509Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.

3489```3510```

3490 3511 

3491Ketika [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) tidak tersedia dalam sesi Anda, pesan hanya menamai instalasi aplikasi.3512Ketika [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) tidak tersedia dalam sesi Anda, pesan hanya menyebutkan instalasi aplikasi.

3492 3513 

3493**Yang harus dilakukan:**3514**Yang harus dilakukan:**

3494 3515 

3495* Jika CLI `gh` lokal Anda dapat membaca repository, jalankan `/web-setup` untuk menghubungkan login itu ke akun Claude Anda3516* Jika CLI `gh` lokal Anda dapat membaca repositori, jalankan `/web-setup` untuk menghubungkan login tersebut ke akun Claude Anda

3496* Jalankan kembali review setelah perubahan3517* Jalankan ulang tinjauan setelah perubahan

3497 3518 

3498Sebelum v2.1.248, Claude Code tidak memeriksa ini sebelum peluncuran.3519Sebelum v2.1.248, Claude Code tidak memeriksa hal ini sebelum peluncuran.

3499 3520 

3500<h3 id="the-github-app-preflight-failed-transiently">3521<h3 id="the-github-app-preflight-failed-transiently">

3501 Preflight GitHub App gagal secara sementara3522 Preflight GitHub App gagal secara sementara

3502</h3>3523</h3>

3503 3524 

3504Anda memulai [sesi cloud](/docs/id/claude-code-on-the-web) dari repository lokal, dan dua langkah gagal bersama-sama. Claude Code tidak dapat membangun atau mengunggah bundle repository Anda. Sebelum unggahan, memeriksa apakah layanan cloud dapat mengkloning repository dari GitHub, dan daripada jawaban pasti, pemeriksaan itu berakhir dalam kesalahan yang retry dapat menghapus, seperti kesalahan jaringan, timeout, atau kesalahan server sementara. Pesan lengkap dimulai dengan apa yang menghentikan bundle, misalnya `Could not upload repo bundle (<error>)`, dan berakhir dengan kalimat preflight:3525Anda memulai [sesi cloud](/docs/id/claude-code-on-the-web) dari repositori lokal, dan dua langkah gagal bersamaan. Claude Code tidak dapat membuat atau mengunggah bundle repositori Anda. Sebelum unggahan, Claude Code memeriksa apakah layanan cloud dapat meng-clone repositori dari GitHub, dan alih-alih jawaban pasti, pemeriksaan tersebut berakhir dengan error yang dapat diatasi dengan retry, seperti error jaringan, timeout, atau error server sementara. Pesan lengkap diawali dengan apa yang menghentikan bundle, misalnya `Could not upload repo bundle (<error>)`, dan diakhiri dengan kalimat preflight:

3505 3526 

3506```text theme={null}3527```text theme={null}

3507Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead3528Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead


3509 3530 

3510**Yang harus dilakukan:**3531**Yang harus dilakukan:**

3511 3532 

3512* Jalankan kembali command setelah sebentar. Ketika pemeriksaan GitHub lulus, Claude Code dapat memulai sesi dari clone GitHub, jadi unggahan yang gagal tidak lagi memblokir peluncuran3533* Jalankan ulang perintah setelah beberapa saat. Ketika pemeriksaan GitHub berhasil, Claude Code dapat memulai sesi dari clone GitHub, sehingga unggahan yang gagal tidak lagi memblokir peluncuran

3513* Jika retry terus gagal, awal pesan menamai apa yang menghentikan unggahan. Ketika penyebab itu sesuatu yang dapat Anda perbaiki, perbaiki sehingga sesi dapat dimulai dari repository lokal Anda sebagai gantinya3534* Jika retry terus gagal, bagian awal pesan menyebutkan apa yang menghentikan unggahan. Jika penyebab tersebut adalah sesuatu yang dapat Anda perbaiki, perbaikilah agar sesi dapat dimulai dari repositori lokal Anda

3514 3535 

3515Sebelum v2.1.251, Claude Code mengakhiri pesan dengan `Please set up GitHub on https://claude.ai/code` bahkan ketika pemeriksaan GitHub hanya gagal secara sementara, dan saran setup tidak dapat menghapus kegagalan sementara.3536Sebelum v2.1.251, Claude Code mengakhiri pesan dengan `Please set up GitHub on https://claude.ai/code` bahkan ketika pemeriksaan GitHub hanya gagal secara sementara, dan saran penyiapan tidak dapat mengatasi kegagalan sementara.

3516 3537 

3517<h3 id="the-repository-upload-cant-follow-a-git-setting">3538<h3 id="the-repository-upload-cant-follow-a-git-setting">

3518 Repository upload tidak dapat mengikuti pengaturan git3539 Unggahan repositori tidak dapat mengikuti pengaturan git

3519</h3>3540</h3>

3520 3541 

3521Anda memulai [sesi cloud yang mengunggah repository lokal Anda](/docs/id/claude-code-on-the-web#send-local-repositories-without-github), atau [ultrareview](/docs/id/ultrareview) dari branch, dan unggahan tidak dapat mengikuti salah satu pengaturan git yang memutuskan aturan atribut mana yang berlaku untuk file Anda. Jika unggahan berlanjut dan melewatkan aturan, file yang git ubah sebelum menyimpannya, seperti yang filter bersih enkripsi, dapat mencapai cloud seperti di disk. Claude Code menolak unggahan sebagai gantinya, dan tidak ada yang diunggah:3542Anda memulai [sesi cloud yang mengunggah repositori lokal Anda](/docs/id/claude-code-on-the-web#send-local-repositories-without-github), atau [ultrareview](/docs/id/ultrareview) dari sebuah branch, dan unggahan tidak dapat mengikuti salah satu pengaturan git yang menentukan aturan atribut mana yang berlaku untuk file Anda. Jika unggahan dilanjutkan dan melewatkan suatu aturan, file yang diubah git sebelum menyimpannya, seperti file yang dienkripsi oleh clean filter, dapat sampai ke cloud dalam keadaan seperti di disk. Claude Code menolak unggahan sebagai gantinya, dan tidak ada yang diunggah:

3522 3543 

3523```text theme={null}3544```text theme={null}

3524Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository's .git/config or directly into your ~/.gitconfig, then retry.3545Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository’s .git/config or directly into your ~/.gitconfig, then retry.

3525```3546```

3526 3547 

3527Pesan menamai pengaturan dan di mana diatur, dan berakhir dengan perbaikan untuk kasus yang Anda tekan. Penolakan yang sama muncul untuk `core.attributesFile` dan `attr.tree`, masing-masing dengan perbaikannya sendiri.3548Pesan menyebutkan pengaturan dan tempat pengaturan tersebut diatur, dan diakhiri dengan perbaikan untuk kasus yang Anda alami. Penolakan yang sama muncul untuk `core.attributesFile` dan `attr.tree`, masing-masing dengan perbaikannya sendiri.

3528 3549 

3529Pesan dapat menamai file konfigurasi yang konfigurasi git Anda tarik melalui direktif `include` atau `includeIf`, bahkan ketika kondisi direktif itu tidak berlaku untuk repository ini.3550Pesan dapat menyebutkan file konfigurasi yang ditarik oleh konfigurasi git Anda melalui direktif `include` atau `includeIf`, bahkan ketika kondisi direktif tersebut tidak berlaku untuk repositori ini.

3530 3551 

3531**Yang harus dilakukan:**3552**Yang harus dilakukan:**

3532 3553 

3533* Terapkan perbaikan dalam kalimat terakhir pesan3554* Terapkan perbaikan yang ada di kalimat terakhir pesan

3534 3555 

3535<h3 id="github-isnt-connected-to-your-claude-account">3556<h3 id="github-isnt-connected-to-your-claude-account">

3536 GitHub tidak terhubung ke akun Claude Anda3557 GitHub tidak terhubung ke akun Claude Anda

3537</h3>3558</h3>

3538 3559 

3539Anda memulai [sesi cloud](/docs/id/claude-code-on-the-web) dari repository lokal Anda, misalnya dengan `/autofix-pr`. Tidak ada akun GitHub yang terhubung ke akun Claude Anda, atau koneksi kedaluwarsa, jadi Claude Code menolak peluncuran:3560Anda memulai [sesi cloud](/docs/id/claude-code-on-the-web) dari repositori lokal Anda, misalnya dengan `/autofix-pr`. Tidak ada akun GitHub yang terhubung ke akun Claude Anda, atau koneksinya kedaluwarsa, sehingga Claude Code menolak peluncuran:

3540 3561 

3541```text theme={null}3562```text theme={null}

3542GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github3563GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github

3543```3564```

3544 3565 

3545Ketika Anda membuat routine dengan [`/schedule`](/docs/id/routines), pesan yang sama muncul sebagai catatan setup yang menamai repository; catatan tidak memblokir pembuatan routine.3566Ketika Anda membuat routine dengan [`/schedule`](/docs/id/routines), pesan yang sama muncul sebagai catatan penyiapan yang menyebutkan repositori; catatan tersebut tidak memblokir pembuatan routine.

3546 3567 

3547**Yang harus dilakukan:**3568**Yang harus dilakukan:**

3548 3569 

3549* Jalankan `/web-setup` untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda, atau hubungkan akun di [claude.ai/connect-github](https://claude.ai/connect-github). Lihat [GitHub authentication options](/docs/id/claude-code-on-the-web#github-authentication-options) untuk bagaimana keduanya berbeda.3570* Jalankan `/web-setup` untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda, atau hubungkan akun di [claude.ai/connect-github](https://claude.ai/connect-github). Lihat [Opsi autentikasi GitHub](/docs/id/claude-code-on-the-web#github-authentication-options) untuk perbedaan keduanya.

3550* Jalankan kembali command semenit setelah terhubung3571* Jalankan ulang perintah satu menit setelah terhubung

3551 3572 

3552Sebelum v2.1.268, Claude Code melaporkan ini sebagai kegagalan sementara pemeriksaan Claude GitHub App dan menyarankan retry atau menginstal aplikasi; tidak satupun menghubungkan akun GitHub.3573Sebelum v2.1.268, Claude Code melaporkan hal ini sebagai kegagalan sementara pemeriksaan Claude GitHub App dan menyarankan untuk mencoba ulang atau menginstal aplikasi; tidak satu pun yang menghubungkan akun GitHub.

3553 3574 

3554<h3 id="single-sign-on-authorization-needed">3575<h3 id="single-sign-on-authorization-needed">

3555 Otorisasi single sign-on diperlukan3576 Otorisasi single sign-on diperlukan

3556</h3>3577</h3>

3557 3578 

3558Anda menjalankan [`/install-github-app`](/docs/id/github-actions#quick-setup) dan memilih repository yang organisasinya memberlakukan SAML single sign-on. Sebelum setup, Claude Code memeriksa akses Anda ke repository dengan CLI GitHub, dan GitHub menolak pemeriksaan itu karena token `gh` Anda belum diotorisasi untuk organisasi itu. Wizard menampilkan peringatan dengan langkah-langkah untuk mengotorisasi:3579Anda menjalankan [`/install-github-app`](/docs/id/github-actions#quick-setup) dan memilih repositori yang organisasinya menerapkan SAML single sign-on. Sebelum penyiapan, Claude Code memeriksa akses Anda ke repositori dengan GitHub CLI, dan GitHub menolak pemeriksaan tersebut karena token `gh` Anda belum diotorisasi untuk organisasi tersebut. Wizard menampilkan peringatan beserta langkah-langkah untuk melakukan otorisasi:

3559 3580 

3560```text theme={null}3581```text theme={null}

3561Single sign-on authorization needed3582Single sign-on authorization needed


3564 3585 

3565**Yang harus dilakukan:**3586**Yang harus dilakukan:**

3566 3587 

3567* Otorisasi kembali login GitHub CLI Anda dengan scope `repo` dan `workflow` dengan menjalankan `gh auth refresh -h github.com -s repo,workflow`, dan otorisasi organisasi ketika GitHub meminta single sign-on3588* Otorisasi ulang login GitHub CLI Anda dengan scope `repo` dan `workflow` dengan menjalankan `gh auth refresh -h github.com -s repo,workflow`, dan otorisasi organisasi ketika GitHub meminta single sign-on

3568* Jika Anda mengautentikasi dengan personal access token di `GH_TOKEN`, buka [github.com/settings/tokens](https://github.com/settings/tokens), pilih **Configure SSO** pada token, dan otorisasi organisasi3589* Jika Anda melakukan autentikasi dengan personal access token di `GH_TOKEN`, buka [github.com/settings/tokens](https://github.com/settings/tokens), pilih **Configure SSO** pada token tersebut, dan otorisasi organisasi

3569* Jalankan `/install-github-app` lagi3590* Jalankan `/install-github-app` lagi

3570 3591 

3571Sebelum v2.1.273, Claude Code menampilkan peringatan `Admin permissions required` untuk kondisi ini sebagai gantinya.3592Sebelum v2.1.273, Claude Code menampilkan peringatan `Admin permissions required` untuk kondisi ini sebagai gantinya.


3574 Gagal melanjutkan percakapan3595 Gagal melanjutkan percakapan

3575</h3>3596</h3>

3576 3597 

3577Claude Code tidak dapat membaca atau memproses transkrip yang disimpan untuk sesi yang Anda pilih dari [picker `claude --resume`](/docs/id/sessions#use-the-session-picker), jadi mengakhiri proses daripada melanjutkan dalam keadaan sebagian dimuat. Pesan mencakup command untuk retry:3598Claude Code tidak dapat membaca atau memproses transkrip tersimpan untuk sesi yang Anda pilih dari [pemilih `claude --resume`](/docs/id/sessions#use-the-session-picker), sehingga Claude Code mengakhiri proses alih-alih melanjutkan dalam keadaan termuat sebagian. Pesan menyertakan perintah untuk mencoba ulang:

3578 3599 

3579```text theme={null}3600```text theme={null}

3580Failed to resume the conversation.3601Failed to resume the conversation.

3581Run claude --resume <session-id> to retry, or claude to start a new session.3602Run claude --resume <session-id> to retry, or claude to start a new session.

3582```3603```

3583 3604 

3584Claude Code keluar dengan kode 1 setelah menampilkan pesan. Picker `/resume` di dalam sesi yang berjalan melaporkan `Failed to resume conversation` dalam percakapan sebagai gantinya, dan sesi saat ini Anda tetap berjalan. Sebelum v2.1.216, resume yang gagal dari picker `claude --resume` tetap di spinner `Resuming conversation…` tanpa batas waktu alih-alih menampilkan pesan ini.3605Claude Code keluar dengan kode 1 setelah menampilkan pesan. Pemilih `/resume` di dalam sesi yang sedang berjalan melaporkan `Failed to resume conversation` dalam percakapan sebagai gantinya, dan sesi Anda saat ini tetap berjalan. Sebelum v2.1.216, resume yang gagal dari pemilih `claude --resume` tetap berada pada spinner `Resuming conversation…` tanpa batas waktu alih-alih menampilkan pesan ini.

3585 3606 

3586**Yang harus dilakukan:**3607**Yang harus dilakukan:**

3587 3608 

3588* Jalankan `claude --resume <session-id>` dengan ID sesi dari pesan untuk retry3609* Jalankan `claude --resume <session-id>` dengan ID sesi dari pesan untuk mencoba ulang

3589* Jika setiap retry gagal dengan cara yang sama, jalankan `claude update` dan resume lagi. Versi sebelum v2.1.275 gagal resume ketika transkrip yang disimpan berisi entri yang tidak dapat dibaca.3610* Jika setiap retry gagal dengan cara yang sama, jalankan `claude update` dan lanjutkan lagi. Versi sebelum v2.1.275 menggagalkan resume ketika transkrip tersimpan berisi entri yang tidak dapat dibacanya.

3590* Jika retry gagal lagi, jalankan `claude` untuk memulai sesi baru3611* Jika retry gagal lagi, jalankan `claude` untuk memulai sesi baru

3591 3612 

3592<h3 id="no-conversation-found-with-the-session-id">3613<h3 id="no-conversation-found-with-the-session-id">

3593 Tidak ada percakapan yang ditemukan dengan ID sesi3614 Tidak ditemukan percakapan dengan ID sesi tersebut

3594</h3>3615</h3>

3595 3616 

3596Anda melewatkan ID sesi ke `claude --resume <session-id>` dan tidak ada transkrip yang disimpan cocok:3617Anda meneruskan ID sesi ke `claude --resume <session-id>` dan tidak ada transkrip tersimpan yang cocok dengannya:

3597 3618 

3598```text theme={null}3619```text theme={null}

3599No conversation found with session ID: <session-id>3620No conversation found with session ID: <session-id>

3600```3621```

3601 3622 

3602Claude Code keluar dengan kode 1 setelah menampilkan pesan. Claude Code [mencari project saat ini terlebih dahulu, kemudian setiap project lain di mesin ini](/docs/id/sessions#resume-a-session) untuk ID. Sebelum v2.1.223, pencarian berhenti di direktori project saat ini dan git worktree-nya, jadi resume dari direktori tempat sesi terakhir bekerja.3623Claude Code keluar dengan kode 1 setelah menampilkan pesan. Claude Code [mencari di proyek saat ini terlebih dahulu, lalu di setiap proyek lain di mesin ini](/docs/id/sessions#resume-a-session) untuk ID tersebut. Sebelum v2.1.223, pencarian berhenti di direktori proyek saat ini dan git worktree-nya, jadi lanjutkan dari direktori tempat sesi terakhir bekerja.

3603 3624 

3604Penyebab umum:3625Penyebab umum:

3605 3626 

3606* **ID yang salah ketik**: untuk run non-interaktif, ID adalah field `session_id` dari output [`--output-format json`](/docs/id/headless#get-structured-output)3627* **ID salah ketik**: untuk run non-interaktif, ID adalah field `session_id` dari [output `--output-format json`](/docs/id/headless#get-structured-output)

3607* **Transkrip yang dihapus**: Claude Code menghapus transkrip setelah [periode retensi](/docs/id/sessions#where-transcripts-are-stored), 30 hari secara default, mengikuti [aturan sweep retensi](/docs/id/claude-directory#cleaned-up-automatically)3628* **Transkrip terhapus**: Claude Code menghapus transkrip setelah [periode retensi](/docs/id/sessions#where-transcripts-are-stored), 30 hari secara default, mengikuti [aturan pembersihan retensi](/docs/id/claude-directory#cleaned-up-automatically)

3608* **Mesin berbeda**: Claude Code menyimpan transkrip secara lokal, jadi resume sesi di mesin tempat dijalankan3629* **Mesin berbeda**: Claude Code menyimpan transkrip secara lokal, jadi lanjutkan sesi di mesin tempat sesi tersebut dijalankan

3609* **Duplikat salinan**: jika Anda menyalin direktori project di bawah `~/.claude/projects` jadi dua transkrip membawa ID yang sama, Claude Code melaporkan pesan ini daripada resume satu salinan secara sewenang-wenang3630* **Salinan duplikat**: jika Anda menyalin direktori proyek di bawah `~/.claude/projects` sehingga dua transkrip membawa ID yang sama, Claude Code melaporkan pesan ini alih-alih melanjutkan salah satu salinan secara acak

3610 3631 

3611**Yang harus dilakukan:**3632**Yang harus dilakukan:**

3612 3633 

3613* Untuk sesi interaktif, buka [session picker](/docs/id/sessions#use-the-session-picker) dengan `claude --resume` dan tekan `Ctrl+A` untuk memperluas ke setiap project di mesin ini, kemudian pilih sesi3634* Untuk sesi interaktif, buka [pemilih sesi](/docs/id/sessions#use-the-session-picker) dengan `claude --resume` dan tekan `Ctrl+A` untuk memperluasnya ke setiap proyek di mesin ini, lalu pilih sesi

3614* Sesi yang dibuat dengan `claude -p` atau [Agent SDK](/docs/id/agent-sdk/overview) tidak muncul di picker, jadi periksa kembali ID terhadap `session_id` yang run asli Anda cetak3635* Sesi yang dibuat dengan `claude -p` atau [Agent SDK](/docs/id/agent-sdk/overview) tidak muncul di pemilih, jadi periksa ulang ID terhadap `session_id` yang dicetak oleh run asli Anda

3615 3636 

3616<h3 id="windows-reported-an-error-ebadf">3637<h3 id="windows-reported-an-error-ebadf">

3617 Windows melaporkan kesalahan (EBADF) ketika Claude Code membaca file transkrip sesi ini3638 Windows melaporkan kesalahan (EBADF) saat Claude Code membaca file transkrip sesi ini

3618</h3>3639</h3>

3619 3640 

3620Anda melanjutkan sesi di Windows, file [transkrip](/docs/id/sessions#where-transcripts-are-stored) yang disimpan dibuka secara normal, dan membacanya kemudian gagal dengan kesalahan sistem EBADF. Kesalahan sistem tidak mengatakan mengapa pembacaan gagal, jadi pesan menyarankan penyebab kemungkinan dan apa yang dicoba:3641Anda melanjutkan sesi di Windows, [file transkrip](/docs/id/sessions#where-transcripts-are-stored) yang tersimpan untuk sesi tersebut terbuka dengan normal, lalu pembacaannya gagal dengan kesalahan sistem EBADF. Kesalahan sistem tidak menyebutkan mengapa pembacaan gagal, sehingga pesan tersebut menyarankan kemungkinan penyebab dan hal yang dapat dicoba:

3621 3642 

3622```text theme={null}3643```text theme={null}

3623Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.3644Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.

3624```3645```

3625 3646 

3626Pesan mengikuti baris kegagalan command sendiri, seperti `Failed to resume session <session-id>`. Command `claude --resume` atau [`claude -p`](/docs/id/headless) keluar dengan kode 1 setelah menampilkannya. Setelah `/resume` di dalam sesi, sesi saat ini Anda tetap berjalan.3647Pesan tersebut muncul setelah baris kegagalan perintah itu sendiri, seperti `Failed to resume session <session-id>`. Perintah `claude --resume` atau [`claude -p`](/docs/id/headless) keluar dengan kode 1 setelah menampilkannya. Setelah `/resume` di dalam sesi, sesi Anda saat ini tetap berjalan.

3627 3648 

3628**Yang harus dilakukan:**3649**Yang harus dilakukan:**

3629 3650 

3630* Kecualikan folder yang menyimpan transkrip sesi Anda dari software yang memindai atau mengintersepsi pembacaan file, seperti keamanan, enkripsi, atau alat manajemen endpoint. Transkrip tinggal di bawah `%USERPROFILE%\.claude\projects` secara default, atau di bawah direktori yang [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars) namakan3651* Kecualikan folder yang menyimpan transkrip sesi Anda dari perangkat lunak yang memindai atau mencegat pembacaan file, seperti alat keamanan, enkripsi, atau manajemen endpoint. Secara default, transkrip berada di bawah `%USERPROFILE%\.claude\projects`, atau di bawah direktori yang ditunjuk oleh [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars)

3631* Jika Anda tidak dapat menambahkan pengecualian, tambahkan Claude Code ke aplikasi yang diizinkan software itu sebagai gantinya3652* Jika Anda tidak dapat menambahkan pengecualian, tambahkan Claude Code ke daftar aplikasi yang diizinkan oleh perangkat lunak tersebut

3632* Resume sesi lagi3653* Lanjutkan sesi kembali

3633 3654 

3634Sebelum v2.1.282, kegagalan datang tanpa penjelasan: `claude --resume <session-id>` berakhir di `Failed to resume session <session-id>`, dan run `-p` mencetak hanya teks kesalahan sistem, seperti `Failed to resume session: EBADF: bad file descriptor, read`.3655Sebelum v2.1.282, kegagalan ini muncul tanpa penjelasan: `claude --resume <session-id>` berakhir pada `Failed to resume session <session-id>`, dan proses `-p` hanya mencetak teks kesalahan sistem, seperti `Failed to resume session: EBADF: bad file descriptor, read`.

3635 3656 

3636<h3 id="cannot-switch-renderers-in-this-session">3657<h3 id="cannot-switch-renderers-in-this-session">

3637 Tidak dapat mengganti renderer dalam sesi ini3658 Tidak dapat beralih renderer dalam sesi ini

3638</h3>3659</h3>

3639 3660 

3640Ketika Anda mengganti renderer, Claude Code memulai ulang prosesnya. Anda menjalankan [`/tui`](/docs/id/fullscreen#enable-fullscreen-rendering) dalam sesi Claude Code menolak untuk memulai ulang, jadi tidak mengganti dan menyimpan apa pun. Pesan mana yang Anda lihat memberi tahu Anda penyebabnya:3661Saat Anda beralih renderer, Claude Code memulai ulang prosesnya. Anda menjalankan [`/tui`](/docs/id/fullscreen#enable-fullscreen-rendering) dalam sesi yang tidak mau dimulai ulang oleh Claude Code, sehingga Claude Code tidak beralih dan tidak menyimpan apa pun. Pesan yang Anda lihat menunjukkan penyebabnya:

3641 3662 

3642* `Cannot switch renderers while work is running in the background`: Anda memiliki pekerjaan background yang berjalan yang restart akan mengorbankan, seperti shell background atau subagent. Tunggu pekerjaan selesai atau hentikan dengan [`/tasks`](/docs/id/commands), kemudian jalankan `/tui fullscreen` atau `/tui default` lagi3663* `Cannot switch renderers while work is running in the background`: Anda memiliki pekerjaan latar belakang yang sedang berjalan dan akan ditinggalkan oleh proses mulai ulang, seperti shell latar belakang atau subagent. Tunggu hingga pekerjaan selesai atau hentikan dengan [`/tasks`](/docs/id/commands), lalu jalankan `/tui fullscreen` atau `/tui default` lagi

3643* `Cannot switch renderers in this session`: sesi memiliki pembatasan Claude Code tidak dapat lewatkan ke proses yang dimulai ulang. Sebelum v2.1.234, Claude Code dimulai ulang bagaimanapun dan sesi yang diluncurkan ulang berjalan tanpanya3664* `Cannot switch renderers in this session`: sesi memiliki pembatasan yang tidak dapat diteruskan Claude Code ke proses yang dimulai ulang. Sebelum v2.1.234, Claude Code tetap memulai ulang dan sesi yang diluncurkan kembali berjalan tanpa pembatasan tersebut

3644 3665 

3645Dalam pesan pembatasan, bagian dalam tanda kurung menamai pembatasan Claude Code temukan:3666Dalam pesan pembatasan, bagian di dalam tanda kurung menyebutkan pembatasan yang ditemukan Claude Code:

3646 3667 

3647```text theme={null}3668```text theme={null}

3648Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.3669Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.

3649```3670```

3650 3671 

3651Setiap alasan pesan dapat menunjukkan dalam tanda kurung:3672Setiap alasan yang dapat ditampilkan pesan di dalam tanda kurung:

3652 3673 

3653* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: Anda memulai sesi dengan flag Claude Code tidak lewatkan kembali ke proses yang dimulai ulang. Flag ini termasuk [`--system-prompt`](/docs/id/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, [`--tools`](/docs/id/cli-reference#cli-flags) allowlist, [`--setting-sources`](/docs/id/cli-reference#cli-flags), dan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags)3674* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: Anda memulai sesi dengan flag yang tidak diteruskan kembali oleh Claude Code ke proses yang dimulai ulang. Flag ini mencakup [`--system-prompt`](/docs/id/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, allowlist [`--tools`](/docs/id/cli-reference#cli-flags), [`--setting-sources`](/docs/id/cli-reference#cli-flags), dan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags)

3654* `permission rules set for this session only`: [permission update](/docs/id/hooks#permission-update-entries) dari hook atau SDK caller menambahkan aturan deny atau ask dengan destinasi `session`. Aturan allow yang scoped sesi tidak memicu penolakan. Restart menjatuhkannya, dan Claude Code meminta lagi sebagai gantinya3675* `permission rules set for this session only`: sebuah [pembaruan izin](/docs/id/hooks#permission-update-entries) dari hook atau pemanggil SDK menambahkan aturan deny atau ask dengan tujuan `session`. Aturan allow yang berlingkup sesi tidak memicu penolakan ini. Proses mulai ulang akan menghapusnya, dan Claude Code akan meminta izin lagi sebagai gantinya

3655* `ask-before-running rules with no command-line form`: permission update dari hook atau SDK caller menambahkan aturan ask bersama aturan Claude Code lewatkan kembali sebagai `--allowed-tools` dan `--disallowed-tools`. Tidak ada flag untuk aturan ask3676* `ask-before-running rules with no command-line form`: pembaruan izin dari hook atau pemanggil SDK menambahkan aturan ask di samping aturan yang diteruskan kembali oleh Claude Code sebagai `--allowed-tools` dan `--disallowed-tools`. Tidak ada flag untuk aturan ask

3656* `permission rules a command line cannot carry intact` dan `added directories a command line cannot carry intact`: permission update menambahkan aturan atau path direktori mid-session. Baris perintah proses yang dimulai ulang tidak dapat membawa teksnya sebagai nilai yang sama3677* `permission rules a command line cannot carry intact` dan `added directories a command line cannot carry intact`: pembaruan izin menambahkan aturan atau jalur direktori di tengah sesi. Baris perintah proses yang dimulai ulang tidak dapat membawa teksnya sebagai nilai yang sama

3657 3678 

3658**Yang harus dilakukan:**3679**Yang harus dilakukan:**

3659 3680 

3660* Dalam sesi yang dimulai tanpa pembatasan itu, jalankan `/tui fullscreen`, atau `/tui default` untuk beralih kembali. Claude Code menyimpan pengaturan [`tui`](/docs/id/settings-reference#tui) di sana3681* Dalam sesi yang dimulai tanpa pembatasan tersebut, jalankan `/tui fullscreen`, atau `/tui default` untuk beralih kembali. Claude Code menyimpan [pengaturan `tui`](/docs/id/settings-reference#tui) di sana

3661 3682 

3662<h3 id="couldnt-open-claude-desktop">3683<h3 id="couldnt-open-claude-desktop">

3663 Tidak dapat membuka Claude Desktop3684 Tidak dapat membuka Claude Desktop

3664</h3>3685</h3>

3665 3686 

3666Anda menjalankan [`/desktop`](/docs/id/desktop#coming-from-the-cli) atau alias `/app` dalam sesi, atau [`claude --desktop`](/docs/id/cli-reference#cli-flags) di shell Anda, dan command sistem yang Claude Code gunakan untuk membuka Claude Desktop gagal. Setelah `/desktop`, sesi tetap di terminal; `claude --desktop` mencetak pesan tanpa awalan `Error:` dan keluar dengan status 1.3687Anda menjalankan [`/desktop`](/docs/id/desktop#coming-from-the-cli) atau aliasnya `/app` dalam sesi, atau [`claude --desktop`](/docs/id/cli-reference#cli-flags) di shell Anda, dan perintah sistem yang digunakan Claude Code untuk membuka Claude Desktop gagal. Setelah `/desktop`, sesi tetap berada di terminal; `claude --desktop` mencetak pesan tanpa awalan `Error:` dan keluar dengan status 1.

3667 3688 

3668Teks dalam tanda kurung menamai command yang gagal, dengan status keluar dan baris pertama output kesalahannya ketika menghasilkannya. Di macOS command itu adalah `open`, seperti dalam contoh ini; di Windows itu adalah `rundll32`:3689Teks di dalam tanda kurung menyebutkan perintah yang gagal, beserta status keluarnya dan baris pertama output kesalahannya jika perintah tersebut menghasilkannya. Di macOS perintah tersebut adalah `open`, seperti dalam contoh ini; di Windows perintahnya adalah `rundll32`:

3669 3690 

3670```text theme={null}3691```text theme={null}

3671Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.3692Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.


3673 3694 

3674**Yang harus dilakukan:**3695**Yang harus dilakukan:**

3675 3696 

3676* Buka Claude Desktop sendiri, kemudian jalankan `/desktop` atau `claude --desktop` lagi3697* Buka Claude Desktop sendiri, lalu jalankan `/desktop` atau `claude --desktop` lagi

3677* Untuk membaca output kesalahan lengkap command itu, aktifkan debug logging dengan `/debug` dan jalankan `/desktop` lagi, atau jalankan `claude --desktop --debug-file <path>`, kemudian periksa log debug3698* Untuk membaca output kesalahan lengkap dari perintah yang gagal, aktifkan logging debug dengan `/debug` dan jalankan `/desktop` lagi, atau jalankan `claude --desktop --debug-file <path>`, lalu periksa log debug

3678 3699 

3679Sebelum v2.1.285, pesan berakhir `Open Claude Desktop and run /desktop again.` Sebelum v2.1.275, itu adalah `Failed to open Claude Desktop. Please try opening it manually.` dan tidak mengatakan apa yang gagal.3700Sebelum v2.1.285, pesan tersebut diakhiri dengan `Open Claude Desktop and run /desktop again.` Sebelum v2.1.275, pesannya adalah `Failed to open Claude Desktop. Please try opening it manually.` dan tidak menyebutkan apa yang gagal.

3680 3701 

3681<h3 id="terminal-setup-left-your-zed-keymap-unchanged">3702<h3 id="terminal-setup-left-your-zed-keymap-unchanged">

3682 /terminal-setup meninggalkan keymap Zed Anda tidak berubah3703 /terminal-setup membiarkan keymap Zed Anda tidak berubah

3683</h3>3704</h3>

3684 3705 

3685Anda menjalankan [`/terminal-setup`](/docs/id/terminal-config#enter-multiline-prompts) di Zed, dan Claude Code tidak dapat menyelesaikan pembaruan ke `keymap.json` Zed Anda, jadi meninggalkannya seperti apa adanya.3706Anda menjalankan [`/terminal-setup`](/docs/id/terminal-config#enter-multiline-prompts) di Zed, dan Claude Code tidak dapat menyelesaikan pembaruan pada `keymap.json` Zed Anda, sehingga file tersebut dibiarkan seperti semula.

3686 3707 

3687Setiap pesan menamai path ke keymap Anda dan berakhir dengan blok keybinding untuk ditambahkan sendiri:3708Setiap pesan menyebutkan jalur ke keymap Anda dan diakhiri dengan blok pintasan keyboard yang dapat Anda tambahkan sendiri:

3688 3709 

3689```text theme={null}3710```text theme={null}

3690Couldn't update your Zed keymap, so it was left unchanged.3711Couldn't update your Zed keymap, so it was left unchanged.


3692{ "context": "Terminal", "bindings": { "shift-enter": ["terminal::SendText", "\u001b\r"] } }3713{ "context": "Terminal", "bindings": { "shift-enter": ["terminal::SendText", "\u001b\r"] } }

3693```3714```

3694 3715 

3695Baris pertama pesan menamai penyebabnya:3716Baris pertama pesan menyebutkan penyebabnya:

3696 3717 

3697* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code tidak dapat membaca file, misalnya karena izin file3718* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code tidak dapat membaca file tersebut, misalnya karena hak akses file

3698* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: file dibaca dengan baik tetapi tidak diuraikan sebagai array blok keybinding, bahkan dengan komentar `//` dan trailing comma yang diizinkan3719* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: file berhasil dibaca tetapi tidak dapat di-parse sebagai array blok pintasan keyboard, bahkan dengan komentar `//` dan koma di akhir yang diizinkan

3699* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code tidak dapat menyalin file ke backup `.bak` di sebelahnya, jadi tidak mengubah apa pun3720* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code tidak dapat menyalin file ke cadangan `.bak` di sebelahnya, sehingga tidak mengubah apa pun

3700* `Couldn't update your Zed keymap, so it was left unchanged.`: hasil yang digabung tidak memverifikasi sebagai keymap valid yang membawa keybinding, jadi Claude Code membuangnya alih-alih menulis. Blok keybinding dengan kunci yang diduplikasi dapat menyebabkan ini3721* `Couldn't update your Zed keymap, so it was left unchanged.`: hasil penggabungan tidak terverifikasi sebagai keymap valid yang berisi pintasan tersebut, sehingga Claude Code membuangnya alih-alih menulisnya. Blok pintasan keyboard dengan kunci duplikat dapat menyebabkan hal ini

3701 3722 

3702**Yang harus dilakukan:**3723**Yang harus dilakukan:**

3703 3724 

3704* Salin blok dari pesan ke array tingkat atas di `keymap.json` Anda di path yang pesan namakan3725* Salin blok dari pesan ke dalam array tingkat atas di `keymap.json` Anda pada jalur yang disebutkan pesan

3705* Untuk `isn't a readable list of keybindings`, perbaiki kesalahan sintaks, atau buat nilai tingkat atas file menjadi array, kemudian jalankan `/terminal-setup` lagi3726* Untuk `isn't a readable list of keybindings`, perbaiki kesalahan sintaks, atau jadikan nilai tingkat atas file sebagai array, lalu jalankan `/terminal-setup` lagi

3706 3727 

3707Sebelum v2.1.247, `/terminal-setup` tidak dapat menguraikan keymap Zed yang menggunakan komentar `//` atau trailing comma, dan mengganti seluruh file dengan hanya keybinding-nya sendiri sambil melaporkan keybinding sebagai diinstal. Untuk mengembalikan keymap yang versi sebelumnya ganti, gunakan file backup `.bak` yang dijelaskan di bawah [Enter multiline prompts](/docs/id/terminal-config#enter-multiline-prompts).3728Sebelum v2.1.247, `/terminal-setup` tidak dapat mem-parse keymap Zed yang menggunakan komentar `//` atau koma di akhir, dan mengganti seluruh file hanya dengan pintasannya sendiri sambil melaporkan bahwa pintasan tersebut telah terpasang. Untuk memulihkan keymap yang telah diganti oleh versi sebelumnya, gunakan file cadangan `.bak` yang dijelaskan di [Memasukkan prompt multibaris](/docs/id/terminal-config#enter-multiline-prompts).

3708 3729 

3709<h3 id="skill-usage-reports-are-not-available-on-this-connection">3730<h3 id="skill-usage-reports-are-not-available-on-this-connection">

3710 Laporan penggunaan skill tidak tersedia di koneksi ini3731 Laporan penggunaan skill tidak tersedia pada koneksi ini

3711</h3>3732</h3>

3712 3733 

3713Anda menjalankan [`/skill-doctor`](/docs/id/skills#find-unused-skills) melalui [Remote Control](/docs/id/remote-control), dari ponsel atau browser Anda. Claude Code tidak mengirim laporan penggunaan skill melalui Remote Control dan menjawab dengan pesan ini sebagai gantinya:3734Anda menjalankan [`/skill-doctor`](/docs/id/skills#find-unused-skills) melalui [Remote Control](/docs/id/remote-control), dari ponsel atau browser Anda. Claude Code tidak mengirim laporan penggunaan skill melalui Remote Control dan membalas dengan pesan ini sebagai gantinya:

3714 3735 

3715```text theme={null}3736```text theme={null}

3716Skill usage reports are not available on this connection.3737Skill usage reports are not available on this connection.


3718 3739 

3719**Yang harus dilakukan:**3740**Yang harus dilakukan:**

3720 3741 

3721* Jalankan `/skill-doctor` di terminal di mesin tempat sesi berjalan, atau jalankan `claude -p "/skill-doctor"` di sana3742* Jalankan `/skill-doctor` di terminal pada mesin tempat sesi berjalan, atau jalankan `claude -p "/skill-doctor"` di sana

3722 3743 

3723<h3 id="custom-output-styles-cant-be-selected-over-remote-control">3744<h3 id="custom-output-styles-cant-be-selected-over-remote-control">

3724 Gaya output kustom tidak dapat dipilih melalui Remote Control3745 Gaya output kustom tidak dapat dipilih melalui Remote Control

3725</h3>3746</h3>

3726 3747 

3727Anda menjalankan [`/output-style`](/docs/id/output-styles#change-your-output-style) dari aplikasi mobile atau web melalui [Remote Control](/docs/id/remote-control), atau command tiba dalam pesan yang dialihkan ke sesi. Karena giliran seperti itu mungkin tidak berasal dari pemilik akun, Claude Code mencantumkan dan memilih hanya [gaya built-in](/docs/id/output-styles#built-in-output-styles) di atasnya, dan menambahkan pemberitahuan ini kapan pun command mencantumkan gaya atau tidak mengenali nama yang Anda berikan. Nama [gaya kustom](/docs/id/output-styles#create-a-custom-output-style) mendapat jawaban yang sama dengan nama yang tidak ada:3748Anda menjalankan [`/output-style`](/docs/id/output-styles#change-your-output-style) dari aplikasi seluler atau web melalui [Remote Control](/docs/id/remote-control), atau perintah tersebut datang dalam pesan yang diteruskan ke dalam sesi. Karena giliran seperti itu mungkin tidak berasal dari pemilik akun, Claude Code hanya menampilkan dan memilih [gaya bawaan](/docs/id/output-styles#built-in-output-styles) pada giliran tersebut, dan menambahkan pemberitahuan ini setiap kali perintah menampilkan daftar gaya atau tidak mengenali nama yang Anda berikan. Nama [gaya kustom](/docs/id/output-styles#create-a-custom-output-style) mendapatkan balasan yang sama seperti nama yang tidak ada:

3728 3749 

3729```text theme={null}3750```text theme={null}

3730Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.3751Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.


3732 3753 

3733**Yang harus dilakukan:**3754**Yang harus dilakukan:**

3734 3755 

3735* Pilih gaya built-in, misalnya `/output-style concise`3756* Pilih gaya bawaan, misalnya `/output-style concise`

3736* Untuk menggunakan gaya kustom, atur [`outputStyle`](/docs/id/settings-reference#outputstyle) di `.claude/settings.local.json` project, atau jalankan `/output-style <style>` di terminal sesi sendiri jika memilikinya3757* Untuk menggunakan gaya kustom, atur [`outputStyle`](/docs/id/settings-reference#outputstyle) di `.claude/settings.local.json` proyek, atau jalankan `/output-style <style>` di terminal sesi itu sendiri jika ada

3737 3758 

3738<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">3759<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">

3739 Gaya output disimpan ke pengaturan lokal yang sesi ini tidak muat3760 Gaya output disimpan ke pengaturan lokal yang tidak dimuat oleh sesi ini

3740</h3>3761</h3>

3741 3762 

3742Anda mencoba mengganti [gaya output](/docs/id/output-styles) dengan `/output-style <style>` atau `/config outputStyle=<style>` dalam sesi yang sumber pengaturannya mengecualikan `local`. Contohnya adalah sesi [Agent SDK](/docs/id/agent-sdk/typescript) yang [`settingSources`](/docs/id/agent-sdk/typescript#options)-nya meninggalkan `"local"` dan sesi CLI yang dimulai dengan nilai [`--setting-sources`](/docs/id/cli-reference#cli-flags) yang meninggalkan `local`. Kedua command menyimpan gaya ke `.claude/settings.local.json`, file yang sesi seperti itu tidak pernah membaca kembali, jadi Claude Code menolak alih-alih menulis pengaturan yang tidak akan berpengaruh:3763Anda mencoba beralih [gaya output](/docs/id/output-styles) dengan `/output-style <style>` atau `/config outputStyle=<style>` dalam sesi yang sumber pengaturannya tidak menyertakan `local`. Contohnya adalah sesi [Agent SDK](/docs/id/agent-sdk/typescript) yang [`settingSources`](/docs/id/agent-sdk/typescript#options)-nya tidak menyertakan `"local"` dan sesi CLI yang dimulai dengan nilai [`--setting-sources`](/docs/id/cli-reference#cli-flags) yang tidak menyertakan `local`. Kedua perintah menyimpan gaya ke `.claude/settings.local.json`, file yang tidak pernah dibaca kembali oleh sesi seperti itu, sehingga Claude Code menolak alih-alih menulis pengaturan yang tidak akan berpengaruh:

3743 3764 

3744```text theme={null}3765```text theme={null}

3745Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.3766Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.


3748**Yang harus dilakukan:**3769**Yang harus dilakukan:**

3749 3770 

3750* Tambahkan `local` ke sumber pengaturan sesi dan beralih lagi3771* Tambahkan `local` ke sumber pengaturan sesi dan beralih lagi

3751* Atur kunci [`outputStyle`](/docs/id/settings-reference#outputstyle) dalam file pengaturan yang sesi muat, seperti `.claude/settings.json` di project atau `~/.claude/settings.json`. Dalam SDK TypeScript, atur `outputStyle` di dalam objek `settings` inline sebagai gantinya; lihat [Activate an output style](/docs/id/agent-sdk/modifying-system-prompts#activate-an-output-style)3772* Atur kunci [`outputStyle`](/docs/id/settings-reference#outputstyle) di file pengaturan yang dimuat oleh sesi, seperti `.claude/settings.json` di proyek atau `~/.claude/settings.json`. Di TypeScript SDK, atur `outputStyle` di dalam objek `settings` inline sebagai gantinya; lihat [Mengaktifkan gaya output](/docs/id/agent-sdk/modifying-system-prompts#activate-an-output-style)

3752 3773 

3753<h2 id="plugin-errors">3774<h2 id="plugin-errors">

3754 Kesalahan plugin3775 Kesalahan plugin


4476 Kesalahan sesi latar belakang4497 Kesalahan sesi latar belakang

4477</h2>4498</h2>

4478 4499 

4479[Sesi latar belakang](/docs/id/agent-view) berjalan tanpa terminal interaktif mereka sendiri, jadi perintah yang membutuhkan satu berperilaku berbeda di sana. Pesan-pesan ini muncul dalam transkrip sesi latar belakang, di terminal yang terhubung ke satu, di sesi atau shell tempat Anda mengirim, atau, untuk [entri worktree-guard](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) di bawah, di sesi apa pun yang terisolasi dalam worktree atau menjalankan subagent yang terisolasi worktree; di mana pesan spesifik untuk satu permukaan, entrinya mengatakan demikian.4500[Sesi latar belakang](/docs/id/agent-view) berjalan tanpa terminal interaktif mereka sendiri, jadi perintah yang membutuhkan satu berperilaku berbeda di sana. Pesan-pesan ini muncul dalam transkrip sesi latar belakang, di terminal yang terhubung ke satu, di sesi atau shell tempat Anda mengirim, atau, untuk [entri worktree-guard](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) di bawah, di sesi apa pun yang terisolasi dalam worktree atau menjalankan subagent yang terisolasi worktree; di mana pesan spesifik untuk satu surface, entrinya mengatakan demikian.

4480 4501 

4481<h3 id="commands-refused-in-a-background-session">4502<h3 id="commands-refused-in-a-background-session">

4482 Perintah ditolak dalam sesi latar belakang4503 Perintah ditolak dalam sesi latar belakang

4483</h3>4504</h3>

4484 4505 

4485Perintah yang membuka dialog interaktif tidak dapat melakukannya saat tidak ada terminal yang terhubung ke sesi latar belakang. `/install-github-app`, daftar pengaturan `/mcp`, dan tindakan autentikasi dalam menu server MCP merespons dengan pesan. Untuk `/install-github-app` dan daftar pengaturan `/mcp`, sesi juga muncul di bawah **Needs input** dalam [tampilan agen](/docs/id/agent-view) sehingga Anda dapat menemukannya, melampirkan, dan menjalankan perintah lagi. Saat terminal terhubung, perintah-perintah ini berfungsi secara normal.4506Perintah yang membuka dialog interaktif tidak dapat melakukannya saat tidak ada terminal yang terhubung ke sesi latar belakang. `/install-github-app`, daftar pengaturan `/mcp`, dan tindakan autentikasi dalam menu server MCP merespons dengan pesan. Untuk `/install-github-app` dan daftar pengaturan `/mcp`, sesi juga muncul di bawah **Needs input** dalam [tampilan agent](/docs/id/agent-view) sehingga Anda dapat menemukannya, melampirkan, dan menjalankan perintah lagi. Saat terminal terhubung, perintah-perintah ini berfungsi secara normal.

4486 4507 

4487Sebelum v2.1.216, sesi tidak muncul di bawah **Needs input** setelah `/install-github-app` atau daftar pengaturan `/mcp` ditolak. Di v2.1.213 hingga v2.1.215, perintah masih berfungsi saat terminal terhubung, dan pesan penolakan memberi tahu Anda untuk melampirkan dan menjalankan perintah lagi. Dari v2.1.208 hingga v2.1.212, Claude Code menolaknya bahkan saat terminal terhubung, dengan pesan seperti `Can't open MCP settings in a background session`; pada versi tersebut, jalankan perintah dari sesi `claude` biasa sebagai gantinya, atau tingkatkan. Sebelum v2.1.208, mereka membuka dialog mereka di dalam sesi latar belakang. Di v2.1.208 saja, Claude Code juga menolak pemilih `/model` dalam sesi latar belakang, dan `/upgrade` mencetak URL upgrade alih-alih membuka browser.4508Sebelum v2.1.216, sesi tidak muncul di bawah **Needs input** setelah `/install-github-app` atau daftar pengaturan `/mcp` ditolak. Di v2.1.213 hingga v2.1.215, perintah masih berfungsi saat terminal terhubung, dan pesan penolakan memberi tahu Anda untuk melampirkan dan menjalankan perintah lagi. Dari v2.1.208 hingga v2.1.212, Claude Code menolaknya bahkan saat terminal terhubung, dengan pesan seperti `Can't open MCP settings in a background session`; pada versi tersebut, jalankan perintah dari sesi `claude` biasa sebagai gantinya, atau tingkatkan. Sebelum v2.1.208, mereka membuka dialog mereka di dalam sesi latar belakang. Di v2.1.208 saja, Claude Code juga menolak pemilih `/model` dalam sesi latar belakang, dan `/upgrade` mencetak URL upgrade alih-alih membuka browser.

4488 4509 


4494 4515 

4495**Yang harus dilakukan:**4516**Yang harus dilakukan:**

4496 4517 

4497* Lampirkan ke sesi dari tampilan agen dan jalankan perintah lagi4518* Lampirkan ke sesi dari tampilan agent dan jalankan perintah lagi

4498* Atau gunakan formulir yang dinamai pesan, seperti `/mcp reconnect <server>`, `/mcp enable`, atau `/mcp disable`, yang berfungsi tanpa melampirkan4519* Atau gunakan formulir yang dinamai pesan, seperti `/mcp reconnect <server>`, `/mcp enable`, atau `/mcp disable`, yang berfungsi tanpa melampirkan

4499 4520 

4500<h3 id="write-or-command-blocked-because-the-path-cannot-be-safely-resolved">4521<h3 id="write-or-command-blocked-because-the-path-cannot-be-safely-resolved">


4511 4532 

4512**Yang harus dilakukan:**4533**Yang harus dilakukan:**

4513 4534 

4514* Biasanya tidak ada: pesan lengkap masuk ke Claude sebagai kesalahan alat, dan Claude mencoba lagi dengan jalur langsung yang dinamainya. Untuk pengeditan file yang diblokir, tampilan percakapan menampilkan hanya baris `Error editing file` pendek; pesan lengkap muncul dalam tampilan transkrip, yang Anda buka dengan `Ctrl+O`. Perintah yang diblokir mencetaknya dalam output perintahnya.4535* Biasanya tidak ada: pesan lengkap masuk ke Claude sebagai kesalahan tool, dan Claude mencoba lagi dengan jalur langsung yang dinamainya. Untuk pengeditan file yang diblokir, tampilan percakapan menampilkan hanya baris `Error editing file` pendek; pesan lengkap muncul dalam tampilan transkrip, yang Anda buka dengan `Ctrl+O`. Perintah yang diblokir mencetaknya dalam output perintahnya.

4515* Jika blokir berulang pada file yang sama, jalur kemungkinan besar berjalan melalui symlink yang berkomitmen yang targetnya berisi `..`, seperti `docs/current -> ../README.md`; minta Claude untuk mengedit file target dengan jalur sebenarnya alih-alih melalui tautan4536* Jika blokir berulang pada file yang sama, jalur kemungkinan besar berjalan melalui symlink yang di-commit yang targetnya berisi `..`, seperti `docs/current -> ../README.md`; minta Claude untuk mengedit file target dengan jalur sebenarnya alih-alih melalui tautan

4516 4537 

4517<h3 id="write-or-command-blocked-because-the-path-names-a-network-location">4538<h3 id="write-or-command-blocked-because-the-path-names-a-network-location">

4518 Penulisan atau perintah diblokir karena jalur menamai lokasi jaringan4539 Penulisan atau perintah diblokir karena jalur menamai lokasi jaringan


4561This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.4582This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.

4562```4583```

4563 4584 

4564Membuka baris sesi yang sama dalam [tampilan agen](/docs/id/agent-view) menampilkan `Press enter again to restart this session fresh` di bawah daftar sebagai gantinya, dan `Enter` kedua pada baris memulai ulang sesi dengan percakapan kosong. Sebelum v2.1.212, membuka baris yang dihentikan menampilkan pesan penolakan tanpa cara untuk memulai ulang dari tampilan agen. Sebelum v2.1.211, membuka sesi yang dihentikan secara diam-diam memulai percakapan kosong itu dan dapat menjalankan kembali prompt asli sesi.4585Membuka baris sesi yang sama dalam [tampilan agent](/docs/id/agent-view) menampilkan `Press enter again to restart this session fresh` di bawah daftar sebagai gantinya, dan `Enter` kedua pada baris memulai ulang sesi dengan percakapan kosong. Sebelum v2.1.212, membuka baris yang dihentikan menampilkan pesan penolakan tanpa cara untuk memulai ulang dari tampilan agent. Sebelum v2.1.211, membuka sesi yang dihentikan secara diam-diam memulai percakapan kosong itu dan dapat menjalankan kembali prompt asli sesi.

4565 4586 

4566**Yang harus dilakukan:**4587**Yang harus dilakukan:**

4567 4588 

4568* Percakapan yang Anda latarbelakangkan masih utuh: lanjutkan dengan [`claude --resume`](/docs/id/sessions) atau terus bekerja di dalamnya4589* Percakapan yang Anda latarbelakangkan masih utuh: lanjutkan dengan [`claude --resume`](/docs/id/sessions) atau terus bekerja di dalamnya

4569* Untuk memulai sesi yang dihentikan segar bagaimanapun, jalankan `claude respawn <id>` dengan ID dari pesan, atau tekan `Enter` dua kali pada barisnya dalam tampilan agen4590* Untuk memulai sesi yang dihentikan segar bagaimanapun, jalankan `claude respawn <id>` dengan ID dari pesan, atau tekan `Enter` dua kali pada barisnya dalam tampilan agent

4570* Jika sesi memang menyelesaikan respons dan Anda masih melihat penolakan ini pada versi sebelum v2.1.214, folder yang tidak dapat dibaca di `~/.claude/projects` dapat membuat pemindaian transkrip melewatkan percakapan yang disimpan; perbarui ke v2.1.214 atau lebih baru, yang mentoleransi folder yang tidak dapat dibaca selama pemindaian4591* Jika sesi memang menyelesaikan respons dan Anda masih melihat penolakan ini pada versi sebelum v2.1.214, folder yang tidak dapat dibaca di `~/.claude/projects` dapat membuat pemindaian transkrip melewatkan percakapan yang disimpan; perbarui ke v2.1.214 atau lebih baru, yang mentoleransi folder yang tidak dapat dibaca selama pemindaian

4571 4592 

4572<h3 id="this-session-is-running-in-another-terminal">4593<h3 id="this-session-is-running-in-another-terminal">

4573 Sesi ini berjalan di terminal lain4594 Sesi ini berjalan di terminal lain

4574</h3>4595</h3>

4575 4596 

4576Anda membuka baris sesi yang dihentikan dalam [tampilan agen](/docs/id/agent-view), dan percakapan yang disimpannya sudah terbuka dalam proses Claude Code langsung lain di mesin ini, jadi Claude Code menolak untuk memulai proses kedua yang akan menulis ke transkrip yang sama. Pesan mana yang Anda lihat tergantung pada [apa yang memegang percakapan](/docs/id/agent-view#opening-a-session-says-the-conversation-is-already-open):4597Anda membuka baris sesi yang dihentikan dalam [tampilan agent](/docs/id/agent-view), dan percakapan yang disimpannya sudah terbuka dalam proses Claude Code langsung lain di mesin ini, jadi Claude Code menolak untuk memulai proses kedua yang akan menulis ke transkrip yang sama. Pesan mana yang Anda lihat tergantung pada [apa yang memegang percakapan](/docs/id/agent-view#opening-a-session-says-the-conversation-is-already-open):

4577 4598 

4578```text theme={null}4599```text theme={null}

4579Can't open — this session is running in another terminal4600Can't open — this session is running in another terminal


4601This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.4622This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.

4602```4623```

4603 4624 

4604`claude attach <id>` mencetak teks ini. Dalam tampilan agen, footer lebih pendek dan berakhir dengan `ctrl+x deletes the row`.4625`claude attach <id>` mencetak teks ini. Dalam tampilan agent, footer lebih pendek dan berakhir dengan `ctrl+x deletes the row`.

4605 4626 

4606**Yang harus dilakukan:**4627**Yang harus dilakukan:**

4607 4628 


4611Sebelum v2.1.248, membuka baris seperti itu menjalankan kembali prompt asli sesi alih-alih menolak, menarik tugas yang berusia berminggu-minggu kembali ke latar depan.4632Sebelum v2.1.248, membuka baris seperti itu menjalankan kembali prompt asli sesi alih-alih menolak, menarik tugas yang berusia berminggu-minggu kembali ke latar depan.

4612 4633 

4613<h3 id="worktree-has-commits-that-are-not-pushed-anywhere">4634<h3 id="worktree-has-commits-that-are-not-pushed-anywhere">

4614 Worktree memiliki komitmen yang tidak didorong ke mana pun4635 Worktree memiliki commit yang tidak didorong ke mana pun

4615</h3>4636</h3>

4616 4637 

4617Anda mencoba menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang worktree-nya menyimpan komitmen yang Claude Code tidak dapat memastikan disimpan di tempat lain. Claude Code menyimpan worktree dan baris sesi daripada menghancurkan komitmen yang tidak terlihat. `claude rm` menamai cabang dan komitmen yang tidak didorong, dan mengatakan cara melanjutkan:4638Anda mencoba menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang worktree-nya menyimpan commit yang Claude Code tidak dapat memastikan disimpan di tempat lain. Claude Code menyimpan worktree dan baris sesi daripada menghancurkan commit yang tidak terlihat. `claude rm` menamai branch dan commit yang tidak didorong, dan mengatakan cara melanjutkan:

4618 4639 

4619```text theme={null}4640```text theme={null}

4620kept 7c5dcf5d — its worktree is still at "/home/you/project/.claude/worktrees/fix-login"4641kept 7c5dcf5d — its worktree is still at “/home/you/project/.claude/worktrees/fix-login”

4621 2 unpushed commits on "claude/fix-login": a1b2c3d "Fix login flow" and 1 more. They exist on no remote, so deleting the worktree would lose them.4642 2 unpushed commits on “claude/fix-login”: a1b2c3d “Fix login flow” and 1 more. They exist on no remote, so deleting the worktree would lose them.

4622 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef4643 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef

4623```4644```

4624 4645 

4625Ketika Claude Code tidak dapat merangkum komitmen, baris detail berbunyi `The worktree has unpushed commits` sebagai gantinya. Dalam [tampilan agen](/docs/id/agent-view), baris sesi menampilkan `not deleted` dengan alasan yang sama.4646Ketika Claude Code tidak dapat merangkum commit, baris detail berbunyi `The worktree has unpushed commits` sebagai gantinya. Dalam [tampilan agent](/docs/id/agent-view), baris sesi menampilkan `not deleted` dengan alasan yang sama.

4626 4647 

4627Komitmen pada remote tidak memblokir penghapusan. Begitu juga komitmen pada salinan lokal cabang default remote `origin` Anda, selama cabang itu diperiksa dalam checkout utama Anda, direktori repositori itu sendiri daripada worktree.4648Commit pada remote tidak memblokir penghapusan. Begitu juga commit pada salinan lokal branch default remote `origin` Anda, selama branch itu diperiksa dalam checkout utama Anda, direktori repositori itu sendiri daripada worktree.

4628 4649 

4629**Yang harus dilakukan:**4650**Yang harus dilakukan:**

4630 4651 

4631* Untuk menyimpan komitmen, dorong cabang worktree, atau gabungkan ke dalam cabang default yang diperiksa dalam checkout utama Anda, kemudian hapus sesi lagi4652* Untuk menyimpan commit, dorong branch worktree, atau gabungkan ke dalam branch default yang diperiksa dalam checkout utama Anda, kemudian hapus sesi lagi

4632* Untuk membuang komitmen, jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak pesan, atau tekan `Ctrl+X` dua kali pada baris sesi dalam tampilan agen lagi. Ini menghapus sesi dan worktree bersama dengan cabangnya, komitmen yang tidak didorong, dan perubahan yang tidak berkomitmen. Jika worktree telah mendapatkan komitmen sejak penolakan, Claude Code menyimpannya lagi dan menampilkan status yang diperbarui4653* Untuk membuang commit, jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak pesan, atau tekan `Ctrl+X` dua kali pada baris sesi dalam tampilan agent lagi. Ini menghapus sesi dan worktree bersama dengan branch-nya, commit yang tidak didorong, dan perubahan yang belum di-commit. Jika worktree telah mendapatkan commit sejak penolakan, Claude Code menyimpannya lagi dan menampilkan status yang diperbarui

4633* Ketika pesan mengatakan worktree juga dicatat oleh sesi selesai lain, menghapus lagi tidak membuangnya: dorong komitmen, kemudian hapus sesi lagi4654* Ketika pesan mengatakan worktree juga dicatat oleh sesi selesai lain, menghapus lagi tidak membuangnya: dorong commit, kemudian hapus sesi lagi

4634 4655 

4635Sebelum v2.1.268, `claude rm` menempatkan ringkasan komitmen pada baris `kept` itu sendiri. Ketika `claude rm` tidak dapat merangkum komitmen, baris `kept` berbunyi `worktree has commits that are not pushed anywhere` sebagai pengganti ringkasan.4656Sebelum v2.1.268, `claude rm` menempatkan ringkasan commit pada baris `kept` itu sendiri. Ketika `claude rm` tidak dapat merangkum commit, baris `kept` berbunyi `worktree has commits that are not pushed anywhere` sebagai pengganti ringkasan.

4636 4657 

4637Sebelum v2.1.260, pesan tidak menamai cabang atau komitmen, dan menghapus lagi ditolak dengan cara yang sama: menghapus sesi tanpa mendorong berarti menghapus worktree sendiri dengan `git worktree remove --force <path>`, kemudian menjalankan `claude rm <id>` lagi.4658Sebelum v2.1.260, pesan tidak menamai branch atau commit, dan menghapus lagi ditolak dengan cara yang sama: menghapus sesi tanpa mendorong berarti menghapus worktree sendiri dengan `git worktree remove --force <path>`, kemudian menjalankan `claude rm <id>` lagi.

4638 4659 

4639Sebelum v2.1.248, cabang default yang diperiksa dalam checkout utama Anda tidak dihitung: cabang yang sudah Anda gabungkan di sana masih memicu penolakan ini sampai komitmennya mencapai remote.4660Sebelum v2.1.248, branch default yang diperiksa dalam checkout utama Anda tidak dihitung: branch yang sudah Anda gabungkan di sana masih memicu penolakan ini sampai commit-nya mencapai remote.

4640 4661 

4641<h3 id="terminal-host-process-died">4662<h3 id="terminal-host-process-died">

4642 Proses host terminal mati4663 Proses host terminal mati


4644 4665 

4645Setiap terminal [sesi latar belakang](/docs/id/agent-view) berjalan dalam proses host di bawah layanan latar belakang, dan proses itu mati saat layanan masih menyimpan koneksinya, jadi sesi tidak dapat dijangkau.4666Setiap terminal [sesi latar belakang](/docs/id/agent-view) berjalan dalam proses host di bawah layanan latar belakang, dan proses itu mati saat layanan masih menyimpan koneksinya, jadi sesi tidak dapat dijangkau.

4646 4667 

4647Di Linux dan WSL, layanan latar belakang memeriksa setiap proses host setiap beberapa detik, menandai sesi gagal ketika proses telah keluar tetapi koneksinya ke layanan tidak pernah ditutup, dan menampilkan alasannya pada barisnya dalam [tampilan agen](/docs/id/agent-view#read-session-state):4668Di Linux dan WSL, layanan latar belakang memeriksa setiap proses host setiap beberapa detik, menandai sesi gagal ketika proses telah keluar tetapi koneksinya ke layanan tidak pernah ditutup, dan menampilkan alasannya pada barisnya dalam [tampilan agent](/docs/id/agent-view#read-session-state):

4648 4669 

4649```text theme={null}4670```text theme={null}

4650terminal host process died — press Enter to restart4671terminal host process died — press Enter to restart


4662 4683 

4663**Yang harus dilakukan:**4684**Yang harus dilakukan:**

4664 4685 

4665* Dalam tampilan agen, tekan `Enter` pada baris yang gagal; sesi dimulai ulang pada proses host segar dan percakapan dilanjutkan4686* Dalam tampilan agent, tekan `Enter` pada baris yang gagal; sesi dimulai ulang pada proses host segar dan percakapan dilanjutkan

4666* Dari shell, jalankan `claude attach <id>` lagi. Claude Code mencetak `Session <id>'s terminal host died — restarting it on a fresh one…` dan membuka kembali sesi4687* Dari shell, jalankan `claude attach <id>` lagi. Claude Code mencetak `Session <id>'s terminal host died — restarting it on a fresh one…` dan membuka kembali sesi

4667* Anda tidak dapat memulai ulang baris perintah shell dengan cara ini; kirim perintah lagi untuk menjalankannya kembali4688* Anda tidak dapat memulai ulang baris perintah shell dengan cara ini; kirim perintah lagi untuk menjalankannya kembali

4668 4689 


4674 4695 

4675Anda membuka [sesi latar belakang](/docs/id/agent-view) dan layanan latar belakang menerima pembukaan, tetapi tidak ada output yang tiba selama sekitar sepuluh detik, jadi Claude Code menyimpulkan bahwa proses yang menyampaikan terminal sesi tidak dapat memberikan output, dan mengakhiri upaya alih-alih menunggu.4696Anda membuka [sesi latar belakang](/docs/id/agent-view) dan layanan latar belakang menerima pembukaan, tetapi tidak ada output yang tiba selama sekitar sepuluh detik, jadi Claude Code menyimpulkan bahwa proses yang menyampaikan terminal sesi tidak dapat memberikan output, dan mengakhiri upaya alih-alih menunggu.

4676 4697 

4677Dalam tampilan agen, Claude Code menawarkan restart dalam footer:4698Dalam tampilan agent, Claude Code menawarkan restart dalam footer:

4678 4699 

4679```text theme={null}4700```text theme={null}

4680Press enter again to restart this session — it isn't responding (its conversation is saved and resumes).4701Press enter again to restart this session — it isn't responding (its conversation is saved and resumes).


4690 4711 

4691**Yang harus dilakukan:**4712**Yang harus dilakukan:**

4692 4713 

4693* Dalam tampilan agen, tekan `Enter` pada baris yang sama lagi. Claude Code menghentikan proses yang tidak responsif dan memulai ulang sesi, dan percakapan dilanjutkan. Tidak ada yang dihentikan tanpa tekan kedua itu4714* Dalam tampilan agent, tekan `Enter` pada baris yang sama lagi. Claude Code menghentikan proses yang tidak responsif dan memulai ulang sesi, dan percakapan dilanjutkan. Tidak ada yang dihentikan tanpa tekan kedua itu

4694* Dari shell, jalankan `claude stop <id>`, kemudian `claude attach <id>`4715* Dari shell, jalankan `claude stop <id>`, kemudian `claude attach <id>`

4695* Untuk baris perintah shell, tekan `Ctrl+X` dalam tampilan agen atau jalankan `claude stop <id>` untuk menghentikannya; kirim perintah lagi untuk menjalankannya kembali4716* Untuk baris perintah shell, tekan `Ctrl+X` dalam tampilan agent atau jalankan `claude stop <id>` untuk menghentikannya; kirim perintah lagi untuk menjalankannya kembali

4696 4717 

4697<h3 id="session-was-stopped-while-the-respawn-was-in-flight">4718<h3 id="session-was-stopped-while-the-respawn-was-in-flight">

4698 Sesi dihentikan saat respawn sedang dalam perjalanan4719 Sesi dihentikan saat respawn sedang dalam perjalanan


4708 4729 

4709**Yang harus dilakukan:**4730**Yang harus dilakukan:**

4710 4731 

4711* Jika Anda tidak menghentikan sesi, buka barisnya lagi dalam tampilan agen atau jalankan `claude respawn <id>` untuk memulainya kembali4732* Jika Anda tidak menghentikan sesi, buka barisnya lagi dalam tampilan agent atau jalankan `claude respawn <id>` untuk memulainya kembali

4712* Jika Anda menghentikannya sendiri, tidak ada yang tersisa untuk dilakukan: sesi tetap dihentikan4733* Jika Anda menghentikannya sendiri, tidak ada yang tersisa untuk dilakukan: sesi tetap dihentikan

4713 4734 

4714<h3 id="session-agent-no-longer-available">4735<h3 id="session-agent-no-longer-available">

4715 Agen sesi tidak lagi tersedia4736 Agent sesi tidak lagi tersedia

4716</h3>4737</h3>

4717 4738 

4718Anda melanjutkan sesi yang menjalankan [agen khusus](/docs/id/sub-agents#invoke-subagents-explicitly), dimulai dengan `--agent` atau pengaturan `agent`, dan Claude Code tidak menemukan agen dengan nama itu. Ini mencari direktori asli sesi terlebih dahulu, ketika Anda telah [mempercayai ruang kerja itu](/docs/id/permissions#project-allow-rules-and-workspace-trust), kemudian direktori tempat Anda melanjutkan. Sesi masih dilanjutkan, tetapi dengan alat default, jadi pembatasan alat agen tidak lagi berlaku:4739Anda melanjutkan sesi yang menjalankan [agent khusus](/docs/id/sub-agents#invoke-subagents-explicitly), dimulai dengan `--agent` atau pengaturan `agent`, dan Claude Code tidak menemukan agent dengan nama itu. Ini mencari direktori asli sesi terlebih dahulu, ketika Anda telah [mempercayai workspace itu](/docs/id/permissions#project-allow-rules-and-workspace-trust), kemudian direktori tempat Anda melanjutkan. Sesi masih dilanjutkan, tetapi dengan tool default, jadi pembatasan tool agent tidak lagi berlaku:

4719 4740 

4720```text theme={null}4741```text theme={null}

4721This session was running agent 'code-reviewer', which is no longer available (no agent by that name in /home/you/project). Continuing with the default tools and system prompt — the agent's tool restrictions no longer apply. To restore it, re-create the agent, or resume with an explicit --agent <name>.4742This session was running agent 'code-reviewer', which is no longer available (no agent by that name in /home/you/project). Continuing with the default tools and system prompt — the agent's tool restrictions no longer apply. To restore it, re-create the agent, or resume with an explicit --agent <name>.

4722```4743```

4723 4744 

4724Peringatan hanya menamai direktori yang Claude Code cari, dan muncul dalam percakapan yang dilanjutkan apakah Anda membangunkan [sesi latar belakang](/docs/id/agent-view), menjalankan `/resume` atau `claude --resume`, atau melanjutkan dalam [mode non-interaktif](/docs/id/headless), di mana ia juga masuk ke stderr. Sesi menggunakan `--input-format stream-json` tidak menampilkannya, karena Agent SDK menyediakan agen setelah startup.4745Peringatan hanya menamai direktori yang Claude Code cari, dan muncul dalam percakapan yang dilanjutkan apakah Anda membangunkan [sesi latar belakang](/docs/id/agent-view), menjalankan `/resume` atau `claude --resume`, atau melanjutkan dalam [mode non-interaktif](/docs/id/headless), di mana ia juga masuk ke stderr. Sesi menggunakan `--input-format stream-json` tidak menampilkannya, karena Agent SDK menyediakan agent setelah startup.

4725 4746 

4726Claude Code tidak menyimpan fallback ke sesi, jadi peringatan berulang pada setiap resume sampai Anda bertindak. Agen `claude` bawaan tidak memicu peringatan, karena jatuh kembali ke set alat default tidak mengubah apa pun untuk itu. Sebelum v2.1.216, Claude Code secara diam-diam melanjutkan sebagai agen default, dan pencarian mencakup hanya direktori tempat Anda melanjutkan, jadi agen yang bersifat proyek hilang pada resume apa pun dari direktori lain.4747Claude Code tidak menyimpan fallback ke sesi, jadi peringatan berulang pada setiap resume sampai Anda bertindak. Agent `claude` bawaan tidak memicu peringatan, karena jatuh kembali ke set tool default tidak mengubah apa pun untuk itu. Sebelum v2.1.216, Claude Code secara diam-diam melanjutkan sebagai agent default, dan pencarian mencakup hanya direktori tempat Anda melanjutkan, jadi agent yang bersifat proyek hilang pada resume apa pun dari direktori lain.

4727 4748 

4728**Yang harus dilakukan:**4749**Yang harus dilakukan:**

4729 4750 

4730* Buat ulang file agen di `.claude/agents/<name>.md` dalam proyek sesi, atau di `~/.claude/agents/<name>.md` untuk agen pribadi, kemudian lanjutkan lagi4751* Buat ulang file agent di `.claude/agents/<name>.md` dalam proyek sesi, atau di `~/.claude/agents/<name>.md` untuk agent pribadi, kemudian lanjutkan lagi

4731* Atau lanjutkan dengan `--agent <name>` yang menamai agen yang memang ada, untuk menjalankan sesi sebagai agen itu sebagai gantinya4752* Atau lanjutkan dengan `--agent <name>` yang menamai agent yang memang ada, untuk menjalankan sesi sebagai agent itu sebagai gantinya

4732* Jika agen bersifat proyek dan Anda belum mempercayai direktori asli sesi, jalankan Claude Code di sana sekali, terima dialog kepercayaan, kemudian lanjutkan lagi4753* Jika agent bersifat proyek dan Anda belum mempercayai direktori asli sesi, jalankan Claude Code di sana sekali, terima dialog kepercayaan, kemudian lanjutkan lagi

4733 4754 

4734<h3 id="claude_code_process_wrapper-launcher-errors">4755<h3 id="claude_code_process_wrapper-launcher-errors">

4735 Kesalahan peluncur CLAUDE\_CODE\_PROCESS\_WRAPPER4756 Kesalahan peluncur CLAUDE\_CODE\_PROCESS\_WRAPPER


4741CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file4762CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file

4742```4763```

4743 4764 

4744Peluncur yang dimulai tetapi keluar tanpa mengganti dirinya dengan Claude Code gagal sesi yang dimulainya, dan baris sesi dalam tampilan agen melaporkan bahwa peluncur `must exec, not daemonize`, diikuti oleh apa pun yang dicetak peluncur. Sesi yang tidak dapat dimulai atau menjangkau layanan latar belakang karena peluncur melaporkan masalah peluncur sebagai alasan di dalam `Couldn't reach the background service (...)`.4765Peluncur yang dimulai tetapi keluar tanpa mengganti dirinya dengan Claude Code gagal sesi yang dimulainya, dan baris sesi dalam tampilan agent melaporkan bahwa peluncur `must exec, not daemonize`, diikuti oleh apa pun yang dicetak peluncur. Sesi yang tidak dapat dimulai atau menjangkau layanan latar belakang karena peluncur melaporkan masalah peluncur sebagai alasan di dalam `Couldn't reach the background service (...)`.

4745 4766 

4746**Yang harus dilakukan:**4767**Yang harus dilakukan:**

4747 4768 


4778 EACCES saat memulai sesi latar belakang4799 EACCES saat memulai sesi latar belakang

4779</h3>4800</h3>

4780 4801 

4781Claude Code tidak dapat menjalankan binernya sendiri untuk memulai [layanan latar belakang](/docs/id/agent-view#the-supervisor-process) yang menyelenggarakan sesi latar belakang. Pada instalasi npm, ini biasanya berarti `npm install -g @anthropic-ai/claude-code` mengganti biner pada saat itu, apakah Anda menjalankannya atau [auto-updater](/docs/id/setup#auto-updates) melakukannya. Kesalahan muncul ketika Anda membuka sesi dari [tampilan agen](/docs/id/agent-view):4802Claude Code tidak dapat menjalankan binernya sendiri untuk memulai [layanan latar belakang](/docs/id/agent-view#the-supervisor-process) yang menyelenggarakan sesi latar belakang. Pada instalasi npm, ini biasanya berarti `npm install -g @anthropic-ai/claude-code` mengganti biner pada saat itu, apakah Anda menjalankannya atau [auto-updater](/docs/id/setup#auto-updates) melakukannya. Kesalahan muncul ketika Anda membuka sesi dari [tampilan agent](/docs/id/agent-view):

4782 4803 

4783```text theme={null}4804```text theme={null}

4784Couldn't start the background service — spawn background service: EACCES: permission denied, posix_spawn '/usr/local/lib/node_modules/@anthropic-ai/claude-code/bin/claude'4805Couldn't start the background service — spawn background service: EACCES: permission denied, posix_spawn '/usr/local/lib/node_modules/@anthropic-ai/claude-code/bin/claude'


4797**Yang harus dilakukan:**4818**Yang harus dilakukan:**

4798 4819 

4799* Tunggu beberapa detik, kemudian buka sesi atau kirim lagi. Ketika pesan mengatakan Claude Code sedang diperbarui, coba lagi setelah pembaruan selesai.4820* Tunggu beberapa detik, kemudian buka sesi atau kirim lagi. Ketika pesan mengatakan Claude Code sedang diperbarui, coba lagi setelah pembaruan selesai.

4800* Jika kesalahan bertahan saat tidak ada instalasi npm yang berjalan, pengguna Anda tidak dapat menjalankan biner yang diinstal. Periksa izinnya dan direktorinya, atau instal ulang Claude Code.4821* Jika kesalahan bertahan saat tidak ada instalasi npm yang berjalan, pengguna Anda tidak dapat menjalankan biner yang diinstal. Periksa hak aksesnya dan direktorinya, atau instal ulang Claude Code.

4801 4822 

4802<h3 id="background-service-exited-before-it-became-reachable">4823<h3 id="background-service-exited-before-it-became-reachable">

4803 Layanan latar belakang keluar sebelum dapat dijangkau4824 Layanan latar belakang keluar sebelum dapat dijangkau

4804</h3>4825</h3>

4805 4826 

4806Proses yang Claude Code mulai sebagai [layanan latar belakang](/docs/id/agent-view#the-supervisor-process) keluar sebelum menerima koneksi, jadi Claude Code tidak dapat membuka sesi Anda. Ketika layanan mencetak kesalahan sebelum keluar, alasan dalam tanda kurung memberikan kode keluar atau sinyal dan baris pertama yang dicetak layanan, yang menamai apa yang menghentikannya:4827Proses yang Claude Code mulai sebagai [layanan latar belakang](/docs/id/agent-view#the-supervisor-process) keluar sebelum menerima koneksi, jadi Claude Code tidak dapat membuka sesi Anda. Ketika layanan mencetak kesalahan sebelum keluar, alasan dalam tanda kurung memberikan exit code atau sinyal dan baris pertama yang dicetak layanan, yang menamai apa yang menghentikannya:

4807 4828 

4808```text theme={null}4829```text theme={null}

4809Couldn't reach the background service (background service exited before it became reachable (exit code N): <the service's first error line>) — run 'claude daemon status'4830Couldn't reach the background service (background service exited before it became reachable (exit code N): <the service's first error line>) — run 'claude daemon status'

4810```4831```

4811 4832 

4812Ketika Anda membuka sesi dari [tampilan agen](/docs/id/agent-view), alasan yang sama mengikuti `Couldn't start the background service —`. Ketika layanan tidak mencetak apa pun sebelum keluar, pesan mengatakan `nothing on stderr` sebagai gantinya.4833Ketika Anda membuka sesi dari [tampilan agent](/docs/id/agent-view), alasan yang sama mengikuti `Couldn't start the background service —`. Ketika layanan tidak mencetak apa pun sebelum keluar, pesan mengatakan `nothing on stderr` sebagai gantinya.

4813 4834 

4814Claude Code melaporkan kegagalan dengan baris kesalahan layanan. Sebelum v2.1.246, kegagalan muncul hanya setelah menunggu 45 detik, sebagai `background service did not become reachable within 45s`, tanpa baris kesalahan layanan.4835Claude Code melaporkan kegagalan dengan baris kesalahan layanan. Sebelum v2.1.246, kegagalan muncul hanya setelah menunggu 45 detik, sebagai `background service did not become reachable within 45s`, tanpa baris kesalahan layanan.

4815 4836 

4816Dua alasan yang dikutip memiliki penyebab yang diketahui:4837Dua alasan yang dikutip memiliki penyebab yang diketahui:

4817 4838 

4818* `Error: claude native binary not installed.`: instalasi npm mengganti biner Claude Code pada saat itu, jadi layanan menjalankan placeholder npm sebagai gantinya. Coba lagi setelah instalasi selesai; jika baris bertahan tanpa instalasi yang berjalan, [selesaikan instalasi npm](/docs/id/troubleshoot-install#native-binary-not-found-after-npm-install). Sebelum v2.1.257, pembaruan diri npm macOS menghasilkan kegagalan ini pada setiap awal selama jendela instalasi.4839* `Error: claude native binary not installed.`: instalasi npm mengganti biner Claude Code pada saat itu, jadi layanan menjalankan placeholder npm sebagai gantinya. Coba lagi setelah instalasi selesai; jika baris bertahan tanpa instalasi yang berjalan, [selesaikan instalasi npm](/docs/id/troubleshoot-install#native-binary-not-found-after-npm-install). Sebelum v2.1.257, pembaruan diri npm macOS menghasilkan kegagalan ini pada setiap awal selama jendela instalasi.

4819* `nothing on stderr` dengan kode keluar 1, pada setiap awal, di Windows: `daemon.lock` menamai proses yang Claude Code tidak dapat menandai atau membuktikan hilang, jadi setiap layanan baru menyimpulkan yang lain menyimpan kunci dan keluar. Kunci yang penulis Claude Code dapat membuktikan hilang diganti sendiri dan tidak menghasilkan kegagalan ini. Ketika kegagalan berulang pada setiap awal, hapus `~/.claude/daemon.lock`, kemudian buka sesi atau kirim lagi. Sebelum v2.1.257, kunci seperti itu memblokir setiap awal sampai Anda menghapus file.4840* `nothing on stderr` dengan exit code 1, pada setiap awal, di Windows: `daemon.lock` menamai proses yang Claude Code tidak dapat menandai atau membuktikan hilang, jadi setiap layanan baru menyimpulkan yang lain menyimpan kunci dan keluar. Kunci yang penulis Claude Code dapat membuktikan hilang diganti sendiri dan tidak menghasilkan kegagalan ini. Ketika kegagalan berulang pada setiap awal, hapus `~/.claude/daemon.lock`, kemudian buka sesi atau kirim lagi. Sebelum v2.1.257, kunci seperti itu memblokir setiap awal sampai Anda menghapus file.

4820 4841 

4821**Yang harus dilakukan:**4842**Yang harus dilakukan:**

4822 4843 


4833Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)4854Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)

4834```4855```

4835 4856 

4836Sebelum v2.1.257, sesi tampak dimulai dan kemudian ditampilkan dalam tampilan agen sebagai baris yang gagal dengan alasan yang sama.4857Sebelum v2.1.257, sesi tampak dimulai dan kemudian ditampilkan dalam tampilan agent sebagai baris yang gagal dengan alasan yang sama.

4837 4858 

4838Sebelum v2.1.281, pesan ini juga muncul ketika direktori sudah hilang sebelum Anda memulai sesi. Kasus itu melaporkan [`could not be resolved on disk`](#workspace-not-trusted-when-dispatching-a-background-session).4859Sebelum v2.1.281, pesan ini juga muncul ketika direktori sudah hilang sebelum Anda memulai sesi. Kasus itu melaporkan [`could not be resolved on disk`](#workspace-not-trusted-when-dispatching-a-background-session).

4839 4860 


4842* Buat ulang direktori yang dinamai pesan, atau kirim dari direktori yang ada, kemudian coba lagi4863* Buat ulang direktori yang dinamai pesan, atau kirim dari direktori yang ada, kemudian coba lagi

4843 4864 

4844<h3 id="workspace-not-trusted-when-dispatching-a-background-session">4865<h3 id="workspace-not-trusted-when-dispatching-a-background-session">

4845 Ruang kerja tidak dipercaya saat mengirim sesi latar belakang4866 Workspace tidak dipercaya saat mengirim sesi latar belakang

4846</h3>4867</h3>

4847 4868 

4848Anda memulai atau memulai ulang [sesi latar belakang](/docs/id/agent-view) dalam direktori yang belum Anda [percayai](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan dialog kepercayaan ruang kerja tidak dapat muncul untuk bertanya. Claude Code tidak memulai sesi:4869Anda memulai atau memulai ulang [sesi latar belakang](/docs/id/agent-view) dalam direktori yang belum Anda [percayai](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan dialog kepercayaan workspace tidak dapat muncul untuk bertanya. Claude Code tidak memulai sesi:

4849 4870 

4850```text theme={null}4871```text theme={null}

4851Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.4872Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.


4858* **`The home directory is trusted one session at a time`**: direktori sesi adalah direktori home Anda. Claude Code tidak pernah menyimpan kepercayaan untuk direktori home, jadi menerima dialog di sana dalam sesi sebelumnya tidak dihitung.4879* **`The home directory is trusted one session at a time`**: direktori sesi adalah direktori home Anda. Claude Code tidak pernah menyimpan kepercayaan untuk direktori home, jadi menerima dialog di sana dalam sesi sebelumnya tidak dihitung.

4859* **`<path> could not be resolved on disk`**: Claude Code tidak dapat menemukan direktori sesi di disk.4880* **`<path> could not be resolved on disk`**: Claude Code tidak dapat menemukan direktori sesi di disk.

4860 4881 

4882Sebelum v2.1.286, di Windows, pesan ini juga dapat muncul di direktori yang sudah Anda percayai, jika catatan kepercayaannya disimpan dengan jalur dalam huruf besar/kecil yang berbeda. Perbarui ke v2.1.286 atau lebih baru.

4883 

4861**Yang harus dilakukan:**4884**Yang harus dilakukan:**

4862 4885 

4863* Jalankan `claude` di direktori yang dinamai pesan dan terima dialog kepercayaan, kemudian jalankan perintah lagi4886* Jalankan `claude` di direktori yang dinamai pesan dan terima dialog kepercayaan, kemudian jalankan perintah lagi

hooks.md +884 −873

Details

12 12 

13Hooks adalah perintah shell yang ditentukan pengguna, endpoint HTTP, panggilan MCP tool, prompt LLM, atau subagent yang dijalankan secara otomatis pada titik-titik tertentu dalam siklus hidup Claude Code. Claude Code memicu event hook yang sama di mana pun ia berjalan: sesi di terminal, ekstensi IDE, [aplikasi Desktop](/docs/id/desktop-quickstart), dan [Claude Code di web](/docs/id/claude-code-on-the-web). Gunakan referensi ini untuk mencari skema event, opsi konfigurasi, format JSON input/output, dan fitur lanjutan seperti async hooks, HTTP hooks, dan MCP tool hooks.13Hooks adalah perintah shell yang ditentukan pengguna, endpoint HTTP, panggilan MCP tool, prompt LLM, atau subagent yang dijalankan secara otomatis pada titik-titik tertentu dalam siklus hidup Claude Code. Claude Code memicu event hook yang sama di mana pun ia berjalan: sesi di terminal, ekstensi IDE, [aplikasi Desktop](/docs/id/desktop-quickstart), dan [Claude Code di web](/docs/id/claude-code-on-the-web). Gunakan referensi ini untuk mencari skema event, opsi konfigurasi, format JSON input/output, dan fitur lanjutan seperti async hooks, HTTP hooks, dan MCP tool hooks.

14 14 

15Plugin juga dapat mendaftarkan hook sebagai fungsi JavaScript yang dipanggil oleh Claude Code di dalam prosesnya sendiri, yang dapat menggambar di antarmuka sekaligus bertindak atas event. Plugin yang melakukan hal tersebut adalah sebuah [mod](/docs/id/plugins/mods/overview), dan hook fungsi tersebut dibahas di [Bereaksi terhadap event](/docs/id/plugins/mods/events), bukan di sini. Hook di halaman ini tetap berfungsi berdampingan dengan mod.

16 

15<h2 id="hook-lifecycle">17<h2 id="hook-lifecycle">

16 Siklus hidup hook18 Siklus hidup hook

17</h2>19</h2>


274 276 

275Hooks dari file pengaturan, pengaturan kebijakan terkelola, dan plugin juga berjalan di dalam [subagents](/docs/id/sub-agents). Ketika subagent memanggil tool, tool events seperti `PreToolUse` dan `PostToolUse` menjalankan hooks yang dikonfigurasi sama seperti dalam percakapan utama, dan input membawa bidang input umum `agent_id` dan `agent_type` [](#common-input-fields) yang mengidentifikasi subagent.277Hooks dari file pengaturan, pengaturan kebijakan terkelola, dan plugin juga berjalan di dalam [subagents](/docs/id/sub-agents). Ketika subagent memanggil tool, tool events seperti `PreToolUse` dan `PostToolUse` menjalankan hooks yang dikonfigurasi sama seperti dalam percakapan utama, dan input membawa bidang input umum `agent_id` dan `agent_type` [](#common-input-fields) yang mengidentifikasi subagent.

276 278 

277Administrator enterprise dapat menggunakan `allowManagedHooksOnly` untuk membatasi hooks mana yang berjalan:279Administrator dapat menggunakan [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) dalam [pengaturan terkelola](/docs/id/managed-settings) untuk membatasi hooks mana yang berjalan:

278 280 

279* Hooks pengguna, proyek, lokal, dan plugin Anda diblokir. Hooks dari plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins` dikecualikan281* Hooks pengguna, proyek, lokal, dan plugin Anda diblokir. Hooks dari plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins` dikecualikan

280* Claude Code juga mempersempit pengaturan [`statusLine`](/docs/id/statusline), [`fileSuggestion`](/docs/id/settings-reference#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) Anda ke pengaturan terkelola282* Claude Code juga mempersempit pengaturan [`statusLine`](/docs/id/statusline), [`fileSuggestion`](/docs/id/settings-reference#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) Anda ke pengaturan terkelola


304 306 

305Matcher pada jalur ekspresi reguler diuji dengan `RegExp.prototype.test` JavaScript, yang berhasil pada kecocokan di mana pun dalam nilai. `Edit.*` cocok dengan `Edit` dan `NotebookEdit`; bungkus pola dalam `^` dan `$`, seperti `^Edit$`, ketika Anda memerlukan kecocokan seluruh string.307Matcher pada jalur ekspresi reguler diuji dengan `RegExp.prototype.test` JavaScript, yang berhasil pada kecocokan di mana pun dalam nilai. `Edit.*` cocok dengan `Edit` dan `NotebookEdit`; bungkus pola dalam `^` dan `$`, seperti `^Edit$`, ketika Anda memerlukan kecocokan seluruh string.

306 308 

307Tanda hubung dalam set exact-match memerlukan Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya, nama dengan tanda hubung seperti `code-reviewer` dievaluasi sebagai ekspresi reguler yang tidak berlabuh, jadi juga dijalankan untuk `senior-code-reviewer`; labuhnya sebagai `^code-reviewer$` pada versi tersebut untuk mencocokkan hanya nama itu.

308 

309`FileChanged` dan `StopFailure` menggunakan set exact-match yang lebih sempit dari huruf, digit, `_`, dan `|` saja. Tanda hubung, spasi, atau koma dalam matcher untuk dua event itu membuat tetap pada jalur ekspresi reguler, dan hanya `|` yang memisahkan alternatif. Setiap event lain dengan dukungan matcher dalam tabel yang mengikuti menerima `|` atau `,`.309`FileChanged` dan `StopFailure` menggunakan set exact-match yang lebih sempit dari huruf, digit, `_`, dan `|` saja. Tanda hubung, spasi, atau koma dalam matcher untuk dua event itu membuat tetap pada jalur ekspresi reguler, dan hanya `|` yang memisahkan alternatif. Setiap event lain dengan dukungan matcher dalam tabel yang mengikuti menerima `|` atau `,`.

310 310 

311Event `FileChanged` tidak mengikuti aturan ini saat membangun daftar watch-nya. Lihat [FileChanged](#filechanged).311Event `FileChanged` tidak mengikuti aturan ini saat membangun daftar watch-nya. Lihat [FileChanged](#filechanged).


380* `mcp__brave-search__.*` cocok dengan semua tools dari server yang namanya berisi tanda hubung380* `mcp__brave-search__.*` cocok dengan semua tools dari server yang namanya berisi tanda hubung

381* `mcp__.*__write.*` cocok dengan tool apa pun yang namanya dimulai dengan `write` dari server apa pun381* `mcp__.*__write.*` cocok dengan tool apa pun yang namanya dimulai dengan `write` dari server apa pun

382 382 

383Tanda hubung dalam set exact-match memerlukan Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya, awalan bare dengan tanda hubung seperti `mcp__brave-search` dievaluasi sebagai ekspresi reguler yang tidak berlabuh dan cocok dengan setiap tool dari server itu. Bentuk `mcp__brave-search__.*` bekerja pada setiap versi.

384 

385Tools dari [plugin-bundled MCP server](/docs/id/mcp#plugin-provided-mcp-servers) menggunakan segmen server yang dibatasi yang mencakup nama plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Matcher yang ditulis terhadap kunci server bare tidak pernah dijalankan untuk tools ini. Untuk plugin bernama `my-plugin` yang membundel server di bawah kunci `db`, tool `query` muncul sebagai `mcp__plugin_my-plugin_db__query`, jadi matcher untuk setiap tool dari server itu adalah `mcp__plugin_my-plugin_db__.*`. Gunakan nama tool yang dibatasi yang sama dalam bidang [`if`](#common-fields) handler. Lihat [Plugin-provided MCP servers](/docs/id/mcp#plugin-provided-mcp-servers) untuk bagaimana nama yang dibatasi dibangun.383Tools dari [plugin-bundled MCP server](/docs/id/mcp#plugin-provided-mcp-servers) menggunakan segmen server yang dibatasi yang mencakup nama plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Matcher yang ditulis terhadap kunci server bare tidak pernah dijalankan untuk tools ini. Untuk plugin bernama `my-plugin` yang membundel server di bawah kunci `db`, tool `query` muncul sebagai `mcp__plugin_my-plugin_db__query`, jadi matcher untuk setiap tool dari server itu adalah `mcp__plugin_my-plugin_db__.*`. Gunakan nama tool yang dibatasi yang sama dalam bidang [`if`](#common-fields) handler. Lihat [Plugin-provided MCP servers](/docs/id/mcp#plugin-provided-mcp-servers) untuk bagaimana nama yang dibatasi dibangun.

386 384 

387Contoh ini mencatat semua operasi memory server dan memvalidasi operasi write dari server MCP apa pun:385Contoh ini mencatat semua operasi memory server dan memvalidasi operasi write dari server MCP apa pun:


421 419 

422* **[Command hooks](#command-hook-fields)** (`type: "command"`): jalankan perintah shell. Skrip Anda menerima [JSON input](#hook-input-and-output) event di stdin dan mengkomunikasikan hasil kembali melalui kode keluar dan stdout.420* **[Command hooks](#command-hook-fields)** (`type: "command"`): jalankan perintah shell. Skrip Anda menerima [JSON input](#hook-input-and-output) event di stdin dan mengkomunikasikan hasil kembali melalui kode keluar dan stdout.

423* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): kirimkan JSON input event sebagai permintaan HTTP POST ke URL. Endpoint mengkomunikasikan hasil kembali melalui badan respons menggunakan [format JSON output](#json-output) yang sama seperti command hooks.421* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): kirimkan JSON input event sebagai permintaan HTTP POST ke URL. Endpoint mengkomunikasikan hasil kembali melalui badan respons menggunakan [format JSON output](#json-output) yang sama seperti command hooks.

424* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): panggil tool pada [MCP server](/docs/id/mcp) yang sudah terhubung. Output teks tool diperlakukan seperti command-hook stdout.422* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): panggil tool pada [server MCP](/docs/id/mcp) yang dikonfigurasi. Output teks tool diperlakukan seperti command-hook stdout.

425* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): kirimkan prompt ke model Claude untuk evaluasi single-turn. Model mengembalikan keputusannya sebagai JSON. Lihat [Prompt-based hooks](#prompt-based-hooks).423* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): kirimkan prompt ke model Claude untuk evaluasi single-turn. Model mengembalikan keputusannya sebagai JSON. Lihat [Prompt-based hooks](#prompt-based-hooks).

426* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): spawn subagent yang dapat menggunakan tools seperti Read, Grep, dan Glob untuk memverifikasi kondisi sebelum mengembalikan keputusan. Agent hooks adalah eksperimental dan mungkin berubah. Lihat [Agent-based hooks](#agent-based-hooks).424* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): spawn subagent yang dapat menggunakan tools seperti Read, Grep, dan Glob untuk memverifikasi kondisi sebelum mengembalikan keputusan. Agent hooks adalah eksperimental dan mungkin berubah. Lihat [Agent-based hooks](#agent-based-hooks).

427 425 


457| `Bash(git *)` | `npm test && git push` | ya | setiap subperintah diperiksa; `git push` cocok |455| `Bash(git *)` | `npm test && git push` | ya | setiap subperintah diperiksa; `git push` cocok |

458| `Bash(rm *)` | `echo $(rm -rf /)` | ya | perintah di dalam `$()` dan backticks diperiksa; `rm -rf /` cocok |456| `Bash(rm *)` | `echo $(rm -rf /)` | ya | perintah di dalam `$()` dan backticks diperiksa; `rm -rf /` cocok |

459| `Bash(rm *)` | `echo $(date)` | tidak | tidak ada subperintah yang cocok dengan `rm *` |457| `Bash(rm *)` | `echo $(date)` | tidak | tidak ada subperintah yang cocok dengan `rm *` |

460| `Bash(cat *)` | `echo before $(date) after` | tidak | substitusi dapat duduk di posisi argumen apa pun, jadi perintah lengkap dan `date` keduanya diperiksa; tidak ada yang cocok dengan `cat *` |

461| `Bash(git *)` | `$TOOL git push` | ya | Claude Code tidak dapat mengatakan apa nama perintah berkembang menjadi, jadi menjalankan hook |

462| `Bash(git push *)` | `echo $(date)` | ya | pola yang menentukan lebih dari nama perintah menjalankan hook bagaimanapun pada `$()`, backticks, atau `$VAR` |458| `Bash(git push *)` | `echo $(date)` | ya | pola yang menentukan lebih dari nama perintah menjalankan hook bagaimanapun pada `$()`, backticks, atau `$VAR` |

463 459 

464Ketika Claude Code tidak dapat menentukan perintah mana yang dijalankan input Bash, itu menjalankan hook Anda terlepas dari pola. Karena filter `if` adalah best-effort, gunakan [sistem izin](/docs/id/permissions) daripada hook untuk memberlakukan allow atau deny yang keras.460Ketika Claude Code tidak dapat menentukan perintah mana yang dijalankan input Bash, itu menjalankan hook Anda terlepas dari pola. Karena filter `if` adalah best-effort, gunakan [sistem izin](/docs/id/permissions) daripada hook untuk memberlakukan allow atau deny yang keras.


474| `command` | ya | Perintah shell untuk dijalankan. Dengan `args`, executable untuk spawn secara langsung. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |470| `command` | ya | Perintah shell untuk dijalankan. Dengan `args`, executable untuk spawn secara langsung. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |

475| `args` | tidak | Daftar argumen. Ketika ada, `command` diselesaikan sebagai executable dan di-spawn secara langsung dengan `args` sebagai vektor argumen, tanpa shell yang terlibat. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |471| `args` | tidak | Daftar argumen. Ketika ada, `command` diselesaikan sebagai executable dan di-spawn secara langsung dengan `args` sebagai vektor argumen, tanpa shell yang terlibat. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |

476| `async` | tidak | Jika `true`, dijalankan di latar belakang tanpa memblokir. Lihat [Run hooks in the background](#run-hooks-in-the-background) |472| `async` | tidak | Jika `true`, dijalankan di latar belakang tanpa memblokir. Lihat [Run hooks in the background](#run-hooks-in-the-background) |

477| `asyncRewake` | tidak | Jika `true`, dijalankan di latar belakang dan membangunkan Claude pada kode keluar 2. Hook stderr, atau stdout jika stderr kosong, ditampilkan ke Claude sebagai pengingat sistem sehingga dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |473| `asyncRewake` | tidak | Jika `true`, dijalankan di latar belakang dan membangunkan Claude pada kode keluar 2. Hook stderr, atau stdout jika stderr kosong, ditampilkan ke Claude sebagai [system reminder](/docs/id/glossary#system-reminder) sehingga dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |

478| `shell` | tidak | Shell untuk digunakan untuk hook ini. Menerima `"bash"` atau `"powershell"`. Default ke `"bash"`, atau ke `"powershell"` di Windows ketika Git Bash tidak diinstal. Menetapkan `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hooks spawn PowerShell secara langsung. Diabaikan ketika `args` diatur |474| `shell` | tidak | Shell untuk digunakan untuk hook ini. Menerima `"bash"` atau `"powershell"`. Default ke `"bash"`, atau ke `"powershell"` di Windows ketika Git Bash tidak diinstal. Menetapkan `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hooks spawn PowerShell secara langsung. Diabaikan ketika `args` diatur |

479 475 

480<a id="exec-form-and-shell-form" />476<a id="exec-form-and-shell-form" />


571 567 

572| Bidang | Diperlukan | Deskripsi |568| Bidang | Diperlukan | Deskripsi |

573| :- | :- | :- |569| :- | :- | :- |

574| `server` | ya | Nama server MCP yang dikonfigurasi. Untuk [plugin-bundled server](/docs/id/mcp#plugin-provided-mcp-servers), ini adalah nama yang dibatasi `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:db`, bukan kunci server bare. Server harus sudah terhubung; hook tidak pernah memicu alur OAuth atau koneksi |570| `server` | ya | Nama server MCP yang dikonfigurasi. Untuk [plugin-bundled server](/docs/id/mcp#plugin-provided-mcp-servers), ini adalah nama yang dibatasi `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:db`, bukan kunci server bare |

575| `tool` | ya | Nama tool untuk dipanggil di server itu |571| `tool` | ya | Nama tool untuk dipanggil di server itu |

576| `input` | tidak | Argumen yang dilewatkan ke tool. Nilai string mendukung substitusi `${path}` dari [JSON input](#hook-input-and-output) hook, seperti `"${tool_input.file_path}"` |572| `input` | tidak | Argumen yang dilewatkan ke tool. Nilai string mendukung substitusi `${path}` dari [JSON input](#hook-input-and-output) hook, seperti `"${tool_input.file_path}"` |

577 573 

578Claude Code membaca konten teks tool dengan cara yang sama seperti membaca command-hook stdout, mengikuti [parsing rule di bawah exit code 0](#exit-code-0). Jika server bernama tidak terhubung, atau tool mengembalikan `isError: true`, hook menghasilkan kesalahan non-blocking dan eksekusi berlanjut.

579 

580Contoh ini memanggil tool `security_scan` pada server MCP `my_server` setelah setiap `Write` atau `Edit`, melewatkan path file yang diedit:574Contoh ini memanggil tool `security_scan` pada server MCP `my_server` setelah setiap `Write` atau `Edit`, melewatkan path file yang diedit:

581 575 

582```json theme={null}576```json theme={null}


599}593}

600```594```

601 595 

602Hook `mcp_tool` dapat berjalan hanya setelah Claude Code membuat server MCP sesi tersedia untuk hooks. `SessionStart` dan `Setup` dapat dijalankan sebelum titik itu:596<h5 id="how-the-tool’s-result-is-read">

597 Bagaimana hasil tool dibaca

598</h5>

603 599 

604* **Saat peluncuran**: `SessionStart` dijalankan sebelum server tersedia, termasuk ketika Anda meluncurkan dengan `--continue` atau `--resume`. Claude Code melewatkan hook `mcp_tool` event tanpa memanggil tools mereka, dan [debug log](#debug-hooks) mencatat `mcp_tool hooks are not available for the 'SessionStart' hook event (no MCP client context)`.600Claude Code membaca konten teks tool dengan cara yang sama seperti membaca command-hook stdout, mengikuti [aturan parsing di bawah exit code 0](#exit-code-0). Jika tool mengembalikan `isError: true`, hook menghasilkan kesalahan non-blocking dan eksekusi berlanjut.

605* **Nanti dalam sesi yang berjalan**: setelah `/clear` atau compaction, `SessionStart` dijalankan lagi dengan server sudah tersedia, dan hook `mcp_tool` berjalan.

606* **Pada `Setup`**: `Setup` selalu dijalankan sebelum server tersedia, jadi Claude Code melewatkan hook `mcp_tool` setiap kali dan mencatat pesan yang sama yang menamai `Setup`.

607 601 

608Misalnya, konfigurasi ini memanggil tool `load_context` pada server MCP `my_server` dari hook `SessionStart` tanpa matcher, jadi berlaku untuk setiap sumber `SessionStart`:602<h5 id="when-the-server-is-still-connecting">

603 Ketika server masih dalam proses terhubung

604</h5>

609 605 

610```json theme={null}606Pada event di mana hook dapat memblokir atau mengubah hasil, seperti `PreToolUse` atau `Stop`, Claude Code menunggu server yang sedang terhubung sebelum memanggil tool, paling lama [`MCP_TIMEOUT`](/docs/id/env-vars) dan dalam batas [`timeout`](#common-fields) milik hook itu sendiri. Pada event observasional, seperti `Notification` atau `SessionEnd`, Claude Code tidak menunggu.

611{

612 "hooks": {

613 "SessionStart": [

614 {

615 "hooks": [

616 {

617 "type": "mcp_tool",

618 "server": "my_server",

619 "tool": "load_context"

620 }

621 ]

622 }

623 ]

624 }

625}

626```

627 607 

628Ketika Anda menjalankan `claude`, Claude Code melewatkan hook ini, tidak pernah memanggil `load_context`, dan menulis pesan `no MCP client context` ke debug log. Jalankan `/clear` dalam sesi yang sama dan hook berjalan dan memanggil `load_context`. Hook `type: "command"` pada `SessionStart` berjalan saat peluncuran, jadi gunakan satu untuk apa pun yang sesi butuhkan dari turn pertamanya.608Server yang menampilkan [status `cached`](/docs/id/mcp#server-status-detail) terhubung ketika hook memanggil tool-nya. Jika server belum terhubung pada saat itu, hook menghasilkan kesalahan non-blocking dan eksekusi berlanjut. Hook tidak pernah memulai alur OAuth, jadi [autentikasi server dari `/mcp`](/docs/id/mcp#authenticate-with-remote-mcp-servers) terlebih dahulu.

609 

610<h5 id="events-that-fire-before-mcp-servers-are-available">

611 Event yang dijalankan sebelum server MCP tersedia

612</h5>

613 

614`SessionStart` saat peluncuran, termasuk dengan `--continue` atau `--resume`, dan setiap event `Setup` dijalankan sebelum server MCP sesi tersedia untuk hook. Claude Code melewatkan hook `mcp_tool` mereka tanpa memanggil tool, dan [debug log](#debug-hooks) mencatat `mcp_tool hooks are not available for the 'SessionStart' hook event (no MCP client context)`, atau pesan yang sama yang menyebut `Setup`. Ketika `SessionStart` dijalankan lagi nanti dalam sesi, setelah `/clear` atau compaction, hook `mcp_tool`-nya berjalan. Untuk apa pun yang dibutuhkan sesi saat peluncuran, gunakan hook `type: "command"` pada `SessionStart` sebagai gantinya.

629 615 

630<h4 id="prompt-and-agent-hook-fields">616<h4 id="prompt-and-agent-hook-fields">

631 Bidang prompt dan agent hook617 Bidang prompt dan agent hook


636| Bidang | Diperlukan | Deskripsi |622| Bidang | Diperlukan | Deskripsi |

637| :- | :- | :- |623| :- | :- | :- |

638| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Escape dengan backslash untuk menyertakan teks literal: `\$1.00` dirender sebagai `$1.00` |624| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Escape dengan backslash untuk menyertakan teks literal: `\$1.00` dirender sebagai `$1.00` |

639| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |625| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model yang digunakan Claude Code untuk [fungsionalitas latar belakang](/docs/id/costs#background-token-usage) |

640 626 

641<h3 id="reference-scripts-by-path">627<h3 id="reference-scripts-by-path">

642 Referensi skrip berdasarkan path628 Referensi skrip berdasarkan path


745 Menu `/hooks`731 Menu `/hooks`

746</h3>732</h3>

747 733 

748Ketik `/hooks` di Claude Code untuk membuka browser hooks read-only. Menu menampilkan setiap hook event dengan jumlah hooks yang dikonfigurasi, memungkinkan Anda menggali ke dalam matchers, dan menampilkan detail lengkap setiap hook handler. Gunakan untuk memverifikasi konfigurasi, memeriksa file pengaturan mana hook berasal, atau memeriksa perintah, prompt, atau URL hook.734Ketik `/hooks` di Claude Code untuk membuka browser read-only untuk hooks yang telah Anda konfigurasi. Daftar memberi label pada setiap hook dengan asalnya, seperti pengaturan pengguna, pengaturan proyek, pengaturan lokal, plugin, atau sesi saat ini.

749 

750Menu menampilkan semua lima tipe hook: `command`, `prompt`, `agent`, `http`, dan `mcp_tool`. Setiap hook diberi label dengan awalan `[type]` dan sumber menunjukkan di mana itu didefinisikan:

751 735 

752* `User Settings`: dari `~/.claude/settings.json`736Pilih hook untuk melihat teks lengkap dari apa yang dijalankannya dan di mana hook itu didefinisikan, seperti path file pengaturannya atau nama plugin-nya.

753* `Project Settings`: dari `.claude/settings.json`

754* `Local Settings`: dari `.claude/settings.local.json`

755* `Plugin Hooks`: dari `hooks/hooks.json` plugin

756* `Session Hooks`: terdaftar dalam memori untuk sesi saat ini

757 737 

758Memilih hook membuka tampilan detail menampilkan event, matcher, tipe, file sumber, dan perintah lengkap, prompt, atau URL. Menu adalah read-only: untuk menambah, memodifikasi, atau menghapus hooks, edit JSON pengaturan secara langsung atau minta Claude membuat perubahan.738Untuk menelusuri semua hook event, termasuk yang tidak memiliki hooks yang dikonfigurasi, pilih `All events` di akhir daftar.

759 739 

760<h3 id="disable-or-remove-hooks">740<h3 id="disable-or-remove-hooks">

761 Nonaktifkan atau hapus hooks741 Nonaktifkan atau hapus hooks

762</h3>742</h3>

763 743 

764Untuk menghapus hook, hapus entrinya dari file JSON pengaturan.744Untuk menghapus hook yang didefinisikan dalam file pengaturan, hapus entrinya dari file tersebut.

765 745 

766Untuk menonaktifkan semua hooks sementara tanpa menghapusnya, atur `"disableAllHooks": true` dalam file pengaturan Anda. Claude Code membaca nilai yang tersisa setelah [settings precedence](/docs/id/settings#settings-precedence) diterapkan, jadi `"disableAllHooks": false` dalam `.claude/settings.json` proyek menimpa `true` dalam pengaturan pengguna Anda. Untuk mematikan hooks untuk satu run apa pun yang dikatakan pengaturan proyek, lewatkan `--settings '{"disableAllHooks": true}'`, yang mengambil prioritas atas pengaturan proyek dan lokal. Tidak ada cara untuk menonaktifkan hook individual sambil menyimpannya dalam konfigurasi.746Untuk menonaktifkan semua hooks sementara tanpa menghapusnya, atur `"disableAllHooks": true` dalam file pengaturan Anda. Claude Code membaca nilai yang tersisa setelah [settings precedence](/docs/id/settings#settings-precedence) diterapkan, jadi `"disableAllHooks": false` dalam `.claude/settings.json` proyek menimpa `true` dalam pengaturan pengguna Anda. Untuk mematikan hooks untuk satu run apa pun yang dikatakan pengaturan proyek, lewatkan `--settings '{"disableAllHooks": true}'`, yang mengambil prioritas atas pengaturan proyek dan lokal. Tidak ada cara untuk menonaktifkan hook individual sambil menyimpannya dalam konfigurasi.

767 747 


773 Input dan output hook753 Input dan output hook

774</h2>754</h2>

775 755 

776Command hooks menerima data JSON melalui stdin dan mengkomunikasikan hasil melalui kode keluar, stdout, dan stderr. HTTP hooks menerima JSON yang sama sebagai badan permintaan POST dan mengkomunikasikan hasil melalui badan respons HTTP. Bagian ini mencakup bidang dan perilaku yang umum untuk semua events. Setiap bagian event di bawah [Hook events](#hook-events) mencakup skema input spesifiknya dan opsi kontrol keputusan.756Hook perintah menerima data JSON melalui stdin dan menyampaikan hasil melalui exit code, stdout, dan stderr. Hook HTTP menerima JSON yang sama sebagai body permintaan POST dan menyampaikan hasil melalui body respons HTTP. Bagian ini membahas field dan perilaku yang umum untuk semua event. Bagian setiap event di bawah [Event hook](#hook-events) mencakup skema input spesifik dan opsi kontrol keputusannya.

777 757 

778Pada macOS dan Linux, command hooks berjalan dalam sesi mereka sendiri tanpa terminal pengontrol. Proses hook dan proses anak apa pun tidak dapat membuka `/dev/tty` atau mengirim urutan escape langsung ke antarmuka Claude Code. Windows tidak memiliki `/dev/tty`.758Di macOS dan Linux, hook perintah berjalan dalam sesinya sendiri tanpa terminal pengendali. Proses hook dan proses turunannya tidak dapat membuka `/dev/tty` atau mengirim escape sequence secara langsung ke antarmuka Claude Code. Windows tidak memiliki `/dev/tty`.

779 759 

780Untuk menampilkan pesan kepada pengguna di platform apa pun, kembalikan [`systemMessage`](#json-output) dalam output JSON. Beberapa events membuangnya atau mengirimkannya ke tempat lain, dan setiap [bagian event](#hook-events) mengatakan demikian. Untuk memicu notifikasi desktop, atur judul jendela, atau bunyikan bel, kembalikan [`terminalSequence`](#emit-terminal-notifications) sebagai gantinya.760Untuk menampilkan pesan kepada pengguna di platform apa pun, kembalikan [`systemMessage`](#json-output) dalam output JSON. Beberapa event membuangnya atau mengirimkannya ke tempat lain, dan [bagian setiap event](#hook-events) menyebutkannya. Untuk memicu notifikasi desktop, mengatur judul jendela, atau membunyikan bel, kembalikan [`terminalSequence`](#emit-terminal-notifications) sebagai gantinya.

781 761 

782<h3 id="common-input-fields">762<h3 id="common-input-fields">

783 Bidang input umum763 Field input umum

784</h3>764</h3>

785 765 

786Hook events menerima bidang-bidang ini sebagai JSON, selain bidang spesifik event yang didokumentasikan dalam setiap bagian [hook event](#hook-events). Untuk command hooks, JSON ini tiba melalui stdin. Untuk HTTP hooks, itu tiba sebagai badan permintaan POST.766Event hook menerima field berikut sebagai JSON, selain field khusus event yang didokumentasikan di setiap bagian [event hook](#hook-events). Untuk hook perintah, JSON ini tiba melalui stdin. Untuk hook HTTP, JSON ini tiba sebagai body permintaan POST.

787 767 

788| Bidang | Deskripsi |768| Field | Deskripsi |

789| :- | :- |769| :- | :- |

790| `session_id` | Pengenal sesi saat ini |770| `session_id` | Pengidentifikasi sesi saat ini |

791| `prompt_id` | UUID yang mengidentifikasi prompt pengguna yang sedang diproses. Cocok dengan atribut [`prompt.id` pada events OpenTelemetry](/docs/id/monitoring-usage#event-correlation-attributes), sehingga Anda dapat menghubungkan output hook dengan telemetri untuk satu prompt. Tidak ada sampai input pengguna pertama. Memerlukan Claude Code v2.1.196 atau lebih baru |771| `prompt_id` | UUID yang mengidentifikasi prompt pengguna yang sedang diproses. Cocok dengan [atribut `prompt.id` pada event OpenTelemetry](/docs/id/monitoring-usage#event-correlation-attributes), sehingga Anda dapat mengorelasikan output hook dengan telemetri untuk satu prompt. Tidak ada sampai input pengguna pertama. Memerlukan Claude Code v2.1.196 atau lebih baru |

792| `transcript_path` | Path ke JSON percakapan. File transkrip ditulis secara asinkron dan mungkin tertinggal dari percakapan dalam memori, jadi mungkin belum menyertakan pesan terbaru giliran saat ini ketika hook dijalankan. Hooks yang memerlukan teks asisten akhir dari giliran saat ini harus menggunakan `last_assistant_message` pada [Stop](#stop) dan [SubagentStop](#subagentstop) alih-alih membaca transkrip |772| `transcript_path` | Path ke JSON percakapan. File transkrip ditulis secara asinkron dan mungkin tertinggal dari percakapan di memori, sehingga mungkin belum menyertakan pesan terbaru dari giliran saat ini ketika hook dijalankan. Hook yang memerlukan teks akhir asisten dari giliran saat ini sebaiknya menggunakan `last_assistant_message` pada [Stop](#stop) dan [SubagentStop](#subagentstop) alih-alih membaca transkrip |

793| `cwd` | Direktori kerja saat hook dipanggil |773| `cwd` | Direktori kerja saat ini ketika hook dipanggil |

794| `scratchpad_dir` | Path ke direktori scratchpad sesi, tempat Claude menyimpan file kerja sementara. Tidak ada ketika sesi tidak memiliki scratchpad atau direktori temp tidak tersedia. Memerlukan Claude Code v2.1.257 atau lebih baru |774| `scratchpad_dir` | Path ke [direktori scratchpad](/docs/id/claude-directory#session-scratchpad-directory) sesi, tempat Claude menyimpan file kerja sementara. Tidak ada ketika sesi tidak memiliki scratchpad atau direktori temp tidak tersedia. Memerlukan Claude Code v2.1.257 atau lebih baru |

795| `permission_mode` | [Mode izin](/docs/id/permissions#permission-modes) saat ini: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"`, atau `"bypassPermissions"`. Mode yang diberi label **Manual** tiba sebagai `"default"`, tidak pernah sebagai `"manual"`, jadi skrip yang cocok dengan `"default"` terus bekerja. Tidak semua events menerima bidang ini. Periksa contoh JSON di setiap bagian [hook event](#hook-events) |775| `permission_mode` | [Mode izin](/docs/id/permissions#permission-modes) saat ini: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"`, atau `"bypassPermissions"`. Mode berlabel **Manual** tiba sebagai `"default"`, tidak pernah sebagai `"manual"`, sehingga skrip yang mencocokkan `"default"` tetap berfungsi. Tidak semua event menerima field ini. Periksa contoh JSON di setiap bagian [event hook](#hook-events) |

796| `effort` | Objek dengan bidang `level` yang menyimpan [tingkat effort](/docs/id/model-config#adjust-effort-level) yang berlaku saat hook berjalan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Jika Anda menetapkan tingkat yang tidak didukung model aktif, `level` melaporkan tingkat yang sebenarnya dijalankan Claude Code; [Adjust effort level](/docs/id/model-config#adjust-effort-level) mengatakan bagaimana ia memilih tingkat itu. Ultracode bukan tingkat yang berbeda dan dilaporkan sebagai `"xhigh"`. Objek cocok dengan bidang `effort` [status line](/docs/id/statusline#available-data). Hadir untuk events yang dijalankan dalam konteks penggunaan tool, seperti `PreToolUse`, `PostToolUse`, `Stop`, dan `SubagentStop`, ketika model saat ini mendukung parameter effort. Tingkat juga tersedia untuk perintah hook dan tool Bash sebagai variabel lingkungan `$CLAUDE_EFFORT`. |776| `effort` | Objek dengan field `level` yang berisi [tingkat effort](/docs/id/model-config#adjust-effort-level) yang berlaku saat hook berjalan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Jika Anda mengatur tingkat yang tidak didukung model aktif, `level` melaporkan tingkat yang sebenarnya dijalankan Claude Code; [Menyesuaikan tingkat effort](/docs/id/model-config#adjust-effort-level) menjelaskan cara tingkat tersebut dipilih. Objek ini cocok dengan field `effort` pada [baris status](/docs/id/statusline#available-data). Ada untuk event yang dijalankan dalam konteks penggunaan tool, seperti `PreToolUse`, `PostToolUse`, `Stop`, dan `SubagentStop`, ketika model saat ini mendukung parameter effort. Tingkat ini juga tersedia untuk perintah hook dan tool Bash sebagai environment variable `$CLAUDE_EFFORT`. |

797| `hook_event_name` | Nama event yang dijalankan |777| `hook_event_name` | Nama event yang dijalankan |

798 778 

799Saat berjalan dengan `--agent` atau di dalam subagent, dua bidang tambahan disertakan:779Saat berjalan dengan `--agent` atau di dalam subagent, dua field tambahan disertakan:

800 780 

801| Bidang | Deskripsi |781| Field | Deskripsi |

802| :- | :- |782| :- | :- |

803| `agent_id` | Pengenal unik untuk subagent. Hadir hanya ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |783| `agent_id` | Pengidentifikasi unik untuk subagent. Hanya ada ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |

804| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Hadir ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagents, tipe subagent mengambil alih nilai `--agent` sesi. Lihat [SubagentStart](#subagentstart) untuk nilai yang dilaporkan custom dan plugin subagents dan cara menulis matcher terhadap nama yang dibatasi plugin. |784| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Ada ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagent, tipe subagent diutamakan daripada nilai `--agent` sesi. Lihat [SubagentStart](#subagentstart) untuk nilai yang dilaporkan subagent kustom dan plugin serta cara menulis matcher untuk nama yang dibatasi pada plugin. |

805 785 

806Hanya hooks [`SessionStart`](#sessionstart) yang dapat menerima bidang `model`, dan Claude Code tidak selalu menyertakannya. Hooks [`PreModelSwitch`](#premodelswitch) dan [`PostModelSwitch`](#postmodelswitch) menerima `from_model` dan `to_model` sebagai gantinya, jadi gunakan hook PostModelSwitch untuk mengikuti model saat berubah selama sesi.786Hanya hook [`SessionStart`](#sessionstart) yang dapat menerima field `model`, dan Claude Code tidak selalu menyertakannya. Hook [`PreModelSwitch`](#premodelswitch) dan [`PostModelSwitch`](#postmodelswitch) menerima `from_model` dan `to_model` sebagai gantinya, jadi gunakan hook PostModelSwitch untuk mengikuti model saat model berubah selama sesi.

807 787 

808Tidak ada variabel lingkungan `$CLAUDE_MODEL`. Hook dapat membaca `$ANTHROPIC_MODEL` jika Anda menetapkannya di shell Anda, tetapi nilai itu tidak berubah ketika Anda beralih model dengan `/model` selama sesi.788Tidak ada environment variable `$CLAUDE_MODEL`. Hook dapat membaca `$ANTHROPIC_MODEL` jika Anda mengaturnya di shell Anda, tetapi nilai tersebut tidak berubah ketika Anda mengganti model dengan `/model` selama sesi.

809 789 

810Proses hook mewarisi lingkungan induk, terlepas dari variabel exporter `OTEL_*` yang Claude Code [menghapus dari setiap subprocess yang dijalankannya](/docs/id/monitoring-usage#administrator-configuration) dan, ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars#variables) diatur ke `1`, variabel yang dihapusnya.790Proses hook mewarisi environment induk, kecuali variabel exporter `OTEL_*` yang [dihapus Claude Code dari setiap subproses yang dijalankannya](/docs/id/monitoring-usage#administrator-configuration) dan, ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars#variables) diatur ke `1`, variabel-variabel yang dihapusnya.

811 791 

812Misalnya, hook `PreToolUse` untuk perintah Bash menerima ini di stdin:792Misalnya, hook `PreToolUse` untuk perintah Bash menerima ini di stdin:

813 793 


831}811}

832```812```

833 813 

834Bidang `tool_name`, `tool_input`, dan `tool_use_id` spesifik untuk event. Setiap bagian [hook event](#hook-events) mendokumentasikan bidang tambahan untuk event itu.814Field `tool_name`, `tool_input`, dan `tool_use_id` bersifat khusus event. Setiap bagian [event hook](#hook-events) mendokumentasikan field tambahan untuk event tersebut.

835 815 

836<h3 id="exit-code-output">816<h3 id="exit-code-output">

837 Output kode keluar817 Output exit code

838</h3>818</h3>

839 819 

840Kode keluar dari perintah hook Anda memberitahu Claude Code apakah tindakan harus dilanjutkan, diblokir, atau diabaikan. Kode keluar tidak bertindak sendiri. Claude Code membaca bidang [JSON output](#json-output) dari stdout pada setiap kode keluar, bukan hanya 0, dan untuk events yang menggunakan model keputusan standar, objek yang diurai yang lulus validasi skema berlaku bersama kode. Blokir exit 2 adalah satu-satunya hasil yang tidak dapat ditimpa JSON.820Exit code dari perintah hook Anda memberi tahu Claude Code apakah tindakan harus dilanjutkan, diblokir, atau diabaikan. Exit code tidak bekerja sendiri. Claude Code membaca [field output JSON](#json-output) dari stdout pada setiap exit code, bukan hanya 0, dan untuk event yang menggunakan model keputusan standar, objek yang berhasil di-parse dan lolos validasi skema berlaku bersamaan dengan kode tersebut. Pemblokiran oleh exit 2 adalah satu-satunya hasil yang tidak dapat ditimpa oleh JSON.

841 821 

842Dua tabel memiliki pengecualian per-event: [Exit code 2 behavior per event](#exit-code-2-behavior-per-event) mengatakan apa yang dilakukan kode keluar untuk setiap event, dan [Decision control](#decision-control) mengatakan bidang keputusan mana yang dihormati setiap event. Bidang universal seperti `systemMessage` bekerja di sebagian besar events dan tercantum dalam tabel [JSON output](#json-output).822Dua tabel memuat pengecualian per event: [Perilaku exit code 2 per event](#exit-code-2-behavior-per-event) menjelaskan apa yang dilakukan exit code untuk setiap event, dan [Kontrol keputusan](#decision-control) menjelaskan field keputusan mana yang dihormati setiap event. Field universal seperti `systemMessage` berfungsi di sebagian besar event dan tercantum dalam tabel [output JSON](#json-output).

843 823 

844<h4 id="exit-code-0">824<h4 id="exit-code-0">

845 Exit code 0825 Exit code 0

846</h4>826</h4>

847 827 

848Exit 0 berarti sukses, dan merupakan kode keluar yang dimaksudkan ketika Anda mencetak JSON untuk kontrol terstruktur.828Exit 0 berarti berhasil, dan merupakan exit code yang dimaksudkan ketika Anda mencetak JSON untuk kontrol terstruktur.

849 829 

850Untuk sebagian besar events, Claude Code menulis stdout ke debug log dan tidak menampilkannya dalam transkrip. Pengecualiannya adalah `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart`, dan `PostModelSwitch`, di mana Claude Code menambahkan stdout teks biasa sebagai konteks yang dapat dilihat dan ditindaklanjuti Claude.830Untuk sebagian besar event, Claude Code menulis stdout ke log debug dan tidak menampilkannya di transkrip. Pengecualiannya adalah `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart`, dan `PostModelSwitch`, di mana Claude Code menambahkan stdout teks biasa sebagai konteks yang dapat dilihat dan ditindaklanjuti oleh Claude.

851 831 

852Apakah Claude Code membaca stdout Anda sebagai [JSON output](#json-output) atau sebagai teks biasa tergantung pada cara dimulai dan diakhiri, mengabaikan whitespace di sekitarnya:832Apakah Claude Code membaca stdout Anda sebagai [output JSON](#json-output) atau sebagai teks biasa bergantung pada bagaimana stdout diawali dan diakhiri, dengan mengabaikan whitespace di sekitarnya:

853 833 

854* **Dimulai dengan `{` dan diakhiri dengan `}`**: Claude Code menguraikannya sebagai JSON. Ketika output adalah dua atau lebih baris yang masing-masing diurai sebagai JSON sendiri, dan tidak ada baris yang merupakan objek [JSON output](#json-output) yang menetapkan bidang, Claude Code memperlakukan seluruh output sebagai teks biasa. Ketika salah satu baris itu menetapkan bidang, seluruh output adalah kegagalan parsing, dijelaskan di bawah.834* **Diawali dengan `{` dan diakhiri dengan `}`**: Claude Code mem-parse-nya sebagai JSON. Ketika output terdiri dari dua baris atau lebih yang masing-masing dapat di-parse sebagai JSON secara terpisah, dan tidak ada baris yang merupakan objek [output JSON](#json-output) yang mengatur suatu field, Claude Code memperlakukan seluruh output sebagai teks biasa. Ketika salah satu baris tersebut mengatur suatu field, seluruh output dianggap gagal di-parse, seperti dijelaskan di bawah.

855* **Dimulai dengan `{` tetapi tidak diakhiri dengan `}`**: Claude Code memperlakukannya sebagai teks biasa.835* **Diawali dengan `{` tetapi tidak diakhiri dengan `}`**: Claude Code memperlakukannya sebagai teks biasa.

856* **Dimulai dengan apa pun yang lain**: Claude Code memperlakukannya sebagai teks biasa, array JSON atau string JSON yang dikutip disertakan.836* **Diawali dengan hal lain**: Claude Code memperlakukannya sebagai teks biasa, termasuk array JSON atau string JSON yang diberi tanda kutip.

857 837 

858Untuk events yang menggunakan model keputusan standar, exit 0 dengan objek yang diurai yang gagal validasi skema adalah kesalahan non-blocking: tindakan dilanjutkan, dan transkrip menampilkan pemberitahuan `<hook name> hook error` dengan pesan validasi. Hal yang sama terjadi pada kode keluar apa pun selain 2, sementara [exit 2 masih memblokir](#exit-code-2).838Untuk event yang menggunakan model keputusan standar, exit 0 dengan objek yang berhasil di-parse tetapi gagal validasi skema adalah error non-blocking: tindakan dilanjutkan, dan transkrip menampilkan pemberitahuan `<hook name> hook error` dengan pesan validasi. Hal yang sama terjadi pada exit code apa pun selain 2, sementara [exit 2 tetap memblokir](#exit-code-2).

859 839 

860Untuk events yang menggunakan model keputusan standar, ketika Claude Code mencoba mengurai stdout Anda sebagai JSON dan tidak bisa, itu melaporkan kesalahan non-blocking pada setiap kode keluar selain 2. Transkrip menampilkan pemberitahuan `<hook name> hook error` dengan pesan parsing. Pada events yang menambahkan stdout teks biasa sebagai konteks, Claude Code tidak menambahkan teks. Sebelum v2.1.248, Claude Code memperlakukan stdout itu sebagai teks biasa.840Untuk event yang menggunakan model keputusan standar, ketika Claude Code mencoba mem-parse stdout Anda sebagai JSON dan gagal, Claude Code melaporkan error non-blocking pada setiap exit code selain 2. Transkrip menampilkan pemberitahuan `<hook name> hook error` dengan pesan parse. Pada event yang menambahkan stdout teks biasa sebagai konteks, Claude Code tidak menambahkan teks tersebut. Sebelum v2.1.248, Claude Code memperlakukan stdout tersebut sebagai teks biasa.

861 841 

862Stderr dari hook yang keluar 0 hanya masuk ke debug log, tidak pernah transkrip, dan Claude tidak pernah melihatnya. Untuk membacanya sendiri, aktifkan [debug logging](#debug-hooks). Untuk menampilkan peringatan ke Claude dari hook `PostToolUse` atau `PostToolUseFailure`, keluar 2 sebagai gantinya sehingga [Claude melihat stderr](#exit-code-2-behavior-per-event) meskipun tool sudah berjalan.842Stderr dari hook yang keluar dengan 0 hanya masuk ke log debug, tidak pernah ke transkrip, dan Claude tidak pernah melihatnya. Untuk membacanya sendiri, aktifkan [logging debug](#debug-hooks). Untuk menyampaikan peringatan kepada Claude dari hook `PostToolUse` atau `PostToolUseFailure`, gunakan exit 2 sehingga [Claude melihat stderr](#exit-code-2-behavior-per-event) meskipun tool sudah berjalan.

863 843 

864<h4 id="exit-code-2">844<h4 id="exit-code-2">

865 Exit code 2845 Exit code 2

866</h4>846</h4>

867 847 

868Exit 2 berarti kesalahan blocking. Pada [events yang dapat memblokir](#exit-code-2-behavior-per-event), exit 2 memblokir apakah atau tidak Anda mencetak JSON: bahkan JSON `permissionDecision` dari `"allow"` tidak dapat menimpanya. Claude Code masih membaca [JSON output](#json-output) yang valid di stdout. Pada `Elicitation` dan `ElicitationResult`, `hookSpecificOutput` hook exit-2 diabaikan.848Exit 2 berarti error blocking. Pada [event yang dapat memblokir](#exit-code-2-behavior-per-event), exit 2 memblokir terlepas dari apakah Anda mencetak JSON atau tidak: bahkan `permissionDecision` JSON bernilai `"allow"` tidak dapat menimpanya. Claude Code tetap membaca [output JSON](#json-output) yang valid di stdout. Pada `Elicitation` dan `ElicitationResult`, `hookSpecificOutput` dari hook yang keluar dengan exit 2 diabaikan.

869 849 

870Pesan blocking adalah alasan dari keputusan blocking JSON Anda ketika membuat satu, dan teks stderr Anda sebaliknya. Apa yang dilakukan blokir bervariasi menurut event: `PreToolUse` memblokir pemanggilan tool, `UserPromptSubmit` menolak prompt, dan sebagainya. [Exit code 2 behavior per event](#exit-code-2-behavior-per-event) mencantumkan efek untuk setiap event, dan setiap bagian event mengatakan ke mana pesan pergi.850Pesan pemblokiran adalah alasan dari keputusan pemblokiran dalam JSON Anda jika ada, dan teks stderr Anda jika tidak. Apa yang dilakukan pemblokiran bervariasi menurut event: `PreToolUse` memblokir panggilan tool, `UserPromptSubmit` menolak prompt, dan seterusnya. [Perilaku exit code 2 per event](#exit-code-2-behavior-per-event) mencantumkan efek untuk setiap event, dan bagian setiap event menjelaskan ke mana pesan tersebut dikirim.

871 851 

872Hook yang keluar 2 sambil mencetak JSON yang gagal validasi skema [JSON output](#json-output) masih memblokir: Claude Code menggunakan stderr sebagai alasan blocking dan mencatat kegagalan validasi dalam debug log. Sebelum v2.1.214, Claude Code memperlakukan kombinasi itu sebagai kesalahan non-blocking dan tindakan dilanjutkan.852Hook yang keluar dengan 2 sambil mencetak JSON yang gagal validasi skema [output JSON](#json-output) tetap memblokir: Claude Code menggunakan stderr sebagai alasan pemblokiran dan mencatat kegagalan validasi di log debug. Sebelum v2.1.214, Claude Code memperlakukan kombinasi tersebut sebagai error non-blocking dan tindakan dilanjutkan.

873 853 

874Skrip ini memblokir perintah `rm` dengan keluar 2 dan meninggalkan setiap perintah lain untuk aliran izin normal:854Skrip ini memblokir perintah `rm` dengan keluar menggunakan 2 dan menyerahkan setiap perintah lain ke alur izin normal:

875 855 

876```bash theme={null}856```bash theme={null}

877#!/bin/bash857#!/bin/bash

878# Membaca input JSON dari stdin, memeriksa perintah858# Reads JSON input from stdin, checks the command

879input=$(cat)859input=$(cat)

880command=$(jq -r '.tool_input.command' <<<"$input")860command=$(jq -r '.tool_input.command' <<<"$input")

881 861 


888```868```

889 869 

890<h4 id="other-exit-codes">870<h4 id="other-exit-codes">

891 Kode keluar lainnya871 Exit code lainnya

892</h4>872</h4>

893 873 

894Kode keluar apa pun yang lain tidak memblokir sendiri untuk sebagian besar hook events. Apa yang terjadi tergantung pada stdout Anda:874Exit code lainnya tidak memblokir dengan sendirinya untuk sebagian besar event hook. Apa yang terjadi bergantung pada stdout Anda:

895 875 

896* Dengan objek yang diurai yang lulus validasi skema, untuk events yang menggunakan model keputusan standar, Claude Code mengabaikan kode keluar dan JSON saja memutuskan hasil:876* Dengan objek yang berhasil di-parse dan lolos validasi skema, untuk event yang menggunakan model keputusan standar, Claude Code mengabaikan exit code dan hanya JSON yang menentukan hasilnya:

897 * Setiap bidang yang didukung event dihormati, termasuk `permissionDecision`, `additionalContext`, `updatedInput`, dan `systemMessage`, dan hook tidak dilaporkan sebagai kesalahan.877 * Setiap field yang didukung event dihormati, termasuk `permissionDecision`, `additionalContext`, `updatedInput`, dan `systemMessage`, dan hook tidak dilaporkan sebagai error.

898 * [Decision control](#decision-control) mencantumkan bidang keputusan per event; bidang universal seperti `systemMessage` mengikuti tabel [JSON output](#json-output).878 * [Kontrol keputusan](#decision-control) mencantumkan field keputusan per event; field universal seperti `systemMessage` mengikuti tabel [output JSON](#json-output).

899* Dengan objek yang diurai yang gagal validasi skema, untuk events yang menggunakan model keputusan standar, itu adalah kesalahan non-blocking yang sama seperti [pada exit 0](#exit-code-0): tindakan dilanjutkan, dan pemberitahuan `<hook name> hook error` membawa pesan validasi.879* Dengan objek yang berhasil di-parse tetapi gagal validasi skema, untuk event yang menggunakan model keputusan standar, hasilnya adalah error non-blocking yang sama seperti [pada exit 0](#exit-code-0): tindakan dilanjutkan, dan pemberitahuan `<hook name> hook error` memuat pesan validasi.

900* Dengan stdout yang Claude Code [coba parsing sebagai JSON](#exit-code-0) dan tidak bisa, Claude Code melaporkan kesalahan non-blocking yang sama seperti pada exit 0 untuk events yang menggunakan model keputusan standar. Tindakan dilanjutkan, dan pemberitahuan membawa pesan parsing.880* Dengan stdout yang [dicoba di-parse sebagai JSON](#exit-code-0) oleh Claude Code tetapi gagal, Claude Code melaporkan error non-blocking yang sama seperti pada exit 0 untuk event yang menggunakan model keputusan standar. Tindakan dilanjutkan, dan pemberitahuan memuat pesan parse.

901* Dengan stdout yang Claude Code [perlakukan sebagai teks biasa](#exit-code-0), atau dengan stdout kosong, itu adalah kesalahan non-blocking untuk sebagian besar hook events: tindakan dilanjutkan, dan transkrip menampilkan pemberitahuan `<hook name> hook error` diikuti oleh baris pertama stderr, diawali dengan `Failed with non-blocking status code:`. Untuk menangkap stderr lengkap, aktifkan [debug logging](#debug-hooks).881* Dengan stdout yang [diperlakukan sebagai teks biasa](#exit-code-0) oleh Claude Code, atau dengan stdout kosong, hasilnya adalah error non-blocking untuk sebagian besar event hook: tindakan dilanjutkan, dan transkrip menampilkan pemberitahuan `<hook name> hook error` diikuti baris pertama stderr, dengan awalan `Failed with non-blocking status code:`. Untuk menangkap stderr lengkap, aktifkan [logging debug](#debug-hooks).

902 882 

903Events di luar model keputusan standar menyimpan baris mereka sendiri dalam [tabel per-event](#exit-code-2-behavior-per-event): `WorktreeCreate` gagal membuat pada kode keluar non-zero apa pun tidak peduli apa yang dikatakan JSON Anda, dan events yang membuang output hook sepenuhnya, seperti `StopFailure`, mengabaikan JSON Anda pada setiap kode keluar, terlepas dari bidang efek samping seperti `terminalSequence`, yang masih dijalankan.883Event di luar model keputusan standar memiliki barisnya sendiri dalam [tabel per event](#exit-code-2-behavior-per-event): `WorktreeCreate` menggagalkan pembuatan pada exit bukan nol apa pun, apa pun isi JSON Anda, dan event yang membuang output hook sepenuhnya, seperti `StopFailure`, mengabaikan JSON Anda pada setiap exit code, kecuali field efek samping seperti `terminalSequence`, yang tetap dijalankan.

904 884 

905Hook yang tidak dapat dimulai mendarat di bucket non-blocking yang sama. Ketika path skrip tidak ada atau tidak dapat dieksekusi, shell keluar dengan kode seperti 127 dan Anda melihat pemberitahuan yang sama dengan pesan interpreter, misalnya `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`. Untuk sebagian besar hook events, tindakan dilanjutkan. Ketika Anda menyiapkan policy hook, perhatikan pemberitahuan ini pada run pertamanya: path yang salah ketik dalam `settings.json` meninggalkan gate yang diam-diam dinonaktifkan.885Hook yang tidak dapat dimulai masuk ke kategori non-blocking yang sama. Ketika path skrip tidak ada atau tidak dapat dieksekusi, shell keluar dengan kode seperti 127 dan Anda melihat pemberitahuan yang sama dengan pesan interpreter, misalnya `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`. Untuk sebagian besar event hook, tindakan dilanjutkan. Saat Anda menyiapkan hook kebijakan, perhatikan pemberitahuan ini pada eksekusi pertamanya: path yang salah ketik di `settings.json` membuat gerbang tersebut nonaktif tanpa pemberitahuan.

906 886 

907<Warning>887<Warning>

908 Untuk sebagian besar hook events, exit code 2 adalah satu-satunya kode keluar yang memblokir melalui kode saja. Tanpa JSON yang valid di stdout, Claude Code memperlakukan exit code 1 sebagai kesalahan non-blocking dan melanjutkan dengan tindakan, meskipun 1 adalah kode kegagalan Unix konvensional. Jika hook Anda dimaksudkan untuk menegakkan kebijakan, gunakan `exit 2`. Events worktree berbeda: kode keluar non-zero apa pun dari `WorktreeCreate` membatalkan pembuatan worktree, dan kode keluar non-zero apa pun dari `WorktreeRemove` membuat penghapusan worktree gagal jika direktori masih ada setelahnya.888 Untuk sebagian besar event hook, exit code 2 adalah satu-satunya exit code yang memblokir hanya melalui kode tersebut. Tanpa JSON yang valid di stdout, Claude Code memperlakukan exit code 1 sebagai error non-blocking dan melanjutkan tindakan, meskipun 1 adalah kode kegagalan Unix yang konvensional. Jika hook Anda dimaksudkan untuk menegakkan kebijakan, gunakan `exit 2`. Event worktree berbeda: exit code bukan nol apa pun dari `WorktreeCreate` membatalkan pembuatan worktree, dan exit code bukan nol apa pun dari `WorktreeRemove` membuat penghapusan worktree gagal jika direktori masih ada setelahnya.

909</Warning>889</Warning>

910 890 

911<h4 id="timeouts">891<h4 id="timeouts">

912 Timeouts892 Timeout

913</h4>893</h4>

914 894 

915Terlepas dari command hook yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), Claude Code membatalkan hook `command`, `http`, atau `mcp_tool` yang mencapai [`timeout`](#common-fields)-nya, membuang output hook, jadi pada sebagian besar events hook yang timed-out tidak menghasilkan keputusan.895Selain hook perintah yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), Claude Code membatalkan hook `command`, `http`, atau `mcp_tool` yang mencapai [`timeout`](#common-fields)-nya, membuang output hook, sehingga pada sebagian besar event hook yang mengalami timeout tidak memberikan keputusan.

916 896 

917Pada [`PreModelSwitch`](#premodelswitch), hook yang dibatalkan pada timeout-nya memblokir switch model. Pada `PreToolUse`, dua keluarga hook berbeda:897Pada [`PreModelSwitch`](#premodelswitch), hook yang dibatalkan karena timeout memblokir pergantian model. Pada `PreToolUse`, kedua keluarga hook berbeda:

918 898 

919* Hook `command`, `http`, atau `mcp_tool` yang timed-out tidak memblokir pemanggilan tool. Panggilan berlanjut melalui [aliran izin](/docs/id/permissions) normal, jadi jangan mengandalkan hook yang terhenti untuk bertindak sebagai gate.899* Hook `command`, `http`, atau `mcp_tool` yang mengalami timeout tidak memblokir panggilan tool. Panggilan berlanjut melalui [alur izin](/docs/id/permissions) normal, jadi jangan mengandalkan hook yang macet untuk berfungsi sebagai gerbang.

920* Hook callback [Agent SDK](/docs/id/agent-sdk/hooks) yang melampaui timeout-nya [memblokir pemanggilan tool](#pretooluse).900* [Callback hook Agent SDK](/docs/id/agent-sdk/hooks) yang melebihi timeout-nya [memblokir panggilan tool](#pretooluse).

921 901 

922<h4 id="exit-code-2-behavior-per-event">902<h4 id="exit-code-2-behavior-per-event">

923 Exit code 2 behavior per event903 Perilaku exit code 2 per event

924</h4>904</h4>

925 905 

926Exit code 2 adalah cara hook menandakan "berhenti, jangan lakukan ini." Efeknya tergantung pada event, karena beberapa event mewakili tindakan yang dapat diblokir (seperti pemanggilan tool yang belum terjadi) dan yang lain mewakili hal-hal yang sudah terjadi atau tidak dapat dicegah.906Exit code 2 adalah cara hook memberi sinyal "berhenti, jangan lakukan ini." Efeknya bergantung pada event, karena beberapa event mewakili tindakan yang dapat diblokir (seperti panggilan tool yang belum terjadi) dan yang lain mewakili hal-hal yang sudah terjadi atau tidak dapat dicegah.

927 907 

928| Hook event | Dapat diblokir? | Apa yang terjadi pada exit 2 |908| Event hook | Dapat memblokir? | Apa yang terjadi pada exit 2 |

929| :- | :- | :- |909| :- | :- | :- |

930| `PreToolUse` | Ya | Memblokir pemanggilan tool |910| `PreToolUse` | Ya | Memblokir panggilan tool |

931| `PermissionRequest` | Tidak | Exit code 2 tidak dihormati untuk event ini dan aliran izin berlanjut tidak berubah. Tolak melalui objek [`decision`](#permissionrequest-decision-control) sebagai gantinya |911| `PermissionRequest` | Tidak | Exit code 2 tidak dihormati untuk event ini dan alur izin berlanjut tanpa perubahan. Tolak melalui [objek `decision`](#permissionrequest-decision-control) sebagai gantinya |

932| `UserPromptSubmit` | Ya | Memblokir pemrosesan prompt dan menghapus prompt |912| `UserPromptSubmit` | Ya | Memblokir prompt, sehingga prompt tidak pernah sampai ke Claude. Lihat [Apa yang ditinggalkan prompt yang diblokir](#what-a-blocked-prompt-leaves-behind) |

933| `UserPromptExpansion` | Ya | Memblokir ekspansi |913| `UserPromptExpansion` | Ya | Memblokir ekspansi |

934| `Stop` | Ya | Mencegah Claude berhenti, melanjutkan percakapan |914| `Stop` | Ya | Mencegah Claude berhenti, melanjutkan percakapan |

935| `SubagentStop` | Ya | Mencegah subagent berhenti |915| `SubagentStop` | Ya | Mencegah subagent berhenti |

936| `TeammateIdle` | Ya | Mencegah teammate menjadi idle, jadi terus bekerja |916| `TeammateIdle` | Ya | Mencegah rekan tim menjadi idle, sehingga tetap bekerja |

937| `TaskCreated` | Ya | Membatalkan pembuatan tugas |917| `TaskCreated` | Ya | Membatalkan pembuatan tugas |

938| `TaskCompleted` | Ya | Mencegah tugas ditandai sebagai selesai |918| `TaskCompleted` | Ya | Mencegah tugas ditandai sebagai selesai |

939| `ConfigChange` | Ya | Memblokir perubahan konfigurasi dari berlaku (kecuali `policy_settings`) |919| `ConfigChange` | Ya | Memblokir perubahan konfigurasi agar tidak berlaku (kecuali `policy_settings`) |

940| `StopFailure` | Tidak | Output dan kode keluar diabaikan, kecuali `terminalSequence` |920| `StopFailure` | Tidak | Output dan exit code diabaikan, kecuali `terminalSequence` |

941| `PostToolUse` | Tidak | Menampilkan stderr ke Claude; tool sudah dijalankan |921| `PostToolUse` | Tidak | Menampilkan stderr kepada Claude; tool sudah berjalan |

942| `PostToolUseFailure` | Tidak | Menampilkan stderr ke Claude; tool sudah gagal |922| `PostToolUseFailure` | Tidak | Menampilkan stderr kepada Claude; tool sudah gagal |

943| `PostToolBatch` | Ya | Menghentikan loop agentic sebelum pemanggilan model berikutnya |923| `PostToolBatch` | Ya | Menghentikan agentic loop sebelum panggilan model berikutnya |

944| `PermissionDenied` | Tidak | Kode keluar dan stderr diabaikan karena penolakan sudah terjadi. Gunakan JSON `hookSpecificOutput.retry: true` untuk memberitahu model itu dapat mencoba lagi; Claude Code mengabaikan `retry: true` untuk [penolakan tanpa-verdict](#permissiondenied-decision-control) |924| `PermissionDenied` | Tidak | Exit code dan stderr diabaikan karena penolakan sudah terjadi. Gunakan JSON `hookSpecificOutput.retry: true` untuk memberi tahu model bahwa model boleh mencoba ulang; Claude Code mengabaikan `retry: true` untuk [penolakan tanpa putusan](#permissiondenied-decision-control) |

945| `Notification` | Tidak | Kode keluar dan stderr diabaikan |925| `Notification` | Tidak | Exit code dan stderr diabaikan |

946| `SubagentStart` | Tidak | Menampilkan stderr ke pengguna saja |926| `SubagentStart` | Tidak | Menampilkan stderr hanya kepada pengguna |

947| `SessionStart` | Tidak | Menampilkan stderr ke pengguna saja |927| `SessionStart` | Tidak | Menampilkan stderr hanya kepada pengguna |

948| `Setup` | Tidak | Kode keluar dan stderr diabaikan |928| `Setup` | Tidak | Exit code dan stderr diabaikan |

949| `SessionEnd` | Tidak | Menampilkan stderr ke pengguna saja |929| `SessionEnd` | Tidak | Menampilkan stderr hanya kepada pengguna |

950| `CwdChanged` | Tidak | Menampilkan stderr ke pengguna saja |930| `CwdChanged` | Tidak | Menampilkan stderr hanya kepada pengguna |

951| `DirectoryAdded` | Tidak | Stderr masuk ke debug log; direktori sudah ditambahkan |931| `DirectoryAdded` | Tidak | Stderr masuk ke log debug; direktori sudah ditambahkan |

952| `FileChanged` | Tidak | Menampilkan stderr ke pengguna saja |932| `FileChanged` | Tidak | Menampilkan stderr hanya kepada pengguna |

953| `PreCompact` | Ya | Memblokir compaction |933| `PreCompact` | Ya | Memblokir compaction |

954| `PostCompact` | Tidak | Menampilkan stderr ke pengguna saja |934| `PostCompact` | Tidak | Menampilkan stderr hanya kepada pengguna |

955| `PreModelSwitch` | Ya | Memblokir switch model dan menampilkan stderr ke pengguna |935| `PreModelSwitch` | Ya | Memblokir pergantian model dan menampilkan stderr kepada pengguna |

956| `PostModelSwitch` | Tidak | Menampilkan stderr ke pengguna saja; model sudah beralih |936| `PostModelSwitch` | Tidak | Menampilkan stderr hanya kepada pengguna; model sudah berganti |

957| `Elicitation` | Ya | Menolak elicitation |937| `Elicitation` | Ya | Menolak elicitation |

958| `ElicitationResult` | Ya | Memblokir respons (tindakan menjadi decline) |938| `ElicitationResult` | Ya | Memblokir respons (tindakan menjadi decline) |

959| `WorktreeCreate` | Ya | Kode keluar non-zero apa pun menyebabkan pembuatan worktree gagal |939| `WorktreeCreate` | Ya | Exit code bukan nol apa pun menyebabkan pembuatan worktree gagal |

960| `WorktreeRemove` | Ya | Kode keluar non-zero apa pun menyebabkan penghapusan worktree gagal jika direktori masih ada setelahnya. Lihat [WorktreeRemove](#worktreeremove) untuk apa yang terjadi pada direktori |940| `WorktreeRemove` | Ya | Exit code bukan nol apa pun menyebabkan penghapusan worktree gagal jika direktori masih ada setelahnya. Lihat [WorktreeRemove](#worktreeremove) untuk apa yang terjadi pada direktori |

961| `InstructionsLoaded` | Tidak | Kode keluar diabaikan |941| `InstructionsLoaded` | Tidak | Exit code diabaikan |

962| `MessageDisplay` | Tidak | Teks asli ditampilkan |942| `MessageDisplay` | Tidak | Teks asli ditampilkan |

963 943 

964Untuk `SessionStart`, `SubagentStart`, dan `PostModelSwitch`, Claude Code merender stderr exit code 2 dalam transkrip sebagai pemberitahuan `<hook name> hook error`, dengan cara yang sama seperti [kesalahan non-blocking](#exit-code-output). Claude tidak melihatnya, dan sesi atau subagent berlanjut. Untuk `SubagentStart`, pemberitahuan muncul dalam transkrip subagent itu sendiri, bukan dalam percakapan induk.944Untuk `SessionStart`, `SubagentStart`, dan `PostModelSwitch`, Claude Code menampilkan stderr exit code 2 di transkrip sebagai pemberitahuan `<hook name> hook error`, dengan cara yang sama seperti menampilkan [error non-blocking](#exit-code-output). Claude tidak melihatnya, dan sesi atau subagent berlanjut. Untuk `SubagentStart`, pemberitahuan muncul di transkrip subagent itu sendiri, bukan di percakapan induk.

965 945 

966<h3 id="http-response-handling">946<h3 id="http-response-handling">

967 Penanganan respons HTTP947 Penanganan respons HTTP

968</h3>948</h3>

969 949 

970HTTP hooks menggunakan kode status HTTP dan badan respons sebagai pengganti kode keluar dan stdout. Hasil di bawah berlaku untuk sebagian besar events; event dengan kontrak kegagalan sendiri dalam [tabel per-event](#exit-code-2-behavior-per-event), seperti `WorktreeCreate`, menerapkan kontrak itu ke hook HTTP yang gagal juga:950Hook HTTP menggunakan kode status HTTP dan body respons alih-alih exit code dan stdout. Hasil di bawah ini berlaku untuk sebagian besar event; event dengan kontrak kegagalannya sendiri dalam [tabel per event](#exit-code-2-behavior-per-event), seperti `WorktreeCreate`, juga menerapkan kontrak tersebut pada hook HTTP yang gagal:

971 951 

972* **2xx dengan badan kosong**: sukses, setara dengan kode keluar 0 tanpa output952* **2xx dengan body kosong**: berhasil, setara dengan exit code 0 tanpa output

973* **2xx dengan badan objek JSON**: diurai menggunakan skema [JSON output](#json-output) yang sama seperti command hooks. Badan yang gagal validasi skema adalah kesalahan non-blocking953* **2xx dengan body objek JSON**: di-parse menggunakan skema [output JSON](#json-output) yang sama seperti hook perintah. Body yang gagal validasi skema adalah error non-blocking

974* **2xx dengan badan apa pun yang lain, seperti teks biasa**: kesalahan non-blocking, ditangani sama seperti status non-2xx. Claude Code tidak menambahkan teks ke konteks Claude954* **2xx dengan body lain, seperti teks biasa**: error non-blocking, ditangani sama seperti status non-2xx. Claude Code tidak menambahkan teks tersebut ke konteks Claude

975* **Status non-2xx**: kesalahan non-blocking, eksekusi berlanjut955* **Status non-2xx**: error non-blocking, eksekusi berlanjut

976* **Kegagalan koneksi**: kesalahan non-blocking, eksekusi berlanjut956* **Kegagalan koneksi**: error non-blocking, eksekusi berlanjut

977* **Timeout**: hook dibatalkan, seperti dijelaskan di bawah [Timeouts](#timeouts)957* **Timeout**: hook dibatalkan, seperti dijelaskan di bagian [Timeout](#timeouts)

978 958 

979Tidak seperti command hooks, HTTP hooks tidak dapat menandakan kesalahan blocking hanya melalui kode status. Untuk memblokir pemanggilan tool atau menolak izin, kembalikan respons 2xx dengan badan JSON yang berisi bidang keputusan yang sesuai.959Tidak seperti hook perintah, hook HTTP tidak dapat memberi sinyal error blocking hanya melalui kode status. Untuk memblokir panggilan tool atau menolak izin, kembalikan respons 2xx dengan body JSON yang berisi field keputusan yang sesuai.

980 960 

981<h3 id="json-output">961<h3 id="json-output">

982 Output JSON962 Output JSON

983</h3>963</h3>

984 964 

985Kode keluar hanya membiarkan Anda memblokir atau tetap diam, tetapi output JSON memberikan kontrol yang lebih halus. Alih-alih keluar dengan kode 2 untuk memblokir, keluar 0 dan cetak objek JSON ke stdout. Claude Code membaca bidang tertentu dari JSON itu untuk mengontrol perilaku, termasuk [decision control](#decision-control) untuk memblokir, mengizinkan, atau meningkatkan ke pengguna.965Exit code hanya memungkinkan Anda memblokir atau tetap diam, tetapi output JSON memberi Anda kontrol yang lebih terperinci. Alih-alih keluar dengan kode 2 untuk memblokir, keluar dengan 0 dan cetak objek JSON ke stdout. Claude Code membaca field tertentu dari JSON tersebut untuk mengontrol perilaku, termasuk [kontrol keputusan](#decision-control) untuk memblokir, mengizinkan, atau mengeskalasi ke pengguna.

986 966 

987<Note>967<Note>

988 Pilih satu pendekatan per hook: gunakan kode keluar saja untuk signaling, atau keluar 0 dan cetak JSON untuk kontrol terstruktur. Jika Anda mencampurnya, exit 2 mempertahankan [efek blocking](#exit-code-2-behavior-per-event)-nya, dan Claude Code masih membaca bidang JSON, dengan satu pengecualian elicitation yang dicatat di bawah [Exit code 2](#exit-code-2).968 Pilih satu pendekatan per hook: gunakan exit code saja untuk memberi sinyal, atau keluar dengan 0 dan cetak JSON untuk kontrol terstruktur. Jika Anda mencampurnya, exit 2 tetap mempertahankan [efek pemblokirannya](#exit-code-2-behavior-per-event), dan Claude Code tetap membaca field JSON, dengan satu pengecualian elicitation yang dicatat di bagian [Exit code 2](#exit-code-2).

989</Note>969</Note>

990 970 

991Stdout hook Anda harus berisi hanya objek JSON. Jika profil shell Anda mencetak teks saat startup, itu dapat mengganggu parsing JSON. Lihat [Hook JSON has no effect](/docs/id/hooks-guide#hook-json-has-no-effect) dalam panduan troubleshooting.971Stdout hook Anda hanya boleh berisi objek JSON. Jika profil shell Anda mencetak teks saat startup, hal itu dapat mengganggu parsing JSON. Lihat [JSON hook tidak berpengaruh](/docs/id/hooks-guide#hook-json-has-no-effect) dalam panduan pemecahan masalah.

992 972 

993String `additionalContext`, `systemMessage`, dan `initialUserMessage` hook, dan stdout biasanya, dibatasi pada 10.000 karakter:973String `additionalContext`, `systemMessage`, dan `initialUserMessage` dari hook, serta stdout biasanya, dibatasi hingga 10.000 karakter:

994 974 

995* **Scope**: Claude Code mengukur setiap string sendiri, bahkan ketika beberapa hooks berjalan untuk event yang sama. Untuk output JSON, setiap bidang diukur secara terpisah; stdout biasa diukur secara keseluruhan.975* **Cakupan**: Claude Code mengukur setiap string secara terpisah, bahkan ketika beberapa hook berjalan untuk event yang sama. Untuk output JSON, setiap field diukur secara terpisah; stdout biasa diukur secara keseluruhan.

996* **Melebihi batas**: Claude Code menyimpan output ke file di direktori sesi dan menggantinya dengan path file dan pratinjau hingga 2.000 karakter pertama. Hasil Bash yang besar yang valid ditangani dengan cara yang sama, dijelaskan di bawah [Output limits](/docs/id/tools-reference#output-limits). Tidak seperti batas Bash itu, cap ini tidak memiliki pengaturan atau variabel lingkungan untuk menaikkannya.976* **Melebihi batas**: Claude Code menyimpan output ke file di direktori sesi dan menggantinya dengan path file serta pratinjau hingga 2.000 karakter pertama. Hasil Bash valid yang besar ditangani dengan cara yang sama, seperti dijelaskan di bagian [Batas output](/docs/id/tools-reference#output-limits). Tidak seperti batas atas Bash tersebut, batas ini tidak memiliki pengaturan atau environment variable untuk menaikkannya.

997* **Membaca file**: Claude Code tidak meminta Claude untuk membaca file, jadi simpan apa pun yang harus selalu dilihat Claude dalam cap.977* **Membaca file**: Claude Code tidak meminta Claude untuk membaca file tersebut, jadi pastikan apa pun yang harus selalu dilihat Claude tetap berada dalam batas.

998 978 

999Objek JSON mendukung tiga jenis bidang:979Objek JSON mendukung tiga jenis field:

1000 980 

1001* **Bidang universal** seperti `continue` tercantum dalam tabel di bawah. Setiap event menerimanya, tetapi beberapa events membuangnya atau mengirimkan `systemMessage` ke tempat lain selain transkrip. Setiap bagian event mengatakan demikian. `terminalSequence` bekerja pada events itu juga, dengan pengecualian yang tercantum di bawah [Emit terminal notifications](#emit-terminal-notifications).981* **Field universal** seperti `continue` tercantum dalam tabel di bawah. Setiap event menerimanya, tetapi beberapa event membuangnya atau mengirimkan `systemMessage` ke tempat selain transkrip. Bagian setiap event menyebutkannya. `terminalSequence` juga berfungsi pada event tersebut, dengan pengecualian yang tercantum di bagian [Memancarkan notifikasi terminal](#emit-terminal-notifications).

1002* **Top-level `decision` dan `reason`** digunakan oleh beberapa events untuk memblokir atau memberikan umpan balik.982* **`decision` dan `reason` tingkat atas** digunakan oleh beberapa event untuk memblokir atau memberikan umpan balik.

1003* **`hookSpecificOutput`** adalah objek bersarang untuk events yang memerlukan kontrol yang lebih kaya. Ini memerlukan bidang `hookEventName` yang diatur ke nama event.983* **`hookSpecificOutput`** adalah objek bersarang untuk event yang memerlukan kontrol lebih kaya. Objek ini memerlukan field `hookEventName` yang diatur ke nama event.

1004 984 

1005| Bidang | Default | Deskripsi |985| Field | Default | Deskripsi |

1006| :- | :- | :- |986| :- | :- | :- |

1007| `continue` | `true` | Jika `false`, Claude berhenti memproses sepenuhnya setelah hook dijalankan. Mengambil alih bidang keputusan spesifik event apa pun |987| `continue` | `true` | Jika `false`, Claude berhenti memproses sepenuhnya setelah hook berjalan. Diutamakan daripada field keputusan khusus event mana pun |

1008| `stopReason` | tidak ada | Pesan ditampilkan ke pengguna saat `continue` adalah `false`. Itu tetap dalam percakapan, jadi Claude melihatnya jika percakapan berlanjut |988| `stopReason` | tidak ada | Pesan yang ditampilkan kepada pengguna ketika `continue` bernilai `false`. Pesan ini tetap berada di percakapan, sehingga Claude melihatnya jika percakapan berlanjut |

1009| `suppressOutput` | `false` | Tidak memiliki efek: Claude Code menerima bidang tetapi tidak bertindak. Stdout hook yang berhasil tidak pernah ditampilkan dalam transkrip dan dicatat dalam debug log |989| `suppressOutput` | `false` | Tidak berpengaruh: Claude Code menerima field ini tetapi tidak menindaklanjutinya. Stdout hook yang berhasil tidak pernah ditampilkan di transkrip dan dicatat di log debug |

1010| `systemMessage` | tidak ada | Pesan peringatan ditampilkan ke pengguna. Dalam output [Agent SDK](/docs/id/agent-sdk/overview) dan [`--output-format stream-json`](/docs/id/headless), itu dapat tiba sebagai [`SDKInformationalMessage`](/docs/id/agent-sdk/typescript#sdkinformationalmessage) |990| `systemMessage` | tidak ada | Pesan peringatan yang ditampilkan kepada pengguna. Dalam output [Agent SDK](/docs/id/agent-sdk/overview) dan [`--output-format stream-json`](/docs/id/headless), pesan ini dapat tiba sebagai [`SDKInformationalMessage`](/docs/id/agent-sdk/typescript#sdkinformationalmessage) |

1011| `terminalSequence` | tidak ada | Urutan escape terminal untuk Claude Code yang akan dipancarkan atas nama Anda, seperti notifikasi desktop, judul jendela, atau bel. Dibatasi pada OSC `0`/`1`/`2`/`9`/`99`/`777` dan BEL. Jika nilai berisi apa pun di luar daftar putih, bidang diabaikan. Gunakan ini alih-alih menulis ke `/dev/tty`, yang tidak tersedia untuk hooks |991| `terminalSequence` | tidak ada | Escape sequence terminal yang akan dipancarkan Claude Code atas nama Anda, seperti notifikasi desktop, judul jendela, atau bel. Dibatasi pada OSC `0`/`1`/`2`/`9`/`99`/`777` dan BEL. Jika nilai berisi apa pun di luar allowlist, field diabaikan. Gunakan ini alih-alih menulis ke `/dev/tty`, yang tidak tersedia untuk hook |

1012 992 

1013Untuk menghentikan Claude sepenuhnya:993Untuk menghentikan Claude sepenuhnya:

1014 994 


1016{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }996{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

1017```997```

1018 998 

1019Untuk hooks `PreToolUse` dan `PostToolUse`, stop berlaku bahkan ketika pemanggilan tool gagal atau selesai saat Claude masih streaming respons.999Untuk hook `PreToolUse` dan `PostToolUse`, penghentian berlaku bahkan ketika panggilan tool gagal atau selesai saat Claude masih melakukan streaming respons.

1020 1000 

1021<h4 id="emit-terminal-notifications">1001<h4 id="emit-terminal-notifications">

1022 Emit terminal notifications1002 Memancarkan notifikasi terminal

1023</h4>1003</h4>

1024 1004 

1025Hooks berjalan tanpa terminal pengontrol, jadi menulis urutan escape langsung ke `/dev/tty` gagal. Sebagai gantinya, kembalikan urutan escape dalam bidang `terminalSequence` dan Claude Code memancarkannya untuk Anda melalui jalur penulisan terminal miliknya sendiri. Ini bebas race, bekerja di dalam tmux dan GNU screen, dan bekerja di Windows di mana tidak ada `/dev/tty`.1005Hook berjalan tanpa terminal pengendali, sehingga menulis escape sequence langsung ke `/dev/tty` akan gagal. Sebagai gantinya, kembalikan escape sequence di field `terminalSequence` dan Claude Code memancarkannya untuk Anda melalui jalur penulisan terminalnya sendiri. Cara ini bebas race condition, berfungsi di dalam tmux dan GNU screen, dan berfungsi di Windows yang tidak memiliki `/dev/tty`.

1026 1006 

1027Bidang menerima string dari satu atau lebih urutan escape yang diizinkan:1007Field ini menerima string berisi satu atau lebih escape sequence yang ada di allowlist:

1028 1008 

1029* OSC `0`, `1`, `2`: judul jendela dan ikon1009* OSC `0`, `1`, `2`: judul jendela dan ikon

1030* OSC `9`: notifikasi iTerm2, ConEmu, Windows Terminal, dan WezTerm, termasuk `9;4` kemajuan taskbar1010* OSC `9`: notifikasi iTerm2, ConEmu, Windows Terminal, dan WezTerm, termasuk progres taskbar `9;4`

1031* OSC `99`: notifikasi Kitty1011* OSC `99`: notifikasi Kitty

1032* OSC `777`: notifikasi urxvt, Ghostty, dan Warp1012* OSC `777`: notifikasi urxvt, Ghostty, dan Warp

1033* BEL telanjang1013* BEL tunggal

1034 1014 

1035Urutan dapat diakhiri dengan BEL atau dengan ST. Apa pun di luar daftar putih, termasuk urutan kursor dan warna CSI, urutan palet OSC, hyperlink OSC 8, penulisan clipboard OSC 52, dan OSC 1337, ditolak dan bidang diabaikan.1015Sequence dapat diakhiri dengan BEL atau dengan ST. Apa pun di luar allowlist, termasuk sequence kursor dan warna CSI, sequence palet OSC, hyperlink OSC 8, penulisan clipboard OSC 52, dan OSC 1337, ditolak dan field diabaikan.

1036 1016 

1037Claude Code menulis urutan itu sendiri ketika memproses output hook Anda, jadi bidang bekerja pada events yang membuang `systemMessage` dan `continue`, seperti `Notification` dan `StopFailure`. Itu memiliki dua batas:1017Claude Code menulis sequence tersebut sendiri ketika memproses output hook Anda, sehingga field ini berfungsi pada event yang membuang `systemMessage` dan `continue`, seperti `Notification` dan `StopFailure`. Field ini memiliki dua batasan:

1038 1018 

1039* Claude Code menulis urutan hanya dalam sesi interaktif, dan hanya saat antarmukanya berada di layar. Dalam mode non-interaktif dengan flag `-p` dan dalam Agent SDK, itu mengabaikan bidang.1019* Claude Code menulis sequence hanya dalam sesi interaktif, dan hanya selama antarmukanya ada di layar. Dalam mode non-interaktif dengan flag `-p` dan di Agent SDK, Claude Code mengabaikan field ini.

1040* Hook `WorktreeCreate` command tidak dapat mengembalikan JSON, karena Claude Code membaca stdout-nya sebagai path worktree. Hook `WorktreeCreate` HTTP mengembalikan JSON dan dapat menyertakan bidang.1020* Hook perintah `WorktreeCreate` tidak dapat mengembalikan JSON, karena Claude Code membaca stdout-nya sebagai path worktree. Hook HTTP `WorktreeCreate` mengembalikan JSON dan dapat menyertakan field ini.

1041 1021 

1042Contoh di bawah menjalankan notifikasi desktop dari hook `Notification`. Urutan escape dibangun dengan `printf` octal escapes sehingga byte kontrol tidak pernah muncul di baris perintah shell, dan `jq -n --arg` membangun output JSON sehingga tanda kutip, backslash, dan newline dalam pesan notifikasi diloloskan dengan benar:1022Contoh di bawah memicu notifikasi desktop dari hook `Notification`. Escape sequence dibuat dengan escape oktal `printf` sehingga byte kontrol tidak pernah muncul di baris perintah shell, dan `jq -n --arg` membuat output JSON sehingga tanda kutip, backslash, dan baris baru dalam pesan notifikasi di-escape dengan benar:

1043 1023 

1044```bash theme={null}1024```bash theme={null}

1045#!/bin/bash1025#!/bin/bash

1046# Notification hook: ping desktop ketika Claude Code membutuhkan perhatian.1026# Notification hook: ping the desktop when Claude Code needs attention.

1047input=$(cat)1027input=$(cat)

1048title="Claude Code"1028title="Claude Code"

1049body=$(jq -r '.message // "Needs your attention"' <<<"$input")1029body=$(jq -r '.message // "Needs your attention"' <<<"$input")


1054Bentuk `{ "terminalSequence": "..." }` sama dari shell atau bahasa apa pun.1034Bentuk `{ "terminalSequence": "..." }` sama dari shell atau bahasa apa pun.

1055 1035 

1056<h4 id="add-context-for-claude">1036<h4 id="add-context-for-claude">

1057 Tambahkan konteks untuk Claude1037 Menambahkan konteks untuk Claude

1058</h4>1038</h4>

1059 1039 

1060Bidang `additionalContext` meneruskan string dari hook Anda ke jendela konteks Claude. Claude Code membungkus string dalam pengingat sistem dan menyisipkannya ke dalam percakapan pada titik di mana hook dijalankan. Claude membaca pengingat pada permintaan model berikutnya, tetapi itu tidak muncul sebagai pesan chat dalam antarmuka.1040Field `additionalContext` meneruskan string dari hook Anda ke context window Claude. Claude Code membungkus string tersebut dalam [system reminder](/docs/id/glossary#system-reminder) dan menyisipkannya ke dalam percakapan pada titik di mana hook dijalankan. Claude membaca reminder tersebut pada permintaan model berikutnya, tetapi reminder tidak muncul sebagai pesan chat di antarmuka.

1061 1041 

1062Kembalikan `additionalContext` di dalam `hookSpecificOutput` bersama nama event:1042Kembalikan `additionalContext` di dalam `hookSpecificOutput` bersama nama event:

1063 1043 


1070}1050}

1071```1051```

1072 1052 

1073Di mana pengingat muncul tergantung pada event:1053Di mana reminder muncul bergantung pada event:

1074 1054 

1075* [SessionStart](#sessionstart) dan [SubagentStart](#subagentstart): di awal percakapan, sebelum prompt pertama1055* [SessionStart](#sessionstart) dan [SubagentStart](#subagentstart): di awal percakapan, sebelum prompt pertama

1076* [UserPromptSubmit](#userpromptsubmit) dan [UserPromptExpansion](#userpromptexpansion): bersama prompt yang dikirimkan1056* [UserPromptSubmit](#userpromptsubmit) dan [UserPromptExpansion](#userpromptexpansion): bersama prompt yang dikirim

1077* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure), dan [PostToolBatch](#posttoolbatch): di sebelah hasil tool1057* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure), dan [PostToolBatch](#posttoolbatch): di samping hasil tool

1078* [Stop](#stop) dan [SubagentStop](#subagentstop): di akhir giliran. Percakapan berlanjut sehingga Claude dapat bertindak atas umpan balik. Lihat [Stop decision control](#stop-decision-control)1058* [Stop](#stop) dan [SubagentStop](#subagentstop): di akhir giliran. Percakapan berlanjut sehingga Claude dapat menindaklanjuti umpan balik. Lihat [Kontrol keputusan Stop](#stop-decision-control)

1079* [PostModelSwitch](#postmodelswitch): dengan permintaan berikutnya setelah switch. Lihat [PostModelSwitch decision control](#postmodelswitch-decision-control) untuk timing1059* [PostModelSwitch](#postmodelswitch): bersama permintaan berikutnya setelah pergantian. Lihat [Kontrol keputusan PostModelSwitch](#postmodelswitch-decision-control) untuk waktunya

1080 1060 

1081Ketika beberapa hooks mengembalikan `additionalContext` untuk event yang sama, Claude menerima semua nilai.1061Ketika beberapa hook mengembalikan `additionalContext` untuk event yang sama, Claude menerima semua nilainya.

1082 1062 

1083Jika nilai melebihi 10.000 karakter, Claude Code menulis teks ke file di direktori sesi dan meneruskan Claude path file dengan pratinjau singkat sebagai gantinya.1063Jika suatu nilai melebihi 10.000 karakter, Claude Code menulis teks tersebut ke file di direktori sesi dan sebagai gantinya meneruskan path file kepada Claude beserta pratinjau hingga 2.000 karakter pertama. Claude dapat membaca file tersebut, tetapi Claude Code tidak memintanya untuk melakukannya.

1084 1064 

1085Gunakan `additionalContext` untuk informasi yang harus diketahui Claude tentang keadaan saat ini lingkungan Anda atau operasi yang baru saja dijalankan:1065Gunakan `additionalContext` untuk informasi yang perlu diketahui Claude tentang status environment Anda saat ini atau operasi yang baru saja dijalankan:

1086 1066 

1087* **Keadaan lingkungan**: branch saat ini, target deployment, atau flag fitur aktif1067* **Status environment**: branch saat ini, target deployment, atau feature flag yang aktif

1088* **Aturan proyek bersyarat**: perintah test mana yang berlaku untuk file yang baru diedit, direktori mana yang read-only di worktree ini1068* **Aturan proyek bersyarat**: perintah pengujian mana yang berlaku untuk file yang baru saja diedit, direktori mana yang read-only di worktree ini

1089* **Data eksternal**: masalah terbuka yang ditugaskan kepada Anda, hasil CI terbaru, konten yang diambil dari layanan internal1069* **Data eksternal**: issue terbuka yang ditugaskan kepada Anda, hasil CI terbaru, konten yang diambil dari layanan internal

1090 1070 

1091Untuk instruksi yang tidak pernah berubah, lebih suka [CLAUDE.md](/docs/id/memory). Itu dimuat tanpa menjalankan skrip dan merupakan tempat standar untuk konvensi proyek statis.1071Untuk instruksi yang tidak pernah berubah, utamakan [CLAUDE.md](/docs/id/memory). File ini dimuat tanpa menjalankan skrip dan merupakan tempat standar untuk konvensi proyek yang statis.

1092 1072 

1093Tulis teks sebagai pernyataan faktual daripada instruksi sistem imperatif. Frasa seperti "Target deployment adalah production" atau "Repo ini menggunakan `bun test`" dibaca sebagai informasi proyek. Teks yang dibingkai sebagai perintah sistem out-of-band dapat memicu pertahanan injeksi prompt Claude, yang menyebabkan Claude menampilkan teks kepada Anda alih-alih memperlakukannya sebagai konteks.1073Tulis teks sebagai pernyataan faktual, bukan instruksi sistem yang bersifat imperatif. Frasa seperti "The deployment target is production" atau "This repo uses `bun test`" dibaca sebagai informasi proyek. Teks yang dibingkai sebagai perintah sistem di luar jalur dapat memicu pertahanan prompt injection Claude, yang menyebabkan Claude menampilkan teks tersebut kepada Anda alih-alih memperlakukannya sebagai konteks.

1094 1074 

1095Claude Code menyimpan teks yang disuntikkan dalam transkrip sesi. Untuk events mid-session seperti `PostToolUse` atau `UserPromptSubmit`, ketika Anda melanjutkan dengan `--continue` atau `--resume`, Claude Code memutar ulang teks yang disimpan daripada menjalankan kembali hook untuk giliran masa lalu, jadi nilai seperti timestamp atau commit SHA menjadi usang. Hook `SessionStart` dijalankan lagi pada resume dengan `source` diatur ke `"resume"`, atau `"fork"` jika Anda menambahkan `--fork-session`, jadi mereka dapat menyegarkan konteks mereka.1075Claude Code menyimpan teks yang disisipkan di transkrip sesi. Untuk event di tengah sesi seperti `PostToolUse` atau `UserPromptSubmit`, ketika Anda melanjutkan dengan `--continue` atau `--resume`, Claude Code memutar ulang teks yang tersimpan alih-alih menjalankan ulang hook untuk giliran sebelumnya, sehingga nilai seperti timestamp atau SHA commit menjadi usang. Hook `SessionStart` berjalan lagi saat dilanjutkan dengan `source` diatur ke `"resume"`, atau `"fork"` jika Anda menambahkan `--fork-session`, sehingga hook tersebut dapat memperbarui konteksnya.

1096 1076 

1097<h4 id="decision-control">1077<h4 id="decision-control">

1098 Decision control1078 Kontrol keputusan

1099</h4>1079</h4>

1100 1080 

1101Tidak setiap event mendukung pemblokiran atau kontrol perilaku melalui JSON. Events yang melakukannya masing-masing menggunakan set bidang yang berbeda untuk mengekspresikan keputusan itu. Gunakan tabel ini sebagai referensi cepat sebelum menulis hook:1081Tidak setiap event mendukung pemblokiran atau pengendalian perilaku melalui JSON. Event yang mendukungnya masing-masing menggunakan kumpulan field yang berbeda untuk menyatakan keputusan tersebut. Gunakan tabel ini sebagai referensi cepat sebelum menulis hook:

1102 1082 

1103| Events | Pola keputusan | Bidang kunci |1083| Event | Pola keputusan | Field utama |

1104| :- | :- | :- |1084| :- | :- | :- |

1105| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | Top-level `decision` | `decision: "block"`, `reason`. Stop dan SubagentStop juga menerima `hookSpecificOutput.additionalContext` untuk [umpan balik non-error yang melanjutkan percakapan](#stop-decision-control) |1085| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` tingkat atas | `decision: "block"`, `reason`. Stop dan SubagentStop juga menerima `hookSpecificOutput.additionalContext` untuk [umpan balik non-error yang melanjutkan percakapan](#stop-decision-control) |

1106| TeammateIdle, TaskCompleted | Kode keluar atau `continue: false` | Kode keluar 2 memblokir tindakan dengan umpan balik stderr. JSON `{"continue": false, "stopReason": "..."}` juga menghentikan teammate sepenuhnya, mencocokkan perilaku hook `Stop`; [TaskCompleted mengabaikannya ketika tool `TaskUpdate` memicu event](#taskcompleted-decision-control) |1086| TeammateIdle, TaskCompleted | Exit code atau `continue: false` | Exit code 2 memblokir tindakan dengan umpan balik stderr. JSON `{"continue": false, "stopReason": "..."}` juga menghentikan rekan tim sepenuhnya, sesuai dengan perilaku hook `Stop`; [TaskCompleted mengabaikannya ketika tool `TaskUpdate` memicu event tersebut](#taskcompleted-decision-control) |

1107| TaskCreated | Kode keluar atau top-level `decision` | Kode keluar 2 atau `decision: "block"` [membatalkan tugas](#taskcreated-decision-control) dan mengembalikan pesan ke Claude. `continue: false` diabaikan |1087| TaskCreated | Exit code atau `decision` tingkat atas | Exit code 2 atau `decision: "block"` [membatalkan tugas](#taskcreated-decision-control) dan mengembalikan pesan kepada Claude. `continue: false` diabaikan |

1108| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |1088| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |

1109| PreModelSwitch | `hookSpecificOutput` atau top-level `decision` | `permissionDecision` (allow/deny/ask), `permissionDecisionReason`. `decision: "block"` juga [membatalkan switch](#premodelswitch-decision-control) |1089| PreModelSwitch | `hookSpecificOutput` atau `decision` tingkat atas | `permissionDecision` (allow/deny/ask), `permissionDecisionReason`. `decision: "block"` juga [membatalkan pergantian](#premodelswitch-decision-control) |

1110| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |1090| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |

1111| PermissionDenied | `hookSpecificOutput` | `retry: true` memberitahu model itu dapat mencoba lagi pemanggilan tool yang ditolak; Claude Code mengabaikannya untuk [penolakan tanpa-verdict](#permissiondenied-decision-control) |1091| PermissionDenied | `hookSpecificOutput` | `retry: true` memberi tahu model bahwa model boleh mencoba ulang panggilan tool yang ditolak; Claude Code mengabaikannya untuk [penolakan tanpa putusan](#permissiondenied-decision-control) |

1112| WorktreeCreate | path return | Command hook mencetak path di stdout; HTTP hook mengembalikan `hookSpecificOutput.worktreePath`. Kegagalan hook atau path yang hilang gagal membuat |1092| WorktreeCreate | pengembalian path | Hook perintah mencetak path di stdout; hook HTTP mengembalikan `hookSpecificOutput.worktreePath`. Kegagalan hook atau path yang tidak ada menggagalkan pembuatan |

1113| WorktreeRemove | Kode keluar | Kode keluar non-zero apa pun membuat penghapusan gagal jika direktori masih ada setelahnya. Output JSON diabaikan |1093| WorktreeRemove | Exit code | Exit code bukan nol apa pun membuat penghapusan gagal jika direktori masih ada setelahnya. Output JSON dibuang |

1114| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (nilai field form untuk accept) |1094| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (nilai field formulir untuk accept) |

1115| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (nilai field form override) |1095| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (override nilai field formulir) |

1116| MessageDisplay | `hookSpecificOutput` | `displayContent` menggantikan teks yang ditampilkan di layar. Display-only: transkrip dan apa yang Claude lihat tetap mempertahankan asli |1096| MessageDisplay | `hookSpecificOutput` | `displayContent` menggantikan teks yang ditampilkan di layar. Hanya tampilan: transkrip dan apa yang dilihat Claude tetap mempertahankan teks asli |

1117| SessionStart, SubagentStart, PostModelSwitch | Context only | `hookSpecificOutput.additionalContext` menambahkan konteks untuk Claude. SessionStart juga menerima [`initialUserMessage`, `watchPaths`, `sessionTitle`, dan `reloadSkills`](#sessionstart-decision-control). Tidak ada kontrol blocking atau decision |1097| SessionStart, SubagentStart, PostModelSwitch | Hanya konteks | `hookSpecificOutput.additionalContext` menambahkan konteks untuk Claude. SessionStart juga menerima [`initialUserMessage`, `watchPaths`, `sessionTitle`, dan `reloadSkills`](#sessionstart-decision-control). Tidak ada pemblokiran atau kontrol keputusan |

1118| Setup, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, DirectoryAdded, FileChanged | Tidak ada | Tidak ada kontrol keputusan. Digunakan untuk efek samping seperti logging atau cleanup |1098| Setup, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, DirectoryAdded, FileChanged | Tidak ada | Tidak ada kontrol keputusan. Digunakan untuk efek samping seperti logging atau pembersihan |

1119 1099 

1120Beberapa events juga dapat menulis ulang konten daripada hanya mengizinkan atau memblokir:1100Beberapa event juga dapat menulis ulang konten alih-alih hanya mengizinkan atau memblokirnya:

1121 1101 

1122* `PreToolUse`: `updatedInput` langsung di bawah `hookSpecificOutput` menggantikan argumen tool sebelum dijalankan. Lihat [PreToolUse decision control](#pretooluse-decision-control)1102* `PreToolUse`: `updatedInput` langsung di bawah `hookSpecificOutput` menggantikan argumen tool sebelum tool berjalan. Lihat [Kontrol keputusan PreToolUse](#pretooluse-decision-control)

1123* `PermissionRequest`: `updatedInput` di dalam objek `decision`. Lihat [PermissionRequest decision control](#permissionrequest-decision-control)1103* `PermissionRequest`: `updatedInput` di dalam objek `decision`. Lihat [Kontrol keputusan PermissionRequest](#permissionrequest-decision-control)

1124* `PostToolUse`: `updatedToolOutput` menggantikan hasil tool. Lihat [PostToolUse decision control](#posttooluse-decision-control)1104* `PostToolUse`: `updatedToolOutput` menggantikan hasil tool. Lihat [Kontrol keputusan PostToolUse](#posttooluse-decision-control)

1125* `UserPromptSubmit`: tidak dapat mengganti prompt; hanya menyuntikkan `additionalContext` di sampingnya1105* `UserPromptSubmit`: tidak dapat menggantikan prompt; hanya menyisipkan `additionalContext` bersamanya

1126 1106 

1127Untuk kasus penggunaan redaksi atau transformasi, intersep di `PreToolUse` untuk input tool keluar dan `PostToolUse` untuk hasil tool masuk.1107Untuk kasus penggunaan redaksi atau transformasi, lakukan intersepsi di `PreToolUse` untuk input tool keluar dan di `PostToolUse` untuk hasil tool masuk.

1128 1108 

1129Berikut adalah contoh setiap pola dalam aksi:1109Berikut contoh setiap pola dalam praktik:

1130 1110 

1131<Tabs>1111<Tabs>

1132 <Tab title="Top-level decision">1112 <Tab title="Keputusan tingkat atas">

1133 Satu-satunya nilai untuk `decision` adalah `"block"`. Untuk mengizinkan tindakan dilanjutkan, hilangkan `decision` dari JSON Anda, atau keluar 0 tanpa JSON apa pun:1113 Satu-satunya nilai untuk `decision` adalah `"block"`. Untuk mengizinkan tindakan dilanjutkan, hilangkan `decision` dari JSON Anda, atau keluar dengan 0 tanpa JSON sama sekali:

1134 1114 

1135 ```json theme={null}1115 ```json theme={null}

1136 {1116 {


1141 </Tab>1121 </Tab>

1142 1122 

1143 <Tab title="PreToolUse">1123 <Tab title="PreToolUse">

1144 Menggunakan `hookSpecificOutput` untuk kontrol yang lebih kaya: izinkan, tolak, atau eskalasi ke pengguna. Anda juga dapat memodifikasi input tool sebelum dijalankan atau menyuntikkan konteks tambahan untuk Claude. Lihat [PreToolUse decision control](#pretooluse-decision-control) untuk set lengkap opsi.1124 Menggunakan `hookSpecificOutput` untuk kontrol yang lebih kaya: mengizinkan, menolak, atau mengeskalasi ke pengguna. Anda juga dapat memodifikasi input tool sebelum tool berjalan atau menyisipkan konteks tambahan untuk Claude. Lihat [Kontrol keputusan PreToolUse](#pretooluse-decision-control) untuk kumpulan opsi lengkap.

1145 1125 

1146 ```json theme={null}1126 ```json theme={null}

1147 {1127 {


1155 </Tab>1135 </Tab>

1156 1136 

1157 <Tab title="PermissionRequest">1137 <Tab title="PermissionRequest">

1158 Menggunakan `hookSpecificOutput` untuk mengizinkan atau menolak permintaan izin atas nama pengguna. Saat mengizinkan, Anda juga dapat memodifikasi input tool atau menerapkan aturan izin sehingga pengguna tidak diminta lagi. Lihat [PermissionRequest decision control](#permissionrequest-decision-control) untuk set lengkap opsi.1138 Menggunakan `hookSpecificOutput` untuk mengizinkan atau menolak permintaan izin atas nama pengguna. Saat mengizinkan, Anda juga dapat memodifikasi input tool atau menerapkan aturan izin sehingga pengguna tidak ditanya lagi. Lihat [Kontrol keputusan PermissionRequest](#permissionrequest-decision-control) untuk kumpulan opsi lengkap.

1159 1139 

1160 ```json theme={null}1140 ```json theme={null}

1161 {1141 {


1173 </Tab>1153 </Tab>

1174</Tabs>1154</Tabs>

1175 1155 

1176Untuk contoh yang diperluas termasuk validasi perintah Bash, pemfilteran prompt, dan skrip persetujuan otomatis, lihat [What you can automate](/docs/id/hooks-guide#what-you-can-automate) dalam panduan dan [Bash command validator reference implementation](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).1156Untuk contoh lanjutan termasuk validasi perintah Bash, pemfilteran prompt, dan skrip persetujuan otomatis, lihat [Apa yang dapat Anda otomatisasi](/docs/id/hooks-guide#what-you-can-automate) dalam panduan dan [implementasi referensi validator perintah Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).

1177 1157 

1178<h2 id="hook-events">1158<h2 id="hook-events">

1179 Hook events1159 Event hook

1180</h2>1160</h2>

1181 1161 

1182Setiap event sesuai dengan titik dalam siklus hidup Claude Code di mana hooks dapat dijalankan. Bagian-bagian di bawah diurutkan untuk mencocokkan siklus hidup: dari pengaturan sesi melalui loop agentic ke akhir sesi. Setiap bagian menjelaskan kapan event dijalankan, matcher apa yang didukungnya, JSON input yang diterima, dan cara mengontrol perilaku melalui output.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.

1183 1163 

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

1185 SessionStart1165 SessionStart

1186</h3>1166</h3>

1187 1167 

1188Dijalankan ketika Claude Code memulai sesi baru atau melanjutkan sesi yang ada. Berguna untuk memuat konteks pengembangan seperti masalah yang ada atau perubahan terbaru pada codebase Anda, atau menyiapkan variabel lingkungan. Untuk konteks statis yang tidak memerlukan skrip, gunakan [CLAUDE.md](/docs/id/memory) sebagai gantinya.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.

1189 1169 

1190SessionStart dijalankan pada setiap sesi, jadi jaga hooks ini tetap cepat. Hanya hooks `type: "command"` dan `type: "mcp_tool"` yang didukung. Lihat [MCP tool hook fields](#mcp-tool-hook-fields) untuk kapan hooks `mcp_tool` dijalankan.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.

1191 1171 

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

1193 1173 

1194| Matcher | Kapan dijalankan |1174| Matcher | Kapan dipicu |

1195| :- | :- |1175| :- | :- |

1196| `startup` | Sesi baru |1176| `startup` | Sesi baru |

1197| `resume` | `--resume`, `--continue`, atau `/resume` |1177| `resume` | `--resume`, `--continue`, atau `/resume` |

1198| `clear` | `/clear` |1178| `clear` | `/clear` |

1199| `compact` | Auto atau manual compaction |1179| `compact` | Compaction otomatis atau manual |

1200| `fork` | Sesi baru yang di-fork dari sesi yang ada: `--fork-session` dengan `--resume` atau `--continue`, salinan latar belakang `/fork`, atau `/branch` |1180| `fork` | Sesi baru yang di-fork dari sesi yang sudah ada: `--fork-session` dengan `--resume` atau `--continue`, salinan latar belakang `/fork`, `/branch`, atau percakapan yang Anda [pindahkan ke latar belakang](/docs/id/agent-view#from-inside-a-session) |

1201 1181 

1202Sebelum v2.1.214, sesi yang di-fork melaporkan sumber `"resume"`.1182Sebelum v2.1.214, sesi hasil fork melaporkan source `"resume"`.

1203 1183 

1204Ketika Anda menjalankan sesi interaktif, melanjutkan percakapan saat peluncuran dengan `--continue` atau `--resume`, atau menjalankan `/clear`, SessionStart hooks dijalankan di latar belakang. Anda dapat mengetik segera, dan percakapan yang Anda lanjutkan muncul tanpa menunggu hooks. Respons pertama Claude masih menunggu hooks selesai, jadi konteks mereka mencapai Claude.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.

1205 1185 

1206Ketika Anda beralih percakapan dengan `/resume` di dalam sesi, switch menunggu hooks selesai sebagai gantinya. Jika Anda menjalankan `/clear` atau beralih ke percakapan lain sementara background hooks masih berjalan, tidak ada yang mereka kembalikan berlaku untuk sesi.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.

1207 1187 

1208Penantian yang sama berlaku saat peluncuran, termasuk sesi yang dilanjutkan: prompt yang Anda kirimkan sementara SessionStart hooks masih berjalan tidak mencapai Claude sampai mereka selesai.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.

1209 1189 

1210Selama penantian apa pun, tekan `Esc` untuk mengambil kembali prompt ke input tanpa mengirimkannya. Hooks terus berjalan.1190Selama salah satu penantian tersebut, tekan `Esc` untuk mengambil kembali prompt ke input tanpa mengirimkannya. Hook tetap berjalan.

1211 1191 

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

1213 SessionStart input1193 Input SessionStart

1214</h4>1194</h4>

1215 1195 

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

1217 1197 

1218| Bidang | Deskripsi |1198| Kolom | Deskripsi |

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

1220| `source` | Bagaimana 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 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 |

1221| `model` | Pengenal model aktif. Itu dapat dihilangkan, misalnya setelah `/clear` atau ketika sesi dipulihkan melalui conversation recovery, jadi periksa bidang sebelum membacanya |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 |

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

1223| `session_title` | Judul sesi saat ini jika sudah ditetapkan, misalnya melalui `--name` atau `/rename`. Hook yang memancarkan `sessionTitle` dapat memeriksa `session_title` terlebih dahulu untuk menghindari menimpa judul yang ditetapkan pengguna secara eksplisit |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 |

1224 1204 

1225Ketika `source` adalah `"resume"` atau `"fork"` dan transkrip berisi setidaknya satu respons dari Claude, SessionStart hooks juga menerima empat bidang di bawah. Hook Anda dapat menggunakannya untuk melaporkan apa yang dilanjutkan percakapan basi biaya sebelum permintaan pertama, misalnya dalam [`systemMessage`](#json-output). Bidang-bidang ini memerlukan Claude Code v2.1.251 atau lebih baru.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`.

1226 1206 

1227| Bidang | Deskripsi |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.

1208 

1209| Kolom | Deskripsi |

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

1229| `seconds_since_last_response` | Detik wall-clock sejak respons terakhir dalam transkrip yang dilanjutkan |1211| `seconds_since_last_response` | Detik waktu nyata sejak respons terakhir dalam transkrip yang dilanjutkan |

1230| `context_tokens` | Tokens yang diminta pertama dari sesi yang dilanjutkan mengirim ulang sebagai promptnya |1212| `context_tokens` | Token yang dikirim ulang oleh permintaan pertama sesi yang dilanjutkan sebagai prompt-nya |

1231| `prompt_cache_likely_expired` | `true` ketika respons terakhir lebih lama dari [lifetime prompt cache](/docs/id/prompt-caching#cache-lifetime) sesi atau compaction yang lebih baru menggantikan percakapan yang di-cache |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 |

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

1233 1215 

1234Contoh 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:

1235 1217 


1249```1231```

1250 1232 

1251<h4 id="sessionstart-decision-control">1233<h4 id="sessionstart-decision-control">

1252 SessionStart decision control1234 Kontrol keputusan SessionStart

1253</h4>1235</h4>

1254 1236 

1255Claude Code menambahkan stdout yang [diperlakukan sebagai teks biasa](#exit-code-0) ke konteks Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini: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:

1256 1238 

1257| Bidang | Deskripsi |1239| Kolom | Deskripsi |

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

1259| `additionalContext` | String ditambahkan ke konteks Claude pada awal percakapan, sebelum prompt pertama. Lihat [Add context for Claude](#add-context-for-claude) untuk cara teks disampaikan dan apa yang harus dimasukkan |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 |

1260| `initialUserMessage` | String digunakan sebagai pesan pengguna pertama sesi. Berlaku dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, di mana itu menjadi giliran pertama bahkan jika tidak ada prompt yang disediakan. Jika prompt disediakan, itu mengikuti sebagai giliran berikutnya. Tidak seperti `additionalContext`, yang menempel pada giliran yang ada, ini membuat giliran |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 |

1261| `sessionTitle` | Menetapkan judul sesi, dengan efek yang sama seperti `/rename`. Gunakan untuk memberi nama sesi secara otomatis dari folder peluncuran, cabang git, atau nama worktree. Berlaku ketika `source` adalah `"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 saat `source` bernilai `"startup"`, `"resume"`, atau `"fork"`; diabaikan pada `"clear"` dan `"compact"` |

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

1263| `reloadSkills` | Boolean. Ketika `true`, Claude Code memindai ulang direktori [skill](/docs/id/skills) dan command setelah SessionStart hooks selesai, jadi skills yang diinstal hook tersedia dalam sesi yang sama, dimulai dengan prompt pertama |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 |

1264 1246 

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

1266{1248{


1272}1254}

1273```1255```

1274 1256 

1275Karena plain stdout sudah mencapai Claude untuk event ini, hook yang hanya memuat konteks dapat mencetak ke stdout secara langsung tanpa membangun JSON. Gunakan bentuk JSON ketika Anda perlu menggabungkan konteks dengan bidang lain seperti `sessionTitle`.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`.

1276 1258 

1277Gunakan `reloadSkills` ketika SessionStart hook menginstal atau memperbarui skills. Penemuan skill biasanya berjalan sebelum SessionStart hooks selesai, jadi file yang ditulis hook ke `~/.claude/skills/` atau `.claude/skills/` tidak akan muncul sampai sesi berikutnya. Contoh ini menyinkronkan repositori skills bersama dan meminta pemindaian ulang: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:

1278 1260 

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

1280#!/bin/bash1262#!/bin/bash


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

1286```1268```

1287 1269 

1288URL repositori adalah placeholder; gantikan dengan repositori skills Anda sendiri. Dengan placeholder, clone gagal dan mencetak pesan `fatal:` ke stderr. Stderr dari SessionStart hook yang keluar 0 hanya informatif, jadi permintaan `reloadSkills` masih 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 informasional, sehingga permintaan `reloadSkills` tetap berlaku.

1289 1271 

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

1291 Persist environment variables1273 Mempertahankan environment variable

1292</h4>1274</h4>

1293 1275 

1294SessionStart hooks memiliki akses ke variabel lingkungan `CLAUDE_ENV_FILE`, yang menyediakan path file di mana Anda dapat mempertahankan variabel lingkungan untuk perintah Bash berikutnya.1276Hook SessionStart memiliki akses ke environment variable `CLAUDE_ENV_FILE`, yang menyediakan path file tempat Anda dapat mempertahankan environment variable untuk perintah Bash berikutnya.

1295 1277 

1296Untuk menetapkan variabel lingkungan individual, tulis pernyataan `export` ke `CLAUDE_ENV_FILE`. Gunakan append (`>>`) untuk mempertahankan variabel yang ditetapkan oleh hooks lain:1278Untuk mengatur environment variable satu per satu, tulis pernyataan `export` ke `CLAUDE_ENV_FILE`. Gunakan append (`>>`) untuk mempertahankan variabel yang diatur oleh hook lain:

1297 1279 

1298```bash theme={null}1280```bash theme={null}

1299#!/bin/bash1281#!/bin/bash


1307exit 01289exit 0

1308```1290```

1309 1291 

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

1311 1293 

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

1313#!/bin/bash1295#!/bin/bash

1314 1296 

1315ENV_BEFORE=$(export -p | sort)1297ENV_BEFORE=$(export -p | sort)

1316 1298 

1317# Jalankan perintah setup Anda yang memodifikasi lingkungan1299# Run your setup commands that modify the environment

1318source ~/.nvm/nvm.sh1300source ~/.nvm/nvm.sh

1319nvm use 201301nvm use 20

1320 1302 


1327```1309```

1328 1310 

1329<Note>1311<Note>

1330 `CLAUDE_ENV_FILE` tersedia untuk SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged), dan [FileChanged](#filechanged) hooks. Tipe hook lainnya tidak memiliki akses ke variabel ini.1312 `CLAUDE_ENV_FILE` tersedia untuk hook SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged), dan [FileChanged](#filechanged). Jenis hook lain tidak memiliki akses ke variabel ini.

1331</Note>1313</Note>

1332 1314 

1333<h3 id="setup">1315<h3 id="setup">

1334 Setup1316 Setup

1335</h3>1317</h3>

1336 1318 

1337Dijalankan hanya ketika Anda meluncurkan Claude Code dengan `--init-only`, atau dengan `--init` atau `--maintenance` dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Itu tidak dijalankan 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 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.

1338 1320 

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

1340 1322 

1341| Matcher | Kapan dijalankan |1323| Matcher | Kapan dipicu |

1342| :- | :- |1324| :- | :- |

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

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

1345 1327 

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

1347 1329 

1348Ketika Anda memulai atau melanjutkan percakapan dengan `-p`, Anda juga perlu menyediakan prompt, sebagai argumen atau piped di stdin. Anda dapat melewati prompt ketika hook `SessionStart` menyediakan [`initialUserMessage`](#sessionstart-decision-control) atau ketika Anda melanjutkan sesi dengan [deferred tool call](#defer-a-tool-call-for-later).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).

1349 1331 

1350Pada kesuksesan, `--init-only` tidak mencetak apa pun ke terminal. Untuk mengkonfirmasi hooks dijalankan, mulai dengan `claude --debug-file <path> --init-only`, gantikan `<path>` dengan lokasi file log, dan periksa log untuk entri Setup dan SessionStart hook.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.

1351 1333 

1352Karena Setup tidak dijalankan pada setiap peluncuran, plugin yang memerlukan dependensi yang diinstal tidak dapat mengandalkan Setup saja. Pola praktis adalah memeriksa dependensi pada penggunaan pertama dan menginstal jika tidak ada, misalnya hook atau skill yang menguji `${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 tempat menyimpan dependensi yang diinstal. Jika Anda mendistribusikan plugin Anda 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) ketika itu cache plugin.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.

1353 1335 

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

1355 Setup input1337 Input Setup

1356</h4>1338</h4>

1357 1339 

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

1359 1341 

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

1361{1343{


1368```1350```

1369 1351 

1370<h4 id="setup-decision-control">1352<h4 id="setup-decision-control">

1371 Setup decision control1353 Kontrol keputusan Setup

1372</h4>1354</h4>

1373 1355 

1374Setup hooks tidak dapat memblokir; eksekusi berlanjut pada kode keluar apa pun. Pada setiap kode keluar, Claude Code membuang [bidang output JSON](#json-output) dari Setup hook, seperti `systemMessage`, `continue`, dan `hookSpecificOutput.additionalContext`. Dengan `-p`, stdout, stderr, dan kode keluar Setup hook muncul dalam output run hanya sebagai [`hook_response` events](/docs/id/headless#read-session-metadata) ketika 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 [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`.

1375 1357 

1376Setup hooks memiliki akses ke `CLAUDE_ENV_FILE`. Variabel yang ditulis ke file itu bertahan ke perintah Bash berikutnya untuk sesi, sama seperti dalam [SessionStart hooks](#persist-environment-variables). Hanya hooks `type: "command"` yang dijalankan pada `Setup`. Hook `type: "mcp_tool"` pada `Setup` selalu dilewati, seperti dijelaskan di bawah [MCP tool hook fields](#mcp-tool-hook-fields).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).

1377 1359 

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

1379 InstructionsLoaded1361 InstructionsLoaded

1380</h3>1362</h3>

1381 1363 

1382Dijalankan ketika file `CLAUDE.md` atau `.claude/rules/*.md` dimuat ke dalam konteks. Event ini dijalankan saat startup sesi untuk file yang dimuat dengan eager dan lagi nanti ketika file dimuat dengan lazy, misalnya ketika Claude mengakses subdirektori yang berisi `CLAUDE.md` bersarang atau ketika aturan bersyarat dengan frontmatter `paths:` cocok. Hook tidak mendukung pemblokiran atau kontrol keputusan. Itu dijalankan secara asinkron untuk tujuan observabilitas.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.

1383 1365 

1384Event ini tidak dijalankan ketika Claude [membaca `AGENTS.md` secara langsung](/docs/id/memory#agents-md) melalui pengaturan **Project instructions**. Itu dijalankan ketika `CLAUDE.md` mengimpor `AGENTS.md` Anda, dengan `load_reason` diatur ke `include` seperti untuk file yang diimpor lainnya, dan ketika `CLAUDE.md` adalah symlink ke itu, sebagai load `CLAUDE.md` normal.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.

1385 1367 

1386Matcher dijalankan terhadap `load_reason`. Misalnya, gunakan `"matcher": "session_start"` untuk dijalankan hanya untuk file yang dimuat saat startup sesi, atau `"matcher": "path_glob_match|nested_traversal"` untuk dijalankan hanya untuk lazy loads.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.

1387 1369 

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

1389 InstructionsLoaded input1371 Input InstructionsLoaded

1390</h4>1372</h4>

1391 1373 

1392Selain [bidang input umum](#common-input-fields), InstructionsLoaded hooks menerima bidang-bidang ini:1374Selain [kolom input umum](#common-input-fields), hook InstructionsLoaded menerima kolom-kolom berikut:

1393 1375 

1394| Bidang | Deskripsi |1376| Kolom | Deskripsi |

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

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

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

1398| `load_reason` | Mengapa file dimuat: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"`, atau `"compact"`. Nilai `"compact"` dijalankan ketika 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 saat file instruksi dimuat ulang setelah event compaction |

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

1400| `trigger_file_path` | Path ke file yang akses memicu load ini, untuk lazy loads |1382| `trigger_file_path` | Path ke file yang aksesnya memicu pemuatan ini, untuk pemuatan lazy |

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

1402 1384 

1403```json theme={null}1385```json theme={null}

1404{1386{


1413```1395```

1414 1396 

1415<h4 id="instructionsloaded-decision-control">1397<h4 id="instructionsloaded-decision-control">

1416 InstructionsLoaded decision control1398 Kontrol keputusan InstructionsLoaded

1417</h4>1399</h4>

1418 1400 

1419InstructionsLoaded hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir atau memodifikasi pemuatan instruksi. Claude Code membuang [bidang output JSON](#json-output) mereka, seperti `systemMessage` dan `continue`. Gunakan event ini untuk audit logging, compliance tracking, atau observabilitas.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.

1420 1402 

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

1422 UserPromptSubmit1404 UserPromptSubmit

1423</h3>1405</h3>

1424 1406 

1425Dijalankan ketika pengguna mengirimkan prompt, sebelum Claude memproses. Ini memungkinkan Anda menambahkan konteks tambahan berdasarkan prompt/percakapan, memvalidasi prompts, atau memblokir jenis prompts tertentu.1407Berjalan saat pengguna mengirimkan prompt, sebelum Claude memprosesnya. Ini memungkinkan Anda

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

1409memblokir jenis prompt tertentu.

1426 1410 

1427Hooks `UserPromptSubmit` memiliki timeout default 30 detik untuk tipe `command`, `http`, dan `mcp_tool`, lebih pendek dari default 600 detik untuk tipe tersebut pada event lain. Karena hook ini dijalankan sebelum setiap prompt dan memblokir pemrosesan model sampai selesai, hook yang macet menghentikan sesi. Jika hook Anda memerlukan lebih banyak waktu, atur bidang `timeout` dalam entri hook.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.

1428 1412 

1429Hook callback [Agent SDK](/docs/id/agent-sdk/hooks) pada `UserPromptSubmit` yang mencapai timeout-nya memblokir prompt dengan pesan yang menamai hook dan timeout, karena callback di sana dapat bertindak sebagai policy gate yang tidak boleh gagal terbuka. Sesi berlanjut. Sebelum v2.1.208, timeout callback pada event itu mengakhiri giliran dengan kesalahan eksekusi.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.

1430 1414 

1431Selain command hook yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), hook command, HTTP, atau MCP tool `UserPromptSubmit` yang mencapai timeout-nya dibatalkan dan output-nya, termasuk `additionalContext` apa pun, dibuang. Prompt masih mencapai Claude tanpa konteks itu. Transkrip menampilkan pemberitahuan yang menamai hook, timeout yang dijalankan, dan bahwa output dibuang.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.

1432 1416 

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

1434 UserPromptSubmit input1418 Input UserPromptSubmit

1435</h4>1419</h4>

1436 1420 

1437Selain [bidang input umum](#common-input-fields), UserPromptSubmit hooks menerima bidang `prompt` yang berisi teks yang dikirimkan pengguna. Konten yang ditempel yang diciutkan menjadi placeholder `[Pasted text #N]` tiba dalam keadaan diperluas di tempatnya. Dalam sesi di mana Claude Code [menandai teks yang ditempel untuk Claude](/docs/id/terminal-config#how-claude-treats-pasted-text), konten yang diperluas itu berada di antara baris `<pasted_content id="…">` dan baris `</pasted_content id="…">`, jadi perhitungkan baris-baris tersebut jika hook Anda mengurai prompt.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.

1422 

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

1438 1424 

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

1440{1426{


1448```1434```

1449 1435 

1450<h4 id="userpromptsubmit-decision-control">1436<h4 id="userpromptsubmit-decision-control">

1451 UserPromptSubmit decision control1437 Kontrol keputusan UserPromptSubmit

1452</h4>1438</h4>

1453 1439 

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

1455 1441 

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

1457 1443 

1458* **Plain text stdout**: Claude Code menambahkan stdout yang [diperlakukan 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

1459* **JSON dengan `additionalContext`**: gunakan format JSON di bawah untuk kontrol lebih. Bidang `additionalContext` ditambahkan sebagai konteks1445* **JSON dengan `additionalContext`**: gunakan format JSON di bawah ini untuk kontrol lebih. Kolom `additionalContext` ditambahkan sebagai konteks

1460 1446 

1461Tidak ada channel yang menghasilkan entri transkrip yang terlihat. Plain stdout dan nilai `additionalContext` masing-masing disuntikkan sebagai pengingat sistem yang dimulai dengan nama hook; Claude membaca keduanya. Untuk mengkonfirmasi pengiriman, periksa [debug log](#debug-hooks).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).

1462 1448 

1463Untuk memblokir prompt, kembalikan objek JSON dengan `decision` diatur ke `"block"`:1449Untuk memblokir prompt, kembalikan objek JSON dengan `decision` diatur ke `"block"`:

1464 1450 

1465| Bidang | Deskripsi |1451| Kolom | Deskripsi |

1466| :- | :- |1452| :- | :- |

1467| `decision` | `"block"` mencegah prompt diproses dan menghapusnya dari konteks. Hilangkan untuk mengizinkan prompt dilanjutkan |1453| `decision` | `"block"` menghentikan prompt sebelum sampai ke Claude. Hilangkan agar prompt dapat berlanjut |

1468| `reason` | Ditampilkan ke pengguna saat `decision` adalah `"block"`. Tidak ditambahkan ke konteks |1454| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"`. Tidak ditambahkan ke konteks |

1469| `additionalContext` | String ditambahkan ke konteks Claude bersama prompt yang dikirimkan. Lihat [Add context for 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) |

1470| `sessionTitle` | Menetapkan 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 |

1471| `suppressOriginalPrompt` | Jika `true` saat `decision` adalah `"block"`, menghilangkan teks prompt asli dari pesan blok yang ditampilkan ke pengguna |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) |

1472 1458 

1473Hook yang memblokir dengan keluar 2 merutekan dengan cara yang sama seperti `reason`: pesan blok menampilkan teks stderr ke pengguna, dan itu tidak ditambahkan ke konteks.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.

1474 1460 

1475```json theme={null}1461```json theme={null}

1476{1462{


1479 "hookSpecificOutput": {1465 "hookSpecificOutput": {

1480 "hookEventName": "UserPromptSubmit",1466 "hookEventName": "UserPromptSubmit",

1481 "additionalContext": "My additional context here",1467 "additionalContext": "My additional context here",

1482 "sessionTitle": "My session title"1468 "sessionTitle": "My session title",

1469 "suppressOriginalPrompt": true

1483 }1470 }

1484}1471}

1485```1472```

1486 1473 

1474<h4 id="what-a-blocked-prompt-leaves-behind">

1475 Apa yang ditinggalkan oleh prompt yang diblokir

1476</h4>

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.

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

1481 

1487<h3 id="userpromptexpansion">1482<h3 id="userpromptexpansion">

1488 UserPromptExpansion1483 UserPromptExpansion

1489</h3>1484</h3>

1490 1485 

1491Dijalankan ketika perintah slash yang diketik pengguna berkembang menjadi prompt sebelum mencapai Claude. Gunakan ini untuk memblokir perintah tertentu dari invokasi langsung, menyuntikkan konteks untuk skill tertentu, atau mencatat perintah mana yang diinvokasi pengguna. Misalnya, hook yang cocok dengan `deploy` dapat memblokir `/deploy` kecuali file persetujuan ada, atau hook yang cocok dengan skill review dapat menambahkan checklist review tim sebagai `additionalContext`.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`.

1492 1487 

1493Event ini mencakup path yang `PreToolUse` tidak: hook `PreToolUse` yang cocok dengan tool `Skill` hanya dijalankan ketika Claude memanggil tool, tetapi mengetik `/skillname` secara langsung melewati `PreToolUse`. `UserPromptExpansion` dijalankan pada path langsung itu.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.

1494 1489 

1495Cocok pada `command_name`. Biarkan matcher kosong untuk dijalankan pada setiap slash command prompt-type.1490Dicocokkan dengan `command_name`. Biarkan matcher kosong agar dipicu pada setiap perintah bertipe prompt.

1496 1491 

1497<h4 id="userpromptexpansion-input">1492<h4 id="userpromptexpansion-input">

1498 UserPromptExpansion input1493 Input UserPromptExpansion

1499</h4>1494</h4>

1500 1495 

1501Selain [bidang input umum](#common-input-fields), UserPromptExpansion hooks menerima `expansion_type`, `command_name`, `command_args`, `command_source`, dan string `prompt` asli. Bidang `expansion_type` adalah `slash_command` untuk skill dan custom commands, atau `mcp_prompt` untuk MCP server prompts.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.

1502 1497 

1503```json theme={null}1498```json theme={null}

1504{1499{


1516```1511```

1517 1512 

1518<h4 id="userpromptexpansion-decision-control">1513<h4 id="userpromptexpansion-decision-control">

1519 UserPromptExpansion decision control1514 Kontrol keputusan UserPromptExpansion

1520</h4>1515</h4>

1521 1516 

1522Hooks `UserPromptExpansion` dapat memblokir ekspansi atau menambahkan konteks. Semua [bidang output JSON](#json-output) tersedia.1517Hook `UserPromptExpansion` dapat memblokir perluasan atau menambahkan konteks. Semua [kolom output JSON](#json-output) tersedia.

1523 1518 

1524| Bidang | Deskripsi |1519| Kolom | Deskripsi |

1525| :- | :- |1520| :- | :- |

1526| `decision` | `"block"` mencegah slash command berkembang. Hilangkan untuk mengizinkannya dilanjutkan |1521| `decision` | `"block"` mencegah perintah diperluas. Hilangkan agar dapat berlanjut |

1527| `reason` | Ditampilkan ke pengguna saat `decision` adalah `"block"` |1522| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"` |

1528| `additionalContext` | String ditambahkan ke konteks Claude bersama prompt yang berkembang. Lihat [Add context for 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) |

1529 1524 

1530Hook yang memblokir dengan keluar 2 merutekan dengan cara yang sama seperti `reason`: pesan blok menampilkan teks stderr ke pengguna.1525Hook yang memblokir dengan keluar dengan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan blokir menampilkan teks stderr kepada pengguna.

1531 1526 

1532```json theme={null}1527```json theme={null}

1533{1528{


1544 MessageDisplay1539 MessageDisplay

1545</h3>1540</h3>

1546 1541 

1547Dijalankan saat pesan asisten mengalir ke layar. Claude Code menampilkan pesan dalam kenaikan: setiap kali batch baris yang baru selesai siap untuk dirender, hook dijalankan sekali dengan baris-baris itu dan Claude Code merender teks pengganti hook di tempatnya. Pesan panjang menghasilkan beberapa panggilan; pesan pendek mungkin hanya menghasilkan satu.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.

1548 1543 

1549Gunakan MessageDisplay untuk:1544Gunakan MessageDisplay untuk:

1550 1545 

1551* menghapus markdown untuk tampilan minimal1546* menghapus markdown untuk tampilan minimal

1552* mengubah teks yang ditampilkan aplikasi Agent SDK kepada penggunanya1547* mengubah teks yang ditampilkan aplikasi Agent SDK kepada penggunanya

1553* menyensor API keys atau hostname internal dari respons Claude1548* menyamarkan kunci API atau hostname internal dari respons Claude

1554 1549 

1555Claude Code menahan setiap batch sampai hook Anda kembali, jadi jaga hook tetap cepat. Jika hook gagal atau timeout, Claude Code menampilkan teks asli. Timeout default untuk event ini adalah 10 detik; jika hook Anda memerlukan lebih banyak waktu, atur bidang `timeout` dalam entri hook.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.

1556 1551 

1557MessageDisplay hanya untuk tampilan: teks pengganti hanya mengubah apa yang dirender di layar. Transkrip dan apa yang dilihat Claude menyimpan teks asli, jadi Claude tidak pernah melihat pengganti, dan mode verbose menampilkan asli. Hook menerima teks pesan asisten saja, jadi 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 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.

1558 1553 

1559MessageDisplay tidak mendukung matchers dan dijalankan untuk setiap pesan asisten yang mengalir teks; pesan tanpa teks, seperti respons hanya pemanggilan 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.

1560 1555 

1561Dalam run non-interaktif, termasuk kueri Agent SDK dan `claude -p`, MessageDisplay dijalankan sekali per pesan asisten alih-alih sekali per batch baris. Panggilan tunggal tiba setelah pesan selesai dan membawa teks pesan lengkap: `index` adalah `0`, `final` adalah `true`, dan `delta` menyimpan seluruh pesan. Hook yang mengumpulkan teks `delta` untuk setiap pesan menerima teks total 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 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.

1562 1557 

1563<h4 id="messagedisplay-input">1558<h4 id="messagedisplay-input">

1564 MessageDisplay input1559 Input MessageDisplay

1565</h4>1560</h4>

1566 1561 

1567Selain [bidang input umum](#common-input-fields), MessageDisplay hooks menerima pengenal untuk giliran dan pesan, posisi panggilan ini dalam pesan, dan teks baru dalam `delta`. Batas batch tergantung pada bagaimana teks mengalir, jadi gunakan `index` dan `final` untuk melacak kemajuan melalui pesan daripada mengharapkan baris dikelompokkan dengan cara tertentu.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.

1568 1563 

1569| Bidang | Deskripsi |1564| Kolom | Deskripsi |

1570| :- | :- |1565| :- | :- |

1571| `turn_id` | UUID dari giliran saat ini |1566| `turn_id` | UUID giliran saat ini |

1572| `message_id` | UUID dari pesan asisten yang ditampilkan. Stabil di setiap batch dari pesan yang sama. Ini bukan API `msg_…` id, jadi tidak dapat dikorelasikan dengan id pesan transkrip |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 |

1573| `index` | Indeks berbasis nol dari batch ini dalam pesan |1568| `index` | Indeks berbasis nol dari kelompok ini dalam pesan |

1574| `final` | `true` pada batch terakhir pesan. Setiap pesan memiliki tepat satu batch final |1569| `final` | `true` pada kelompok terakhir pesan. Setiap pesan memiliki tepat satu kelompok terakhir |

1575| `delta` | Baris yang baru selesai sejak batch sebelumnya, termasuk newline yang mengakhiri. Selalu baris utuh, kecuali batch final yang mungkin berakhir di tengah baris. Dalam run interaktif, delta batch final kosong ketika pesan berakhir pada newline, jadi perlakukan `final`, bukan delta non-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 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 |

1576 1571 

1577```json theme={null}1572```json theme={null}

1578{1573{


1589```1584```

1590 1585 

1591<h4 id="messagedisplay-output">1586<h4 id="messagedisplay-output">

1592 MessageDisplay output1587 Output MessageDisplay

1593</h4>1588</h4>

1594 1589 

1595Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, MessageDisplay hooks dapat mengembalikan `displayContent` untuk mengganti delta di layar:1590Selain [kolom output JSON](#json-output) yang tersedia untuk semua hook, hook MessageDisplay dapat mengembalikan `displayContent` untuk menggantikan delta di layar:

1596 1591 

1597| Bidang | Deskripsi |1592| Kolom | Deskripsi |

1598| :- | :- |1593| :- | :- |

1599| `displayContent` | Teks ditampilkan sebagai pengganti delta. Hilangkan untuk menampilkan asli |1594| `displayContent` | Teks yang ditampilkan sebagai pengganti delta. Hilangkan untuk menampilkan teks asli |

1600 1595 

1601MessageDisplay hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir pesan atau mengubah apa yang disimpan dalam transkrip atau dikirim ke Claude. Claude Code bertindak atas `displayContent` dari output JSON mereka dan membuang `systemMessage` dan `continue`.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`.

1602 1597 

1603Contoh ini menghapus pemformatan markdown dari respons Claude untuk tampilan teks biasa. Skrip membaca setiap batch dari stdin, menghapus penanda bold dan backtick kode inline dari `delta`, dan mengembalikan hasilnya sebagai `displayContent`.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`.

1604 1599 

1605<Tabs>1600<Tabs>

1606 <Tab title="macOS/Linux">1601 <Tab title="macOS/Linux">

1607 Daftarkan command hook untuk event dalam file pengaturan Anda:1602 Daftarkan hook perintah untuk event ini di file pengaturan Anda:

1608 1603 

1609 ```json theme={null}1604 ```json theme={null}

1610 {1605 {


1624 }1619 }

1625 ```1620 ```

1626 1621 

1627 Simpan skrip ini ke `.claude/hooks/plain-display.sh` dalam proyek Anda dan buat dapat dieksekusi dengan `chmod +x`:1622 Simpan skrip ini ke `.claude/hooks/plain-display.sh` di proyek Anda dan jadikan dapat dieksekusi dengan `chmod +x`:

1628 1623 

1629 ```bash theme={null}1624 ```bash theme={null}

1630 #!/bin/bash1625 #!/bin/bash


1633 </Tab>1628 </Tab>

1634 1629 

1635 <Tab title="Windows (PowerShell)">1630 <Tab title="Windows (PowerShell)">

1636 Daftarkan command hook yang menjalankan skrip melalui PowerShell:1631 Daftarkan hook perintah yang menjalankan skrip melalui PowerShell:

1637 1632 

1638 ```json theme={null}1633 ```json theme={null}

1639 {1634 {


1659 }1654 }

1660 ```1655 ```

1661 1656 

1662 Flag `-NoProfile` melewati pemuatan profil PowerShell Anda sehingga hook dimulai cepat, dan `-ExecutionPolicy Bypass` memungkinkan PowerShell menjalankan file skrip lokal.1657 Flag `-NoProfile` melewatkan pemuatan profil PowerShell Anda sehingga hook dimulai dengan cepat, dan `-ExecutionPolicy Bypass` memungkinkan PowerShell menjalankan file skrip lokal.

1663 1658 

1664 Simpan skrip ini ke `.claude/hooks/plain-display.ps1` dalam proyek Anda:1659 Simpan skrip ini ke `.claude/hooks/plain-display.ps1` di proyek Anda:

1665 1660 

1666 ```powershell theme={null}1661 ```powershell theme={null}

1667 $batch = [Console]::In.ReadToEnd() | ConvertFrom-Json1662 $batch = [Console]::In.ReadToEnd() | ConvertFrom-Json


1676 </Tab>1671 </Tab>

1677</Tabs>1672</Tabs>

1678 1673 

1679Batch tanpa markdown melewati tanpa perubahan. Jika skrip gagal, misalnya karena `jq` hilang, Claude Code menampilkan teks asli dan mencatat kegagalan hanya dalam [output debug](#debug-hooks), bukan dalam sesi.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.

1680 1675 

1681<h3 id="pretooluse">1676<h3 id="pretooluse">

1682 PreToolUse1677 PreToolUse

1683</h3>1678</h3>

1684 1679 

1685Dijalankan setelah Claude membuat parameter tool dan sebelum memproses pemanggilan tool. Cocok pada nama tool apa pun kecuali `EndConversation`: tools bawaan seperti `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion`, dan `ExitPlanMode`, dan nama [MCP tool](#match-mcp-tools) apa pun.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.

1686 1681 

1687Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged) alih-alih mencocokkan file-editing tools berdasarkan nama. Tidak seperti PreToolUse, Claude Code menjalankan FileChanged hooks setelah perubahan, dan mereka tidak memiliki kontrol keputusan, jadi mereka tidak dapat memblokir penulisan.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.

1688 1683 

1689<Warning>1684<Warning>

1690 PreToolUse hanya dijalankan ketika Claude memanggil tool. File yang Anda [referensikan dengan `@` dalam prompt Anda](/docs/id/common-workflows#reference-files-and-directories) ditambahkan tanpa pemanggilan tool apa pun: Claude Code menyisipkan konten mereka saat membangun prompt, jadi tidak ada hook PreToolUse yang dijalankan untuk mereka, termasuk hooks 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 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.

1691 1686 

1692 PreToolUse juga tidak dijalankan untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).1687 PreToolUse juga tidak dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).

1693</Warning>1688</Warning>

1694 1689 

1695Gunakan [PreToolUse decision control](#pretooluse-decision-control) untuk mengizinkan, menolak, menanyakan, atau menunda pemanggilan tool.1690Gunakan [kontrol keputusan PreToolUse](#pretooluse-decision-control) untuk mengizinkan, menolak, meminta konfirmasi, atau menunda panggilan tool.

1696 1691 

1697Hook callback [Agent SDK](/docs/id/agent-sdk/hooks) pada `PreToolUse` yang melampaui timeout-nya memblokir pemanggilan tool, dan Claude menerima hasil kesalahan yang menamai timeout. Penolakan eksplisit yang dikembalikan oleh hook lain masih mengambil prioritas.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.

1698 1693 

1699<h4 id="pretooluse-input">1694<h4 id="pretooluse-input">

1700 PreToolUse input1695 Input PreToolUse

1701</h4>1696</h4>

1702 1697 

1703Selain [bidang input umum](#common-input-fields), PreToolUse hooks menerima `tool_name`, `tool_input`, dan `tool_use_id`.1698Selain [kolom input umum](#common-input-fields), hook PreToolUse menerima `tool_name`, `tool_input`, dan `tool_use_id`.

1704 1699 

1705Untuk [MCP tool](#match-mcp-tools), input juga membawa `mcp_server`, objek dengan `name` server dan `source` yang mengatakan 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 mengatakan cara memperlakukan yang tidak Anda kenal. Dasarkan keputusan kepercayaan pada `source` daripada pada `name` atau awalan nama tool `mcp__<server>__`. Bidang `mcp_server` memerlukan Claude Code v2.1.274 atau lebih baru.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.

1706 1701 

1707Untuk file tools `Write`, `Edit`, dan `Read`, `tool_input.file_path` selalu absolut:1702Untuk tool file `Write`, `Edit`, dan `Read`, `tool_input.file_path` selalu absolut:

1708 1703 

1709* Claude Code memperluas `~` dan path relatif sebelum hooks dijalankan, jadi hook yang cocok pada path tidak dapat dilewati melalui `~` atau ejaan 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

1710* Di Windows, path tiba dengan pemisah backslash, bahkan ketika hook Anda berjalan di bawah Git Bash di mana `$PWD` terlihat seperti `/c/project`1705* Di Windows, path tiba dengan pemisah backslash, bahkan saat hook Anda berjalan di Git Bash tempat `$PWD` terlihat seperti `/c/project`

1711* Perbandingan yang ditulis dengan forward slashes, seperti pemeriksaan `/src/`, tidak pernah cocok dengan path backslash, dan pemanggilan tool dilanjutkan seolah-olah hook tidak memiliki apa pun untuk memblokir1706* 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

1712* Normalkan pemisah sebelum membandingkan: `FILE_PATH="${FILE_PATH//\\//}"` dalam Bash, atau `file_path.replace("\\", "/")` dalam Python, kemudian cocokkan segmen path seperti `/src/` daripada jangkar dengan `^`, karena path adalah absolut1707* 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 absolut

1713 1708 

1714Panggilan `Write` di Windows memberikan:1709Panggilan `Write` di Windows mengirimkan:

1715 1710 

1716```json theme={null}1711```json theme={null}

1717{1712{


1725}1720}

1726```1721```

1727 1722 

1728Bidang `tool_input` tergantung pada tool:1723Kolom `tool_input` bergantung pada tool-nya:

1729 1724 

1730<a id="bash" />1725<a id="bash" />

1731 1726 


1733 Bash1728 Bash

1734</h5>1729</h5>

1735 1730 

1736Menjalankan perintah shell.1731Mengeksekusi perintah shell.

1737 1732 

1738| Bidang | Tipe | Contoh | Deskripsi |1733| Kolom | Tipe | Contoh | Deskripsi |

1739| :- | :- | :- | :- |1734| :- | :- | :- | :- |

1740| `command` | string | `"npm test"` | Perintah shell untuk dijalankan |1735| `command` | string | `"npm test"` | Perintah shell yang akan dieksekusi |

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

1742| `timeout` | number | `120000` | Timeout opsional dalam milidetik. Nilai di atas [maksimum](/docs/id/tools-reference#bash-tool-behavior) dikurangi ke maksimum daripada ditolak |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 |

1743| `run_in_background` | boolean | `false` | Apakah menjalankan perintah di latar belakang |1738| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |

1744 1739 

1745Ketika perintah Bash mengubah file dalam repositori Git, Claude Code dapat mencatat apa yang berubah. Itu mencatat perubahan dalam setiap mode izin ketika pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled) mengaktifkan perekaman; entri pengaturan itu mengatakan file mana yang dapat mengaturnya. Jika tidak, itu mencatat mereka hanya dalam mode auto 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.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.

1746 1741 

1747Hook [PostToolUse](#posttooluse) Anda kemudian menerima file yang berubah dalam `tool_response.bashEditDiff`. Daftar mencakup apa yang berubah di bawah repositori sementara perintah berjalan. File yang Git abaikan dan file dalam submodules tidak terdaftar. Memerlukan Claude Code v2.1.269 atau lebih baru.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.

1748 1743 

1749<Note>1744<Note>

1750 Daftar adalah best effort dan dalam beta publik. Claude Code dapat melewatkan perubahan, menyertakan file yang proses lain ubah pada waktu yang sama, atau berhenti di batas ukurannya. Bentuk bidang mungkin berubah. Gunakan daftar untuk menemukan apa yang harus 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 kolom dapat berubah. Gunakan daftar ini untuk menemukan apa yang perlu ditinjau, bukan untuk menegakkan kebijakan.

1751</Note>1746</Note>

1752 1747 

1753`changedFiles` dan `files` mencantumkan apa yang diubah perintah; bidang yang tersisa mengatakan seberapa lengkap dan seberapa andal daftar itu.1748`changedFiles` dan `files` mencantumkan apa yang diubah oleh perintah; kolom-kolom lainnya menyatakan seberapa lengkap dan seberapa andal daftar tersebut.

1754 1749 

1755| Bidang | Tipe | Contoh | Deskripsi |1750| Kolom | Tipe | Contoh | Deskripsi |

1756| :- | :- | :- | :- |1751| :- | :- | :- | :- |

1757| `changedFiles` | array | `["/path/to/src/app.ts"]` | Path absolut dari file yang diubah perintah, paling banyak 200. Hadir setiap kali `files` menyimpan diff atau `moreFiles` di atas nol |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 |

1758| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs dari hingga 5 file yang berubah, untuk tampilan. `created` atau `deleted` adalah `true` untuk file yang ditambahkan atau dihapus 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 oleh perintah |

1759| `moreFiles` | number | `2` | Jumlah file yang berubah tanpa diff dalam `files` |1754| `moreFiles` | number | `2` | Jumlah file yang berubah tanpa diff di `files` |

1760| `unavailable` | boolean | `true` | Diatur ketika diff tidak lengkap atau tidak dapat diambil |1755| `unavailable` | boolean | `true` | Diatur saat diff tidak lengkap atau tidak dapat diambil |

1761| `skipped` | boolean | `true` | Diatur untuk perintah Git yang memindahkan pohon kerja, seperti `git checkout` atau `git stash`, jadi 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 |

1762| `shared` | boolean | `true` | Diatur ketika pemanggilan tool Bash lain, seperti subagent, berjalan di repositori yang sama pada waktu yang sama, jadi beberapa perubahan yang terdaftar mungkin dari perintah itu |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 |

1763 1758 

1764<a id="powershell" />1759<a id="powershell" />

1765 1760 


1767 PowerShell1762 PowerShell

1768</h5>1763</h5>

1769 1764 

1770Menjalankan perintah PowerShell. Lihat [PowerShell tool](/docs/id/tools-reference#powershell-tool) untuk ketersediaan berdasarkan platform.1765Mengeksekusi perintah PowerShell. Lihat [tool PowerShell](/docs/id/tools-reference#powershell-tool) untuk ketersediaan berdasarkan platform.

1771 1766 

1772Bidang-bidang cocok dengan tool Bash, dengan string perintah dalam `command`:1767Kolom-kolomnya sama dengan tool Bash, dengan string perintah di `command`:

1773 1768 

1774| Bidang | Tipe | Contoh | Deskripsi |1769| Kolom | Tipe | Contoh | Deskripsi |

1775| :- | :- | :- | :- |1770| :- | :- | :- | :- |

1776| `command` | string | `"Get-ChildItem -Recurse"` | Perintah PowerShell untuk dijalankan |1771| `command` | string | `"Get-ChildItem -Recurse"` | Perintah PowerShell yang akan dieksekusi |

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

1778| `timeout` | number | `120000` | Timeout opsional dalam milidetik |1773| `timeout` | number | `120000` | Timeout opsional dalam milidetik |

1779| `run_in_background` | boolean | `false` | Apakah menjalankan perintah di latar belakang |1774| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |

1780 1775 

1781Cocok pada `Bash|PowerShell` dalam hooks yang memeriksa perintah shell, jadi mereka mencakup kedua tools:1776Cocokkan `Bash|PowerShell` dalam hook yang memeriksa perintah shell, sehingga hook tersebut mencakup kedua tool:

1782 1777 

1783* Di Windows, di mana pun PowerShell tool diaktifkan, Claude memperlakukan PowerShell sebagai shell utama dan merutekan perintah shell melaluinya.1778* Di Windows, di mana pun tool PowerShell diaktifkan, Claude memperlakukan PowerShell sebagai shell utama dan mengarahkan perintah shell melaluinya.

1784* Di Windows tanpa Git Bash, tool diaktifkan secara otomatis dan Claude Code tidak mendaftarkan tool Bash sama sekali.1779* Di Windows tanpa Git Bash, tool ini diaktifkan secara otomatis dan Claude Code sama sekali tidak mendaftarkan tool Bash.

1785* Hook yang hanya cocok dengan `Bash` tidak pernah dijalankan di sana.1780* Hook yang hanya mencocokkan `Bash` tidak pernah dipicu di sana.

1786 1781 

1787<h5 id="write">1782<h5 id="write">

1788 Write1783 Write


1790 1785 

1791Membuat atau menimpa file.1786Membuat atau menimpa file.

1792 1787 

1793| Bidang | Tipe | Contoh | Deskripsi |1788| Kolom | Tipe | Contoh | Deskripsi |

1794| :- | :- | :- | :- |1789| :- | :- | :- | :- |

1795| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file untuk ditulis |1790| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan ditulis |

1796| `content` | string | `"file content"` | Konten untuk ditulis ke file |1791| `content` | string | `"file content"` | Konten yang akan ditulis ke file |

1797 1792 

1798<h5 id="edit">1793<h5 id="edit">

1799 Edit1794 Edit

1800</h5>1795</h5>

1801 1796 

1802Mengganti string dalam file yang ada.1797Mengganti string dalam file yang sudah ada.

1803 1798 

1804| Bidang | Tipe | Contoh | Deskripsi |1799| Kolom | Tipe | Contoh | Deskripsi |

1805| :- | :- | :- | :- |1800| :- | :- | :- | :- |

1806| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file untuk diedit |1801| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan diedit |

1807| `old_string` | string | `"original text"` | Teks untuk dicari dan diganti |1802| `old_string` | string | `"original text"` | Teks yang akan dicari dan diganti |

1808| `new_string` | string | `"replacement text"` | Teks pengganti |1803| `new_string` | string | `"replacement text"` | Teks pengganti |

1809| `replace_all` | boolean | `false` | Apakah mengganti semua kemunculan |1804| `replace_all` | boolean | `false` | Apakah semua kemunculan diganti |

1810 1805 

1811<h5 id="read">1806<h5 id="read">

1812 Read1807 Read

1813</h5>1808</h5>

1814 1809 

1815Membaca konten file.1810Membaca isi file.

1816 1811 

1817| Bidang | Tipe | Contoh | Deskripsi |1812| Kolom | Tipe | Contoh | Deskripsi |

1818| :- | :- | :- | :- |1813| :- | :- | :- | :- |

1819| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file untuk dibaca |1814| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan dibaca |

1820| `offset` | number | `10` | Nomor baris opsional untuk mulai membaca dari |1815| `offset` | number | `10` | Nomor baris opsional untuk mulai membaca |

1821| `limit` | number | `50` | Jumlah baris opsional untuk dibaca |1816| `limit` | number | `50` | Jumlah baris opsional yang akan dibaca |

1822 1817 

1823<h5 id="glob">1818<h5 id="glob">

1824 Glob1819 Glob


1826 1821 

1827Menemukan file yang cocok dengan pola glob.1822Menemukan file yang cocok dengan pola glob.

1828 1823 

1829| Bidang | Tipe | Contoh | Deskripsi |1824| Kolom | Tipe | Contoh | Deskripsi |

1830| :- | :- | :- | :- |1825| :- | :- | :- | :- |

1831| `pattern` | string | `"**/*.ts"` | Pola glob untuk mencocokkan file terhadap |1826| `pattern` | string | `"**/*.ts"` | Pola glob untuk mencocokkan file |

1832| `path` | string | `"/path/to/dir"` | Direktori opsional untuk dicari. Default ke direktori kerja saat ini |1827| `path` | string | `"/path/to/dir"` | Direktori opsional untuk pencarian. Default-nya adalah direktori kerja saat ini |

1833 1828 

1834<h5 id="grep">1829<h5 id="grep">

1835 Grep1830 Grep

1836</h5>1831</h5>

1837 1832 

1838Mencari konten file dengan ekspresi reguler.1833Mencari isi file dengan ekspresi reguler.

1839 1834 

1840| Bidang | Tipe | Contoh | Deskripsi |1835| Kolom | Tipe | Contoh | Deskripsi |

1841| :- | :- | :- | :- |1836| :- | :- | :- | :- |

1842| `pattern` | string | `"TODO.*fix"` | Pola ekspresi reguler untuk dicari |1837| `pattern` | string | `"TODO.*fix"` | Pola ekspresi reguler yang akan dicari |

1843| `path` | string | `"/path/to/dir"` | File atau direktori opsional untuk dicari |1838| `path` | string | `"/path/to/dir"` | File atau direktori opsional untuk pencarian |

1844| `glob` | string | `"*.ts"` | Pola glob opsional untuk memfilter file |1839| `glob` | string | `"*.ts"` | Pola glob opsional untuk memfilter file |

1845| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, atau `"count"`. Default ke `"files_with_matches"` |1840| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, atau `"count"`. Default-nya adalah `"files_with_matches"` |

1846| `-i` | boolean | `true` | Pencarian case insensitive |1841| `-i` | boolean | `true` | Pencarian tanpa membedakan huruf besar/kecil |

1847| `multiline` | boolean | `false` | Aktifkan pencocokan multiline |1842| `multiline` | boolean | `false` | Mengaktifkan pencocokan multibaris |

1848 1843 

1849<h5 id="webfetch">1844<h5 id="webfetch">

1850 WebFetch1845 WebFetch


1852 1847 

1853Mengambil dan memproses konten web.1848Mengambil dan memproses konten web.

1854 1849 

1855| Bidang | Tipe | Contoh | Deskripsi |1850| Kolom | Tipe | Contoh | Deskripsi |

1856| :- | :- | :- | :- |1851| :- | :- | :- | :- |

1857| `url` | string | `"https://example.com/api"` | URL untuk mengambil konten dari |1852| `url` | string | `"https://example.com/api"` | URL untuk mengambil konten |

1858| `prompt` | string | `"Extract the API endpoints"` | Prompt untuk dijalankan pada konten yang diambil |1853| `prompt` | string | `"Extract the API endpoints"` | Prompt yang dijalankan pada konten yang diambil |

1859 1854 

1860<h5 id="websearch">1855<h5 id="websearch">

1861 WebSearch1856 WebSearch

1862</h5>1857</h5>

1863 1858 

1864Mencari web.1859Mencari di web.

1865 1860 

1866| Bidang | Tipe | Contoh | Deskripsi |1861| Kolom | Tipe | Contoh | Deskripsi |

1867| :- | :- | :- | :- |1862| :- | :- | :- | :- |

1868| `query` | string | `"react hooks best practices"` | Query pencarian |1863| `query` | string | `"react hooks best practices"` | Kueri pencarian |

1869| `allowed_domains` | array | `["docs.example.com"]` | Opsional: hanya sertakan hasil dari domain ini |1864| `allowed_domains` | array | `["docs.example.com"]` | Opsional: hanya sertakan hasil dari domain-domain ini |

1870| `blocked_domains` | array | `["spam.example.com"]` | Opsional: kecualikan hasil dari domain ini |1865| `blocked_domains` | array | `["spam.example.com"]` | Opsional: kecualikan hasil dari domain-domain ini |

1871 1866 

1872<h5 id="agent">1867<h5 id="agent">

1873 Agent1868 Agent

1874</h5>1869</h5>

1875 1870 

1876Spawn [subagent](/docs/id/sub-agents).1871Membuat [subagent](/docs/id/sub-agents).

1877 1872 

1878| Bidang | Tipe | Contoh | Deskripsi |1873| Kolom | Tipe | Contoh | Deskripsi |

1879| :- | :- | :- | :- |1874| :- | :- | :- | :- |

1880| `prompt` | string | `"Find all API endpoints"` | Tugas untuk agent lakukan |1875| `prompt` | string | `"Find all API endpoints"` | Tugas yang akan dilakukan agent |

1881| `description` | string | `"Find API endpoints"` | Deskripsi singkat tugas |1876| `description` | string | `"Find API endpoints"` | Deskripsi singkat tugas |

1882| `subagent_type` | string | `"Explore"` | Tipe agent khusus untuk digunakan |1877| `subagent_type` | string | `"Explore"` | Jenis agent khusus yang akan digunakan |

1883| `model` | string | `"sonnet"` | Alias model opsional untuk menimpa default |1878| `model` | string | `"sonnet"` | Alias model opsional untuk menimpa default |

1884 1879 

1885Ketika panggilan Agent foreground selesai, hook [PostToolUse](#posttooluse) Anda menerima teks akhir subagent dan telemetri run dalam `tool_response`. Baca bidang-bidang ini untuk memeriksa run; untuk rollup token dan biaya di seluruh subagents, gunakan [token dan cost counters](/docs/id/monitoring-usage#token-counter) yang difilter ke `query_source` `"subagent"`, karena `totalTokens` dan `usage` mencakup permintaan akhir saja: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:

1886 1881 

1887| Bidang | Tipe | Contoh | Deskripsi |1882| Kolom | Tipe | Contoh | Deskripsi |

1888| :- | :- | :- | :- |1883| :- | :- | :- | :- |

1889| `status` | string | `"completed"` | `"completed"` untuk subagents foreground, `"async_launched"` untuk subagents background. Mulai dari v2.1.198, subagents berjalan di latar belakang secara default, jadi `run_in_background` yang dihilangkan juga menghasilkan `"async_launched"` |1884| `status` | string | `"completed"` | `"completed"` untuk subagent latar depan, `"async_launched"` untuk subagent latar belakang. Mulai v2.1.198, subagent berjalan di latar belakang secara default, sehingga `run_in_background` yang dihilangkan juga menghasilkan `"async_launched"` |

1890| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengenal untuk run subagent |1885| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengidentifikasi untuk run subagent |

1891| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks akhir subagent, atau, untuk subagent yang laporannya melewati `SubagentHandback`, catatan singkat tentang hand-back itu di tempatnya |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 |

1892| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang dijalankan subagent, yang mungkin berbeda dari model yang diminta |1887| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang digunakan subagent saat memulai, yang dapat berbeda dari model yang diminta |

1893| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Model yang digunakan secara berurutan, dengan pengulangan berturut-turut yang runtuh; diatur hanya ketika model ditukar mid-run. Memerlukan Claude Code v2.1.212 atau lebih baru |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 |

1894| `totalTokens` | number | `12450` | Jumlah token dari permintaan API akhir subagent: input, output, dan cache tokens digabungkan. Ini bukan total di seluruh run |1889| `totalTokens` | number | `12450` | Jumlah token dari permintaan API terakhir subagent: token input, output, dan cache digabungkan. Ini bukan total untuk seluruh run |

1895| `totalDurationMs` | number | `48211` | Durasi wall-clock dari run subagent |1890| `totalDurationMs` | number | `48211` | Durasi waktu nyata run subagent |

1896| `totalToolUseCount` | number | `7` | Jumlah pemanggilan tool yang dibuat subagent |1891| `totalToolUseCount` | number | `7` | Jumlah panggilan tool yang dilakukan subagent |

1897| `usage` | object | `{"input_tokens": 8320, ...}` | Breakdown token per-tipe dari permintaan API akhir: `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` |

1898 1893 

1899Pada Claude Code v2.1.271 atau lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference), yang Claude Code sediakan dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), mengirimkan laporannya melalui tool itu daripada mengembalikannya sebagai teks. Bidang `content` dari hasil `completed`-nya kemudian membawa catatan singkat tentang hand-back itu daripada 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. 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`.

1900 1895 

1901Untuk subagents background, tool mengembalikan ketika tugas bergerak ke latar belakang, jadi `tool_response` tidak membawa bidang penggunaan: peluncuran background mengembalikan segera, dan tugas foreground yang Claude Code latar belakang mid-run mengembalikan pada transisi itu. Itu memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.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`.

1902 1897 

1903Pada respons `completed`, `resolvedModel` menamai model yang dijalankan subagent, yang dapat berbeda dari nilai `model` dalam `tool_input`, seperti ketika `availableModels` atau override lain berlaku. Pada respons `async_launched`, `resolvedModel` menamai model yang digunakan ketika agent bergerak ke latar belakang, jadi swap yang terjadi sebelum backgrounding tercermin di sana. `modelsUsed` dan perilaku `resolvedModel` saat backgrounding memerlukan Claude Code v2.1.212 atau lebih baru.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.

1904 1899 

1905<a id="askuserquestion" />1900<a id="askuserquestion" />

1906 1901 


1908 AskUserQuestion1903 AskUserQuestion

1909</h5>1904</h5>

1910 1905 

1911Mengajukan pertanyaan multiple-choice satu hingga empat kepada pengguna.1906Mengajukan satu hingga empat pertanyaan pilihan ganda kepada pengguna.

1912 1907 

1913| Bidang | Tipe | Contoh | Deskripsi |1908| Kolom | Tipe | Contoh | Deskripsi |

1914| :- | :- | :- | :- |1909| :- | :- | :- | :- |

1915| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Pertanyaan untuk disajikan, masing-masing dengan string `question`, `header` pendek, array `options`, dan flag `multiSelect` opsional |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 |

1916| `answers` | object | `{"Which framework?": "React"}` | Opsional. Memetakan teks pertanyaan ke label opsi yang dipilih. Jawaban multi-select menggabungkan label dengan koma. Claude tidak menetapkan bidang ini; sediakan melalui `updatedInput` untuk menjawab secara programatis |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 |

1917 1912 

1918<h5 id="exitplanmode">1913<h5 id="exitplanmode">

1919 ExitPlanMode1914 ExitPlanMode

1920</h5>1915</h5>

1921 1916 

1922Menyajikan 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, jadi `tool_input` literal dari model biasanya kosong. Claude Code menyuntikkan konten rencana dan path file sebelum meneruskan input ke hooks.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.

1923 1918 

1924| Bidang | Tipe | Contoh | Deskripsi |1919| Kolom | Tipe | Contoh | Deskripsi |

1925| :- | :- | :- | :- |1920| :- | :- | :- | :- |

1926| `plan` | string | `"## Refactor auth\n1. Extract..."` | Konten rencana dalam Markdown. Disuntikkan dari file rencana di disk |1921| `plan` | string | `"## Refactor auth\n1. Extract..."` | Konten rencana dalam Markdown. Disisipkan dari file rencana di disk |

1927| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Path ke file rencana. Disuntikkan |1922| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Path ke file rencana. Disisipkan |

1928| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Usang. Claude Code menerima bidang tetapi mengabaikannya. Sebelum v2.1.205, itu membawa izin berbasis prompt yang diminta Claude untuk mengimplementasikan rencana |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 |

1929 1924 

1930Dalam `PostToolUse`, `tool_response` adalah objek dengan bidang `plan` dan `filePath` yang menyimpan rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk konten rencana daripada membaca ulang file dari disk.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.

1931 1926 

1932<h4 id="pretooluse-decision-control">1927<h4 id="pretooluse-decision-control">

1933 PreToolUse decision control1928 Kontrol keputusan PreToolUse

1934</h4>1929</h4>

1935 1930 

1936Hooks `PreToolUse` dapat mengontrol apakah pemanggilan tool dilanjutkan. Tidak seperti hooks lain yang menggunakan bidang `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikannya kontrol yang lebih kaya: empat hasil (izinkan, tolak, tanya, atau tunda) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.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.

1937 1932 

1938| Bidang | Deskripsi |1933| Kolom | Deskripsi |

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

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

1941| `permissionDecisionReason` | Untuk `"allow"` dan `"ask"`, ditampilkan ke pengguna tetapi bukan Claude. Untuk `"deny"`, ditampilkan ke Claude. Untuk `"defer"`, diabaikan |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) |

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

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

1944 1939 

1945Ketika beberapa PreToolUse hooks mengembalikan keputusan berbeda, prioritas adalah `deny` > `defer` > `ask` > `allow`.1940Saat beberapa hook PreToolUse mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `defer` > `ask` > `allow`.

1946 1941 

1947Hook yang memblokir dengan keluar 2 merutekan dengan cara yang sama seperti `"deny"`: Claude melihat pesan stderr sebagai alasan penolakan.1942Hook yang memblokir dengan keluar dengan kode 2 diarahkan dengan cara yang sama seperti `"deny"`: Claude melihat pesan stderr sebagai alasan penolakan.

1948 1943 

1949Ketika hook mengembalikan `"ask"`, dialog izin yang ditampilkan kepada pengguna mencakup label yang mengidentifikasi dari mana hook berasal: `[settings]` untuk hook dari file pengaturan apa 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.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.

1950 1945 

1951Hook `"ask"` juga memaksa prompt izin dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode): pengklasifikasi masih dapat menolak pemanggilan tool, tetapi tidak dapat menyetujui panggilan secara diam-diam. Sebelum v2.1.211, pengklasifikasi dapat menyetujui perintah Bash yang berjalan di luar [sandbox](/docs/id/sandboxing) tanpa menampilkan prompt yang diminta hook; pengklasifikasi masih menerapkan aturan keamanannya sendiri ke perintah itu, dan penolakan hook `"deny"` selalu dihormati.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.

1952 1947 

1953```json theme={null}1948```json theme={null}

1954{1949{


1966 1961 

1967<span id="allow-with-updatedinput" />1962<span id="allow-with-updatedinput" />

1968 1963 

1969Dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, Claude Code menawarkan `AskUserQuestion` dan `ExitPlanMode` hanya ketika run memiliki [permission host](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) untuk menerima prompt, seperti callback `canUseTool` Agent SDK. Tools ini memerlukan interaksi pengguna. Mengembalikan `permissionDecision: "allow"` bersama dengan `updatedInput` memenuhi persyaratan itu: hook membaca input tool dari stdin, mengumpulkan jawaban melalui UI Anda sendiri, dan mengembalikannya dalam `updatedInput` sehingga tool dijalankan tanpa meminta. Mengembalikan `"allow"` saja tidak cukup untuk tools 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 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.

1970 1965 

1971Mulai dari v2.1.199, tool MCP yang server-nya menandainya dengan [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) lebih ketat: hook tidak dapat melewati prompt persetujuannya dengan `"allow"`, dengan atau tanpa `updatedInput`, karena Claude Code tidak dapat mengkonfirmasi hook mengumpulkan interaksi yang dibutuhkan tool.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.

1972 1967 

1973<Note>1968<Note>

1974 PreToolUse sebelumnya menggunakan bidang `decision` dan `reason` tingkat atas, tetapi ini sudah usang untuk event ini. Gunakan `hookSpecificOutput.permissionDecision` dan `hookSpecificOutput.permissionDecisionReason` sebagai gantinya. Nilai usang `"approve"` dan `"block"` memetakan ke `"allow"` dan `"deny"` masing-masing. Events lain seperti PostToolUse dan Stop terus menggunakan `decision` dan `reason` tingkat atas sebagai format saat ini mereka.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.

1975</Note>1970</Note>

1976 1971 

1977<h4 id="defer-a-tool-call-for-later">1972<h4 id="defer-a-tool-call-for-later">

1978 Defer a tool call for later1973 Menunda panggilan tool untuk nanti

1979</h4>1974</h4>

1980 1975 

1981`"defer"` adalah untuk integrasi yang menjalankan `claude -p` sebagai subprocess dan membaca output JSON-nya, seperti aplikasi Agent SDK atau UI kustom yang dibangun di atas Claude Code. Ini memungkinkan proses pemanggil itu menjeda Claude pada pemanggilan tool, mengumpulkan input melalui antarmuka miliknya sendiri, dan melanjutkan di mana ia berhenti. Claude Code menghormati nilai ini hanya dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Dalam sesi interaktif itu mencatat peringatan 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. 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.

1982 1977 

1983Tool `AskUserQuestion` adalah kasus tipikal: Claude ingin menanyakan sesuatu kepada pengguna, tetapi tidak ada terminal untuk menjawab. Run `-p` menawarkan `AskUserQuestion` hanya ketika memiliki [permission host](/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. Perjalanan bolak-balik bekerja seperti ini: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:

1984 1979 

19851. Claude memanggil `AskUserQuestion`. Hook `PreToolUse` dijalankan.19801. Claude memanggil `AskUserQuestion`. Hook `PreToolUse` dipicu.

19862. Hook mengembalikan `permissionDecision: "defer"`. Tool tidak dijalankan. Proses keluar dengan `stop_reason: "tool_deferred"` dan pemanggilan 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 dipertahankan dalam transkrip.

19873. Proses pemanggil membaca `deferred_tool_use` dari hasil SDK, menampilkan pertanyaan di UI miliknya sendiri, dan menunggu jawaban.19823. Proses pemanggil membaca `deferred_tool_use` dari hasil SDK, menampilkan pertanyaan di UI-nya sendiri, dan menunggu jawaban.

19884. Proses pemanggil menjalankan `claude -p --resume <session-id>` dengan permission host yang sama. Pemanggilan tool yang sama menjalankan `PreToolUse` lagi.19834. Proses pemanggil menjalankan `claude -p --resume <session-id>` dengan host izin yang sama. Panggilan tool yang sama memicu `PreToolUse` lagi.

19895. Hook mengembalikan `permissionDecision: "allow"` dengan jawaban dalam `updatedInput`. Tool dijalankan dan Claude melanjutkan.19845. Hook mengembalikan `permissionDecision: "allow"` dengan jawaban di `updatedInput`. Tool dieksekusi dan Claude melanjutkan.

1990 1985 

1991Bidang `deferred_tool_use` membawa `id`, `name`, dan `input` tool. `input` adalah parameter yang Claude hasilkan untuk pemanggilan tool, ditangkap sebelum eksekusi:1986Kolom `deferred_tool_use` membawa `id`, `name`, dan `input` tool. `input` adalah parameter yang dihasilkan Claude untuk panggilan tool, ditangkap sebelum eksekusi:

1992 1987 

1993```json theme={null}1988```json theme={null}

1994{1989{


2004}1999}

2005```2000```

2006 2001 

2007Tidak ada timeout atau batas retry. Sesi tetap di disk sampai Anda melanjutkannya, tunduk pada penyapuan retensi [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays) yang menghapus file sesi setelah 30 hari secara default, mengikuti [aturan penyapuan retensi](/docs/id/claude-directory#cleaned-up-automatically). Jika jawaban tidak siap saat Anda melanjutkan, hook dapat mengembalikan `"defer"` lagi dan proses keluar dengan cara yang sama. Proses pemanggil mengontrol kapan harus memecah loop dengan akhirnya mengembalikan `"allow"` atau `"deny"` dari hook.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.

2008 2003 

2009`"defer"` hanya bekerja ketika Claude membuat satu pemanggilan tool dalam giliran. Jika Claude membuat beberapa pemanggilan tool sekaligus, `"defer"` diabaikan dengan peringatan dan tool melanjutkan melalui alur izin normal. Batasan ada karena resume hanya dapat menjalankan kembali satu tool: tidak ada cara untuk menunda satu pemanggilan dari batch tanpa meninggalkan yang lain tidak terselesaikan.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.

2010 2005 

2011Jika tool yang ditunda tidak lagi tersedia saat Anda melanjutkan, proses keluar dengan `stop_reason: "tool_deferred_unavailable"` dan `is_error: true` sebelum hook dijalankan. Ini terjadi ketika server MCP yang menyediakan tool tidak terhubung untuk sesi yang dilanjutkan. Payload `deferred_tool_use` masih disertakan sehingga Anda dapat mengidentifikasi tool mana yang hilang.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.

2012 2007 

2013<Note>2008<Note>

2014 Untuk melanjutkan sesi yang ditunda dalam plan mode, teruskan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) bersama dengan `--resume` sehingga Claude Code dapat menyajikan rencana untuk persetujuan. Tanpanya, Claude Code tidak memulihkan plan mode. Memerlukan Claude Code v2.1.246 atau lebih baru.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.

2015 2010 

2016 Ketika Anda melanjutkan dengan `-p`, Claude Code tidak memulihkan mode izin yang disimpan lainnya. Itu memulai run dalam mode izin yang akan dimulai oleh run `claude -p` baru, jadi teruskan `--permission-mode` atau `--dangerously-skip-permissions` lagi jika sesi yang ditunda menggunakan satu. Ketika Anda melanjutkan dengan `claude --resume <session-id>` tanpa `-p`, Claude Code memulihkan mode izin yang disimpan, dengan pengecualian yang tercantum dalam [permission mode on resume](/docs/id/sessions#permission-mode-on-resume).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).

2017</Note>2012</Note>

2018 2013 

2019<h3 id="permissionrequest">2014<h3 id="permissionrequest">

2020 PermissionRequest2015 PermissionRequest

2021</h3>2016</h3>

2022 2017 

2023Dijalankan ketika Claude Code akan menanyakan Anda untuk izin menggunakan tool. Dalam sesi yang tidak dapat menampilkan prompt, seperti subagents latar belakang dalam [mode non-interaktif](/docs/id/headless), Claude Code masih menjalankan hooks ini, dan jika tidak ada hook yang mengembalikan keputusan, itu menolak pemanggilan tool.2018Berjalan saat Claude Code akan meminta izin Anda untuk menggunakan tool. Dalam sesi yang tidak dapat menampilkan permintaan izin, 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 tersebut.

2024Gunakan [PermissionRequest decision control](#permissionrequest-decision-control) untuk mengizinkan atau menolak atas nama pengguna.2019Gunakan [kontrol keputusan PermissionRequest](#permissionrequest-decision-control) untuk mengizinkan atau menolak atas nama pengguna.

2025 2020 

2026Gunakan event ini ketika Anda memerlukan sinyal saat Claude meminta izin menggunakan tool. Claude Code menjalankan hook [Notification](#notification) dengan tipe `permission_prompt` hanya setelah prompt menunggu sekitar enam detik.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.

2027 2022 

2028Claude Code tidak menjalankan PermissionRequest hooks untuk [network request](/docs/id/sandboxing#network-isolation) perintah sandboxed. Untuk mendapatkan sinyal untuk prompt itu, gunakan tipe notifikasi `permission_prompt`.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`.

2029 2024 

2030Cocok pada nama tool, nilai yang sama seperti PreToolUse.2025Dicocokkan dengan nama tool, nilai yang sama seperti PreToolUse.

2031 2026 

2032<h4 id="permissionrequest-input">2027<h4 id="permissionrequest-input">

2033 PermissionRequest input2028 Input PermissionRequest

2034</h4>2029</h4>

2035 2030 

2036PermissionRequest hooks menerima bidang `tool_name` dan `tool_input` seperti PreToolUse hooks, tetapi tanpa `tool_use_id`. Untuk MCP tool, mereka juga menerima objek [`mcp_server`](#pretooluse-input). Array `permission_suggestions` opsional berisi [permission updates](#permission-update-entries) yang Claude Code sarankan untuk permintaan ini, seperti menambahkan aturan allow atau mengubah mode izin.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.

2037 2032 

2038Array `permission_suggestions` bukan daftar opsi yang tepat yang Anda lihat, karena setiap dialog izin membangun opsi miliknya sendiri. Beberapa dialog, seperti yang untuk edit file, tidak membaca array sama sekali dan menurunkan opsi mereka dari permintaan itu sendiri. Dialog yang membacanya masih dapat menahan opsi yang sarannya tetap dalam array, misalnya ketika [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) menyembunyikan opsi penyimpanan aturan. Itu 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 daripada melalui pembaruan izin.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.

2039 2034 

2040PreToolUse hooks dijalankan sebelum setiap pemanggilan tool, terlepas dari apakah itu memerlukan izin. PermissionRequest hooks dijalankan hanya ketika Claude Code akan menanyakan Anda untuk izin, atau ketika itu akan sebaliknya auto-deny panggilan yang tidak dapat meminta. Tidak ada event yang dijalankan 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 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).

2041 2036 

2042```json theme={null}2037```json theme={null}

2043{2038{


2063```2058```

2064 2059 

2065<h4 id="permissionrequest-decision-control">2060<h4 id="permissionrequest-decision-control">

2066 PermissionRequest decision control2061 Kontrol keputusan PermissionRequest

2067</h4>2062</h4>

2068 2063 

2069Hooks `PermissionRequest` dapat mengizinkan atau menolak permintaan izin. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan objek `decision` dengan bidang spesifik event ini: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:

2070 2065 

2071| Bidang | Deskripsi |2066| Kolom | Deskripsi |

2072| :- | :- |2067| :- | :- |

2073| `behavior` | `"allow"` memberikan izin, `"deny"` menolaknya. [Deny and ask rules](/docs/id/permissions#manage-permissions) masih dievaluasi, jadi 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 |

2074| `updatedInput` | Untuk `"allow"` saja: memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan bidang yang tidak berubah bersama 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 kolom yang tidak berubah bersama kolom yang dimodifikasi. Input yang dimodifikasi dievaluasi ulang terhadap aturan deny dan ask |

2075| `updatedPermissions` | Untuk `"allow"` saja: array dari [permission update entries](#permission-update-entries) untuk 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 |

2076| `message` | Untuk `"deny"` saja: memberitahu Claude mengapa izin ditolak |2071| `message` | Hanya untuk `"deny"`: memberi tahu Claude mengapa izin ditolak |

2077| `interrupt` | Untuk `"deny"` saja: jika `true`, menghentikan Claude |2072| `interrupt` | Hanya untuk `"deny"`: jika `true`, menghentikan Claude |

2078 2073 

2079Hook yang keluar 2 tanpa objek `decision` meninggalkan alur izin tidak berubah, dan stderr-nya dibuang. Hanya objek `decision` yang dapat memberikan atau menolak permintaan.2074Hook yang keluar dengan kode 2 tanpa objek `decision` membiarkan alur izin tidak berubah, dan stderr-nya dibuang. Hanya objek `decision` yang dapat memberikan atau menolak permintaan.

2080 2075 

2081```json theme={null}2076```json theme={null}

2082{2077{


2093```2088```

2094 2089 

2095<h4 id="permission-update-entries">2090<h4 id="permission-update-entries">

2096 Permission update entries2091 Entri pembaruan izin

2097</h4>2092</h4>

2098 2093 

2099Bidang output `updatedPermissions` dan bidang input [`permission_suggestions`](#permissionrequest-input) keduanya menggunakan array objek entry yang sama. Setiap entry memiliki `type` yang menentukan bidang lainnya, dan `destination` yang mengontrol di mana perubahan ditulis.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.

2100 2095 

2101| `type` | Bidang | Efek |2096| `type` | Kolom | Efek |

2102| :- | :- | :- |2097| :- | :- | :- |

2103| `addRules` | `rules`, `behavior`, `destination` | Menambahkan aturan izin. `rules` adalah array dari objek `{toolName, ruleContent?}`. Hilangkan `ruleContent` untuk mencocokkan seluruh tool. `behavior` adalah `"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"` |

2104| `replaceRules` | `rules`, `behavior`, `destination` | Mengganti semua aturan dari `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 |

2105| `removeRules` | `rules`, `behavior`, `destination` | Menghapus aturan yang cocok dari `behavior` yang diberikan |2100| `removeRules` | `rules`, `behavior`, `destination` | Menghapus aturan yang cocok dengan `behavior` yang diberikan |

2106| `setMode` | `mode`, `destination` | Mengubah mode izin. Mode yang valid adalah `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, dan `manual` sebagai alias untuk `default`. Alias `manual` memerlukan Claude Code v2.1.200 atau lebih baru |2101| `setMode` | `mode`, `destination` | Mengubah mode izin. Mode yang valid adalah `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, dan `manual` sebagai alias untuk `default`. Alias `manual` memerlukan Claude Code v2.1.200 atau yang lebih baru |

2107| `addDirectories` | `directories`, `destination` | Menambahkan direktori kerja. `directories` adalah array dari string path |2102| `addDirectories` | `directories`, `destination` | Menambahkan direktori kerja. `directories` adalah array string path |

2108| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |2103| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |

2109 2104 

2110<Note>2105<Note>

2111 `setMode` dengan `bypassPermissions` hanya berlaku jika sesi diluncurkan dengan mode bypass sudah tersedia: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, atau `permissions.defaultMode: "bypassPermissions"` dalam [user, `--settings`, atau managed settings](/docs/id/settings-reference#permissions-defaultmode). Jika tidak, update adalah no-op. Update juga adalah no-op ketika [`permissions.disableBypassPermissionsMode`](/docs/id/permissions#managed-settings) menonaktifkan mode, atau ketika sesi dimulai dalam [restricted mode](/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 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).

2112 2107 

2113 `bypassPermissions` tidak pernah dipertahankan sebagai `defaultMode` terlepas dari `destination`.2108 `bypassPermissions` tidak pernah disimpan sebagai `defaultMode` terlepas dari nilai `destination`.

2114</Note>2109</Note>

2115 2110 

2116Bidang `destination` pada setiap entry menentukan apakah perubahan tetap dalam memori atau persisten ke file pengaturan.2111Field `destination` pada setiap entri menentukan apakah perubahan tetap berada di memori atau disimpan ke file pengaturan.

2117 2112 

2118| `destination` | Menulis ke |2113| `destination` | Menulis ke |

2119| :- | :- |2114| :- | :- |

2120| `session` | hanya dalam memori, dibuang ketika sesi berakhir |2115| `session` | hanya di memori, dibuang ketika sesi berakhir |

2121| `localSettings` | `.claude/settings.local.json` |2116| `localSettings` | `.claude/settings.local.json` |

2122| `projectSettings` | `.claude/settings.json` |2117| `projectSettings` | `.claude/settings.json` |

2123| `userSettings` | `~/.claude/settings.json` |2118| `userSettings` | `~/.claude/settings.json` |

2124 2119 

2125Hook dapat mengembalikan salah satu dari `permission_suggestions` yang diterima sebagai output `updatedPermissions` miliknya sendiri.2120Sebuah hook dapat mengembalikan salah satu `permission_suggestions` yang diterimanya sebagai output `updatedPermissions` miliknya sendiri.

2126 2121 

2127<h3 id="posttooluse">2122<h3 id="posttooluse">

2128 PostToolUse2123 PostToolUse

2129</h3>2124</h3>

2130 2125 

2131Dijalankan segera setelah tool selesai dengan sukses.2126Berjalan segera setelah sebuah tool berhasil diselesaikan.

2132 2127 

2133Cocok pada nama tool, nilai yang sama seperti PreToolUse.2128Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2134 2129 

2135Cocok lebih luas ketika nama tool bukan filter yang tepat:2130Lakukan pencocokan yang lebih luas ketika nama tool bukan filter yang tepat:

2136 2131 

2137* Untuk menjalankan hook setelah tool apa pun selesai dengan sukses, hilangkan `matcher` atau atur ke `"*"`. Hook Anda kemudian dapat menemukan apa yang berubah sendiri, misalnya dengan menjalankan `git status --porcelain`, yang juga mencantumkan file yang tidak dilacak yang `git diff` lewatkan. Untuk pemanggilan tool yang gagal, tambahkan hook yang sama di bawah [PostToolUseFailure](#posttoolusefailure).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).

2138* Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged). Claude Code tidak menjalankan hook `PostToolUse` yang cocok dengan `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.

2139 2134 

2140<h4 id="posttooluse-input">2135<h4 id="posttooluse-input">

2141 PostToolUse input2136 Input PostToolUse

2142</h4>2137</h4>

2143 2138 

2144Hooks `PostToolUse` dijalankan setelah tool sudah dijalankan dengan sukses. Input mencakup `tool_input`, argumen yang dikirim ke tool, dan `tool_response`, hasil yang dikembalikan. Skema yang tepat untuk keduanya tergantung pada tool. Path `tool_input` file-tool tiba dalam format yang sama seperti untuk [PreToolUse](#pretooluse-input): selalu absolut, dengan pemisah asli platform, jadi backslashes di Windows. Untuk MCP tool, input juga membawa objek [`mcp_server`](#pretooluse-input).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).

2145 2140 

2146```json theme={null}2141```json theme={null}

2147{2142{


2164}2159}

2165```2160```

2166 2161 

2167| Bidang | Deskripsi |2162| Field | Deskripsi |

2168| :- | :- |2163| :- | :- |

2169| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Mengecualikan waktu yang dihabiskan dalam prompt izin dan PreToolUse hooks |2164| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Tidak termasuk waktu yang dihabiskan dalam permintaan izin dan hook PreToolUse |

2170 2165 

2171<h4 id="posttooluse-decision-control">2166<h4 id="posttooluse-decision-control">

2172 PostToolUse decision control2167 Kontrol keputusan PostToolUse

2173</h4>2168</h4>

2174 2169 

2175Hooks `PostToolUse` dapat memberikan umpan balik ke Claude setelah eksekusi tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:2170Hook `PostToolUse` dapat memberikan umpan balik kepada Claude setelah eksekusi tool. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:

2176 2171 

2177| Bidang | Deskripsi |2172| Field | Deskripsi |

2178| :- | :- |2173| :- | :- |

2179| `decision` | `"block"` menambahkan `reason` di sebelah hasil tool. Claude masih 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` |

2180| `reason` | Penjelasan ditampilkan ke Claude saat `decision` adalah `"block"` |2175| `reason` | Penjelasan yang ditampilkan kepada Claude ketika `decision` adalah `"block"` |

2181| `additionalContext` | String ditambahkan ke konteks Claude bersama hasil tool. Lihat [Add context for 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) |

2182| `classifierContext` | Catatan singkat tentang hasil panggilan ini untuk pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) daripada untuk Claude. Lihat [Annotate a result for the auto mode classifier](#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 [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 |

2183| `updatedToolOutput` | Mengganti output tool dengan nilai yang disediakan sebelum dikirim ke Claude. Nilai harus cocok dengan bentuk output tool |2178| `updatedToolOutput` | Mengganti output tool dengan nilai yang diberikan sebelum dikirim ke Claude. Nilai harus sesuai dengan bentuk output tool |

2184| `updatedMCPToolOutput` | Mengganti output untuk [MCP tools](#match-mcp-tools) saja. Lebih suka `updatedToolOutput`, yang bekerja untuk semua tools |2179| `updatedMCPToolOutput` | Mengganti output hanya untuk [tool MCP](#match-mcp-tools). Sebaiknya gunakan `updatedToolOutput`, yang berfungsi untuk semua tool |

2185 2180 

2186Contoh di bawah mengganti output pemanggilan `Bash`. Nilai pengganti cocok dengan bentuk output tool `Bash`:2181Contoh di bawah ini mengganti output dari panggilan `Bash`. Nilai pengganti sesuai dengan bentuk output tool `Bash`:

2187 2182 

2188```json theme={null}2183```json theme={null}

2189{2184{


2201```2196```

2202 2197 

2203<Warning>2198<Warning>

2204 `updatedToolOutput` hanya mengubah apa yang dilihat Claude. Tool sudah dijalankan pada saat hook dijalankan, jadi file apa pun yang ditulis, perintah yang dijalankan, atau permintaan jaringan yang dikirim sudah berlaku. Telemetri seperti span tool OpenTelemetry dan acara analitik juga menangkap output asli sebelum hook dijalankan. Untuk mencegah atau memodifikasi pemanggilan tool sebelum dijalankan, gunakan hook [PreToolUse](#pretooluse) sebagai gantinya.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.

2205 2200 

2206 Nilai pengganti harus cocok dengan bentuk output tool. Tools bawaan mengembalikan objek terstruktur daripada string biasa. Misalnya, `Bash` mengembalikan objek dengan bidang `stdout`, `stderr`, `interrupted`, dan `isImage`. Untuk tools bawaan, nilai yang tidak cocok dengan skema output tool diabaikan dan output asli digunakan. Output tool MCP dilewatkan tanpa validasi skema. Menghapus detail kesalahan yang Claude butuhkan dapat menyebabkannya melanjutkan dengan 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.

2207</Warning>2202</Warning>

2208 2203 

2209<h4 id="annotate-a-result-for-the-auto-mode-classifier">2204<h4 id="annotate-a-result-for-the-auto-mode-classifier">

2210 Annotate a result for the auto mode classifier2205 Memberi anotasi pada hasil untuk pengklasifikasi auto mode

2211</h4>2206</h4>

2212 2207 

2213Kembalikan `classifierContext` untuk mengirimkan catatan singkat tentang hasil pemanggilan tool ke pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) daripada ke Claude. Pengklasifikasi [tidak pernah menerima hasil tool sendiri](/docs/id/permission-modes#how-the-classifier-evaluates-actions), jadi bidang ini adalah cara yang didukung untuk memberitahunya sesuatu tentang apa yang dikembalikan panggilan sebelum itu meninjau tindakan yang lebih baru. Bidang 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 memberitahunya sesuatu tentang apa yang dikembalikan suatu panggilan sebelum ia meninjau tindakan berikutnya. Field ini memerlukan Claude Code v2.1.236 atau lebih baru.

2214 2209 

2215Contoh di bawah memberitahu pengklasifikasi dari mana output query berasal:2210Contoh di bawah ini memberi tahu pengklasifikasi dari mana output sebuah query berasal:

2216 2211 

2217```json theme={null}2212```json theme={null}

2218{2213{


2223}2218}

2224```2219```

2225 2220 

2226Berapa banyak bobot yang diberikan pengklasifikasi pada catatan tergantung pada di mana Anda mengonfigurasi hook:2221Seberapa besar bobot yang diberikan pengklasifikasi pada catatan tersebut bergantung pada tempat Anda mengonfigurasi hook:

2227 2222 

2228* **Hooks yang dikonfigurasi dalam Claude Code**: untuk hooks dari file pengaturan, plugins, skills, dan frontmatter agent, pengklasifikasi memperlakukan catatan sebagai konteks yang tidak diverifikasi yang disediakan aplikasi. Catatan tidak pernah menetapkan niat pengguna, dan jika itu mengklaim Anda menyetujui atau meminta sesuatu, pengklasifikasi memeriksa klaim itu 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 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 percakapan

2229* **Callback in-process Agent SDK**: ketika aplikasi yang menyematkan Claude Code mendaftarkan hook sebagai callback [TypeScript SDK](/docs/id/agent-sdk/hooks) dan mengembalikan catatan selama sesi langsung, pengklasifikasi dapat menimbang pernyataan pengguna yang disampaikan dalam catatan sebagai niat pengguna. Pernyataan seperti itu dapat memenuhi persyaratan persetujuan yang akan diterima pengklasifikasi dari pesan yang Anda kirim, tetapi tidak pernah mengangkat blok yang pesan Anda sendiri tidak bisa angkat juga. Setelah sesi dilanjutkan, Claude Code memperlakukan catatan yang dipulihkan sebagai konteks yang tidak diverifikasi. Ketika hooks dari kedua grup menganotasi panggilan yang sama, pengklasifikasi memperlakukan catatan gabungan sebagai konteks yang tidak diverifikasi2224* **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 diverifikasi

2230 2225 

2231Claude Code menerapkan batas-batas ini ketika mengirimkan catatan:2226Claude Code menerapkan batasan berikut saat mengirimkan catatan:

2232 2227 

2233* **Panjang**: Claude Code membatasi catatan untuk satu pemanggilan tool pada 2.000 karakter dan memotong sisanya. Batas dibagikan di seluruh setiap hook yang merespons panggilan itu2228* **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

2234* **Respons sinkron saja**: Claude Code mengabaikan bidang dalam respons hook yang [berjalan di latar belakang](#run-hooks-in-the-background), karena respons itu 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

2235* **Panggilan yang tidak dicatat pengklasifikasi**: transkrip pengklasifikasi menghilangkan pencarian read-only seperti pembacaan file dan pencarian. Claude Code membuang catatan yang dilampirkan pada salah satu panggilan itu2230* **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 tersebut

2236* **Interaksi dengan penulisan ulang**: ketika catatan menjelaskan output yang Anda ganti dengan `updatedToolOutput`, kembalikan kedua bidang dalam respons hook yang sama. Claude Code menjatuhkan catatan jika penulisan ulang itu ditolak atau penulisan ulang hook lain menggantinya. 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 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 output

2237 2232 

2238<Warning>2233<Warning>

2239 Pengklasifikasi membaca konten yang Anda tempatkan dalam `classifierContext` sebagai informasi dari aplikasi yang menyelenggarakan sesi, jadi jangan salin output tool yang tidak dipercaya atau teks pihak ketiga ke dalamnya. Jaga catatan ke pernyataan singkat tentang panggilan satu ini, seperti fakta tentang asalnya atau pernyataan pengguna tentangnya; jangan gunakan bidang untuk mengirimkan pesan yang tidak terkait atau aliran acara.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.

2240</Warning>2235</Warning>

2241 2236 

2242<h3 id="posttoolusefailure">2237<h3 id="posttoolusefailure">

2243 PostToolUseFailure2238 PostToolUseFailure

2244</h3>2239</h3>

2245 2240 

2246Dijalankan ketika tool yang mulai dijalankan gagal: tool melempar kesalahan, atau tool MCP mengembalikan hasil kesalahan. Gunakan ini untuk mencatat kegagalan, mengirim alert, atau memberikan umpan balik korektif ke Claude.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.

2247 2242 

2248Cocok pada nama tool, nilai yang sama seperti PreToolUse.2243Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2249 2244 

2250<Note>2245<Note>

2251 Event ini tidak dijalankan untuk pemanggilan tool yang ditolak sebelum eksekusi: nama tool yang tidak dikenal, input yang gagal validasi skema atau tool-spesifik, atau penolakan izin. Penolakan validasi dikembalikan sebagai hasil `tool_use_error` dan terjadi sebelum hooks dijalankan, jadi mereka tidak menjalankan `PreToolUse` atau event ini. Penolakan izin menjalankan `PreToolUse` tetapi bukan 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 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).

2252</Note>2247</Note>

2253 2248 

2254<h4 id="posttoolusefailure-input">2249<h4 id="posttoolusefailure-input">

2255 PostToolUseFailure input2250 Input PostToolUseFailure

2256</h4>2251</h4>

2257 2252 

2258PostToolUseFailure hooks menerima bidang `tool_name` dan `tool_input` yang sama seperti PostToolUse, bersama dengan informasi kesalahan sebagai bidang tingkat atas. Untuk MCP tool, mereka juga menerima objek [`mcp_server`](#pretooluse-input). Misalnya, perintah `npm test` yang gagal mungkin memberikan: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:

2259 2254 

2260```json theme={null}2255```json theme={null}

2261{2256{


2276}2271}

2277```2272```

2278 2273 

2279| Bidang | Deskripsi |2274| Field | Deskripsi |

2280| :- | :- |2275| :- | :- |

2281| `error` | String menjelaskan apa yang salah. Format tergantung pada tool yang gagal |2276| `error` | String yang menjelaskan apa yang salah. Formatnya bergantung pada tool yang gagal |

2282| `is_interrupt` | Boolean opsional. True ketika kegagalan mencapai Claude Code sebagai abort daripada sebagai kesalahan yang dilaporkan tool. Membatalkan tool yang berjalan tidak menjalankan 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 oleh tool. Membatalkan tool yang sedang berjalan tidak memicu hook ini; hasil tool membawa pesan interupsi sebagai gantinya |

2283| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Mengecualikan waktu yang dihabiskan dalam prompt izin dan PreToolUse hooks |2278| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Tidak termasuk waktu yang dihabiskan dalam permintaan izin dan hook PreToolUse |

2284 2279 

2285String `error` umumnya teks yang sama yang diterima Claude sebagai hasil tool yang gagal. Format-nya bervariasi menurut tool dan kegagalan. Kunci 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 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.

2286 2281 

2287* Untuk Bash dan PowerShell, perintah yang dijalankan dan keluar menghasilkan baris pertama `Exit code N`, kemudian output apa pun yang dihasilkan perintah sebagai satu blok dengan stdout dan stderr yang diinterleave2282* 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-seling

2288* Payload juga dapat membawa pesan kegagalan telanjang tanpa baris kode keluar, 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

2289* Claude Code middle-truncates 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`

2290 2285 

2291<h4 id="posttoolusefailure-decision-control">2286<h4 id="posttoolusefailure-decision-control">

2292 PostToolUseFailure decision control2287 Kontrol keputusan PostToolUseFailure

2293</h4>2288</h4>

2294 2289 

2295Hooks `PostToolUseFailure` dapat memberikan konteks ke Claude setelah kegagalan tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:2290Hook `PostToolUseFailure` dapat memberikan konteks kepada Claude setelah kegagalan tool. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:

2296 2291 

2297| Bidang | Deskripsi |2292| Field | Deskripsi |

2298| :- | :- |2293| :- | :- |

2299| `additionalContext` | String ditambahkan ke konteks Claude bersama kesalahan. Lihat [Add context for Claude](#add-context-for-claude) |2294| `additionalContext` | String yang ditambahkan ke konteks Claude bersama error. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

2300 2295 

2301```json theme={null}2296```json theme={null}

2302{2297{


2311 PostToolBatch2306 PostToolBatch

2312</h3>2307</h3>

2313 2308 

2314Dijalankan sekali setelah setiap tool call dalam batch telah terselesaikan, sebelum Claude Code mengirimkan permintaan berikutnya ke model. `PostToolUse` dijalankan sekali per tool, yang berarti dijalankan secara bersamaan ketika Claude membuat pemanggilan tool paralel. `PostToolBatch` dijalankan tepat sekali dengan batch lengkap, jadi ini adalah tempat yang tepat untuk menyuntikkan konteks yang bergantung pada set tools yang dijalankan daripada pada tool tunggal. Tidak ada matcher untuk event ini.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.

2315 2310 

2316<h4 id="posttoolbatch-input">2311<h4 id="posttoolbatch-input">

2317 PostToolBatch input2312 Input PostToolBatch

2318</h4>2313</h4>

2319 2314 

2320Selain [bidang input umum](#common-input-fields), PostToolBatch hooks menerima `tool_calls`, array yang menjelaskan setiap pemanggilan tool dalam batch:2315Selain [field input umum](#common-input-fields), hook PostToolBatch menerima `tool_calls`, sebuah array yang menjelaskan setiap panggilan tool dalam batch:

2321 2316 

2322```json theme={null}2317```json theme={null}

2323{2318{


2331 "tool_name": "Read",2326 "tool_name": "Read",

2332 "tool_input": {"file_path": "/.../ledger/accounts.py"},2327 "tool_input": {"file_path": "/.../ledger/accounts.py"},

2333 "tool_use_id": "toolu_01...",2328 "tool_use_id": "toolu_01...",

2334 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."2329 "tool_response": "1\tfrom __future__ import annotations\n2\t..."

2335 },2330 },

2336 {2331 {

2337 "tool_name": "Read",2332 "tool_name": "Read",

2338 "tool_input": {"file_path": "/.../ledger/transactions.py"},2333 "tool_input": {"file_path": "/.../ledger/transactions.py"},

2339 "tool_use_id": "toolu_02...",2334 "tool_use_id": "toolu_02...",

2340 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."2335 "tool_response": "1\tfrom __future__ import annotations\n2\t..."

2341 }2336 }

2342 ]2337 ]

2343}2338}

2344```2339```

2345 2340 

2346`tool_response` berisi konten yang sama yang diterima model dalam blok `tool_result` yang sesuai. Nilainya adalah string yang diserialisasi atau array blok konten, persis seperti yang dikeluarkan tool. Untuk `Read`, itu berarti teks dengan awalan nomor baris daripada konten file mentah. Respons dapat besar, jadi hanya parse bidang yang Anda butuhkan.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.

2347 2342 

2348<Note>2343<Note>

2349 Bentuk `tool_response` berbeda dari `PostToolUse`. `PostToolUse` meneruskan objek `Output` terstruktur tool, seperti `{filePath: "...", type: "create"}` untuk `Write`; `PostToolBatch` meneruskan konten `tool_result` yang diserialisasi yang dilihat model.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.

2350</Note>2345</Note>

2351 2346 

2352<h4 id="posttoolbatch-decision-control">2347<h4 id="posttoolbatch-decision-control">

2353 PostToolBatch decision control2348 Kontrol keputusan PostToolBatch

2354</h4>2349</h4>

2355 2350 

2356Hooks `PostToolBatch` dapat menyuntikkan konteks untuk Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini: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:

2357 2352 

2358| Bidang | Deskripsi |2353| Field | Deskripsi |

2359| :- | :- |2354| :- | :- |

2360| `additionalContext` | String konteks yang disuntikkan sekali sebelum panggilan model berikutnya. Lihat [Add context for Claude](#add-context-for-claude) untuk detail pengiriman, apa yang harus dimasukkan, dan cara sesi yang dilanjutkan menangani nilai masa lalu |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 |

2361 2356 

2362```json theme={null}2357```json theme={null}

2363{2358{


2368}2363}

2369```2364```

2370 2365 

2371Mengembalikan `decision: "block"` atau `continue: false` menghentikan loop agentic sebelum panggilan model berikutnya. Pesan pemblokiran berasal dari JSON `reason` atau `stopReason`, atau dari stderr pada keluar 2. Anda melihatnya sebagai peringatan dalam transkrip, dan itu tetap dalam percakapan, jadi 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 di transkrip, dan pesan itu tetap ada dalam percakapan, sehingga Claude melihatnya ketika percakapan berlanjut.

2372 2367 

2373<h3 id="permissiondenied">2368<h3 id="permissiondenied">

2374 PermissionDenied2369 PermissionDenied

2375</h3>2370</h3>

2376 2371 

2377Dijalankan ketika [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) menolak pemanggilan tool, termasuk ketika itu menolak tanpa putusan pengklasifikasi karena [pemeriksaan keamanan terpisah dari auto mode menolak permintaan pengklasifikasi sendiri](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action) atau respons-nya tidak diparse. Hook ini hanya dijalankan dalam auto mode: itu tidak dijalankan ketika Anda secara manual menolak dialog izin, ketika hook `PreToolUse` memblokir panggilan, atau ketika aturan `deny` cocok. Gunakan untuk mencatat penolakan, menyesuaikan konfigurasi, atau memberitahu model itu dapat mencoba lagi pemanggilan tool.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.

2378 2373 

2379Cocok pada nama tool, nilai yang sama seperti PreToolUse.2374Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2380 2375 

2381<h4 id="permissiondenied-input">2376<h4 id="permissiondenied-input">

2382 PermissionDenied input2377 Input PermissionDenied

2383</h4>2378</h4>

2384 2379 

2385Selain [bidang input umum](#common-input-fields), PermissionDenied hooks menerima `tool_name`, `tool_input`, `tool_use_id`, dan `reason`. Untuk MCP tool, mereka 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 juga menerima objek [`mcp_server`](#pretooluse-input).

2386 2381 

2387```json theme={null}2382```json theme={null}

2388{2383{


2401}2396}

2402```2397```

2403 2398 

2404| Bidang | Deskripsi |2399| Field | Deskripsi |

2405| :- | :- |2400| :- | :- |

2406| `reason` | Alasan penolakan. Untuk putusan pengklasifikasi, dalam sebagian besar sesi itu menamai aturan yang cocok dalam tanda kurung siku, seperti `[Data Exfiltration]`; lihat [Review denials](/docs/id/auto-mode-config#review-denials) untuk bentuk lainnya. Untuk [penolakan tanpa putusan](#permissiondenied-decision-control), itu dimulai dengan `Auto mode could not evaluate this action and is blocking it for safety`. Untuk penolakan karena model pengklasifikasi tidak tersedia, itu adalah teks tetap `Classifier unavailable` |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` |

2407 2402 

2408<h4 id="permissiondenied-decision-control">2403<h4 id="permissiondenied-decision-control">

2409 PermissionDenied decision control2404 Kontrol keputusan PermissionDenied

2410</h4>2405</h4>

2411 2406 

2412PermissionDenied hooks dapat memberitahu model itu dapat mencoba lagi pemanggilan tool yang ditolak. Kembalikan objek JSON dengan `hookSpecificOutput.retry` diatur ke `true`:2407Hook PermissionDenied dapat memberi tahu model bahwa ia boleh mencoba ulang panggilan tool yang ditolak. Kembalikan objek JSON dengan `hookSpecificOutput.retry` diatur ke `true`:

2413 2408 

2414```json theme={null}2409```json theme={null}

2415{2410{


2420}2415}

2421```2416```

2422 2417 

2423Ketika `retry` adalah `true`, Claude Code menambahkan pesan ke percakapan memberitahu model itu dapat mencoba lagi pemanggilan tool. Penolakan itu sendiri tidak dibatalkan. Jika hook Anda tidak mengembalikan JSON, atau mengembalikan `retry: false`, penolakan tetap dan model menerima pesan penolakan asli.2418Ketika `retry` bernilai `true`, Claude Code menambahkan pesan ke percakapan yang memberi tahu model bahwa ia boleh mencoba ulang panggilan tool. Claude Code tidak membatalkan penolakan itu sendiri. Jika hook Anda tidak mengembalikan JSON, atau mengembalikan `retry: false`, penolakan tetap berlaku dan model menerima pesan penolakan asli.

2424 2419 

2425Claude Code mengabaikan `retry: true` ketika pengklasifikasi menghasilkan [tidak ada putusan pada tindakan](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action): respons-nya tidak diparse, atau pemeriksaan keamanan terpisah dari auto mode menolak permintaan pengklasifikasi sendiri. Untuk penolakan itu, Claude Code sudah memberitahu model dalam pesan penolakan apakah harus mencoba lagi nanti atau melanjutkan.2420Claude Code mengabaikan `retry: true` ketika pengklasifikasi tidak menghasilkan [putusan atas tindakan tersebut](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action): responsnya tidak dapat di-parse, atau pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri. Untuk penolakan tersebut, Claude Code sudah memberi tahu model dalam pesan penolakan apakah harus mencoba ulang nanti atau melanjutkan.

2426 2421 

2427<h3 id="notification">2422<h3 id="notification">

2428 Notification2423 Notification

2429</h3>2424</h3>

2430 2425 

2431Dijalankan ketika Claude Code mengirimkan notifikasi. Cocok pada tipe notifikasi. Hilangkan matcher untuk menjalankan hooks untuk semua tipe notifikasi.2426Berjalan ketika Claude Code mengirim notifikasi. Mencocokkan berdasarkan jenis notifikasi. Hilangkan matcher untuk menjalankan hook untuk semua jenis notifikasi.

2432 2427 

2433Anda menerima hook events ini bahkan dengan notifikasi desktop dimatikan: pengaturan `preferredNotifChannel`, termasuk `notifications_disabled`, hanya mengubah cara Anda diperingatkan, bukan apakah hook Anda dijalankan.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.

2434 2429 

2435| Matcher | Kapan dijalankan |2430| Matcher | Kapan dipicu |

2436| :- | :- |2431| :- | :- |

2437| `permission_prompt` | Claude memerlukan Anda untuk menyetujui penggunaan tool atau [network request](/docs/id/sandboxing#network-isolation) perintah sandboxed, dan prompt telah menunggu sekitar enam detik |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 |

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

2439| `auth_success` | Autentikasi selesai |2434| `auth_success` | Autentikasi selesai |

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

2441| `elicitation_url_dialog` | Server MCP meminta Anda untuk membuka URL browser dan Anda belum mengetik selama sekitar enam detik |2436| `elicitation_url_dialog` | Server MCP meminta Anda membuka URL browser dan Anda belum mengetik selama sekitar enam detik |

2442| `elicitation_complete` | Server MCP melaporkan bahwa [URL-mode elicitation](#elicitation-input) selesai |2437| `elicitation_complete` | Server MCP melaporkan bahwa [elicitation mode URL](#elicitation-input) telah selesai |

2443| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |2438| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |

2444| `agent_needs_input` | Sesi latar belakang mulai menunggu input Anda sementara [agent view](/docs/id/agent-view) terbuka di terminal, atau sesi saat ini menanyakan [pertanyaan setup terminal teammate agent team](/docs/id/agent-teams#choose-a-display-mode) 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 |

2445| `agent_completed` | Sesi latar belakang selesai atau gagal. Dijalankan hanya 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 |

2446| `quota_auto_resume_fired` | Claude Code melanjutkan tugas Anda setelah batas penggunaan claude.ai menjeda itu: pada reset, atau lebih cepat ketika sesuatu yang Anda lakukan dalam Claude Code selama menunggu, seperti menambahkan kredit penggunaan, meningkatkan rencana, atau beralih model, membuat penggunaan tersedia lagi, 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 Anda, atau beralih model, membuat penggunaan tersedia kembali, dengan [pengecualian pengaturan model](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset) |

2447| `quota_auto_resume_stale` | Batas penggunaan claude.ai reset sementara komputer Anda tidur selama lebih dari sekitar 30 menit. Claude Code menunggu Anda menekan `Enter` alih-alih melanjutkan. Setelah tidur yang lebih pendek itu melanjutkan dan menjalankan `quota_auto_resume_fired` sebagai gantinya |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 |

2448| `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 reset bergerak lebih dari 24 jam jauh selama penantian yang dimulai Claude Code sendiri, tugas yang dilanjutkan terus mencapai batas, atau kelanjutan diblokir sebelum mencapai model. Tidak dijalankan ketika Anda menekan `Esc` atau `Ctrl+C`, atau memilih **Don't continue automatically** |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** |

2449 2444 

2450Tipe `agent_needs_input` dan `agent_completed` memerlukan Claude Code v2.1.198 atau lebih baru.2445Jenis `agent_needs_input` dan `agent_completed` memerlukan Claude Code v2.1.198 atau lebih baru.

2451 2446 

2452Tipe `quota_auto_resume_fired`, `quota_auto_resume_stale`, dan `quota_auto_resume_disabled` memerlukan Claude Code v2.1.234 atau lebih baru.2447Jenis `quota_auto_resume_fired`, `quota_auto_resume_stale`, dan `quota_auto_resume_disabled` memerlukan Claude Code v2.1.234 atau lebih baru.

2453 2448 

2454Dalam sesi terminal, `permission_prompt` untuk network request perintah sandboxed memerlukan Claude Code v2.1.246 atau lebih baru.2449Dalam sesi terminal, `permission_prompt` untuk permintaan jaringan dari perintah yang di-sandbox memerlukan Claude Code v2.1.246 atau lebih baru.

2455 2450 

2456`agent_needs_input` untuk pertanyaan setup terminal teammate memerlukan Claude Code v2.1.248 atau lebih baru.2451`agent_needs_input` untuk pertanyaan penyiapan terminal dari rekan tim memerlukan Claude Code v2.1.248 atau lebih baru.

2457 2452 

2458<Note>2453<Note>

2459 Tipe `permission_prompt`, `idle_prompt`, `elicitation_dialog`, dan `elicitation_url_dialog` berbagi waktu mereka dengan notifikasi desktop, jadi dalam sesi terminal Anda hanya melihat mereka ketika Anda tampak jauh dari terminal:2454 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:

2460 2455 

2461 * Harapkan `permission_prompt` sekali Anda belum mengetik selama sekitar enam detik. Timer dimulai ketika prompt izin muncul, dan setiap keystroke menundanya. Untuk menjalankan hook segera ketika Claude meminta izin menggunakan tool, gunakan [PermissionRequest](#permissionrequest) sebagai gantinya.2456 * `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.

2462 * Harapkan `idle_prompt` sekitar 60 detik setelah Claude selesai merespons, dan hanya jika Anda belum mengetik sejak itu. Claude Code tidak mengirimkan `idle_prompt` sementara itu menunggu batas penggunaan claude.ai untuk reset. Ketika penantian berakhir sendiri, salah satu tipe `quota_auto_resume_*` dijalankan sebagai gantinya.2457 * `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.

2463 * Harapkan `elicitation_dialog` untuk formulir elicitation, atau `elicitation_url_dialog` untuk permintaan URL browser, sekali Anda belum mengetik selama sekitar enam detik. Keduanya berbagi gerbang enam detik yang sama seperti `permission_prompt`: timer dimulai ketika dialog muncul, dan setiap keystroke menundanya.2458 * `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.

2464 2459 

2465 Permintaan izin atau elicitation yang tiba sementara dialog lain di layar menyimpan gerbang enam detik yang sama, timed dari ketika permintaan tiba. Notifikasi-nya dapat mencapai Anda sementara permintaan masih menunggu di belakang dialog terbuka.2460 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.

2466</Note>2461</Note>

2467 2462 

2468Claude Code waktu `permission_prompt` berbeda dalam sesi di mana itu mengirimkan permintaan izin ke callback [`canUseTool`](/docs/id/agent-sdk/user-input) Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code menyelenggarakan Claude Code:2463Claude 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:

2469 2464 

2470* Harapkan `permission_prompt` sekitar enam detik setelah Claude meminta izin. Claude Code tidak menundanya sementara Anda mengetik.2465* `permission_prompt` akan muncul sekitar enam detik setelah Claude meminta izin. Claude Code tidak menundanya saat Anda mengetik.

2471* Jika Anda atau hook [PermissionRequest](#permissionrequest) menjawab lebih cepat, Claude Code tidak menjalankan `permission_prompt`.2466* Jika Anda atau hook [PermissionRequest](#permissionrequest) menjawab lebih cepat, Claude Code tidak menjalankan `permission_prompt`.

2472* Atur [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/id/env-vars) ke `1` untuk mematikan `permission_prompt` dalam sesi ini.2467* Atur [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/id/env-vars) ke `1` untuk mematikan `permission_prompt` dalam sesi ini.

2473 2468 

2474Sebelum v2.1.233, `permission_prompt` tidak dijalankan dalam sesi ini.2469Sebelum v2.1.233, `permission_prompt` tidak dipicu dalam sesi ini.

2475 2470 

2476Gunakan matchers terpisah untuk menjalankan handler berbeda tergantung pada tipe notifikasi. Konfigurasi ini memicu skrip alert khusus izin ketika Claude memerlukan persetujuan izin dan notifikasi berbeda ketika Claude telah idle:2471Gunakan 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:

2477 2472 

2478```json theme={null}2473```json theme={null}

2479{2474{


2503```2498```

2504 2499 

2505<h4 id="notification-input">2500<h4 id="notification-input">

2506 Notification input2501 Input Notification

2507</h4>2502</h4>

2508 2503 

2509Selain [bidang input umum](#common-input-fields), Notification hooks menerima `message` dengan teks notifikasi, `title` opsional, dan `notification_type` menunjukkan tipe mana yang dijalankan.2504Selain [field input umum](#common-input-fields), hook Notification menerima `message` dengan teks notifikasi, `title` opsional, dan `notification_type` yang menunjukkan jenis mana yang dipicu.

2510 2505 

2511```json theme={null}2506```json theme={null}

2512{2507{


2520}2515}

2521```2516```

2522 2517 

2523Notification hooks tidak dapat memblokir atau memodifikasi notifikasi. Claude Code membuang `systemMessage` dan `continue` mereka tetapi masih memancarkan [`terminalSequence`](#emit-terminal-notifications), yang merupakan apa yang contoh notifikasi desktop andalkan. Notification hooks dimaksudkan untuk efek samping seperti meneruskan notifikasi ke layanan eksternal.2518Hook Notification tidak dapat memblokir atau memodifikasi notifikasi. Claude Code membuang field `systemMessage` dan `continue` miliknya tetapi tetap mengeluarkan [`terminalSequence`](#emit-terminal-notifications), yang menjadi andalan contoh notifikasi desktop. Hook Notification ditujukan untuk efek samping seperti meneruskan notifikasi ke layanan eksternal.

2524 2519 

2525<h3 id="subagentstart">2520<h3 id="subagentstart">

2526 SubagentStart2521 SubagentStart

2527</h3>2522</h3>

2528 2523 

2529Dijalankan ketika Claude spawn subagent dengan tool Agent, ketika Claude [melanjutkan subagent](/docs/id/sub-agents#resume-subagents), dan setiap kali [agent team](/docs/id/agent-teams) in-process teammate menangani pesan baru. Mendukung matchers untuk memfilter berdasarkan nama tipe agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [custom subagents](/docs/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file.2524Berjalan 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.

2530 2525 

2531Untuk subagents yang dikirim oleh [plugin](/docs/id/plugins), tipe agent adalah pengenal bersifat plugin seperti `my-plugin:reviewer`, bukan nama frontmatter biasa. Titik dua menempatkan nama bersifat plugin pada jalur ekspresi reguler, jadi jangkar matcher dengan `^` dan `$` untuk kecocokan yang tepat: `^my-plugin:reviewer$`.2526Untuk 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$`.

2532 2527 

2533<h4 id="subagentstart-input">2528<h4 id="subagentstart-input">

2534 SubagentStart input2529 Input SubagentStart

2535</h4>2530</h4>

2536 2531 

2537Selain [bidang input umum](#common-input-fields), SubagentStart hooks menerima `agent_id` dengan pengenal unik untuk subagent dan `agent_type` dengan nama agent yang matcher filter.2532Selain [field input umum](#common-input-fields), hook SubagentStart menerima `agent_id` dengan pengidentifikasi unik untuk subagent dan `agent_type` dengan nama agent yang difilter oleh matcher.

2538 2533 

2539```json theme={null}2534```json theme={null}

2540{2535{


2547}2542}

2548```2543```

2549 2544 

2550SubagentStart hooks tidak dapat memblokir pembuatan subagent, tetapi mereka dapat menyuntikkan konteks ke subagent. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan:2545Hook 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:

2551 2546 

2552| Bidang | Deskripsi |2547| Field | Deskripsi |

2553| :- | :- |2548| :- | :- |

2554| `additionalContext` | String ditambahkan ke konteks subagent pada awal percakapannya, sebelum prompt pertamanya. Lihat [Add context for Claude](#add-context-for-claude) |2549| `additionalContext` | String yang ditambahkan ke konteks subagent di awal percakapannya, sebelum prompt pertamanya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

2555 2550 

2556```json theme={null}2551```json theme={null}

2557{2552{


2562}2557}

2563```2558```

2564 2559 

2565Ketika hook dijalankan lagi untuk subagent yang sama, Claude Code menyuntikkan konteks yang dikembalikan hanya ketika konteks subagent tidak sudah menyimpan salinan dari run yang lebih awal. Salinan yang disuntikkan saat peluncuran tetap di tempat, meninggalkan [prompt cache](/docs/id/prompt-caching#subagents-and-the-cache) subagent utuh. Setelah [auto-compaction](/docs/id/sub-agents#auto-compaction) membuang salinan itu, Claude Code menyuntikkan konteks run berikutnya lagi.2560Ketika 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.

2566 2561 

2567<h3 id="subagentstop">2562<h3 id="subagentstop">

2568 SubagentStop2563 SubagentStop

2569</h3>2564</h3>

2570 2565 

2571Dijalankan ketika subagent Claude Code telah selesai merespons. Cocok pada tipe agent, nilai yang sama seperti SubagentStart.2566Berjalan ketika subagent Claude Code telah selesai merespons. Mencocokkan berdasarkan jenis agent, dengan nilai yang sama seperti SubagentStart.

2572 2567 

2573<h4 id="subagentstop-input">2568<h4 id="subagentstop-input">

2574 SubagentStop input2569 Input SubagentStop

2575</h4>2570</h4>

2576 2571 

2577Selain [bidang input umum](#common-input-fields), SubagentStop hooks menerima `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, dan `last_assistant_message`. Bidang `agent_type` adalah nilai yang digunakan untuk pemfilteran matcher. `transcript_path` adalah transkrip sesi utama, sementara `agent_transcript_path` adalah transkrip subagent sendiri yang disimpan dalam folder `subagents/` bersarang. Bidang `last_assistant_message` berisi konten teks respons akhir subagent, jadi hooks dapat mengaksesnya tanpa mengurai file transkrip.2572Selain [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.

2578 2573 

2579Tidak setiap event SubagentStop berasal dari subagent yang di-spawn 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 dijalankan ketika salah satunya selesai. Untuk events tersebut, `agent_type` adalah nama agent yang dijalankan sebagai sesi itu sendiri, seperti yang diatur dengan [`--agent`](/docs/id/cli-reference#cli-flags) atau [pengaturan `agent`](/docs/id/settings-reference#agent), dan string kosong ketika sesi berjalan tanpa agent.2574Tidak 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.

2580 2575 

2581`matcher` yang menyebutkan tipe agent tidak cocok dengan `agent_type` kosong. Hook yang matcher-nya dihilangkan, `""`, atau `"*"`, atau berupa ekspresi reguler yang cocok dengan string kosong, juga dijalankan untuk events dengan `agent_type` kosong.2576`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.

2582 2577 

2583Pada Claude Code v2.1.271 atau lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference) mengirimkan laporannya melalui tool itu sebelum berhenti. Bidang `last_assistant_message` kemudian menyimpan teks penutup subagent, jika ada, yang bukan laporan yang disampaikan. Laporan adalah input `message` panggilan itu, yang hook `PreToolUse` atau `PostToolUse` yang cocok pada `SubagentHandback` menerima sebagai `tool_input.message`.2578Pada 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`.

2584 2579 

2585SubagentStop hooks juga menerima array `background_tasks` dan `session_crons` yang dijelaskan di bawah [Stop input](#stop-input). Kedua array bersifat scoped ke sesi induk, bukan subagent.2580Hook 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.

2586 2581 

2587```json theme={null}2582```json theme={null}

2588{2583{


2601}2596}

2602```2597```

2603 2598 

2604SubagentStop hooks menggunakan format kontrol keputusan yang sama seperti [Stop hooks](#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. Untuk menyuntikkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.2599Hook 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.

2605 2600 

2606<h3 id="taskcreated">2601<h3 id="taskcreated">

2607 TaskCreated2602 TaskCreated

2608</h3>2603</h3>

2609 2604 

2610Dijalankan ketika tugas sedang dibuat melalui tool `TaskCreate`. Gunakan ini untuk menegakkan konvensi penamaan, memerlukan deskripsi tugas, atau mencegah tugas tertentu dari dibuat. Dalam [sesi tanpa Task tools](/docs/id/tools-reference#task-tool-availability), event ini tidak dijalankan.2605Berjalan 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.

2611 2606 

2612TaskCreated hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.2607Hook TaskCreated tidak mendukung matcher dan dipicu pada setiap kejadian.

2613 2608 

2614<h4 id="taskcreated-input">2609<h4 id="taskcreated-input">

2615 TaskCreated input2610 Input TaskCreated

2616</h4>2611</h4>

2617 2612 

2618Selain [bidang input umum](#common-input-fields), TaskCreated hooks menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.2613Selain [field input umum](#common-input-fields), hook TaskCreated menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.

2619 2614 

2620```json theme={null}2615```json theme={null}

2621{2616{


2631}2626}

2632```2627```

2633 2628 

2634| Bidang | Deskripsi |2629| Field | Deskripsi |

2635| :- | :- |2630| :- | :- |

2636| `task_id` | Pengenal tugas yang sedang dibuat |2631| `task_id` | Pengidentifikasi tugas yang sedang dibuat |

2637| `task_subject` | Judul tugas |2632| `task_subject` | Judul tugas |

2638| `task_description` | Deskripsi detail tugas. Mungkin tidak ada |2633| `task_description` | Deskripsi terperinci tugas. Mungkin tidak ada |

2639| `teammate_name` | Nama teammate yang membuat tugas. Mungkin tidak ada |2634| `teammate_name` | Nama rekan tim yang membuat tugas. Mungkin tidak ada |

2640| `team_name` | Nama team yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2635| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2641 2636 

2642<h4 id="taskcreated-decision-control">2637<h4 id="taskcreated-decision-control">

2643 TaskCreated decision control2638 Kontrol keputusan TaskCreated

2644</h4>2639</h4>

2645 2640 

2646Hook TaskCreated dapat memblokir pembuatan dengan dua cara. Baik cara, Claude Code menghapus tugas dan mengembalikan pesan Anda ke Claude sebagai kesalahan tool. Claude Code mengabaikan `continue: false` dari event ini dan Claude terus bekerja.2641Hook 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.

2647 2642 

2648* **Kode keluar 2**: Claude Code mengembalikan teks stderr sebagai pesan.2643* **Exit code 2**: Claude Code mengembalikan teks stderr sebagai pesan.

2649* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code mengembalikan `reason` sebagai pesan.2644* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code mengembalikan `reason` sebagai pesan.

2650 2645 

2651Contoh ini memblokir tugas yang subjeknya tidak mengikuti format yang diperlukan:2646Contoh ini memblokir tugas yang subjeknya tidak mengikuti format yang diwajibkan:

2652 2647 

2653```bash theme={null}2648```bash theme={null}

2654#!/bin/bash2649#!/bin/bash


2667 TaskCompleted2662 TaskCompleted

2668</h3>2663</h3>

2669 2664 

2670Dijalankan ketika tugas sedang ditandai sebagai selesai. Ini dijalankan dalam dua situasi: ketika agent apa pun secara eksplisit menandai tugas sebagai selesai melalui tool TaskUpdate, atau ketika [agent team](/docs/id/agent-teams) teammate menyelesaikan giliran dengan tugas yang sedang berlangsung. Gunakan ini untuk menegakkan kriteria penyelesaian seperti passing tests atau lint checks sebelum tugas dapat ditutup.2665Berjalan 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.

2671 2666 

2672TaskCompleted hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.2667Hook TaskCompleted tidak mendukung matcher dan dipicu pada setiap kejadian.

2673 2668 

2674<h4 id="taskcompleted-input">2669<h4 id="taskcompleted-input">

2675 TaskCompleted input2670 Input TaskCompleted

2676</h4>2671</h4>

2677 2672 

2678Selain [bidang input umum](#common-input-fields), TaskCompleted hooks menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.2673Selain [field input umum](#common-input-fields), hook TaskCompleted menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.

2679 2674 

2680```json theme={null}2675```json theme={null}

2681{2676{


2692}2687}

2693```2688```

2694 2689 

2695| Bidang | Deskripsi |2690| Field | Deskripsi |

2696| :- | :- |2691| :- | :- |

2697| `task_id` | Pengenal tugas yang sedang diselesaikan |2692| `task_id` | Pengidentifikasi tugas yang sedang diselesaikan |

2698| `task_subject` | Judul tugas |2693| `task_subject` | Judul tugas |

2699| `task_description` | Deskripsi detail tugas. Mungkin tidak ada |2694| `task_description` | Deskripsi terperinci tugas. Mungkin tidak ada |

2700| `teammate_name` | Nama teammate yang menyelesaikan tugas. Mungkin tidak ada |2695| `teammate_name` | Nama rekan tim yang menyelesaikan tugas. Mungkin tidak ada |

2701| `team_name` | Nama team yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2696| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2702 2697 

2703<h4 id="taskcompleted-decision-control">2698<h4 id="taskcompleted-decision-control">

2704 TaskCompleted decision control2699 Kontrol keputusan TaskCompleted

2705</h4>2700</h4>

2706 2701 

2707TaskCompleted hooks mendukung dua cara untuk mengontrol penyelesaian tugas:2702Hook TaskCompleted mendukung dua cara untuk mengontrol penyelesaian tugas:

2708 2703 

2709* **Kode keluar 2**: tugas tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik.2704* **Exit code 2**: tugas tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik.

2710* **JSON `{"continue": false, "stopReason": "..."}`**: ketika teammate yang menyelesaikan gilirannya memicu event, menghentikan teammate sepenuhnya, mencocokkan perilaku hook `Stop`. `stopReason` ditampilkan ke pengguna. Ketika tool `TaskUpdate` memicu event, Claude Code mengabaikan `continue: false`; kode keluar 2 masih memblokir penyelesaian.2705* **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.

2711 2706 

2712Contoh ini menjalankan tests dan memblokir penyelesaian tugas jika gagal:2707Contoh ini menjalankan pengujian dan memblokir penyelesaian tugas jika pengujian gagal:

2713 2708 

2714```bash theme={null}2709```bash theme={null}

2715#!/bin/bash2710#!/bin/bash

2716INPUT=$(cat)2711INPUT=$(cat)

2717TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')2712TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

2718 2713 

2719# Jalankan test suite2714# Run the test suite

2720if ! npm test 2>&1; then2715if ! npm test 2>&1; then

2721 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&22716 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&2

2722 exit 22717 exit 2


2729 Stop2724 Stop

2730</h3>2725</h3>

2731 2726 

2732Dijalankan ketika agent Claude Code utama telah selesai merespons. Tidak dijalankan jika penghentian terjadi karena interupsi pengguna. Kesalahan API menjalankan [StopFailure](#stopfailure) sebagai gantinya.2727Berjalan ketika agent utama Claude Code telah selesai merespons. Tidak berjalan jika

2728penghentian terjadi karena interupsi pengguna. Error API memicu

2729[StopFailure](#stopfailure) sebagai gantinya.

2733 2730 

2734<Tip>2731<Tip>

2735 Perintah [`/goal`](/docs/id/goal) adalah pintasan bawaan untuk hook Stop berbasis prompt yang bersifat sesi. Gunakan ketika Anda ingin Claude terus bekerja sampai kondisi terpenuhi tanpa menulis konfigurasi hook.2732 Perintah [`/goal`](/docs/id/goal) adalah pintasan bawaan untuk hook Stop berbasis prompt dengan cakupan sesi. Gunakan ini ketika Anda ingin Claude terus bekerja menuju suatu kondisi tanpa menulis konfigurasi hook.

2736</Tip>2733</Tip>

2737 2734 

2738<h4 id="stop-input">2735<h4 id="stop-input">

2739 Stop input2736 Input Stop

2740</h4>2737</h4>

2741 2738 

2742Selain [bidang input umum](#common-input-fields), Stop hooks menerima `stop_hook_active`, `last_assistant_message`, `background_tasks`, dan `session_crons`. Bidang `stop_hook_active` adalah `true` ketika Claude Code sudah melanjutkan sebagai hasil dari stop hook. Periksa nilai ini atau proses transkrip untuk menghindari memblokir pada kondisi yang tidak akan pernah terselesaikan. Claude Code menimpa hook dan mengakhiri giliran setelah 8 blok berturut-turut.2739Selain [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).

2743 2740 

2744Bidang `last_assistant_message` berisi konten teks respons akhir Claude, jadi hooks dapat mengaksesnya tanpa mengurai file transkrip. Untuk hooks yang bertindak pada giliran yang baru selesai, seperti hooks read-aloud atau notifikasi, gunakan bidang ini daripada membaca `transcript_path`: file transkrip tidak dijamin menyertakan pesan akhir pada Stop time di semua versi.2741Field `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.

2745 2742 

2746Array `background_tasks` dan `session_crons` memungkinkan hooks membedakan "sesi 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 berlangsung atau dijadwalkan.2743Array `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.

2747 2744 

2748Setiap entry dalam `background_tasks` menjelaskan satu tugas yang sedang berlangsung dan menggunakan bidang-bidang ini:2745Setiap entri dalam `background_tasks` menjelaskan satu tugas yang sedang berjalan dan menggunakan field berikut:

2749 2746 

2750| Bidang | Deskripsi |2747| Field | Deskripsi |

2751| :- | :- |2748| :- | :- |

2752| `id` | Pengenal tugas |2749| `id` | Pengidentifikasi tugas |

2753| `type` | Label tipe tugas yang ramah seperti `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, atau `MCP task`. Setiap label mengidentifikasi fitur Claude Code mana yang membuat tugas. Kembali ke diskriminan mentah untuk tipe yang tidak dikenali |2750| `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 |

2754| `status` | Status tugas saat ini |2751| `status` | Status tugas saat ini |

2755| `description` | Deskripsi teks bebas, dibatasi 1000 karakter dengan penanda `… [+N chars]` dalam string ketika dipotong |2752| `description` | Deskripsi teks bebas, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` di dalam string ketika dipotong |

2756| `command` | Baris perintah shell, dibatasi 1000 karakter. Hadir hanya untuk tugas `shell` |2753| `command` | Baris perintah shell, dibatasi hingga 1000 karakter. Hanya ada untuk tugas `shell` |

2757| `agent_type` | Nama tipe subagent. Hadir hanya untuk tugas `subagent` |2754| `agent_type` | Nama jenis subagent. Hanya ada untuk tugas `subagent` |

2758| `server` | Nama server MCP. Hadir hanya untuk tugas `monitor` dan `MCP task` |2755| `server` | Nama server MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |

2759| `tool` | Nama tool MCP. Hadir hanya untuk tugas `monitor` dan `MCP task` |2756| `tool` | Nama tool MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |

2760| `name` | Nama workflow. Hadir hanya untuk tugas `workflow` |2757| `name` | Nama workflow. Hanya ada untuk tugas `workflow` |

2761 2758 

2762Setiap entry dalam `session_crons` menjelaskan satu wakeup terjadwal yang bersifat sesi, bersumber dari `CronCreate`, `ScheduleWakeup`, dan `/loop`:2759Setiap entri dalam `session_crons` menjelaskan satu wakeup terjadwal dengan cakupan sesi, yang bersumber dari `CronCreate`, `ScheduleWakeup`, dan `/loop`:

2763 2760 

2764| Bidang | Deskripsi |2761| Field | Deskripsi |

2765| :- | :- |2762| :- | :- |

2766| `id` | Pengenal tugas cron |2763| `id` | Pengidentifikasi tugas cron |

2767| `schedule` | Ekspresi cron, misalnya `0 9 * * 1-5` |2764| `schedule` | Ekspresi cron, misalnya `0 9 * * 1-5` |

2768| `recurring` | `false` untuk wakeup satu kali yang jadwalnya mengkodekan waktu api tunggal, `true` untuk tugas yang api ulang pada setiap kecocokan |2765| `recurring` | `false` untuk wakeup sekali jalan yang jadwalnya mengodekan satu waktu pemicu, `true` untuk tugas yang dipicu ulang pada setiap kecocokan |

2769| `prompt` | Prompt yang dikirimkan ketika cron api, dibatasi 1000 karakter dengan penanda `… [+N chars]` yang sama |2766| `prompt` | Prompt yang dikirim ketika cron dipicu, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` yang sama |

2770 2767 

2771Contoh ini menunjukkan input Stop dengan satu tugas shell yang sedang berlangsung dan satu cron berulang:2768Contoh ini menunjukkan input Stop dengan satu tugas shell yang sedang berjalan dan satu cron berulang:

2772 2769 

2773```json theme={null}2770```json theme={null}

2774{2771{


2800```2797```

2801 2798 

2802<h4 id="stop-decision-control">2799<h4 id="stop-decision-control">

2803 Stop decision control2800 Kontrol keputusan Stop

2804</h4>2801</h4>

2805 2802 

2806Hooks `Stop` dan `SubagentStop` dapat mengontrol apakah Claude melanjutkan. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:2803Hook `Stop` dan `SubagentStop` dapat mengontrol apakah Claude melanjutkan. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:

2807 2804 

2808| Bidang | Deskripsi |2805| Field | Deskripsi |

2809| :- | :- |2806| :- | :- |

2810| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |2807| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |

2811| `reason` | Diperlukan saat `decision` adalah `"block"`. Memberitahu Claude mengapa itu harus melanjutkan |2808| `reason` | Wajib ketika `decision` adalah `"block"`. Memberi tahu Claude mengapa ia harus melanjutkan |

2812| `hookSpecificOutput.additionalContext` | Umpan balik non-error untuk Claude. Percakapan berlanjut sehingga Claude dapat bertindak atas itu, tetapi tidak seperti `decision: "block"` itu ditampilkan dalam transkrip sebagai umpan balik hook daripada kesalahan hook |2809| `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 |

2813 2810 

2814Hook yang memblokir dengan keluar 2 merutekan dengan cara yang sama seperti `reason`: Claude menerima pesan stderr sebagai penjelasan mengapa itu harus melanjutkan.2811Hook yang memblokir dengan keluar menggunakan kode 2 dirutekan dengan cara yang sama seperti `reason`: Claude menerima pesan stderr sebagai penjelasan mengapa ia harus melanjutkan.

2815 2812 

2816```json theme={null}2813```json theme={null}

2817{2814{


2820}2817}

2821```2818```

2822 2819 

2823Gunakan `additionalContext` ketika hook bekerja seperti yang dirancang dan memberikan panduan Claude, seperti "jalankan test suite sebelum selesai". Ini membuat percakapan terus berlanjut melalui proteksi loop yang sama seperti `decision: "block"`, yaitu input `stop_hook_active` dan batas 8-kontinuasi berturut-turut, tetapi transkrip memberi label `Stop hook feedback` dan tidak ada notifikasi kesalahan hook yang ditampilkan:2820Gunakan `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:

2824 2821 

2825```json theme={null}2822```json theme={null}

2826{2823{


2835 StopFailure2832 StopFailure

2836</h3>2833</h3>

2837 2834 

2838Dijalankan alih-alih [Stop](#stop) ketika giliran berakhir karena kesalahan API. Claude Code mengabaikan output hook dan kode keluar, selain dari [`terminalSequence`](#emit-terminal-notifications). Gunakan ini untuk mencatat kegagalan, mengirim alert, atau mengambil tindakan pemulihan ketika Claude tidak dapat menyelesaikan respons karena rate limits, masalah autentikasi, atau kesalahan API lainnya.2835Berjalan sebagai pengganti [Stop](#stop) ketika giliran berakhir karena error API. Claude Code mengabaikan output dan exit code hook, kecuali [`terminalSequence`](#emit-terminal-notifications). Gunakan ini untuk mencatat kegagalan, mengirim peringatan, atau mengambil tindakan pemulihan ketika Claude tidak dapat menyelesaikan respons karena rate limit, masalah autentikasi, atau error API lainnya.

2839 2836 

2840<h4 id="stopfailure-input">2837<h4 id="stopfailure-input">

2841 StopFailure input2838 Input StopFailure

2842</h4>2839</h4>

2843 2840 

2844Selain [bidang input umum](#common-input-fields), StopFailure hooks menerima `error`, `error_details` opsional, dan `last_assistant_message` opsional. Bidang `error` mengidentifikasi tipe kesalahan dan digunakan untuk pemfilteran matcher.2841Selain [field input umum](#common-input-fields), hook StopFailure menerima `error`, `error_details` opsional, dan `last_assistant_message` opsional. Field `error` mengidentifikasi jenis error dan digunakan untuk pemfilteran matcher.

2845 2842 

2846| Bidang | Deskripsi |2843| Field | Deskripsi |

2847| :- | :- |2844| :- | :- |

2848| `error` | Tipe kesalahan: `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` |2845| `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` |

2849| `error_details` | Detail tambahan tentang kesalahan, ketika tersedia |2846| `error_details` | Detail tambahan tentang error, jika tersedia |

2850| `last_assistant_message` | Teks kesalahan yang dirender ditampilkan dalam percakapan. Tidak seperti `Stop` dan `SubagentStop`, di mana bidang ini menyimpan output percakapan Claude, untuk `StopFailure` itu berisi string kesalahan API itu sendiri, seperti `"API Error: Rate limit reached"` |2847| `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"` |

2851 2848 

2852```json theme={null}2849```json theme={null}

2853{2850{


2861}2858}

2862```2859```

2863 2860 

2864StopFailure hooks tidak memiliki kontrol keputusan. Mereka dijalankan untuk tujuan notifikasi dan logging saja.2861Hook StopFailure tidak memiliki kontrol keputusan. Hook ini hanya berjalan untuk tujuan notifikasi dan pencatatan log.

2865 2862 

2866<h3 id="teammateidle">2863<h3 id="teammateidle">

2867 TeammateIdle2864 TeammateIdle

2868</h3>2865</h3>

2869 2866 

2870Dijalankan ketika [agent team](/docs/id/agent-teams) teammate akan menjadi idle setelah menyelesaikan giliran. Gunakan ini untuk menegakkan quality gates sebelum teammate berhenti bekerja, seperti memerlukan passing lint checks atau memverifikasi bahwa file output ada.2867Berjalan 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.

2871 2868 

2872TeammateIdle hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.2869Hook TeammateIdle tidak mendukung matcher dan dipicu pada setiap kejadian.

2873 2870 

2874<h4 id="teammateidle-input">2871<h4 id="teammateidle-input">

2875 TeammateIdle input2872 Input TeammateIdle

2876</h4>2873</h4>

2877 2874 

2878Selain [bidang input umum](#common-input-fields), TeammateIdle hooks menerima `teammate_name` dan `team_name`.2875Selain [field input umum](#common-input-fields), hook TeammateIdle menerima `teammate_name` dan `team_name`.

2879 2876 

2880```json theme={null}2877```json theme={null}

2881{2878{


2889}2886}

2890```2887```

2891 2888 

2892| Bidang | Deskripsi |2889| Field | Deskripsi |

2893| :- | :- |2890| :- | :- |

2894| `teammate_name` | Nama teammate yang akan menjadi idle |2891| `teammate_name` | Nama rekan tim yang akan menjadi idle |

2895| `team_name` | Nama team yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2892| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2896 2893 

2897<h4 id="teammateidle-decision-control">2894<h4 id="teammateidle-decision-control">

2898 TeammateIdle decision control2895 Kontrol keputusan TeammateIdle

2899</h4>2896</h4>

2900 2897 

2901TeammateIdle hooks mendukung dua cara untuk mengontrol perilaku teammate:2898Hook TeammateIdle mendukung dua cara untuk mengontrol perilaku rekan tim:

2902 2899 

2903* **Kode keluar 2**: teammate menerima pesan stderr sebagai umpan balik dan terus bekerja alih-alih menjadi idle.2900* **Exit code 2**: rekan tim menerima pesan stderr sebagai umpan balik dan terus bekerja alih-alih menjadi idle.

2904* **JSON `{"continue": false, "stopReason": "..."}`**: menghentikan teammate sepenuhnya, mencocokkan perilaku hook `Stop`. `stopReason` ditampilkan ke pengguna.2901* **JSON `{"continue": false, "stopReason": "..."}`**: menghentikan rekan tim sepenuhnya, sesuai dengan perilaku hook `Stop`. `stopReason` ditampilkan kepada pengguna.

2905 2902 

2906Contoh ini memeriksa bahwa artefak build ada sebelum mengizinkan teammate menjadi idle:2903Contoh ini memeriksa bahwa artefak build ada sebelum mengizinkan rekan tim menjadi idle:

2907 2904 

2908```bash theme={null}2905```bash theme={null}

2909#!/bin/bash2906#!/bin/bash


2920 ConfigChange2917 ConfigChange

2921</h3>2918</h3>

2922 2919 

2923Dijalankan ketika file konfigurasi berubah selama sesi. Gunakan ini untuk mengaudit perubahan pengaturan, menegakkan kebijakan keamanan, atau memblokir modifikasi tidak sah ke file konfigurasi.2920Berjalan ketika file konfigurasi berubah selama sesi. Gunakan ini untuk mengaudit perubahan pengaturan, menegakkan kebijakan keamanan, atau memblokir modifikasi yang tidak sah pada file konfigurasi.

2924 2921 

2925Claude Code menjalankan ConfigChange hooks ketika file pengaturan, file kebijakan terkelola, atau file skill berubah. Untuk kebijakan terkelola, itu menjalankan mereka hanya ketika `managed-settings.json` atau file dalam `managed-settings.d/` berubah. Itu menerapkan [server-managed settings](/docs/id/server-managed-settings) dan perubahan ke preferensi terkelola macOS atau kebijakan registri Windows tanpa menjalankan mereka. Di WSL dengan [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings), itu juga menerapkan file pengaturan terkelola Windows-side yang berubah pada polling kebijakan-nya tanpa menjalankan mereka.2922Claude 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.

2926 2923 

2927Matcher memfilter pada sumber konfigurasi:2924Matcher memfilter berdasarkan sumber konfigurasi:

2928 2925 

2929| Matcher | Kapan dijalankan |2926| Matcher | Kapan dipicu |

2930| :- | :- |2927| :- | :- |

2931| `user_settings` | `~/.claude/settings.json` berubah |2928| `user_settings` | `~/.claude/settings.json` berubah |

2932| `project_settings` | `.claude/settings.json` berubah |2929| `project_settings` | `.claude/settings.json` berubah |

2933| `local_settings` | `.claude/settings.local.json` berubah |2930| `local_settings` | `.claude/settings.local.json` berubah |

2934| `policy_settings` | `managed-settings.json` atau file dalam `managed-settings.d/` berubah |2931| `policy_settings` | `managed-settings.json` atau file di `managed-settings.d/` berubah |

2935| `skills` | File skill dalam `.claude/skills/` berubah |2932| `skills` | File skill di `.claude/skills/` berubah |

2936 2933 

2937Contoh ini mencatat semua perubahan konfigurasi untuk audit keamanan:2934Contoh ini mencatat semua perubahan konfigurasi untuk audit keamanan:

2938 2935 


2955```2952```

2956 2953 

2957<h4 id="configchange-input">2954<h4 id="configchange-input">

2958 ConfigChange input2955 Input ConfigChange

2959</h4>2956</h4>

2960 2957 

2961Selain [bidang input umum](#common-input-fields), ConfigChange hooks menerima `source` dan secara opsional `file_path`. Bidang `source` menunjukkan tipe konfigurasi mana yang berubah, dan `file_path` menyediakan path ke file spesifik yang dimodifikasi.2958Selain [field input umum](#common-input-fields), hook ConfigChange menerima `source` dan secara opsional `file_path`. Field `source` menunjukkan jenis konfigurasi mana yang berubah, dan `file_path` menyediakan path ke file spesifik yang dimodifikasi.

2962 2959 

2963```json theme={null}2960```json theme={null}

2964{2961{


2972```2969```

2973 2970 

2974<h4 id="configchange-decision-control">2971<h4 id="configchange-decision-control">

2975 ConfigChange decision control2972 Kontrol keputusan ConfigChange

2976</h4>2973</h4>

2977 2974 

2978ConfigChange hooks dapat memblokir perubahan konfigurasi dari berlaku. Gunakan kode keluar 2 atau JSON `decision` untuk mencegah perubahan. Ketika diblokir, pengaturan baru tidak diterapkan ke sesi yang berjalan.2975Hook ConfigChange dapat memblokir perubahan konfigurasi agar tidak berlaku. Gunakan exit code 2 atau `decision` JSON untuk mencegah perubahan. Ketika diblokir, pengaturan baru tidak diterapkan ke sesi yang sedang berjalan.

2979 2976 

2980| Bidang | Deskripsi |2977| Field | Deskripsi |

2981| :- | :- |2978| :- | :- |

2982| `decision` | `"block"` mencegah perubahan konfigurasi diterapkan. Hilangkan untuk mengizinkan perubahan |2979| `decision` | `"block"` mencegah perubahan konfigurasi diterapkan. Hilangkan untuk mengizinkan perubahan |

2983| `reason` | Diterima tetapi tidak pernah ditampilkan |2980| `reason` | Diterima tetapi tidak pernah ditampilkan |


2989}2986}

2990```2987```

2991 2988 

2992Perubahan `policy_settings` tidak dapat diblokir. Hooks masih dijalankan untuk sumber `policy_settings` ketika file pengaturan terkelola pada mesin berubah, jadi Anda dapat menggunakannya untuk mencatat edit itu, tetapi keputusan blocking apa pun diabaikan. Ini memastikan pengaturan yang dikelola enterprise selalu berlaku. Claude Code tidak menjalankan ConfigChange hooks ketika [server-managed settings](/docs/id/server-managed-settings) tiba atau refresh.2989Perubahan `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.

2993 2990 

2994Claude Code bertindak atas keputusan pemblokiran dari output JSON ConfigChange hook dan membuang `systemMessage` dan `continue`. Perubahan yang diblokir tidak menampilkan pesan kepada Anda atau Claude, baik Anda memblokir dengan `reason` atau dengan stderr pada keluar 2. Claude Code hanya menulis baris ke debug log.2991Claude 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.

2995 2992 

2996<h3 id="cwdchanged">2993<h3 id="cwdchanged">

2997 CwdChanged2994 CwdChanged

2998</h3>2995</h3>

2999 2996 

3000Dijalankan ketika perintah shell dalam percakapan utama mengubah direktori kerja, misalnya ketika Claude menjalankan perintah `cd`. Gunakan ini untuk bereaksi terhadap perubahan direktori: muat ulang variabel lingkungan, aktifkan toolchains khusus proyek, atau jalankan skrip setup secara otomatis. Berpasangan dengan [FileChanged](#filechanged) untuk tools seperti [direnv](https://direnv.net/) yang mengelola lingkungan per-direktori.2997Berjalan 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.

3001 2998 

3002CwdChanged hooks memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file itu bertahan ke perintah Bash berikutnya sampai event CwdChanged berikutnya, ketika Claude Code menghapusnya.2999Hook 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.

3003 3000 

3004CwdChanged tidak mendukung matchers dan dijalankan pada setiap perubahan direktori.3001CwdChanged tidak mendukung matcher dan dipicu pada setiap kejadian.

3005 3002 

3006<h4 id="cwdchanged-input">3003<h4 id="cwdchanged-input">

3007 CwdChanged input3004 Input CwdChanged

3008</h4>3005</h4>

3009 3006 

3010Selain [bidang input umum](#common-input-fields), CwdChanged hooks menerima `old_cwd` dan `new_cwd`.3007Selain [field input umum](#common-input-fields), hook CwdChanged menerima `old_cwd` dan `new_cwd`.

3011 3008 

3012```json theme={null}3009```json theme={null}

3013{3010{


3021```3018```

3022 3019 

3023<h4 id="cwdchanged-output">3020<h4 id="cwdchanged-output">

3024 CwdChanged output3021 Output CwdChanged

3025</h4>3022</h4>

3026 3023 

3027Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, CwdChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis menetapkan path file mana yang [FileChanged](#filechanged) pantau:3024Selain [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):

3028 3025 

3029| Bidang | Deskripsi |3026| Field | Deskripsi |

3030| :- | :- |3027| :- | :- |

3031| `watchPaths` | Array path absolut. Menggantikan daftar watch dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Mengembalikan array kosong menghapus daftar dinamis, yang khas saat memasuki direktori baru |3028| `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 |

3032 3029 

3033CwdChanged hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir perubahan direktori.3030Hook CwdChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir perubahan direktori.

3034 3031 

3035Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON mereka dan membuang `continue`. Dalam sesi interaktif, itu menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tidak mencapai aliran pesan SDK.3032Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON-nya dan membuang `continue`. Dalam sesi interaktif, Claude Code menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tersebut tidak mencapai aliran pesan SDK.

3036 3033 

3037<h3 id="directoryadded">3034<h3 id="directoryadded">

3038 DirectoryAdded3035 DirectoryAdded

3039</h3>3036</h3>

3040 3037 

3041Dijalankan setelah Anda menambahkan direktori kerja mid-session dengan perintah `/add-dir`, atau setelah klien SDK menambahkan satu dengan permintaan kontrol `register_repo_root`. Gunakan ini untuk menyiapkan repositori yang baru ditambahkan, misalnya dengan menginstal dependensinya.3038Berjalan setelah Anda menambahkan direktori kerja di tengah sesi dengan perintah `/add-dir`, atau setelah klien SDK menambahkannya dengan permintaan kontrol `register_repo_root`. Gunakan ini untuk menyiapkan repositori yang baru ditambahkan, misalnya dengan menginstal dependensinya.

3042 3039 

3043Claude Code tidak menjalankan event ini ketika:3040Claude Code tidak memicu event ini ketika:

3044 3041 

3045* Anda meneruskan direktori dengan flag startup `--add-dir`; [SessionStart](#sessionstart) mencakup direktori itu3042* Anda meneruskan direktori dengan flag startup `--add-dir`; [SessionStart](#sessionstart) mencakup direktori tersebut

3046* Anda menambahkan direktori di tab `/permissions` Workspace3043* Anda menambahkan direktori pada tab Workspace di `/permissions`

3047* Anda menambahkan direktori yang sudah merupakan direktori kerja atau di dalam satu3044* Anda menambahkan direktori yang sudah merupakan direktori kerja atau berada di dalamnya

3048 3045 

3049Claude Code menjalankan DirectoryAdded setelah menyegarkan status sandbox dan izin, jadi tools sandboxed sudah melihat direktori baru ketika hook Anda dijalankan. Perintah hook itu sendiri berjalan tanpa sandbox.3046Claude 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.

3050 3047 

3051Claude Code tidak menunggu hook: penambahan selesai segera, dan hook dijalankan di latar belakang dengan timeout default 600 detik.3048Claude Code tidak menunggu hook: penambahan selesai segera, dan hook berjalan di latar belakang dengan timeout default 600 detik.

3052 3049 

3053Matcher memfilter pada cara direktori ditambahkan:3050Matcher memfilter berdasarkan cara direktori ditambahkan:

3054 3051 

3055| Matcher | Kapan dijalankan |3052| Matcher | Kapan dipicu |

3056| :- | :- |3053| :- | :- |

3057| `slash_command` | Anda menambahkan direktori dengan `/add-dir` |3054| `slash_command` | Anda menambahkan direktori dengan `/add-dir` |

3058| `register_repo_root` | Klien SDK menambahkan direktori dengan permintaan kontrol `register_repo_root` |3055| `register_repo_root` | Klien SDK menambahkan direktori dengan permintaan kontrol `register_repo_root` |

3059 3056 

3060<h4 id="directoryadded-input">3057<h4 id="directoryadded-input">

3061 DirectoryAdded input3058 Input DirectoryAdded

3062</h4>3059</h4>

3063 3060 

3064Selain [bidang input umum](#common-input-fields), DirectoryAdded hooks menerima `directory` dan `source`.3061Selain [field input umum](#common-input-fields), hook DirectoryAdded menerima `directory` dan `source`.

3065 3062 

3066| Bidang | Deskripsi |3063| Field | Deskripsi |

3067| :- | :- |3064| :- | :- |

3068| `directory` | Path absolut dari direktori yang ditambahkan |3065| `directory` | Path absolut dari direktori yang ditambahkan |

3069| `source` | Bagaimana direktori ditambahkan, `"slash_command"` untuk `/add-dir` atau `"register_repo_root"` untuk permintaan kontrol SDK |3066| `source` | Cara direktori ditambahkan, `"slash_command"` untuk `/add-dir` atau `"register_repo_root"` untuk permintaan kontrol SDK |

3070 3067 

3071```json theme={null}3068```json theme={null}

3072{3069{


3079}3076}

3080```3077```

3081 3078 

3082DirectoryAdded hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir penambahan, yang sudah selesai ketika hook dijalankan. Claude Code membuang bidang `continue` dari output JSON mereka dan menampilkan sisanya berbeda per sumber:3079Hook 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:

3083 3080 

3084* `slash_command`: Claude Code mengirimkan output `systemMessage` hook ke Claude sebagai konteks pada giliran percakapan berikutnya, daripada menampilkannya kepada Anda. Jumlah hook yang gagal muncul dalam transkrip. Output kegagalan lengkap masuk ke debug log3081* `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 debug

3085* `register_repo_root`: Claude Code menulis output `systemMessage` dan output kegagalan ke debug log saja3082* `register_repo_root`: Claude Code menulis output `systemMessage` dan output kegagalan hanya ke log debug

3086 3083 

3087<h3 id="filechanged">3084<h3 id="filechanged">

3088 FileChanged3085 FileChanged

3089</h3>3086</h3>

3090 3087 

3091Dijalankan ketika file yang dipantau berubah di disk. Claude Code mendeteksi perubahan dengan filesystem watcher, bukan dengan memeriksa pemanggilan tool, jadi itu menjalankan hook tidak peduli apa yang mengubah file: pemanggilan tool `Edit` atau `Write`, skrip yang dijalankan Claude dengan `Bash`, atau proses di luar Claude Code sepenuhnya. Penggunaan umum adalah memuat ulang variabel lingkungan ketika file konfigurasi proyek berubah.3088Berjalan 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.

3092 3089 

3093Bidang `matcher` untuk event ini melayani dua peran:3090`matcher` untuk event ini memiliki dua peran:

3094 3091 

3095* **Bangun daftar watch**: nilai dibagi pada `|` dan setiap segmen terdaftar sebagai nama file literal di direktori kerja, jadi `".envrc|.env"` menonton tepat dua file itu. Pola regex tidak berguna di sini: nilai seperti `^\.env` akan menonton file yang secara harfiah bernama `^\.env`.3092* **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`.

3096* **Filter hooks mana yang dijalankan**: ketika file yang dipantau berubah, nilai yang sama memfilter grup hook mana yang dijalankan menggunakan [aturan matcher](#matcher-patterns) standar terhadap basename file yang berubah.3093* **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.

3097 3094 

3098Contoh ini menormalkan line endings dalam `data.csv` setelah perubahan apa pun, termasuk pemanggilan tool `Bash` atau skrip eksternal yang menulis ulang file:3095Contoh ini menormalkan akhir baris di `data.csv` setelah perubahan apa pun, termasuk perintah `Bash` atau skrip eksternal yang menulis ulang file:

3099 3096 

3100```json theme={null}3097```json theme={null}

3101{3098{


3115}3112}

3116```3113```

3117 3114 

3118Hook membaca path file yang berubah dari bidang `file_path` dari [JSON input](#filechanged-input) di stdin. Guard `grep`-nya menguji hal yang sama yang `perl` hapus, CR di akhir baris, jadi run setelah normalisasi keluar tanpa menyentuh file. Guard yang lebih longgar loop selamanya, karena `perl -i` menulis ulang file bahkan ketika itu mengganti tidak ada dan Claude Code menjalankan hook lagi setelah setiap penulisan ulang. Simpan skrip ini di `/path/to/normalize-line-endings.sh` dan buat dapat dieksekusi:3115Hook 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:

3119 3116 

3120```bash theme={null}3117```bash theme={null}

3121#!/bin/bash3118#!/bin/bash


3125fi3122fi

3126```3123```

3127 3124 

3128Untuk mengkonfirmasi hook bekerja, minta Claude untuk menambahkan baris CRLF ke `data.csv` dengan perintah `Bash`. Claude Code menjalankan hook dan file berakhir dengan line endings LF.3125Untuk 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.

3129 3126 

3130Untuk menonton file yang tidak dapat Anda beri nama di muka, kembalikan [`watchPaths`](#filechanged-output) dari hook untuk memperbarui daftar watch secara dinamis. Claude Code memulai watcher hanya ketika sesuatu memberi nama file untuk ditonton, jadi seed daftar dengan grup FileChanged yang matcher-nya memberi nama setidaknya satu file, atau dengan hook [SessionStart](#sessionstart-decision-control) atau [CwdChanged](#cwdchanged) yang mengembalikan `watchPaths`. Matcher masih memfilter grup hook mana yang dijalankan 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 watch. Matcher `"*"` juga cocok dengan setiap file, tetapi Claude Code mendaftarkannya dalam daftar watch seperti nilai lainnya, sebagai file literal bernama `*`.3127Untuk 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 `*`.

3131 3128 

3132FileChanged hooks memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file itu bertahan ke perintah Bash berikutnya sampai event [CwdChanged](#cwdchanged) berikutnya, ketika Claude Code menghapusnya.3129Hook 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.

3133 3130 

3134<h4 id="filechanged-input">3131<h4 id="filechanged-input">

3135 FileChanged input3132 Input FileChanged

3136</h4>3133</h4>

3137 3134 

3138Selain [bidang input umum](#common-input-fields), FileChanged hooks menerima `file_path` dan `event`.3135Selain [field input umum](#common-input-fields), hook FileChanged menerima `file_path` dan `event`.

3139 3136 

3140| Bidang | Deskripsi |3137| Field | Deskripsi |

3141| :- | :- |3138| :- | :- |

3142| `file_path` | Path absolut ke file yang berubah |3139| `file_path` | Path absolut ke file yang berubah |

3143| `event` | Apa yang terjadi: `"change"` untuk file yang dimodifikasi, `"add"` untuk file yang dibuat, atau `"unlink"` untuk file yang dihapus |3140| `event` | Apa yang terjadi: `"change"` untuk file yang dimodifikasi, `"add"` untuk file yang dibuat, atau `"unlink"` untuk file yang dihapus |


3154```3151```

3155 3152 

3156<h4 id="filechanged-output">3153<h4 id="filechanged-output">

3157 FileChanged output3154 Output FileChanged

3158</h4>3155</h4>

3159 3156 

3160Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, FileChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:3157Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook FileChanged dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:

3161 3158 

3162| Bidang | Deskripsi |3159| Field | Deskripsi |

3163| :- | :- |3160| :- | :- |

3164| `watchPaths` | Array path absolut. Menggantikan daftar watch 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 |3161| `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 |

3165 3162 

3166FileChanged hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir perubahan file dari terjadi.3163Hook FileChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir terjadinya perubahan file.

3167 3164 

3168Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON mereka dan membuang `continue`. Dalam sesi interaktif, itu menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tidak mencapai aliran pesan SDK.3165Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON-nya dan membuang `continue`. Dalam sesi interaktif, Claude Code menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tersebut tidak mencapai aliran pesan SDK.

3169 3166 

3170<h3 id="worktreecreate">3167<h3 id="worktreecreate">

3171 WorktreeCreate3168 WorktreeCreate

3172</h3>3169</h3>

3173 3170 

3174Dijalankan ketika worktree sedang dibuat, baik dari `claude --worktree`, dari [subagent 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 Claude Code isolasi dalam worktree-nya sendiri. Secara default Claude Code membuat salinan kerja terisolasi dengan `git worktree`. Mengonfigurasi hook WorktreeCreate menggantikan perilaku git default itu, memungkinkan Anda menggunakan sistem kontrol versi berbeda seperti SVN, Perforce, atau Mercurial.3171Berjalan 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.

3172 

3173Karena 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.

3175 3174 

3176Karena hook menggantikan perilaku default sepenuhnya, [`.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.3175Hook 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.

3177 3176 

3178Hook harus mengembalikan path ke direktori worktree yang dibuat. Claude Code menggunakan path ini sebagai direktori kerja untuk sesi terisolasi. Lihat [WorktreeCreate output](#worktreecreate-output) untuk cara setiap tipe hook mengembalikan path.3177Claude Code menindaklanjuti keberhasilan hook dan path yang dikembalikan, serta membuang `systemMessage` dan `continue`.

3179 3178 

3180Contoh ini membuat salinan kerja SVN dan mencetak path untuk Claude Code gunakan. Ganti URL repositori dengan milik Anda sendiri:3179Contoh ini membuat salinan kerja SVN dan mencetak path untuk digunakan Claude Code. Ganti URL repositori dengan milik Anda sendiri:

3181 3180 

3182```json theme={null}3181```json theme={null}

3183{3182{


3196}3195}

3197```3196```

3198 3197 

3199Hook membaca `name` worktree dari input JSON di stdin, melakukan checkout salinan segar ke direktori baru, dan mencetak path direktori. `echo` pada baris terakhir adalah apa yang Claude Code baca sebagai path worktree. Alihkan output lainnya ke stderr sehingga tidak mengganggu path.3198Hook 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.

3200 3199 

3201<h4 id="worktreecreate-input">3200<h4 id="worktreecreate-input">

3202 WorktreeCreate input3201 Input WorktreeCreate

3203</h4>3202</h4>

3204 3203 

3205Selain [bidang input umum](#common-input-fields), WorktreeCreate hooks menerima bidang `name`. Ini adalah pengenal slug untuk worktree baru, baik ditentukan oleh pengguna atau auto-generated, misalnya `bold-oak-a3f2`.3204Selain [field input umum](#common-input-fields), hook WorktreeCreate menerima field `name`. Ini adalah pengidentifikasi slug untuk worktree baru, baik yang ditentukan oleh pengguna maupun yang dibuat secara otomatis, misalnya `bold-oak-a3f2`.

3206 3205 

3207```json theme={null}3206```json theme={null}

3208{3207{


3215```3214```

3216 3215 

3217<h4 id="worktreecreate-output">3216<h4 id="worktreecreate-output">

3218 WorktreeCreate output3217 Output WorktreeCreate

3219</h4>3218</h4>

3220 3219 

3221WorktreeCreate hooks tidak menggunakan model keputusan allow/block standar. Sebaliknya, kesuksesan atau kegagalan hook menentukan hasil. Hook harus mengembalikan path ke direktori worktree yang dibuat:3220Hook WorktreeCreate tidak menggunakan model keputusan allow/block standar. Sebaliknya, keberhasilan atau kegagalan hook menentukan hasilnya. Hook harus mengembalikan path ke direktori worktree yang dibuat:

3222 3221 

3223* **Command hooks** (`type: "command"`): cetak path sebagai baris non-kosong terakhir dari stdout. Claude Code menghapus kode escape ANSI sebelum membaca baris itu, jadi banner startup shell yang dicetak sebelum `echo` Anda diabaikan. Alihkan output hook lainnya ke stderr.3222* **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.

3224* **HTTP hooks** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` dalam badan respons.3223* **Hook HTTP** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` di body respons.

3225 3224 

3226Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan kesalahan.3225Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan error.

3227 3226 

3228Claude Code menyelesaikan path relatif terhadap direktori tempat hook dijalankan, meruntuhkan segmen `.` atau `..` apa pun di dalamnya. Jika path yang dihasilkan bukan direktori yang dapat dimasuki Claude Code, sesi mencetak kesalahan yang menamai path dan keluar dengan kode 1.3227Claude 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.

3229 3228 

3230Claude Code menolak path absolut yang berisi segmen `.` atau `..`, dan path apa pun yang melewati symlink di bawah akar repositori, karena symlink yang berkomitmen ke repositori dapat mengarahkan worktree di luarnya. Kesalahan menamai komponen yang ditolak. Kembalikan path yang dinormalisasi yang tidak melewati symlink di dalam repositori. Sebelum v2.1.216, pembuatan worktree mengikuti path hook tanpa screening ini.3229Claude 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.

3231 3230 

3232<h3 id="worktreeremove">3231<h3 id="worktreeremove">

3233 WorktreeRemove3232 WorktreeRemove

3234</h3>3233</h3>

3235 3234 

3236Dijalankan ketika worktree sedang dihapus. Ini adalah pasangan cleanup untuk [WorktreeCreate](#worktreecreate). Event dijalankan ketika:3235Berjalan saat worktree sedang dihapus. Ini adalah pasangan pembersihan dari [WorktreeCreate](#worktreecreate). Event ini dipicu saat:

3237 3236 

3238* Anda keluar dari sesi `--worktree` dan memilih untuk menghapusnya3237* Anda keluar dari sesi `--worktree` dan memilih untuk menghapusnya

3239* Subagent dengan `isolation: "worktree"` selesai3238* subagent dengan `isolation: "worktree"` selesai

3240* Anda menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang worktree-nya dibuat hook3239* Anda menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang worktree-nya dibuat oleh hook

3240 

3241Untuk 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:

3242 

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

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

3245* **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).

3241 3246 

3242Untuk git-based worktrees, Claude Code menangani cleanup secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate untuk sistem kontrol versi non-git, pasangkan dengan hook WorktreeRemove untuk menangani cleanup. Tanpanya, direktori worktree ditinggalkan di disk.3247Claude 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.

3243 3248 

3244Claude Code membuang [bidang output JSON](#json-output) dari hook WorktreeRemove, seperti `systemMessage` dan `continue`.3249Claude Code membuang [field output JSON](#json-output) dari hook WorktreeRemove, seperti `systemMessage` dan `continue`.

3245 3250 

3246Untuk penghapusan sesi latar belakang, Claude Code memverifikasi path worktree yang disimpan sebelum menjalankan hook dan menolak path yang merupakan symlink atau melewati satu di bawah akar repositori. Hook dijalankan untuk worktree yang masih berisi file hanya ketika Anda mengkonfirmasi penghapusan dalam [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) menyimpan sesi dan worktree sebagai gantinya. Sebelum v2.1.216, hook dijalankan pada path yang disimpan tanpa pemeriksaan ini.3251Untuk 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.

3247 3252 

3248Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` dalam input hook. Contoh ini membaca path itu dan menghapus direktori:3253Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` di input hook. Contoh ini membaca path tersebut dan menghapus direktorinya:

3249 3254 

3250```json theme={null}3255```json theme={null}

3251{3256{


3265```3270```

3266 3271 

3267<h4 id="worktreeremove-input">3272<h4 id="worktreeremove-input">

3268 WorktreeRemove input3273 Input WorktreeRemove

3269</h4>3274</h4>

3270 3275 

3271Selain [bidang input umum](#common-input-fields), WorktreeRemove hooks menerima bidang `worktree_path`, yang merupakan path absolut ke worktree yang sedang dihapus.3276Selain [field input umum](#common-input-fields), hook WorktreeRemove menerima field `worktree_path`, yaitu path absolut ke worktree yang sedang dihapus.

3272 3277 

3273```json theme={null}3278```json theme={null}

3274{3279{


3280}3285}

3281```3286```

3282 3287 

3283Kode keluar hook WorktreeRemove menentukan hasil. Ketika hook keluar non-zero dan direktori di `worktree_path` masih ada setelahnya, penghapusan gagal:3288Exit code hook WorktreeRemove menentukan hasilnya. Ketika hook keluar dengan non-zero dan direktori di `worktree_path` masih ada setelahnya, penghapusan gagal:

3284 3289 

3285* Worktree tetap di disk, dan perintah hook dan stderr masuk ke [debug log](#debug-hooks).3290* Worktree tetap ada di disk, dan perintah serta stderr hook masuk ke [log debug](#debug-hooks).

3286* Jika Anda menghapus sesi latar belakang, sesi tetap juga. Pesan penolakan dalam [agent view](/docs/id/agent-view#what-deleting-a-session-removes) melaporkan bagaimana hook berakhir, seperti `exited 1`, mengutip awal stderr-nya, dan mengatakan apakah menghapus sesi lagi menghapus direktori bagaimanapun.3291* 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.

3287 3292 

3288<h3 id="precompact">3293<h3 id="precompact">

3289 PreCompact3294 PreCompact

3290</h3>3295</h3>

3291 3296 

3292Dijalankan sebelum Claude Code akan menjalankan operasi compact.3297Berjalan sebelum Claude Code akan menjalankan operasi compact.

3293 3298 

3294Nilai matcher menunjukkan apakah compaction dipicu secara manual atau otomatis:3299Nilai matcher menunjukkan apakah compaction dipicu secara manual atau otomatis:

3295 3300 

3296| Matcher | Kapan dijalankan |3301| Matcher | Kapan dipicu |

3297| :- | :- |3302| :- | :- |

3298| `manual` | `/compact` |3303| `manual` | `/compact` |

3299| `auto` | Auto-compact ketika percakapan mencapai [auto-compact window](/docs/id/model-config#set-the-auto-compact-window) |3304| `auto` | Auto-compact saat percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |

3300 3305 

3301Keluar dengan kode 2 untuk memblokir compaction. Untuk manual `/compact`, pesan stderr ditampilkan ke pengguna. Anda juga dapat memblokir dengan mengembalikan JSON dengan `"decision": "block"`.3306Keluar dengan kode 2 untuk memblokir compaction. Untuk `/compact` manual, pesan stderr ditampilkan kepada pengguna. Anda juga dapat memblokir dengan mengembalikan JSON dengan `"decision": "block"`.

3302 3307 

3303Memblokir automatic compaction memiliki efek berbeda tergantung pada kapan dijalankan. Jika compaction dipicu secara proaktif sebelum batas konteks, Claude Code melewatinya dan percakapan berlanjut tanpa compaction. Jika compaction dipicu untuk pulih dari kesalahan batas konteks yang sudah dikembalikan oleh API, kesalahan yang mendasar muncul dan permintaan saat ini gagal.3308Memblokir 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.

3304 3309 

3305Claude Code membuang bidang `systemMessage` dan `continue` dari hook PreCompact.3310Claude Code membuang field `systemMessage` dan `continue` dari hook PreCompact.

3306 3311 

3307<h4 id="precompact-input">3312<h4 id="precompact-input">

3308 PreCompact input3313 Input PreCompact

3309</h4>3314</h4>

3310 3315 

3311Selain [bidang input umum](#common-input-fields), PreCompact hooks menerima `trigger` dan `custom_instructions`. Untuk `manual`, `custom_instructions` berisi apa yang diteruskan pengguna ke `/compact` dan `null` ketika mereka tidak meneruskan apa pun. Untuk `auto`, `custom_instructions` adalah `null`.3316Selain [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`.

3312 3317 

3313```json theme={null}3318```json theme={null}

3314{3319{


3325 PostCompact3330 PostCompact

3326</h3>3331</h3>

3327 3332 

3328Dijalankan setelah Claude Code menyelesaikan operasi compact. Gunakan event ini untuk bereaksi terhadap status compacted baru, misalnya untuk mencatat ringkasan yang dihasilkan atau memperbarui status eksternal. Claude Code membuang bidang `systemMessage` dan `continue` dari hook PostCompact.3333Berjalan 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.

3329 3334 

3330Nilai matcher yang sama berlaku seperti untuk `PreCompact`:3335Nilai matcher yang sama berlaku seperti untuk `PreCompact`:

3331 3336 

3332| Matcher | Kapan dijalankan |3337| Matcher | Kapan dipicu |

3333| :- | :- |3338| :- | :- |

3334| `manual` | Setelah `/compact` |3339| `manual` | Setelah `/compact` |

3335| `auto` | Setelah auto-compact ketika percakapan mencapai [auto-compact window](/docs/id/model-config#set-the-auto-compact-window) |3340| `auto` | Setelah auto-compact saat percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |

3336 3341 

3337<h4 id="postcompact-input">3342<h4 id="postcompact-input">

3338 PostCompact input3343 Input PostCompact

3339</h4>3344</h4>

3340 3345 

3341Selain [bidang input umum](#common-input-fields), PostCompact hooks menerima `trigger` dan `compact_summary`. Bidang `compact_summary` berisi ringkasan percakapan yang dihasilkan oleh operasi compact.3346Selain [field input umum](#common-input-fields), hook PostCompact menerima `trigger` dan `compact_summary`. Field `compact_summary` berisi ringkasan percakapan yang dihasilkan oleh operasi compact.

3342 3347 

3343```json theme={null}3348```json theme={null}

3344{3349{


3351}3356}

3352```3357```

3353 3358 

3354PostCompact hooks tidak memiliki kontrol keputusan. Mereka tidak dapat mempengaruhi hasil compaction tetapi dapat melakukan tugas follow-up.3359Hook PostCompact tidak memiliki kontrol keputusan. Hook ini tidak dapat memengaruhi hasil compaction tetapi dapat melakukan tugas lanjutan.

3355 3360 

3356<h3 id="premodelswitch">3361<h3 id="premodelswitch">

3357 PreModelSwitch3362 PreModelSwitch

3358</h3>3363</h3>

3359 3364 

3360Dijalankan sebelum Claude Code menerapkan perubahan model yang Anda atau klien minta. Gunakan untuk memblokir switch, memerlukan konfirmasi, atau menampilkan apa yang akan dibiayai switch sebelum terjadi.3365Berjalan sebelum Claude Code menerapkan peralihan model yang diminta oleh Anda atau klien. Gunakan untuk memblokir peralihan, meminta konfirmasi, atau menampilkan biaya peralihan sebelum terjadi.

3361 3366 

3362PreModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Claude Code menjalankannya untuk permintaan ini:3367PreModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Claude Code menjalankannya untuk permintaan berikut:

3363 3368 

3364* `/model <name>` dan picker `/model`3369* `/model <name>` dan pemilih `/model`

3365* Picker model `Option+P` atau `Alt+P`3370* Pemilih model `Option+P` atau `Alt+P`

3366* Pengaturan Model dalam `/config`3371* Pengaturan Model di `/config`

3367* Mengaktifkan [fast mode](/docs/id/fast-mode) ketika itu mengubah model sesi3372* Mengaktifkan [fast mode](/docs/id/fast-mode) ketika hal itu mengubah model sesi

3368* Permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host [Agent SDK](/docs/id/agent-sdk/typescript#query-object) atau [Remote Control](/docs/id/remote-control)3373* Permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host [Agent SDK](/docs/id/agent-sdk/typescript#query-object) atau [Remote Control](/docs/id/remote-control)

3369 3374 

3370Claude Code tidak menjalankan PreModelSwitch hooks untuk switch yang dibuat sendiri, seperti [automatic model fallback](/docs/id/model-config#automatic-model-fallback) atau memulihkan model ketika Anda melanjutkan sesi. Perubahan itu mencapai [PostModelSwitch](#postmodelswitch) saja.3375Claude 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).

3371 3376 

3372Claude Code membandingkan matcher terhadap nama kanonik model yang sesi beralih ke, mengabaikan apa pun `[1m]` suffix. Alias seperti `opus`, ID model yang tertanggal, dan ID khusus penyedia seperti ID model Amazon Bedrock semuanya cocok dengan satu nama kanonik yang mereka selesaikan, jadi `claude-opus-5` mencakup setiap ejaan Opus 5.3377Claude 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.

3373 3378 

3374Ketika Claude Code tidak dapat menentukan nama kanonik untuk target, misalnya ID model kustom yang hanya [LLM gateway](/docs/id/llm-gateway) Anda tahu, itu menjalankan setiap hook PreModelSwitch terlepas dari matcher. Hook yang memblokir harus memeriksa `to_model` dari input-nya daripada mengandalkan matcher saja.3379Ketika 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.

3375 3380 

3376Tulis matcher sebagai nama yang tepat, daftar `|`-separated seperti `claude-opus-4-6|claude-opus-5`, atau ekspresi reguler seperti `.*opus.*`. Contoh ini menggunakan matcher nama yang tepat dan juga memeriksa `to_model` dari input hook, jadi itu menolak switch ke Opus 4.6 dengan keluar dengan kode 2 dan membiarkan target lainnya melewati:3381Tulis 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:

3377 3382 

3378<Tabs>3383<Tabs>

3379 <Tab title="macOS/Linux">3384 <Tab title="macOS/Linux">

3380 Perintah memeriksa `to_model` dengan `jq`:3385 Perintah ini memeriksa `to_model` dengan `jq`:

3381 3386 

3382 ```json theme={null}3387 ```json theme={null}

3383 {3388 {


3399 </Tab>3404 </Tab>

3400 3405 

3401 <Tab title="Windows (PowerShell)">3406 <Tab title="Windows (PowerShell)">

3402 Daftarkan command hook yang menjalankan skrip melalui PowerShell:3407 Daftarkan hook command yang menjalankan skrip melalui PowerShell:

3403 3408 

3404 ```json theme={null}3409 ```json theme={null}

3405 {3410 {


3426 }3431 }

3427 ```3432 ```

3428 3433 

3429 Simpan skrip ini ke `.claude/hooks/block-opus-46.ps1` dalam proyek Anda:3434 Simpan skrip ini ke `.claude/hooks/block-opus-46.ps1` di proyek Anda:

3430 3435 

3431 ```powershell theme={null}3436 ```powershell theme={null}

3432 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json3437 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json


3439 </Tab>3444 </Tab>

3440</Tabs>3445</Tabs>

3441 3446 

3442Untuk mengkonfirmasi hook bekerja, jalankan `/model claude-opus-4-6` dari sesi yang menjalankan model berbeda. Claude Code menyimpan model saat ini dan melaporkan bahwa hook PreModelSwitch memblokir switch, dengan pesan Anda sebagai alasan.3447Untuk memastikan hook berfungsi, jalankan `/model claude-opus-4-6` dari sesi yang menjalankan model lain. Claude Code mempertahankan model saat ini dan melaporkan bahwa hook PreModelSwitch memblokir peralihan, dengan pesan Anda sebagai alasannya.

3443 3448 

3444<h4 id="premodelswitch-input">3449<h4 id="premodelswitch-input">

3445 PreModelSwitch input3450 Input PreModelSwitch

3446</h4>3451</h4>

3447 3452 

3448Selain [bidang input umum](#common-input-fields), PreModelSwitch hooks menerima bidang dalam tabel ini. Lima terakhir menjelaskan apa yang mengirim ulang percakapan ke model baru biaya, jadi hook dapat menampilkan angka itu sebelum switch terjadi.3453Selain [field input umum](#common-input-fields), hook PreModelSwitch menerima field dalam tabel ini. Lima field terakhir menjelaskan biaya pengiriman ulang percakapan ke model baru, sehingga hook dapat menampilkan angka tersebut sebelum peralihan terjadi.

3449 3454 

3450| Bidang | Tipe | Deskripsi |3455| Field | Tipe | Deskripsi |

3451| :- | :- | :- |3456| :- | :- | :- |

3452| `from_model` | string | ID model yang switch ubah dari |3457| `from_model` | string | ID model asal peralihan |

3453| `to_model` | string | ID model yang switch ubah ke. Matcher membandingkan terhadap nama kanonik model ini |3458| `to_model` | string | ID model tujuan peralihan. Matcher dibandingkan dengan nama kanonis model ini |

3454| `requested_model` | string atau `null` | Model yang permintaan beri nama: alias seperti `opus`, ID model lengkap, atau `null` ketika permintaan adalah untuk model default |3459| `requested_model` | string atau `null` | Model yang disebutkan dalam permintaan: alias seperti `opus`, ID model lengkap, atau `null` jika permintaan ditujukan untuk model default |

3455| `source` | string | Di mana permintaan berasal: `"command"` untuk `/model <name>`, Pengaturan Model dalam `/config`, atau mengaktifkan fast mode; `"picker"` untuk picker model; `"sdk"` untuk permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host Agent SDK atau Remote Control |3460| `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 |

3456| `context_tokens` | number | Tokens yang permintaan berikutnya mengirim ulang sebagai prompt-nya: input, cache read, cache creation, dan output tokens dari respons terakhir dalam percakapan utama, digabungkan. `0` sebelum respons pertama |3461| `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 |

3457| `prompt_cache_warm` | boolean | Apakah prompt cache model saat ini mungkin masih hangat, berarti switch melepaskan itu |3462| `prompt_cache_warm` | boolean | Apakah prompt cache model saat ini kemungkinan masih hangat, yang berarti peralihan akan mengorbankannya |

3458| `cache_ttl` | string | [Prompt cache lifetime](/docs/id/prompt-caching#cache-lifetime) Claude Code minta untuk sesi ini: `"5m"` atau `"1h"` |3463| `cache_ttl` | string | [Masa berlaku prompt cache](/docs/id/prompt-caching#cache-lifetime) yang diminta Claude Code untuk sesi ini: `"5m"` atau `"1h"` |

3459| `estimated_cache_write_usd` | number | Biaya perkiraan dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada `to_model` pada tingkat `cache_ttl`, tidak termasuk respons berikutnya. Server mungkin tidak perlu re-cache seluruh konteks, jadi perlakukan sebagai perkiraan |3464| `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 |

3460| `pricing` | string | Bagaimana Claude Code menghargai `estimated_cache_write_usd`: `"configured"` pada tarif organisasi Anda sendiri ketika itu mengonfigurasinya, `"catalog"` pada harga list, atau `"default"` ketika `to_model` tidak memiliki harga yang dikenal dan Claude Code mengasumsikan tingkat default |3465| `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 |

3461 3466 

3462Contoh ini menunjukkan input untuk `/model opus` dalam sesi yang menjalankan Sonnet 5:3467Contoh ini menunjukkan input untuk `/model opus` dalam sesi yang menjalankan Sonnet 5:

3463 3468 


3480```3485```

3481 3486 

3482<h4 id="premodelswitch-decision-control">3487<h4 id="premodelswitch-decision-control">

3483 PreModelSwitch decision control3488 Kontrol keputusan PreModelSwitch

3484</h4>3489</h4>

3485 3490 

3486Hooks `PreModelSwitch` dapat membatalkan switch, meminta pengguna untuk mengkonfirmasinya, atau membiarkannya melanjutkan. Kode keluar 2 atau `decision: "block"` tingkat atas membatalkan switch.3491Hook `PreModelSwitch` dapat membatalkan peralihan, meminta pengguna untuk mengonfirmasinya, atau membiarkannya berlanjut. Exit code 2 atau `decision: "block"` tingkat atas membatalkan peralihan.

3487 3492 

3488Untuk kontrol yang lebih halus, kembalikan `permissionDecision` dan `permissionDecisionReason` dalam objek `hookSpecificOutput`, seperti pada [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` menerima `"allow"`, `"deny"`, dan `"ask"`. Itu tidak menerima `"defer"`, `updatedInput`, atau `additionalContext`. Tabel di bawah menjelaskan kedua bidang:3493Untuk kontrol yang lebih rinci, kembalikan `permissionDecision` dan `permissionDecisionReason` dalam objek `hookSpecificOutput`, seperti pada [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` menerima `"allow"`, `"deny"`, dan `"ask"`. Hook ini tidak menerima `"defer"`, `updatedInput`, atau `additionalContext`. Tabel di bawah menjelaskan kedua field:

3489 3494 

3490| Bidang | Deskripsi |3495| Field | Deskripsi |

3491| :- | :- |3496| :- | :- |

3492| `permissionDecision` | `"allow"` melanjutkan dan melewati [konfirmasi Claude Code menampilkan sementara prompt cache hangat](/docs/id/prompt-caching#switching-models). `"deny"` membatalkan switch. `"ask"` meminta pengguna untuk mengkonfirmasinya |3497| `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 |

3493| `permissionDecisionReason` | Untuk `"deny"`, ditampilkan ke pengguna sebagai alasan switch diblokir, atau dikembalikan sebagai kesalahan untuk permintaan `set_model`. Untuk `"ask"`, ditampilkan dalam prompt konfirmasi. Diabaikan untuk `"allow"` |3498| `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"` |

3494 3499 

3495Hanya `/model` dalam sesi interaktif dapat menampilkan prompt `"ask"`. Di setiap permukaan lain, termasuk mode non-interaktif dengan flag `-p`, `/config`, dan permintaan `set_model`, Claude Code memperlakukan `"ask"` sebagai penolakan.3500Hanya `/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.

3496 3501 

3497Contoh ini meminta pengguna untuk mengkonfirmasi dan mengutip jumlah token dari `context_tokens`:3502Contoh ini meminta pengguna untuk mengonfirmasi dan mengutip jumlah token dari `context_tokens`:

3498 3503 

3499```json theme={null}3504```json theme={null}

3500{3505{


3506}3511}

3507```3512```

3508 3513 

3509Ketika beberapa PreModelSwitch hooks mengembalikan keputusan berbeda, prioritas adalah `deny` > `ask` > `allow`.3514Ketika beberapa hook PreModelSwitch mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `ask` > `allow`.

3510 3515 

3511Claude Code menampilkan `systemMessage` apa pun yang dikembalikan hook Anda terlepas dari keputusan, jadi hook pelaporan biaya dapat mengembalikan `{"systemMessage": "..."}` dan keluar 0.3516Claude Code menampilkan kepada pengguna setiap `systemMessage` yang dikembalikan hook Anda terlepas dari keputusannya, sehingga hook pelaporan biaya dapat mengembalikan `{"systemMessage": "..."}` dan keluar dengan 0.

3512 3517 

3513Hook PreModelSwitch yang tidak merespons sebelum timeout-nya memblokir switch. Pada [PreToolUse](#timeouts), sebaliknya, hook command yang timed out membiarkan pemanggilan tool melanjutkan. Timeout default untuk event ini adalah 30 detik. `PreModelSwitch` menjalankan hooks `command`, `http`, dan `mcp_tool` saja, jadi default `prompt` dan `agent` tidak berlaku.3518Hook 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.

3514 3519 

3515Hook yang keluar dengan kode selain 0 atau 2 dan tidak mencetak keputusan JSON tidak memblokir: Claude Code menampilkan stderr-nya dan menerapkan switch, seperti dijelaskan di bawah [Other exit codes](#other-exit-codes).3520Hook 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).

3516 3521 

3517<h3 id="postmodelswitch">3522<h3 id="postmodelswitch">

3518 PostModelSwitch3523 PostModelSwitch

3519</h3>3524</h3>

3520 3525 

3521Dijalankan setelah model sesi berubah. Gunakan untuk memberikan panduan khusus model kepada Claude tanpa mengedit setiap CLAUDE.md, misalnya instruksi organisasi-lebar yang berlaku pada model tertentu.3526Berjalan 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.

3522 3527 

3523PostModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Itu tidak dapat memblokir, karena model sudah berubah. Claude Code menjalankan PostModelSwitch hooks setelah perubahan apa pun:3528PostModelSwitch 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:

3524 3529 

3525* Switch yang Anda atau klien minta3530* Peralihan yang diminta oleh Anda atau klien

3526* [Automatic model fallback](/docs/id/model-config#automatic-model-fallback), yang mengubah model sesi3531* [Fallback model otomatis](/docs/id/model-config#automatic-model-fallback), yang mengubah model sesi

3527* Pengaturan seperti [`opusplan`](/docs/id/model-config#opusplan-model-setting) memasuki atau meninggalkan plan mode3532* Pengaturan seperti [`opusplan`](/docs/id/model-config#opusplan-model-setting) yang masuk atau keluar dari plan mode

3528* Claude Code memulihkan model ketika Anda melanjutkan sesi3533* Claude Code memulihkan model saat Anda melanjutkan sesi

3529 3534 

3530Claude Code tidak menjalankan PostModelSwitch hooks ketika model dari [fallback model chain](/docs/id/model-config#fallback-model-chains) melayani giliran, karena substitusi itu berlangsung satu giliran dan meninggalkan model sesi tidak berubah.3535Claude 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.

3531 3536 

3532Matcher mengikuti aturan yang sama seperti [PreModelSwitch](#premodelswitch): Claude Code membandingkannya terhadap nama kanonik model yang sesi beralih ke.3537Matcher mengikuti aturan yang sama seperti [PreModelSwitch](#premodelswitch): Claude Code membandingkannya dengan nama kanonis model tujuan peralihan sesi.

3533 3538 

3534Contoh ini menambahkan panduan setiap kali model sesi berubah ke model Opus apa pun:3539Contoh ini menambahkan panduan setiap kali model sesi berubah ke model Opus mana pun:

3535 3540 

3536```json theme={null}3541```json theme={null}

3537{3542{


3551}3556}

3552```3557```

3553 3558 

3554Untuk mengkonfirmasi hook bekerja, beralih ke model Opus dari sesi yang menjalankan model berbeda, misalnya jalankan `/model opus` dari sesi Sonnet, kemudian tanyakan Claude apa panduan yang dimilikinya tentang model saat ini.3559Untuk memastikan hook berfungsi, beralihlah ke model Opus dari sesi yang menjalankan model lain, misalnya jalankan `/model opus` dari sesi Sonnet, lalu tanyakan kepada Claude panduan apa yang dimilikinya tentang model saat ini.

3555 3560 

3556<h4 id="postmodelswitch-input">3561<h4 id="postmodelswitch-input">

3557 PostModelSwitch input3562 Input PostModelSwitch

3558</h4>3563</h4>

3559 3564 

3560PostModelSwitch hooks menerima bidang yang sama seperti [PreModelSwitch](#premodelswitch-input), dengan `hook_event_name` diatur ke `"PostModelSwitch"` dan dua nilai `source` lebih: `"auto"` untuk fallback otomatis atau perubahan lain yang dibuat Claude Code sendiri, dan `"resume"` untuk model yang dipulihkan ketika Anda melanjutkan sesi.3565Hook PostModelSwitch menerima field yang sama seperti [PreModelSwitch](#premodelswitch-input), dengan `hook_event_name` diatur ke `"PostModelSwitch"` dan dua nilai `source` tambahan: `"auto"` untuk fallback otomatis atau perubahan lain yang dilakukan Claude Code sendiri, dan `"resume"` untuk model yang dipulihkan saat Anda melanjutkan sesi.

3561 3566 

3562`requested_model` adalah `null` ketika `source` adalah `"auto"`. Ketika `source` adalah `"resume"`, itu adalah pengaturan model yang disimpan Claude Code pulihkan.3567`requested_model` bernilai `null` ketika `source` adalah `"auto"`. Ketika `source` adalah `"resume"`, nilainya adalah pengaturan model tersimpan yang dipulihkan Claude Code.

3563 3568 

3564<h4 id="postmodelswitch-decision-control">3569<h4 id="postmodelswitch-decision-control">

3565 PostModelSwitch decision control3570 Kontrol keputusan PostModelSwitch

3566</h4>3571</h4>

3567 3572 

3568Claude Code mengambil stdout [plain-text](#exit-code-0) hook Anda pada keluar 0, atau `additionalContext` dari output JSON, dan mengirimkannya ke Claude dengan permintaan setelah switch. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan:3573Claude Code mengambil [stdout teks biasa](#exit-code-0) hook Anda saat keluar dengan 0, atau `additionalContext` dari output JSON, dan mengirimkannya ke Claude bersama permintaan berikutnya setelah peralihan. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan:

3569 3574 

3570| Bidang | Deskripsi |3575| Field | Deskripsi |

3571| :- | :- |3576| :- | :- |

3572| `additionalContext` | String ditambahkan ke konteks Claude dengan permintaan berikutnya. Lihat [Add context for Claude](#add-context-for-claude) |3577| `additionalContext` | String yang ditambahkan ke konteks Claude bersama permintaan berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

3573 3578 

3574Jika hook belum selesai dalam lima detik setelah Anda mengirimkan permintaan berikutnya, Claude Code mengirimkan permintaan itu tanpa output dan melampirkannya ke permintaan berikutnya sebagai gantinya. Jika model berubah beberapa kali sebelum permintaan berikutnya, Claude Code mengirimkan hanya output untuk switch terakhir ke model target.3579Jika 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.

3575 3580 

3576<h3 id="sessionend">3581<h3 id="sessionend">

3577 SessionEnd3582 SessionEnd

3578</h3>3583</h3>

3579 3584 

3580Dijalankan ketika sesi Claude Code berakhir. Berguna untuk tugas cleanup, logging statistik sesi, atau menyimpan status sesi. Mendukung matchers untuk memfilter berdasarkan alasan keluar.3585Berjalan saat sesi Claude Code berakhir. Berguna untuk tugas pembersihan, mencatat statistik

3586sesi, atau menyimpan status sesi. Mendukung matcher untuk memfilter berdasarkan alasan keluar.

3581 3587 

3582Bidang `reason` dalam input hook menunjukkan mengapa sesi berakhir:3588Field `reason` dalam input hook menunjukkan mengapa sesi berakhir:

3583 3589 

3584| Alasan | Deskripsi |3590| Alasan | Deskripsi |

3585| :- | :- |3591| :- | :- |

3586| `clear` | Sesi dihapus dengan perintah `/clear` |3592| `clear` | Sesi dibersihkan dengan perintah `/clear` |

3587| `resume` | Sesi beralih melalui `/resume` interaktif |3593| `resume` | Sesi dialihkan melalui `/resume` interaktif |

3588| `logout` | Pengguna logout |3594| `logout` | Pengguna keluar (log out) |

3589| `prompt_input_exit` | Pengguna keluar saat input prompt terlihat |3595| `prompt_input_exit` | Pengguna keluar saat input prompt terlihat |

3590| `other` | Alasan keluar lainnya |3596| `other` | Alasan keluar lainnya |

3591| `bypass_permissions_disabled` | Dihapus dalam v2.1.234; Claude Code tidak mengirimkannya. Lepaskan dari matcher `SessionEnd` Anda |3597| `bypass_permissions_disabled` | Dihapus di v2.1.234; Claude Code tidak mengirimkannya. Hapus dari matcher `SessionEnd` Anda |

3592 3598 

3593<h4 id="sessionend-input">3599<h4 id="sessionend-input">

3594 SessionEnd input3600 Input SessionEnd

3595</h4>3601</h4>

3596 3602 

3597Selain [bidang input umum](#common-input-fields), SessionEnd hooks menerima bidang `reason` menunjukkan mengapa sesi berakhir. Lihat [tabel reason](#sessionend) di atas untuk semua nilai.3603Selain [field input umum](#common-input-fields), hook SessionEnd menerima field `reason` yang menunjukkan mengapa sesi berakhir. Lihat [tabel alasan](#sessionend) di atas untuk semua nilai.

3598 3604 

3599```json theme={null}3605```json theme={null}

3600{3606{


3606}3612}

3607```3613```

3608 3614 

3609SessionEnd hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir penghentian sesi tetapi dapat melakukan tugas cleanup. Claude Code membuang [bidang output JSON](#json-output) mereka, seperti `systemMessage`.3615Hook SessionEnd tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir penghentian sesi tetapi dapat melakukan tugas pembersihan. Claude Code membuang [field output JSON](#json-output) hook ini, seperti `systemMessage`.

3616 

3617Hook 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:

3618 

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

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

3610 3621 

3611SessionEnd hooks memiliki timeout default 1.5 detik. Ini berlaku untuk keluar sesi, `/clear`, dan beralih sesi melalui `/resume` interaktif. Jika hook memerlukan lebih banyak waktu, atur per-hook `timeout` dalam konfigurasi hook. Anggaran keseluruhan secara otomatis dinaikkan ke timeout per-hook tertinggi yang dikonfigurasi dalam file pengaturan, hingga 60 detik. Timeout yang ditetapkan pada hooks yang disediakan plugin tidak menaikkan anggaran. Untuk menimpa anggaran secara eksplisit, atur variabel lingkungan `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` dalam milidetik.3622Contoh ini mengatur anggaran menjadi 5 detik:

3612 3623 

3613```bash theme={null}3624```bash theme={null}

3614CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude3625CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

3615```3626```

3616 3627 

3617Sebelum v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` menaikkan hanya anggaran keseluruhan, dan hook tanpa `timeout` sendiri masih dibatalkan setelah 1.5 detik.3628Sebelum v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` hanya menaikkan anggaran keseluruhan, dan hook tanpa `timeout` sendiri tetap dibatalkan setelah 1,5 detik.

3618 3629 

3619<h3 id="elicitation">3630<h3 id="elicitation">

3620 Elicitation3631 Elicitation

3621</h3>3632</h3>

3622 3633 

3623Dijalankan ketika server MCP meminta input pengguna mid-task. Secara default, Claude Code menampilkan dialog interaktif untuk pengguna merespons. Hooks dapat mengintersepsi permintaan ini dan merespons secara programatis, melewati dialog sepenuhnya.3634Berjalan 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.

3624 3635 

3625Bidang matcher mencocokkan nama server MCP.3636Field matcher dicocokkan dengan nama server MCP.

3626 3637 

3627<h4 id="elicitation-input">3638<h4 id="elicitation-input">

3628 Elicitation input3639 Input Elicitation

3629</h4>3640</h4>

3630 3641 

3631Selain [bidang input umum](#common-input-fields), Elicitation hooks menerima `mcp_server_name`, `message`, dan bidang opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.3642Selain [field input umum](#common-input-fields), hook Elicitation menerima field `mcp_server_name`, `message`, serta field opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.

3632 3643 

3633Untuk form-mode elicitation, kasus paling umum:3644Untuk elicitation mode formulir, kasus yang paling umum:

3634 3645 

3635```json theme={null}3646```json theme={null}

3636{3647{


3650}3661}

3651```3662```

3652 3663 

3653Untuk URL-mode elicitation, digunakan untuk autentikasi berbasis browser:3664Untuk elicitation mode URL, yang digunakan untuk autentikasi berbasis browser:

3654 3665 

3655```json theme={null}3666```json theme={null}

3656{3667{


3666```3677```

3667 3678 

3668<h4 id="elicitation-output">3679<h4 id="elicitation-output">

3669 Elicitation output3680 Output Elicitation

3670</h4>3681</h4>

3671 3682 

3672Untuk merespons secara programatis tanpa menampilkan dialog, kembalikan objek JSON dengan `hookSpecificOutput`:3683Untuk merespons secara terprogram tanpa menampilkan dialog, kembalikan objek JSON dengan `hookSpecificOutput`:

3673 3684 

3674```json theme={null}3685```json theme={null}

3675{3686{


3683}3694}

3684```3695```

3685 3696 

3686| Bidang | Nilai | Deskripsi |3697| Field | Nilai | Deskripsi |

3687| :- | :- | :- |3698| :- | :- | :- |

3688| `action` | `accept`, `decline`, `cancel` | Apakah menerima, menolak, atau membatalkan permintaan |3699| `action` | `accept`, `decline`, `cancel` | Apakah akan menerima, menolak, atau membatalkan permintaan |

3689| `content` | object | Nilai field form untuk dikirimkan. Hanya digunakan saat `action` adalah `accept` |3700| `content` | object | Nilai field formulir yang akan dikirim. Hanya digunakan ketika `action` adalah `accept` |

3690 3701 

3691Kode keluar 2 menolak elicitation. Claude Code tidak menampilkan pesan stderr Anda di mana pun.3702Exit code 2 menolak elicitation. Claude Code tidak menampilkan pesan stderr Anda di mana pun.

3692 3703 

3693Claude Code bertindak atas `hookSpecificOutput` dari output JSON hook Elicitation dan membuang `systemMessage` dan `continue`.3704Claude Code menindaklanjuti `hookSpecificOutput` dari output JSON hook Elicitation dan membuang `systemMessage` serta `continue`.

3694 3705 

3695<h3 id="elicitationresult">3706<h3 id="elicitationresult">

3696 ElicitationResult3707 ElicitationResult

3697</h3>3708</h3>

3698 3709 

3699Dijalankan setelah pengguna merespons elicitation MCP. Hooks dapat mengamati, memodifikasi, atau memblokir respons sebelum dikirim kembali ke server MCP.3710Berjalan setelah pengguna merespons elicitation MCP. Hook dapat mengamati, memodifikasi, atau memblokir respons sebelum dikirim kembali ke server MCP.

3700 3711 

3701Bidang matcher mencocokkan nama server MCP.3712Field matcher dicocokkan dengan nama server MCP.

3702 3713 

3703<h4 id="elicitationresult-input">3714<h4 id="elicitationresult-input">

3704 ElicitationResult input3715 Input ElicitationResult

3705</h4>3716</h4>

3706 3717 

3707Selain [bidang input umum](#common-input-fields), ElicitationResult hooks menerima `mcp_server_name`, `action`, dan bidang opsional `mode`, `elicitation_id`, dan `content`.3718Selain [field input umum](#common-input-fields), hook ElicitationResult menerima field `mcp_server_name`, `action`, serta field opsional `mode`, `elicitation_id`, dan `content`.

3708 3719 

3709```json theme={null}3720```json theme={null}

3710{3721{


3721```3732```

3722 3733 

3723<h4 id="elicitationresult-output">3734<h4 id="elicitationresult-output">

3724 ElicitationResult output3735 Output ElicitationResult

3725</h4>3736</h4>

3726 3737 

3727Untuk menimpa respons pengguna, kembalikan objek JSON dengan `hookSpecificOutput`:3738Untuk menimpa respons pengguna, kembalikan objek JSON dengan `hookSpecificOutput`:


3736}3747}

3737```3748```

3738 3749 

3739| Bidang | Nilai | Deskripsi |3750| Field | Nilai | Deskripsi |

3740| :- | :- | :- |3751| :- | :- | :- |

3741| `action` | `accept`, `decline`, `cancel` | Menimpa tindakan pengguna |3752| `action` | `accept`, `decline`, `cancel` | Menimpa tindakan pengguna |

3742| `content` | object | Menimpa nilai field form. Hanya bermakna saat `action` adalah `accept` |3753| `content` | object | Menimpa nilai field formulir. Hanya bermakna ketika `action` adalah `accept` |

3743 3754 

3744Kode keluar 2 memblokir respons, mengubah tindakan efektif menjadi `decline`. Claude Code tidak menampilkan pesan stderr Anda di mana pun.3755Exit code 2 memblokir respons, mengubah tindakan efektif menjadi `decline`. Claude Code tidak menampilkan pesan stderr Anda di mana pun.

3745 3756 

3746Claude Code bertindak atas `hookSpecificOutput` dari output JSON hook ElicitationResult dan membuang `systemMessage` dan `continue`.3757Claude Code menindaklanjuti `hookSpecificOutput` dari output JSON hook ElicitationResult dan membuang `systemMessage` serta `continue`.

3747 3758 

3748<h2 id="prompt-based-hooks">3759<h2 id="prompt-based-hooks">

3749 Prompt-based hooks3760 Prompt-based hooks


3797 3808 

3798Alih-alih menjalankan perintah Bash, prompt-based hooks:3809Alih-alih menjalankan perintah Bash, prompt-based hooks:

3799 3810 

38001. Mengirimkan input hook dan prompt Anda ke model Claude, Haiku secara default38111. Mengirimkan input hook dan prompt Anda ke model Claude, secara default model yang digunakan Claude Code untuk [fungsionalitas latar belakang](/docs/id/costs#background-token-usage)

38012. LLM merespons dengan JSON terstruktur yang berisi keputusan38122. LLM merespons dengan JSON terstruktur yang berisi keputusan

38023. Claude Code memproses keputusan secara otomatis38133. Claude Code memproses keputusan secara otomatis

3803 3814 


3830| :- | :- | :- |3841| :- | :- | :- |

3831| `type` | ya | Harus `"prompt"` |3842| `type` | ya | Harus `"prompt"` |

3832| `prompt` | ya | Teks prompt untuk dikirim ke LLM. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Jika `$ARGUMENTS` tidak ada, JSON input ditambahkan ke prompt |3843| `prompt` | ya | Teks prompt untuk dikirim ke LLM. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Jika `$ARGUMENTS` tidak ada, JSON input ditambahkan ke prompt |

3833| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |3844| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model yang digunakan Claude Code untuk [fungsionalitas latar belakang](/docs/id/costs#background-token-usage) |

3834| `timeout` | tidak | Timeout dalam detik. Default: 30 |3845| `timeout` | tidak | Timeout dalam detik. Default: 30 |

3835| `continueOnBlock` | tidak | Pada events yang berlaku, `true` mengirimkan alasan `ok: false` kembali ke Claude dan melanjutkan alih-alih mengakhiri giliran. Default: `false`. Lihat [Response schema](#response-schema) untuk perilaku per-event |3846| `continueOnBlock` | tidak | Pada events yang berlaku, `true` mengirimkan alasan `ok: false` kembali ke Claude dan melanjutkan alih-alih mengakhiri giliran. Default: `false`. Lihat [Response schema](#response-schema) untuk perilaku per-event |

3836 3847 

hooks-guide.md +12 −9

Details

69 </Step>69 </Step>

70 70 

71 <Step title="Verifikasi konfigurasi">71 <Step title="Verifikasi konfigurasi">

72 Ketik `/hooks` untuk membuka browser hooks. Anda akan melihat daftar semua acara hook yang tersedia, dengan hitungan di sebelah setiap acara yang memiliki hooks yang dikonfigurasi. Pilih `Notification` untuk mengonfirmasi hook baru Anda muncul dalam daftar. Memilih hook menampilkan detailnya: acara, matcher, jenis, file sumber, dan perintah.72 Ketik `/hooks` di prompt Claude Code untuk membuka browser hooks. Hook baru Anda muncul dalam daftar di bawah `Notification`.

73 </Step>73 </Step>

74 74 

75 <Step title="Uji hook">75 <Step title="Uji hook">


77 </Step>77 </Step>

78</Steps>78</Steps>

79 79 

80<Tip>

81 Menu `/hooks` bersifat read-only. Untuk menambah, memodifikasi, atau menghapus hooks, edit JSON pengaturan Anda secara langsung atau minta Claude untuk membuat perubahan.

82</Tip>

83 

84<h2 id="what-you-can-automate">80<h2 id="what-you-can-automate">

85 Apa yang dapat Anda otomatisasi81 Apa yang dapat Anda otomatisasi

86</h2>82</h2>


97 93 

98Dapatkan notifikasi desktop kapan pun Claude selesai bekerja dan memerlukan input Anda, sehingga Anda dapat beralih ke tugas lain tanpa memeriksa terminal.94Dapatkan notifikasi desktop kapan pun Claude selesai bekerja dan memerlukan input Anda, sehingga Anda dapat beralih ke tugas lain tanpa memeriksa terminal.

99 95 

100Hook ini menggunakan acara `Notification`, yang Claude Code aktifkan ketika Claude menunggu input atau izin. Lihat [kapan setiap jenis notifikasi aktif](/docs/id/hooks#notification) untuk waktu yang tepat. Setiap tab di bawah menggunakan perintah notifikasi asli platform. Tambahkan ini ke `~/.claude/settings.json`:96Hook ini menggunakan acara `Notification`, yang Claude Code aktifkan ketika Claude menunggu input atau izin. Lihat [kapan setiap jenis notifikasi aktif](/docs/id/hooks#notification) untuk waktu yang tepat.

97 

98Setiap tab di bawah menggunakan perintah notifikasi asli platform. Tambahkan ini ke `~/.claude/settings.json`:

101 99 

102<Tabs>100<Tabs>

103 <Tab title="macOS">101 <Tab title="macOS">


120 ```118 ```

121 119 

122 <Accordion title="Jika tidak ada notifikasi yang muncul">120 <Accordion title="Jika tidak ada notifikasi yang muncul">

123 `osascript` merutekan notifikasi melalui aplikasi Script Editor bawaan. Jika Script Editor tidak memiliki izin notifikasi, perintah gagal diam-diam, dan macOS tidak akan meminta Anda untuk memberikannya. Jalankan ini di Terminal sekali untuk membuat Script Editor muncul di pengaturan notifikasi Anda:121 `osascript` merutekan notifikasi melalui aplikasi Script Editor bawaan. Jika Script Editor tidak memiliki izin notifikasi, perintah gagal diam-diam, dan macOS tidak akan meminta Anda untuk memberikannya.

122 

123 Jalankan ini di Terminal sekali untuk membuat Script Editor muncul di pengaturan notifikasi Anda:

124 124 

125 ```bash theme={null}125 ```bash theme={null}

126 osascript -e 'display notification "test"'126 osascript -e 'display notification "test"'


180 ```180 ```

181 181 

182 <Accordion title="Jika tidak ada dialog yang muncul">182 <Accordion title="Jika tidak ada dialog yang muncul">

183 Perintah ini membuka kotak dialog daripada notifikasi di sudut layar Anda, sehingga dialog dapat terbuka di belakang jendela terminal Anda. Uji perintah secara langsung di PowerShell terlebih dahulu. Jika Anda menjalankan Claude Code di dalam WSL, `powershell.exe` harus tersedia di `PATH` Anda melalui interop Windows.183 Perintah ini membuka kotak dialog daripada notifikasi di sudut layar Anda, sehingga dialog dapat terbuka di belakang jendela terminal Anda. Uji perintah secara langsung di PowerShell terlebih dahulu.

184 

185 Jika Anda menjalankan Claude Code di dalam WSL, `powershell.exe` harus tersedia di `PATH` Anda melalui interop Windows.

184 </Accordion>186 </Accordion>

185 </Tab>187 </Tab>

186</Tabs>188</Tabs>


212 214 

213`agent_needs_input` untuk pertanyaan terminal setup teammate memerlukan Claude Code v2.1.248 atau lebih baru.215`agent_needs_input` untuk pertanyaan terminal setup teammate memerlukan Claude Code v2.1.248 atau lebih baru.

214 216 

215Ketik `/hooks` dan pilih `Notification` untuk mengonfirmasi hook terdaftar. Untuk skema acara lengkap, lihat [Notification reference](/docs/id/hooks#notification).217Ketik `/hooks` di prompt Claude Code dan konfirmasi bahwa hook muncul di bawah `Notification`.

216 218 

217<h3 id="auto-format-code-after-edits">219<h3 id="auto-format-code-after-edits">

218 Auto-format kode setelah edit220 Auto-format kode setelah edit


1055* Edit file biasanya diambil secara otomatis. Jika belum muncul setelah beberapa detik, file watcher mungkin melewatkan perubahan: mulai ulang sesi Anda untuk memaksa reload.1057* Edit file biasanya diambil secara otomatis. Jika belum muncul setelah beberapa detik, file watcher mungkin melewatkan perubahan: mulai ulang sesi Anda untuk memaksa reload.

1056* Verifikasi JSON Anda valid: trailing commas dan comments tidak diizinkan1058* Verifikasi JSON Anda valid: trailing commas dan comments tidak diizinkan

1057* Konfirmkan file pengaturan berada di lokasi yang benar: `.claude/settings.json` untuk hook proyek, `~/.claude/settings.json` untuk hook global1059* Konfirmkan file pengaturan berada di lokasi yang benar: `.claude/settings.json` untuk hook proyek, `~/.claude/settings.json` untuk hook global

1060* Jika menu menampilkan `Only hooks from managed settings run here`, organisasi Anda telah menetapkan [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly). Hook dalam file pengaturan pengguna, proyek, dan lokal Anda tidak berjalan dan tidak dicantumkan

1058 1061 

1059<h3 id="stop-hook-hits-the-block-cap">1062<h3 id="stop-hook-hits-the-block-cap">

1060 Stop hook mencapai batas blokir1063 Stop hook mencapai batas blokir

Details

73 73 

74Alirkan respons inferensi. Claude Code membaca aliran saat tiba, jadi jika gateway Anda membuffer respons lengkap sebelum meneruskannya, Claude Code macet.74Alirkan respons inferensi. Claude Code membaca aliran saat tiba, jadi jika gateway Anda membuffer respons lengkap sebelum meneruskannya, Claude Code macet.

75 75 

76Kirimkan urutan event lengkap setiap respons tanpa menghilangkan, menduplikasi, atau mengubah urutan event. Ketika event mereferensikan blok konten yang `content_block_start` tidak pernah tiba, atau blok yang `content_block_stop` sudah tiba, Claude Code berhenti membaca aliran pada event tersebut daripada menerapkannya, jadi `content_block_stop` yang diduplikasi tidak dapat menjalankan panggilan alat yang sama dua kali. [Respons di atas mungkin tidak lengkap](/docs/id/errors#the-response-above-may-be-incomplete) menjelaskan apa yang dilihat pengguna, di bawah varian `Part of the response never arrived` dan `The response stream was malformed`.76Kirimkan urutan event lengkap setiap respons tanpa menghilangkan, menduplikasi, atau mengubah urutan event. Ketika guardrail Amazon Bedrock memblokir balasan, teruskan event yang dikirimnya tanpa perubahan, bahkan ketika event tersebut mereferensikan blok konten yang `content_block_stop`-nya sudah tiba. [AWS Guardrails](/docs/id/amazon-bedrock#aws-guardrails) menjelaskan bagaimana balasan tersebut berakhir. Ketika event lain mana pun mereferensikan blok konten yang `content_block_start`-nya tidak pernah tiba, atau blok yang `content_block_stop`-nya sudah tiba, Claude Code berhenti membaca aliran pada event tersebut daripada menerapkannya, jadi `content_block_stop` yang diduplikasi tidak dapat menjalankan panggilan tool yang sama dua kali. [Respons di atas mungkin tidak lengkap](/docs/id/errors#the-response-above-may-be-incomplete) menjelaskan apa yang dilihat pengguna, di bawah varian `Part of the response never arrived` dan `The response stream was malformed`.

77 77 

78Teruskan setiap respons melalui event `message_delta` dan `message_stop` finalnya sebelum mengakhiri body. Body yang berakhir setelah `message_delta` yang membawa `stop_reason`, tanpa blok konten yang masih terbuka dan tidak ada event blok konten setelah frame tersebut, dihitung sebagai lengkap bahkan ketika `message_stop` hilang. Body yang gateway Anda akhiri dengan bersih lebih awal, setelah blok konten telah dimulai, diperlakukan sama dengan koneksi yang terputus: [Automatic retries](/docs/id/errors#automatic-retries) mengatakan kapan Claude Code mengeluarkan kembali permintaan, dan [Respons di atas mungkin tidak lengkap](/docs/id/errors#the-response-above-may-be-incomplete) mencakup apa yang disimpannya setelah konten yang terlihat tiba. Claude Code menyimpan `stop_reason` yang `message_delta` berikan, jadi `message_delta` penggunaan-saja yang kemudian yang `delta` memiliki `stop_reason: null` atau tidak ada kunci `stop_reason` tidak menghapusnya.78Teruskan setiap respons melalui event `message_delta` dan `message_stop` finalnya sebelum mengakhiri body. Body yang berakhir setelah `message_delta` yang membawa `stop_reason`, tanpa blok konten yang masih terbuka dan tidak ada event blok konten setelah frame tersebut, dihitung sebagai lengkap bahkan ketika `message_stop` hilang. Body yang gateway Anda akhiri dengan bersih lebih awal, setelah blok konten telah dimulai, diperlakukan sama dengan koneksi yang terputus: [Automatic retries](/docs/id/errors#automatic-retries) mengatakan kapan Claude Code mengeluarkan kembali permintaan, dan [Respons di atas mungkin tidak lengkap](/docs/id/errors#the-response-above-may-be-incomplete) mencakup apa yang disimpannya setelah konten yang terlihat tiba. Claude Code menyimpan `stop_reason` yang `message_delta` berikan, jadi `message_delta` penggunaan-saja yang kemudian yang `delta` memiliki `stop_reason: null` atau tidak ada kunci `stop_reason` tidak menghapusnya.

79 79 

memory.md +21 −19

Details

50Perlakukan CLAUDE.md sebagai tempat Anda menuliskan apa yang sebaliknya akan Anda jelaskan kembali. Tambahkan ke dalamnya ketika:50Perlakukan CLAUDE.md sebagai tempat Anda menuliskan apa yang sebaliknya akan Anda jelaskan kembali. Tambahkan ke dalamnya ketika:

51 51 

52* Claude membuat kesalahan yang sama untuk kedua kalinya52* Claude membuat kesalahan yang sama untuk kedua kalinya

53* Tinjauan kode menangkap sesuatu yang seharusnya Claude ketahui tentang basis kode ini53* Code review menangkap sesuatu yang seharusnya Claude ketahui tentang codebase ini

54* Anda mengetik koreksi atau klarifikasi yang sama ke dalam chat yang Anda ketik di sesi terakhir54* Anda mengetik koreksi atau klarifikasi yang sama ke dalam chat yang Anda ketik di sesi terakhir

55* Anggota tim baru akan membutuhkan konteks yang sama untuk produktif55* Anggota tim baru akan membutuhkan konteks yang sama untuk produktif

56 56 

57Pertahankan itu untuk fakta yang harus Claude pegang di setiap sesi: perintah build, konvensi, tata letak proyek, aturan "selalu lakukan X". Jika entri adalah prosedur multi-langkah atau hanya penting untuk satu bagian dari basis kode, pindahkan ke [skill](/docs/id/skills) atau [aturan dengan cakupan path](#organize-rules-with-claude/rules/) sebagai gantinya. [Ringkasan ekstensi](/docs/id/features-overview#build-your-setup-over-time) mencakup kapan menggunakan setiap mekanisme.57Pertahankan itu untuk fakta yang harus Claude pegang di setiap sesi: perintah build, konvensi, tata letak proyek, aturan "selalu lakukan X". Jika entri adalah prosedur multi-langkah atau hanya penting untuk satu bagian dari codebase, pindahkan ke [skill](/docs/id/skills) atau [aturan dengan cakupan path](#organize-rules-with-claude/rules/) sebagai gantinya. [Ringkasan ekstensi](/docs/id/features-overview#build-your-setup-over-time) mencakup kapan menggunakan setiap mekanisme.

58 58 

59<h3 id="choose-where-to-put-claude-md-files">59<h3 id="choose-where-to-put-claude-md-files">

60 Pilih di mana menempatkan file CLAUDE.md60 Pilih di mana menempatkan file CLAUDE.md


80CLAUDE.md proyek dapat disimpan di `./CLAUDE.md` atau `./.claude/CLAUDE.md`. Buat file ini dan tambahkan instruksi yang berlaku untuk siapa pun yang bekerja pada proyek: perintah build dan test, standar pengkodean, keputusan arsitektur, konvensi penamaan, dan alur kerja umum. Instruksi ini dibagikan dengan tim Anda melalui kontrol versi, jadi fokus pada standar tingkat proyek daripada preferensi pribadi. Untuk mengonfirmasi file dimuat, jalankan `/context` dalam sesi dan periksa daftar di bawah **Memory files**.80CLAUDE.md proyek dapat disimpan di `./CLAUDE.md` atau `./.claude/CLAUDE.md`. Buat file ini dan tambahkan instruksi yang berlaku untuk siapa pun yang bekerja pada proyek: perintah build dan test, standar pengkodean, keputusan arsitektur, konvensi penamaan, dan alur kerja umum. Instruksi ini dibagikan dengan tim Anda melalui kontrol versi, jadi fokus pada standar tingkat proyek daripada preferensi pribadi. Untuk mengonfirmasi file dimuat, jalankan `/context` dalam sesi dan periksa daftar di bawah **Memory files**.

81 81 

82<Tip>82<Tip>

83 Jalankan `/init` untuk menghasilkan CLAUDE.md awal secara otomatis. Claude menganalisis basis kode Anda dan membuat file dengan perintah build, instruksi test, dan konvensi proyek yang ditemukannya. Jika CLAUDE.md sudah ada, `/init` menyarankan perbaikan daripada menimpanya. Perbaiki dari sana dengan instruksi yang Claude tidak akan temukan sendiri.83 Jalankan `/init` untuk menghasilkan CLAUDE.md awal secara otomatis. Claude menganalisis codebase Anda dan membuat file dengan perintah build, instruksi test, dan konvensi proyek yang ditemukannya. Jika CLAUDE.md sudah ada, `/init` menyarankan perbaikan daripada menimpanya. Perbaiki dari sana dengan instruksi yang Claude tidak akan temukan sendiri.

84 84 

85 Untuk alur multi-fase interaktif sebagai gantinya, atur variabel lingkungan `CLAUDE_CODE_NEW_INIT` ke `1` sebelum Anda menjalankan `/init`. Atur di shell Anda atau di blok `env` file pengaturan, seperti yang ditunjukkan dalam [Atur variabel lingkungan](/docs/id/env-vars#set-environment-variables). Dengan itu diatur, `/init` menanyakan artefak mana yang akan diatur: file CLAUDE.md, skills, dan hooks. Kemudian mengeksplorasi basis kode Anda dengan subagent, mengisi celah melalui pertanyaan lanjutan, dan menyajikan proposal yang dapat ditinjau sebelum menulis file apa pun. Variabel hanya mengubah cara `/init` berjalan, jadi Anda dapat membiarkannya diatur.85 Untuk alur multi-fase interaktif sebagai gantinya, atur environment variable `CLAUDE_CODE_NEW_INIT` ke `1` sebelum Anda menjalankan `/init`. Atur di shell Anda atau di blok `env` file pengaturan, seperti yang ditunjukkan dalam [Atur environment variable](/docs/id/env-vars#set-environment-variables). Dengan itu diatur, `/init` menanyakan artifact mana yang akan diatur: file CLAUDE.md, skills, dan hooks. Kemudian mengeksplorasi codebase Anda dengan subagent, mengisi celah melalui pertanyaan lanjutan, dan menyajikan proposal yang dapat ditinjau sebelum menulis file apa pun. Variabel hanya mengubah cara `/init` berjalan, jadi Anda dapat membiarkannya diatur.

86</Tip>86</Tip>

87 87 

88<h3 id="write-effective-instructions">88<h3 id="write-effective-instructions">


97 97 

98Jaga file Anda tetap pendek, terorganisir, dan konsisten:98Jaga file Anda tetap pendek, terorganisir, dan konsisten:

99 99 

100* **Ukuran**: targetkan di bawah 200 baris per file CLAUDE.md. File yang lebih panjang mengonsumsi lebih banyak konteks dan mengurangi kepatuhan. Pindahkan instruksi yang penting hanya untuk bagian dari basis kode ke [aturan dengan cakupan path](#path-specific-rules), yang dimuat hanya ketika Claude bekerja dengan file yang cocok. [Impor](#import-additional-files) membantu Anda mengatur file yang panjang tetapi tidak mengurangi biaya konteksnya, karena file yang diimpor juga dimuat saat peluncuran.100* **Ukuran**: targetkan di bawah 200 baris per file CLAUDE.md. File yang lebih panjang mengonsumsi lebih banyak konteks dan mengurangi kepatuhan. Pindahkan instruksi yang penting hanya untuk bagian dari codebase ke [aturan dengan cakupan path](#path-specific-rules), yang dimuat hanya ketika Claude bekerja dengan file yang cocok. [Impor](#import-additional-files) membantu Anda mengatur file yang panjang tetapi tidak mengurangi biaya konteksnya, karena file yang diimpor juga dimuat saat peluncuran.

101* **Struktur**: kelompokkan instruksi terkait di bawah header markdown dan bullet. Bagian yang terorganisir lebih mudah diikuti Claude daripada paragraf padat.101* **Struktur**: kelompokkan instruksi terkait di bawah header markdown dan bullet. Bagian yang terorganisir lebih mudah diikuti Claude daripada paragraf padat.

102* **Konsistensi**: jika dua instruksi saling bertentangan, Claude mungkin memilih satu secara sewenang-wenang. Tinjau file CLAUDE.md Anda, file CLAUDE.md bersarang di subdirektori, dan [`.claude/rules/`](#organize-rules-with-claude/rules/) secara berkala untuk menghapus instruksi yang ketinggalan zaman atau bertentangan. Untuk membuat Claude menemukannya untuk Anda, [jalankan audit prompt](#audit-your-instruction-files).102* **Konsistensi**: jika dua instruksi saling bertentangan, Claude mungkin memilih satu secara sewenang-wenang. Tinjau file CLAUDE.md Anda, file CLAUDE.md bersarang di subdirektori, dan [`.claude/rules/`](#organize-rules-with-claude/rules/) secara berkala untuk menghapus instruksi yang ketinggalan zaman atau bertentangan. Untuk membuat Claude menemukannya untuk Anda, [jalankan audit prompt](#audit-your-instruction-files).

103 103 


136- alur kerja git @docs/git-instructions.md136- alur kerja git @docs/git-instructions.md

137```137```

138 138 

139Untuk preferensi pribadi per-proyek yang tidak boleh diperiksa ke kontrol versi, buat `CLAUDE.local.md` di akar proyek. Ini dimuat bersama `CLAUDE.md` dan diperlakukan dengan cara yang sama. Tambahkan `CLAUDE.local.md` ke `.gitignore` Anda sehingga tidak dikomit. Dengan `CLAUDE_CODE_NEW_INIT=1` diatur, menjalankan `/init` dan memilih opsi pribadi melakukan ini untuk Anda.139Untuk preferensi pribadi per-proyek yang tidak boleh diperiksa ke kontrol versi, buat `CLAUDE.local.md` di akar proyek. Ini dimuat bersama `CLAUDE.md` dan diperlakukan dengan cara yang sama. Tambahkan `CLAUDE.local.md` ke `.gitignore` Anda sehingga tidak di-commit. Dengan `CLAUDE_CODE_NEW_INIT=1` diatur, menjalankan `/init` dan memilih opsi pribadi melakukan ini untuk Anda.

140 140 

141Jika Anda bekerja di beberapa git worktrees dari repositori yang sama, `CLAUDE.local.md` yang diabaikan git hanya ada di worktree tempat Anda membuatnya. Untuk berbagi instruksi pribadi di seluruh worktrees, impor file dari direktori home Anda sebagai gantinya:141Jika Anda bekerja di beberapa git worktree dari repositori yang sama, `CLAUDE.local.md` yang diabaikan git hanya ada di worktree tempat Anda membuatnya. Untuk berbagi instruksi pribadi di seluruh worktree, impor file dari direktori home Anda sebagai gantinya:

142 142 

143```text theme={null}143```text theme={null}

144# Preferensi Individu144# Preferensi Individu


148<Warning>148<Warning>

149 Impor dalam file memori tingkat proyek bersifat eksternal ketika jalurnya diselesaikan di luar direktori kerja Anda, seperti impor direktori home di atas. Pertama kali Claude Code menemukan impor eksternal dalam proyek, ia menampilkan dialog persetujuan yang mencantumkan file. Jika Anda menolak, impor tetap dinonaktifkan dan dialog tidak muncul lagi.149 Impor dalam file memori tingkat proyek bersifat eksternal ketika jalurnya diselesaikan di luar direktori kerja Anda, seperti impor direktori home di atas. Pertama kali Claude Code menemukan impor eksternal dalam proyek, ia menampilkan dialog persetujuan yang mencantumkan file. Jika Anda menolak, impor tetap dinonaktifkan dan dialog tidak muncul lagi.

150 150 

151 Claude Code menampilkan dialog untuk melindungi Anda dari file yang orang lain komit ke proyek bersama. File memori tingkat pengguna, seperti `~/.claude/CLAUDE.md` dan `~/.claude/rules/`, adalah file yang Anda tulis sendiri. Kecuali dalam sesi [Cowork](https://claude.com/product/cowork) di desktop Anda, Claude Code memuat impor mereka tanpa dialog dan mempercayai mereka seperti sisa konfigurasi pribadi Anda.151 Claude Code menampilkan dialog untuk melindungi Anda dari file yang di-commit orang lain ke proyek bersama. File memori tingkat pengguna, seperti `~/.claude/CLAUDE.md` dan `~/.claude/rules/`, adalah file yang Anda tulis sendiri. Kecuali dalam sesi [Cowork](https://claude.com/product/cowork) di desktop Anda, Claude Code memuat impor mereka tanpa dialog dan mempercayai mereka seperti sisa konfigurasi pribadi Anda.

152 152 

153 Dalam sesi Cowork di desktop Anda, Claude Code melewati impor apa pun dalam file tingkat pengguna yang diselesaikan ke jalur di luar direktori kerja sesi dan memuat sisa file. Dalam sesi tersebut juga melewati `~/.claude/CLAUDE.md` yang merupakan symlink atau hard link, dan direktori `~/.claude/rules/` atau file aturan yang disymlink yang menunjuk di luar direktori kerja.153 Dalam sesi Cowork di desktop Anda, Claude Code melewati impor apa pun dalam file tingkat pengguna yang diselesaikan ke jalur di luar direktori kerja sesi dan memuat sisa file. Dalam sesi tersebut juga melewati `~/.claude/CLAUDE.md` yang merupakan symlink atau hard link, dan direktori `~/.claude/rules/` atau file aturan yang disymlink yang menunjuk di luar direktori kerja.

154</Warning>154</Warning>


161 161 

162Semua file yang ditemukan digabungkan ke dalam konteks daripada menimpa satu sama lain. Di seluruh pohon direktori, konten diurutkan dari akar sistem file ke bawah ke direktori kerja Anda. Untuk contoh `foo/bar/`, `foo/CLAUDE.md` muncul dalam konteks sebelum `foo/bar/CLAUDE.md`, jadi instruksi lebih dekat ke tempat Anda meluncurkan Claude dibaca terakhir. Dalam setiap direktori, `CLAUDE.local.md` ditambahkan setelah `CLAUDE.md`, jadi catatan pribadi Anda adalah hal terakhir yang Claude baca di tingkat itu.162Semua file yang ditemukan digabungkan ke dalam konteks daripada menimpa satu sama lain. Di seluruh pohon direktori, konten diurutkan dari akar sistem file ke bawah ke direktori kerja Anda. Untuk contoh `foo/bar/`, `foo/CLAUDE.md` muncul dalam konteks sebelum `foo/bar/CLAUDE.md`, jadi instruksi lebih dekat ke tempat Anda meluncurkan Claude dibaca terakhir. Dalam setiap direktori, `CLAUDE.local.md` ditambahkan setelah `CLAUDE.md`, jadi catatan pribadi Anda adalah hal terakhir yang Claude baca di tingkat itu.

163 163 

164Claude juga menemukan file `CLAUDE.md` dan `CLAUDE.local.md` di subdirektori di bawah direktori kerja saat ini. Daripada memuat mereka saat peluncuran, mereka disertakan ketika Claude membaca file di subdirektori tersebut.164Claude juga menemukan file `CLAUDE.md` dan `CLAUDE.local.md` di subdirektori di bawah direktori kerja saat ini. Daripada memuat mereka saat peluncuran, mereka disertakan ketika Claude membaca file di subdirektori tersebut. Untuk file di dalam worktree di bawah `.claude/worktrees/`, lihat [Isolasi subagent dengan worktree](/docs/id/worktrees#isolate-subagents-with-worktrees).

165 165 

166Jika Anda bekerja di monorepo besar di mana file CLAUDE.md tim lain diambil, gunakan [`claudeMdExcludes`](#exclude-specific-claude-md-files) untuk melewatinya. Untuk tata letak lengkap file CLAUDE.md akar dan per-direktori serta aturan, lihat [Monorepo dan repositori besar](/docs/id/large-codebases).166Jika Anda bekerja di monorepo besar di mana file CLAUDE.md tim lain diambil, gunakan [`claudeMdExcludes`](#exclude-specific-claude-md-files) untuk melewatinya. Untuk tata letak lengkap file CLAUDE.md akar dan per-direktori serta aturan, lihat [Monorepo dan repositori besar](/docs/id/large-codebases).

167 167 

168Komentar HTML tingkat blok (`<!-- maintainer notes -->`) dalam file CLAUDE.md dilepas sebelum konten disuntikkan ke konteks Claude. Gunakan mereka untuk meninggalkan catatan untuk pengelola manusia tanpa menghabiskan token konteks pada mereka. Komentar di dalam blok kode dipertahankan. Ketika Anda membuka file CLAUDE.md langsung dengan alat Read, komentar tetap terlihat.168Komentar HTML tingkat blok (`<!-- maintainer notes -->`) dalam file CLAUDE.md dilepas sebelum konten disuntikkan ke konteks Claude. Gunakan mereka untuk meninggalkan catatan untuk pengelola manusia tanpa menghabiskan token konteks pada mereka. Komentar di dalam blok kode dipertahankan. Ketika Anda membuka file CLAUDE.md langsung dengan tool Read, komentar tetap terlihat.

169 169 

170<h4 id="load-from-additional-directories">170<h4 id="load-from-additional-directories">

171 Muat dari direktori tambahan171 Muat dari direktori tambahan

172</h4>172</h4>

173 173 

174Bendera `--add-dir` memberikan Claude akses ke direktori tambahan di luar direktori kerja utama Anda. Secara default, file CLAUDE.md dari direktori ini tidak dimuat.174Flag `--add-dir` memberikan Claude akses ke direktori tambahan di luar direktori kerja utama Anda. Secara default, file CLAUDE.md dari direktori ini tidak dimuat.

175 175 

176Untuk juga memuat file memori dari direktori tambahan, atur variabel lingkungan `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:176Untuk juga memuat file memori dari direktori tambahan, atur environment variable `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:

177 177 

178```bash theme={null}178```bash theme={null}

179CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config179CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

180```180```

181 181 

182Bentuk inline menetapkan variabel untuk peluncuran itu saja di Bash atau Zsh. Untuk menjaganya tetap aktif untuk setiap sesi, tambahkan ke blok `env` di `~/.claude/settings.json` seperti yang ditunjukkan dalam [Atur variabel lingkungan](/docs/id/env-vars#set-environment-variables).182Bentuk inline menetapkan variabel untuk peluncuran itu saja di Bash atau Zsh. Untuk menjaganya tetap aktif untuk setiap sesi, tambahkan ke blok `env` di `~/.claude/settings.json` seperti yang ditunjukkan dalam [Atur environment variable](/docs/id/env-vars#set-environment-variables).

183 183 

184Ini memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md` dari direktori tambahan. `CLAUDE.local.md` dilewati jika Anda mengecualikan `local` dari [`--setting-sources`](/docs/id/cli-reference).184Ini memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md` dari direktori tambahan. `CLAUDE.local.md` dilewati jika Anda mengecualikan `local` dari [`--setting-sources`](/docs/id/cli-reference).

185 185 


232- Sertakan komentar dokumentasi OpenAPI232- Sertakan komentar dokumentasi OpenAPI

233```233```

234 234 

235Aturan tanpa bidang `paths` dimuat tanpa syarat dan berlaku untuk semua file. Aturan dengan cakupan path dipicu ketika Claude membaca file yang cocok dengan pola, bukan pada setiap penggunaan alat. Mulai dari v2.1.198, pencocokan juga berfungsi ketika Claude mencapai file melalui jalur symlink ke direktori proyek, misalnya dalam checkout yang disymlink.235Aturan tanpa bidang `paths` dimuat tanpa syarat dan berlaku untuk semua file. Aturan dengan cakupan path dipicu ketika Claude membaca file yang cocok dengan pola, bukan pada setiap penggunaan tool. Pencocokan juga berfungsi ketika Claude mencapai file melalui jalur symlink ke direktori proyek, misalnya dalam checkout yang disymlink.

236 236 

237Gunakan pola glob dalam bidang `paths` untuk mencocokkan file berdasarkan ekstensi, direktori, atau kombinasi apa pun:237Gunakan pola glob dalam bidang `paths` untuk mencocokkan file berdasarkan ekstensi, direktori, atau kombinasi apa pun:

238 238 


258 258 

259Claude Code menggunakan pola apa pun yang akan melampaui anggaran yang tidak diperluas, dan brace literal mereka tidak cocok dengan file apa pun. Sebelum v2.1.217, nilai `paths` dengan banyak grup brace menghentikan atau menghancurkan CLI saat startup.259Claude Code menggunakan pola apa pun yang akan melampaui anggaran yang tidak diperluas, dan brace literal mereka tidak cocok dengan file apa pun. Sebelum v2.1.217, nilai `paths` dengan banyak grup brace menghentikan atau menghancurkan CLI saat startup.

260 260 

261Sintaks Glob memperlakukan `[` sebagai awal ekspresi bracket seperti `[abc]`. Pola dengan `[` yang tidak dapat dibaca sebagai ekspresi bracket, seperti `photos [2024/**`, tidak valid: itu tidak cocok dengan file apa pun, dan pola lain aturan terus bekerja. Untuk mencocokkan `[` literal dalam nama file, lepaskan sebagai `photos \[2024/**`. Sebelum v2.1.207, satu pola tidak valid membuat alat Read gagal untuk setiap file aturan dievaluasi terhadap, daripada tidak cocok dengan apa pun.261Sintaks Glob memperlakukan `[` sebagai awal ekspresi bracket seperti `[abc]`. Pola dengan `[` yang tidak dapat dibaca sebagai ekspresi bracket, seperti `photos [2024/**`, tidak valid: itu tidak cocok dengan file apa pun, dan pola lain aturan terus bekerja. Untuk mencocokkan `[` literal dalam nama file, lepaskan sebagai `photos \[2024/**`. Sebelum v2.1.207, satu pola tidak valid membuat tool Read gagal untuk setiap file yang dievaluasi oleh aturan tersebut, daripada tidak cocok dengan apa pun.

262 262 

263<h4 id="rules-frontmatter-reference">263<h4 id="rules-frontmatter-reference">

264 Referensi frontmatter aturan264 Referensi frontmatter aturan


329 329 

330Kunci `claudeMd` memungkinkan Anda menempatkan konten CLAUDE.md terkelola langsung di dalam `managed-settings.json` daripada menerapkan file terpisah.330Kunci `claudeMd` memungkinkan Anda menempatkan konten CLAUDE.md terkelola langsung di dalam `managed-settings.json` daripada menerapkan file terpisah.

331 331 

332**Cakupan**: setiap sesi Claude Code di mesin, di setiap repositori. Untuk panduan khusus repositori, komit CLAUDE.md proyek sebagai gantinya.332**Cakupan**: setiap sesi Claude Code di mesin, di setiap repositori. Untuk panduan khusus repositori, lakukan commit CLAUDE.md proyek sebagai gantinya.

333 333 

334**Prioritas**: sama dengan file CLAUDE.md terkelola. Dimuat sebelum CLAUDE.md pengguna dan proyek.334**Prioritas**: sama dengan file CLAUDE.md terkelola. Dimuat sebelum CLAUDE.md pengguna dan proyek.

335 335 


347 347 

348| Kekhawatiran | Konfigurasi di |348| Kekhawatiran | Konfigurasi di |

349| :- | :- |349| :- | :- |

350| Blokir alat, perintah, atau jalur file tertentu | Pengaturan terkelola: `permissions.deny` |350| Blokir tool, perintah, atau jalur file tertentu | Pengaturan terkelola: `permissions.deny` |

351| Terapkan isolasi sandbox | Pengaturan terkelola: `sandbox.enabled` |351| Terapkan isolasi sandbox | Pengaturan terkelola: `sandbox.enabled` |

352| Variabel lingkungan dan perutean penyedia API | Pengaturan terkelola: `env` |352| Environment variable dan perutean penyedia API | Pengaturan terkelola: `env` |

353| Metode login dan pembatasan organisasi | Pengaturan terkelola: `forceLoginMethod`, `forceLoginOrgUUID` |353| Metode login dan pembatasan organisasi | Pengaturan terkelola: `forceLoginMethod`, `forceLoginOrgUUID` |

354| Pedoman gaya kode dan kualitas | CLAUDE.md terkelola |354| Pedoman gaya kode dan kualitas | CLAUDE.md terkelola |

355| Pengingat penanganan data dan kepatuhan | CLAUDE.md terkelola |355| Pengingat penanganan data dan kepatuhan | CLAUDE.md terkelola |


538 Aktifkan atau nonaktifkan auto memory538 Aktifkan atau nonaktifkan auto memory

539</h3>539</h3>

540 540 

541Auto memory aktif secara default. Untuk mengalihkannya, buka `/memory` dalam sesi dan gunakan toggle auto memory, yang menyimpan `autoMemoryEnabled` ke pengaturan pengguna Anda di `~/.claude/settings.json`. Untuk mematikannya untuk satu proyek, atur `autoMemoryEnabled` dalam pengaturan proyek itu:541Auto memory aktif secara default dalam sesi lokal. Di luar sesi [Claude Tag](https://claude.com/docs/claude-tag/overview), sesi dalam [lingkungan self-hosted](/docs/id/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) berjalan dengan auto memory nonaktif secara default.

542 

543Untuk mengalihkannya, buka `/memory` dalam sesi dan gunakan toggle auto memory, yang menyimpan `autoMemoryEnabled` ke pengaturan pengguna Anda di `~/.claude/settings.json`. Untuk mematikannya untuk satu proyek, atur `autoMemoryEnabled` dalam pengaturan proyek itu:

542 544 

543```json theme={null}545```json theme={null}

544{546{

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Marketplace Anthropic

6 

7> Marketplace plugin resmi, komunitas, dan demo dari Anthropic untuk Claude Code: nama, repositori, cara menambahkan masing-masing, dan tempat menelusuri plugin-pluginnya.

8 

9Anthropic menerbitkan tiga marketplace plugin serbaguna untuk Claude Code: [resmi](https://github.com/anthropics/claude-plugins-official), [komunitas](https://github.com/anthropics/claude-plugins-community), dan [demo](https://github.com/anthropics/claude-code). Masing-masing adalah katalog plugin di repositori GitHub-nya sendiri. Saat Anda menginstal plugin dari salah satunya dalam sesi Claude Code, Anda mengetikkan nama marketplace setelah `@`, seperti pada `/plugin install commit-commands@claude-plugins-official`.

10 

11Gunakan halaman ini untuk membedakan ketiga marketplace tersebut dan untuk menemukan tempat memeriksa apakah marketplace resmi memuat plugin tertentu.

12 

13<Note>

14 Kasus-kasus berikut dibahas di halaman lain:

15 

16 * **Cara menginstal plugin**: lihat [Instal plugin](/docs/id/plugins/install)

17 * **Instalasi yang gagal**: lihat [Pemecahan masalah plugin](/docs/id/plugins/troubleshooting)

18</Note>

19 

20Buka bagian halaman yang Anda perlukan:

21 

22* Untuk membedakan ketiga marketplace berdasarkan repositori, nama marketplace, dan cara mendapatkan masing-masing, lihat [Marketplace Anthropic](#anthropic’s-marketplaces).

23* Untuk menemukan plugin di marketplace resmi, lihat [Temukan plugin di marketplace resmi](#find-plugins-in-the-official-marketplace).

24 

25<h2 id="anthropic’s-marketplaces">

26 Marketplace Anthropic

27</h2>

28 

29Marketplace adalah katalog plugin yang didefinisikan oleh sebuah repositori dalam file `.claude-plugin/marketplace.json`-nya. Marketplace resmi, komunitas, dan demo masing-masing berasal dari repositori GitHub-nya sendiri. Anthropic juga menerbitkan marketplace khusus topik, seperti `anthropics/skills` dan `anthropics/knowledge-work-plugins`, yang Anda tambahkan dalam sesi Claude Code dengan `/plugin marketplace add <owner>/<repo>`.

30 

31Tabel ini mencantumkan repositori dan nama marketplace masing-masing, yaitu yang Anda ketikkan setelah `@` saat menginstal plugin dari marketplace tersebut. Nama marketplace komunitas adalah `claude-community`, bukan nama repositorinya.

32 

33| | Resmi | Komunitas | Demo |

34| :- | :- | :- | :- |

35| Repositori | [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) | [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) | [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/plugins) |

36| Nama marketplace | `claude-plugins-official` | `claude-community` | `claude-code-plugins` |

37| Isinya | Plugin yang dikelola Anthropic, ditambah plugin dari mitra dan penulis lain | Plugin pihak ketiga yang diajukan oleh penulisnya kepada Anthropic | Sekumpulan kecil contoh plugin yang menunjukkan apa saja yang dapat dimuat sebuah plugin |

38| Cara mendapatkannya | Claude Code menambahkannya saat pertama kali Anda memulai sesi terminal interaktif, kecuali [kebijakan terkelola](/docs/id/plugins/org#allow-the-official-marketplace-and-your-own) atau `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` memblokirnya. Lihat [Marketplace `claude-plugins-official` tidak ditemukan](/docs/id/plugins/troubleshooting#marketplace-claude-plugins-official-not-found) jika marketplace ini tidak ada | Anda menambahkannya dalam sesi Claude Code dengan `/plugin marketplace add anthropics/claude-plugins-community` | Anda menambahkannya dalam sesi Claude Code dengan `/plugin marketplace add anthropics/claude-code` |

39 

40Jika Anda menulis plugin dan ingin orang lain menginstalnya, lihat [Terbitkan plugin](/docs/id/plugins/publish), yang membahas marketplace Anda sendiri dan pengajuan ke direktori Anthropic.

41 

42<h3 id="the-demo-marketplace-in-anthropics/claude-code">

43 Marketplace demo di `anthropics/claude-code`

44</h3>

45 

46Jika sebuah tutorial atau serangkaian instruksi lama meminta Anda menjalankan `/plugin marketplace add anthropics/claude-code`, perintah itu menambahkan marketplace demo, yang bernama `claude-code-plugins`. Itu bukan marketplace resmi.

47 

48Sebagian besar plugin di marketplace demo juga ada di marketplace resmi dengan nama yang sama. Misalnya, `code-review`, `feature-dev`, `commit-commands`, dan `security-guidance` ada di keduanya. Instal plugin-plugin tersebut dari `claude-plugins-official` agar Anda tidak memiliki dua salinan yang terinstal.

49 

50<h2 id="find-plugins-in-the-official-marketplace">

51 Temukan plugin di marketplace resmi

52</h2>

53 

54Secara default, Claude Code menambahkan marketplace resmi, `claude-plugins-official`, untuk Anda. Sebagian besar yang tercantum di dalamnya berasal dari mitra dan penulis lain, bukan dari Anthropic: vendor tool menerbitkan plugin yang menghubungkan Claude Code ke layanan mereka, dan Anthropic mengelola sekumpulan kecil plugin miliknya sendiri, seperti `commit-commands`, `code-review`, `feature-dev`, dan [plugin language server](/docs/id/plugins/code-intelligence). Katalognya sering berubah, sehingga halaman ini tidak mencantumkannya.

55 

56Untuk melihat isinya, gunakan tab **Discover** pada `/plugin` dalam sesi Claude Code, yang dapat Anda cari, atau telusuri [Claude Marketplace](https://claude.com/marketplace/plugins) di web.

57 

58<h2 id="browse-and-install-from-anthropic’s-marketplaces">

59 Telusuri dan instal dari marketplace Anthropic

60</h2>

61 

62Anda dapat mencari plugin di marketplace Anthropic melalui Claude Code, web, atau GitHub:

63 

64* **Di Claude Code, dengan menelusuri**: jalankan `/plugin` dalam sesi interaktif. Tab **Discover**-nya mencantumkan plugin dari marketplace Anda.

65* **Di Claude Code, berdasarkan nama**: jalankan `/plugin install <name>` dalam sesi, yang mencari nama tersebut di marketplace Anda. Jika plugin ada di salah satunya, detailnya terbuka di panel `/plugin`, dan tidak ada yang terinstal sampai Anda memilih [cakupan instalasi](/docs/id/plugins/install#install-a-plugin) dan mengonfirmasi di sana. Jika tidak ada, Anda akan melihat `Plugin "<name>" not found in any marketplace`.

66* **Di web**: cari katalog lengkap di [Claude Marketplace](https://claude.com/marketplace/plugins), yang menampilkan jumlah instalasi dan menandai beberapa plugin sebagai **Anthropic verified**.

67* **Di GitHub**: buka `.claude-plugin/marketplace.json` di repositori marketplace, seperti [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official). File tersebut adalah katalog itu sendiri.

68 

69Direktori Anthropic terpisah dari marketplace-marketplace ini. Direktori adalah katalog di claude.ai. Plugin yang Anda tambahkan dari direktori di claude.ai sampai ke Claude Code melalui [sinkronisasi akun](/docs/id/plugins/loading#synced-plugins). Untuk mencantumkan plugin Anda sendiri di sana, lihat [Ajukan ke direktori Anthropic](/docs/id/plugins/publish#submit-to-anthropics-directory).

70 

71Untuk menginstal dari aplikasi desktop atau dari skrip, atau untuk melihat apa yang dimuat oleh sesi cloud, lihat [Instal plugin](/docs/id/plugins/install).

72 

73<h3 id="add-the-community-or-demo-marketplace">

74 Tambahkan marketplace komunitas atau demo

75</h3>

76 

77Marketplace komunitas dan demo tidak terdaftar sampai Anda menambahkannya dalam sesi Claude Code:

78 

79* **Komunitas**: jalankan `/plugin marketplace add anthropics/claude-plugins-community`, lalu instal dengan sufiks `@claude-community`.

80* **Demo**: jalankan `/plugin marketplace add anthropics/claude-code`, lalu instal dengan sufiks `@claude-code-plugins`.

81 

82Jika `claude-plugins-official` tidak ada di tab **Marketplaces** pada `/plugin`, tambahkan dengan cara yang sama menggunakan `/plugin marketplace add anthropics/claude-plugins-official`.

83 

84Untuk error `not found` dan marketplace yang tidak dapat ditambahkan, lihat [Pemecahan masalah plugin](/docs/id/plugins/troubleshooting#install-a-plugin).

85 

86<h2 id="third-party-marketplaces">

87 Marketplace pihak ketiga

88</h2>

89 

90Banyak plugin populer tidak ada di marketplace Anthropic mana pun. Plugin-plugin tersebut berada di marketplace milik penulisnya sendiri, biasanya berupa repositori GitHub dengan `.claude-plugin/marketplace.json` di root-nya.

91 

92Anthropic tidak meninjau marketplace pihak ketiga, jadi baca [Keamanan dan kepercayaan plugin](/docs/id/plugins/security) sebelum Anda menambahkannya.

93 

94Untuk menggunakan marketplace pihak ketiga, tambahkan repositorinya dalam sesi Claude Code dengan `/plugin marketplace add <owner>/<repo>`, lalu instal dengan `/plugin install <plugin>@<marketplace-name>`. Nama marketplace adalah field `name` pada `marketplace.json` tersebut, dan Claude Code menampilkannya setelah marketplace berhasil ditambahkan.

95 

96Untuk cara lain menambahkan marketplace, lihat [Tambahkan marketplace](/docs/id/plugins/install#add-a-marketplace).

97 

98<h2 id="next-steps">

99 Langkah selanjutnya

100</h2>

101 

102* [Instal dan kelola plugin](/docs/id/plugins/install): instal plugin dari salah satu marketplace ini dan pilih cakupan

103* [Keamanan dan kepercayaan plugin](/docs/id/plugins/security): apa yang dapat dilakukan plugin di mesin Anda dan cara meninjaunya sebelum Anda menginstalnya

104* [Plugin code intelligence](/docs/id/plugins/code-intelligence): instal salah satu plugin language server dari marketplace resmi

105* [Buat marketplace](/docs/id/plugins/create-marketplace): jalankan marketplace Anda sendiri berdampingan dengan milik Anthropic

Details

88| :- | :- |88| :- | :- |

89| `-s, --scope <scope>` | Cakupan instalasi: `user`, `project`, atau `local`. Default ke `user` |89| `-s, --scope <scope>` | Cakupan instalasi: `user`, `project`, atau `local`. Default ke `user` |

90| `--config <key=value>` | Tetapkan opsi [`userConfig`](/docs/id/plugins/manifest-reference) yang dideklarasikan manifest plugin. Ulangi flag untuk setiap opsi. Memerlukan Claude Code v2.1.147 atau lebih baru. Kunci yang ditulis `<server>.<key>` menetapkan pengaturan yang dideklarasikan [server MCP yang dibundel](/docs/id/plugins/components#include-a-packaged-mcpb-server) dalam `user_config`-nya sendiri, untuk file bundle yang dikirim di dalam plugin. Bentuk `<server>.<key>` memerlukan Claude Code v2.1.285 atau lebih baru |90| `--config <key=value>` | Tetapkan opsi [`userConfig`](/docs/id/plugins/manifest-reference) yang dideklarasikan manifest plugin. Ulangi flag untuk setiap opsi. Memerlukan Claude Code v2.1.147 atau lebih baru. Kunci yang ditulis `<server>.<key>` menetapkan pengaturan yang dideklarasikan [server MCP yang dibundel](/docs/id/plugins/components#include-a-packaged-mcpb-server) dalam `user_config`-nya sendiri, untuk file bundle yang dikirim di dalam plugin. Bentuk `<server>.<key>` memerlukan Claude Code v2.1.285 atau lebih baru |

91| `-y, --yes` | Terima perintah instal yang ditampilkan tanpa prompt `Run this command now?`. Diabaikan ketika perintah berjalan di dalam sesi Claude Code, seperti dari alat Bash atau hook. Memerlukan Claude Code v2.1.229 atau lebih baru |91| `-y, --yes` | Terima perintah instal yang ditampilkan tanpa prompt `Run this command now?`. Diabaikan ketika perintah berjalan di dalam sesi Claude Code, seperti dari tool Bash atau hook. Memerlukan Claude Code v2.1.229 atau lebih baru |

92| `--accept-command <sha256>` | Terima perintah instal yang ditampilkan yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Lihat [Terima perintah instal yang ditampilkan](#accept-a-displayed-install-command). Memerlukan Claude Code v2.1.271 atau lebih baru |92| `--accept-command <sha256>` | Terima perintah instal yang ditampilkan yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Lihat [Terima perintah instal yang ditampilkan](#accept-a-displayed-install-command). Memerlukan Claude Code v2.1.271 atau lebih baru |

93| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [Format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |93| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [Format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |

94 94 


97Lewatkan `-y` dari terminal Anda sendiri untuk menerima perintah yang ditampilkan tanpa prompt. Berikut yang terjadi tanpa TTY dan ketika Claude menjalankan perintah:97Lewatkan `-y` dari terminal Anda sendiri untuk menerima perintah yang ditampilkan tanpa prompt. Berikut yang terjadi tanpa TTY dan ketika Claude menjalankan perintah:

98 98 

99* **stdin atau stdout bukan TTY, dan Anda tidak melewatkan `-y` atau `--accept-command`**: instalasi ditolak. Output mengatakan perintah hanya ditampilkan, dan kode keluar adalah `1`99* **stdin atau stdout bukan TTY, dan Anda tidak melewatkan `-y` atau `--accept-command`**: instalasi ditolak. Output mengatakan perintah hanya ditampilkan, dan kode keluar adalah `1`

100* **Claude menjalankan perintah melalui alat Bash-nya**: `-y` diabaikan. Jalankan perintah dari terminal Anda sendiri100* **Claude menjalankan perintah melalui tool Bash-nya**: `-y` diabaikan. Jalankan perintah dari terminal Anda sendiri

101 101 

102Instal plugin untuk semua orang yang mengkloning proyek:102Instal plugin untuk semua orang yang mengkloning proyek:

103 103 


125 125 

126Field lain, seperti `pluginId`, `scope`, dan `failureCode`, muncul hanya ketika berlaku.126Field lain, seperti `pluginId`, `scope`, dan `failureCode`, muncul hanya ketika berlaku.

127 127 

128Opsi `--json` pada `plugin uninstall`, `plugin update`, `plugin enable`, dan `plugin disable` mencetak objek yang sama dengan field milik subperintah tersebut.

129 

128Kesalahan penggunaan, seperti `--scope` yang tidak valid, tidak mencetak baris hasil dan keluar `1` dengan alasan di stderr.130Kesalahan penggunaan, seperti `--scope` yang tidak valid, tidak mencetak baris hasil dan keluar `1` dengan alasan di stderr.

129 131 

130<h4 id="accept-a-displayed-install-command">132<h4 id="accept-a-displayed-install-command">


462* Plugin yang diinstal sebagai `name` atau `name@marketplace`464* Plugin yang diinstal sebagai `name` atau `name@marketplace`

463* `name@skills-dir`465* `name@skills-dir`

464 466 

465Letakkan target sebelum `--tag`, `--allow-tools`, dan `--json`. Setiap opsi ini mengambil kata-kata yang mengikutinya sebagai nilainya, jadi target yang ditulis setelah salah satu dari mereka dibaca sebagai tag, nama alat, atau jalur output JSON alih-alih sebagai target.467Letakkan target sebelum `--tag`, `--allow-tools`, dan `--json`. Setiap opsi ini mengambil kata-kata yang mengikutinya sebagai nilainya, jadi target yang ditulis setelah salah satu dari mereka dibaca sebagai tag, nama tool, atau jalur output JSON alih-alih sebagai target.

466 468 

467Tabel ini mencantumkan opsi yang paling banyak digunakan run. Jalankan `claude plugin eval --help` untuk set lengkap, termasuk `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, dan `--verbose`.469Tabel ini mencantumkan opsi yang paling banyak digunakan run. Jalankan `claude plugin eval --help` untuk set lengkap, termasuk `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, dan `--verbose`.

468 470 

469| Opsi | Deskripsi | Default |471| Opsi | Deskripsi | Default |

470| :- | :- | :- |472| :- | :- | :- |

471| `--runs <n>` | Berjalan per kasus di setiap [arm](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | `runs` setiap kasus, atau 3 |473| `--runs <n>` | Berjalan per kasus di setiap [arm](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | `runs` setiap kasus, atau 3 |

472| `-j, --concurrency <n>` | Sesi agen untuk dijalankan sekaligus, 1 hingga 8. Mereka berbagi batas laju Anda | `1` |474| `-j, --concurrency <n>` | Sesi agent untuk dijalankan sekaligus, 1 hingga 8. Mereka berbagi rate limit Anda | `1` |

473| `--model <model>` | Model untuk agen di bawah pengujian | `model` setiap kasus, atau `ANTHROPIC_MODEL` jika diatur, atau default Claude Code |475| `--model <model>` | Model untuk agent di bawah pengujian | `model` setiap kasus, atau `ANTHROPIC_MODEL` jika diatur, atau default Claude Code |

474| `--judge-model <model>` | Model untuk grader `llm` dan `baseline` | Model kecil cepat |476| `--judge-model <model>` | Model untuk grader `llm` dan `baseline` | Model kecil cepat |

475| `--ablation <mode>` | `none` atau `with-without`. Lihat [Bandingkan dengan baseline tanpa plugin](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | Diputuskan per kasus, seperti bagian itu menjelaskan |477| `--ablation <mode>` | `none` atau `with-without`. Lihat [Bandingkan dengan baseline tanpa plugin](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | Diputuskan per kasus, seperti bagian itu menjelaskan |

476| `--threshold <0..1>` | Keluar 1 jika kasus apa pun mencetak di bawah ini | `1.0` |478| `--threshold <0..1>` | Keluar 1 jika kasus apa pun mencetak di bawah ini | `1.0` |

477| `--max-cost-usd <usd>` | Berhenti sebelum run berikutnya setelah pengeluaran mencapai ini, keluar 2, dan laporkan hasil parsial | Tidak ada batas |479| `--max-cost-usd <usd>` | Berhenti sebelum run berikutnya setelah pengeluaran mencapai ini, keluar 2, dan laporkan hasil parsial | Tidak ada batas |

478| `--allow-tools <tools...>` | Berikan alat di luar set hanya baca, seperti `Bash`, `Write`, `Edit`, atau `"mcp__plugin_<plugin>_<server>__*"`. Lihat [Berikan alat](/docs/id/plugin-evals#grant-tools) | |480| `--allow-tools <tools...>` | Berikan tool di luar set read-only, seperti `Bash`, `Write`, `Edit`, atau `"mcp__plugin_<plugin>_<server>__*"`. Lihat [Berikan tool](/docs/id/plugin-evals#grant-tools) | |

479| `--scaffold` | Jalankan [`scaffold_script`](/docs/id/plugin-evals#add-setup-or-history-with-case-yaml) setiap kasus | Mati |481| `--scaffold` | Jalankan [`scaffold_script`](/docs/id/plugin-evals#add-setup-or-history-with-case-yaml) setiap kasus | Mati |

480| `--trust-plugin` | Lewati prompt kepercayaan run pertama, untuk CI. Lihat [Apa yang dapat diakses run](/docs/id/plugin-evals#security) | Mati |482| `--trust-plugin` | Lewati prompt kepercayaan run pertama, untuk CI. Lihat [Apa yang dapat diakses run](/docs/id/plugin-evals#security) | Mati |

481| `--mocks <mode>` | `record` atau `off`. Lihat [Mock server MCP](/docs/id/plugin-evals#mock-mcp-servers) | `record` |483| `--mocks <mode>` | `record` atau `off`. Lihat [Mock server MCP](/docs/id/plugin-evals#mock-mcp-servers) | `record` |


569* Tag sudah ada571* Tag sudah ada

570* Pohon kerja kotor572* Pohon kerja kotor

571 573 

574<h3 id="plugin-test">

575 plugin test

576</h3>

577 

578Jalankan pengujian untuk [mod](/docs/id/plugins/mods/overview), yaitu plugin yang kodenya mendaftarkan handler peristiwa. Perintah ini tidak memerlukan sesi, proses masuk, atau jaringan. Untuk cara menulis pengujian, lihat [Uji mod](/docs/id/plugins/mods/test).

579 

580```bash theme={null}

581claude plugin test [directory]

582```

583 

584`[directory]` adalah direktori mod, default ke direktori saat ini. Perintah menjalankan setiap file di bawahnya yang namanya berakhiran `.test.ts` atau `.test.tsx`, dan keluar dengan status 1 ketika ada pengujian yang gagal.

585 

586Jalankan pengujian untuk mod di `./first-mod`:

587 

588```bash theme={null}

589claude plugin test ./first-mod

590```

591 

572<h3 id="plugin-validate">592<h3 id="plugin-validate">

573 plugin validate593 plugin validate

574</h3>594</h3>


613 633 

614* **`SKILL.md` di root plugin**: ketika Anda menjalankan `claude plugin validate` terhadap direktori plugin, Claude Code tidak memeriksa `SKILL.md` di root plugin634* **`SKILL.md` di root plugin**: ketika Anda menjalankan `claude plugin validate` terhadap direktori plugin, Claude Code tidak memeriksa `SKILL.md` di root plugin

615* **`CLAUDE.md` di root plugin**: dalam run plugin, Claude Code juga memperingatkan tentang `CLAUDE.md` di root plugin635* **`CLAUDE.md` di root plugin**: dalam run plugin, Claude Code juga memperingatkan tentang `CLAUDE.md` di root plugin

616* **File plugin dalam run marketplace**: dari direktori marketplace, Claude Code tidak membuka file skill, agent, command, atau hook plugin. Untuk menemukan kesalahan di file itu, validasi setiap direktori plugin636* **File plugin dalam run marketplace**: dari direktori marketplace, Claude Code tidak membuka file skill, agent, command, atau hook plugin, maupun file server MCP yang dibundelnya. Untuk menemukan kesalahan di file itu, validasi setiap direktori plugin

617 637 

618<h4 id="output-and-exit-codes">638<h4 id="output-and-exit-codes">

619 Output dan kode keluar639 Output dan kode keluar


802 822 

803`<plugin>` adalah plugin `name` atau `name@marketplace`.823`<plugin>` adalah plugin `name` atau `name@marketplace`.

804 824 

805Tabel di bawah mencantumkan setiap bentuk sesi. Subperintah shell `init`, `update`, `details`, `prune`, `eval`, dan `eval init` tidak memiliki bentuk sesi.825Tabel di bawah mencantumkan setiap bentuk sesi. Subperintah shell `init`, `update`, `details`, `prune`, `eval`, `eval init`, dan `test` tidak memiliki bentuk sesi.

806 826 

807| Perintah | Alias | Apa yang dilakukan |827| Perintah | Alias | Apa yang dilakukan |

808| :- | :- | :- |828| :- | :- | :- |

plugins/loading.md +20 −14

Details

244 Kapan dependency install berjalan244 Kapan dependency install berjalan

245</h4>245</h4>

246 246 

247Claude Code menjalankan instalasi di dalam direktori versi yang disalin setiap kali membuat satu:247Claude Code menginstal dependensi ke dalam direktori versi yang disalin setiap kali membuatnya:

248 248 

249* Ketika Anda menginstal plugin249* Ketika Anda menginstal plugin

250* Ketika Claude Code memperbarui plugin ke versi baru250* Ketika Claude Code memperbarui plugin ke versi baru


252 252 

253Untuk plugin dengan path relatif [dimuat di tempat](#in-place-and-copied-plugins) dari marketplace direktori lokal, Claude Code tidak menginstal dependensi ke dalam direktori sumber. Instal mereka di sana sendiri, atau dari hook ke [`${CLAUDE_PLUGIN_DATA}`](/docs/id/plugins/components#path-variables-and-persistent-data).253Untuk plugin dengan path relatif [dimuat di tempat](#in-place-and-copied-plugins) dari marketplace direktori lokal, Claude Code tidak menginstal dependensi ke dalam direktori sumber. Instal mereka di sana sendiri, atau dari hook ke [`${CLAUDE_PLUGIN_DATA}`](/docs/id/plugins/components#path-variables-and-persistent-data).

254 254 

255Instalasi hanya berjalan ketika direktori root plugin berisi baik `package.json` maupun lockfile yang didukung. Lockfile menentukan perintah mana yang Claude Code jalankan:255Instalasi hanya berjalan ketika direktori root plugin berisi baik `package.json` maupun lockfile yang didukung.

256 256 

257| Lockfile | Perintah |257Lockfile menentukan package manager mana yang Claude Code jalankan:

258 

259| Lockfile | Package manager |

258| :- | :- |260| :- | :- |

259| `bun.lock` atau `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |261| `bun.lock` | Bun |

260| `npm-shrinkwrap.json` atau `package-lock.json` | `npm ci --ignore-scripts` |262| `npm-shrinkwrap.json` atau `package-lock.json` | npm |

261 263 

262Jika plugin berisi lebih dari satu lockfile ini, Claude Code menggunakan kecocokan pertama, memeriksa dalam urutan: `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.264Jika plugin berisi lebih dari satu lockfile ini, Claude Code menggunakan kecocokan pertama, memeriksa dalam urutan: `bun.lock`, `npm-shrinkwrap.json`, `package-lock.json`.

263 265 

264Claude Code melewati instalasi untuk lockfile Yarn dan pnpm dan untuk `bunfig.toml` di samping lockfile Bun:266Claude Code melewati instalasi dalam kasus lockfile berikut:

265 267 

266* Jika plugin Anda hanya memiliki `yarn.lock` atau `pnpm-lock.yaml`, gantikan dengan lockfile npm268* **`bun.lockb`**: lockfile biner Bun tidak dapat diperiksa. Sertakan `bun.lock` berbentuk teks atau lockfile npm sebagai gantinya

267* Jika `bunfig.toml` berada di direktori yang sama dengan lockfile Bun, hapus `bunfig.toml`, atau gantikan lockfile Bun dengan lockfile npm269* **`yarn.lock` atau `pnpm-lock.yaml`**: gantikan dengan lockfile npm

270* **Lockfile dalam format yang tidak dibaca Claude Code**: lockfile npm memerlukan `lockfileVersion` bernilai `2` atau `3`, yang ditulis oleh npm 7 atau lebih baru, dan `bun.lock` memerlukan `lockfileVersion` yang tidak lebih tinggi dari `2`

268 271 

269Sertakan lockfile npm untuk menjangkau pengguna paling banyak. Claude Code menjalankan package manager lockfile yang cocok dari PATH pengguna dan tidak mencoba lockfile lain sebagai gantinya jika package manager tersebut hilang.272Sertakan lockfile npm untuk menjangkau pengguna paling banyak. Claude Code menjalankan package manager lockfile yang cocok dari PATH pengguna dan tidak mencoba lockfile lain sebagai gantinya jika package manager tersebut hilang.

270 273 


276 279 

277Claude Code membatasi dependency install ini sehingga tidak ada kode dari plugin atau paketnya yang dieksekusi selama itu, dan membatasi berapa lama itu dapat berjalan:280Claude Code membatasi dependency install ini sehingga tidak ada kode dari plugin atau paketnya yang dieksekusi selama itu, dan membatasi berapa lama itu dapat berjalan:

278 281 

279* **Frozen resolution**: Bun dan npm menginstal dengan tepat apa yang lockfile pin, dan gagal daripada menyelesaikan ulang versi ketika `package.json` dan lockfile tidak setuju282* **Registry packages only**: setiap dependensi harus berupa paket registry yang di-pin dalam lockfile ke versi yang tepat. Plugin dengan dependensi git, GitHub, folder, workspace, atau yang ditautkan tidak mendapatkan instalasi.

283* **`https` downloads**: link unduhan dalam lockfile harus menggunakan `https`, kecuali link tersebut menunjuk ke registry npm default milik pengguna yang menginstal.

284* **A separate install folder**: package manager berjalan di foldernya sendiri yang hanya berisi salinan daftar dependensi yang telah diperiksa, sehingga npm dan Bun tidak membaca `.npmrc`, `.env`, atau `bunfig.toml` milik plugin. Ketika instalasi berhasil, Claude Code memindahkan `node_modules` yang dihasilkan ke dalam plugin.

285* **Frozen resolution**: instalasi menggunakan tepat versi yang di-pin oleh lockfile, dan Claude Code melewatinya ketika `package.json` dan lockfile tidak mencantumkan dependensi yang sama

280* **No lifecycle scripts**: `--ignore-scripts` menjaga skrip `preinstall`, `install`, dan `postinstall` agar tidak berjalan, sehingga dependensi yang membangun modul native dalam skrip tersebut diunduh tetapi tidak dikompilasi selama instalasi ini286* **No lifecycle scripts**: `--ignore-scripts` menjaga skrip `preinstall`, `install`, dan `postinstall` agar tidak berjalan, sehingga dependensi yang membangun modul native dalam skrip tersebut diunduh tetapi tidak dikompilasi selama instalasi ini

287* **No overrides or patches**: plugin yang `package.json`-nya menetapkan `overrides` npm tidak mendapatkan instalasi dari lockfile npm, dan plugin yang menetapkan `patchedDependencies` Bun tidak mendapatkan instalasi dari `bun.lock`

281* **60-second timeout**: Claude Code menghentikan instalasi yang berjalan lebih lama dan memperlakukannya sebagai gagal288* **60-second timeout**: Claude Code menghentikan instalasi yang berjalan lebih lama dan memperlakukannya sebagai gagal

282 289 

283Claude Code mengambil plugin sumber npm sebelum dependency install ini, dan tidak ada skrip instalasi paket sendiri yang berjalan selama pengambilan. Lihat [npm plugin source](/docs/id/plugins/marketplace-reference#npm-plugin-source).290Claude Code mengambil plugin sumber npm sebelum dependency install ini, dan tidak ada skrip instalasi paket sendiri yang berjalan selama pengambilan. Lihat [npm plugin source](/docs/id/plugins/marketplace-reference#npm-plugin-source).


290 Ketika dependency install gagal atau dilewati297 Ketika dependency install gagal atau dilewati

291</h4>298</h4>

292 299 

293Instalasi yang gagal atau dilewati tidak pernah memblokir plugin, dan setiap kasus meninggalkan tanda yang berbeda:300Instalasi yang gagal atau dilewati tidak pernah memblokir plugin, yang kemudian dimuat tanpa dependensi tersebut. Setiap kasus meninggalkan tanda yang berbeda:

294 301 

295* Instalasi yang gagal, atau yang dilewati karena lockfile Yarn atau pnpm atau `bunfig.toml`, muncul sebagai peringatan dalam output `claude --debug`302* Instalasi yang gagal, atau yang dilewati karena lockfile-nya atau karena salah satu [batas pada instalasi](#limits-on-the-dependency-install), muncul dalam output `claude --debug` sebagai baris `Plugin dependency install warning` yang menyebutkan alasannya

296* Plugin dengan `package.json` dan tidak ada lockfile dilewati tanpa entri log303* Plugin dengan `package.json` dan tidak ada lockfile dilewati tanpa entri log

297* Instalasi yang habis waktu dapat meninggalkan pohon `node_modules` parsial dalam salinan cache

298 304 

299Ketika instalasi otomatis tidak dapat menyediakan dependensi, instal dari hook ke [persistent data directory](/docs/id/plugins/components#path-variables-and-persistent-data). Itu termasuk paket yang memerlukan skrip lifecycle mereka untuk membangun, dependensi Python, dan plugin yang dikunci dengan Yarn atau pnpm.305Ketika instalasi otomatis tidak dapat menyediakan dependensi, instal dari hook ke [persistent data directory](/docs/id/plugins/components#path-variables-and-persistent-data). Itu termasuk paket yang memerlukan skrip lifecycle mereka untuk mem-build, dependensi Python, plugin yang dikunci dengan Yarn atau pnpm, dan dependensi yang bukan paket registry, seperti dependensi git.

300 306 

301<h2 id="versions-and-updates">307<h2 id="versions-and-updates">

302 Versi dan pembaruan308 Versi dan pembaruan

Details

155| `github` | `repo`, `ref`, `sha` | Repositori GitHub dalam bentuk `owner/repo` |155| `github` | `repo`, `ref`, `sha` | Repositori GitHub dalam bentuk `owner/repo` |

156| `url` | `url`, `ref`, `sha` | Repositori git apa pun menurut URL |156| `url` | `url`, `ref`, `sha` | Repositori git apa pun menurut URL |

157| `git-subdir` | `url`, `path`, `ref`, `sha` | Satu subdirektori repositori git, diambil dengan sparse partial clone |157| `git-subdir` | `url`, `path`, `ref`, `sha` | Satu subdirektori repositori git, diambil dengan sparse partial clone |

158| `npm` | `package`, `version`, `registry` | Paket npm, diambil dengan klien npm Anda dan dibuka tanpa menjalankan skrip install |158| `npm` | `package`, `version`, `registry` | Paket registry npm atau tautan tarball, diambil dengan klien npm Anda dan dibuka tanpa menjalankan skrip install |

159| `archive` | `url`, `sha256` | Arsip Zip melalui HTTPS. Memerlukan Claude Code v2.1.224 atau lebih baru |159| `archive` | `url`, `sha256` | Arsip Zip melalui HTTPS. Memerlukan Claude Code v2.1.224 atau lebih baru |

160| `command` | `command`, `timeout`, `mode` | Direktori yang dicetak oleh perintah yang Claude Code jalankan di mesin pengguna. Memerlukan Claude Code v2.1.229 atau lebih baru |160| `command` | `command`, `timeout`, `mode` | Direktori yang dicetak oleh perintah yang Claude Code jalankan di mesin pengguna. Memerlukan Claude Code v2.1.229 atau lebih baru |

161 161 


258 258 

259Sumber `npm` mengambil field ini:259Sumber `npm` mengambil field ini:

260 260 

261* `package`: nama paket, atau nama scoped seperti `@your-org/formatter`261* `package`: nama paket registry seperti `@your-org/formatter`, nama dengan versi yang ditambahkan seperti `@your-org/formatter@2.0.0`, atau tautan `https` ke file tarball paket

262* `version`: versi atau rentang262* `version`: versi, rentang semver, atau dist-tag, digunakan ketika `package` adalah nama paket tanpa versi yang ditambahkan. Hilangkan untuk mengambil `latest`

263* `registry`: URL registry untuk paket yang bukan di registry default263* `registry`: URL registry untuk paket yang bukan di registry default

264 264 

265Claude Code mengambil paket dengan klien npm Anda. Skrip install paket, seperti `preinstall` atau `postinstall`, tidak pernah berjalan, dan dependensinya tidak dipasang selama pengambilan. Jika paket memiliki lockfile yang didukung di samping `package.json`-nya, Claude Code memasang [dependensi paket Node.js](/docs/id/plugins/loading#node-js-package-dependencies) tersebut dalam langkah terpisah, juga dengan skrip dinonaktifkan.265Claude Code mengambil paket dengan klien npm Anda. Skrip install paket, seperti `preinstall` atau `postinstall`, tidak pernah berjalan, dan dependensinya tidak dipasang selama pengambilan. Jika paket memiliki lockfile yang didukung di samping `package.json`-nya, Claude Code memasang [dependensi paket Node.js](/docs/id/plugins/loading#node-js-package-dependencies) tersebut dalam langkah terpisah, juga dengan skrip dinonaktifkan.

266 266 

267Claude Code memeriksa nilai `package` sebelum mengambil apa pun. Nilai yang ditolak menggagalkan pemasangan dengan pesan yang menyebutkan nilai tersebut dan alasannya. Nilai yang ditolak meliputi:

268 

269* **Alamat git, folder atau jalur `file:`, atau alias `npm:`**: gunakan [sumber `github`, `url`, atau `git-subdir`](#plugin-sources) untuk repositori git, jalur relatif untuk folder di marketplace, dan nama paket itu sendiri untuk alias

270* **Tautan tarball di github.com, gist.github.com, gitlab.com, bitbucket.org, atau git.sr.ht**: ditolak bahkan ketika tautan tersebut adalah unduhan rilis GitHub, kecuali jika itu adalah tautan registry npm GitLab di bawah `gitlab.com/api/v4/`

271* **Tautan tarball melalui `http`**: ditolak kecuali jika menunjuk ke registry npm default milik pengguna yang memasang

272 

273URL `registry` harus menggunakan `https` kecuali jika itu adalah registry npm default milik pengguna yang memasang. Dengan registry `http` lainnya, pemasangan gagal sebelum npm menghubunginya.

274 

267```json theme={null}275```json theme={null}

268{276{

269 "name": "formatter",277 "name": "formatter",

Details

167 167 

168Pengguna yang modnya tidak memuat menemukan alasannya dalam log debug mereka. [Pesan penolakan](/docs/id/plugins/mods/troubleshoot#refusal-messages) mencantumkan baris untuk `allowManagedHooksOnly` dan `disableAllHooks`, dan [Pesan dari penjaga bawaan](/docs/id/plugins/mods/troubleshoot#messages-from-the-built-in-guard) memiliki baris untuk `allowManagedModsOnly`.168Pengguna yang modnya tidak memuat menemukan alasannya dalam log debug mereka. [Pesan penolakan](/docs/id/plugins/mods/troubleshoot#refusal-messages) mencantumkan baris untuk `allowManagedHooksOnly` dan `disableAllHooks`, dan [Pesan dari penjaga bawaan](/docs/id/plugins/mods/troubleshoot#messages-from-the-built-in-guard) memiliki baris untuk `allowManagedModsOnly`.

169 169 

170<h3 id="allow-only-your-organization’s-mods">

171 Izinkan hanya mod organisasi Anda

172</h3>

173 

174Untuk menjalankan mod organisasi Anda dan memblokir mod yang dibawa pengguna, terapkan pengaturan dari baris **Hanya mod organisasi Anda** pada [tabel kebijakan](#choose-how-much-to-allow), ditambah `disableSideloadFlags`. Dengan `managed-settings.json` lengkap ini, Claude Code menolak mod milik pengguna sendiri, sehingga tidak ada hook mereka yang berjalan, dan mod kebijakan Anda berjalan mendahului mod lainnya:

175 

176```json managed-settings.json theme={null}

177{

178 "extraKnownMarketplaces": {

179 "acme-tools": {

180 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

181 }

182 },

183 "enabledPlugins": { "acme-guard@acme-tools": true },

184 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"],

185 "pluginConfigs": {

186 "cc-plugin-sec-default@builtin": {

187 "options": { "allowManagedModsOnly": true }

188 }

189 },

190 "disableSideloadFlags": true

191}

192```

193 

194Setiap kelompok kunci melakukan satu tugas:

195 

196* **`extraKnownMarketplaces`, `enabledPlugins`, dan `prependPlugins`**: memasang mod Anda sehingga dihitung sebagai milik Anda, dan menjalankannya terlebih dahulu dengan penjaga setelahnya. [Pasang mod organisasi Anda dan atur urutannya](#install-your-organizations-mods) mencakup direktori yang ditunjuk oleh kunci-kunci ini.

197* **`pluginConfigs`**: mengatur opsi `allowManagedModsOnly` penjaga, sehingga Claude Code menolak mod milik pengguna sendiri. Hook pengaturan, baris status, dan `/goal` mereka tetap berfungsi.

198* **`disableSideloadFlags`**: lihat [`disableSideloadFlags`](/docs/id/settings-reference#disablesideloadflags) untuk flag yang ditolaknya saat startup

199 

200Untuk memastikan kebijakan pada mesin uji, di shell Anda mulai sesi dengan `claude --debug` dan baca log debug:

201 

202* **Mod Anda**: baris `hooks module`-nya memiliki `tier prepend`

203* **Mod yang dipasang pengguna**: sebuah baris berbunyi `refused by cc-plugin-sec-default: mods are limited to your organization's by policy (allowManagedModsOnly)`. Baris sebelumnya menyatakan bahwa modul hook mod tersebut `loaded`, jadi carilah penolakannya.

204* **Direktori plugin**: `claude --plugin-dir ./any-mod` keluar dengan pesan yang diawali `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)`

205 

206Untuk juga membatasi marketplace mana yang dapat ditambahkan pengguna, gabungkan file ini dengan [pembatasan marketplace Anda](/docs/id/plugins/org#restrict-what-users-can-install).

207 

208<h3 id="apply-your-plugin-controls-to-mods">

209 Terapkan kontrol plugin Anda pada mod

210</h3>

211 

212Mod adalah plugin, sehingga cara Anda [mengelola plugin untuk organisasi Anda](/docs/id/plugins/org) juga berlaku untuk plugin yang berisi mod:

213 

214* **Lihat plugin mana yang dimuat di seluruh armada Anda**: [Audit dan tinjau](/docs/id/plugins/org#audit-and-review)

215* **Tentukan kapan plugin yang telah Anda tinjau dapat diperbarui**: [Atur kebijakan pembaruan](/docs/id/plugins/org#set-update-policy)

216* **Berikan satu kelompok kebijakan yang berbeda, seperti uji coba**: [Rencanakan untuk hal yang tidak dapat diberlakukan oleh pengaturan terkelola](/docs/id/plugins/org#plan-for-what-managed-settings-can’t-enforce)

217* **Periksa aplikasi dan jenis sesi mana yang menerapkan kunci plugin**: [Kapan setiap surface menerapkan kunci plugin](/docs/id/plugins/org#when-each-surface-applies-the-plugin-keys)

218* **Siapkan CI dan container**: [Siapkan container dan CI](/docs/id/plugins/org#seed-containers-and-ci)

219* **Tawarkan mod yang boleh dipasang pengguna Anda**: [Hosting marketplace](/docs/id/plugins/host-marketplace). Mod yang disalin Claude Code dari sumber GitHub, git, URL, atau npm dihitung sebagai milik pengguna, bukan sebagai [milik organisasi Anda](#install-your-organizations-mods).

220 

170<h3 id="set-options-on-the-built-in-guard">221<h3 id="set-options-on-the-built-in-guard">

171 Atur opsi pada penjaga bawaan222 Atur opsi pada penjaga bawaan

172</h3>223</h3>

Details

190 190 

191Simpan tunggu di dalam panggilan mods API seperti `$.ui.ask`, karena waktu itu tidak dihitung terhadap [batas waktu 10 detik](/docs/id/plugins/mods/reference#limits) hook. Waktu yang dihabiskan menunggu janji Anda sendiri dihitung. Claude Code melewati hook yang habis waktu, jadi perintah yang ditahan akan berjalan.191Simpan tunggu di dalam panggilan mods API seperti `$.ui.ask`, karena waktu itu tidak dihitung terhadap [batas waktu 10 detik](/docs/id/plugins/mods/reference#limits) hook. Waktu yang dihabiskan menunggu janji Anda sendiri dihitung. Claude Code melewati hook yang habis waktu, jadi perintah yang ditahan akan berjalan.

192 192 

193<h4 id="approve-or-refuse-a-tool-call-before-the-user-is-asked">

194 Setujui atau tolak panggilan tool sebelum pengguna ditanya

195</h4>

196 

197Untuk memutuskan apakah panggilan tool boleh berjalan, tangani [`tool.check`](/docs/id/plugins/mods/reference#tools), peristiwa tempat Claude Code membuat keputusan tersebut. Peristiwa ini diaktifkan setelah aturan izin dan hook pengaturan telah memutuskan, dan `next(e)` diselesaikan dengan keputusan mereka: `allow`, `ask`, atau `deny`. Hook Anda mengembalikan keputusan tersebut atau keputusan yang berbeda. `e.input` berisi argumen tool, seperti `command` untuk Bash.

198 

199Untuk perintah atau path yang tetap, gunakan [aturan izin](/docs/id/permissions#permission-rule-syntax) seperti `Bash(npm test)`, yang tidak memerlukan kode. Tangani `tool.check` ketika keputusan bergantung pada apa yang berlaku pada saat itu, seperti branch Git saat ini atau nilai yang dicatat oleh hook lain.

200 

201Hook ini menolak `git push` saat branch saat ini adalah `main`:

202 

203```javascript theme={null}

204on('tool.check', { tool: 'Bash' }, async ($, e, next) => {

205 // Apa yang diputuskan aturan izin dan hook pengaturan: 'allow', 'ask', atau 'deny'

206 const decided = await next(e)

207 if (!e.input.command.includes('git push')) return decided

208 const branch = await $.process.run(['git', 'branch', '--show-current'])

209 if (branch.stdout.trim() !== 'main') return decided

210 return { decision: 'deny', reason: 'Push from a branch other than main' }

211})

212```

213 

214Di `main`, hook mengembalikan `deny`, bahkan ketika suatu aturan mengizinkan `git push`. Di branch lain, dan untuk perintah lain, panggilan mendapatkan keputusan yang akan didapatnya tanpa mod.

215 

216Hook mencocokkan teks perintah, jadi perlakukan sebagai pengingat untuk Claude. Untuk memblokir push ke `main` bagi semua orang, lindungi branch tersebut di host Git Anda.

217 

218Hook dapat mengembalikan salah satu dari ketiga keputusan, sehingga juga dapat menyetujui panggilan yang diblokir oleh hook `PreToolUse` di luar pengaturan terkelola. [Perluas izin dengan hook](/docs/id/permissions#extend-permissions-with-hooks) mencantumkan keputusan mana yang tetap berlaku atas mod.

219 

193<h3 id="rewrite-or-add-to-a-prompt">220<h3 id="rewrite-or-add-to-a-prompt">

194 Tulis ulang atau tambahkan ke prompt221 Tulis ulang atau tambahkan ke prompt

195</h3>222</h3>


301* **Hook `PreToolUse` dari pengaturan terkelola**: berjalan sebelum hook `tool.call` mod pertama, dan blok dari salah satu dari mereka adalah final, jadi tidak ada mod yang melihat panggilan.328* **Hook `PreToolUse` dari pengaturan terkelola**: berjalan sebelum hook `tool.call` mod pertama, dan blok dari salah satu dari mereka adalah final, jadi tidak ada mod yang melihat panggilan.

302* **Hook `PreToolUse` dari setiap file pengaturan lain dan dari `hooks/hooks.json` plugin**: berjalan setelah mod terakhir memanggil `next`, sebagai bagian dari perilaku Claude Code sendiri. Mod yang menjawab `tool.call` tanpa memanggil `next` mencegah mereka berjalan, dan mod yang memanggil `next` melihat keputusan mereka dalam hasil yang dikembalikan.329* **Hook `PreToolUse` dari setiap file pengaturan lain dan dari `hooks/hooks.json` plugin**: berjalan setelah mod terakhir memanggil `next`, sebagai bagian dari perilaku Claude Code sendiri. Mod yang menjawab `tool.call` tanpa memanggil `next` mencegah mereka berjalan, dan mod yang memanggil `next` melihat keputusan mereka dalam hasil yang dikembalikan.

303 330 

304[`tool.check`](/docs/id/plugins/mods/reference#tools) adalah peristiwa di mana Claude Code memutuskan apakah panggilan alat dapat berjalan. Peristiwa ini diaktifkan setelah hook tersebut dan aturan izin telah memutuskan, dan `next(e)` diselesaikan dengan keputusan mereka. Hook pada `tool.check` dapat mengembalikan keputusan berbeda, seperti `{ decision: 'allow' }`, sehingga dapat menyetujui panggilan yang diblokir hook di grup kedua. [Perluas izin dengan hook](/docs/id/permissions#extend-permissions-with-hooks) mencantumkan keputusan mana yang berlaku atas mod.331[`tool.check`](#approve-or-refuse-a-tool-call-before-the-user-is-asked) diaktifkan setelah hook tersebut dan aturan izin telah memutuskan, sehingga hook pada peristiwa tersebut dapat menyetujui panggilan yang diblokir hook di grup kedua.

305 332 

306<h3 id="handle-a-hook-that-fails">333<h3 id="handle-a-hook-that-fails">

307 Tangani hook yang gagal334 Tangani hook yang gagal

Details

407 ```407 ```

408 408 

409 ```text theme={null}409 ```text theme={null}

410 Note: Type a note and press Enter ⏎ add410 Note: Type a note and press Enter

411 ```411 ```

412 </Tab>412 </Tab>

413</Tabs>413</Tabs>

414 414 

415Tabel ini mencantumkan setiap elemen:415[Galeri antarmuka](/docs/id/plugins/mods/gallery) memiliki contoh dan tangkapan layar dari sebagian besar elemen. Tabel ini mencantumkan setiap elemen:

416 416 

417| Elemen | Apa yang digambarnya | Di mana |417| Elemen | Apa yang digambarnya | Di mana |

418| :- | :- | :- |418| :- | :- | :- |

Details

72* **Bertindak tanpa meminta Anda**: setujui pemanggilan alat sebelum Anda diminta72* **Bertindak tanpa meminta Anda**: setujui pemanggilan alat sebelum Anda diminta

73* **Habiskan penggunaan Anda**: panggil model pada paket atau kunci API Anda73* **Habiskan penggunaan Anda**: panggil model pada paket atau kunci API Anda

74 74 

75Mod tidak berjalan di dalam sandbox. Jika Anda mengaktifkan [sandboxing](/docs/id/sandboxing), sandbox mengisolasi perintah Bash yang dijalankan Claude, dan proses yang dimulai oleh mod berjalan di luarnya.

76 

75Mod yang menyetujui pemanggilan alat dapat menyetujui yang akan diminta oleh aturan `ask`, atau yang diblokir oleh hooks `PreToolUse` Anda sendiri. [Perluas izin dengan hooks](/docs/id/permissions#extend-permissions-with-hooks) mencantumkan apa yang dapat disetujui mod seperti itu, termasuk kapan dapat menyetujui panggilan yang ditolak aturan `deny`.77Mod yang menyetujui pemanggilan alat dapat menyetujui yang akan diminta oleh aturan `ask`, atau yang diblokir oleh hooks `PreToolUse` Anda sendiri. [Perluas izin dengan hooks](/docs/id/permissions#extend-permissions-with-hooks) mencantumkan apa yang dapat disetujui mod seperti itu, termasuk kapan dapat menyetujui panggilan yang ditolak aturan `deny`.

76 78 

77Mod dapat mengubah gaya banyak antarmuka Claude Code, tetapi bukan prompt izin. Tidak dapat mengubah apa yang ditampilkan prompt kepada Anda.79Mod dapat mengubah gaya banyak antarmuka Claude Code, tetapi bukan prompt izin. Tidak dapat mengubah apa yang ditampilkan prompt kepada Anda.


102 104 

103Jika Anda menggunakan Claude Code melalui organisasi, administrator juga dapat membatasi mods mana yang dimuat. Administrator dimulai di [Hentikan mods yang dipasang pengguna dari dimuat](/docs/id/plugins/mods/admin#stop-user-installed-mods-from-loading).105Jika Anda menggunakan Claude Code melalui organisasi, administrator juga dapat membatasi mods mana yang dimuat. Administrator dimulai di [Hentikan mods yang dipasang pengguna dari dimuat](/docs/id/plugins/mods/admin#stop-user-installed-mods-from-loading).

104 106 

107`disableAllHooks` dan `allowManagedModsOnly` milik organisasi Anda menghentikan mod dan membiarkan bagian lain dari pluginnya tetap di tempat: plugin tetap terpasang, dan skill, perintah, agent, serta server MCP-nya tetap dimuat. Pengaturan dan flag lain menjangkau lebih jauh. [`disableAllHooks`](/docs/id/settings-reference#disableallhooks) dan [Apa yang berjalan di bawah `allowManagedHooksOnly`](/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly) mencantumkan apa yang dilakukan masing-masing terhadap plugin dan hook pengaturannya.

108 

105Untuk mengetahui apakah mods dapat dimuat untuk Anda, lihat [Periksa apakah mods dapat dimuat](/docs/id/plugins/mods/troubleshoot#check-whether-mods-can-load).109Untuk mengetahui apakah mods dapat dimuat untuk Anda, lihat [Periksa apakah mods dapat dimuat](/docs/id/plugins/mods/troubleshoot#check-whether-mods-can-load).

106 110 

107<Note>111<Note>

Details

56 56 

57Baca alasan setelah titik dua. Bagian [refusal messages](#refusal-messages) mencantumkan masing-masing. Jika log tidak memiliki baris seperti itu, kerjakan entri lain dalam grup ini.57Baca alasan setelah titik dua. Bagian [refusal messages](#refusal-messages) mencantumkan masing-masing. Jika log tidak memiliki baris seperti itu, kerjakan entri lain dalam grup ini.

58 58 

59Beberapa pengaturan menghentikan mod dan membiarkan bagian lain dari plugin-nya tetap berfungsi. [Aktifkan atau matikan mod](/docs/id/plugins/mods/overview#turn-mods-on-or-off) menyebutkan pengaturan tersebut.

60 

59<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">61<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">

60 Jalankan `claude -p` mencetak `hooks module not loaded`62 Jalankan `claude -p` mencetak `hooks module not loaded`

61</h3>63</h3>

Details

37 37 

38[Aturan izin](/docs/id/permissions) Claude Code dan [sandbox](/docs/id/sandboxing) mencakup panggilan alat yang dibuat Claude, bukan kode yang dijalankan plugin sendiri:38[Aturan izin](/docs/id/permissions) Claude Code dan [sandbox](/docs/id/sandboxing) mencakup panggilan alat yang dibuat Claude, bukan kode yang dijalankan plugin sendiri:

39 39 

40* **Hooks dan proses server**: command hooks menjalankan perintah shell dengan izin pengguna penuh Anda. Claude Code menjalankan hooks dan server MCP di luar sandbox.40* **Hooks dan proses server**: command hooks menjalankan perintah shell dengan izin pengguna penuh Anda. Claude Code menjalankan hooks, server MCP, dan proses yang dimulai oleh [mod](/docs/id/plugins/mods/overview#what-a-mod-can-reach) di luar sandbox.

41* **Panggilan alat Claude**: panggilan ke salah satu alat MCP plugin, dan perintah Bash yang menjalankan executable dari `bin/` plugin, adalah panggilan alat, sehingga aturan izin Anda berlaku untuk mereka. Untuk apa yang dapat dilakukan mod terhadap panggilan alat, lihat [Tentukan apakah akan mempercayai mod](/docs/id/plugins/mods/overview#decide-whether-to-trust-a-mod).41* **Panggilan alat Claude**: panggilan ke salah satu alat MCP plugin, dan perintah Bash yang menjalankan executable dari `bin/` plugin, adalah panggilan alat, sehingga aturan izin Anda berlaku untuk mereka. Untuk apa yang dapat dilakukan mod terhadap panggilan alat, lihat [Tentukan apakah akan mempercayai mod](/docs/id/plugins/mods/overview#decide-whether-to-trust-a-mod).

42 42 

43Menginstal plugin juga mengaktifkannya, kecuali manifest atau entri marketplace-nya menetapkan [`defaultEnabled: false`](/docs/id/plugins/install#choose-an-install-scope) dan Anda belum mengaktifkannya sendiri.43Menginstal plugin juga mengaktifkannya, kecuali manifest atau entri marketplace-nya menetapkan [`defaultEnabled: false`](/docs/id/plugins/install#choose-an-install-scope) dan Anda belum mengaktifkannya sendiri.

Details

460* **Anda menerbitkan plugin**: hitung ulang digest file yang tepat yang URL layani dan perbarui `sha256` dalam entri marketplace. Gunakan `shasum -a 256 my-plugin.zip`, atau `Get-FileHash -Algorithm SHA256 my-plugin.zip` di PowerShell460* **Anda menerbitkan plugin**: hitung ulang digest file yang tepat yang URL layani dan perbarui `sha256` dalam entri marketplace. Gunakan `shasum -a 256 my-plugin.zip`, atau `Get-FileHash -Algorithm SHA256 my-plugin.zip` di PowerShell

461* **Anda menginstal plugin**: jalankan `/plugin marketplace update <name>` dalam sesi untuk merefresh katalog jika entri diperbaiki, lalu coba ulang instalasi. Jika digest masih tidak setuju setelah refresh, tanyakan kepada pemilik marketplace file mana yang mereka pin sebelum menginstal461* **Anda menginstal plugin**: jalankan `/plugin marketplace update <name>` dalam sesi untuk merefresh katalog jika entri diperbaiki, lalu coba ulang instalasi. Jika digest masih tidak setuju setelah refresh, tanyakan kepada pemilik marketplace file mana yang mereka pin sebelum menginstal

462 462 

463<h3 id="an-npm-plugin-source-must-name-a-registry-package">

464 `An npm plugin source must name a registry package`

465</h3>

466 

467Plugin yang entri marketplace-nya menggunakan [sumber `npm`](/docs/id/plugins/marketplace-reference#npm-plugin-source) gagal diinstal, diperbarui, atau dimuat, dan pesannya menyertakan kalimat ini. Claude Code memeriksa nilai `package` entri sebelum mengambil apa pun dan menolaknya. Pesan menyebutkan nilai dan alasannya:

468 

469```text theme={null}

470"github:acme/formatter" was not installed: it is not an http or https link. An npm plugin source must name a registry package (name or name@version) or link to a tarball file. For a plugin in a git repository, use a "github", "url" or "git-subdir" source.

471```

472 

473Pemilik marketplace harus mengubah entri tersebut:

474 

475* **Jika itu Anda**: ubah `package` ke nilai yang diterima oleh [referensi sumber plugin npm](/docs/id/plugins/marketplace-reference#npm-plugin-source), atau alihkan entri ke sumber `github`, `url`, atau `git-subdir`

476* **Jika bukan Anda**: laporkan pesan ke pemilik marketplace

477 

463<h3 id="marketplace-is-registered-from-an-untrusted-source">478<h3 id="marketplace-is-registered-from-an-untrusted-source">

464 `Marketplace "<name>" is registered from an untrusted source`479 `Marketplace "<name>" is registered from an untrusted source`

465</h3>480</h3>

Details

220 220 

221Perintah ini bekerja selama sekitar empat jam setelah server berhenti. Setelah itu, jalankan `claude remote-control` untuk memulai sesi baru. Jika Anda mengarsipkan sesi sementara itu, `--continue` dan `--session-id` membatalkan arsip pada Claude Code v2.1.228 atau lebih baru.221Perintah ini bekerja selama sekitar empat jam setelah server berhenti. Setelah itu, jalankan `claude remote-control` untuk memulai sesi baru. Jika Anda mengarsipkan sesi sementara itu, `--continue` dan `--session-id` membatalkan arsip pada Claude Code v2.1.228 atau lebih baru.

222 222 

223Untuk membawa kembali sesi yang Anda mulai dengan `claude --remote-control` atau `/remote-control`, lanjutkan percakapan dengan `claude --continue` atau `claude --resume`. Jika Remote Control tidak terhubung kembali, lihat [Couldn't reconnect to your Remote Control session](#couldnt-reconnect-to-your-remote-control-session).223Untuk membawa kembali sesi yang Anda mulai dengan `claude --remote-control` atau `/remote-control`, lanjutkan percakapan dengan `claude --continue` atau `claude --resume`. Untuk mode izin yang digunakan saat percakapan yang dilanjutkan dimulai, lihat [mode izin saat melanjutkan](/docs/id/sessions#permission-mode-on-resume). Jika Remote Control tidak terhubung kembali, lihat [Couldn't reconnect to your Remote Control session](#couldnt-reconnect-to-your-remote-control-session).

224 224 

225Jika Anda melanjutkan percakapan di terminal kedua sementara yang pertama masih memiliki Remote Control aktif, Claude Code mencetak pemberitahuan `Remote Control not started here` di terminal kedua dan membiarkan Remote Control mati di sana bukan mengambil sesi dari yang pertama. Jalankan `/remote-control` di terminal kedua untuk memindahkan Remote Control ke sana.225Jika Anda melanjutkan percakapan di terminal kedua sementara yang pertama masih memiliki Remote Control aktif, Claude Code mencetak pemberitahuan `Remote Control not started here` di terminal kedua dan membiarkan Remote Control mati di sana bukan mengambil sesi dari yang pertama. Jalankan `/remote-control` di terminal kedua untuk memindahkan Remote Control ke sana.

226 226 

Details

107 107 

108* Direktori proyek Anda.108* Direktori proyek Anda.

109* Jalur konfigurasi Claude Code `~/.claude` dan `~/.claude.json`.109* Jalur konfigurasi Claude Code `~/.claude` dan `~/.claude.json`.

110* `/tmp`, tempat Claude Code menulis file runtime.110* Direktori tempat Claude Code menulis file runtime. Kecuali Anda menetapkan [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars), direktori tersebut adalah:

111 * **Linux dan WSL2**: `/tmp`

112 * **macOS**: `/private/tmp`. `/tmp` adalah symlink ke direktori tersebut, dan Seatbelt memeriksa jalur yang telah di-resolve.

111 113 

112Izinkan domain jaringan yang dibutuhkan sesi Anda:114Izinkan domain jaringan yang dibutuhkan sesi Anda:

113 115 

sandboxing.md +5 −4

Details

796 Cakupan796 Cakupan

797</h3>797</h3>

798 798 

799Sandbox mengisolasi subprocess Bash. Alat lain beroperasi di bawah batas yang berbeda:799Sandbox mengisolasi subprocess Bash. Tool lain beroperasi di bawah batas yang berbeda:

800 800 

801* **Alat file bawaan**: Read, Edit, dan Write menggunakan sistem izin secara langsung daripada berjalan melalui sandbox. Lihat [permissions](/docs/id/permissions).801* **Tool file bawaan**: Read, Edit, dan Write menggunakan sistem izin secara langsung daripada berjalan melalui sandbox. Lihat [permissions](/docs/id/permissions).

802* **Penggunaan komputer**: ketika Claude membuka aplikasi dan mengontrol layar Anda, itu berjalan di desktop aktual Anda daripada di lingkungan terisolasi. Prompt izin per-aplikasi membatasi setiap aplikasi. Lihat [computer use in the CLI](/docs/id/computer-use) atau [computer use in Desktop](/docs/id/desktop#let-claude-use-your-computer).802* **Penggunaan komputer**: ketika Claude membuka aplikasi dan mengontrol layar Anda, itu berjalan di desktop aktual Anda daripada di lingkungan terisolasi. Prompt izin per-aplikasi membatasi setiap aplikasi. Lihat [computer use in the CLI](/docs/id/computer-use) atau [computer use in Desktop](/docs/id/desktop#let-claude-use-your-computer).

803* **Variabel lingkungan**: perintah Bash sandboxed mewarisi lingkungan proses induk secara default, termasuk kredensial apa pun yang ditetapkan di sana. Gunakan [`sandbox.credentials`](#protect-credentials) untuk menghapus atau menutupi variabel tertentu untuk perintah sandboxed, atau atur [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars) untuk menghapus kredensial dari semua subprocess.803* **Environment variable**: perintah Bash sandboxed mewarisi lingkungan proses induk secara default, termasuk kredensial apa pun yang ditetapkan di sana. Gunakan [`sandbox.credentials`](#protect-credentials) untuk menghapus atau menutupi variabel tertentu untuk perintah sandboxed, atau atur [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars) untuk menghapus kredensial dari semua subprocess.

804* **Subagents**: [subagents](/docs/id/sub-agents) berjalan dalam proses yang sama dengan sesi induk dan menggunakan konfigurasi sandbox yang sama. Perintah Bash di dalam subagent di-sandbox ketika sandboxing diaktifkan dalam sesi induk.804* **Subagents**: [subagents](/docs/id/sub-agents) berjalan dalam proses yang sama dengan sesi induk dan menggunakan konfigurasi sandbox yang sama. Perintah Bash di dalam subagent di-sandbox ketika sandboxing diaktifkan dalam sesi induk.

805* **Mods**: [mod](/docs/id/plugins/mods/overview) adalah plugin yang menjalankan kodenya sendiri di dalam Claude Code, dan proses yang dimulai oleh mod berjalan di luar sandbox. Lihat [Apa yang dapat dijangkau mod](/docs/id/plugins/mods/overview#what-a-mod-can-reach).

805 806 

806<Warning>807<Warning>

807 Sandboxing yang efektif memerlukan isolasi filesystem dan jaringan. Tanpa isolasi jaringan, agen yang dikompromikan dapat mengeksfiltrasikan file sensitif seperti kunci SSH. Tanpa isolasi filesystem, baik dari kebijakan yang permisif atau dari [menonaktifkan lapisan filesystem](#disable-filesystem-isolation), agen yang dikompromikan dapat memasang pintu belakang pada sumber daya sistem untuk mendapatkan akses jaringan. Ketika Anda memperluas default, periksa bahwa jalur `allowWrite`, entri `allowedDomains` yang luas, atau pengecualian `excludedCommands` tidak membatalkan pembatasan di sisi lain.808 Sandboxing yang efektif memerlukan isolasi filesystem dan jaringan. Tanpa isolasi jaringan, agent yang dikompromikan dapat mengeksfiltrasikan file sensitif seperti kunci SSH. Tanpa isolasi filesystem, baik dari kebijakan yang permisif atau dari [menonaktifkan lapisan filesystem](#disable-filesystem-isolation), agent yang dikompromikan dapat memasang pintu belakang pada sumber daya sistem untuk mendapatkan akses jaringan. Ketika Anda memperluas default, periksa bahwa jalur `allowWrite`, entri `allowedDomains` yang luas, atau pengecualian `excludedCommands` tidak membatalkan pembatasan di sisi lain.

808</Warning>809</Warning>

809 810 

810<h2 id="see-also">811<h2 id="see-also">

Details

61 61 

62Jangan tutup atau gunakan kembali file descriptor 3 di wrapper. Mengalihkan stdout dan stderr anak tidak apa-apa.62Jangan tutup atau gunakan kembali file descriptor 3 di wrapper. Mengalihkan stdout dan stderr anak tidak apa-apa.

63 63 

64<h3 id="pass-the-system-prompt-flags-through">

65 Teruskan flag system prompt

66</h3>

67 

68System prompt dan system prompt tambahan yang dikirim bidang kontrol Anthropic untuk sebuah sesi sampai ke wrapper Anda sebagai jalur file, bukan sebagai teks inline. Runner menulis setiap prompt ke file di direktori konfigurasi sesi, `CLAUDE_CONFIG_DIR`, dan meneruskan jalurnya dalam argumen yang diterima wrapper Anda, sebagai [`--system-prompt-file <path>` atau `--append-system-prompt-file <path>`](/docs/id/cli-reference#system-prompt-flags).

69 

70Runner pada Claude Code v2.1.281 atau lebih baru mengirimkan prompt sebagai file. Sebelum v2.1.281, runner meneruskannya sebagai `--system-prompt <text>` dan `--append-system-prompt <text>`.

71 

72Di skrip wrapper atau [hook `command`](#command) Anda, tangani flag ini sebagai berikut:

73 

74* **Teruskan flag tersebut**: akhiri wrapper dengan `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"`, yang meneruskan flag file bersama setiap argumen lainnya. Jangan hapus atau tulis ulang flag tersebut. Jika sebuah sesi kehilangan flag file prompt, sesi berjalan tanpa instruksi yang dikirim bidang kontrol untuknya.

75* **Pada runner v2.1.281 atau lebih baru, flag file yang Anda tambahkan menggantikan milik server, tidak pernah menambahinya**: setiap flag file prompt hanya menerima satu nilai dan Claude Code mempertahankan kemunculan terakhir, jadi jika Anda menambahkan `--append-system-prompt-file <path>` setelah `"$@"`, isi file Anda menggantikan instruksi tambahan dari server. Untuk menambahkan instruksi di atas instruksi server, letakkan di `CLAUDE.md` pada image runner, yang [disemai runner ke konfigurasi tingkat pengguna setiap sesi](#how-each-session’s-config-is-assembled).

76 

64<h3 id="provision-credentials-scoped-to-the-session-creator">77<h3 id="provision-credentials-scoped-to-the-session-creator">

65 Sediakan kredensial yang dibatasi untuk pembuat sesi78 Sediakan kredensial yang dibatasi untuk pembuat sesi

66</h3>79</h3>


450* **Siapa yang menulisnya**: bidang kontrol mengisinya dari konstanta tetap dalam deployment-nya sendiri, tidak pernah dari input per-sesi atau pihak ketiga.463* **Siapa yang menulisnya**: bidang kontrol mengisinya dari konstanta tetap dalam deployment-nya sendiri, tidak pernah dari input per-sesi atau pihak ketiga.

451* **Apa yang masih mengaturnya**: hook yang dikirimkan melalui `--settings` memasuki konfigurasi hook yang digabungkan biasa, bukan tingkat yang dikelola, jadi pengaturan yang dikelola Anda masih berlaku. `disableAllHooks` menonaktifkannya, dan mereka bukan di antara kategori yang [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) tetap dimuat.464* **Apa yang masih mengaturnya**: hook yang dikirimkan melalui `--settings` memasuki konfigurasi hook yang digabungkan biasa, bukan tingkat yang dikelola, jadi pengaturan yang dikelola Anda masih berlaku. `disableAllHooks` menonaktifkannya, dan mereka bukan di antara kategori yang [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) tetap dimuat.

452 465 

466Di luar sesi [Claude Tag](https://claude.com/docs/claude-tag/overview), sesi dalam lingkungan yang di-host sendiri berjalan dengan [auto memory](/docs/id/memory#auto-memory) nonaktif secara default. Untuk instruksi yang harus terbawa antar sesi, gunakan `CLAUDE.md` di image runner Anda atau di repositori.

467 

468Snapshot runner atas `~/.claude/` host tidak menyertakan direktori `projects/`. Lokasi penyimpanan default auto memory berada di bawah direktori tersebut. Jika Anda meletakkan file memori di sana, runner tidak menanamkannya ke dalam sesi, dan file tersebut tidak mengaktifkan auto memory.

469 

453<h3 id="repository-committed-permission-rules">470<h3 id="repository-committed-permission-rules">

454 Aturan izin yang dikomit repositori471 Aturan izin yang dikomit repositori

455</h3>472</h3>

Details

1958* Substitusi perintah, subshell, atau blok alur kontrol seperti `if` atau `for`1958* Substitusi perintah, subshell, atau blok alur kontrol seperti `if` atau `for`

1959* Pengalihan, seperti `docker build . > build.log`, selain yang hanya menduplikasi deskriptor file, seperti `2>&1`1959* Pengalihan, seperti `docker build . > build.log`, selain yang hanya menduplikasi deskriptor file, seperti `2>&1`

1960* Nama perintah yang berasal dari variabel1960* Nama perintah yang berasal dari variabel

1961* `git clone`, `git init`, `git worktree add`, `git worktree move`, atau `git bundle create` dengan argumen jalur yang absolut, dimulai dengan `~`, atau berisi segmen `..`

1961 1962 

1962Misalnya, `cd build && docker compose up` tetap bersandbox di bawah entri `docker *`, dan menambahkan entri `cd` tidak mengubah itu.1963Misalnya, `cd build && docker compose up` tetap bersandbox di bawah entri `docker *`, dan menambahkan entri `cd` tidak mengubah itu. Di bawah entri `git *`, `git clone <url> vendor/lib` berjalan di luar sandbox, tetapi `git clone <url> ~/tools` tetap bersandbox. Sebuah clone menulis seluruh pohon file, mungkin termasuk file yang dapat dieksekusi, ke mana pun jalur tujuannya menunjuk.

1963 1964 

1964Perintah yang dikecualikan masih melalui alur izin reguler. Pengecualian adalah kenyamanan, bukan batas keamanan: lebih suka [`filesystem.allowWrite`](#sandbox-filesystem-allowwrite) ketika alat hanya perlu menulis ke tempat tertentu. Claude Code menggabungkan entri di setiap scope pengaturan yang dimuat sesi, dan tidak ada kunci khusus yang dikelola untuk daftar ini, jadi jaga daftar yang dikelola tetap sempit.1965Perintah yang dikecualikan masih melalui alur izin reguler. Pengecualian adalah kenyamanan, bukan batas keamanan: lebih suka [`filesystem.allowWrite`](#sandbox-filesystem-allowwrite) ketika alat hanya perlu menulis ke tempat tertentu. Claude Code menggabungkan entri di setiap scope pengaturan yang dimuat sesi, dan tidak ada kunci khusus yang dikelola untuk daftar ini, jadi jaga daftar yang dikelola tetap sempit.

1965 1966 


4281}4282}

4282```4283```

4283 4284 

4284Pencocokan nama host tidak peka huruf besar-kecil dan memperlakukan `hooks.example.com.`, dengan titik trailing yang menandai nama domain yang sepenuhnya memenuhi syarat, sama seperti `hooks.example.com`, yang merupakan cara DNS memperlakukannya. Daftar izin berlaku untuk hooks dari setiap sumber, termasuk pengaturan terkelola.4285Pencocokan nama host tidak peka huruf besar-kecil dan memperlakukan `hooks.example.com.`, dengan titik trailing yang menandai nama domain yang sepenuhnya memenuhi syarat, sama seperti `hooks.example.com`, yang merupakan cara DNS memperlakukannya. Allowlist berlaku untuk hooks dari setiap sumber, termasuk pengaturan terkelola.

4285 4286 

4286<h3 id="allowmanagedhooksonly">4287<h3 id="allowmanagedhooksonly">

4287 `allowManagedHooksOnly`4288 `allowManagedHooksOnly`


4292* **Scope**: [`Managed`](#scopes)4293* **Scope**: [`Managed`](#scopes)

4293* **Type**: Boolean4294* **Type**: Boolean

4294 * `true`: hanya hook terkelola yang berjalan, ditambah hook Agent SDK dan hooks dari plugin yang dipaksa diaktifkan oleh pengaturan terkelola Anda. Lihat [Apa yang berjalan di bawah `allowManagedHooksOnly`](#what-runs-under-allowmanagedhooksonly)4295 * `true`: hanya hook terkelola yang berjalan, ditambah hook Agent SDK dan hooks dari plugin yang dipaksa diaktifkan oleh pengaturan terkelola Anda. Lihat [Apa yang berjalan di bawah `allowManagedHooksOnly`](#what-runs-under-allowmanagedhooksonly)

4295 * `false`: hooks dari setiap scope pengaturan dan plugin berjalan4296 * `false`: hooks dari setiap cakupan pengaturan dan plugin berjalan

4296* **Default**: tidak diatur, jadi hooks dari setiap scope pengaturan dan plugin berjalan4297* **Default**: tidak diatur, jadi hooks dari setiap cakupan pengaturan dan plugin berjalan

4297 4298 

4298```json managed-settings.json theme={null}4299```json managed-settings.json theme={null}

4299{4300{


4312* **Segalanya yang lain diblokir**: user, project, dan local hooks, hooks dan mods dari plugin lain yang diinstal, dan hooks yang dideklarasikan dalam frontmatter agent. [Mods yang tertanam dalam Claude Code](/docs/id/plugins/mods/overview#mods-built-into-claude-code) terus berjalan. Untuk memblokir hanya mods pengguna, atur [`allowManagedModsOnly`](/docs/id/plugins/mods/admin#set-options-on-the-built-in-guard) sebagai gantinya.4313* **Segalanya yang lain diblokir**: user, project, dan local hooks, hooks dan mods dari plugin lain yang diinstal, dan hooks yang dideklarasikan dalam frontmatter agent. [Mods yang tertanam dalam Claude Code](/docs/id/plugins/mods/overview#mods-built-into-claude-code) terus berjalan. Untuk memblokir hanya mods pengguna, atur [`allowManagedModsOnly`](/docs/id/plugins/mods/admin#set-options-on-the-built-in-guard) sebagai gantinya.

4313* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang dipaksa diaktifkan dalam `enabledPlugins` terkelola, kecuali Anda menyetel [`disableCommandPluginSources`](#disablecommandpluginsources) ke `false` secara eksplisit4314* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang dipaksa diaktifkan dalam `enabledPlugins` terkelola, kecuali Anda menyetel [`disableCommandPluginSources`](#disablecommandpluginsources) ke `false` secara eksplisit

4314* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) kecuali [`disableCommandPluginSources`](#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri. Memerlukan Claude Code v2.1.238 atau lebih baru4315* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) kecuali [`disableCommandPluginSources`](#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri. Memerlukan Claude Code v2.1.238 atau lebih baru

4315* **Status line dan file suggestion menyempit ke pengaturan terkelola**: Claude Code membaca [`statusLine`](/docs/id/statusline), [`fileSuggestion`](#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) dari pengaturan terkelola saja, mengikuti [status line dan file suggestion gates](#status-line-and-file-suggestion-gates)4316* **Baris status dan file suggestion menyempit ke pengaturan terkelola**: Claude Code membaca [`statusLine`](/docs/id/statusline), [`fileSuggestion`](#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) dari pengaturan terkelola saja, mengikuti [gerbang baris status dan file suggestion](#status-line-and-file-suggestion-gates)

4316 4317 

4317Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat kunci ini diatur, karena bergantung pada hooks.4318Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat kunci ini diatur, karena bergantung pada hooks.

4318 4319 


4320 `disableAllHooks`4321 `disableAllHooks`

4321</h3>4322</h3>

4322 4323 

4323Matikan [hooks](/docs/id/hooks#disable-or-remove-hooks), [status line](/docs/id/statusline) kustom apa pun, dan perintah [file suggestion](#filesuggestion) kustom apa pun. Gunakan untuk mematikan semua ini secara sementara tanpa menghapusnya dari pengaturan Anda.4324Matikan [hooks](/docs/id/hooks#disable-or-remove-hooks), [baris status](/docs/id/statusline) kustom apa pun, dan perintah [file suggestion](#filesuggestion) kustom apa pun. Gunakan untuk mematikan semua ini secara sementara tanpa menghapusnya dari pengaturan Anda.

4324 4325 

4325* **Scope**: [`Any file`](#scopes). Hanya pengaturan terkelola yang dapat menonaktifkan hook terkelola.4326* **Scope**: [`Any file`](#scopes). Hanya pengaturan terkelola yang dapat menonaktifkan hook terkelola.

4326* **Type**: Boolean4327* **Type**: Boolean

4327 * `true`: Claude Code mematikan hooks, status line kustom apa pun, dan perintah file suggestion kustom apa pun4328 * `true`: Claude Code mematikan hooks, baris status kustom apa pun, dan perintah file suggestion kustom apa pun

4328 * `false`: hooks, status line, dan perintah file suggestion berjalan4329 * `false`: hooks, baris status, dan perintah file suggestion berjalan

4329* **Default**: tidak diatur, jadi hooks berjalan4330* **Default**: tidak diatur, jadi hooks berjalan

4330 4331 

4331```json settings.json theme={null}4332```json settings.json theme={null}


4339* **Dalam pengaturan terkelola**: Claude Code menonaktifkan setiap hook yang dikonfigurasi, termasuk yang terkelola, dan terus menjalankan hooks yang didaftarkan [Agent SDK](/docs/id/agent-sdk/overview) dalam proses4340* **Dalam pengaturan terkelola**: Claude Code menonaktifkan setiap hook yang dikonfigurasi, termasuk yang terkelola, dan terus menjalankan hooks yang didaftarkan [Agent SDK](/docs/id/agent-sdk/overview) dalam proses

4340* **Dalam file pengaturan lainnya**: Claude Code menonaktifkan user, project, local, dan plugin hooks; hook terkelola, hook Agent SDK, dan hooks dari plugin yang dipaksa diaktifkan dalam [`enabledPlugins`](#enabledplugins) terkelola terus berjalan4341* **Dalam file pengaturan lainnya**: Claude Code menonaktifkan user, project, local, dan plugin hooks; hook terkelola, hook Agent SDK, dan hooks dari plugin yang dipaksa diaktifkan dalam [`enabledPlugins`](#enabledplugins) terkelola terus berjalan

4341 4342 

4343Kunci ini juga menghentikan [mods](/docs/id/plugins/mods/overview), yaitu plugin yang kodenya mendaftarkan hook:

4344 

4345* **Dalam pengaturan terkelola**: mods di setiap plugin yang diinstal berhenti, termasuk milik organisasi Anda

4346* **Dalam file pengaturan lainnya**: mods yang Anda instal berhenti, dan [mods organisasi Anda](/docs/id/plugins/mods/admin#install-your-organizations-mods) terus berjalan

4347 

4348Mods yang tertanam dalam Claude Code terus berjalan dalam kedua kasus. Masing-masing memiliki [tombol pengaturannya sendiri](/docs/id/plugins/mods/overview#mods-built-into-claude-code).

4349 

4342Menjaga hook Agent SDK tetap berjalan ketika pengaturan terkelola menyetel kunci ini memerlukan Claude Code v2.1.242 atau lebih baru.4350Menjaga hook Agent SDK tetap berjalan ketika pengaturan terkelola menyetel kunci ini memerlukan Claude Code v2.1.242 atau lebih baru.

4343 4351 

4344Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat hooks dinonaktifkan, dan menu `/hooks` menampilkan pemberitahuan alih-alih hooks Anda.4352Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat hooks dinonaktifkan, dan menu `/hooks` menampilkan pemberitahuan alih-alih hooks Anda.

4345 4353 

4346<h4 id="status-line-and-file-suggestion-gates">4354<h4 id="status-line-and-file-suggestion-gates">

4347 Status line dan file suggestion gates4355 Gerbang baris status dan file suggestion

4348</h4>4356</h4>

4349 4357 

4350Claude Code membuat dua keputusan untuk `statusLine`, `fileSuggestion`, dan `subagentStatusLine`, dalam urutan ini:4358Claude Code membuat dua keputusan untuk `statusLine`, `fileSuggestion`, dan `subagentStatusLine`, dalam urutan ini:

4351 4359 

4352* **Matikan sepenuhnya**: ketika pengaturan terkelola menyetel `disableAllHooks`, atau ketika folder tidak dipercaya di bawah [workspace trust rule yang sama dengan hooks dalam file pengaturan](/docs/id/permissions#what-runs-before-you-trust-a-folder)4360* **Matikan sepenuhnya**: ketika pengaturan terkelola menyetel `disableAllHooks`, atau ketika folder tidak dipercaya di bawah [aturan kepercayaan workspace yang sama dengan hooks dalam file pengaturan](/docs/id/permissions#what-runs-before-you-trust-a-folder)

4353* **Menyempit ke pengaturan terkelola**: ketika [`allowManagedHooksOnly`](#allowmanagedhooksonly) diatur, ketika `disableAllHooks` adalah `true` di luar pengaturan terkelola setelah [settings precedence](/docs/id/hooks#disable-or-remove-hooks) diterapkan, atau ketika Anda memulai Claude Code dengan `--safe-mode`4361* **Menyempit ke pengaturan terkelola**: ketika [`allowManagedHooksOnly`](#allowmanagedhooksonly) diatur, ketika `disableAllHooks` adalah `true` di luar pengaturan terkelola setelah [prioritas pengaturan](/docs/id/hooks#disable-or-remove-hooks) diterapkan, atau ketika Anda memulai Claude Code dengan `--safe-mode`

4354 4362 

4355Di bawah penyempitan, Claude Code menjalankan nilai terkelola jika satu digunakan. Jika tidak, Claude Code melewati nilai Anda tanpa peringatan: status line dinonaktifkan, dan `@` autocomplete kembali ke file suggestion bawaan.4363Di bawah penyempitan, Claude Code menjalankan nilai terkelola jika satu digunakan. Jika tidak, Claude Code melewati nilai Anda tanpa peringatan: baris status dinonaktifkan, dan `@` autocomplete kembali ke file suggestion bawaan.

4356 4364 

4357<h3 id="disableworkflows">4365<h3 id="disableworkflows">

4358 `disableWorkflows`4366 `disableWorkflows`


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

4364* **Type**: Boolean4372* **Type**: Boolean

4365 * `true`: Claude Code mematikan dynamic workflows dan perintah workflow bundel untuk semua orang yang dijangkau pengaturan Anda4373 * `true`: Claude Code mematikan dynamic workflows dan perintah workflow bundel untuk semua orang yang dijangkau pengaturan Anda

4366 * `false`: sama dengan tidak diatur; apakah alur kerja aktif kemudian mengikuti [`enableWorkflows`](#enableworkflows) dan default rencana Anda4374 * `false`: sama dengan tidak diatur; apakah alur kerja aktif kemudian mengikuti [`enableWorkflows`](#enableworkflows) dan default paket Anda

4367* **Default**: `false`4375* **Default**: `false`

4368* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/id/env-vars) mematikan alur kerja untuk satu sesi; mana pun dari keduanya yang mematikannya, yang lain tidak dapat menyalakannya kembali4376* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/id/env-vars) mematikan alur kerja untuk satu sesi; mana pun dari keduanya yang mematikannya, yang lain tidak dapat menyalakannya kembali

4369 4377 


4377 `enableWorkflows`4385 `enableWorkflows`

4378</h3>4386</h3>

4379 4387 

4380Nyalakan atau matikan [dynamic workflows](/docs/id/workflows) untuk diri sendiri ketika default rencana Anda bukan apa yang Anda inginkan. Muncul di `/config` sebagai **Dynamic workflows**, yang menulis kunci ini ke pengaturan pengguna Anda dan menghapusnya lagi ketika Anda beralih kembali ke default rencana Anda. Untuk mematikan alur kerja untuk semua orang dari pengaturan terkelola, gunakan [`disableWorkflows`](#disableworkflows) sebagai gantinya.4388Nyalakan atau matikan [dynamic workflows](/docs/id/workflows) untuk diri sendiri ketika default paket Anda bukan apa yang Anda inginkan. Muncul di `/config` sebagai **Dynamic workflows**, yang menulis kunci ini ke pengaturan pengguna Anda dan menghapusnya lagi ketika Anda beralih kembali ke default paket Anda. Untuk mematikan alur kerja untuk semua orang dari pengaturan terkelola, gunakan [`disableWorkflows`](#disableworkflows) sebagai gantinya.

4381 4389 

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

4383* **Type**: Boolean4391* **Type**: Boolean

4384 * `true`: Claude Code menyalakan dynamic workflows untuk Anda4392 * `true`: Claude Code menyalakan dynamic workflows untuk Anda

4385 * `false`: Claude Code mematikan dynamic workflows untuk Anda4393 * `false`: Claude Code mematikan dynamic workflows untuk Anda

4386* **Default**: tidak diatur, jadi alur kerja aktif kecuali Anda berada di rencana Pro, di mana alur kerja dimatikan4394* **Default**: tidak diatur, jadi alur kerja aktif kecuali Anda berada di paket Pro, di mana alur kerja dimatikan

4387* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/id/env-vars) mematikan alur kerja untuk satu sesi, dan `true` di sini tidak dapat menyalakannya kembali saat diatur4395* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/id/env-vars) mematikan alur kerja untuk satu sesi, dan `true` di sini tidak dapat menyalakannya kembali saat diatur

4388 4396 

4389```json settings.json theme={null}4397```json settings.json theme={null}


4392}4400}

4393```4401```

4394 4402 

4395[`disableWorkflows`](#disableworkflows) dan kebijakan alur kerja organisasi Anda juga mengambil alih: `enableWorkflows: true` tidak dapat menyalakan alur kerja kembali saat sumber apa pun mematikan alur kerja. Claude Code menyembunyikan baris `/config` saat sumber selain pengaturan pengguna Anda menyetel `enableWorkflows`, atau menyetel `disableWorkflows` ke `true`.4403[`disableWorkflows`](#disableworkflows) dan kebijakan alur kerja organisasi Anda juga diutamakan: `enableWorkflows: true` tidak dapat menyalakan alur kerja kembali saat sumber apa pun mematikan alur kerja. Claude Code menyembunyikan baris `/config` saat sumber selain pengaturan pengguna Anda menyetel `enableWorkflows`, atau menyetel `disableWorkflows` ke `true`.

4396 4404 

4397<h3 id="hooks">4405<h3 id="hooks">

4398 `hooks`4406 `hooks`

4399</h3>4407</h3>

4400 4408 

4401Jalankan perintah, prompt, agent, permintaan HTTP, atau alat MCP Anda sendiri sebagai [hooks](/docs/id/hooks) pada titik dalam siklus hidup Claude Code, seperti sebelum panggilan alat atau ketika sesi dimulai; [referensi hooks](/docs/id/hooks#hook-events) mencantumkan setiap acara, payload-nya, dan kode keluarnya. Setiap acara memetakan ke daftar grup matcher, dan setiap grup mencantumkan handler yang akan dijalankan ketika matcher berlaku.4409Jalankan perintah, prompt, agent, permintaan HTTP, atau tool MCP Anda sendiri sebagai [hooks](/docs/id/hooks) pada titik dalam siklus hidup Claude Code, seperti sebelum panggilan tool atau ketika sesi dimulai; [referensi hooks](/docs/id/hooks#hook-events) mencantumkan setiap acara, payload-nya, dan exit code-nya. Setiap acara memetakan ke daftar grup matcher, dan setiap grup mencantumkan handler yang akan dijalankan ketika matcher berlaku.

4402 4410 

4403* **Scope**: [`Any file`](#scopes). Hooks digabungkan di seluruh file daripada menggantikan satu sama lain, dan hooks dari pengaturan terkelola tidak dapat dihapus dari file lain.4411* **Scope**: [`Any file`](#scopes). Hooks digabungkan di seluruh file daripada menggantikan satu sama lain, dan hooks dari pengaturan terkelola tidak dapat dihapus dari file lain.

4404* **Type**: object yang dikunci oleh [hook event](/docs/id/hooks#hook-events); setiap nilai adalah array dari grup `{ "matcher", "hooks" }` yang entri `hooks`-nya memiliki `type` dari `"command"`, `"prompt"`, `"agent"`, `"http"`, atau `"mcp_tool"`4412* **Type**: object yang dikunci oleh [hook event](/docs/id/hooks#hook-events); setiap nilai adalah array dari grup `{ "matcher", "hooks" }` yang entri `hooks`-nya memiliki `type` dari `"command"`, `"prompt"`, `"agent"`, `"http"`, atau `"mcp_tool"`

4405* **Default**: tidak diatur, jadi tidak ada hooks yang berjalan4413* **Default**: tidak diatur, jadi tidak ada hooks yang berjalan

4406 4414 

4407Contoh ini menjalankan skrip sebelum setiap panggilan alat Bash:4415Contoh ini menjalankan skrip sebelum setiap panggilan tool Bash:

4408 4416 

4409```json settings.json theme={null}4417```json settings.json theme={null}

4410{4418{


4427 `httpHookAllowedEnvVars`4435 `httpHookAllowedEnvVars`

4428</h3>4436</h3>

4429 4437 

4430[HTTP hook](/docs/id/hooks#http-hook-fields) dapat menempatkan nilai variabel lingkungan ke dalam header permintaan, misalnya header `Authorization: Bearer $HOOK_TOKEN`, tetapi hanya untuk variabel yang dicantumkan hook dalam `allowedEnvVars`-nya sendiri. Kunci ini menetapkan batas luar pada daftar itu untuk setiap HTTP hook: hook dapat menggunakan variabel hanya jika baik `allowedEnvVars`-nya sendiri maupun kunci ini menamakannya. Gunakan untuk menghentikan hook dari membaca rahasia yang tidak seharusnya, bahkan ketika definisi hook memintanya.4438[HTTP hook](/docs/id/hooks#http-hook-fields) dapat menempatkan nilai environment variable ke dalam header permintaan, misalnya header `Authorization: Bearer $HOOK_TOKEN`, tetapi hanya untuk variabel yang dicantumkan hook dalam `allowedEnvVars`-nya sendiri. Kunci ini menetapkan batas luar pada daftar itu untuk setiap HTTP hook: hook dapat menggunakan variabel hanya jika baik `allowedEnvVars`-nya sendiri maupun kunci ini menamakannya. Gunakan untuk menghentikan hook dari membaca rahasia yang tidak seharusnya, bahkan ketika definisi hook memintanya.

4431 4439 

4432* **Scope**: [`Any file`](#scopes). Array digabungkan di seluruh file pengaturan.4440* **Scope**: [`Any file`](#scopes). Array digabungkan di seluruh file pengaturan.

4433* **Type**: array nama variabel lingkungan4441* **Type**: array nama environment variable

4434* **Default**: tidak diatur, jadi daftar `allowedEnvVars` hook sendiri berlaku4442* **Default**: tidak diatur, jadi daftar `allowedEnvVars` hook sendiri berlaku

4435 4443 

4436Contoh ini membatasi interpolasi header ke `MY_TOKEN` dan `HOOK_SECRET`:4444Contoh ini membatasi interpolasi header ke `MY_TOKEN` dan `HOOK_SECRET`:


4441}4449}

4442```4450```

4443 4451 

4444Daftar izin berlaku untuk hooks dari setiap sumber, termasuk pengaturan terkelola.4452Allowlist berlaku untuk hooks dari setiap sumber, termasuk pengaturan terkelola.

4445 4453 

4446<h3 id="workflowkeywordtriggerenabled">4454<h3 id="workflowkeywordtriggerenabled">

4447 `workflowKeywordTriggerEnabled`4455 `workflowKeywordTriggerEnabled`


4469 4477 

4470Atur [jumlah agent yang Claude targetkan](/docs/id/workflows#set-a-size-guideline) dalam dynamic workflows yang ditulisnya. Claude Code mengirimkan nilai ke Claude sebagai saran, bukan batas yang diberlakukan: `"small"` meminta lebih sedikit dari 5 agent, `"medium"` lebih sedikit dari 10, dan `"large"` lebih sedikit dari 50. Pilih `"small"` ketika Anda ingin membatasi apa yang dihabiskan alur kerja. Memerlukan Claude Code v2.1.219 atau lebih baru.4478Atur [jumlah agent yang Claude targetkan](/docs/id/workflows#set-a-size-guideline) dalam dynamic workflows yang ditulisnya. Claude Code mengirimkan nilai ke Claude sebagai saran, bukan batas yang diberlakukan: `"small"` meminta lebih sedikit dari 5 agent, `"medium"` lebih sedikit dari 10, dan `"large"` lebih sedikit dari 50. Pilih `"small"` ketika Anda ingin membatasi apa yang dihabiskan alur kerja. Memerlukan Claude Code v2.1.219 atau lebih baru.

4471 4479 

4472* **Scope**: [`Any file`](#scopes). Nilai di sana mengambil alih pilihan **Dynamic workflow size** di `/config`, yang disimpan Claude Code di `~/.claude.json`, dan Claude Code menyembunyikan baris itu saat file pengaturan menyetel kunci.4480* **Scope**: [`Any file`](#scopes). Nilai di sana diutamakan daripada pilihan **Dynamic workflow size** di `/config`, yang disimpan Claude Code di `~/.claude.json`, dan Claude Code menyembunyikan baris itu saat file pengaturan menyetel kunci.

4473* **Type**: string, salah satu dari:4481* **Type**: string, salah satu dari:

4474 * `"unrestricted"`: tidak ada panduan, jadi Claude mengukur alur kerja ke tugas4482 * `"unrestricted"`: tidak ada panduan, jadi Claude mengukur alur kerja ke tugas

4475 * `"small"`: Claude menargetkan lebih sedikit dari 5 agent4483 * `"small"`: Claude menargetkan lebih sedikit dari 5 agent

4476 * `"medium"`: Claude menargetkan lebih sedikit dari 10 agent4484 * `"medium"`: Claude menargetkan lebih sedikit dari 10 agent

4477 * `"large"`: Claude menargetkan lebih sedikit dari 50 agent4485 * `"large"`: Claude menargetkan lebih sedikit dari 50 agent

4478* **Default**: `"medium"`, atau `"small"` ketika Anda masuk di rencana Pro dengan Claude Code v2.1.271 atau lebih baru4486* **Default**: `"medium"`, atau `"small"` ketika Anda masuk di paket Pro dengan Claude Code v2.1.271 atau lebih baru

4479 4487 

4480```json settings.json theme={null}4488```json settings.json theme={null}

4481{4489{


6003 6011 

6004Jalankan perintah Anda sendiri, seperti `aws sso login`, untuk menyegarkan kredensial di direktori `.aws` Anda ketika kredensial yang Claude Code miliki untuk [Amazon Bedrock](/docs/id/amazon-bedrock) berhenti bekerja. Claude Code memeriksa kredensial saat ini terhadap STS terlebih dahulu dan hanya menjalankan perintah ketika pemeriksaan itu gagal, kemudian membaca direktori `.aws` yang telah disegarkan.6012Jalankan perintah Anda sendiri, seperti `aws sso login`, untuk menyegarkan kredensial di direktori `.aws` Anda ketika kredensial yang Claude Code miliki untuk [Amazon Bedrock](/docs/id/amazon-bedrock) berhenti bekerja. Claude Code memeriksa kredensial saat ini terhadap STS terlebih dahulu dan hanya menjalankan perintah ketika pemeriksaan itu gagal, kemudian membaca direktori `.aws` yang telah disegarkan.

6005 6013 

6014Ketika pemeriksaan gagal pada saat yang sama di beberapa proses Claude Code yang menggunakan perintah dan kredensial yang sama, seperti terminal atau jendela IDE yang terpisah, satu proses menjalankan perintah dan sisanya menunggu eksekusi tersebut alih-alih memulai eksekusi mereka sendiri. Proses yang telah menunggu 60 detik dengan permintaan yang tertunda menjalankan perintah itu sendiri. Untuk mematikan ini, atur [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](/docs/id/env-vars) ke `1`.

6015 

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

6007* **Type**: string, baris perintah shell6017* **Type**: string, baris perintah shell

6008* **Default**: tidak diatur, jadi Claude Code tidak menyegarkan kredensial AWS untuk Anda6018* **Default**: tidak diatur, jadi Claude Code tidak menyegarkan kredensial AWS untuk Anda


6019 `awsCredentialExport`6029 `awsCredentialExport`

6020</h3>6030</h3>

6021 6031 

6022Jalankan perintah Anda sendiri yang mencetak kredensial AWS sebagai JSON, sehingga Claude Code dapat memanggil [Amazon Bedrock](/docs/id/amazon-bedrock) dengan kredensial yang tidak berada di direktori `.aws` Anda. Claude Code menerima bentuk output `aws sts` dan bentuk datar `aws configure export-credentials`, dan membatasi kredensial ke klien Bedrock-nya sendiri, sehingga perintah shell yang Claude Code jalankan masih melihat kredensial ambient Anda.6032Jalankan perintah Anda sendiri yang mencetak kredensial AWS sebagai JSON, sehingga Claude Code dapat memanggil [Amazon Bedrock](/docs/id/amazon-bedrock) dengan kredensial yang tidak berada di direktori `.aws` Anda. Claude Code menerima bentuk output `aws sts` dan bentuk datar `aws configure export-credentials`, dan membatasi kredensial ke klien Bedrock-nya sendiri, sehingga perintah shell yang Claude jalankan masih melihat kredensial ambient Anda.

6023 6033 

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

6025* **Type**: string, baris perintah shell6035* **Type**: string, baris perintah shell


6126 6136 

6127Jalankan perintah Anda sendiri untuk menyegarkan Google Cloud Application Default Credentials ketika Claude Code menemukan bahwa kredensial telah kedaluwarsa atau tidak dapat dimuat, sehingga permintaan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) terus bekerja tanpa Anda perlu melakukan autentikasi ulang secara manual.6137Jalankan perintah Anda sendiri untuk menyegarkan Google Cloud Application Default Credentials ketika Claude Code menemukan bahwa kredensial telah kedaluwarsa atau tidak dapat dimuat, sehingga permintaan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) terus bekerja tanpa Anda perlu melakukan autentikasi ulang secara manual.

6128 6138 

6139Ketika beberapa proses Claude Code yang menggunakan perintah dan kredensial yang sama, seperti terminal atau jendela IDE yang terpisah, menemukan bahwa kredensial tersebut kedaluwarsa pada saat yang sama, satu proses menjalankan perintah dan sisanya menunggu eksekusi tersebut alih-alih memulai eksekusi mereka sendiri. Proses yang telah menunggu 60 detik dengan permintaan yang tertunda menjalankan perintah itu sendiri. Untuk mematikan ini, atur [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](/docs/id/env-vars) ke `1`.

6140 

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

6130* **Type**: string, baris perintah shell6142* **Type**: string, baris perintah shell

6131* **Default**: tidak diatur, jadi kesalahan kredensial Claude Code memberi tahu Anda untuk menjalankan `gcloud auth application-default login` sendiri6143* **Default**: tidak diatur, jadi kesalahan kredensial Claude Code memberi tahu Anda untuk menjalankan `gcloud auth application-default login` sendiri

Details

22| `curl: (23)` atau `curl: (56) Failure writing output to destination` | [Periksa konektivitas atau gunakan installer alternatif](#curl-56-failure-writing-output-to-destination) |22| `curl: (23)` atau `curl: (56) Failure writing output to destination` | [Periksa konektivitas atau gunakan installer alternatif](#curl-56-failure-writing-output-to-destination) |

23| `Killed` selama instalasi di Linux, atau `Installation was killed before it could finish (exit code 137)` | [Bebaskan memori atau tambahkan swap space](#install-killed-on-low-memory-linux-servers) |23| `Killed` selama instalasi di Linux, atau `Installation was killed before it could finish (exit code 137)` | [Bebaskan memori atau tambahkan swap space](#install-killed-on-low-memory-linux-servers) |

24| `Raw mode is not supported` selama instalasi | [Jalankan kembali installer](#raw-mode-is-not-supported-during-install) |24| `Raw mode is not supported` selama instalasi | [Jalankan kembali installer](#raw-mode-is-not-supported-during-install) |

25| `EACCES: permission denied` selama instalasi | [Perbaiki hak akses direktori instalasi](#permission-errors-during-installation) |

25| `TLS connect error` atau `SSL/TLS secure channel` | [Perbarui sertifikat CA](#tls-or-ssl-connection-errors) |26| `TLS connect error` atau `SSL/TLS secure channel` | [Perbarui sertifikat CA](#tls-or-ssl-connection-errors) |

26| `Failed to fetch version` atau tidak dapat menjangkau server download | [Periksa pengaturan jaringan dan proxy](#check-network-connectivity) |27| `Failed to fetch version` atau tidak dapat menjangkau server download | [Periksa pengaturan jaringan dan proxy](#check-network-connectivity) |

27| `irm is not recognized` atau `The token '&&' is not a valid statement separator` | [Gunakan perintah yang tepat untuk shell Anda](#wrong-install-command-on-windows) |28| `irm is not recognized` atau `The token '&&' is not a valid statement separator` | [Gunakan perintah yang tepat untuk shell Anda](#wrong-install-command-on-windows) |


295 Periksa izin direktori296 Periksa izin direktori

296</h3>297</h3>

297 298 

298Installer memerlukan akses tulis ke `~/.local/bin/` dan `~/.claude/` di macOS dan Linux. Di Windows lokasi instalasi berada di bawah `%USERPROFILE%`, yang dapat ditulis oleh pengguna Anda secara default, jadi bagian ini jarang berlaku di sana.299Instalasi yang gagal karena izin akan menyebutkan path yang tidak dapat dibuat atau ditulisnya. Di Windows, instalasi menulis di bawah `%USERPROFILE%`, yang dapat ditulis oleh pengguna Anda secara default, jadi bagian ini jarang berlaku di sana.

300 

301Di macOS dan Linux, instalasi menulis ke lokasi-lokasi berikut:

302 

303* `~/.claude/downloads/`: tempat perintah instalasi menyimpan binary yang diunduh

304* `~/.local/bin/`: launcher `claude`

305* `~/.local/share/claude/`: setiap versi yang diunduhnya

306* `~/.local/state/claude/`: file lock-nya

307* `~/.cache/claude/`: unduhan yang di-stage

308* [`~/.claude.json`](/docs/id/claude-directory): file konfigurasi global Anda, tempat installer mencatat metode instalasi

309 

310Jika Anda mengatur `XDG_DATA_HOME`, `XDG_STATE_HOME`, atau `XDG_CACHE_HOME`, instalasi menggunakan lokasi tersebut sebagai pengganti `~/.local/share`, `~/.local/state`, dan `~/.cache`. Jika Anda mengatur [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars), file konfigurasi global berada di bawah direktori tersebut alih-alih di direktori home Anda.

299 311 

300Periksa apakah direktori dapat ditulis:312Periksa apakah direktori dapat ditulis:

301 313 


998 Reset your login1010 Reset your login

999</h3>1011</h3>

1000 1012 

1001Saat login gagal dan penyebabnya tidak jelas, re-authentication yang bersih menyelesaikan sebagian besar kasus:1013Saat login gagal dan penyebabnya tidak jelas, autentikasi ulang yang bersih menyelesaikan sebagian besar kasus:

1002 1014 

10031. Jalankan `/logout` untuk sign out sepenuhnya10151. Jalankan `/logout` untuk sign out sepenuhnya

10042. Tutup Claude Code10162. Tutup Claude Code

10053. Restart dengan `claude` dan selesaikan proses authentication lagi10173. Restart dengan `claude` dan selesaikan proses autentikasi lagi

1006 1018 

1007Jika browser tidak terbuka secara otomatis selama login, tekan `c` untuk menyalin OAuth URL ke clipboard Anda, kemudian tempel ke browser secara manual. Ini juga berfungsi saat URL membungkus di seluruh baris di terminal sempit atau SSH dan tidak dapat diklik langsung.1019Jika browser tidak terbuka secara otomatis selama login, tekan `c` untuk menyalin OAuth URL ke clipboard Anda, kemudian tempel ke browser secara manual. Ini juga berfungsi saat URL membungkus di seluruh baris di terminal sempit atau SSH dan tidak dapat diklik langsung.

1008 1020 


1014 1026 

1015**Solusi:**1027**Solusi:**

1016 1028 

1017* Tekan Enter untuk coba ulang dan selesaikan login dengan cepat setelah browser terbuka1029* Tekan Enter untuk mencoba ulang dan selesaikan login dengan cepat setelah browser terbuka

1018* Ketik `c` untuk menyalin URL lengkap jika browser tidak terbuka secara otomatis1030* Ketik `c` untuk menyalin URL lengkap jika browser tidak terbuka secara otomatis

1019* Jika menggunakan sesi remote/SSH, browser mungkin terbuka di mesin yang salah. Salin URL yang ditampilkan di terminal dan buka di browser lokal Anda sebagai gantinya.1031* Jika menggunakan sesi remote/SSH, browser mungkin terbuka di mesin yang salah. Salin URL yang ditampilkan di terminal dan buka di browser lokal Anda sebagai gantinya.

1020 1032 


1024 1036 

1025Jika Anda melihat `API Error: 403 Request not allowed` setelah login:1037Jika Anda melihat `API Error: 403 Request not allowed` setelah login:

1026 1038 

1027* **Claude Pro/Max users**: verifikasi subscription Anda aktif di [claude.ai/settings](https://claude.ai/settings)1039* **Pengguna Claude Pro/Max**: verifikasi langganan Anda aktif di [claude.ai/settings](https://claude.ai/settings)

1028* **Anthropic Console users**: konfirmasi akun Anda memiliki role "Claude Code" atau "Developer". Admins menetapkan ini di Anthropic Console di bawah Settings → Members.1040* **Pengguna Anthropic Console**: konfirmasi akun Anda memiliki role "Claude Code" atau "Developer". Admin menetapkan ini di Anthropic Console di bawah Settings → Members.

1029* **Di belakang proxy**: corporate proxies dapat mengganggu permintaan API. Lihat [network configuration](/docs/id/network-config) untuk setup proxy.1041* **Di belakang proxy**: proxy perusahaan dapat mengganggu permintaan API. Lihat [konfigurasi jaringan](/docs/id/network-config) untuk setup proxy.

1030 1042 

1031<h3 id="claude-code-access-has-not-been-granted-for-this-account">1043<h3 id="claude-code-access-has-not-been-granted-for-this-account">

1032 Claude Code access has not been granted for this account1044 Claude Code access has not been granted for this account


1036 1048 

1037Untuk mendapatkan akses:1049Untuk mendapatkan akses:

1038 1050 

10391. Minta Owner organisasi Claude Anda untuk menetapkan custom role yang memberikan akses Claude Code ke salah satu grup Anda, atau untuk mengubah role Anda dari Custom ke standard role seperti User. Owners mengelola roles di [role settings](https://claude.ai/admin-settings/roles) organisasi.10511. Minta Owner organisasi Claude Anda untuk menetapkan custom role yang memberikan akses Claude Code ke salah satu grup Anda, atau untuk mengubah role Anda dari Custom ke standard role seperti User. Owner mengelola roles di [pengaturan role](https://claude.ai/admin-settings/roles) organisasi.

10402. Setelah Owner membuat perubahan, jalankan `claude` dan login lagi.10522. Setelah Owner membuat perubahan, jalankan `claude` dan login lagi.

1041 1053 

1042<h3 id="this-organization-has-been-disabled-with-an-active-subscription">1054<h3 id="this-organization-has-been-disabled-with-an-active-subscription">

1043 This organization has been disabled with an active subscription1055 This organization has been disabled with an active subscription

1044</h3>1056</h3>

1045 1057 

1046Jika Anda melihat `API Error: 400 ... "This organization has been disabled"` meskipun memiliki subscription Claude aktif, variabel environment `ANTHROPIC_API_KEY` menimpa subscription Anda. Ini biasanya terjadi saat API key lama dari employer atau project sebelumnya masih diatur di shell profile Anda.1058Jika Anda melihat `API Error: 400 ... "This organization has been disabled"` meskipun memiliki langganan Claude aktif, environment variable `ANTHROPIC_API_KEY` menimpa langganan Anda. Ini biasanya terjadi saat kunci API lama dari employer atau project sebelumnya masih diatur di shell profile Anda.

1047 1059 

1048Saat `ANTHROPIC_API_KEY` ada dan Anda telah menyetujuinya, Claude Code menggunakan key itu alih-alih OAuth credentials subscription Anda. Dalam mode non-interactive dengan flag `-p`, key selalu digunakan saat ada. Lihat [authentication precedence](/docs/id/authentication#authentication-precedence) untuk urutan resolusi lengkap.1060Saat `ANTHROPIC_API_KEY` ada dan Anda telah menyetujuinya, Claude Code menggunakan kunci itu alih-alih kredensial OAuth langganan Anda. Dalam mode non-interaktif dengan flag `-p`, kunci selalu digunakan saat ada. Lihat [prioritas autentikasi](/docs/id/authentication#authentication-precedence) untuk urutan resolusi lengkap.

1049 1061 

1050Untuk menggunakan subscription Anda sebagai gantinya, unset variabel environment dan hapus dari shell profile Anda:1062Untuk menggunakan langganan Anda sebagai gantinya, unset environment variable dan hapus dari shell profile Anda:

1051 1063 

1052<Tabs>1064<Tabs>

1053 <Tab title="macOS/Linux">1065 <Tab title="macOS/Linux">


1065 </Tab>1077 </Tab>

1066</Tabs>1078</Tabs>

1067 1079 

1068Periksa `~/.zshrc`, `~/.bashrc`, atau `~/.profile` untuk baris `export ANTHROPIC_API_KEY=...` dan hapus untuk membuat perubahan permanen. Di Windows, periksa PowerShell profile Anda di `$PROFILE` dan User environment variables Anda untuk `ANTHROPIC_API_KEY`. Jalankan `/status` di dalam Claude Code untuk mengkonfirmasi metode authentication mana yang aktif.1080Periksa `~/.zshrc`, `~/.bashrc`, atau `~/.profile` untuk baris `export ANTHROPIC_API_KEY=...` dan hapus untuk membuat perubahan permanen. Di Windows, periksa PowerShell profile Anda di `$PROFILE` dan User environment variables Anda untuk `ANTHROPIC_API_KEY`. Jalankan `/status` di dalam Claude Code untuk mengkonfirmasi metode autentikasi mana yang aktif.

1069 1081 

1070<h3 id="oauth-login-fails-in-wsl2-ssh-or-containers">1082<h3 id="oauth-login-fails-in-wsl2-ssh-or-containers">

1071 OAuth login fails in WSL2, SSH, or containers1083 OAuth login fails in WSL2, SSH, or containers


1073 1085 

1074Saat Claude Code berjalan di WSL2, pada mesin remote melalui SSH, atau di dalam container, browser biasanya terbuka di host yang berbeda dan redirectnya tidak dapat menjangkau server callback lokal Claude Code. Setelah Anda sign in, browser menampilkan kode login alih-alih redirect kembali secara otomatis. Tempel kode itu ke terminal di prompt `Paste code here if prompted` untuk menyelesaikan login.1086Saat Claude Code berjalan di WSL2, pada mesin remote melalui SSH, atau di dalam container, browser biasanya terbuka di host yang berbeda dan redirectnya tidak dapat menjangkau server callback lokal Claude Code. Setelah Anda sign in, browser menampilkan kode login alih-alih redirect kembali secara otomatis. Tempel kode itu ke terminal di prompt `Paste code here if prompted` untuk menyelesaikan login.

1075 1087 

1076Jika browser tidak terbuka sama sekali dari WSL2, atur variabel environment `BROWSER` ke path Windows browser Anda:1088Jika browser tidak terbuka sama sekali dari WSL2, atur environment variable `BROWSER` ke path Windows browser Anda:

1077 1089 

1078```bash theme={null}1090```bash theme={null}

1079export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"1091export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"


1096 1108 

1097Jika Claude Code meminta Anda untuk login lagi setelah sesi, OAuth token Anda mungkin telah kedaluwarsa.1109Jika Claude Code meminta Anda untuk login lagi setelah sesi, OAuth token Anda mungkin telah kedaluwarsa.

1098 1110 

1099Jalankan `/login` untuk re-authenticate. Jika ini terjadi sering, periksa bahwa jam sistem Anda akurat, karena validasi token bergantung pada timestamp yang benar.1111Jalankan `/login` untuk autentikasi ulang. Jika ini terjadi sering, periksa bahwa jam sistem Anda akurat, karena validasi token bergantung pada timestamp yang benar.

1112 

1113Sesi paralel pada satu mesin berbagi login yang disimpan dan mengoordinasikan pembaruannya sehingga hanya satu proses yang menyegarkan token pada satu waktu. Untuk mengetahui apa yang dilakukan sesi lainnya setelah Anda login lagi di salah satunya, lihat [Not logged in](/docs/id/errors#not-logged-in).

1100 1114 

1101Sesi paralel pada satu mesin berbagi login yang disimpan dan mengoordinasikan pembaruan tokennya sehingga hanya satu proses yang menyegarkan token pada satu waktu. Sebelum v2.1.211, membangunkan mesin dari sleep dapat menyebabkan dua sesi memperbarui dengan token yang sama, yang mencabut login yang disimpan dan meminta setiap sesi terbuka untuk login lagi sekaligus.1115Sebelum v2.1.211, membangunkan mesin dari sleep dapat menyebabkan dua sesi memperbarui dengan token yang sama, yang mencabut login yang disimpan dan meminta setiap sesi terbuka untuk login lagi sekaligus.

1102 1116 

1103Di macOS, Claude Code menyimpan credentials ke login Keychain. Saat Keychain menolak write, seperti saat terkunci di sesi SSH atau passwordnya tidak sinkron dengan password akun Anda, Claude Code menyimpan login Anda ke file plaintext `~/.claude/.credentials.json` sebagai gantinya. Login Console yang membuat API key gagal sampai Keychain dapat ditulis lagi.1117Di macOS, Claude Code menyimpan kredensial ke login Keychain. Saat Keychain menolak write, seperti saat terkunci di sesi SSH atau passwordnya tidak sinkron dengan password akun Anda, Claude Code menyimpan login Anda ke file plaintext `~/.claude/.credentials.json` sebagai gantinya. Login Console yang membuat kunci API gagal sampai Keychain dapat ditulis lagi.

1104 1118 

1105Untuk membuat Keychain dapat ditulis lagi dan memindahkan login Anda kembali ke Keychain terenkripsi:1119Untuk membuat Keychain dapat ditulis lagi dan memindahkan login Anda kembali ke Keychain terenkripsi:

1106 1120 

1107<Steps>1121<Steps>

1108 <Step title="Check Keychain access">1122 <Step title="Periksa akses Keychain">

1109 Jalankan `claude doctor` untuk memeriksa akses Keychain. Saat Keychain menolak writes, laporan mencantumkan peringatan yang dimulai dengan `macOS Keychain is not writable`, diikuti oleh perbaikan yang disarankan. Saat laporan tidak mencantumkan peringatan Keychain, Keychain dapat ditulis dan Anda dapat melompat ke langkah terakhir.1123 Jalankan `claude doctor` untuk memeriksa akses Keychain. Saat Keychain menolak writes, laporan mencantumkan peringatan yang dimulai dengan `macOS Keychain is not writable`, diikuti oleh perbaikan yang disarankan. Saat laporan tidak mencantumkan peringatan Keychain, Keychain dapat ditulis dan Anda dapat melompat ke langkah terakhir.

1110 </Step>1124 </Step>

1111 1125 

1112 <Step title="Unlock the Keychain">1126 <Step title="Buka kunci Keychain">

1113 ```bash theme={null}1127 ```bash theme={null}

1114 security unlock-keychain ~/Library/Keychains/login.keychain-db1128 security unlock-keychain ~/Library/Keychains/login.keychain-db

1115 ```1129 ```


1117 Masukkan password Keychain Anda saat perintah memintanya, kemudian jalankan `claude doctor` lagi. Saat unlock berhasil, laporan tidak lagi mencantumkan peringatan Keychain.1131 Masukkan password Keychain Anda saat perintah memintanya, kemudian jalankan `claude doctor` lagi. Saat unlock berhasil, laporan tidak lagi mencantumkan peringatan Keychain.

1118 </Step>1132 </Step>

1119 1133 

1120 <Step title="Resync the Keychain password if unlocking doesn't help">1134 <Step title="Sinkronkan ulang password Keychain jika membuka kunci tidak membantu">

1121 Buka Keychain Access, pilih keychain `login`, dan pilih **Edit > Change Password for Keychain "login"** untuk menyinkronkannya kembali dengan password akun Anda. Kemudian jalankan `claude doctor` lagi. Lanjutkan ke langkah berikutnya setelah laporan tidak lagi mencantumkan peringatan Keychain.1135 Buka Keychain Access, pilih keychain `login`, dan pilih **Edit > Change Password for Keychain "login"** untuk menyinkronkannya kembali dengan password akun Anda. Kemudian jalankan `claude doctor` lagi. Lanjutkan ke langkah berikutnya setelah laporan tidak lagi mencantumkan peringatan Keychain.

1122 </Step>1136 </Step>

1123 1137 

1124 <Step title="Log out and back in">1138 <Step title="Logout dan login kembali">

1125 Setelah Keychain dapat ditulis lagi, Claude Code memindahkan credentials kembali saat berikutnya menulis credential. Untuk memaksanya sekarang, jalankan `/logout` dan kemudian `/login`. Logout menghapus semua credentials yang disimpan, termasuk isi file plaintext, login server MCP yang disimpan, dan nilai sensitif plugin, jadi bersiaplah untuk re-authorize server MCP dan re-enter plugin secrets sesudahnya. Login lagi menyimpan login Anda di Keychain.1139 Setelah Keychain dapat ditulis lagi, Claude Code memindahkan kredensial kembali saat berikutnya menulis kredensial. Untuk memaksanya sekarang, jalankan `/logout` dan kemudian `/login`. Logout menghapus semua kredensial yang disimpan, termasuk isi file plaintext, login server MCP yang disimpan, dan nilai sensitif plugin, jadi bersiaplah untuk mengotorisasi ulang server MCP dan memasukkan ulang plugin secrets sesudahnya. Login lagi menyimpan login Anda di Keychain.

1126 </Step>1140 </Step>

1127</Steps>1141</Steps>

1128 1142 


1130 Bedrock, Agent Platform, or Foundry credentials not loading1144 Bedrock, Agent Platform, or Foundry credentials not loading

1131</h3>1145</h3>

1132 1146 

1133Jika Anda mengkonfigurasi Claude Code untuk menggunakan cloud provider dan melihat `Could not load credentials from any providers` di Amazon Bedrock, `Could not load the default credentials` di Google Cloud's Agent Platform, atau `ChainedTokenCredential authentication failed` di Microsoft Foundry, cloud provider CLI Anda mungkin tidak authenticated di shell saat ini.1147Jika Anda mengkonfigurasi Claude Code untuk menggunakan cloud provider dan melihat `Could not load credentials from any providers` di Amazon Bedrock, `Could not load the default credentials` di Google Cloud's Agent Platform, atau `ChainedTokenCredential authentication failed` di Microsoft Foundry, cloud provider CLI Anda mungkin tidak terautentikasi di shell saat ini.

1134 1148 

1135Untuk Amazon Bedrock, konfirmasi AWS credentials Anda valid:1149Untuk Amazon Bedrock, konfirmasi kredensial AWS Anda valid:

1136 1150 

1137```bash theme={null}1151```bash theme={null}

1138aws sts get-caller-identity1152aws sts get-caller-identity


1150az login1164az login

1151```1165```

1152 1166 

1153Jika credentials berfungsi di terminal Anda tetapi tidak di VS Code atau JetBrains extension, proses IDE mungkin tidak mewarisi environment shell Anda. Atur variabel environment provider di pengaturan IDE itu sendiri, atau luncurkan IDE dari terminal di mana mereka sudah diekspor.1167Jika kredensial berfungsi di terminal Anda tetapi tidak di ekstensi VS Code atau JetBrains, proses IDE mungkin tidak mewarisi environment shell Anda. Atur environment variable provider di pengaturan IDE itu sendiri, atau luncurkan IDE dari terminal di mana mereka sudah diekspor.

1154 1168 

1155Lihat [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), atau [Microsoft Foundry](/docs/id/microsoft-foundry) untuk setup provider lengkap.1169Lihat [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), atau [Microsoft Foundry](/docs/id/microsoft-foundry) untuk setup provider lengkap.

1156 1170 

Details

803. Pindahkan pekerjaan file besar ke [subagent](/docs/id/sub-agents) sehingga berjalan di jendela konteks terpisah803. Pindahkan pekerjaan file besar ke [subagent](/docs/id/sub-agents) sehingga berjalan di jendela konteks terpisah

814. Jalankan `/clear` jika percakapan sebelumnya tidak lagi diperlukan814. Jalankan `/clear` jika percakapan sebelumnya tidak lagi diperlukan

82 82 

83Jika error muncul kembali setelah `/clear`, jalankan [`/context`](/docs/id/debug-your-config) dan bandingkan baris `Messages` dengan baris-baris di atasnya:

84 

85* **`Messages` adalah baris terbesar**: file atau output tool dalam percakapan baru sedang mengisi ulang window, jadi kerjakan kembali langkah 1 hingga 3

86* **Gabungan baris-baris lainnya lebih besar**: apa yang dimuat saat sesi dimulai menyisakan terlalu sedikit ruang untuk bekerja, jadi [pangkas apa yang dimuat saat startup](/docs/id/errors#prompt-is-too-long)

87 

83<h3 id="command-hangs-or-freezes">88<h3 id="command-hangs-or-freezes">

84 Command hangs or freezes89 Command hangs or freezes

85</h3>90</h3>

worktrees.md +2 −0

Details

131 131 

132Worktrees subagent menggunakan [cabang dasar](#choose-the-base-branch) yang sama dengan `--worktree`, jadi mereka membuat cabang dari cabang default repositori Anda kecuali `worktree.baseRef` diatur ke `"head"`.132Worktrees subagent menggunakan [cabang dasar](#choose-the-base-branch) yang sama dengan `--worktree`, jadi mereka membuat cabang dari cabang default repositori Anda kecuali `worktree.baseRef` diatur ke `"head"`.

133 133 

134Subagent dalam worktree-nya sendiri mengambil file instruksi yang [dimuat saat mulai](/docs/id/sub-agents#what-loads-at-startup) dari percakapan utama Anda, bukan dari worktree-nya. Saat worktree tersebut berada di lokasi default di bawah `.claude/worktrees/`, subagent juga tidak memuat file `CLAUDE.md` atau direktori `.claude/rules/` di root worktree saat membaca file di sana, meskipun keduanya berbeda pada branch worktree tersebut.

135 

134<h3 id="clean-up-subagent-and-background-session-worktrees">136<h3 id="clean-up-subagent-and-background-session-worktrees">

135 Bersihkan subagent dan worktrees sesi latar belakang137 Bersihkan subagent dan worktrees sesi latar belakang

136</h3>138</h3>