SpyBara
Go Premium

Documentation 2026-11-12 23:02 UTC to 2026-11-13 23:02 UTC

66 files changed +892 −551. View all changes and history on the product overview
2026
Sat 14 03:01 Fri 13 23:02 Thu 12 23:02 Wed 11 22:59 Tue 10 21:57 Mon 9 23:02 Sun 8 22:58 Sat 7 23:58 Fri 6 23:01 Thu 5 23:03 Wed 4 23:59 Tue 3 23:58 Mon 2 23:57 Sun 1 23:57
Details

117 --network none \117 --network none \

118 --memory 2g \118 --memory 2g \

119 --cpus 2 \119 --cpus 2 \

120 --pids-limit 100 \120 --pids-limit 600 \

121 --user 1000:1000 \121 --user 1000:1000 \

122 -v /path/to/code:/workspace:ro \122 -v /path/to/code:/workspace:ro \

123 -v /var/run/proxy.sock:/var/run/proxy.sock:ro \123 -v /var/run/proxy.sock:/var/run/proxy.sock:ro \


135| `--tmpfs /tmp:...` | Menyediakan direktori sementara yang dapat ditulis yang dihapus saat kontainer berhenti |135| `--tmpfs /tmp:...` | Menyediakan direktori sementara yang dapat ditulis yang dihapus saat kontainer berhenti |

136| `--network none` | Memutus kontainer dari jaringan eksternal |136| `--network none` | Memutus kontainer dari jaringan eksternal |

137| `--memory 2g` | Membatasi penggunaan memori untuk mencegah kehabisan sumber daya |137| `--memory 2g` | Membatasi penggunaan memori untuk mencegah kehabisan sumber daya |

138| `--pids-limit 100` | Membatasi jumlah proses untuk mencegah fork bombs |138| `--pids-limit 600` | Membatasi jumlah proses dan thread untuk mencegah fork bombs |

139| `--user 1000:1000` | Berjalan sebagai pengguna non-root |139| `--user 1000:1000` | Berjalan sebagai pengguna non-root |

140| `-v ...:/workspace:ro` | Memasang kode read-only sehingga agen dapat menganalisis tetapi tidak memodifikasinya. **Hindari memasang direktori host sensitif seperti `~/.ssh`, `~/.aws`, atau `~/.config`** |140| `-v ...:/workspace:ro` | Memasang kode read-only sehingga agen dapat menganalisis tetapi tidak memodifikasinya. **Hindari memasang direktori host sensitif seperti `~/.ssh`, `~/.aws`, atau `~/.config`** |

141| `-v .../proxy.sock:...` | Memasang soket Unix yang terhubung ke proxy yang berjalan di luar kontainer (lihat di bawah) |141| `-v .../proxy.sock:...` | Memasang soket Unix yang terhubung ke proxy yang berjalan di luar kontainer (lihat di bawah) |

Details

104| `options` | [`Options`](#options) | Objek konfigurasi opsional. Sama dengan parameter `options` ke `query()` |104| `options` | [`Options`](#options) | Objek konfigurasi opsional. Sama dengan parameter `options` ke `query()` |

105| `initializeTimeoutMs` | `number` | Waktu maksimum dalam milidetik untuk menunggu inisialisasi subprocess. Default ke `60000`. Jika inisialisasi tidak selesai tepat waktu, promise ditolak dengan error timeout |105| `initializeTimeoutMs` | `number` | Waktu maksimum dalam milidetik untuk menunggu inisialisasi subprocess. Default ke `60000`. Jika inisialisasi tidak selesai tepat waktu, promise ditolak dengan error timeout |

106 106 

107[Hook perintah](https://code.claude.com/docs/id/hooks.md#command-hook-fields) [SessionStart](https://code.claude.com/docs/id/hooks.md#sessionstart) dan [Setup](https://code.claude.com/docs/id/hooks.md#setup) yang lambat mendapatkan waktu tambahan hanya ketika `initializeTimeoutMs` tidak diatur:

108 

109* **Jika Anda membiarkannya tidak diatur:** waktu yang dihabiskan hook ini untuk berjalan tidak dihitung terhadap default 60 detik, hingga total 10 menit, sehingga inisialisasi dapat memakan waktu paling lama 11 menit.

110* **Jika Anda menetapkan sebuah nilai, termasuk `60000`:** nilai tersebut adalah batasnya, bahkan saat hook sedang berjalan.

111 

112Waktu tambahan ini memerlukan TypeScript Agent SDK v0.3.304 atau lebih baru.

113 

107#### Pengembalian114#### Pengembalian

108 115 

109Mengembalikan `Promise<`[`WarmQuery`](#warmquery)`>` yang diselesaikan setelah subprocess telah dispawn dan menyelesaikan handshake inisialisasinya.116Mengembalikan `Promise<`[`WarmQuery`](#warmquery)`>` yang diselesaikan setelah subprocess telah dispawn dan menyelesaikan handshake inisialisasinya.


128 135 

129### `prewarm()`136### `prewarm()`

130 137 

131*Alpha.* Memulai proses Claude Code sebagai cadangan sebelum Anda mengetahui sesi mana yang akan dilayaninya, sehingga Anda dapat mengikatnya ke sesi nanti dengan [`claim()`](#spareprocess). Gunakan dalam aplikasi yang boot sebelum pengguna memilih folder. Memerlukan TypeScript Agent SDK v0.3.282 atau lebih baru.138*Alpha.* Memulai proses Claude Code sebagai cadangan sebelum Anda mengetahui sesi mana yang akan dilayaninya, sehingga Anda dapat mengikatnya ke sesi nanti dengan [`claim()`](#spareprocess). Memerlukan TypeScript Agent SDK v0.3.282 atau lebih baru.

132 139 

133`prewarm()` menyelesaikan handshake inisialisasi yang sama dengan [`startup()`](#startup), dengan proses menunggu di `options.cwd` ketika Anda menetapkannya dan sebaliknya di direktori sementara pribadi di bawah direktori konfigurasi Claude Code Anda. Direktori kerja sesi, hook `SessionStart` nya, server MCP stdio nya, dan konteks CLAUDE.md dan git nya menunggu klaim. Cadangan menahan kira-kira 230 hingga 260 MB memori saat menunggu. Jika [`spawnClaudeCodeProcess`](#options) Anda menjalankan Claude Code di mesin lain atau dalam kontainer, atur `options.cwd` ke direktori yang ada di sana agar cadangan menunggu.140Gunakan `prewarm()` ketika aplikasi Anda boot sebelum pengguna memilih folder.

134 141 

135```typescript theme={null}142```typescript theme={null}

136function prewarm(params?: {143function prewarm(params?: {


139}): Promise<SpareProcess>;146}): Promise<SpareProcess>;

140```147```

141 148 

142`options` dan `initializeTimeoutMs` berarti sama seperti untuk `startup()`, kecuali bahwa `options.cwd` hanya menetapkan direktori tempat cadangan menunggu. Promise diselesaikan dengan [`SpareProcess`](#spareprocess) setelah proses menyelesaikan handshake inisialisasinya. `prewarm()` melempar jika `options` menetapkan `resume`, `continue`, atau `forkSession`, karena cadangan tidak memiliki sesi. Semuanya yang tidak dapat ditetapkan klaim, seperti `mcpServers`, `hooks`, `canUseTool`, `settingSources`, `systemPrompt`, dan `plugins`, diperbaiki untuk kehidupan cadangan, jadi simpan satu cadangan per set opsi yang berbeda dan prewarm lagi ketika mereka berubah.149#### Parameter

150 

151| Parameter | Tipe | Deskripsi |

152| :- | :- | :- |

153| `options` | [`Options`](#options) | Objek konfigurasi opsional, tipe yang sama dengan yang diterima `startup()` |

154| `initializeTimeoutMs` | `number` | Waktu maksimum dalam milidetik untuk menunggu inisialisasi cadangan. Default ke `60000`. Jika inisialisasi tidak selesai tepat waktu, promise ditolak dengan error timeout |

155 

156`prewarm()` menghitung waktu yang dihabiskan dalam hook [Setup](https://code.claude.com/docs/id/hooks.md#setup) terhadap `initializeTimeoutMs`, bahkan ketika Anda membiarkannya tidak diatur. Untuk memberi hook Setup yang lambat lebih banyak waktu, tetapkan nilai yang lebih besar.

157 

158#### Pengembalian

159 

160Mengembalikan `Promise<`[`SpareProcess`](#spareprocess)`>` yang di-resolve setelah cadangan siap untuk diklaim.

161 

162Promise ditolak jika Anda meminta `resume`, `continue`, atau `forkSession` dalam `options`, karena cadangan belum memiliki sesi.

163 

164#### Cara kerja cadangan

165 

166* **Tempat cadangan menunggu:** di direktori sementara pribadi di bawah direktori konfigurasi Claude Code Anda, atau di `options.cwd` jika Anda menetapkannya di `prewarm()`.

167* **Jika [`spawnClaudeCodeProcess`](#options) Anda menjalankan Claude Code di mesin lain atau dalam kontainer:** berikan `prewarm()` sebuah `options.cwd` yang ada di sana, karena direktori sementara default dibuat di mesin Anda.

168* **Memori:** setiap cadangan menggunakan kira-kira 230 hingga 260 MB saat menunggu.

169* **Apa yang tidak terjadi sampai Anda memanggil `claim()`:**

170 * Berpindah ke direktori kerja yang Anda berikan ke `claim()`

171 * Menjalankan hook SessionStart

172 * Memulai server MCP stdio

173 * Memuat CLAUDE.md dan konteks git

174* **Apa yang tidak dapat diubah oleh klaim:** opsi seperti `mcpServers`, `hooks`, `canUseTool`, `settingSources`, dan `plugins` mempertahankan nilainya dari `prewarm()`. [`SpareProcess`](#spareprocess) mencantumkan apa yang dapat ditetapkan oleh klaim.

175* **Jika sesi memerlukan nilai yang berbeda untuk opsi-opsi ini:** simpan cadangan terpisah untuk setiap set nilai.

143 176 

144#### Contoh177#### Contoh

145 178 

agent-view.md +5 −3

Details

8 8 

9Agent view, yang dibuka dengan `claude agents`, adalah satu layar untuk semua sesi latar belakang Anda: apa yang sedang berjalan, apa yang membutuhkan masukan Anda, dan apa yang sudah selesai. Kirim sesi baru, pantau statusnya sekilas alih-alih menggulir transkrip, dan turun tangan hanya ketika ada sesi yang membutuhkan Anda. Setiap sesi latar belakang adalah percakapan Claude Code lengkap yang terus berjalan tanpa terminal yang terpasang, sehingga Anda dapat membukanya, membalas, dan keluar kapan pun Anda mau.9Agent view, yang dibuka dengan `claude agents`, adalah satu layar untuk semua sesi latar belakang Anda: apa yang sedang berjalan, apa yang membutuhkan masukan Anda, dan apa yang sudah selesai. Kirim sesi baru, pantau statusnya sekilas alih-alih menggulir transkrip, dan turun tangan hanya ketika ada sesi yang membutuhkan Anda. Setiap sesi latar belakang adalah percakapan Claude Code lengkap yang terus berjalan tanpa terminal yang terpasang, sehingga Anda dapat membukanya, membalas, dan keluar kapan pun Anda mau.

10 10 

11![Agent view di terminal. Sebuah baris di bagian atas menghitung sesi yang menunggu masukan, sedang bekerja, dan sudah selesai. Empat sesi dikelompokkan di bawah Needs input, Working, dan Completed. Setiap baris menampilkan nama sesi, status atau pertanyaan terbarunya, dan waktu. Di bagian bawah terdapat input untuk mendeskripsikan tugas baru dan sebaris petunjuk keyboard.](https://mintcdn.com/claude-code/HDAmBwgbrZVk0pOt/images/agent-view-light.png?fit=max\&auto=format\&n=HDAmBwgbrZVk0pOt\&q=85\&s=d6905012bee31f3e6b3920b09c05dd02)11![Agent view di terminal. Sebuah baris di bagian atas menghitung sesi yang menunggu masukan, sedang bekerja, dan sudah selesai. Empat sesi dikelompokkan di bawah Needs input, Working, dan Completed. Setiap baris menampilkan nama sesi, status atau pertanyaan terbarunya, dan waktu. Di bagian bawah terdapat input untuk mendeskripsikan tugas baru dan sebaris petunjuk keyboard.](https://mintcdn.com/claude-code/v_J840yKc6uuKDX_/images/agent-view-light.png?fit=max\&auto=format\&n=v_J840yKc6uuKDX_\&q=85\&s=bd95fda83ea66ca8b2e0e7b68f8cb29e)

12 12 

13Gunakan agent view ketika Anda memiliki beberapa tugas independen yang dapat dikerjakan Claude tanpa Anda harus memantau setiap langkahnya. Kirim perbaikan bug, tinjauan pull request, dan investigasi tes yang tidak stabil sebagai tiga baris, lanjutkan pekerjaan di jendela lain, dan periksa kembali ketika sebuah baris menunjukkan bahwa ia membutuhkan Anda atau sudah memiliki hasil.13Gunakan agent view ketika Anda memiliki beberapa tugas independen yang dapat dikerjakan Claude tanpa Anda harus memantau setiap langkahnya. Kirim perbaikan bug, tinjauan pull request, dan investigasi tes yang tidak stabil sebagai tiga baris, lanjutkan pekerjaan di jendela lain, dan periksa kembali ketika sebuah baris menunjukkan bahwa ia membutuhkan Anda atau sudah memiliki hasil.

14 14 


628 628 

629* Agent view menghapusnya, termasuk perubahan yang belum di-commit, jadi commit apa yang ingin Anda simpan terlebih dahulu.629* Agent view menghapusnya, termasuk perubahan yang belum di-commit, jadi commit apa yang ingin Anda simpan terlebih dahulu.

630* `claude rm` mempertahankannya, bersama dengan baris sesi, ketika worktree memiliki perubahan yang belum di-commit.630* `claude rm` mempertahankannya, bersama dengan baris sesi, ketika worktree memiliki perubahan yang belum di-commit.

631* Baik agent view maupun `claude rm` tidak menghapus worktree yang sedang digunakan atau dikunci oleh sesi lain yang berjalan, dan menghapus lagi tidak mengubah hal itu. Claude Code mempertahankan worktree dan sesi, serta menyebutkan direktori yang dipertahankan dan alasannya; di agent view, baris sesi menampilkan `not deleted`. Tutup sesi lain tersebut, lalu hapus lagi.631* Baik agent view maupun `claude rm` tidak menghapus worktree yang sedang digunakan atau dikunci oleh sesi lain yang berjalan, dan menghapus lagi tidak mengubah hal itu. Claude Code mempertahankan worktree dan sesi, serta menyebutkan direktori yang dipertahankan dan alasannya; di agent view, baris sesi menampilkan `not removed`. Tutup sesi lain tersebut, lalu hapus lagi.

632* Ketika Anda menghapus sesi yang worktree-nya memiliki commit yang tidak dapat dikonfirmasi Claude Code telah tersimpan di tempat lain, Claude Code mempertahankan worktree dan sesi, dan pesan menyebutkan branch worktree dan berapa banyak commit yang belum di-push. Pesan juga menawarkan dua jalan keluar: push commit tersebut, atau hapus lagi untuk membuangnya.632* Ketika Anda menghapus sesi yang worktree-nya memiliki commit yang tidak dapat dikonfirmasi Claude Code telah tersimpan di tempat lain, Claude Code mempertahankan worktree dan sesi, dan pesan menyebutkan branch worktree dan berapa banyak commit yang belum di-push. Pesan juga menawarkan dua jalan keluar: push commit tersebut, atau hapus lagi untuk membuangnya.

633 633 

634 Commit yang ada di remote tidak memblokir penghapusan. Begitu juga commit pada salinan lokal branch default remote `origin` Anda, asalkan branch itu di-checkout di checkout utama Anda, yaitu direktori repositori itu sendiri, bukan worktree.634 Commit yang ada di remote tidak memblokir penghapusan. Begitu juga commit pada salinan lokal branch default remote `origin` Anda, asalkan branch itu di-checkout di checkout utama Anda, yaitu direktori repositori itu sendiri, bukan worktree.


935Mematikan atau memulai ulang mesin Anda menghentikan sesi latar belakang yang sedang berjalan. Sesi yang menunggu input Anda tetap di bawah `Needs input` saat Anda kembali. Untuk sesi yang sedang berjalan lainnya, apa yang ditampilkan tampilan agent tergantung pada berapa lama yang lalu sesi terakhir membuat kemajuan:935Mematikan atau memulai ulang mesin Anda menghentikan sesi latar belakang yang sedang berjalan. Sesi yang menunggu input Anda tetap di bawah `Needs input` saat Anda kembali. Untuk sesi yang sedang berjalan lainnya, apa yang ditampilkan tampilan agent tergantung pada berapa lama yang lalu sesi terakhir membuat kemajuan:

936 936 

937* Dalam 48 jam, sesi menampilkan sebagai gagal. Lampirkan atau balas sesi tersebut dan sesi itu dimulai ulang dari percakapan yang disimpannya. Untuk melanjutkan pekerjaan yang terputus, kirim balasan yang memintanya untuk melanjutkan.937* Dalam 48 jam, sesi menampilkan sebagai gagal. Lampirkan atau balas sesi tersebut dan sesi itu dimulai ulang dari percakapan yang disimpannya. Untuk melanjutkan pekerjaan yang terputus, kirim balasan yang memintanya untuk melanjutkan.

938* Melewati 48 jam, seperti setelah mesin mati selama berhari-hari, sesi menampilkan sebagai dihentikan dengan `ended while the background service was off`. Tekan `Enter` pada baris dan footer menampilkan `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to delete it.` Tekan `Enter` pada baris yang sama lagi untuk melanjutkan percakapan yang disimpannya. Balasan, atau `claude attach <id>`, melanjutkannya tanpa prompt footer itu.938* Melewati 48 jam, seperti setelah mesin mati selama berhari-hari, sesi menampilkan sebagai dihentikan dengan `ended while the background service was off`.

939 

940 Tekan `Enter` pada baris dan footer menampilkan `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to remove it.` Tekan `Enter` pada baris yang sama lagi untuk melanjutkan percakapan yang disimpannya. Balasan, atau `claude attach <id>`, melanjutkannya tanpa prompt footer itu.

939 941 

940Ketika [pembersihan transkrip](https://code.claude.com/docs/id/settings-reference.md#cleanupperioddays) telah menghapus percakapan yang disimpan dari sesi yang dihentikan, Claude Code menolak untuk membuka baris: pesan mengatakan tidak ada yang dapat dilanjutkan. `claude rm <id>` menghapus baris, kecuali dalam [kasus yang disimpan](#what-deleting-a-session-removes) yang dijelaskan di atas, dan `claude respawn <id>` menjalankan prompt aslinya lagi. Lihat [Percakapan yang disimpan sesi ini tidak lagi ada di disk](https://code.claude.com/docs/id/errors.md#this-sessions-saved-conversation-is-no-longer-on-disk).942Ketika [pembersihan transkrip](https://code.claude.com/docs/id/settings-reference.md#cleanupperioddays) telah menghapus percakapan yang disimpan dari sesi yang dihentikan, Claude Code menolak untuk membuka baris: pesan mengatakan tidak ada yang dapat dilanjutkan. `claude rm <id>` menghapus baris, kecuali dalam [kasus yang disimpan](#what-deleting-a-session-removes) yang dijelaskan di atas, dan `claude respawn <id>` menjalankan prompt aslinya lagi. Lihat [Percakapan yang disimpan sesi ini tidak lagi ada di disk](https://code.claude.com/docs/id/errors.md#this-sessions-saved-conversation-is-no-longer-on-disk).

941 943 

Details

349 349 

350### Ketika model dinonaktifkan di tengah sesi350### Ketika model dinonaktifkan di tengah sesi

351 351 

352Jika akun Anda kehilangan akses ke model yang sesi Anda jalankan, misalnya karena administrator menonaktifkannya di akun Amazon Bedrock Anda, Claude Code beralih sesi ke model lain alih-alih gagal pada setiap permintaan, dan menampilkan `Switched to <fallback> because <model> is not available`. Claude Code mencoba model yang sama seperti fallback startup: versi sebelumnya dari tier yang sama terlebih dahulu dan, untuk sesi Opus tanpa versi Opus yang tersedia, model Sonnet default.352Ketika Amazon Bedrock menolak model sesi Anda karena tidak tersedia untuk akun Anda, Claude Code mengalihkan sesi Anda ke model lain, dan Anda dapat terus bekerja. Anda melihat pesan yang diawali dengan `Switched to <fallback> because <model> is not available`. Hal ini terjadi, misalnya, ketika administrator menonaktifkan model tersebut atau model terbaru belum tersedia untuk akun Anda.

353 353 

354Pengalihan hanya berlaku untuk tier yang belum Anda sematkan, kondisi yang sama seperti fallback startup. Sesi pada versi spesifik yang Anda pilih, atau pada [profil inferensi aplikasi ARN](#map-each-model-version-to-an-inference-profile), mempertahankan modelnya dan, tanpa rantai fallback model, permintaan gagal sebagai gantinya. Dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry), Claude Code hanya beralih ke model yang didukung auto mode di Amazon Bedrock. Jika tidak ada model tersebut yang tersedia, permintaan gagal dengan [AWS authentication failed](https://code.claude.com/docs/id/errors.md#aws-authentication-failed) dan petunjuk untuk mengaktifkan model.354Jika Anda mengonfigurasi [rantai fallback model](https://code.claude.com/docs/id/model-config.md#fallback-model-chains), Claude Code beralih ke fallback yang Anda konfigurasi sebagai gantinya. Tanpa rantai, permintaan gagal dalam kasus seperti berikut:

355 355 

356[Rantai fallback model](https://code.claude.com/docs/id/model-config.md#fallback-model-chains) yang Anda konfigurasi menggantikan pengalihan tier: pada penolakan ini Claude Code beralih ke fallback yang Anda konfigurasi sebagai gantinya. Untuk membuat permintaan yang ditolak gagal daripada beralih, atur [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/id/env-vars). Rantai fallback yang Anda konfigurasi masih beralih pada penolakan ini; hapus rantai juga jika Anda ingin setiap permintaan yang ditolak gagal.356* Sesi Anda berjalan pada model yang disematkan, versi spesifik yang Anda pilih, atau [profil inferensi aplikasi ARN](#map-each-model-version-to-an-inference-profile)

357* Tidak ada satu pun dari [model yang dicoba Claude Code](#startup-model-checks) yang tersedia. Dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry), Claude Code hanya beralih ke model yang didukung auto mode di Amazon Bedrock.

358 

359Untuk terus bekerja, jalankan `/model` dalam sesi dan tekan `s` pada model yang dapat digunakan akun Anda, yang membiarkan default Anda tidak berubah. `403` ditampilkan sebagai [AWS authentication failed](https://code.claude.com/docs/id/errors.md#aws-authentication-failed).

360 

361Untuk membuat permintaan yang ditolak gagal daripada beralih, atur [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/id/env-vars). Jika Anda mengonfigurasi rantai fallback model, hapus juga rantai tersebut, karena Claude Code tetap berpindah ke fallback tersebut.

357 362 

358## Prefiks profil inferensi lintas wilayah363## Prefiks profil inferensi lintas wilayah

359 364 

Details

222 222 

223Masing-masing adalah array deskripsi prosa, dibaca sebagai aturan bahasa alami. Untuk hard block berbasis pola alat yang berjalan sebelum pengklasifikasi, gunakan [`permissions.deny`](https://code.claude.com/docs/id/permissions).223Masing-masing adalah array deskripsi prosa, dibaca sebagai aturan bahasa alami. Untuk hard block berbasis pola alat yang berjalan sebelum pengklasifikasi, gunakan [`permissions.deny`](https://code.claude.com/docs/id/permissions).

224 224 

225> [!NOTE]

226>

227> Dalam sesi [Code Mode](https://code.claude.com/docs/id/code-mode.md#permission-checks), pengklasifikasi menerapkan `hard_deny` dan `soft_deny` saat meninjau kode Claude, bukan pada setiap panggilan tool yang dibuat oleh kode tersebut. Aturan `permissions.deny` berlaku untuk setiap panggilan.

228 

225Di dalam pengklasifikasi, prioritas bekerja dalam empat tingkat:229Di dalam pengklasifikasi, prioritas bekerja dalam empat tingkat:

226 230 

227* Aturan `hard_deny` memblokir tanpa syarat. Niat pengguna dan pengecualian `allow` tidak berlaku.231* Aturan `hard_deny` memblokir tanpa syarat. Niat pengguna dan pengecualian `allow` tidak berlaku.


283 287 

284Secara default, aturan Bash dan PowerShell yang sempit seperti `Bash(npm test)` tetap berlaku dalam mode otomatis. Claude Code menyelesaikannya sebelum pengklasifikasi berjalan, kecuali perintah membawa [domain yang diizinkan per-perintah](https://code.claude.com/docs/id/sandboxing.md#per-command-allowed-domains-in-auto-mode). Claude Code menangguhkan hanya aturan luas yang memberikan eksekusi kode arbitrer, seperti `Bash(*)` atau interpreter dengan wildcard, bersama dengan setiap aturan yang menyebutkan [`Monitor`](https://code.claude.com/docs/id/tools-reference#monitor-tool), karena perintah Monitor berjalan melalui shell. Ini berarti aturan yang sempit masih dapat membiarkan argumen yang merusak melewati tanpa pengklasifikasi melihatnya, misalnya jalur skrip atau flag yang tidak diantisipasi oleh awalan aturan.288Secara default, aturan Bash dan PowerShell yang sempit seperti `Bash(npm test)` tetap berlaku dalam mode otomatis. Claude Code menyelesaikannya sebelum pengklasifikasi berjalan, kecuali perintah membawa [domain yang diizinkan per-perintah](https://code.claude.com/docs/id/sandboxing.md#per-command-allowed-domains-in-auto-mode). Claude Code menangguhkan hanya aturan luas yang memberikan eksekusi kode arbitrer, seperti `Bash(*)` atau interpreter dengan wildcard, bersama dengan setiap aturan yang menyebutkan [`Monitor`](https://code.claude.com/docs/id/tools-reference#monitor-tool), karena perintah Monitor berjalan melalui shell. Ini berarti aturan yang sempit masih dapat membiarkan argumen yang merusak melewati tanpa pengklasifikasi melihatnya, misalnya jalur skrip atau flag yang tidak diantisipasi oleh awalan aturan.

285 289 

286Atur `autoMode.classifyAllShell` ke `true` untuk menangguhkan setiap aturan izin Bash dan PowerShell saat mode otomatis aktif, sehingga pengklasifikasi mengevaluasi setiap perintah shell terlepas dari daftar izin Anda, kecuali [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths).290Atur `autoMode.classifyAllShell` ke `true` untuk menangguhkan setiap aturan allow Bash dan PowerShell saat auto mode aktif, sehingga pengklasifikasi mengevaluasi setiap perintah shell terlepas dari daftar allow Anda, kecuali [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths). Dalam sesi [Code Mode](https://code.claude.com/docs/id/code-mode.md#permission-checks), pengklasifikasi meninjau kode yang menjalankan perintah-perintah tersebut, bahkan saat pengaturan ini aktif.

287 291 

288```json theme={null}292```json theme={null}

289{293{

Details

315 {315 {

316 "matcher": "Edit|Write",316 "matcher": "Edit|Write",

317 "hooks": [317 "hooks": [

318 { "type": "command", "command": "npx prettier --write --ignore-unknown \"$(jq -r '.tool_input.file_path')\"" }318 { "type": "command", "command": "f=$(jq -r '.tool_input.file_path') && npx prettier --write --ignore-unknown \"$f\"" }

319 ]319 ]

320 }320 }

321 ]321 ]

Details

74| PostgreSQL 11 atau lebih baru | Mendukung alur masuk perangkat dan penghitung rate limit. Layanan PostgreSQL terkelola dapat digunakan, termasuk tier terkecil; lihat [database mana yang didukung](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#postgres). Dengan [batas pengeluaran](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md), database ini juga menyimpan tabel pengeluaran, audit, dan identitas yang tahan lama dan harus dicadangkan. TLS melalui `?sslmode=require` direkomendasikan. PostgreSQL 11, 12, dan 13 memerlukan Claude Code v2.1.290 atau lebih baru di server gateway. Proyek PostgreSQL tidak lagi memelihara versi-versi tersebut, jadi gunakan versi yang lebih baru jika memungkinkan. |74| PostgreSQL 11 atau lebih baru | Mendukung alur masuk perangkat dan penghitung rate limit. Layanan PostgreSQL terkelola dapat digunakan, termasuk tier terkecil; lihat [database mana yang didukung](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#postgres). Dengan [batas pengeluaran](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md), database ini juga menyimpan tabel pengeluaran, audit, dan identitas yang tahan lama dan harus dicadangkan. TLS melalui `?sslmode=require` direkomendasikan. PostgreSQL 11, 12, dan 13 memerlukan Claude Code v2.1.290 atau lebih baru di server gateway. Proyek PostgreSQL tidak lagi memelihara versi-versi tersebut, jadi gunakan versi yang lebih baru jika memungkinkan. |

75| Upstream model | Kredensial Amazon Bedrock, kredensial Claude Platform on AWS, kredensial Google Cloud, resource Microsoft Foundry, atau kunci API Anthropic. Beberapa upstream didukung dengan failover. |75| Upstream model | Kredensial Amazon Bedrock, kredensial Claude Platform on AWS, kredensial Google Cloud, resource Microsoft Foundry, atau kunci API Anthropic. Beberapa upstream didukung dengan failover. |

76| HTTPS | Gateway harus dapat dijangkau melalui `https://` dari laptop developer dan dari browser apa pun yang digunakan untuk masuk; gateway menyajikan halaman verifikasi perangkat pada listener yang sama. Sediakan sertifikat TLS melalui `listen.tls` atau jalankan di belakang ingress yang melakukan terminasi TLS, dan atur `listen.public_url` ke origin eksternal dalam kedua kasus. Saat `/login`, Claude Code menerima origin `http://` biasa hanya jika host gateway adalah loopback: `localhost`, `127.0.0.1`, atau `::1`. |76| HTTPS | Gateway harus dapat dijangkau melalui `https://` dari laptop developer dan dari browser apa pun yang digunakan untuk masuk; gateway menyajikan halaman verifikasi perangkat pada listener yang sama. Sediakan sertifikat TLS melalui `listen.tls` atau jalankan di belakang ingress yang melakukan terminasi TLS, dan atur `listen.public_url` ke origin eksternal dalam kedua kasus. Saat `/login`, Claude Code menerima origin `http://` biasa hanya jika host gateway adalah loopback: `localhost`, `127.0.0.1`, atau `::1`. |

77| Alamat jaringan privat | Saat `/login`, Claude Code mengharuskan hostname atau alamat IP gateway hanya di-resolve ke alamat privat: RFC 1918, link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7`, atau loopback. Untuk gateway yang Anda host, alamat publik apa pun di luar blok yang Anda deklarasikan akan ditolak; lihat [model ancaman](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#threat-model-summary) dalam panduan deployment. Jika mesin developer merutekan HTTPS melalui proxy perusahaan, proses masuk juga mengharuskan host proxy di-resolve ke alamat privat; jika tidak, tambahkan host gateway ke `NO_PROXY` agar CLI terhubung secara langsung. Jika jaringan internal Anda menggunakan penomoran dari ruang IPv4 publik yang dimiliki organisasi Anda, [deklarasikan blok-blok tersebut](#allow-a-gateway-on-public-address-space-you-own) agar `/login` menerima gateway di sana. |77| Alamat jaringan privat | `/login` Claude Code mengharuskan hostname atau alamat IP gateway hanya di-resolve ke alamat privat: rentang RFC 1918 dan link-local, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7`, dan loopback. Lihat [model ancaman](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#threat-model-summary). Jika jaringan internal Anda menggunakan penomoran dari ruang IPv4 publik yang dimiliki organisasi Anda, [deklarasikan blok-blok tersebut](#allow-a-gateway-on-public-address-space-you-own) agar `/login` menerima gateway di sana. |

78| Runtime Linux | Server gateway hanya berjalan pada binary Linux native. macOS dapat digunakan untuk pengembangan lokal. Windows tidak didukung sebagai platform server. |78| Runtime Linux | Server gateway hanya berjalan pada binary Linux native. macOS dapat digunakan untuk pengembangan lokal. Windows tidak didukung sebagai platform server. |

79 79 

80Jika `HTTPS_PROXY` atau `HTTP_PROXY` berlaku untuk host gateway, proses masuk juga memerlukan proxy yang hostname-nya di-resolve ke alamat privat, atau host gateway dimasukkan ke `NO_PROXY` di mesin developer. Jika mesin tersebut juga mengatur `no_proxy`, tambahkan host gateway di sana juga; jika tidak, permintaan model tetap melewati proxy.

81 

80### Langkah-langkah82### Langkah-langkah

81 83 

82**1. Daftarkan klien OAuth di IdP Anda**84**1. Daftarkan klien OAuth di IdP Anda**

Details

16 16 

17## Struktur file17## Struktur file

18 18 

19Lima bagian [diperlukan](#required-sections). Setiap bagian lainnya [opsional](#optional-sections), dan bagian yang dihilangkan mengambil default-nya. Kunci yang tidak dikenal gagal boot, jadi typo muncul sebagai error bernama daripada setting yang diabaikan secara diam-diam.19Lima bagian [diperlukan](#required-sections). Setiap bagian lainnya [opsional](#optional-sections), dan bagian yang dihilangkan mengambil default-nya.

20 20 

21**Bagian yang diperlukan:**21**Bagian yang diperlukan:**

22 22 


519 519 

520Memerlukan gateway yang menjalankan Claude Code v2.1.281 atau yang lebih baru. [Atribusi biaya di AWS](https://code.claude.com/docs/id/claude-apps-gateway-on-aws.md#cost-attribution) menjelaskan IAM role dan tempat penagihan AWS menampilkan sesi-sesi tersebut.520Memerlukan gateway yang menjalankan Claude Code v2.1.281 atau yang lebih baru. [Atribusi biaya di AWS](https://code.claude.com/docs/id/claude-apps-gateway-on-aws.md#cost-attribution) menjelaskan IAM role dan tempat penagihan AWS menampilkan sesi-sesi tersebut.

521 521 

522> [!NOTE]

523>

524> Untuk atribusi per developer, atur `assume_role` dengan `session_name` pada setiap upstream `bedrock` dan [`mantle`](#amazon-bedrock-mantle-endpoint) kecuali yang menggunakan `aws_bearer_token`. Upstream tersebut [tidak dapat menggunakan `assume_role`](#bedrock-in-another-aws-account), sehingga permintaannya tetap berada di bawah satu principal.

525 

522```yaml theme={null}526```yaml theme={null}

523upstreams:527upstreams:

524 - provider: bedrock528 - provider: bedrock


535 539 

536Gateway juga membuat satu panggilan sendiri pada role ini: penghitungan token untuk permintaan yang ditinggalkan klien, agar [batas pengeluaran](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md) tetap akurat. Penghitungan tersebut dan [permintaan fallback satu token](#amazon-bedrock)-nya ditandatangani oleh sesi bersama `claude-apps-gateway`, sehingga AWS mengatribusikan fallback tersebut ke `claude-apps-gateway` alih-alih ke developer.540Gateway juga membuat satu panggilan sendiri pada role ini: penghitungan token untuk permintaan yang ditinggalkan klien, agar [batas pengeluaran](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md) tetap akurat. Penghitungan tersebut dan [permintaan fallback satu token](#amazon-bedrock)-nya ditandatangani oleh sesi bersama `claude-apps-gateway`, sehingga AWS mengatribusikan fallback tersebut ke `claude-apps-gateway` alih-alih ke developer.

537 541 

538Untuk atribusi per developer yang ketat, atur `assume_role` dengan `session_name` pada setiap upstream Bedrock yang Anda cantumkan. Upstream tanpanya menandatangani permintaan yang dilayaninya dengan kredensialnya sendiri.

539 

540#### Endpoint Mantle Amazon Bedrock542#### Endpoint Mantle Amazon Bedrock

541 543 

542Penyedia `mantle` mengirim inferensi ke [endpoint Mantle](https://code.claude.com/docs/id/amazon-bedrock.md#use-the-mantle-endpoint) Amazon Bedrock. Penyedia ini memerlukan Claude Code v2.1.283 atau yang lebih baru di server gateway. Rilis gateway sebelumnya menolaknya saat boot, jadi upgrade setiap replika sebelum menambahkannya.544Penyedia `mantle` mengirim inferensi ke [endpoint Mantle](https://code.claude.com/docs/id/amazon-bedrock.md#use-the-mantle-endpoint) Amazon Bedrock. Penyedia ini memerlukan Claude Code v2.1.283 atau yang lebih baru di server gateway. Rilis gateway sebelumnya menolaknya saat boot, jadi upgrade setiap replika sebelum menambahkannya.


656 658 

657| Penyiapan | Cara |659| Penyiapan | Cara |

658| - | - |660| - | - |

659| RBAC | Berikan identitas gateway `Azure AI User` atau `Cognitive Services User` pada resource Microsoft Foundry |661| RBAC | Berikan identitas gateway role `Foundry User` atau `Cognitive Services User` pada resource Microsoft Foundry |

660| Deployment | Microsoft Foundry menggunakan nama deployment yang dipilih admin, bukan ID model kanonis. Tambahkan blok [`models:`](#models) yang memetakan setiap ID kanonis ke nama deployment Anda. |662| Deployment | Microsoft Foundry menggunakan nama deployment yang dipilih admin, bukan ID model kanonis. Tambahkan blok [`models:`](#models) yang memetakan setiap ID kanonis ke nama deployment Anda. |

661| AKS (workload identity) | Federasikan User-Assigned Managed Identity dengan issuer OIDC cluster dan ikat ke service account gateway. `use_azure_ad: true` mengambilnya melalui `WorkloadIdentityCredential`. |663| AKS (workload identity) | Federasikan User-Assigned Managed Identity dengan issuer OIDC cluster dan ikat ke service account gateway. `use_azure_ad: true` mengambilnya melalui `WorkloadIdentityCredential`. |

662| ACI / App Service | Aktifkan managed identity system-assigned atau user-assigned pada resource. `use_azure_ad: true` akan mengambilnya. |664| ACI / App Service | Aktifkan managed identity system-assigned atau user-assigned pada resource. `use_azure_ad: true` akan mengambilnya. |


1001 1003 

1002Setiap kunci di bawah `upstream_model` harus cocok dengan `name` dari upstream yang dikonfigurasi, yang secara default adalah nama penyedia. Kunci yang tidak cocok dengan upstream mana pun menggagalkan boot, jadi hapus baris untuk penyedia yang tidak Anda gunakan.1004Setiap kunci di bawah `upstream_model` harus cocok dengan `name` dari upstream yang dikonfigurasi, yang secara default adalah nama penyedia. Kunci yang tidak cocok dengan upstream mana pun menggagalkan boot, jadi hapus baris untuk penyedia yang tidak Anda gunakan.

1003 1005 

1006Agar developer dapat menggunakan alias `fable` dengan `auto_include_builtin_models: false`, tambahkan entri `claude-fable-5` ke `models`. Itu adalah ID yang menjadi tujuan resolve [alias `fable`](https://code.claude.com/docs/id/model-config#fable-alias-resolution) untuk developer yang masuk ke gateway. Tanpanya, pesan mereka gagal dengan error yang diawali `API Error: 400 model claude-fable-5 is not in the operator's model allowlist`.

1007 

1004### `managed`1008### `managed`

1005 1009 

1006Blok `managed` mendefinisikan kebijakan akses berbasis peran yang dikunci pada grup IdP atau domain email. Kebijakan dievaluasi secara berurutan; secara default kecocokan pertama yang dipilih, lalu digabungkan ke basis catch-all `match: {}`. Pengguna yang cocok dengan dua kebijakan peran hanya mendapatkan yang pertama, sehingga aturan deny dari kebijakan kedua tidak berlaku kecuali Anda [menerapkan setiap kebijakan yang cocok](#apply-every-matching-policy). Kebijakan dilayani per pengguna di `GET /managed/settings` dengan caching ETag/304.1010Blok `managed` mendefinisikan kebijakan akses berbasis peran yang dikunci pada grup IdP atau domain email. Kebijakan dievaluasi secara berurutan; secara default kecocokan pertama yang dipilih, lalu digabungkan ke basis catch-all `match: {}`. Pengguna yang cocok dengan dua kebijakan peran hanya mendapatkan yang pertama, sehingga aturan deny dari kebijakan kedua tidak berlaku kecuali Anda [menerapkan setiap kebijakan yang cocok](#apply-every-matching-policy). Kebijakan dilayani per pengguna di `GET /managed/settings` dengan caching ETag/304.


1025Catch-all `match: {}`, yang secara konvensi dicantumkan terakhir, diperlakukan sebagai lapisan dasar. Setiap kebijakan lain mewarisi kunci apa pun yang tidak disetelnya dari catch-all, sehingga entri per peran hanya perlu mencantumkan apa yang berbeda dari default organisasi. Aturan penggabungan bergantung pada jenis kunci:1029Catch-all `match: {}`, yang secara konvensi dicantumkan terakhir, diperlakukan sebagai lapisan dasar. Setiap kebijakan lain mewarisi kunci apa pun yang tidak disetelnya dari catch-all, sehingga entri per peran hanya perlu mencantumkan apa yang berbeda dari default organisasi. Aturan penggabungan bergantung pada jenis kunci:

1026 1030 

1027* **Allow-list**: `availableModels` dan `permissions.allow`. Daftar kebijakan spesifik sepenuhnya menggantikan daftar dasar.1031* **Allow-list**: `availableModels` dan `permissions.allow`. Daftar kebijakan spesifik sepenuhnya menggantikan daftar dasar.

1028* **Deny-list dan array hook**: `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces`, `deniedModels`, dan setiap array tipe event `hooks`. Kunci ini mengambil gabungan (union) dari dasar dan kebijakan, sehingga deny atau hook audit di seluruh organisasi tidak dapat terhapus secara tidak sengaja oleh override per peran.1032* **Deny-list dan array hook**: ini mengambil gabungan (union) dari basis dan kebijakan:

1033 * `permissions.deny` dan `permissions.ask`

1034 * `disabledMcpjsonServers` dan `deniedMcpServers`

1035 * `blockedMarketplaces` dan `deniedModels`

1036 * Array jenis event `hooks`

1029* **Kunci bertipe record**: `env`, `modelOverrides`, dan `skillOverrides`. Kunci ini digabungkan secara dangkal (shallow-merge), sehingga blok `env` per peran menimpa kunci yang disetelnya dan mewarisi sisanya dari dasar.1037* **Kunci bertipe record**: `env`, `modelOverrides`, dan `skillOverrides`. Kunci ini digabungkan secara dangkal (shallow-merge), sehingga blok `env` per peran menimpa kunci yang disetelnya dan mewarisi sisanya dari dasar.

1030 1038 

1031`availableModels` juga ditegakkan di sisi server pada `/v1/messages`, sehingga model yang ditolak mengembalikan `400` terlepas dari apa yang dikirim klien. Daftar kosong menolak setiap model. Pemeriksaan ini juga mencakup model yang digunakan sesi saat dimulai sebelum developer memilih model, jadi [mulai sesi pada model yang diizinkan kebijakan](#start-sessions-on-a-model-the-policy-allows).1039`availableModels` juga ditegakkan di sisi server pada `/v1/messages`, sehingga model yang ditolak mengembalikan `400` terlepas dari apa yang dikirim klien. Daftar kosong menolak setiap model. Pemeriksaan ini juga mencakup model yang digunakan sesi saat dimulai sebelum developer memilih model, jadi [mulai sesi pada model yang diizinkan kebijakan](#start-sessions-on-a-model-the-policy-allows).


1277 1285 

1278Untuk mematikan konteks 1M, setel [`CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`](https://code.claude.com/docs/id/model-config#extended-context) di blok `env` yang sama. Claude Code kemudian memperlakukan setiap model sebagai memiliki window 200K. Dalam sesi interaktif, setiap developer menyetujui variabel ini di [dialog persetujuan](#what-goes-in-cli) sebelum variabel tersebut berlaku.1286Untuk mematikan konteks 1M, setel [`CLAUDE_CODE_DISABLE_1M_CONTEXT: "1"`](https://code.claude.com/docs/id/model-config#extended-context) di blok `env` yang sama. Claude Code kemudian memperlakukan setiap model sebagai memiliki window 200K. Dalam sesi interaktif, setiap developer menyetujui variabel ini di [dialog persetujuan](#what-goes-in-cli) sebelum variabel tersebut berlaku.

1279 1287 

1288> [!NOTE]

1289>

1290> Claude Code tidak membaca `upstream_model` suatu alias untuk menentukan ukuran context window-nya. Untuk memberikan window modelnya kepada alias di `models` yang tidak dikenali Claude Code, lihat [Mengoreksi window untuk gateway atau ID model kustom](https://code.claude.com/docs/id/model-config.md#correct-the-window-for-a-gateway-or-custom-model-id).

1291 

1280#### Prompt cache satu jam1292#### Prompt cache satu jam

1281 1293 

1282Untuk meminta [TTL prompt cache](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) satu jam alih-alih lima menit default, tambahkan kunci ini ke [blok `code`, `cli`, atau `settings`](#choose-cli-or-code) yang sudah ada di kebijakan, lalu mulai ulang gateway. Kunci ini memerlukan Claude Code v2.1.242 atau yang lebih baru di server gateway dan di klien.1294Untuk meminta [TTL prompt cache](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) satu jam alih-alih lima menit default, tambahkan kunci ini ke [blok `code`, `cli`, atau `settings`](#choose-cli-or-code) yang sudah ada di kebijakan, lalu mulai ulang gateway. Kunci ini memerlukan Claude Code v2.1.242 atau yang lebih baru di server gateway dan di klien.


1379 1391 

1380##### Apa yang ditolak gateway saat boot1392##### Apa yang ditolak gateway saat boot

1381 1393 

1382Gateway memvalidasi setiap blok `desktop` saat boot terhadap skema konfigurasi yang digunakan Claude Desktop sendiri, sehingga kesalahan muncul saat gateway dimulai sebagai error yang menyebutkan kunci tersebut, alih-alih menjangkau setiap desktop yang terhubung. Gateway gagal saat boot jika suatu blok berisi:1394Gateway gagal saat boot ketika blok `desktop` berisi:

1383 1395 

1384* Kunci yang tidak dikenal1396* Kunci yang dikenali yang nilainya akan ditolak atau dibuang diam-diam oleh Claude Desktop, seperti nilai kosong.

1385* Kunci yang dikenali yang nilainya akan ditolak atau diam-diam dibuang oleh Claude Desktop, seperti nilai kosong atau sub-kunci yang salah eja di dalam entri bersarang. Sebelum v2.1.260, gateway diam-diam membuang bidang yang salah eja di dalam objek bersarang dari entri `managedMcpServers` atau `orgPluginSettings` alih-alih gagal saat boot.

1386* Kunci yang dihitung gateway sendiri: koneksi inferensi, daftar model, dan relay OTLP. Konfigurasikan semua itu melalui [`upstreams`](#upstreams), [`models`](#models), dan `forward_to` di bagian [`telemetry`](#telemetry).1397* Kunci yang dihitung gateway sendiri: koneksi inferensi, daftar model, dan relay OTLP. Konfigurasikan semua itu melalui [`upstreams`](#upstreams), [`models`](#models), dan `forward_to` di bagian [`telemetry`](#telemetry).

1387* Alias lama dari kunci saat ini. Dalam error boot, gateway menyebutkan kunci kanonis yang harus ditulis.1398* Alias lama dari kunci saat ini. Dalam error boot, gateway menyebutkan kunci kanonis yang harus ditulis.

1399* Sejak v2.1.300, kunci apa pun yang namanya diawali `selfHosted`, seperti kunci untuk host sesi yang di-host sendiri. Hapus kunci-kunci ini sebelum Anda meningkatkan gateway ke v2.1.300 atau yang lebih baru.

1388 1400 

1389Jika Anda menggunakan nilai atau bentuk entri yang sudah deprecated, seperti entri `managedMcpServers` tanpa `transport`, gateway tetap mulai dan mencatat peringatan yang menyebutkan penggantinya.1401Jika Anda menggunakan nilai atau bentuk entri yang sudah deprecated, seperti entri `managedMcpServers` tanpa `transport`, gateway tetap mulai dan mencatat peringatan yang menyebutkan penggantinya.

1390 1402 

1391Sebelum v2.1.232, gateway menerima daftar tetap berisi 11 kunci feature-gate, seperti `chatTabEnabled` dan `disableAutoUpdates`, dan menolak setiap kunci lain saat boot. Sebelum v2.1.227, gateway juga menolak `chatTabEnabled` dan `chatAdvancedFileAnalysisEnabled` saat boot.1403Sebelum v2.1.232, gateway menerima daftar tetap berisi 11 kunci feature-gate, seperti `chatTabEnabled` dan `disableAutoUpdates`, dan menolak setiap kunci lain saat boot. Sebelum v2.1.227, gateway juga menolak `chatTabEnabled` dan `chatAdvancedFileAnalysisEnabled` saat boot.

1392 1404 

1405##### Kunci yang tidak dikenal gateway

1406 

1407Pada gateway yang menjalankan Claude Code v2.1.295 atau yang lebih baru, sebagian besar kunci dari rilis Claude Desktop yang lebih baru tidak memerlukan peningkatan gateway. Pada v2.1.321 atau yang lebih baru, sebagian besar sub-kunci baru di dalam kunci yang dikenal juga tidak memerlukannya.

1408 

1409Beberapa kunci dan nilai tetap gagal saat boot, seperti berikut ini:

1410 

1411* Pilihan baru dalam daftar nilai tetap dari kunci yang dikenal.

1412* Kemungkinan salah ketik dari kunci yang dapat Anda tetapkan di blok `desktop`, seperti `disable_auto_updates` untuk `disableAutoUpdates`. Error tersebut menyarankan sebuah nama.

1413 

1414Dalam setiap kasus, jika nama atau nilai tersebut memang ada di rilis Claude Desktop yang lebih baru, [tingkatkan gateway](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#upgrades) ke rilis terbaru. Jika tidak, perbaiki atau hapus. Untuk mengetahuinya sebelum Anda melakukan deploy, [uji kebijakan](#test-a-policy-before-deployment).

1415 

1393##### Kunci yang memerlukan versi gateway atau Claude Desktop yang lebih baru1416##### Kunci yang memerlukan versi gateway atau Claude Desktop yang lebih baru

1394 1417 

1395Gateway memvalidasi blok `desktop` terhadap skema yang dibundel dengan versi terpasangnya, seperti halnya blok `cli`. Untuk mengirim pengaturan yang diperkenalkan oleh rilis Claude Desktop yang lebih baru, tingkatkan gateway terlebih dahulu. Misalnya, `userPluginMarketplacesEnabled` dan `userPluginUploadsEnabled` memerlukan Claude Code v2.1.260 atau yang lebih baru di server gateway dan Claude Desktop 1.37937.0 atau yang lebih baru di mesin anggota.1418`userPluginMarketplacesEnabled` dan `userPluginUploadsEnabled` memerlukan Claude Code v2.1.260 atau yang lebih baru di server gateway dan Claude Desktop 1.37937.0 atau yang lebih baru di mesin anggota.

1396 1419 

1397`blockReadsOutsideWorkingDirectories`, `disableBypassPermissionsMode`, `configRecheckIntervalMinutes`, dan `sshClientPath` memerlukan Claude Code v2.1.281 atau yang lebih baru di server gateway. Begitu pula nilai `required` dari `microsoftAuthBroker` dan bidang `continuousAccessEvaluation` dari entri `managedMcpServers` Microsoft 365. Rilis Claude Desktop yang lebih lama dari nilai `required` membacanya sebagai `disabled`, jadi setel `required` hanya setelah Claude Desktop setiap anggota mendukungnya. [Referensi konfigurasi terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop mencantumkan rilis yang pertama kali membaca setiap kunci.1420`blockReadsOutsideWorkingDirectories`, `disableBypassPermissionsMode`, `configRecheckIntervalMinutes`, dan `sshClientPath` memerlukan Claude Code v2.1.281 atau yang lebih baru di server gateway. Begitu pula nilai `required` dari `microsoftAuthBroker` dan bidang `continuousAccessEvaluation` dari entri `managedMcpServers` Microsoft 365. Rilis Claude Desktop yang lebih lama dari nilai `required` membacanya sebagai `disabled`, jadi setel `required` hanya setelah Claude Desktop setiap anggota mendukungnya. [Referensi konfigurasi terkelola](https://claude.com/docs/third-party/claude-desktop/configuration) Claude Desktop mencantumkan rilis yang pertama kali membaca setiap kunci.

1398 1421 

Details

92 92 

93Selain binary, image memerlukan:93Selain binary, image memerlukan:

94 94 

95* **Image berbasis glibc**: satu-satunya dependensi dinamis dari build glibc adalah library glibc. Image berbasis musl memerlukan build `linux-x64-musl` atau `linux-arm64-musl` ditambah paket tambahan; lihat [Penyiapan Alpine Linux](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions).95* **Image berbasis glibc**: satu-satunya dependensi dinamis dari build glibc adalah library glibc. Image berbasis musl memerlukan build `linux-x64-musl` atau `linux-arm64-musl`, yang satu-satunya dependensi dinamisnya adalah musl.

96* **Direktori state yang dapat ditulis**: gateway berjalan sebagai pengguna apa pun, tetapi image minimal tidak memiliki direktori home yang dapat ditulis. Atur `CLAUDE_CONFIG_DIR` ke path yang dapat ditulis seperti `/tmp/.claude`.96* **Direktori state yang dapat ditulis**: gateway berjalan sebagai pengguna apa pun, tetapi image minimal tidak memiliki direktori home yang dapat ditulis. Atur `CLAUDE_CONFIG_DIR` ke path yang dapat ditulis seperti `/tmp/.claude`.

97* **Perintah container**: `claude gateway --config /etc/claude/gateway.yaml`, dengan file konfigurasi di-mount secara read-only dan secret disediakan sebagai environment variable; gateway mendengarkan pada `listen.port`, default `8080`.97* **Perintah container**: `claude gateway --config /etc/claude/gateway.yaml`, dengan file konfigurasi di-mount secara read-only dan secret disediakan sebagai environment variable; gateway mendengarkan pada `listen.port`, default `8080`.

98 98 

Details

189 189 

190```190```

191Sent to cloud session.191Sent to cloud session.

192Session ID: session_01DiUkqY2kzbUbDmW1w96rfi192Session ID: session_01HJKLMNOPQRSTUVWXYZ

193View: https://claude.ai/code/session_01DiUkqY2kzbUbDmW1w96rfi?from=cli&m=0193View: https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ?from=cli&m=0

194```194```

195 195 

196Teruskan `--output-format json` untuk hasil yang dapat dibaca mesin: `{ok, session_id, url}` saat berhasil, atau `{ok: false, session_id, error}` ketika pengiriman gagal, misalnya ketika sesi hilang atau diarsipkan. Kesalahan konfigurasi, seperti penyedia yang tidak didukung atau kebijakan organisasi yang dinonaktifkan, dicetak ke stderr tanpa JSON. `--output-format stream-json` tidak didukung dengan `--cloud <session-id>`.196Teruskan `--output-format json` untuk hasil yang dapat dibaca mesin: `{ok, session_id, url}` saat berhasil, atau `{ok: false, session_id, error}` ketika pengiriman gagal, misalnya ketika sesi hilang atau diarsipkan. Kesalahan konfigurasi, seperti penyedia yang tidak didukung atau kebijakan organisasi yang dinonaktifkan, dicetak ke stderr tanpa JSON. `--output-format stream-json` tidak didukung dengan `--cloud <session-id>`.

Details

274 274 

275Thread berjalan dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), jadi Claude menjalankan perintah dan mengedit file di folder itu tanpa meminta Anda setiap kali. Jika auto mode tidak tersedia atau dimatikan di Claude Code komputer itu, thread berjalan tanpanya, dan prompt izin apa pun yang dimunculkannya menunggu jawaban Anda di thread, seperti yang dijelaskan [Buka blokir thread yang menunggu persetujuan](#unblock-a-thread-waiting-on-approval).275Thread berjalan dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), jadi Claude menjalankan perintah dan mengedit file di folder itu tanpa meminta Anda setiap kali. Jika auto mode tidak tersedia atau dimatikan di Claude Code komputer itu, thread berjalan tanpanya, dan prompt izin apa pun yang dimunculkannya menunggu jawaban Anda di thread, seperti yang dijelaskan [Buka blokir thread yang menunggu persetujuan](#unblock-a-thread-waiting-on-approval).

276 276 

277Untuk menjalankan thread dalam mode lain, mulai `claude remote-control` dengan [`--settings`](https://code.claude.com/docs/id/remote-control#start-a-remote-control-session). Kemudian [`permissions.defaultMode`](https://code.claude.com/docs/id/permission-modes#start-in-a-different-mode), di file tersebut atau di pengaturan komputer itu, dapat memilih mode lain.

278 

277Saat thread berjalan, ikon laptop di headernya menunjukkan apakah komputer Anda terhubung. Klik untuk melihat folder mana yang digunakan thread atau untuk mematikan koneksi. Thread dijeda saat komputer itu tidur, dan berhenti jika aplikasi desktop atau `claude remote-control` berhenti.279Saat thread berjalan, ikon laptop di headernya menunjukkan apakah komputer Anda terhubung. Klik untuk melihat folder mana yang digunakan thread atau untuk mematikan koneksi. Thread dijeda saat komputer itu tidur, dan berhenti jika aplikasi desktop atau `claude remote-control` berhenti.

278 280 

279* **Untuk membuat thread berjalan lagi**: lihat [Kehilangan kontak dengan folder Anda](#lost-contact-with-your-folder)281* **Untuk membuat thread berjalan lagi**: lihat [Kehilangan kontak dengan folder Anda](#lost-contact-with-your-folder)

code-mode.md +224 −0 created

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# Menjalankan panggilan tool dari kode dengan Code Mode

6 

7> Cobalah Code Mode, fitur eksperimental di mana Claude menulis JavaScript yang melakukan beberapa panggilan tool dalam satu langkah.

8 

9Code Mode mengubah cara Claude menggunakan [tool](https://code.claude.com/docs/id/tools-reference.md) miliknya. Tanpa Code Mode, Claude meminta panggilan tool seperti Bash, Read, atau Edit secara langsung dan membaca setiap hasilnya sebelum memutuskan apa yang harus dilakukan selanjutnya. Dengan Code Mode, Claude menulis sepotong JavaScript yang melakukan panggilan tool tersebut, dan Claude Code menjalankan kode itu di sesi Anda.

10 

11> [!NOTE]

12>

13> Code Mode bersifat eksperimental dan nonaktif secara default. Fitur ini dapat berubah atau dihapus di rilis mana pun. Untuk memberikan masukan, jalankan `/feedback`.

14 

15## Cara kerja Code Mode

16 

17Dalam sesi Code Mode, Anda tetap mendeskripsikan tugas Anda dalam sebuah prompt, dan Claude menulis JavaScript untuk melaksanakannya. Satu potong kode dapat menjalankan perintah secara paralel, menggunakan satu hasil dalam panggilan berikutnya, dan mengembalikan bagian output yang perlu dibaca oleh Claude.

18 

19Misalnya, jika Anda meminta Claude untuk menaikkan batas retry, Claude mungkin menulis kode ini untuk menemukan file, mengeditnya, dan menjalankan pengujian. Baris terakhir mengembalikan path file dan output pengujian kepada Claude:

20 

21```javascript theme={null}

22const files = await $`rg -l "function retryPolicy" src`.text();

23const target = files.trim().split("\n")[0];

24await edit(target, "maxAttempts: 3", "maxAttempts: 5");

25({ edited: target, tests: $`npm test -- retryPolicy`.nothrow() });

26```

27 

28Dalam percakapan, Anda melihat panggilan tool, seperti diff dari edit tersebut, dan bukan kodenya. Untuk membaca kode, tekan `Ctrl+O` untuk membuka [penampil transkrip](https://code.claude.com/docs/id/interactive-mode.md#transcript-viewer). Setiap potong kode muncul di sana sebagai baris **Code** yang diciutkan, dengan petunjuk cara memperluasnya.

29 

30### Kapan menggunakan Code Mode

31 

32Cobalah Code Mode pada tugas yang memerlukan banyak panggilan tool yang saling terkait, seperti:

33 

34* Perubahan yang berulang di banyak file

35* Pencarian yang hasilnya perlu difilter sebelum Claude membacanya

36* Beberapa perintah independen yang dapat berjalan bersamaan

37 

38### Keterbatasan Code Mode

39 

40Sebelum Anda mengaktifkan Code Mode, pastikan Anda dapat menerima batasan berikut:

41 

42* **Melanjutkan sesi**: Anda dapat melanjutkan sesi Code Mode hanya di terminal, dengan Code Mode aktif

43* **Auto mode**: pengklasifikasi auto mode [meninjau kode, bukan setiap panggilan tool](#permission-checks)

44* **Kode yang berjalan lama**: kecuali jika [kode dapat berjalan di latar belakang](#long-running-code), Anda menunggu hingga kode selesai, dan kode berhenti setelah sepuluh menit

45* **Hook**: Anda dapat melihat [panggilan tool ditolak](#tool-call-refused-by-a-hook) ketika hook `PreToolUse` tidak dapat berjalan atau mengalami timeout, dan [output kode diblokir](#code-output-withheld-by-a-hook) oleh hook `UserPromptSubmit`

46* **Fitur yang tidak tersedia**: Anda tidak dapat menggunakan [Remote Control](https://code.claude.com/docs/id/remote-control.md), [Claude in Chrome](https://code.claude.com/docs/id/chrome.md), atau [computer use](https://code.claude.com/docs/id/computer-use.md)

47* **Memindahkan sesi**: Anda tidak dapat memindahkan sesi ke aplikasi Desktop atau mengubahnya menjadi [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), dan `/fork` tidak dapat memulai salinan latar belakang

48 

49## Persyaratan

50 

51* **Versi**: Claude Code v2.1.323 atau yang lebih baru, di salah satu [saluran rilis](https://code.claude.com/docs/id/setup.md#configure-release-channel). Versi yang lebih lama dimulai tanpa Code Mode, dengan atau tanpa alasan `it isn't open to your account yet`

52* **Akun**: langganan Claude atau akun Console. Anda tidak dapat menggunakan Code Mode melalui gateway, Amazon Bedrock, Claude Platform on AWS, Agent Platform dari Google Cloud, atau Microsoft Foundry

53* **Organisasi**: organisasi Anda tidak menggunakan [konfigurasi HIPAA](https://code.claude.com/docs/id/hipaa-setup.md) maupun [zero data retention](https://code.claude.com/docs/id/zero-data-retention.md)

54* **Model**: Claude Opus 5.5, Sonnet 5.5, Haiku 5.5, atau Fable 5.2

55* **Surface**: sesi `claude` interaktif di terminal. Code Mode tidak berfungsi dengan `-p`, Agent SDK, panel VS Code, aplikasi Desktop, atau sesi cloud

56* **Instalasi**: [build native](https://code.claude.com/docs/id/setup.md) dari Claude Code

57* **Windows**: [Git for Windows](https://git-scm.com/downloads/win) sudah terinstal

58 

59Anda juga tidak dapat memulai Code Mode dengan beberapa pengaturan tertentu aktif, seperti API key helper, tim agent, ekspor OpenTelemetry, atau `DISABLE_TELEMETRY`. Untuk perbaikan masing-masing, lihat [Code Mode tidak dimulai](#code-mode-doesnt-start).

60 

61## Mencoba Code Mode

62 

63Aktifkan Code Mode, berikan tugas kepada Claude, dan lihat kode yang ditulis Claude.

64 

65**1. Periksa versi Anda**

66 

67Jalankan `claude --version`. Jika versinya lebih lama dari v2.1.323, jalankan `claude update`. Jika Anda berada di saluran `stable` dan pembaruan tidak mencapai v2.1.323, tunggu hingga `stable` menyusul atau [beralih ke `latest`](https://code.claude.com/docs/id/setup#configure-release-channel).

68 

69**2. Mulai Claude Code dengan Code Mode aktif**

70 

71Atur environment variable [`CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`](https://code.claude.com/docs/id/env-vars#variables) ke `1`. Untuk mencoba Code Mode, atur di shell Anda. Untuk mengaktifkan Code Mode di setiap sesi baru, atur di pengaturan pengguna Anda.

72 

73> [tab] macOS, Linux, WSL

74>

75> ```bash theme={null}

76> CLAUDE_CODE_EXPERIMENTAL_CODE_MODE=1 claude

77> ```

78 

79> [tab] Windows PowerShell

80>

81> ```powershell theme={null}

82> $env:CLAUDE_CODE_EXPERIMENTAL_CODE_MODE = "1"

83> claude

84> ```

85 

86> [tab] settings.json

87>

88> Simpan blok `env` ini di `~/.claude/settings.json` dan mulai `claude`:

89>

90> ```json theme={null}

91> {

92> "env": {

93> "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "1"

94> }

95> }

96> ```

97>

98> Claude Code [mengabaikan variabel ini di file pengaturan proyek](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env), sehingga repositori yang Anda clone tidak dapat mengaktifkan Code Mode untuk Anda.

99 

100**3. Konfirmasi bahwa Anda menginginkan Code Mode**

101 

102Claude Code meminta Anda untuk mengonfirmasi sebelum sesi Code Mode pertama Anda. Pilih **Yes, turn on Code Mode**. Claude Code dimulai ulang dan menampilkan baris ini di dekat bagian atas sesi:

103 

104```text theme={null}

105Code Mode (experimental) is on · this session can be resumed only with Code Mode on

106```

107 

108Jika Anda melihat baris yang berbeda atau tidak ada baris sama sekali, lihat [Code Mode tidak dimulai](#code-mode-doesnt-start).

109 

110**4. Berikan Claude tugas dengan banyak panggilan tool**

111 

112Di proyek yang Anda kenal, kirim prompt seperti ini:

113 

114```text theme={null}

115Read every Markdown file in this project and list the links that point to local files that don't exist.

116```

117 

118**5. Baca kode yang ditulis Claude**

119 

120Tekan `Ctrl+O` dan perluas baris **Code** untuk melihat JavaScript di balik panggilan tool. Tekan `Ctrl+O` lagi untuk kembali ke percakapan.

121 

122> [!WARNING]

123>

124> Untuk melanjutkan sesi Code Mode nanti, biarkan `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` tetap diatur ke `1` saat Anda menjalankan `claude --continue` atau `claude --resume`. Dengan Code Mode nonaktif, Claude Code menolak melanjutkan sesi tersebut. Sesi yang Anda mulai tanpa Code Mode dilanjutkan tanpa Code Mode, bahkan jika variabel tersebut diatur.

125 

126### Menonaktifkan Code Mode

127 

128Hapus `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` dari shell Anda dan dari `~/.claude/settings.json`, lalu mulai sesi baru. Anda juga dapat mempertahankan variabel tersebut dan mengubah nilainya menjadi `0` di salah satu tempat. Dengan `0` di satu tempat, Code Mode tetap nonaktif meskipun Anda mengatur `1` di tempat lainnya.

129 

130### Memblokir Code Mode untuk organisasi Anda

131 

132Tambahkan `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` dengan nilai `0` ke [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) Anda agar tidak ada seorang pun di organisasi Anda yang dapat menggunakan Code Mode:

133 

134```json theme={null}

135{

136 "env": {

137 "CLAUDE_CODE_EXPERIMENTAL_CODE_MODE": "0"

138 }

139}

140```

141 

142Pengguna yang sedang berada dalam sesi Code Mode tetap berada di dalamnya hingga mereka keluar atau memulai ulang Claude Code. Setelah itu, pengguna Anda memulai tanpa Code Mode dan tidak dapat melanjutkan sesi Code Mode mereka selama `0` tersebut berlaku. Anda tidak dapat mengaktifkan Code Mode untuk pengguna Anda dari pengaturan terkelola.

143 

144## Izin dan kode yang berjalan lama

145 

146Mode izin Anda menentukan bagaimana kode Claude diperiksa dan apakah Anda dapat berbicara dengan Claude saat kode berjalan.

147 

148### Pemeriksaan izin

149 

150Setiap panggilan tool yang dilakukan kode Claude melewati [aturan izin](https://code.claude.com/docs/id/permissions.md) `deny` dan `ask` Anda serta [hook `PreToolUse`](https://code.claude.com/docs/id/hooks#pretooluse) Anda. Anda tidak perlu mengubah aturan atau matcher untuk tool seperti `Bash`. Selain aturan dan hook, sebuah pengklasifikasi meninjau kode dalam auto mode, dan Anda menjawab permintaan izin dalam mode yang meminta persetujuan:

151 

152* **[Auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode)**: pengklasifikasi meninjau setiap potong kode sebelum dijalankan, bukan setiap panggilan tool. Pengklasifikasi tidak melihat nilai yang dihitung saat runtime, seperti path yang diambil dari output pencarian, jadi pertahankan aturan atau hook untuk panggilan yang harus Anda kendalikan. Anda tetap dapat [diminta izin ketika kode baru dimulai saat kode sebelumnya masih berjalan](#permission-prompt-with-a-countdown)

153* **[Mode izin](https://code.claude.com/docs/id/permission-modes.md) lainnya**: kode dimulai tanpa tinjauan, dan Anda diminta izin untuk setiap panggilan tool yang akan meminta izin Anda dalam mode tersebut

154 

155Untuk memeriksa kode itu sendiri, tulis hook `PreToolUse` yang mencocokkan `REPL`, yaitu tool yang menjalankan kode Claude, dan baca JavaScript dari `tool_input.code`.

156 

157> [!WARNING]

158>

159> Aturan Bash mencocokkan teks perintah, sehingga Claude dapat menjalankan perintah yang ditolak [dalam bentuk yang tidak cocok dengan aturan tersebut](https://code.claude.com/docs/id/permissions.md#bash-rule-limits), dengan atau tanpa Code Mode. Untuk batasan yang tidak bergantung pada teks perintah, lihat [sandboxing](https://code.claude.com/docs/id/sandboxing.md).

160 

161### Kode yang berjalan lama

162 

163Saat kode menjalankan build atau pengujian yang lama, Claude menunggunya atau membiarkannya berlanjut di latar belakang:

164 

165* **Menunggu**: Claude menjawab setelah kode selesai, dan kode berhenti setelah sepuluh menit, termasuk waktu yang Anda habiskan di permintaan izin

166* **Latar belakang**: Anda dapat terus berbicara dengan Claude, dan kode dapat berjalan hingga dua jam

167 

168Untuk kode latar belakang, mulai sesi Anda dalam auto mode atau mode `bypassPermissions`. Jika Claude masih menunggu, periksa mode Anda saat ini dan cara Anda memulai sesi:

169 

170* **Anda beralih ke mode lain**: tekan `Shift+Tab` hingga Anda kembali ke mode awal Anda

171* **Anda memulai dalam mode lain, atau memilih sesi dari daftar `claude --resume`**: jika [auto mode tersedia](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) bagi Anda, keluar, lalu jalankan `claude --continue --permission-mode auto` dengan Code Mode aktif

172* **Anda meneruskan nama tool ke `--tools`**: mulai lagi dalam auto mode tanpa flag tersebut

173 

174## Pemecahan masalah

175 

176### Code Mode tidak dimulai

177 

178`Code Mode (experimental) isn't available` di dekat bagian atas sesi berarti Claude Code dimulai tanpa Code Mode. Alasannya mengikuti di baris yang sama, dan `/status` juga menampilkannya. Temukan alasannya di tabel ini, lakukan perubahan, dan mulai sesi baru. Untuk alasan yang tidak tercantum, periksa [persyaratan](#requirements).

179 

180| Alasan mengandung | Yang harus dilakukan |

181| :- | :- |

182| `it isn't open to your account yet` | Jika versi Anda lebih lama dari v2.1.323, [perbarui](#try-code-mode). Jika tidak, periksa koneksi jaringan Anda dan mulai lagi. Jika alasan tersebut tetap muncul, coba lagi di hari lain |

183| `it only works with the Anthropic API` | Hapus pengaturan yang merutekan permintaan melalui penyedia cloud, gateway, atau `ANTHROPIC_BASE_URL` kustom |

184| `it doesn't work with an API key helper` | Hapus `apiKeyHelper`, `ANTHROPIC_AUTH_TOKEN`, dan header `Authorization` atau `X-Api-Key` apa pun di `ANTHROPIC_CUSTOM_HEADERS`. Lalu masuk atau atur `ANTHROPIC_API_KEY` |

185| `it only works with Opus 5.5, Sonnet 5.5 and later models` | Mulai dengan [model yang didukung](#requirements), misalnya dengan `--model opus`. Haiku 5.5 dan Fable 5.2 juga berfungsi |

186| `it doesn't work in background jobs` | Mulai di latar depan, tanpa `--remote-control` |

187| `it needs settings that Claude Code downloads from Anthropic` | Hapus pengaturan variabel yang [menonaktifkan pengambilan feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), seperti `DISABLE_TELEMETRY` |

188| `OpenTelemetry is on` | Hapus pengaturan `CLAUDE_CODE_ENABLE_TELEMETRY` dan `ENABLE_BETA_TRACING_DETAILED` jika Anda dapat bekerja tanpa [ekspor OpenTelemetry](https://code.claude.com/docs/id/monitoring-usage.md) |

189| `it doesn't yet work with an installed mod` | Nonaktifkan [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang memeriksa panggilan tool |

190| `it can't be used together with agent teams yet` | Hapus pengaturan `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` |

191| `this launch's tool options` | Mulai tanpa `--restricted`, tambahkan `REPL` ke `--tools`, dan hapus `REPL` dari `--disallowedTools` dan aturan `deny` Anda |

192| `couldn't save your answer` | Jadikan `~/.claude.json` dapat ditulis |

193| `your organization's settings don't allow it` | Tanyakan kepada administrator Anda tentang [pengaturan terkelola](#block-code-mode-for-your-organization) |

194 

195Jika Anda tidak melihat baris apa pun tentang Code Mode, jalankan `claude --version`. Jika versi Anda lebih lama dari v2.1.323, lakukan pembaruan. Lalu pastikan `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` bernilai `1` di shell atau pengaturan pengguna Anda, dan hapus `0` apa pun dari tempat-tempat tersebut dan dari file `--settings` mana pun.

196 

197### Permintaan izin dengan hitung mundur

198 

199Ketika Claude memulai kode tambahan dalam auto mode saat kode sebelumnya masih berjalan, kode sebelumnya kehilangan tinjauan pengklasifikasinya. Claude Code kemudian menanyakan kepada Anda tentang sisa panggilan kode sebelumnya yang memerlukan tinjauan. Tanpa IDE yang terhubung, permintaan izin tersebut menampilkan hitung mundur:

200 

201```text theme={null}

202Claude Code will automatically block this request in 1:59, to avoid holding up an unattended session

203```

204 

205Jawab sebelum hitung mundur berakhir. Jika tidak, panggilan tersebut ditolak, dan panggilan berikutnya yang akan menampilkan hitung mundur ditolak tanpa permintaan izin. Untuk melihat permintaan izin lagi, kirim pesan kepada Claude.

206 

207### Panggilan tool ditolak oleh hook

208 

209Jika Claude melaporkan panggilan tool yang ditolak, mintalah teks errornya. Error berikut berarti hook `PreToolUse` tidak memberikan keputusan, yang menolak panggilan tersebut bahkan ketika [`onFailure`](https://code.claude.com/docs/id/hooks#block-the-action-when-a-hook-fails) tidak diatur:

210 

211* **`the hook failed`**: pada panggilan dari kode Claude, hook Anda tidak dapat dimulai, dihentikan paksa, keluar dengan kode 126, 127, atau kode di atas 128, atau mengembalikan error HTTP atau output yang tidak valid. Perbaiki hook tersebut

212* **`the hook did not finish`**: hook Anda mengalami timeout pada panggilan dari kode Claude, atau pada panggilan tool lainnya setelah Claude menjalankan kode dalam sesi tersebut. Naikkan [`timeout`](https://code.claude.com/docs/id/hooks#common-fields) hook tersebut

213 

214Untuk membiarkan panggilan tetap berjalan ketika hook `command` atau `http` gagal atau mengalami timeout, atur `"onFailure": "continue"` pada hook tersebut. Jika hook `command` keluar dengan kode biasa seperti 1, panggilan tetap berjalan kecuali jika Anda mengatur `"onFailure": "block"`.

215 

216### Output kode ditahan oleh hook

217 

218Jika Claude melaporkan alasan pemblokiran dari hook di tempat yang seharusnya berisi output dari kode Claude, periksa hook [`UserPromptSubmit`](https://code.claude.com/docs/id/hooks#userpromptsubmit) Anda. Ketika [kode dapat berjalan di latar belakang](#long-running-code), hook `command`, `http`, dan `mcp_tool` pada event tersebut juga berjalan pada output kode. Untuk membiarkan output lolos, ubah hook tersebut agar tidak memblokir ketika `source` dalam inputnya adalah `poll_event`.

219 

220## Sumber daya terkait

221 

222* [Mode izin](https://code.claude.com/docs/id/permission-modes.md): bandingkan auto mode dengan mode yang meminta izin Anda

223* [Referensi hooks](https://code.claude.com/docs/id/hooks.md): tulis hook `PreToolUse` dan `UserPromptSubmit`

224* [Pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md): terapkan satu konfigurasi di seluruh organisasi

commands.md +3 −5

Details

35Tabel di bawah mencantumkan semua perintah yang disertakan dalam Claude Code. Sebagian besar adalah perintah bawaan yang perilakunya dikodekan ke dalam CLI. Dua jenis entri ditandai:35Tabel di bawah mencantumkan semua perintah yang disertakan dalam Claude Code. Sebagian besar adalah perintah bawaan yang perilakunya dikodekan ke dalam CLI. Dua jenis entri ditandai:

36 36 

37* **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills)**: sebuah skill bawaan. Ini bekerja seperti skill yang Anda tulis sendiri: prompt yang diberikan kepada Claude.37* **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills)**: sebuah skill bawaan. Ini bekerja seperti skill yang Anda tulis sendiri: prompt yang diberikan kepada Claude.

38 * `/verify` berjalan hanya ketika Anda menjalankannya.

39* **[Workflow](https://code.claude.com/docs/id/workflows.md#bundled-workflows)**: sebuah [dynamic workflow](https://code.claude.com/docs/id/workflows.md) bawaan yang menyebarkan pekerjaan di banyak subagent dan berjalan di latar belakang.38* **[Workflow](https://code.claude.com/docs/id/workflows.md#bundled-workflows)**: sebuah [dynamic workflow](https://code.claude.com/docs/id/workflows.md) bawaan yang menyebarkan pekerjaan di banyak subagent dan berjalan di latar belakang.

40 * `/deep-research` berjalan hanya ketika Anda menjalankannya.

41 39 

42Untuk menambahkan perintah Anda sendiri, lihat [skills](https://code.claude.com/docs/id/skills.md).40Untuk menambahkan perintah Anda sendiri, lihat [skills](https://code.claude.com/docs/id/skills.md).

43 41 


149| `/stats` | Alias untuk `/usage`. Membuka di tab Stats |147| `/stats` | Alias untuk `/usage`. Membuka di tab Stats |

150| `/status` | Buka antarmuka Pengaturan di tab Status, menampilkan versi, model, akun, dan konektivitas. Baris `Session kind` berisi `background job · attached` atau `background job · unattended` dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), tergantung pada apakah terminal terlampir, dan `interactive` dalam sesi lainnya. Sebelum v2.1.221, `/status` tidak menampilkan baris ini. Bekerja saat Claude merespons |148| `/status` | Buka antarmuka Pengaturan di tab Status, menampilkan versi, model, akun, dan konektivitas. Baris `Session kind` berisi `background job · attached` atau `background job · unattended` dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), tergantung pada apakah terminal terlampir, dan `interactive` dalam sesi lainnya. Sebelum v2.1.221, `/status` tidak menampilkan baris ini. Bekerja saat Claude merespons |

151| `/statusline` | Konfigurasi [baris status](https://code.claude.com/docs/id/statusline.md) Claude Code. Jelaskan apa yang Anda inginkan, atau jalankan tanpa argumen untuk auto-konfigurasi dari prompt shell Anda |149| `/statusline` | Konfigurasi [baris status](https://code.claude.com/docs/id/statusline.md) Claude Code. Jelaskan apa yang Anda inginkan, atau jalankan tanpa argumen untuk auto-konfigurasi dari prompt shell Anda |

152| `/stickers` | Pesan stiker Claude Code |150| `/stickers` | Periksa ketersediaan stiker Claude Code |

153| `/stop` | Hentikan [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang sedang Anda lampirkan, atau sesi yang Anda kirimi perintah ini sebagai [balasan peek](https://code.claude.com/docs/id/agent-view.md#peek-and-reply); transkrip dan worktree apa pun disimpan. Untuk melepaskan tanpa menghentikan, gunakan `/exit` atau tekan `←` |151| `/stop` | Hentikan [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang sedang Anda lampirkan, atau sesi yang Anda kirimi perintah ini sebagai [balasan peek](https://code.claude.com/docs/id/agent-view.md#peek-and-reply); transkrip dan worktree apa pun disimpan. Untuk melepaskan tanpa menghentikan, gunakan `/exit` atau tekan `←` |

154| `/subtask <task>` | Spawn [subagent fork](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation): subagent latar belakang yang mewarisi percakapan lengkap dan mengerjakan tugas saat Anda terus bekerja. Hasilnya kembali ke percakapan ini ketika selesai. Untuk menyalin percakapan ke sesi latar belakang terpisah sebagai gantinya, gunakan `/fork`. Ketika [tampilan agent dimatikan](https://code.claude.com/docs/id/agent-view.md#turn-off-agent-view), `/subtask` tidak tersedia dan `/fork` memulai subagent fork sebagai gantinya |152| `/subtask <task>` | Spawn [subagent fork](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation): subagent latar belakang yang mewarisi percakapan lengkap dan mengerjakan tugas saat Anda terus bekerja. Hasilnya kembali ke percakapan ini ketika selesai. Untuk menyalin percakapan ke sesi latar belakang terpisah sebagai gantinya, gunakan `/fork`. Ketika [tampilan agent dimatikan](https://code.claude.com/docs/id/agent-view.md#turn-off-agent-view), `/subtask` tidak tersedia dan `/fork` memulai subagent fork sebagai gantinya |

155| `/tasks` | Lihat dan kelola pekerjaan latar belakang dalam sesi saat ini, termasuk subagent yang telah selesai. Juga tersedia sebagai `/bashes` |153| `/tasks` | Lihat dan kelola pekerjaan latar belakang dalam sesi saat ini, termasuk subagent yang telah selesai. Juga tersedia sebagai `/bashes` |


161| `/ultraplan <prompt>` | Dihapus. Gunakan [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) sebagai gantinya. Sebelumnya mengirim tugas perencanaan ke [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) untuk ditinjau di browser Anda |159| `/ultraplan <prompt>` | Dihapus. Gunakan [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) sebagai gantinya. Sebelumnya mengirim tugas perencanaan ke [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) untuk ditinjau di browser Anda |

162| `/ultrareview [PR or branch]` | Jalankan code review mendalam multi-agent dalam sandbox cloud dengan [ultrareview](https://code.claude.com/docs/id/ultrareview.md). Berikan referensi PR untuk meninjau pull request itu, atau branch dasar atau commit untuk mengubah basis perbandingan. Invokasi yang disukai adalah `/code-review ultra`, dan `/ultrareview` adalah alias. Mencakup 3 eksekusi gratis di Pro, Max, dan Ultra, kemudian memerlukan [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |160| `/ultrareview [PR or branch]` | Jalankan code review mendalam multi-agent dalam sandbox cloud dengan [ultrareview](https://code.claude.com/docs/id/ultrareview.md). Berikan referensi PR untuk meninjau pull request itu, atau branch dasar atau commit untuk mengubah basis perbandingan. Invokasi yang disukai adalah `/code-review ultra`, dan `/ultrareview` adalah alias. Mencakup 3 eksekusi gratis di Pro, Max, dan Ultra, kemudian memerlukan [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

163| `/update-config [request]` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Jelaskan perubahan pengaturan, seperti mengizinkan perintah, menetapkan environment variable, atau menambahkan [hook](https://code.claude.com/docs/id/hooks.md), dan Claude mengedit file [`settings.json`](https://code.claude.com/docs/id/settings) yang cocok. Untuk opsi seperti tema dan model, gunakan `/config` sebagai gantinya |161| `/update-config [request]` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Jelaskan perubahan pengaturan, seperti mengizinkan perintah, menetapkan environment variable, atau menambahkan [hook](https://code.claude.com/docs/id/hooks.md), dan Claude mengedit file [`settings.json`](https://code.claude.com/docs/id/settings) yang cocok. Untuk opsi seperti tema dan model, gunakan `/config` sebagai gantinya |

164| `/upgrade` | Buka halaman upgrade di browser Anda untuk beralih ke tingkat paket yang lebih tinggi. Ketika browser gagal membuka, perintah menampilkan prompt masuk tanpa mencetak URL |162| `/upgrade` | Buka halaman upgrade di browser Anda untuk beralih ke tingkat paket yang lebih tinggi. Ketika tidak ada browser yang dapat membuka halaman, misalnya melalui SSH, perintah mencetak URL halaman di atas prompt masuknya. Mencetak URL memerlukan Claude Code v2.1.323 atau lebih baru |

165| `/usage` | Tampilkan biaya sesi, batas penggunaan paket, dan statistik aktivitas. Pada paket Pro, Max, Ultra, Team, atau Enterprise, mencakup [rincian apa yang dihitung terhadap batas paket Anda](https://code.claude.com/docs/id/costs.md#plan-usage-breakdown). Di belakang gateway aplikasi Claude yang melacak pengeluaran, menampilkan [pengeluaran Anda melalui gateway](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md#usage-warnings-in-claude-code). `/cost` dan `/stats` adalah alias |163| `/usage` | Tampilkan biaya sesi, batas penggunaan paket, dan statistik aktivitas. Pada paket Pro, Max, Ultra, Team, atau Enterprise, mencakup [rincian apa yang dihitung terhadap batas paket Anda](https://code.claude.com/docs/id/costs.md#plan-usage-breakdown). Di belakang gateway aplikasi Claude yang melacak pengeluaran, menampilkan [pengeluaran Anda melalui gateway](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits.md#usage-warnings-in-claude-code). `/cost` dan `/stats` adalah alias |

166| `/usage-credits` | Konfigurasi kredit penggunaan, atau minta dari admin Anda, ketika Anda mencapai batas. Membuka [pengaturan penagihan kredit penggunaan](https://code.claude.com/docs/id/costs.md#add-usage-credits-to-your-subscription) Anda di browser, kecuali anggota Team dan Enterprise tanpa akses penagihan malah mengirim permintaan kredit penggunaan ke admin mereka dari CLI, setelah mengonfirmasi dalam dialog bahwa permintaan memberi tahu admin mereka. Ketika tidak ada browser yang dapat membuka halaman penagihan, misalnya melalui SSH, perintah mencetak URL untuk dikunjungi sebagai gantinya; ini memerlukan Claude Code v2.1.205 atau lebih baru, dan versi sebelumnya tidak menunjukkan apa pun dalam kasus itu. Sebelumnya `/extra-usage` |164| `/usage-credits` | Konfigurasi kredit penggunaan, atau minta dari admin Anda, ketika Anda mencapai batas. Membuka [pengaturan penagihan kredit penggunaan](https://code.claude.com/docs/id/costs.md#add-usage-credits-to-your-subscription) Anda di browser. Anggota Team dan Enterprise tanpa akses penagihan malah mengirim permintaan kredit penggunaan ke admin mereka dari CLI. Di terminal tempat tidak ada browser yang dapat membuka halaman, misalnya melalui SSH, perintah mencetak URL. Mencetaknya memerlukan Claude Code v2.1.205 atau lebih baru. Sebelumnya `/extra-usage` |

167| `/verify` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Konfirmasi perubahan kode melakukan apa yang seharusnya dengan mem-build aplikasi proyek Anda, menjalankannya, dan mengamati hasilnya, daripada mengandalkan tes atau pemeriksaan tipe. Lihat [Jalankan dan verifikasi aplikasi Anda](https://code.claude.com/docs/id/skills.md#run-and-verify-your-app) |165| `/verify` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Konfirmasi perubahan kode melakukan apa yang seharusnya dengan mem-build aplikasi proyek Anda, menjalankannya, dan mengamati hasilnya, daripada mengandalkan tes atau pemeriksaan tipe. Lihat [Jalankan dan verifikasi aplikasi Anda](https://code.claude.com/docs/id/skills.md#run-and-verify-your-app) |

168| `/vim` | Dihapus di v2.1.92. Untuk beralih antara mode pengeditan Vim dan Normal, gunakan `/config` → Editor mode |166| `/vim` | Dihapus di v2.1.92. Untuk beralih antara mode pengeditan Vim dan Normal, gunakan `/config` → Editor mode |

169| `/voice [hold\|tap\|off]` | Alihkan [dikte suara](https://code.claude.com/docs/id/voice-dictation.md), atau aktifkan dalam mode spesifik. Memerlukan akun Claude.ai |167| `/voice [hold\|tap\|off]` | Alihkan [dikte suara](https://code.claude.com/docs/id/voice-dictation.md), atau aktifkan dalam mode spesifik. Memerlukan akun Claude.ai |

desktop.md +0 −4

Details

2261 2261 

2262Aplikasi Desktop memuat MCP servers dari `claude_desktop_config.json` ke dalam sesi tab Code lokal, bersama dengan servers dari `~/.claude.json` dan `.mcp.json`. Server yang Anda tentukan di `claude_desktop_config.json` tersedia di surface chat Desktop dan sesi tab Code lokal.2262Aplikasi Desktop memuat MCP servers dari `claude_desktop_config.json` ke dalam sesi tab Code lokal, bersama dengan servers dari `~/.claude.json` dan `.mcp.json`. Server yang Anda tentukan di `claude_desktop_config.json` tersedia di surface chat Desktop dan sesi tab Code lokal.

2263 2263 

2264Jika Anda menentukan nama server yang sama di `claude_desktop_config.json` dan di `~/.claude.json` atau `.mcp.json`, tab Code dalam sesi lokal terhubung sekali dan menggunakan definisi `claude_desktop_config.json`.

2265 

2266Aplikasi juga mengirimkan ulang stdio servers dari `~/.claude.json` ke CLI yang tertanam dalam sesi lokal. Ketika tingkat atas `~/.claude.json` (cakupan pengguna) dan `.mcp.json` menentukan nama stdio server yang sama, tab Code menggunakan definisi `~/.claude.json`, menyimpang dari [hierarki cakupan](https://code.claude.com/docs/id/mcp.md#scope-hierarchy-and-precedence) CLI.

2267 

2268> [!NOTE]2264> [!NOTE]

2269>2265>

2270> CLI mandiri tidak membaca `claude_desktop_config.json`. Di macOS dan WSL, jalankan `claude mcp add-from-claude-desktop` untuk menyalin servers tersebut ke dalam `~/.claude.json`. Lihat [Impor MCP servers dari Claude Desktop](https://code.claude.com/docs/id/mcp.md#import-mcp-servers-from-claude-desktop) untuk alur impor dan opsi cakupan.2266> CLI mandiri tidak membaca `claude_desktop_config.json`. Di macOS dan WSL, jalankan `claude mcp add-from-claude-desktop` untuk menyalin servers tersebut ke dalam `~/.claude.json`. Lihat [Impor MCP servers dari Claude Desktop](https://code.claude.com/docs/id/mcp.md#import-mcp-servers-from-claude-desktop) untuk alur impor dan opsi cakupan.

Details

71 71 

72Luncurkan **Claude** dari peluncur aplikasi Anda, atau jalankan `claude-desktop` dari terminal, dan masuk dengan akun Anthropic Anda.72Luncurkan **Claude** dari peluncur aplikasi Anda, atau jalankan `claude-desktop` dari terminal, dan masuk dengan akun Anthropic Anda.

73 73 

74Aplikasi Linux masuk dengan cara yang sama seperti di macOS dan Windows: dengan langganan claude.ai, atau melalui SSO organisasi Anda. Untuk autentikasi kunci API, gunakan [CLI](https://code.claude.com/docs/id/quickstart.md). Untuk menggunakan Desktop dengan Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, atau gateway LLM sebagai gantinya, lihat [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview). Untuk server proxy dan otoritas sertifikat kustom dalam deployment tersebut, lihat [konfigurasi jaringan](https://code.claude.com/docs/id/network-config.md).74Aplikasi Linux masuk dengan cara yang sama seperti di macOS dan Windows: dengan langganan claude.ai, atau melalui SSO organisasi Anda. Untuk menggunakan Desktop dengan kunci API Claude, Amazon Bedrock, Agent Platform Google Cloud, Microsoft Foundry, atau gateway LLM sebagai gantinya, lihat [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview). Untuk server proxy dan otoritas sertifikat kustom dalam deployment tersebut, lihat [konfigurasi jaringan](https://code.claude.com/docs/id/network-config.md).

75 75 

76### Instal dari file yang diunduh76### Instal dari file yang diunduh

77 77 

Details

83 83 

84**8. Pilih mode izin dan model**84**8. Pilih mode izin dan model**

85 85 

86Di toolbar kotak instruksi, pilih [mode izin](#permissions-for-scheduled-tasks) dan model. Jika Anda membiarkannya tidak berubah, eksekusi menggunakan pengaturan Claude Code Anda dan model default.86Di toolbar kotak instruksi, pilih [mode izin](#permissions-for-scheduled-tasks) dan model.

87 

88* **Mode izin**: jika Anda membiarkannya tidak berubah, eksekusi menggunakan pengaturan Claude Code Anda.

89* **Model**: jika menu model bertuliskan **Default · Set by admin** dan Anda tidak memilih model lain, eksekusi menggunakan model yang ditetapkan organisasi Anda di [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md). [Eksekusi susulan](#missed-runs) yang dimulai saat aplikasi dibuka dapat menggunakan [default runtime untuk akun Anda](https://code.claude.com/docs/id/model-config.md#default-model-setting) sebagai gantinya.

87 90 

88**9. Buat tugas**91**9. Buat tugas**

89 92 

90Klik **Create**. Jika Anda belum mempercayai folder tersebut, Desktop akan meminta Anda untuk mempercayainya pada tahap ini. Halaman detail tugas terbuka.93Klik **Create**. Jika Anda belum mempercayai folder tersebut, Desktop akan meminta Anda untuk mempercayainya pada tahap ini. Halaman detail tugas terbuka.

91 94 

95Untuk melihat model mana yang diwakili oleh **Default · Set by admin**, klik **Run now** di halaman detail untuk langsung menjalankan tugas. Kemudian [buka sesi eksekusi tersebut](#find-a-runs-session), tempat baris di bawah kotak prompt menampilkan nama model.

96 

92Di halaman detail, klik ikon pensil untuk membuka [formulir **Edit**](#manage-scheduled-tasks). Di sana Anda dapat mengubah **Description** yang diisi Desktop dari instruksi Anda, memilih **Worktree**, atau mengubah jadwal menjadi **Manual** atau **Custom**.97Di halaman detail, klik ikon pensil untuk membuka [formulir **Edit**](#manage-scheduled-tasks). Di sana Anda dapat mengubah **Description** yang diisi Desktop dari instruksi Anda, memilih **Worktree**, atau mengubah jadwal menjadi **Manual** atau **Custom**.

93 98 

94Anda juga dapat membuat tugas dengan mendeskripsikan apa yang Anda inginkan dalam sesi apa pun. Misalnya, "siapkan code review harian yang berjalan setiap pagi jam 9" membuat tugas berulang. Permintaan seperti "ingatkan saya besok jam 3 sore untuk memeriksa deploy" membuat tugas satu kali yang menonaktifkan dirinya sendiri setelah dijalankan.99Anda juga dapat membuat tugas dengan mendeskripsikan apa yang Anda inginkan dalam sesi apa pun. Misalnya, "siapkan code review harian yang berjalan setiap pagi jam 9" membuat tugas berulang. Permintaan seperti "ingatkan saya besok jam 3 sore untuk memeriksa deploy" membuat tugas satu kali yang menonaktifkan dirinya sendiri setelah dijalankan.


181 186 

182Untuk memungkinkan tugas mengubah jadwal atau prompt-nya sendiri dengan tool MCP `update_scheduled_task`, klik **Run now** dan setujui panggilan tersebut setiap kali.187Untuk memungkinkan tugas mengubah jadwal atau prompt-nya sendiri dengan tool MCP `update_scheduled_task`, klik **Run now** dan setujui panggilan tersebut setiap kali.

183 188 

184Untuk mengedit prompt tugas di disk, buka `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (atau di bawah [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars) jika diatur). File menggunakan frontmatter YAML untuk `name` dan `description`, dengan prompt sebagai body. Perubahan berlaku pada run berikutnya. Schedule, folder, model, dan enabled state tidak ada dalam file ini: ubah melalui formulir Edit atau minta Claude.189Untuk mengedit prompt tugas di disk, buka `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (atau di bawah [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars) jika diatur). File menggunakan frontmatter YAML untuk `name` dan `description`, dengan prompt sebagai body. Perubahan berlaku pada run berikutnya. Schedule, folder, dan enabled state tidak ada dalam file ini: ubah melalui formulir Edit atau minta Claude.

185 190 

186## Sumber daya terkait191## Sumber daya terkait

187 192 

env-vars.md +7 −3

Details

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

212| `CLAUDE_CODE_AUTO_MODE_MODEL` | Menetapkan model untuk permintaan pengklasifikasi yang dikirim Claude Code dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode). Gunakan ID model lengkap seperti `claude-sonnet-4-6`. Untuk kasus ketika Claude Code mengabaikannya, lihat [Pilih model pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#choose-the-classifier-model). Memerlukan Claude Code v2.1.302 atau lebih baru |212| `CLAUDE_CODE_AUTO_MODE_MODEL` | Menetapkan model untuk permintaan pengklasifikasi yang dikirim Claude Code dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode). Gunakan ID model lengkap seperti `claude-sonnet-4-6`. Untuk kasus ketika Claude Code mengabaikannya, lihat [Pilih model pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#choose-the-classifier-model). Memerlukan Claude Code v2.1.302 atau lebih baru |

213| `CLAUDE_CODE_AUTO_MODE_SERVER` | Mengontrol apakah Claude Code meminta server untuk [meninjau tindakan auto mode](https://code.claude.com/docs/id/permission-modes.md#server-side-classifier-review). Tetapkan ke `0` untuk menggunakan permintaan pengklasifikasi milik Claude Code sendiri. 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 ditetapkan, dan sejak versi mana. Memerlukan Claude Code v2.1.271 atau lebih baru |213| `CLAUDE_CODE_AUTO_MODE_SERVER` | Mengontrol apakah Claude Code meminta server untuk [meninjau tindakan auto mode](https://code.claude.com/docs/id/permission-modes.md#server-side-classifier-review). Tetapkan ke `0` untuk menggunakan permintaan pengklasifikasi milik Claude Code sendiri. 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 ditetapkan, dan sejak versi mana. Memerlukan Claude Code v2.1.271 atau lebih baru |

214| `CLAUDE_CODE_AUTOMOUNT_ROOTS` | Folder root automount yang dilewati Claude Code saat mencari file seperti `CLAUDE.md`, skill, dan `.mcp.json` di folder-folder di atas direktori kerja Anda. Atur ini ketika pencarian tersebut menunggu automounter Anda. Pisahkan beberapa path dengan `:` di Unix atau `;` di Windows, dan berikan masing-masing sebagai path absolut tanpa symlink di dalamnya. Memerlukan Claude Code v2.1.323 atau lebih baru |

214| `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`](https://code.claude.com/docs/id/errors#aws-default-chain-credential-resolve-timed-out) (default: `60000`). Naikkan nilai ini ketika sebuah langkah dalam rantai Anda memang memerlukan waktu lebih lama, seperti proses masuk SSO berbasis browser dengan MFA melalui wrapper seperti `aws-vault`. Berlaku pada Amazon Bedrock, [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), dan [endpoint Mantle](https://code.claude.com/docs/id/amazon-bedrock.md#use-the-mantle-endpoint). Lihat [caching kredensial dan timeout resolusi](https://code.claude.com/docs/id/amazon-bedrock.md#credential-caching-and-resolution-timeout). Memerlukan Claude Code v2.1.207 atau lebih baru |215| `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`](https://code.claude.com/docs/id/errors#aws-default-chain-credential-resolve-timed-out) (default: `60000`). Naikkan nilai ini ketika sebuah langkah dalam rantai Anda memang memerlukan waktu lebih lama, seperti proses masuk SSO berbasis browser dengan MFA melalui wrapper seperti `aws-vault`. Berlaku pada Amazon Bedrock, [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), dan [endpoint Mantle](https://code.claude.com/docs/id/amazon-bedrock.md#use-the-mantle-endpoint). Lihat [caching kredensial dan timeout resolusi](https://code.claude.com/docs/id/amazon-bedrock.md#credential-caching-and-resolution-timeout). Memerlukan Claude Code v2.1.207 atau lebih baru |

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

216| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Tetapkan ke `0` agar 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 setelah akhir giliran selama pekerjaan latar belakang seperti agent latar belakang atau run [workflow](https://code.claude.com/docs/id/workflows.md) 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 dev server, tidak mempertahankan status berjalan. Default status berjalan dan opsi keluar `0` memerlukan Claude Code v2.1.269 atau lebih baru; pada versi sebelumnya, tetapkan `1` untuk mempertahankan status berjalan |217| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Tetapkan ke `0` agar 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 setelah akhir giliran selama pekerjaan latar belakang seperti agent latar belakang atau run [workflow](https://code.claude.com/docs/id/workflows.md) 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 dev server, tidak mempertahankan status berjalan. Default status berjalan dan opsi keluar `0` memerlukan Claude Code v2.1.269 atau lebih baru; pada versi sebelumnya, tetapkan `1` untuk mempertahankan status berjalan |


298| `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` | Atur ke `1` untuk [menjalankan perintah `rm` berbahaya tanpa permintaan izin](https://code.claude.com/docs/id/permission-modes#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) dalam mode `bypassPermissions`, yang menghapus permintaan izin keamanan untuk penghapusan destruktif. Bagian yang ditautkan mencantumkan di mana variabel ini tidak berpengaruh. [Atur di environment yang meluncurkan Claude Code](#set-variables-in-your-shell), karena Claude Code [mengabaikannya dalam blok `env` pengaturan](https://code.claude.com/docs/id/settings-reference#variables-claude-code-ignores-in-env). Memerlukan Claude Code v2.1.311 atau yang lebih baru |299| `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` | Atur ke `1` untuk [menjalankan perintah `rm` berbahaya tanpa permintaan izin](https://code.claude.com/docs/id/permission-modes#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) dalam mode `bypassPermissions`, yang menghapus permintaan izin keamanan untuk penghapusan destruktif. Bagian yang ditautkan mencantumkan di mana variabel ini tidak berpengaruh. [Atur di environment yang meluncurkan Claude Code](#set-variables-in-your-shell), karena Claude Code [mengabaikannya dalam blok `env` pengaturan](https://code.claude.com/docs/id/settings-reference#variables-claude-code-ignores-in-env). Memerlukan Claude Code v2.1.311 atau yang lebih baru |

299| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Waktu dalam milidetik untuk menunggu setelah loop kueri menjadi idle sebelum keluar secara otomatis. Berguna untuk alur kerja otomatis dan skrip yang menggunakan mode SDK |300| `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 |

300| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Atur ke `1` untuk mengaktifkan [tim agent](https://code.claude.com/docs/id/agent-teams.md). Tim agent bersifat eksperimental dan dinonaktifkan secara default |301| `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS` | Atur ke `1` untuk mengaktifkan [tim agent](https://code.claude.com/docs/id/agent-teams.md). Tim agent bersifat eksperimental dan dinonaktifkan secara default |

302| `CLAUDE_CODE_EXPERIMENTAL_CODE_MODE` | Atur ke `1` untuk memulai sesi dalam [Code Mode](https://code.claude.com/docs/id/code-mode.md), sebuah fitur eksperimental. Atur ke `0` untuk membiarkannya nonaktif, atau di pengaturan terkelola untuk [memblokirnya bagi organisasi](https://code.claude.com/docs/id/code-mode.md#block-code-mode-for-your-organization). Variabel ini [tidak diperhitungkan di setiap file pengaturan](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env). Lihat [persyaratan versi dan akun](https://code.claude.com/docs/id/code-mode.md#requirements) |

301| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke level teratas body permintaan model kecuali pada beberapa permintaan di luar percakapan, seperti pemeriksaan `/model`. 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](https://code.claude.com/docs/id/agent-view.md) 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 |303| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke level teratas body permintaan model kecuali pada beberapa permintaan di luar percakapan, seperti pemeriksaan `/model`. 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](https://code.claude.com/docs/id/agent-view.md) 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 |

302| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Menimpa batas token default untuk [pembacaan file](https://code.claude.com/docs/id/tools-reference.md#large-files), yaitu 25.000 token. Berguna ketika Anda perlu membaca file yang lebih besar secara penuh. Pembacaan yang dilakukan Claude dengan parameter `allow_large` dapat melampaui batas ini ketika context window masih memiliki ruang |304| `CLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS` | Menimpa batas token default untuk [pembacaan file](https://code.claude.com/docs/id/tools-reference.md#large-files), yaitu 25.000 token. Berguna ketika Anda perlu membaca file yang lebih besar secara penuh. Pembacaan yang dilakukan Claude dengan parameter `allow_large` dapat melampaui batas ini ketika context window masih memiliki ruang |

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


348| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Timeout dalam milidetik untuk mem-flush span OpenTelemetry yang tertunda (default: 5000). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |350| `CLAUDE_CODE_OTEL_FLUSH_TIMEOUT_MS` | Timeout dalam milidetik untuk mem-flush span OpenTelemetry yang tertunda (default: 5000). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |

349| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Interval untuk menyegarkan header OpenTelemetry dinamis dalam milidetik (default: 1740000 / 29 menit). Lihat [Header dinamis](https://code.claude.com/docs/id/monitoring-usage.md#dynamic-headers) |351| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | Interval untuk menyegarkan header OpenTelemetry dinamis dalam milidetik (default: 1740000 / 29 menit). Lihat [Header dinamis](https://code.claude.com/docs/id/monitoring-usage.md#dynamic-headers) |

350| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Timeout dalam milidetik bagi exporter OpenTelemetry untuk menyelesaikan proses saat shutdown (default: 2000). Naikkan jika metrik hilang saat keluar. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |352| `CLAUDE_CODE_OTEL_SHUTDOWN_TIMEOUT_MS` | Timeout dalam milidetik bagi exporter OpenTelemetry untuk menyelesaikan proses saat shutdown (default: 2000). Naikkan jika metrik hilang saat keluar. Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |

351| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | Penundaan awal dalam milidetik, sebagai pengganti default 500, untuk exponential backoff di antara [retry otomatis](https://code.claude.com/docs/id/errors.md#tune-retry-behavior) dari permintaan yang ditolak API dengan error overloaded `529`. Naikkan untuk menyebarkan retry dalam window yang lebih panjang ketika API berada pada kapasitas penuh. Berikan milidetik bulat dari 500 hingga 32000 dalam digit biasa; Claude Code memperlakukan nilai lain sebagai tidak diatur. Tidak berpengaruh ketika `CLAUDE_CODE_RETRY_WATCHDOG` diatur ke `1`, atau ketika permintaan yang ditolak dikirim dalam [fast mode](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Memerlukan Claude Code v2.1.292 atau yang lebih baru |353| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | Jeda awal dalam milidetik dari backoff antar-retry untuk permintaan yang ditolak API dengan error overloaded `529` (default: 500). Naikkan untuk menyebarkan retry dalam jendela yang lebih panjang ketika API sedang penuh kapasitas. Berikan milidetik bulat dari 500 hingga 32000 dalam digit biasa; Claude Code memperlakukan nilai lain sebagai tidak diatur. Lihat [kapan ini tidak berpengaruh](https://code.claude.com/docs/id/errors.md#tune-retry-behavior). Memerlukan Claude Code v2.1.292 atau lebih baru |

352| `CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS` | Batas atas dalam milidetik, sebagai pengganti default 32000, untuk exponential backoff di antara [retry otomatis](https://code.claude.com/docs/id/errors.md#tune-retry-behavior) dari permintaan yang ditolak API dengan error overloaded `529`. Naikkan agar retry berikutnya terus semakin berjauhan ketika API berada pada kapasitas penuh. Berikan milidetik bulat dari 32000 hingga 64000 dalam digit biasa; Claude Code memperlakukan nilai lain sebagai tidak diatur. Tidak berpengaruh ketika `CLAUDE_CODE_RETRY_WATCHDOG` diatur ke `1`, atau ketika permintaan yang ditolak dikirim dalam [fast mode](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Memerlukan Claude Code v2.1.296 atau yang lebih baru |354| `CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS` | Batas atas dalam milidetik pada backoff antar-retry untuk permintaan yang ditolak API dengan error overloaded `529` (default: 32000). Naikkan agar retry berikutnya terus semakin berjarak. Berikan milidetik bulat dari 32000 hingga 300000 dalam digit biasa; Claude Code memperlakukan nilai lain sebagai tidak diatur. Nilai di atas 64000 memerlukan v2.1.323 atau lebih baru. Lihat [kapan ini tidak berpengaruh](https://code.claude.com/docs/id/errors.md#tune-retry-behavior). Memerlukan Claude Code v2.1.296 atau lebih baru |

353| `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](https://code.claude.com/docs/id/setup.md#auto-updates) |355| `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](https://code.claude.com/docs/id/setup.md#auto-updates) |

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

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


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

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

372| `CLAUDE_CODE_RESTRICTED` | Atur ke `1` untuk memulai sesi dalam mode terbatas, sama seperti meneruskan [`--restricted`](https://code.claude.com/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 |374| `CLAUDE_CODE_RESTRICTED` | Atur ke `1` untuk memulai sesi dalam mode terbatas, sama seperti meneruskan [`--restricted`](https://code.claude.com/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 |

375| `CLAUDE_CODE_RESUME_HINT_COMMAND` | Dalam skrip wrapper yang memulai Claude Code, atur ini ke nama yang Anda ketik untuk menjalankan wrapper, seperti `mytool`. Sesi lokal kemudian mencetak `mytool --resume <session-id>` saat keluar sebagai pengganti `claude --resume <session-id>`. Claude Code mengabaikan nama yang tidak cocok dengan `^\w[\w-]*$`. Claude Code juga mengabaikan variabel ini di blok `env` file pengaturan. Memerlukan Claude Code v2.1.323 atau lebih baru |

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

374| `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 lama dari batas ini, Claude Code melewati resume 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` tidak menetapkan batas, kecuali bahwa beberapa giliran hanya dilanjutkan dalam enam jam sejak pesan terakhirnya, seperti giliran yang berakhir dengan error API. Nilai positif membatasi setiap giliran, termasuk giliran tersebut; nilai negatif atau non-numerik menerapkan batas satu jam. Skrip spawn untuk agent yang berjalan lama dapat mengatur ini agar restart terhadap transkrip lama tidak menjalankan ulang prompt yang sudah usang. Claude Code menetapkan batas satu jam sendiri ketika memulai ulang sesi [agent view](https://code.claude.com/docs/id/agent-view.md) yang crash yang mewarisi percakapannya dari sesi interaktif. Memerlukan Claude Code v2.1.211 atau yang lebih baru |377| `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 lama dari batas ini, Claude Code melewati resume 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` tidak menetapkan batas, kecuali bahwa beberapa giliran hanya dilanjutkan dalam enam jam sejak pesan terakhirnya, seperti giliran yang berakhir dengan error API. Nilai positif membatasi setiap giliran, termasuk giliran tersebut; nilai negatif atau non-numerik menerapkan batas satu jam. Skrip spawn untuk agent yang berjalan lama dapat mengatur ini agar restart terhadap transkrip lama tidak menjalankan ulang prompt yang sudah usang. Claude Code menetapkan batas satu jam sendiri ketika memulai ulang sesi [agent view](https://code.claude.com/docs/id/agent-view.md) yang crash yang mewarisi percakapannya dari sesi interaktif. Memerlukan Claude Code v2.1.211 atau yang lebih baru |

375| `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](https://code.claude.com/docs/id/hooks.md#defer-a-tool-call-for-later) dengan `-p`. Default ke `Continue from where you left off.`. String kosong menggunakan default |378| `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](https://code.claude.com/docs/id/hooks.md#defer-a-tool-call-for-later) dengan `-p`. Default ke `Continue from where you left off.`. String kosong menggunakan default |


405| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Atur ke `1` untuk menghapus kredensial dari environment subproses yang dimulai Claude Code, seperti perintah Bash, hook, dan server MCP stdio. Pembersihan ini mengenali kredensial dari nama variabel atau nilainya, dan membiarkan token GitHub serta pengaturan proxy tetap ada. Lihat [Apa yang dihapus oleh pembersihan environment subproses](#what-the-subprocess-environment-scrub-removes). `claude-code-action` mengatur ini secara otomatis ketika `allowed_non_write_users` dikonfigurasi |408| `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` | Atur ke `1` untuk menghapus kredensial dari environment subproses yang dimulai Claude Code, seperti perintah Bash, hook, dan server MCP stdio. Pembersihan ini mengenali kredensial dari nama variabel atau nilainya, dan membiarkan token GitHub serta pengaturan proxy tetap ada. Lihat [Apa yang dihapus oleh pembersihan environment subproses](#what-the-subprocess-environment-scrub-removes). `claude-code-action` mengatur ini secara otomatis ketika `allowed_non_write_users` dikonfigurasi |

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

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

408| `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 eksekusi tersebut dan menunggu daftarnya, hingga `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS`, sebelum menjalankan kueri pertama. Memerlukan autentikasi claude.ai. Sesi terminal tempat Anda masuk dengan akun claude.ai Anda [menyinkronkan skill ini](https://code.claude.com/docs/id/skills.md#where-synced-skills-load) tanpa variabel ini, jadi atur hanya ketika eksekusi `-p` memerlukan skill terkini Anda pada kueri pertamanya |411| `CLAUDE_CODE_SYNC_SKILLS` | Atur ke `1` agar Claude Code mengunduh skill yang diaktifkan untuk akun claude.ai Anda. Dalam mode non-interaktif dengan flag `-p`, Claude Code juga menunggu hingga `CLAUDE_CODE_SYNC_SKILLS_WAIT_TIMEOUT_MS` untuk daftar skill sebelum menjalankan kueri pertama. Memerlukan autentikasi claude.ai. Sesi terminal tempat Anda masuk dengan akun claude.ai Anda [menyinkronkan skill ini](https://code.claude.com/docs/id/skills.md#where-synced-skills-load) tanpa variabel ini. Dalam sesi interaktif, variabel ini memerlukan v2.1.323 atau lebih baru |

409| `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](https://code.claude.com/docs/id/agent-sdk/typescript.md#query-object) memuat ulang skill (default: 30000). Jika terlampaui, pemuatan ulang dilanjutkan dengan skill mana pun yang sudah tiba, dan unduhan yang tersisa diselesaikan di latar belakang |412| `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](https://code.claude.com/docs/id/agent-sdk/typescript.md#query-object) memuat ulang skill (default: 30000). Jika terlampaui, pemuatan ulang dilanjutkan dengan skill mana pun yang sudah tiba, dan unduhan yang tersisa diselesaikan di latar belakang |

410| `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). Jika terlampaui, kueri pertama berjalan dengan skill mana pun yang sudah tiba. Unduhan tetap diselesaikan di latar belakang, dan Claude menunggu unduhan suatu skill ketika memanggil skill tersebut |413| `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). Jika terlampaui, kueri pertama berjalan dengan skill mana pun yang sudah tiba. Unduhan tetap diselesaikan di latar belakang, dan Claude menunggu unduhan suatu skill ketika memanggil skill tersebut |

411| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Atur ke `false` untuk menonaktifkan syntax highlighting pada output diff. Berguna ketika warna mengganggu pengaturan terminal Anda. Untuk juga menonaktifkan highlighting pada blok kode dan pratinjau file, gunakan pengaturan [`syntaxHighlightingDisabled`](https://code.claude.com/docs/id/settings-reference#syntaxhighlightingdisabled) |414| `CLAUDE_CODE_SYNTAX_HIGHLIGHT` | Atur ke `false` untuk menonaktifkan syntax highlighting pada output diff. Berguna ketika warna mengganggu pengaturan terminal Anda. Untuk juga menonaktifkan highlighting pada blok kode dan pratinjau file, gunakan pengaturan [`syntaxHighlightingDisabled`](https://code.claude.com/docs/id/settings-reference#syntaxhighlightingdisabled) |


585* Mengaktifkan [mod You should know](https://code.claude.com/docs/id/interactive-mode.md#you-should-know-suggestions)588* Mengaktifkan [mod You should know](https://code.claude.com/docs/id/interactive-mode.md#you-should-know-suggestions)

586* Menggunakan [tool advisor](https://code.claude.com/docs/id/advisor.md#requirements), kecuali pada Claude Platform on AWS dengan Claude Code v2.1.300 atau yang lebih baru589* Menggunakan [tool advisor](https://code.claude.com/docs/id/advisor.md#requirements), kecuali pada Claude Platform on AWS dengan Claude Code v2.1.300 atau yang lebih baru

587* Menggunakan [tugas MCP](https://code.claude.com/docs/id/mcp.md#mcp-tasks-that-run-on-the-server)590* Menggunakan [tugas MCP](https://code.claude.com/docs/id/mcp.md#mcp-tasks-that-run-on-the-server)

591* Mengaktifkan [Code Mode](https://code.claude.com/docs/id/code-mode.md#requirements)

588* Membaca atau membalas [komentar pada artifact](https://code.claude.com/docs/id/artifacts.md#collect-comments-on-an-artifact)592* Membaca atau membalas [komentar pada artifact](https://code.claude.com/docs/id/artifacts.md#collect-comments-on-an-artifact)

589* Meminta Claude membaca [artifact publik milik organisasi lain](https://code.claude.com/docs/id/artifacts.md#read-an-artifact-shared-with-you)593* Meminta Claude membaca [artifact publik milik organisasi lain](https://code.claude.com/docs/id/artifacts.md#read-an-artifact-shared-with-you)

590* Mendapatkan [tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool) secara default untuk akun claude.ai dan Console di Windows dengan Git Bash terinstal; Claude Code merutekan perintah shell melalui Git Bash kecuali Anda mengatur `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Di Windows tanpa Git Bash, tool tersebut tetap aktif594* Mendapatkan [tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool) secara default untuk akun claude.ai dan Console di Windows dengan Git Bash terinstal; Claude Code merutekan perintah shell melalui Git Bash kecuali Anda mengatur `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Di Windows tanpa Git Bash, tool tersebut tetap aktif

errors.md +101 −16

Details

122| `A request to MCP server "<name>" was sent without your stored credentials` | [Authentication](#couldnt-read-the-stored-credentials-for-mcp-server) |122| `A request to MCP server "<name>" was sent without your stored credentials` | [Authentication](#couldnt-read-the-stored-credentials-for-mcp-server) |

123| `This server's URL is missing or not a valid URL, so sign-in can't start` | [Authentication](#mcp-server-url-is-missing-or-not-a-valid-url) |123| `This server's URL is missing or not a valid URL, so sign-in can't start` | [Authentication](#mcp-server-url-is-missing-or-not-a-valid-url) |

124| `Issuer mismatch in authorization response (RFC 9207)` | [Authentication](#issuer-mismatch-in-authorization-response) |124| `Issuer mismatch in authorization response (RFC 9207)` | [Authentication](#issuer-mismatch-in-authorization-response) |

125| `Stopped an OAuth request` | [Autentikasi](#stopped-an-oauth-request) |

125| `Refusing to send credentials to non-https token endpoint` / `<short-name> from the MCP SDK for <server-url>` | [Authentication](#refusing-to-send-credentials-to-non-https-token-endpoint) |126| `Refusing to send credentials to non-https token endpoint` / `<short-name> from the MCP SDK for <server-url>` | [Authentication](#refusing-to-send-credentials-to-non-https-token-endpoint) |

126| `Cloud gateway session expired — run /login to reconnect.` | [Authentication](#cloud-gateway-session-expired) |127| `Cloud gateway session expired — run /login to reconnect.` | [Authentication](#cloud-gateway-session-expired) |

127| `Cloud gateway <url> no longer accepts this session` | [Authentication](#cloud-gateway-session-expired) |128| `Cloud gateway <url> no longer accepts this session` | [Authentication](#cloud-gateway-session-expired) |


153| `403` dengan `GitHub GraphQL is not available from Claude Code sessions` dalam sesi cloud | [GitHub proxy](https://code.claude.com/docs/id/cloud-environments.md#github-proxy) |154| `403` dengan `GitHub GraphQL is not available from Claude Code sessions` dalam sesi cloud | [GitHub proxy](https://code.claude.com/docs/id/cloud-environments.md#github-proxy) |

154| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [Network](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |155| `The cloud environments service returned an empty response` / `The cloud environments service returned a response in an unexpected format` | [Network](#the-cloud-environments-service-returned-an-empty-or-unexpected-response) |

155| `Failed to fetch session from Sessions API: Failed to fetch session logs` | [Network](#failed-to-fetch-session-from-sessions-api) |156| `Failed to fetch session from Sessions API: Failed to fetch session logs` | [Network](#failed-to-fetch-session-from-sessions-api) |

157| `Couldn't load the history of cloud session` | [Jaringan](#couldnt-load-the-history-of-cloud-session) |

156| `Couldn't reconnect to your Remote Control session` | [Network](#couldnt-reconnect-to-your-remote-control-session) |158| `Couldn't reconnect to your Remote Control session` | [Network](#couldnt-reconnect-to-your-remote-control-session) |

157| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Network](#sessions-ended-while-this-machine-was-offline) |159| `N sessions ended while this machine was offline — the environment was cleaned up on the server and can't be resumed.` | [Network](#sessions-ended-while-this-machine-was-offline) |

158| `Couldn't share the transcript.` | [Network](#couldnt-share-the-transcript) |160| `Couldn't share the transcript.` | [Network](#couldnt-share-the-transcript) |


180| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [Request errors](#pdf-errors) |182| `PDF too large` / `PDF is password protected` / `pdftoppm is not installed` | [Request errors](#pdf-errors) |

181| `Extra inputs are not permitted` | [Request errors](#extra-inputs-are-not-permitted) |183| `Extra inputs are not permitted` | [Request errors](#extra-inputs-are-not-permitted) |

182| `API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid` / `Property keys should match pattern` | [Request errors](#tool-input-schema-is-invalid) |184| `API Error: 400 ... tools.N.custom.input_schema: JSON schema is invalid` / `Property keys should match pattern` | [Request errors](#tool-input-schema-is-invalid) |

185| `N tools left out` di samping server di `/mcp` / `Claude wasn't given N tools because the Anthropic API would reject their input schemas` | [Tool dengan skema input yang tidak valid](https://code.claude.com/docs/id/mcp.md#tools-with-invalid-input-schemas) |

183| `Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128` | [Request errors](#mcp-tool-name-over-128-characters) |186| `Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128` | [Request errors](#mcp-tool-name-over-128-characters) |

184| `tools.N.custom.name: String should have at most 128 characters` | [Request errors](#mcp-tool-name-over-128-characters) |187| `tools.N.custom.name: String should have at most 128 characters` | [Request errors](#mcp-tool-name-over-128-characters) |

185| `tool_use.name: String should have at most 200 characters` | [Request errors](#tool-use-name-over-200-characters) |188| `tool_use.name: String should have at most 200 characters` | [Request errors](#tool-use-name-over-200-characters) |


251| `Ultrareview did not start` | [Command-line errors](#ultrareview-did-not-start) |254| `Ultrareview did not start` | [Command-line errors](#ultrareview-did-not-start) |

252| `Remote Control did not start: "<question>" got no answer` | [Kesalahan command-line](#remote-control-did-not-start-got-no-answer) |255| `Remote Control did not start: "<question>" got no answer` | [Kesalahan command-line](#remote-control-did-not-start-got-no-answer) |

253| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Command-line errors](#not-carried-over-to-the-sessions-remote-control-starts) |256| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Command-line errors](#not-carried-over-to-the-sessions-remote-control-starts) |

257| `Remote Control did not start, because sessions would skip part or all of the --settings file` | [Kesalahan baris perintah](#remote-control-did-not-start-because-of-the-settings-file) |

258| `The settings file <file> has changed since Remote Control started, so this session did not start` | [Kesalahan baris perintah](#settings-file-changed-since-remote-control-started) |

254| `--sandbox is not supported by claude remote-control` / `--no-sandbox is not supported by claude remote-control` | [Command-line errors](#sandbox-is-not-supported-by-claude-remote-control) |259| `--sandbox is not supported by claude remote-control` / `--no-sandbox is not supported by claude remote-control` | [Command-line errors](#sandbox-is-not-supported-by-claude-remote-control) |

255| `` `claude import` is not yet available in this build `` | [Command-line errors](#claude-import-is-not-yet-available-in-this-build) |260| `` `claude import` is not yet available in this build `` | [Command-line errors](#claude-import-is-not-yet-available-in-this-build) |

256| `Could not read Claude Code config` | [Command-line errors](#could-not-read-claude-code-config) |261| `Could not read Claude Code config` | [Command-line errors](#could-not-read-claude-code-config) |


268| `No available ports for OAuth redirect` | [Command-line errors](#no-available-ports-for-oauth-redirect) |273| `No available ports for OAuth redirect` | [Command-line errors](#no-available-ports-for-oauth-redirect) |

269| `Shell command failed for pattern "..."`, dari `/security-review` atau skill apa pun yang menyuntikkan konteks dinamis | [Command-line errors](#security-review-fails-without-origin-head) |274| `Shell command failed for pattern "..."`, dari `/security-review` atau skill apa pun yang menyuntikkan konteks dinamis | [Command-line errors](#security-review-fails-without-origin-head) |

270| `Shell command permission check failed for pattern "..."`, dari skill yang menyuntikkan konteks dinamis | [Command-line errors](#security-review-fails-without-origin-head) |275| `Shell command permission check failed for pattern "..."`, dari skill yang menyuntikkan konteks dinamis | [Command-line errors](#security-review-fails-without-origin-head) |

276| ``Couldn't run `<command>` for <name>. A file named HEAD or .git in this folder or one above it may not be yours``, dari skill yang menyisipkan konteks dinamis | [Pemeriksaan izin pada perintah yang disisipkan](https://code.claude.com/docs/id/skills.md#permission-checks-on-injected-commands) |

271| ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [Command-line errors](#security-review-fails-without-origin-head) |277| ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found`` | [Command-line errors](#security-review-fails-without-origin-head) |

272| `No shell command in <name> was run, because the <tool> tool does not accept one of them` | [Command-line errors](#no-shell-command-was-run) |278| `No shell command in <name> was run, because the <tool> tool does not accept one of them` | [Command-line errors](#no-shell-command-was-run) |

273| `Input must be provided either through stdin or as a prompt argument when using --print` | [Command-line errors](#input-must-be-provided-when-using-print) |279| `Input must be provided either through stdin or as a prompt argument when using --print` | [Command-line errors](#input-must-be-provided-when-using-print) |


425| `Workspace not trusted.` saat memulai atau memulai ulang sesi latar belakang | [Background session errors](#workspace-not-trusted-when-dispatching-a-background-session) |431| `Workspace not trusted.` saat memulai atau memulai ulang sesi latar belakang | [Background session errors](#workspace-not-trusted-when-dispatching-a-background-session) |

426| `Claude Code is being updated by npm on this machine (still not runnable after 2 min, ...)` | [Background session errors](#eacces-when-starting-a-background-session) |432| `Claude Code is being updated by npm on this machine (still not runnable after 2 min, ...)` | [Background session errors](#eacces-when-starting-a-background-session) |

427| `Claude Code process exited with code N` | [Wrapper and IDE errors](#claude-code-process-exited-with-code-n) |433| `Claude Code process exited with code N` | [Wrapper and IDE errors](#claude-code-process-exited-with-code-n) |

434| `Subprocess initialization did not complete within 60000ms` | [Kesalahan wrapper dan IDE](#subprocess-initialization-did-not-complete-within-60000ms) |

435| `Claude Code did not finish starting` | [Kesalahan wrapper dan IDE](#subprocess-initialization-did-not-complete-within-60000ms) |

428| `The connection to Claude Code ended before this message completed` | [Wrapper and IDE errors](#the-connection-to-claude-code-ended-before-this-message-completed) |436| `The connection to Claude Code ended before this message completed` | [Wrapper and IDE errors](#the-connection-to-claude-code-ended-before-this-message-completed) |

429| `Could not locate the Claude CLI on PATH` | [Wrapper and IDE errors](#could-not-locate-the-claude-cli-on-path) |437| `Could not locate the Claude CLI on PATH` | [Wrapper and IDE errors](#could-not-locate-the-claude-cli-on-path) |

430| `The Claude Code program for this computer, the <build> build, could not be found` | [Kesalahan wrapper dan IDE](#the-claude-code-program-for-this-computer-could-not-be-found) |438| `The Claude Code program for this computer, the <build> build, could not be found` | [Kesalahan wrapper dan IDE](#the-claude-code-program-for-this-computer-could-not-be-found) |


560| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS` | tanpa batas | Dengan `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan, waktu terlama dalam milidetik yang ditunggu satu permintaan hingga [batas penggunaan](#youve-hit-your-session-limit) paket Anda, seperti batas sesi atau batas mingguan, direset. Ketika reset lebih jauh dari batas ini, permintaan langsung gagal, kecuali kredit penggunaan masih memiliki ruang atau API tidak dapat memeriksanya. Dalam kasus tersebut, permintaan dicoba ulang, dan gagal jika batas ini terlewati sebelum berhasil. Memerlukan Claude Code v2.1.301 atau lebih baru. |568| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_USAGE_LIMIT_WAIT_MS` | tanpa batas | Dengan `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan, waktu terlama dalam milidetik yang ditunggu satu permintaan hingga [batas penggunaan](#youve-hit-your-session-limit) paket Anda, seperti batas sesi atau batas mingguan, direset. Ketika reset lebih jauh dari batas ini, permintaan langsung gagal, kecuali kredit penggunaan masih memiliki ruang atau API tidak dapat memeriksanya. Dalam kasus tersebut, permintaan dicoba ulang, dan gagal jika batas ini terlewati sebelum berhasil. Memerlukan Claude Code v2.1.301 atau lebih baru. |

561| [`CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS`](https://code.claude.com/docs/id/env-vars) | unset | Interval minimum dalam milidetik di antara pemeriksaan apakah [batas penggunaan](#youve-hit-your-session-limit) sudah dicabut, sementara permintaan menunggu batas tersebut direset dengan `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan. Ketika pemeriksaan menemukan batas sudah dicabut, permintaan langsung dikirim. Berikan angka polos dari `60000` hingga `10800000`. Ketika tidak ditetapkan atau di luar rentang tersebut, tidak ada pemeriksaan yang dilakukan. Untuk kapan Claude Code melewati pemeriksaan ini, lihat [referensi environment variable](https://code.claude.com/docs/id/env-vars.md). Memerlukan Claude Code v2.1.305 atau lebih baru. |569| [`CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS`](https://code.claude.com/docs/id/env-vars) | unset | Interval minimum dalam milidetik di antara pemeriksaan apakah [batas penggunaan](#youve-hit-your-session-limit) sudah dicabut, sementara permintaan menunggu batas tersebut direset dengan `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan. Ketika pemeriksaan menemukan batas sudah dicabut, permintaan langsung dikirim. Berikan angka polos dari `60000` hingga `10800000`. Ketika tidak ditetapkan atau di luar rentang tersebut, tidak ada pemeriksaan yang dilakukan. Untuk kapan Claude Code melewati pemeriksaan ini, lihat [referensi environment variable](https://code.claude.com/docs/id/env-vars.md). Memerlukan Claude Code v2.1.305 atau lebih baru. |

562| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](https://code.claude.com/docs/id/env-vars) | 500 | Penundaan awal dalam milidetik dari backoff di antara retry permintaan yang ditolak API dengan kesalahan `529` overloaded. Naikkan, hingga 32000, untuk menyebarkan retry dalam rentang waktu yang lebih panjang ketika API sedang mencapai kapasitas. Tidak berpengaruh ketika `CLAUDE_CODE_RETRY_WATCHDOG` diatur ke `1`, atau ketika permintaan yang ditolak dikirim dalam [fast mode](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Memerlukan Claude Code v2.1.292 atau lebih baru. |570| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](https://code.claude.com/docs/id/env-vars) | 500 | Penundaan awal dalam milidetik dari backoff di antara retry permintaan yang ditolak API dengan kesalahan `529` overloaded. Naikkan, hingga 32000, untuk menyebarkan retry dalam rentang waktu yang lebih panjang ketika API sedang mencapai kapasitas. Tidak berpengaruh ketika `CLAUDE_CODE_RETRY_WATCHDOG` diatur ke `1`, atau ketika permintaan yang ditolak dikirim dalam [fast mode](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Memerlukan Claude Code v2.1.292 atau lebih baru. |

563| [`CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS`](https://code.claude.com/docs/id/env-vars) | 32000 | Batas atas dalam milidetik untuk backoff di antara retry permintaan yang ditolak API dengan kesalahan `529` overloaded. Naikkan, hingga 64000, agar jarak antar retry berikutnya terus bertambah ketika API sedang mencapai kapasitas. Tidak berpengaruh ketika `CLAUDE_CODE_RETRY_WATCHDOG` diatur ke `1`, atau ketika permintaan yang ditolak dikirim dalam [fast mode](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Memerlukan Claude Code v2.1.296 atau lebih baru. |571| [`CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS`](https://code.claude.com/docs/id/env-vars) | 32000 | Batas atas dalam milidetik untuk backoff di antara retry permintaan yang ditolak API dengan kesalahan `529` overloaded. Naikkan, hingga 300000, agar jarak antar retry berikutnya terus bertambah ketika API sedang mencapai kapasitas. Nilai di atas 64000 memerlukan v2.1.323 atau lebih baru. Tidak berpengaruh dalam kasus yang sama dengan `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`. Memerlukan Claude Code v2.1.296 atau lebih baru. |

564| [`API_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars) | 600000 | Waktu dalam milidetik yang dimiliki setiap percobaan permintaan untuk menerima response headers-nya. Ini tidak membatasi berapa lama respons streaming berjalan setelah itu. Naikkan untuk jaringan lambat atau proxy. Untuk cara ini membatasi first-byte deadline, lihat [No response from API](#no-response-from-api). |572| [`API_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars) | 600000 | Waktu dalam milidetik yang dimiliki setiap percobaan permintaan untuk menerima response headers-nya. Ini tidak membatasi berapa lama respons streaming berjalan setelah itu. Naikkan untuk jaringan lambat atau proxy. Untuk cara ini membatasi first-byte deadline, lihat [No response from API](#no-response-from-api). |

565| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](https://code.claude.com/docs/id/env-vars) | unset | Batas pengiriman ulang [permintaan non-streaming](#streaming-response-ended-before-any-complete-data-was-received) yang mengalami timeout. Saat batas tercapai, permintaan gagal. Respons dari Claude yang membutuhkan waktu lebih lama dari timeout untuk dihasilkan akan mengalami timeout lagi pada setiap pengiriman ulang, jadi tetapkan angka rendah seperti `0` agar gagal lebih cepat. Untuk timeout setiap percobaan, lihat [Berapa lama percobaan non-streaming menunggu](#how-long-a-non-streaming-attempt-waits). Memerlukan Claude Code v2.1.285 atau lebih baru. |573| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](https://code.claude.com/docs/id/env-vars) | unset | Batas pengiriman ulang [permintaan non-streaming](#streaming-response-ended-before-any-complete-data-was-received) yang mengalami timeout. Saat batas tercapai, permintaan gagal. Respons dari Claude yang membutuhkan waktu lebih lama dari timeout untuk dihasilkan akan mengalami timeout lagi pada setiap pengiriman ulang, jadi tetapkan angka rendah seperti `0` agar gagal lebih cepat. Untuk timeout setiap percobaan, lihat [Berapa lama percobaan non-streaming menunggu](#how-long-a-non-streaming-attempt-waits). Memerlukan Claude Code v2.1.285 atau lebih baru. |

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


825Panggilan berikutnya dalam respons Claude yang sama dapat ditolak dengan alasan ini:833Panggilan berikutnya dalam respons Claude yang sama dapat ditolak dengan alasan ini:

826 834 

827```text theme={null}835```text theme={null}

828another call in this response was changed by a hook after auto mode reviewed it, or could not be confirmed unchanged836another call in this response was changed after auto mode reviewed it, or could not be confirmed unchanged

829```837```

830 838 

831Claude kemudian dapat mengeluarkan kembali setiap panggilan yang ditolak agar server meninjaunya. Jika dialog izin terbuka, jawablah. Anda tidak perlu melakukan hal lain kecuali Claude menyatakan dalam balasannya bahwa auto mode tidak dapat memeriksa panggilan tersebut. Dalam hal itu, hentikan perubahan tersebut atau setujui panggilan sendiri, lalu minta Claude untuk mencoba panggilan itu lagi:839Claude kemudian dapat mengeluarkan kembali setiap panggilan yang ditolak agar server meninjaunya. Jika dialog izin terbuka, jawablah. Anda tidak perlu melakukan hal lain kecuali Claude menyatakan dalam balasannya bahwa auto mode tidak dapat memeriksa panggilan tersebut. Dalam hal itu, hentikan perubahan tersebut atau setujui panggilan sendiri, lalu minta Claude untuk mencoba panggilan itu lagi:


978 986 

979### You've hit your monthly spend limit987### You've hit your monthly spend limit

980 988 

981Penggunaan yang disertakan paket Anda tidak dapat menutupi permintaan ini, dan [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) yang sebaliknya akan membayarnya telah mencapai batas pengeluaran. Itu terjadi ketika salah satu jendela penggunaan paket Anda telah habis, atau ketika permintaan adalah permintaan yang hanya dibayar oleh kredit penggunaan, seperti permintaan ke model yang [bills to usage credits](https://code.claude.com/docs/id/model-config.md#fable-and-usage-credits). Pesan menyebutkan batas siapa yang memblokir Anda. Teks setelah `·` mengatakan cara meningkatkan batas itu, dan bervariasi dengan paket Anda dan apakah Anda mengelola penagihan:989Penggunaan yang disertakan paket Anda tidak dapat menutupi permintaan ini, dan [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) yang sebaliknya akan membayarnya telah mencapai batas pengeluaran. Paket Anda tidak dapat menutupi permintaan ketika salah satu jendela penggunaannya telah habis, atau ketika hanya kredit penggunaan yang membayar permintaan tersebut. Salah satu contohnya adalah permintaan ke model yang [menagih ke kredit penggunaan](https://code.claude.com/docs/id/model-config.md#fable-and-usage-credits).

990 

991Kata-kata sebelum `·` menyebutkan batas yang memblokir Anda, seperti batas pengeluaran bulanan org Anda, dan teks setelahnya mengatakan cara agar batas itu dinaikkan. Dalam sesi cloud atau di bawah [Remote Control](https://code.claude.com/docs/id/remote-control.md), teks itu tidak memberikan URL, dan pesan tentang `monthly spend limit` milik Anda sendiri tidak mengatakan cara menaikkannya. Sesi lain menampilkan bentuk seperti ini:

982 992 

983```text theme={null}993```text theme={null}

984You've hit your monthly spend limit · raise it at https://claude.ai/settings/usage?from=cc_cli_limit_message994You've hit your monthly spend limit · raise it at https://claude.ai/settings/usage?from=cc_cli_limit_message


1822 1832 

1823Sebelum v2.1.232, Claude Code menggunakan runtime v2 hanya dalam peluncuran bertahap atau ketika Anda mengatur `MCP_SDK_GENERATION=v2`.1833Sebelum v2.1.232, Claude Code menggunakan runtime v2 hanya dalam peluncuran bertahap atau ketika Anda mengatur `MCP_SDK_GENERATION=v2`.

1824 1834 

1835### Stopped an OAuth request

1836 

1837Pesan ini berarti Claude Code menghentikan [permintaan OAuth untuk server MCP](https://code.claude.com/docs/id/mcp.md#authenticate-with-remote-mcp-servers) karena endpoint OAuth mengalihkannya. Dalam kedua bentuk pesan, alamat pertama adalah alamat yang mengirimkan pengalihan:

1838 

1839```text theme={null}

1840Stopped an OAuth request, which can hold secrets: https://auth.example.com redirected it to https://other.example.com. Ask the owner of https://auth.example.com to remove that redirect.

1841Stopped an OAuth request: https://auth.example.com redirected it more than 5 times. Ask the owner of https://auth.example.com to fix those redirects.

1842```

1843 

1844**Yang harus dilakukan:**

1845 

1846* Minta siapa pun yang menjalankan alamat pertama, seperti operator server MCP, untuk menghapus atau memperbaiki pengalihan tersebut. Kemudian coba lagi dari `/mcp`.

1847 

1825### Refusing to send credentials to non-https token endpoint1848### Refusing to send credentials to non-https token endpoint

1826 1849 

1827Pada [runtime v2](https://code.claude.com/docs/id/mcp.md#mcp-client-runtimes), Claude Code mengirimkan permintaan token [OAuth MCP](https://code.claude.com/docs/id/mcp.md#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 keduanya, sehingga Claude Code berhenti sebelum mengirimkan permintaan. Hal itu terjadi setelah proses masuk browser, sehingga langkah browser berhasil terlebih dahulu, dan terjadi lagi setiap kali Claude Code me-refresh token server.1850Pada [runtime v2](https://code.claude.com/docs/id/mcp.md#mcp-client-runtimes), Claude Code mengirimkan permintaan token [OAuth MCP](https://code.claude.com/docs/id/mcp.md#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 keduanya, sehingga Claude Code berhenti sebelum mengirimkan permintaan. Hal itu terjadi setelah proses masuk browser, sehingga langkah browser berhasil terlebih dahulu, dan terjadi lagi setiap kali Claude Code me-refresh token server.


2207 2230 

2208### Host not allowed in a cloud session2231### Host not allowed in a cloud session

2209 2232 

2210Permintaan HTTP keluar dari sesi cloud atau tugas terjadwal cloud diblokir oleh kebijakan jaringan lingkungan.2233Dalam sesi cloud atau tugas terjadwal cloud, `403` atau kesalahan DNS seperti `ENOTFOUND` dapat berarti bahwa host yang diminta tidak ada dalam [allowlist lingkungan cloud](https://code.claude.com/docs/id/cloud-environments.md#access-levels). Untuk memastikannya, periksa host tersebut terhadap daftar itu. `403` dengan header ini memastikan pemblokiran, tetapi tidak setiap `403` dari permintaan yang diblokir memilikinya:

2211 2234 

2212```text theme={null}2235```text theme={null}

2213HTTP 4032236HTTP 403


2290 2313 

2291Sebelum v2.1.296, Claude Code tidak mencoba ulang pembacaan yang gagal, dan setelah satu kegagalan, Claude Code dapat membuka sesi dengan percakapan kosong dan melaporkan keberhasilan alih-alih mencetak pesan ini.2314Sebelum v2.1.296, Claude Code tidak mencoba ulang pembacaan yang gagal, dan setelah satu kegagalan, Claude Code dapat membuka sesi dengan percakapan kosong dan melaporkan keberhasilan alih-alih mencetak pesan ini.

2292 2315 

2316### Couldn't load the history of cloud session

2317 

2318Pesan ini berarti Claude Code menemukan [sesi cloud yang Anda minta untuk ditarik ke terminal Anda](https://code.claude.com/docs/id/claude-code-on-the-web.md#from-cloud-to-terminal), tetapi permintaan untuk riwayat percakapannya kembali dengan hasil tidak ditemukan:

2319 

2320```text theme={null}

2321Couldn't load the history of cloud session session_01HJKLMNOPQRSTUVWXYZ. Check it at https://claude.ai/code/session_01HJKLMNOPQRSTUVWXYZ?from=cli

2322```

2323 

2324**Yang harus dilakukan:**

2325 

2326* Buka tautan dalam pesan untuk memeriksa sesi di browser Anda. Jika sesi terbuka di sana dan teleport yang sama gagal dengan cara ini lagi, [laporkan masalahnya](#report-an-error).

2327 

2293### Couldn't reconnect to your Remote Control session2328### Couldn't reconnect to your Remote Control session

2294 2329 

2295```text theme={null}2330```text theme={null}


2565 2600 

2566Claude Code biasanya mengubah ukuran gambar besar secara otomatis. Error ini berarti gambar tidak dapat didekode atau diubah ukurannya agar sesuai dengan batas API.2601Claude Code biasanya mengubah ukuran gambar besar secara otomatis. Error ini berarti gambar tidak dapat didekode atau diubah ukurannya agar sesuai dengan batas API.

2567 2602 

2603Kesalahan yang Anda lihat dapat menyebutkan batas piksel yang berbeda, seperti `2576x2576px` di tempat contoh-contoh ini menyebutkan `2000x2000px`.

2604 

2568**Yang perlu dilakukan:**2605**Yang perlu dilakukan:**

2569 2606 

2570* Jika pesan meminta Anda mengonversi gambar, konversikan ke PNG, JPEG, GIF, atau WebP dan lampirkan lagi. Claude Code dapat memverifikasi dimensi untuk format-format ini dari header file, tanpa mendekode gambar.2607* Jika pesan meminta Anda mengonversi gambar, konversikan ke PNG, JPEG, GIF, atau WebP dan lampirkan lagi. Claude Code dapat memverifikasi dimensi untuk format-format ini dari header file, tanpa mendekode gambar.


2873* **Alasan yang ditulis hook**: hook PreModelSwitch memberikan alasan tersebut ketika [menolak pergantian atau meminta konfirmasi](https://code.claude.com/docs/id/hooks.md#premodelswitch-decision-control). Tangani apa yang dimintanya, atau pilih model yang diizinkan hook Anda.2910* **Alasan yang ditulis hook**: hook PreModelSwitch memberikan alasan tersebut ketika [menolak pergantian atau meminta konfirmasi](https://code.claude.com/docs/id/hooks.md#premodelswitch-decision-control). Tangani apa yang dimintanya, atau pilih model yang diizinkan hook Anda.

2874* **`PreModelSwitch hook <name> did not respond before its timeout`**: hook yang tidak menjawab sebelum [timeout](https://code.claude.com/docs/id/hooks.md#timeouts)-nya memblokir pergantian. Perbaiki perintah yang macet atau naikkan `timeout` hook tersebut, lalu beralih lagi.2911* **`PreModelSwitch hook <name> did not respond before its timeout`**: hook yang tidak menjawab sebelum [timeout](https://code.claude.com/docs/id/hooks.md#timeouts)-nya memblokir pergantian. Perbaiki perintah yang macet atau naikkan `timeout` hook tersebut, lalu beralih lagi.

2875* **`confirmation required, and this session cannot ask`**: sebuah hook menjawab `ask` tanpa alasan, dan permintaan kontrol tidak memiliki cara untuk menampilkan prompt konfirmasi. Perintah `/model` dalam [run `-p`](https://code.claude.com/docs/id/headless) melaporkan kondisi yang sama dengan `(run /model interactively to confirm)` setelah alasan. Lakukan pergantian dari sesi interaktif, atau ubah keputusan hook untuk model ini.2912* **`confirmation required, and this session cannot ask`**: sebuah hook menjawab `ask` tanpa alasan, dan permintaan kontrol tidak memiliki cara untuk menampilkan prompt konfirmasi. Perintah `/model` dalam [run `-p`](https://code.claude.com/docs/id/headless) melaporkan kondisi yang sama dengan `(run /model interactively to confirm)` setelah alasan. Lakukan pergantian dari sesi interaktif, atau ubah keputusan hook untuk model ini.

2876* **`so organization-managed PreModelSwitch hooks could not be checked`**: Claude Code tidak dapat mengetahui hook PreModelSwitch mana yang disediakan [plugin terkelola](https://code.claude.com/docs/id/settings-reference.md#enabledplugins) organisasi Anda, misalnya karena plugin terkelola gagal dimuat. Salah satu hook tersebut mungkin memblokir pergantian, sehingga Claude Code menolak alih-alih menerapkan pergantian tanpa pemeriksaan. Awal alasan menyebutkan apa yang gagal. Claude Code memeriksa ulang di setiap upaya pergantian, sehingga kegagalan yang sudah teratasi berhenti memblokir; jika terus gagal, jalankan `claude --debug` dan beralih lagi untuk menangkap detailnya, lalu perbaiki plugin atau minta admin Anda untuk memperbaikinya.2913* **`so organization-managed PreModelSwitch hooks could not be checked`**: Claude Code sebelum v2.1.323 menolak ketika tidak dapat mengetahui hook PreModelSwitch mana yang dikirimkan oleh [plugin terkelola](https://code.claude.com/docs/id/settings-reference.md#enabledplugins) Anda. Teks sebelum frasa ini menyebutkan apa yang gagal. Untuk menghentikan penolakan, perbarui Claude Code. Agar hook dari plugin yang gagal juga berjalan, perbaiki plugin tersebut atau tanyakan kepada admin Anda. Untuk detailnya, mulai `claude --debug` di shell Anda dan beralih model, lalu baca [log debug](https://code.claude.com/docs/id/hooks.md#debug-hooks).

2877* **`a PreModelSwitch hook failed before answering`** atau **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: run hook berakhir tanpa putusan, dan Claude Code tidak memperlakukannya sebagai persetujuan. Jalankan `claude --debug` untuk melihat apa yang gagal, lalu beralih lagi.2914* **`a PreModelSwitch hook failed before answering`** atau **`PreModelSwitch hooks were cancelled (the control stream closed) before answering`**: run hook berakhir tanpa putusan, dan Claude Code tidak memperlakukannya sebagai persetujuan. Jalankan `claude --debug` untuk melihat apa yang gagal, lalu beralih lagi.

2878 2915 

2879Sebelum v2.1.260, penolakan plugin terkelola berbunyi `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`. Claude Code mencoba ulang pemuatan plugin sekali lalu menolak pergantian berikutnya dalam sesi, bahkan ketika organisasi Anda tidak mengelola plugin apa pun. Restart sesi untuk menjalankan pemuatan plugin lagi pada versi-versi tersebut.2916Sebelum v2.1.260, penolakan plugin terkelola berbunyi `plugin hooks could not be loaded, so PreModelSwitch hooks could not be checked; see the debug log`. Claude Code mencoba ulang pemuatan plugin sekali lalu menolak pergantian berikutnya dalam sesi, bahkan ketika organisasi Anda tidak mengelola plugin apa pun. Restart sesi untuk menjalankan pemuatan plugin lagi pada versi-versi tersebut.

2880 2917 

2881### Couldn't save it as your default2918### Couldn't save it as your default

2882 2919 

2883Anda memilih model untuk disimpan sebagai default Anda, misalnya dengan `/model <name>` atau Enter di pemilih `/model`, dan Claude Code tidak dapat menulis pilihan tersebut ke file pengaturan pengguna Anda, `~/.claude/settings.json`. Pergantian itu sendiri diterapkan, sehingga sesi saat ini berjalan pada model yang Anda pilih, tetapi default Anda tidak berubah dan sesi berikutnya dimulai dengan nilai lama.2920Anda memilih model untuk disimpan sebagai default, misalnya dengan `/model <name>` atau `Enter` di pemilih `/model`, dan Claude Code tidak dapat menulis pilihan tersebut ke file pengaturan pengguna Anda, `~/.claude/settings.json`. Perpindahan itu sendiri diterapkan, sehingga sesi saat ini berjalan pada model yang Anda pilih, tetapi default Anda tidak berubah dan sesi berikutnya dimulai dengan nilai lama.

2884 2921 

2885```text theme={null}2922```text theme={null}

2886Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)2923Set model to Fable 5.1 for this session only · couldn't save it as your default: ~/.claude/settings.json can't be written (EROFS)


3499* **`Error: Workspace not trusted. <folder> is your home directory`**: karena kepercayaan untuk direktori home Anda tidak pernah disimpan, menjalankan `claude` di sana terlebih dahulu tidak dapat membantu. Jalankan `claude ultrareview` dari direktori proyek sebagai gantinya, setelah menjalankan `claude` di sana sekali untuk menerima dialog kepercayaan, atau tambahkan `--trust-workspace`.3536* **`Error: Workspace not trusted. <folder> is your home directory`**: karena kepercayaan untuk direktori home Anda tidak pernah disimpan, menjalankan `claude` di sana terlebih dahulu tidak dapat membantu. Jalankan `claude ultrareview` dari direktori proyek sebagai gantinya, setelah menjalankan `claude` di sana sekali untuk menerima dialog kepercayaan, atau tambahkan `--trust-workspace`.

3500* **`No answer in time.` diikuti `Error: Workspace not trusted`**: pertanyaan `Trust <folder>? [y/N]` tidak dijawab selama 5 menit. Jalankan `claude ultrareview` lagi dan jawab pertanyaan tersebut.3537* **`No answer in time.` diikuti `Error: Workspace not trusted`**: pertanyaan `Trust <folder>? [y/N]` tidak dijawab selama 5 menit. Jalankan `claude ultrareview` lagi dan jawab pertanyaan tersebut.

3501* **`Ultrareview did not start: <folder> is not trusted`**: Anda menolak pada pertanyaan `Trust <folder>? [y/N]`, misalnya dengan menjawab `n` atau menekan Enter. Untuk memulai review, jalankan `claude ultrareview` lagi dan jawab `y`.3538* **`Ultrareview did not start: <folder> is not trusted`**: Anda menolak pada pertanyaan `Trust <folder>? [y/N]`, misalnya dengan menjawab `n` atau menekan Enter. Untuk memulai review, jalankan `claude ultrareview` lagi dan jawab `y`.

3502* **``Ultrareview did not start: `--trust-workspace` takes no value``**: sesuatu selain flag mengikuti `--trust-workspace`, seperti nomor PR atau `false`. Jika Anda tidak memercayai folder tersebut, jangan sertakan flag ini. Untuk memercayainya pada eksekusi ini, letakkan nomor PR atau base branch sebelum flag: `claude ultrareview 1234 --trust-workspace`.3539* **``Ultrareview did not start: `--trust-workspace` takes no value``**: sesuatu selain flag mengikuti `--trust-workspace`, seperti nomor PR atau `false`. Jika Anda tidak memercayai folder tersebut, jangan sertakan flag itu. Untuk memercayainya untuk run ini, letakkan nomor PR atau base branch sebelum flag: `claude ultrareview 1234 --trust-workspace`.

3503 3540 

3504Sebelum v2.1.309, `claude ultrareview` tidak menerima `--trust-workspace`.3541Sebelum v2.1.309, `claude ultrareview` tidak menerima `--trust-workspace`.

3505 3542 


3522Anda memulai [Remote Control](https://code.claude.com/docs/id/remote-control.md) dengan flag `claude` global sebelum kata kerja `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 kata kerja tidak pernah mencapai sesi tersebut. Claude Code menolak untuk memulai, dengan menyebutkan flag tersebut:3559Anda memulai [Remote Control](https://code.claude.com/docs/id/remote-control.md) dengan flag `claude` global sebelum kata kerja `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 kata kerja tidak pernah mencapai sesi tersebut. Claude Code menolak untuk memulai, dengan menyebutkan flag tersebut:

3523 3560 

3524```text theme={null}3561```text theme={null}

3525Error: `--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`).3562Error: `--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`). Pass settings with `claude remote-control --settings <file>`.

3526```3563```

3527 3564 

3528Claude Code tidak menolak flag global yang aman untuk diabaikan, seperti `--verbose`, `--model`, atau `--session-id` atau `--plugin-dir` yang disisipkan oleh wrapper: Claude Code mengabaikannya dan Remote Control dimulai.3565Claude Code tidak menolak flag global yang aman untuk diabaikan, seperti `--verbose`, `--model`, atau `--session-id` atau `--plugin-dir` yang disisipkan oleh wrapper: Claude Code mengabaikannya dan Remote Control dimulai.


3536 3573 

3537Sebelum v2.1.248, `claude remote-control` tidak menerima flag-nya sendiri ketika flag global muncul lebih dulu, dan perintah gagal dengan kesalahan `unknown option`.3574Sebelum v2.1.248, `claude remote-control` tidak menerima flag-nya sendiri ketika flag global muncul lebih dulu, dan perintah gagal dengan kesalahan `unknown option`.

3538 3575 

3576### Remote Control did not start karena file `--settings`

3577 

3578File yang Anda teruskan ke [`claude remote-control --settings`](https://code.claude.com/docs/id/remote-control#start-a-remote-control-session) memiliki masalah:

3579 

3580```text theme={null}

3581Error: Remote Control did not start, because sessions would skip part or all of the --settings file ./rc-settings.json: Invalid or malformed JSON

3582```

3583 

3584**Yang harus dilakukan:**

3585 

3586* Perbaiki masalah yang disebutkan pesan, lalu jalankan perintah `claude remote-control` Anda lagi

3587 

3588### The settings file has changed since Remote Control started

3589 

3590Pesan ini di terminal yang menjalankan `claude remote-control` berarti sesi tidak akan dimulai dari file yang Anda teruskan ke [`--settings`](https://code.claude.com/docs/id/remote-control#start-a-remote-control-session) dalam keadaannya saat ini:

3591 

3592```text theme={null}

3593Session failed: Error: The settings file /path/to/settings.json has changed since Remote Control started, so this session did not start. Restart `claude remote-control` to use it as it is now.

3594```

3595 

3596**Yang harus dilakukan:**

3597 

3598* Untuk menggunakan file dalam keadaannya saat ini, hentikan `claude remote-control` dan jalankan perintah yang sama lagi. Untuk mengembalikan sesi yang sedang dilayaninya, lihat [Melanjutkan sesi setelah menghentikan server](https://code.claude.com/docs/id/remote-control.md#resume-sessions-after-stopping-the-server).

3599* Untuk mempertahankan pengaturan yang digunakan saat Remote Control dimulai, kembalikan isi file seperti semula, lalu jalankan perintah lagi jika `claude remote-control` telah keluar

3600 

3539### `--sandbox` or `--no-sandbox` is not supported by claude remote-control3601### `--sandbox` or `--no-sandbox` is not supported by claude remote-control

3540 3602 

3541Error ini berarti perintah yang memulai server [Remote Control](https://code.claude.com/docs/id/remote-control.md) Anda meneruskan `--sandbox` atau `--no-sandbox` setelah `remote-control`, dan `claude remote-control` tidak menerima kedua flag tersebut. Server keluar dengan kode 1 alih-alih dimulai:3603Error ini berarti perintah yang memulai server [Remote Control](https://code.claude.com/docs/id/remote-control.md) Anda meneruskan `--sandbox` atau `--no-sandbox` setelah `remote-control`, dan `claude remote-control` tidak menerima kedua flag tersebut. Server keluar dengan kode 1 alih-alih dimulai:


3806 3868 

3807String serupa muncul sebelum perintah dijalankan sama sekali:3869String serupa muncul sebelum perintah dijalankan sama sekali:

3808 3870 

3809* `Shell command permission check failed for pattern "..."`: pemeriksaan izin perintah tidak mengizinkannya. [Pemeriksaan izin pada perintah sisipan](https://code.claude.com/docs/id/skills.md#permission-checks-on-injected-commands) menjelaskan hasil mana yang membatalkan di setiap mode izin dan cara menyetujui perintah terlebih dahulu dengan `allowed-tools`3871* `Shell command permission check failed for pattern "..."`: pemeriksaan izin perintah tidak mengizinkannya. Lihat [Pemeriksaan izin pada perintah yang disisipkan](https://code.claude.com/docs/id/skills.md#permission-checks-on-injected-commands) untuk mengetahui hasil mana yang membatalkan di setiap mode izin dan kapan `allowed-tools` menyetujui perintah terlebih dahulu

3810* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter skill menuntut bash di mesin yang tidak memilikinya. Instal Git for Windows atau ubah frontmatter menjadi `shell: powershell`. Lihat [Cara perintah sisipan dijalankan](https://code.claude.com/docs/id/skills.md#how-injected-commands-run)3872* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter skill menuntut bash di mesin yang tidak memilikinya. Instal Git for Windows atau ubah frontmatter menjadi `shell: powershell`. Lihat [Cara perintah yang disisipkan dijalankan](https://code.claude.com/docs/id/skills.md#how-injected-commands-run)

3811 3873 

3812**Yang perlu dilakukan:**3874**Yang perlu dilakukan:**

3813 3875 


3960 4022 

3961* **Anda tidak memberikan branch dasar**: Claude Code membandingkan dengan branch default repositori dan menyarankan untuk memberikan branch dasar Anda secara eksplisit, seperti pada contoh di atas4023* **Anda tidak memberikan branch dasar**: Claude Code membandingkan dengan branch default repositori dan menyarankan untuk memberikan branch dasar Anda secara eksplisit, seperti pada contoh di atas

3962* **Anda memberikan branch dasar yang sudah ada di clone Anda**: petunjuknya berbunyi ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``4024* **Anda memberikan branch dasar yang sudah ada di clone Anda**: petunjuknya berbunyi ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3963* **Anda memberikan branch dasar yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuknya 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 shallow, 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`.4025* **Anda memberikan branch dasar yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuknya 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 memastikan apakah clone Anda dangkal (shallow), Claude Code menyarankan `git fetch --unshallow origin` sebagai gantinya. Sebelum v2.1.221, petunjuk tersebut menyarankan `git fetch --unshallow origin` untuk setiap branch dasar yang diambil, dan pada clone yang lengkap perintah itu gagal dengan `fatal: --unshallow on a complete repository does not make sense`.

3964 4026 

3965**Yang perlu dilakukan:**4027**Yang perlu dilakukan:**

3966 4028 


4490commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory4552commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory

4491```4553```

4492 4554 

4493Pesan yang memberikan path lengkap dari salah satu file milik plugin marketplace itu sendiri, seperti `hooks/hooks.json`, berarti Claude Code melewati file tersebut. Hal itu terjadi ketika Claude Code tidak dapat memastikan bahwa file tersebut berada di dalam plugin atau, untuk plugin di [marketplace lokal](https://code.claude.com/docs/id/plugins/loading.md#in-place-and-copied-plugins), di dalam marketplace tersebut. Pesan melaporkan setiap file ini di bawah nama komponen yang ditampilkan:4555Pesan yang memberikan path lengkap dari salah satu file milik plugin marketplace itu sendiri, seperti `hooks/hooks.json`, berarti Claude Code melewati file tersebut. Ketika Claude Code tidak dapat memastikan bahwa file tersebut berada di dalam plugin, atau di dalam marketplace-nya untuk plugin di [marketplace lokal](https://code.claude.com/docs/id/plugins/loading.md#in-place-and-copied-plugins), Claude Code melewati file tersebut. Pesan tersebut melaporkan file-file ini di bawah nama komponen yang ditampilkan:

4494 4556 

4495* `hooks/hooks.json`: `hooks`4557* `hooks/hooks.json`: `hooks`

4496* `monitors/monitors.json`: `monitors`4558* `monitors/monitors.json`: `monitors`

4497* `settings.json`: `settings`

4498* `SKILL.md` di root plugin: `skills`4559* `SKILL.md` di root plugin: `skills`

4499 4560 

4500Misalnya, pesan ini ditujukan untuk `hooks/hooks.json` yang di-resolve ke luar plugin maupun marketplace lokalnya:4561Misalnya, pesan ini ditujukan untuk `hooks/hooks.json` yang di-resolve ke luar plugin maupun marketplace lokalnya:


5481Anda membuka [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang berakhir saat layanan latar belakang mati, dan [pembersihan transkrip](https://code.claude.com/docs/id/settings-reference.md#cleanupperioddays) sejak itu telah menghapus percakapan tersimpannya, misalnya setelah mesin mati selama berminggu-minggu. Membuka baris seperti itu biasanya [melanjutkan percakapan tersimpannya](https://code.claude.com/docs/id/agent-view.md#sessions-show-as-failed-after-shutdown). Karena tidak ada yang tersisa untuk dilanjutkan, Claude Code menolak alih-alih menjalankan ulang prompt asli sesi tanpa bertanya:5542Anda membuka [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang berakhir saat layanan latar belakang mati, dan [pembersihan transkrip](https://code.claude.com/docs/id/settings-reference.md#cleanupperioddays) sejak itu telah menghapus percakapan tersimpannya, misalnya setelah mesin mati selama berminggu-minggu. Membuka baris seperti itu biasanya [melanjutkan percakapan tersimpannya](https://code.claude.com/docs/id/agent-view.md#sessions-show-as-failed-after-shutdown). Karena tidak ada yang tersisa untuk dilanjutkan, Claude Code menolak alih-alih menjalankan ulang prompt asli sesi tanpa bertanya:

5482 5543 

5483```text theme={null}5544```text theme={null}

5484This 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.5545This 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` removes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.

5485```5546```

5486 5547 

5487`claude attach <id>` mencetak teks ini. Di agent view, footer lebih pendek dan diakhiri dengan `ctrl+x deletes the row`.5548`claude attach <id>` mencetak teks ini. Di agent view, footer lebih pendek dan diakhiri dengan `ctrl+x removes the row`.

5488 5549 

5489**Yang harus dilakukan:**5550**Yang harus dilakukan:**

5490 5551 


5503 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef5564 push them and run 'claude rm 7c5dcf5d' again, or discard the worktree and its commits: claude rm 7c5dcf5d --discard-unpushed a1b2c3d000000000000000000000000000000000@0123456789abcdef0123456789abcdef

5504```5565```

5505 5566 

5506Ketika Claude Code tidak dapat meringkas commit-nya, baris detail justru berbunyi `The worktree has unpushed commits`. Di [agent view](https://code.claude.com/docs/id/agent-view.md), baris sesi menampilkan `not deleted` dengan alasan yang sama.5567Ketika Claude Code tidak dapat meringkas commit-nya, baris detail justru berbunyi `The worktree has unpushed commits`. Di [agent view](https://code.claude.com/docs/id/agent-view.md), baris sesi menampilkan `not removed` dengan alasan yang sama.

5507 5568 

5508Commit yang ada di remote tidak memblokir penghapusan. Begitu pula commit pada salinan lokal branch default remote `origin` Anda, selama branch tersebut di-checkout di checkout utama Anda, yaitu direktori repositori itu sendiri, bukan worktree.5569Commit yang ada di remote tidak memblokir penghapusan. Begitu pula commit pada salinan lokal branch default remote `origin` Anda, selama branch tersebut di-checkout di checkout utama Anda, yaitu direktori repositori itu sendiri, bukan worktree.

5509 5570 


5780 5841 

5781Kesalahan ini berasal dari program yang meluncurkan Claude Code untuk Anda, seperti ekstensi IDE atau aplikasi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), bukan dari Claude Code itu sendiri.5842Kesalahan ini berasal dari program yang meluncurkan Claude Code untuk Anda, seperti ekstensi IDE atau aplikasi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), bukan dari Claude Code itu sendiri.

5782 5843 

5844### Subprocess initialization did not complete within 60000ms

5845 

5846Kesalahan ini berarti proses Claude Code yang diluncurkan oleh [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) atau aplikasi Agent SDK tidak melaporkan tepat waktu bahwa proses tersebut sudah siap. Ekstensi atau aplikasi kemudian menghentikannya. Dalam percakapan VS Code, kesalahan ini diawali dengan `Claude Code did not finish starting`, misalnya:

5847 

5848```text theme={null}

5849Claude Code did not finish starting: it did not answer in time. The output logs ("View output logs") show how far it got. Slow plugins, MCP servers, hooks, disks or network can each cause this.

5850```

5851 

5852Di log output ekstensi, di layar masuknya, dan di aplikasi Agent SDK, kesalahan ini berbunyi berbeda. Kesalahan diawali dengan `Subprocess initialization did not complete within` dan batas waktunya, lalu memberikan apa yang dilaporkan Claude Code, misalnya:

5853 

5854```text theme={null}

5855Subprocess initialization did not complete within 60000ms. Claude Code did not answer the initialize request and reported no SessionStart or Setup hook running. Slow plugins, MCP servers, hooks that Claude Code does not report, disks or network can each cause this.

5856```

5857 

5858**Yang harus dilakukan:**

5859 

5860* Untuk mencoba lagi di VS Code, kirim sebuah pesan. Jika kesalahan muncul saat Anda sedang masuk, pilih kembali metode masuk sebagai gantinya.

5861* Untuk melihat sejauh mana Claude Code berjalan, klik **View output logs** di bawah kesalahan dalam percakapan, atau jalankan **Claude Code: Show Logs** dari Command Palette. Sertakan entri di sekitar baris `Subprocess initialization` saat [melaporkan masalah](https://github.com/anthropics/claude-code/issues).

5862* Untuk memeriksa jaringan Anda, lihat [Konfigurasi jaringan](https://code.claude.com/docs/id/network-config.md). Jika pesan meminta Anda memeriksa proses masuk atau autentikasi, lihat [Login dan autentikasi](https://code.claude.com/docs/id/troubleshoot-install.md#login-and-authentication).

5863* Jika pesan menyebutkan bahwa hook [SessionStart](https://code.claude.com/docs/id/hooks.md#sessionstart) atau [Setup](https://code.claude.com/docs/id/hooks.md#setup) belum selesai, [periksa berapa lama hook Anda berjalan](https://code.claude.com/docs/id/hooks.md#debug-hooks). Di VS Code, 10 menit pertama saat Claude Code melaporkan hook ini sedang berjalan tidak dihitung terhadap batas 60 detik. Buat hook yang lambat selesai lebih cepat, turunkan [`timeout`](https://code.claude.com/docs/id/hooks#common-fields) dari hook non-async, atau [hapus hook tersebut](https://code.claude.com/docs/id/hooks.md#disable-or-remove-hooks).

5864* Jika aplikasi Agent SDK Anda memanggil [`startup()`](https://code.claude.com/docs/id/agent-sdk/typescript#startup), atur `initializeTimeoutMs` cukup lama untuk seluruh proses mulai, atau biarkan tidak diatur sehingga waktu hook yang dilaporkan hingga 10 menit tidak dihitung.

5865 

5866Sebelum ekstensi VS Code v2.1.304 dan TypeScript Agent SDK v0.3.304, semua waktu hook dihitung terhadap batas tersebut. Dengan batas default, pesannya berisi `Subprocess initialization did not complete within 60000ms — check authentication and network connectivity`. Jika Anda melihat kata-kata tersebut, perbarui ekstensi atau SDK.

5867 

5783### Proses Claude Code keluar dengan kode N5868### Proses Claude Code keluar dengan kode N

5784 5869 

5785Proses `claude` yang mendasar keluar dengan kode bukan nol. Kode keluar saja tidak mengatakan apa yang gagal: kesalahan sebenarnya ada di output proses itu sendiri, yang wrapper tambahkan ketika menangkap apa pun dan sebaliknya menyimpannya di log-nya.5870Proses `claude` yang mendasar keluar dengan kode bukan nol. Kode keluar saja tidak mengatakan apa yang gagal: kesalahan sebenarnya ada di output proses itu sendiri, yang wrapper tambahkan ketika menangkap apa pun dan sebaliknya menyimpannya di log-nya.

Details

117 <td>✗</td>117 <td>✗</td>

118 </tr>118 </tr>

119 119 

120 <tr>

121 <td>[Code Mode](https://code.claude.com/docs/id/code-mode.md)</td>

122 <td>✓ (eksperimental, [persyaratan berlaku](https://code.claude.com/docs/id/code-mode.md#requirements))</td>

123 <td>✓ (eksperimental, [persyaratan berlaku](https://code.claude.com/docs/id/code-mode.md#requirements))</td>

124 <td>✗</td>

125 <td>✗</td>

126 <td>✗</td>

127 <td>✗</td>

128 </tr>

129 

120 <tr>130 <tr>

121 <td>[Pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md)</td>131 <td>[Pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md)</td>

122 <td>✓ <sup>[5](#fn5)</sup></td>132 <td>✓ <sup>[5](#fn5)</sup></td>


231 241 

232> [tab] Amazon Bedrock242> [tab] Amazon Bedrock

233>243>

234> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [web search](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior), [fast mode](https://code.claude.com/docs/id/fast-mode.md), [Advisor](https://code.claude.com/docs/id/advisor.md), [Channels](https://code.claude.com/docs/id/channels.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).244> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [web search](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior), [fast mode](https://code.claude.com/docs/id/fast-mode.md), [Advisor](https://code.claude.com/docs/id/advisor.md), [Channels](https://code.claude.com/docs/id/channels.md), [Code Mode](https://code.claude.com/docs/id/code-mode.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).

235>245>

236> **Dukungan parsial:**246> **Dukungan parsial:**

237>247>


244 254 

245> [tab] Claude Platform di AWS255> [tab] Claude Platform di AWS

246>256>

247> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [fast mode](https://code.claude.com/docs/id/fast-mode.md), [Channels](https://code.claude.com/docs/id/channels.md), [GitHub Actions](https://code.claude.com/docs/id/github-actions.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).257> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [fast mode](https://code.claude.com/docs/id/fast-mode.md), [Channels](https://code.claude.com/docs/id/channels.md), [GitHub Actions](https://code.claude.com/docs/id/github-actions.md), [Code Mode](https://code.claude.com/docs/id/code-mode.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).

248>258>

249> **Tersedia di sini, tidak di Amazon Bedrock:** [web search](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior), ditambah [Advisor](https://code.claude.com/docs/id/advisor.md) di Claude Code v2.1.300 atau yang lebih baru.259> **Tersedia di sini, tidak di Amazon Bedrock:** [web search](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior), ditambah [Advisor](https://code.claude.com/docs/id/advisor.md) di Claude Code v2.1.300 atau yang lebih baru.

250>260>


256 266 

257> [tab] Platform Agent Google Cloud267> [tab] Platform Agent Google Cloud

258>268>

259> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [Advisor](https://code.claude.com/docs/id/advisor.md), [Channels](https://code.claude.com/docs/id/channels.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).269> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [Advisor](https://code.claude.com/docs/id/advisor.md), [Channels](https://code.claude.com/docs/id/channels.md), [Code Mode](https://code.claude.com/docs/id/code-mode.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).

260>270>

261> **Dukungan parsial:**271> **Dukungan parsial:**

262>272>


271 281 

272> [tab] Microsoft Foundry282> [tab] Microsoft Foundry

273>283>

274> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [fast mode](https://code.claude.com/docs/id/fast-mode.md), [Advisor](https://code.claude.com/docs/id/advisor.md), [Channels](https://code.claude.com/docs/id/channels.md), [GitLab CI/CD](https://code.claude.com/docs/id/gitlab-ci-cd.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).284> **Tidak tersedia:** semua [fitur yang memerlukan langganan Claude](#features-that-require-a-claude-subscription), ditambah [fast mode](https://code.claude.com/docs/id/fast-mode.md), [Advisor](https://code.claude.com/docs/id/advisor.md), [Channels](https://code.claude.com/docs/id/channels.md), [GitLab CI/CD](https://code.claude.com/docs/id/gitlab-ci-cd.md), [Code Mode](https://code.claude.com/docs/id/code-mode.md), [dashboard analitik](https://code.claude.com/docs/id/analytics.md), [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), dan [perintah `/design-sync` dan `/import`](https://code.claude.com/docs/id/commands#all-commands).

275>285>

276> **Dukungan parsial:**286> **Dukungan parsial:**

277>287>

gateways.md +1 −1

Details

63* **Telemetri klien**: Claude Code menonaktifkan analitik klien terikat Anthropic ketika sesi masuk ke Claude apps gateway. Untuk menjaga analitik startup pra-masuk tetap mati juga, berikan [`DISABLE_TELEMETRY`](https://code.claude.com/docs/id/managed-settings#turn-telemetry-off-for-your-organization) dalam [pengaturan terkelola sisi klien](https://code.claude.com/docs/id/claude-apps-gateway-config.md#client-side-managed-settings) di setiap perangkat.63* **Telemetri klien**: Claude Code menonaktifkan analitik klien terikat Anthropic ketika sesi masuk ke Claude apps gateway. Untuk menjaga analitik startup pra-masuk tetap mati juga, berikan [`DISABLE_TELEMETRY`](https://code.claude.com/docs/id/managed-settings#turn-telemetry-off-for-your-organization) dalam [pengaturan terkelola sisi klien](https://code.claude.com/docs/id/claude-apps-gateway-config.md#client-side-managed-settings) di setiap perangkat.

64* **Telemetri klien di gateway lain**: apakah Claude Code mengirimkan aliran telemetri klien opsional tergantung pada penyedia Anda, dan [tabel default telemetri](https://code.claude.com/docs/id/data-usage.md#default-behaviors-by-api-provider) mencakup setiap kasus.64* **Telemetri klien di gateway lain**: apakah Claude Code mengirimkan aliran telemetri klien opsional tergantung pada penyedia Anda, dan [tabel default telemetri](https://code.claude.com/docs/id/data-usage.md#default-behaviors-by-api-provider) mencakup setiap kasus.

65* **Tujuan telemetri**: ke mana Claude Code mengirimkan telemetri sesi gateway tergantung pada cara sesi masuk, dan [What's enforced on developers](https://code.claude.com/docs/id/claude-apps-gateway#whats-enforced-on-developers) mengatakan ke mana ekspor setiap jenis sesi pergi.65* **Tujuan telemetri**: ke mana Claude Code mengirimkan telemetri sesi gateway tergantung pada cara sesi masuk, dan [What's enforced on developers](https://code.claude.com/docs/id/claude-apps-gateway#whats-enforced-on-developers) mengatakan ke mana ekspor setiap jenis sesi pergi.

66* **Proxy HTTP perusahaan**: `HTTPS_PROXY` berada di antara Claude Code dan setiap server yang dibicarakannya, termasuk gateway. Jika jaringan Anda memerlukan satu, [konfigurasikan proxy](https://code.claude.com/docs/id/network-config.md) selain gateway. Untuk Claude apps gateway yang Anda hosting, [masuk memeriksa bahwa host proxy juga berada di jaringan pribadi](https://code.claude.com/docs/id/claude-apps-gateway#prerequisites); jika tidak, tambahkan host gateway ke `NO_PROXY` sehingga CLI terhubung langsung ke sana.66* **Proxy HTTP perusahaan**: Claude Code mengirimkan permintaannya, termasuk permintaan ke gateway, melalui proxy di `HTTPS_PROXY`. Jika jaringan Anda memerlukan proxy, [konfigurasikan proxy tersebut](https://code.claude.com/docs/id/network-config.md). Jika proxy berlaku untuk Claude apps gateway yang Anda hosting, [proses masuk](https://code.claude.com/docs/id/claude-apps-gateway#prerequisites) memerlukan hostname proxy untuk di-resolve ke alamat pribadi, atau host gateway berada di `NO_PROXY`.

67 67 

68## Next steps68## Next steps

69 69 

Details

129| Administration | Baca |129| Administration | Baca |

130| Checks | Baca dan tulis |130| Checks | Baca dan tulis |

131| Contents | Baca dan tulis |131| Contents | Baca dan tulis |

132| Dependabot alerts | Baca |

132| Discussions | Baca dan tulis |133| Discussions | Baca dan tulis |

133| Issues | Baca dan tulis |134| Issues | Baca dan tulis |

134| Members | Baca |135| Members | Baca |

Details

84> Buat aplikasi Microsoft Entra dengan kredensial terfederasi untuk repositori Anda, mengikuti [panduan Microsoft untuk mengautentikasi dari GitHub Actions](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect):84> Buat aplikasi Microsoft Entra dengan kredensial terfederasi untuk repositori Anda, mengikuti [panduan Microsoft untuk mengautentikasi dari GitHub Actions](https://learn.microsoft.com/en-us/azure/developer/github/connect-from-azure-openid-connect):

85>85>

86> * Daftarkan aplikasi Microsoft Entra dan tambahkan kredensial identitas terfederasi yang mempercayai token yang dikeluarkan GitHub ke repositori Anda. Identitas terkelola yang ditetapkan pengguna berfungsi sebagai pengganti aplikasi. Keduanya memiliki ID klien yang Anda catat di bawah86> * Daftarkan aplikasi Microsoft Entra dan tambahkan kredensial identitas terfederasi yang mempercayai token yang dikeluarkan GitHub ke repositori Anda. Identitas terkelola yang ditetapkan pengguna berfungsi sebagai pengganti aplikasi. Keduanya memiliki ID klien yang Anda catat di bawah

87> * Tetapkan aplikasi peran `Azure AI User` pada sumber daya Foundry Anda. Lihat [konfigurasi Azure RBAC](https://code.claude.com/docs/id/microsoft-foundry.md#azure-rbac-configuration) untuk peran kustom yang lebih sempit87> * Tetapkan aplikasi peran `Foundry User` pada sumber daya Foundry Anda. Lihat [konfigurasi Azure RBAC](https://code.claude.com/docs/id/microsoft-foundry.md#azure-rbac-configuration) untuk peran bawaan lainnya dan peran kustom

88>88>

89> Catat ID klien aplikasi, ID penyewa Anda, dan ID langganan Anda. Anda menambahkannya sebagai rahasia di langkah berikutnya.89> Catat ID klien aplikasi, ID penyewa Anda, dan ID langganan Anda. Anda menambahkannya sebagai rahasia di langkah berikutnya.

90 90 

Details

228 228 

229### Ketika model dinonaktifkan di tengah sesi229### Ketika model dinonaktifkan di tengah sesi

230 230 

231Jika proyek Anda kehilangan akses ke model yang sesi Anda jalankan, misalnya karena administrator menonaktifkannya di [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden), Claude Code beralih sesi ke model lain alih-alih gagal pada setiap permintaan, dan menampilkan `Switched to <fallback> because <model> is not available`. Ia mencoba model yang sama seperti fallback startup: versi sebelumnya dari tier yang sama terlebih dahulu dan, untuk sesi Opus tanpa versi Opus yang tersedia, model Sonnet default.231Ketika Agent Platform menolak model sesi Anda karena tidak tersedia di proyek atau region Anda, Claude Code mengalihkan sesi Anda ke model lain, dan Anda dapat terus bekerja. Anda akan melihat pesan yang diawali dengan `Switched to <fallback> because <model> is not available`. Hal ini terjadi, misalnya, ketika administrator menonaktifkan model di [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) atau model tersebut tidak dilayani di region Anda.

232 232 

233Pengalihan hanya berlaku untuk tier yang belum Anda pinkan, kondisi yang sama seperti fallback startup. Sesi pada versi spesifik yang Anda pilih mempertahankan modelnya dan, tanpa rantai model fallback, permintaan gagal sebagai gantinya. Dalam [mode auto](https://code.claude.com/docs/id/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry), Claude Code hanya beralih ke model yang didukung mode auto di Agent Platform. Jika tidak ada model tersebut yang tersedia, permintaan gagal.233Jika Anda mengonfigurasi [rantai model fallback](https://code.claude.com/docs/id/model-config.md#fallback-model-chains), Claude Code beralih ke fallback yang Anda konfigurasi sebagai gantinya. Tanpa rantai, permintaan gagal dalam kasus-kasus seperti berikut:

234 234 

235[Rantai model fallback](https://code.claude.com/docs/id/model-config.md#fallback-model-chains) yang Anda konfigurasi menggantikan pengalihan tier: pada penolakan ini Claude Code beralih ke fallback yang Anda konfigurasi sebagai gantinya. Untuk membuat permintaan yang ditolak gagal daripada beralih, atur [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/id/env-vars). Rantai fallback yang Anda konfigurasi masih beralih pada penolakan ini; hapus rantai juga jika Anda ingin setiap permintaan yang ditolak gagal.235* Sesi Anda berjalan pada model yang dipinkan atau versi spesifik yang Anda pilih

236* Tidak ada satu pun dari [model yang dicoba Claude Code](#startup-model-checks) yang tersedia. Dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#enable-auto-mode-on-bedrock-agent-platform-or-foundry), Claude Code hanya beralih ke model yang didukung auto mode di Agent Platform.

237 

238Untuk terus bekerja, jalankan `/model` di sesi dan tekan `s` pada model yang tersedia di proyek dan region Anda, yang membuat default Anda tidak berubah.

239 

240Untuk membuat permintaan yang ditolak gagal daripada beralih, atur [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](https://code.claude.com/docs/id/env-vars). Jika Anda mengonfigurasi rantai model fallback, hapus juga rantai tersebut, karena Claude Code tetap berpindah ke fallback tersebut.

236 241 

237## Konfigurasi IAM242## Konfigurasi IAM

238 243 

hooks.md +22 −7

Details

257Administrator dapat menggunakan [`allowManagedHooksOnly`](https://code.claude.com/docs/id/settings-reference#allowmanagedhooksonly) dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) untuk membatasi hook mana yang berjalan:257Administrator dapat menggunakan [`allowManagedHooksOnly`](https://code.claude.com/docs/id/settings-reference#allowmanagedhooksonly) dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) untuk membatasi hook mana yang berjalan:

258 258 

259* Hook pengguna, proyek, lokal, dan plugin Anda diblokir. Hook dari plugin yang diaktifkan paksa dalam `enabledPlugins` pengaturan terkelola dikecualikan259* Hook pengguna, proyek, lokal, dan plugin Anda diblokir. Hook dari plugin yang diaktifkan paksa dalam `enabledPlugins` pengaturan terkelola dikecualikan

260* Claude Code juga mempersempit pengaturan [`statusLine`](https://code.claude.com/docs/id/statusline), [`fileSuggestion`](https://code.claude.com/docs/id/settings-reference#filesuggestion), dan [`subagentStatusLine`](https://code.claude.com/docs/id/statusline#subagent-status-lines) Anda ke pengaturan terkelola260* Claude Code juga mempersempit pengaturan [`statusLine`](https://code.claude.com/docs/id/statusline) dan [`fileSuggestion`](https://code.claude.com/docs/id/settings-reference#filesuggestion) Anda ke pengaturan terkelola

261* Claude Code juga menonaktifkan plugin dengan [sumber `command`](https://code.claude.com/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang diaktifkan paksa dalam `enabledPlugins` pengaturan terkelola, kecuali jika [`disableCommandPluginSources`](https://code.claude.com/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit disetel ke `false`. Sumber `command` memerlukan Claude Code v2.1.229 atau yang lebih baru261* Claude Code juga menonaktifkan plugin dengan [sumber `command`](https://code.claude.com/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang diaktifkan paksa dalam `enabledPlugins` pengaturan terkelola, kecuali jika [`disableCommandPluginSources`](https://code.claude.com/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit disetel ke `false`. Sumber `command` memerlukan Claude Code v2.1.229 atau yang lebih baru

262* Claude Code juga memblokir [perintah `headersHelper`](https://code.claude.com/docs/id/plugins/host-marketplace#authenticate-archive-downloads) marketplace kecuali jika [`disableCommandPluginSources`](https://code.claude.com/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit disetel ke `false`, dengan pengecualian untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri262* Claude Code juga memblokir [perintah `headersHelper`](https://code.claude.com/docs/id/plugins/host-marketplace#authenticate-archive-downloads) marketplace kecuali jika [`disableCommandPluginSources`](https://code.claude.com/docs/id/settings-reference#disablecommandpluginsources) secara eksplisit disetel ke `false`, dengan pengecualian untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri

263 263 


505| `url` | ya | URL tujuan pengiriman permintaan POST |505| `url` | ya | URL tujuan pengiriman permintaan POST |

506| `headers` | tidak | Header HTTP tambahan sebagai pasangan kunci-nilai. Nilai mendukung interpolasi environment variable menggunakan sintaks `$VAR_NAME` atau `${VAR_NAME}`. Hanya variabel yang tercantum dalam `allowedEnvVars` yang di-resolve |506| `headers` | tidak | Header HTTP tambahan sebagai pasangan kunci-nilai. Nilai mendukung interpolasi environment variable menggunakan sintaks `$VAR_NAME` atau `${VAR_NAME}`. Hanya variabel yang tercantum dalam `allowedEnvVars` yang di-resolve |

507| `allowedEnvVars` | tidak | Daftar nama environment variable yang boleh diinterpolasi ke dalam nilai header. Referensi ke variabel yang tidak tercantum diganti dengan string kosong. Wajib agar interpolasi env var apa pun dapat berfungsi |507| `allowedEnvVars` | tidak | Daftar nama environment variable yang boleh diinterpolasi ke dalam nilai header. Referensi ke variabel yang tidak tercantum diganti dengan string kosong. Wajib agar interpolasi env var apa pun dapat berfungsi |

508| `onFailure` | tidak | Apa yang terjadi pada tindakan ketika hook gagal: `"continue"`, nilai default, atau `"block"`. Lihat [Memblokir tindakan ketika hook gagal](#block-the-action-when-a-hook-fails). Memerlukan Claude Code v2.1.295 atau yang lebih baru |508| `onFailure` | tidak | Apakah tindakan yang memicu hook tetap dilanjutkan ketika hook gagal: `"continue"` atau `"block"`. Lihat [Memblokir tindakan ketika hook gagal](#block-the-action-when-a-hook-fails) untuk `"block"` dan untuk membiarkan field ini tidak disetel. Memerlukan Claude Code v2.1.295 atau yang lebih baru |

509 509 

510Claude Code mengirim [input JSON](#hook-input-and-output) hook sebagai body permintaan POST dengan `Content-Type: application/json`. Body respons menggunakan [format output JSON](#json-output) yang sama seperti hook perintah.510Claude Code mengirim [input JSON](#hook-input-and-output) hook sebagai body permintaan POST dengan `Content-Type: application/json`. Body respons menggunakan [format output JSON](#json-output) yang sama seperti hook perintah.

511 511 


901 901 

902Pada `PreToolUse`, hook `command`, `http`, atau `mcp_tool` yang mengalami timeout tidak memblokir panggilan tool, kecuali untuk hook [yang kegagalannya memblokir tindakan](#block-the-action-when-a-hook-fails). Panggilan berlanjut melalui [alur izin](https://code.claude.com/docs/id/permissions.md) normal, jadi jangan mengandalkan hook yang macet untuk berfungsi sebagai gerbang. Untuk memblokir panggilan ketika hook `command` atau `http` mengalami timeout, atur [`onFailure: "block"`](#block-the-action-when-a-hook-fails). [Callback hook Agent SDK](https://code.claude.com/docs/id/agent-sdk/hooks.md) yang melebihi timeout-nya [memblokir panggilan tool](#pretooluse).902Pada `PreToolUse`, hook `command`, `http`, atau `mcp_tool` yang mengalami timeout tidak memblokir panggilan tool, kecuali untuk hook [yang kegagalannya memblokir tindakan](#block-the-action-when-a-hook-fails). Panggilan berlanjut melalui [alur izin](https://code.claude.com/docs/id/permissions.md) normal, jadi jangan mengandalkan hook yang macet untuk berfungsi sebagai gerbang. Untuk memblokir panggilan ketika hook `command` atau `http` mengalami timeout, atur [`onFailure: "block"`](#block-the-action-when-a-hook-fails). [Callback hook Agent SDK](https://code.claude.com/docs/id/agent-sdk/hooks.md) yang melebihi timeout-nya [memblokir panggilan tool](#pretooluse).

903 903 

904> [!NOTE]

905>

906> Jika Anda menggunakan Code Mode, timeout pada `PreToolUse` bekerja secara berbeda. Lihat [Panggilan tool ditolak oleh hook](https://code.claude.com/docs/id/code-mode.md#tool-call-refused-by-a-hook).

907 

904#### Hook yang memulai proses latar belakang908#### Hook yang memulai proses latar belakang

905 909 

906Hook dapat memulai program yang berjalan lama, seperti server dev, dan membiarkannya tetap berjalan selama sesi berlanjut. Dalam skrip hook atau perintah [bentuk shell](#exec-form-and-shell-form):910Hook dapat memulai program yang berjalan lama, seperti server dev, dan membiarkannya tetap berjalan selama sesi berlanjut. Dalam skrip hook atau perintah [bentuk shell](#exec-form-and-shell-form):


981* **Hook `Stop`, `SubagentStop`, `TaskCompleted`, dan `TeammateIdle`**: exit code 2 pada event ini mengirim Claude kembali untuk terus bekerja, dan Claude tidak dapat memperbaiki hook yang tidak mau berjalan985* **Hook `Stop`, `SubagentStop`, `TaskCompleted`, dan `TeammateIdle`**: exit code 2 pada event ini mengirim Claude kembali untuk terus bekerja, dan Claude tidak dapat memperbaiki hook yang tidak mau berjalan

982* **Hook perintah latar belakang**: hook perintah yang mengatur [`async` atau `asyncRewake`](#run-hooks-in-the-background)986* **Hook perintah latar belakang**: hook perintah yang mengatur [`async` atau `asyncRewake`](#run-hooks-in-the-background)

983 987 

988> [!NOTE]

989>

990> Jika Anda menggunakan Code Mode, kegagalan pada `PreToolUse` bekerja secara berbeda. Lihat [Panggilan tool ditolak oleh hook](https://code.claude.com/docs/id/code-mode.md#tool-call-refused-by-a-hook).

991 

984#### Hook yang gagal di Windows tanpa Git Bash992#### Hook yang gagal di Windows tanpa Git Bash

985 993 

986Jika error untuk panggilan tool yang diblokir menyertakan teks ini, hook perintah `PreToolUse` atau `PermissionRequest` gagal atau mengalami timeout dan memblokir panggilan tersebut:994Jika error untuk panggilan tool yang diblokir menyertakan teks ini, hook perintah `PreToolUse` atau `PermissionRequest` gagal atau mengalami timeout dan memblokir panggilan tersebut:


1512* [Tugas terjadwal bercakupan sesi](https://code.claude.com/docs/id/scheduled-tasks.md) yang dipicu, termasuk iterasi `/loop`1520* [Tugas terjadwal bercakupan sesi](https://code.claude.com/docs/id/scheduled-tasks.md) yang dipicu, termasuk iterasi `/loop`

1513* [Subagent latar belakang](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background) yang melapor kembali ke sesi yang memulainya1521* [Subagent latar belakang](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background) yang melapor kembali ke sesi yang memulainya

1514* [Pesan yang dikirim sesi lain](https://code.claude.com/docs/id/cross-session-messaging.md) ke percakapan utama Anda1522* [Pesan yang dikirim sesi lain](https://code.claude.com/docs/id/cross-session-messaging.md) ke percakapan utama Anda

1523* Output kode Claude dalam sesi [Code Mode](https://code.claude.com/docs/id/code-mode.md#code-output-withheld-by-a-hook), untuk hook `command`, `http`, dan `mcp_tool`, saat kode dapat berjalan di latar belakang

1515 1524 

1516Hook `UserPromptSubmit` memiliki timeout default 30 detik untuk tipe `command`, `http`, dan `mcp_tool`, lebih singkat daripada default 600 detik untuk tipe-tipe tersebut pada sebagian besar event lainnya. Karena hook ini berjalan sebelum setiap prompt dan memblokir pemrosesan model hingga selesai, hook yang macet akan menghentikan sesi. Jika hook Anda memerlukan lebih banyak waktu, tetapkan kolom `timeout` dalam entri hook.1525Hook `UserPromptSubmit` memiliki timeout default 30 detik untuk tipe `command`, `http`, dan `mcp_tool`, lebih singkat daripada default 600 detik untuk tipe-tipe tersebut pada sebagian besar event lainnya. Karena hook ini berjalan sebelum setiap prompt dan memblokir pemrosesan model hingga selesai, hook yang macet akan menghentikan sesi. Jika hook Anda memerlukan lebih banyak waktu, tetapkan kolom `timeout` dalam entri hook.

1517 1526 


1560| Kolom | Deskripsi |1569| Kolom | Deskripsi |

1561| :- | :- |1570| :- | :- |

1562| `decision` | `"block"` menghentikan prompt sebelum sampai ke Claude. Hilangkan untuk membiarkan prompt berlanjut |1571| `decision` | `"block"` menghentikan prompt sebelum sampai ke Claude. Hilangkan untuk membiarkan prompt berlanjut |

1563| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"`. Tidak ditambahkan ke konteks |1572| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"`. Tidak ditambahkan ke konteks, kecuali saat hook memblokir [output Code Mode](https://code.claude.com/docs/id/code-mode.md#code-output-withheld-by-a-hook) |

1564| `additionalContext` | String yang ditambahkan ke konteks Claude bersama prompt yang dikirim. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |1573| `additionalContext` | String yang ditambahkan ke konteks Claude bersama prompt yang dikirim. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

1565| `sessionTitle` | Menetapkan judul sesi. Gunakan untuk memberi nama sesi secara otomatis berdasarkan isi prompt |1574| `sessionTitle` | Menetapkan judul sesi. Gunakan untuk memberi nama sesi secara otomatis berdasarkan isi prompt |

1566| `suppressOriginalPrompt` | Jika `true` saat hook memblokir prompt, teks prompt tidak disertakan dalam pesan pemblokiran. Lihat [Jejak yang ditinggalkan prompt yang diblokir](#what-a-blocked-prompt-leaves-behind) |1575| `suppressOriginalPrompt` | Jika `true` saat hook memblokir prompt, teks prompt tidak disertakan dalam pesan pemblokiran. Lihat [Jejak yang ditinggalkan prompt yang diblokir](#what-a-blocked-prompt-leaves-behind) |

1567 1576 

1568Hook yang memblokir dengan keluar menggunakan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan pemblokiran menampilkan teks stderr kepada pengguna, dan teks tersebut tidak ditambahkan ke konteks.1577Jika hook Anda memblokir dengan keluar menggunakan kode 2, teks stderr-nya diperlakukan sama seperti `reason`.

1569 1578 

1570```json theme={null}1579```json theme={null}

1571{1580{


3000 3009 

3001Berjalan ketika file konfigurasi berubah selama sesi. Gunakan ini untuk mengaudit perubahan pengaturan, menegakkan kebijakan keamanan, atau memblokir modifikasi yang tidak sah pada file konfigurasi.3010Berjalan ketika file konfigurasi berubah selama sesi. Gunakan ini untuk mengaudit perubahan pengaturan, menegakkan kebijakan keamanan, atau memblokir modifikasi yang tidak sah pada file konfigurasi.

3002 3011 

3003Claude 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](https://code.claude.com/docs/id/server-managed-settings.md) dan perubahan pada preferensi terkelola macOS atau kebijakan registri Windows tanpa menjalankannya. Di WSL dengan [`wslInheritsWindowsSettings`](https://code.claude.com/docs/id/settings-reference#wslinheritswindowssettings), Claude Code juga menerapkan file pengaturan terkelola sisi Windows yang berubah pada polling kebijakannya tanpa menjalankannya.3012Claude 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.

3004 3013 

3005Matcher memfilter berdasarkan sumber konfigurasi:3014Matcher memfilter berdasarkan sumber konfigurasi:

3006 3015 


3012| `policy_settings` | `managed-settings.json` atau file di `managed-settings.d/` berubah |3021| `policy_settings` | `managed-settings.json` atau file di `managed-settings.d/` berubah |

3013| `skills` | File skill di `.claude/skills/` berubah |3022| `skills` | File skill di `.claude/skills/` berubah |

3014 3023 

3015Contoh ini mencatat semua perubahan konfigurasi untuk audit keamanan:3024Perubahan seperti berikut berlaku tanpa menjalankan hook:

3025 

3026* Aturan dan pengaturan yang Anda simpan dengan **Yes, and don't ask again**, `/permissions`, atau `/model`, di sesi tempat Anda menyimpannya. Jika sesi lain yang terbuka memuat file yang sama, hook dijalankan di sana.

3027* Pembaruan pada [pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md), preferensi terkelola macOS, atau kebijakan registry Windows

3028* Di WSL dengan [`wslInheritsWindowsSettings`](https://code.claude.com/docs/id/settings-reference#wslinheritswindowssettings), file pengaturan terkelola sisi Windows yang berubah, yang diambil Claude Code pada polling kebijakannya

3029 

3030Contoh ini mencatat perubahan konfigurasi untuk audit keamanan:

3016 3031 

3017```json theme={null}3032```json theme={null}

3018{3033{


3335 "hooks": [3350 "hooks": [

3336 {3351 {

3337 "type": "command",3352 "type": "command",

3338 "command": "bash -c 'jq -r .worktree_path | xargs rm -rf'"3353 "command": "bash -c 'p=$(jq -er .worktree_path) && rm -rf -- \"$p\"'"

3339 }3354 }

3340 ]3355 ]

3341 }3356 }

hooks-guide.md +4 −4

Details

50 "PostToolUse": [50 "PostToolUse": [

51 {51 {

52 "matcher": "Edit|Write",52 "matcher": "Edit|Write",

53 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write" }]53 "hooks": [{ "type": "command", "command": "f=$(jq -r '.tool_input.file_path') && npx prettier --write --ignore-unknown \"$f\"" }]

54 }54 }

55 ],55 ],

56 "Notification": [56 "Notification": [


221 "hooks": [221 "hooks": [

222 {222 {

223 "type": "command",223 "type": "command",

224 "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"224 "command": "f=$(jq -r '.tool_input.file_path') && npx prettier --write --ignore-unknown \"$f\""

225 }225 }

226 ]226 ]

227 }227 }


336 336 

337Lacak ketika file pengaturan atau skills berubah selama sesi. Acara `ConfigChange` aktif ketika proses eksternal atau editor memodifikasi file konfigurasi, sehingga Anda dapat mencatat perubahan untuk kepatuhan atau memblokir modifikasi yang tidak sah.337Lacak ketika file pengaturan atau skills berubah selama sesi. Acara `ConfigChange` aktif ketika proses eksternal atau editor memodifikasi file konfigurasi, sehingga Anda dapat mencatat perubahan untuk kepatuhan atau memblokir modifikasi yang tidak sah.

338 338 

339Contoh ini menambahkan setiap perubahan ke log audit. Tambahkan ini ke `~/.claude/settings.json`:339Contoh ini menambahkan setiap acara ke log audit. Tambahkan ini ke `~/.claude/settings.json`:

340 340 

341```json theme={null}341```json theme={null}

342{342{


925Endpoint Anda merespons dengan badan JSON dalam [format output](https://code.claude.com/docs/id/hooks.md#json-output) yang sama seperti hook perintah, dan Claude Code juga memeriksa status respons:925Endpoint Anda merespons dengan badan JSON dalam [format output](https://code.claude.com/docs/id/hooks.md#json-output) yang sama seperti hook perintah, dan Claude Code juga memeriksa status respons:

926 926 

927* **Status 2xx**: untuk memblokir panggilan tool, kembalikan bidang `hookSpecificOutput` yang sesuai di dalam badan respons.927* **Status 2xx**: untuk memblokir panggilan tool, kembalikan bidang `hookSpecificOutput` yang sesuai di dalam badan respons.

928* **Status lainnya, atau permintaan gagal**: Claude Code melaporkan [kesalahan non-pemblokiran](https://code.claude.com/docs/id/hooks.md#exit-code-output) dan membiarkan tindakan berlanjut. Agar endpoint yang gagal memblokir tindakan, atur [`onFailure: "block"`](https://code.claude.com/docs/id/hooks#block-the-action-when-a-hook-fails) pada hook tersebut.928* **Status lainnya, atau permintaan gagal**: Claude Code melaporkan [kesalahan non-pemblokiran](https://code.claude.com/docs/id/hooks.md#exit-code-output) dan membiarkan tindakan berlanjut, kecuali jika hook tersebut termasuk hook [yang kegagalannya memblokir tindakan](https://code.claude.com/docs/id/hooks.md#block-the-action-when-a-hook-fails). Agar endpoint yang gagal memblokir tindakan, atur [`onFailure: "block"`](https://code.claude.com/docs/id/hooks#block-the-action-when-a-hook-fails) pada hook tersebut.

929 929 

930Nilai header mendukung interpolasi variabel lingkungan menggunakan sintaks `$VAR_NAME` atau `${VAR_NAME}`. Hanya variabel yang tercantum dalam array `allowedEnvVars` yang diselesaikan; semua referensi `$VAR` lainnya tetap kosong.930Nilai header mendukung interpolasi variabel lingkungan menggunakan sintaks `$VAR_NAME` atau `${VAR_NAME}`. Hanya variabel yang tercantum dalam array `allowedEnvVars` yang diselesaikan; semua referensi `$VAR` lainnya tetap kosong.

931 931 

Details

32| `Ctrl+Z` | Jeda Claude Code | Unix saja. Menangguhkan proses ke shell Anda; jalankan `fg` untuk melanjutkan |32| `Ctrl+Z` | Jeda Claude Code | Unix saja. Menangguhkan proses ke shell Anda; jalankan `fg` untuk melanjutkan |

33| `Panah Kiri/Kanan` | Siklus melalui tab dialog | Navigasi antar tab dalam dialog izin dan menu. Dalam dialog bertab, kunci beralih tab sementara baris tab memiliki fokus. Lihat [Tindakan tab](https://code.claude.com/docs/id/keybindings.md#tabs-actions) untuk cara fokus bergerak |33| `Panah Kiri/Kanan` | Siklus melalui tab dialog | Navigasi antar tab dalam dialog izin dan menu. Dalam dialog bertab, kunci beralih tab sementara baris tab memiliki fokus. Lihat [Tindakan tab](https://code.claude.com/docs/id/keybindings.md#tabs-actions) untuk cara fokus bergerak |

34| `Tab` | Terima saran pelengkapan otomatis, atau tambahkan komentar ke jawaban izin | Saat saran pelengkapan otomatis ditampilkan dalam input prompt, menerima saran yang dipilih. Pada sebagian besar prompt izin, dengan **Ya** atau **Tidak** fokus, membuka bidang komentar pada opsi itu, dan menekannya lagi menutup bidang. Lihat [tambahkan komentar saat Anda menjawab prompt izin](https://code.claude.com/docs/id/permissions.md#add-a-comment-when-you-answer-a-permission-prompt) |34| `Tab` | Terima saran pelengkapan otomatis, atau tambahkan komentar ke jawaban izin | Saat saran pelengkapan otomatis ditampilkan dalam input prompt, menerima saran yang dipilih. Pada sebagian besar prompt izin, dengan **Ya** atau **Tidak** fokus, membuka bidang komentar pada opsi itu, dan menekannya lagi menutup bidang. Lihat [tambahkan komentar saat Anda menjawab prompt izin](https://code.claude.com/docs/id/permissions.md#add-a-comment-when-you-answer-a-permission-prompt) |

35| `Panah Atas/Bawah` atau `Ctrl+P`/`Ctrl+N` | Pindahkan kursor atau navigasi riwayat perintah | Ketika input mencakup lebih dari satu baris visual, baik dibungkus atau multiline, pertama kali memindahkan kursor dalam prompt. Setelah kursor berada di baris visual pertama atau terakhir, menekan lagi menavigasi riwayat perintah. Sementara Anda memiliki pesan antrian, `Atas` dari baris pertama malah [membawanya kembali](#take-back-what-you-queued) |35| `Panah Atas/Bawah` atau `Ctrl+P`/`Ctrl+N` | Pindahkan kursor atau navigasi riwayat perintah | Ketika input mencakup lebih dari satu baris visual, baik dibungkus atau multiline, pertama kali memindahkan kursor dalam prompt. Setelah kursor berada di baris visual pertama atau terakhir, menekan lagi menavigasi riwayat perintah. Sementara Anda memiliki pesan antrian, `Up` dari baris pertama malah [membawanya kembali](#take-back-what-you-queued) |

36| `Esc` | Interupsi Claude, atau tutup dialog | Hentikan respons atau panggilan alat saat ini di tengah giliran sehingga Anda dapat mengalihkan. Claude menyimpan pekerjaan yang dilakukan sejauh ini. Jika Anda memiliki [pesan antrian](#queue-messages-while-claude-works), Claude Code mengirimnya selanjutnya. Ketika dialog terbuka, `Esc` menutup dialog. Saat item footer dipilih, seperti baris di [panel subagen](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background) di bawah prompt, `Esc` [membatalkan pilihannya](https://code.claude.com/docs/id/keybindings.md#footer-actions) alih-alih mengganggu. Pada prompt izin, `Esc` menolak tindakan, sama seperti [**Tidak** tanpa komentar](https://code.claude.com/docs/id/permissions.md#add-a-comment-when-you-answer-a-permission-prompt) |36| `Esc` | Interupsi Claude, atau tutup dialog | Hentikan respons atau panggilan alat saat ini di tengah giliran sehingga Anda dapat mengalihkan. Claude menyimpan pekerjaan yang dilakukan sejauh ini. Jika Anda memiliki [pesan antrian](#queue-messages-while-claude-works), Claude Code mengirimnya selanjutnya. Ketika dialog terbuka, `Esc` menutup dialog. Saat item footer dipilih, seperti baris di [panel subagen](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background) di bawah prompt, `Esc` [membatalkan pilihannya](https://code.claude.com/docs/id/keybindings.md#footer-actions) alih-alih mengganggu. Pada prompt izin, `Esc` menolak tindakan, sama seperti [**Tidak** tanpa komentar](https://code.claude.com/docs/id/permissions.md#add-a-comment-when-you-answer-a-permission-prompt) |

37| `Esc` + `Esc` | Hapus draf input, atau putar ulang | Ketika input prompt berisi teks, `Esc` ganda menghapusnya dan menyimpan draf ke riwayat sehingga `Atas` mengingatnya. Ketika input kosong, `Esc` ganda membuka [menu putar ulang](https://code.claude.com/docs/id/checkpointing.md) untuk memulihkan atau merangkum kode dan percakapan dari titik sebelumnya |37| `Esc` + `Esc` | Hapus draf input, atau putar ulang | Ketika input prompt berisi teks, `Esc` ganda menghapusnya dan menyimpan draf ke riwayat sehingga `Up` mengingatnya. Ketika input kosong, `Esc` ganda membuka [menu putar ulang](https://code.claude.com/docs/id/checkpointing.md) untuk memulihkan atau merangkum kode dan percakapan dari titik sebelumnya |

38| `Ctrl+Enter` atau `Ctrl+X Ctrl+S` | Kirim pesan antrian sekarang | Mengirim [pesan antrian](#queue-messages-while-claude-works) Anda, dan draf Anda bersama mereka, keluar segera. [Ketika Claude Code mengirim apa yang Anda antrekan](#when-claude-code-sends-what-you-queued) mencakup apa yang terjadi pada giliran yang sedang dikerjakan Claude. Dalam [mode shell](#shell-mode-with-prefix), kunci hanya mengantrekan perintah Anda. Di terminal yang tidak melaporkan kunci diperluas, `Ctrl+Enter` tiba sebagai `Enter` biasa; `Ctrl+X Ctrl+S` bekerja di terminal apa pun. Memerlukan Claude Code v2.1.275 atau yang lebih baru |38| `Ctrl+Enter` atau `Ctrl+X Ctrl+S` | Kirim pesan antrian sekarang | Mengirim [pesan antrian](#queue-messages-while-claude-works) Anda, dan draf Anda bersama mereka, keluar segera. [Ketika Claude Code mengirim apa yang Anda antrekan](#when-claude-code-sends-what-you-queued) mencakup apa yang terjadi pada giliran yang sedang dikerjakan Claude. Dalam [mode shell](#shell-mode-with-prefix), kunci hanya mengantrekan perintah Anda. Di terminal yang tidak melaporkan kunci diperluas, `Ctrl+Enter` tiba sebagai `Enter` biasa; `Ctrl+X Ctrl+S` bekerja di terminal apa pun. Memerlukan Claude Code v2.1.275 atau yang lebih baru |

39| `Shift+Tab`, atau `Alt+M` di Windows ketika runtime Node atau Bun tidak mengaktifkan mode input VT | Mode izin siklus | Siklus melalui `default` (berlabel Manual dalam indikator mode), `acceptEdits`, `plan`, dan, ketika tersedia, `bypassPermissions` dan kemudian `auto`. Dari `auto`, tekan pertama beralih ke `default`. Lihat [mode izin](https://code.claude.com/docs/id/permission-modes.md). Pada prompt izin file, kunci yang sama menutup [bidang komentar](https://code.claude.com/docs/id/permissions.md#add-a-comment-when-you-answer-a-permission-prompt) yang terbuka. Tanpa bidang terbuka, ini memilih opsi yang memungkinkan tindakan untuk sisa sesi, ketika prompt menawarkan opsi itu |39| `Shift+Tab`, atau `Alt+M` di Windows ketika runtime Node atau Bun tidak mengaktifkan mode input VT | Siklus mode izin | Siklus melalui `default` (berlabel Manual dalam indikator mode), `acceptEdits`, dan `plan`, lalu `bypassPermissions` dan `auto` jika tersedia. Lihat [mode izin](https://code.claude.com/docs/id/permission-modes.md). Pada permintaan izin file, tombol yang sama menutup [bidang komentar](https://code.claude.com/docs/id/permissions.md#add-a-comment-when-you-answer-a-permission-prompt) yang terbuka. Tanpa bidang terbuka, ini memilih opsi yang mengizinkan tindakan untuk sisa sesi, ketika permintaan tersebut menawarkan opsi itu. Pada permintaan persetujuan rencana, ini menyetujui rencana |

40| `Option+P` (macOS) atau `Alt+P` (Windows/Linux) | Model switch | Alihkan model tanpa menghapus prompt Anda |40| `Option+P` (macOS) atau `Alt+P` (Windows/Linux) | Model switch | Alihkan model tanpa menghapus prompt Anda |

41| `Option+T` (macOS) atau `Alt+T` (Windows/Linux) | Alihkan extended thinking | Aktifkan atau nonaktifkan mode extended thinking. Tidak berpengaruh pada Opus 5.5, Sonnet 5.5, Haiku 5.5, atau model Fable, yang selalu menggunakan extended thinking. Bekerja di macOS tanpa mengonfigurasi Option sebagai Meta |41| `Option+T` (macOS) atau `Alt+T` (Windows/Linux) | Alihkan extended thinking | Aktifkan atau nonaktifkan mode extended thinking. Tidak berpengaruh pada Opus 5.5, Sonnet 5.5, Haiku 5.5, atau model Fable, yang selalu menggunakan extended thinking. Bekerja di macOS tanpa mengonfigurasi Option sebagai Meta |

42| `Option+O` (macOS) atau `Alt+O` (Windows/Linux) | Alihkan mode cepat | Aktifkan atau nonaktifkan [mode cepat](https://code.claude.com/docs/id/fast-mode.md) |42| `Option+O` (macOS) atau `Alt+O` (Windows/Linux) | Alihkan mode cepat | Aktifkan atau nonaktifkan [mode cepat](https://code.claude.com/docs/id/fast-mode.md) |


81| :- | :- | :- |81| :- | :- | :- |

82| Escape cepat | `\` + `Enter` | Bekerja di semua terminal |82| Escape cepat | `\` + `Enter` | Bekerja di semua terminal |

83| Tombol Option | `Option+Enter` | Setelah mengaktifkan [Option sebagai Meta](https://code.claude.com/docs/id/terminal-config.md#enable-option-key-shortcuts-on-macos) di macOS |83| Tombol Option | `Option+Enter` | Setelah mengaktifkan [Option sebagai Meta](https://code.claude.com/docs/id/terminal-config.md#enable-option-key-shortcuts-on-macos) di macOS |

84| Shift+Enter | `Shift+Enter` | Asli di iTerm2, WezTerm, Ghostty, Kitty, Warp, Apple Terminal, Windows Terminal. Untuk terminal lain, lihat [Masukkan prompt multiline](https://code.claude.com/docs/id/terminal-config.md#enter-multiline-prompts) |84| Shift+Enter | `Shift+Enter` | Asli di iTerm2, WezTerm, Ghostty, Kitty, Warp, Windows Terminal. Untuk terminal lain, lihat [Masukkan prompt multiline](https://code.claude.com/docs/id/terminal-config.md#enter-multiline-prompts) |

85| Urutan kontrol | `Ctrl+J` | Bekerja di terminal apa pun tanpa konfigurasi |85| Urutan kontrol | `Ctrl+J` | Bekerja di terminal apa pun tanpa konfigurasi |

86| Mode tempel | Tempel langsung | Untuk blok kode, log |86| Mode tempel | Tempel langsung | Untuk blok kode, log |

87 87 


137 137 

138Aktifkan pengeditan gaya vim melalui `/config` → Editor mode.138Aktifkan pengeditan gaya vim melalui `/config` → Editor mode.

139 139 

140Claude Code menyimpan mode vim dan posisi kursor Anda saat Anda mengalihkan [penampil transkrip](#transcript-viewer) dengan `Ctrl+O` atau membuka dan menutup panel seperti `/config`. Jika Anda meninggalkan prompt dalam mode NORMAL, mode tersebut masih dalam mode NORMAL saat Anda kembali, dengan kursor di tempat Anda meninggalkannya.

141 

142### Pengalihan mode140### Pengalihan mode

143 141 

144| Perintah | Tindakan | Dari mode |142| Perintah | Tindakan | Dari mode |


302 * Tekan `Ctrl+C` untuk membatalkan dan mengembalikan input asli Anda300 * Tekan `Ctrl+C` untuk membatalkan dan mengembalikan input asli Anda

303 * Tekan `Backspace` pada pencarian kosong untuk membatalkan301 * Tekan `Backspace` pada pencarian kosong untuk membatalkan

304 302 

305Menerima kecocokan atau membatalkan pencarian berlaku segera, bahkan saat Claude Code masih memuat riwayat.

306 

307Untuk menemukan prompt sebelumnya ketika yang Anda ingat hanyalah sesuatu yang panjang yang Anda tempelkan ke dalamnya, seperti log error, tekan `Ctrl+R` dan ketik sebuah kata dari tempelan tersebut. Memerlukan Claude Code v2.1.314 atau yang lebih baru.303Untuk menemukan prompt sebelumnya ketika yang Anda ingat hanyalah sesuatu yang panjang yang Anda tempelkan ke dalamnya, seperti log error, tekan `Ctrl+R` dan ketik sebuah kata dari tempelan tersebut. Memerlukan Claude Code v2.1.314 atau yang lebih baru.

308 304 

309## Perintah Bash latar belakang305## Perintah Bash latar belakang


524 520 

525Untuk mematikan fitur ini, atur [`emojiCompletionEnabled`](https://code.claude.com/docs/id/settings-reference#emojicompletionenabled) ke `false` dalam `settings.json`. Ini menonaktifkan popup saran dan penggantian inline.521Untuk mematikan fitur ini, atur [`emojiCompletionEnabled`](https://code.claude.com/docs/id/settings-reference#emojicompletionenabled) ke `false` dalam `settings.json`. Ini menonaktifkan popup saran dan penggantian inline.

526 522 

527## Periksa ejaan saat Anda mengetik523## Memeriksa ejaan saat Anda mengetik

528 524 

529Claude Code dapat menggarisbawahi kata-kata yang salah eja dalam input prompt saat Anda mengetik. Ini hanya memeriksa teks dalam kotak input, tidak pernah balasan Claude atau file Anda. Ini juga tidak memeriksa apa pun saat kotak input berada dalam [mode shell](#shell-mode-with-prefix), pencarian riwayat `Ctrl+R`, atau [dikte suara](https://code.claude.com/docs/id/voice-dictation.md).525Claude Code dapat menggarisbawahi kata yang salah eja di input prompt saat Anda mengetik. Claude Code hanya memeriksa teks di kotak input, tidak pernah balasan Claude atau file Anda. Claude Code juga tidak memeriksa apa pun saat kotak input berada dalam [mode shell](#shell-mode-with-prefix), pencarian riwayat `Ctrl+R`, atau [dikte suara](https://code.claude.com/docs/id/voice-dictation.md).

530 526 

531Pemeriksaan ejaan dimatikan secara default, dan Claude Code tidak memeriksa apa pun dalam [mode pembaca layar](https://code.claude.com/docs/id/accessibility.md). Memerlukan Claude Code v2.1.235 atau lebih baru.527Pemeriksaan ejaan nonaktif secara default, dan Claude Code tidak memeriksa apa pun dalam [mode pembaca layar](https://code.claude.com/docs/id/accessibility.md). Memerlukan Claude Code v2.1.235 atau yang lebih baru.

532 528 

533### Prasyarat529### Prasyarat

534 530 

535* Instal [aspell](https://github.com/GNUAspell/aspell), [hunspell](https://github.com/hunspell/hunspell), atau [ispell](https://en.wikipedia.org/wiki/Ispell) dan pastikan berada di `PATH` Anda. Claude Code menjalankan yang pertama dari ketiga program yang ditemukannya, dalam urutan itu, di setiap platform, termasuk shim `.cmd` yang diinstal pengelola paket di Windows.531* Instal [aspell](https://github.com/GNUAspell/aspell), [hunspell](https://github.com/hunspell/hunspell), atau [ispell](https://en.wikipedia.org/wiki/Ispell) dan pastikan program tersebut ada di `PATH` Anda. Claude Code menjalankan program pertama dari ketiganya yang ditemukannya, sesuai urutan tersebut, di setiap platform, termasuk shim `.cmd` yang dipasang oleh package manager di Windows.

536* Untuk memeriksa bahwa program berada di `PATH` Anda, jalankan `aspell --version`, `hunspell --version`, atau `ispell -v` di terminal Anda. Kesalahan "command not found" berarti belum berada di `PATH` Anda.532* Untuk memeriksa bahwa program tersebut ada di `PATH` Anda, jalankan `aspell --version`, `hunspell --version`, atau `ispell -v` di terminal Anda. Error "command not found" berarti program tersebut belum ada di `PATH` Anda.

537 533 

538### Nyalakan atau matikan pemeriksaan ejaan534### Mengaktifkan atau menonaktifkan pemeriksaan ejaan

539 535 

540Claude Code membaca pengaturan [`spellcheck`](https://code.claude.com/docs/id/settings-reference#spellcheck) dari tiga tempat, dan mengabaikannya di `.claude/settings.json` dan `.claude/settings.local.json` proyek. Nyalakan dari mana pun yang Anda gunakan:536Claude Code membaca pengaturan [`spellcheck`](https://code.claude.com/docs/id/settings-reference#spellcheck) dari tiga tempat, dan mengabaikannya di `.claude/settings.json` dan `.claude/settings.local.json` milik proyek. Aktifkan dari tempat mana pun yang Anda gunakan:

541 537 

542> [tab] Pengaturan pengguna538> [tab] Pengaturan pengguna

543>539>

544> Tambahkan `spellcheck` ke `~/.claude/settings.json`. Ini berlaku di setiap proyek yang Anda buka, seperti sisa [pengaturan pengguna](https://code.claude.com/docs/id/settings.md#where-settings-live) Anda:540> Tambahkan `spellcheck` ke `~/.claude/settings.json`. Pengaturan ini berlaku di setiap proyek yang Anda buka, seperti [pengaturan pengguna](https://code.claude.com/docs/id/settings.md#where-settings-live) Anda lainnya:

545>541>

546> ```json theme={null}542> ```json theme={null}

547> {543> {


559> }555> }

560> ```556> ```

561>557>

562> Kemudian teruskan file ke `--settings`. Ini berlaku untuk sesi itu saja:558> Kemudian berikan file tersebut ke `--settings`. Pengaturan ini hanya berlaku untuk sesi tersebut:

563>559>

564> ```bash theme={null}560> ```bash theme={null}

565> claude --settings spellcheck.json561> claude --settings spellcheck.json


567 563 

568> [tab] Pengaturan terkelola564> [tab] Pengaturan terkelola

569>565>

570> Tambahkan `spellcheck` ke salah satu [sumber pengaturan terkelola](https://code.claude.com/docs/id/permissions.md#managed-settings) organisasi Anda. Ini berlaku untuk setiap pengguna yang menerima pengaturan tersebut, dan mereka tidak dapat mematikannya:566> Tambahkan `spellcheck` ke salah satu [sumber pengaturan terkelola](https://code.claude.com/docs/id/permissions.md#managed-settings) organisasi Anda. Pengaturan ini berlaku untuk setiap pengguna yang menerima pengaturan tersebut, dan mereka tidak dapat menonaktifkannya:

571>567>

572> ```json theme={null}568> ```json theme={null}

573> {569> {


575> }571> }

576> ```572> ```

577 573 

578Untuk memeriksa bahwa pemeriksaan ejaan aktif, ketik kata yang salah eja dan spasi. Claude Code menggarisbawahi kata tersebut. Jika tidak, lihat [Ketika Claude Code tidak menggarisbawahi apa pun](#when-claude-code-underlines-nothing). Untuk mematikan pemeriksaan ejaan lagi, atur `enabled` ke `false` di tempat yang sama, atau hapus `spellcheck`.574Untuk memeriksa bahwa pemeriksaan ejaan aktif, ketik kata yang salah eja dan sebuah spasi. Claude Code akan menggarisbawahi kata tersebut. Jika tidak, lihat [Saat Claude Code tidak menggarisbawahi apa pun](#when-claude-code-underlines-nothing). Untuk menonaktifkan pemeriksaan ejaan lagi, atur `enabled` ke `false` di tempat yang sama, atau hapus `spellcheck`.

579 575 

580Untuk memilih program mana dari ketiga program yang Claude Code jalankan, kamus mana yang digunakan, atau warna garis bawah, tambahkan salah satu dari bidang ini di sebelah `enabled`, di tempat yang sama:576Untuk memilih program mana dari ketiganya yang dijalankan Claude Code, kamus mana yang digunakannya, atau warna garis bawah, tambahkan salah satu dari field berikut di samping `enabled`, di tempat yang sama:

581 577 

582* `checker`: `aspell`, `hunspell`, atau `ispell`. Claude Code tidak kembali dari pemeriksa yang Anda beri nama, dan memperlakukan nilai apa pun sebagai `auto`.578* `checker`: `aspell`, `hunspell`, atau `ispell`. Claude Code tidak beralih ke pemeriksa lain jika pemeriksa yang Anda sebutkan tidak tersedia, dan memperlakukan nilai apa pun selain ketiga nilai tersebut sebagai `auto`.

583* `language`: nama kamus dalam bentuk pemeriksa Anda, seperti `en_GB`. Claude Code mengabaikan nilai apa pun yang bukan nama kamus biasa, seperti jalur atau nama dengan spasi, dan pemeriksa menggunakan kamus defaultnya.579* `language`: nama kamus dalam format pemeriksa Anda, seperti `en_GB`. Claude Code mengabaikan nilai apa pun yang bukan nama kamus biasa, seperti path atau nama yang mengandung spasi, dan pemeriksa akan menggunakan kamus default-nya.

584* `color`: nama warna seperti `yellow`, atau nilai `#rrggbb`, `#rgb`, `rgb(r,g,b)`, `ansi256(n)`, atau `ansi:<name>`. Claude Code menggunakan warna kesalahan tema Anda secara default dan untuk nilai apa pun yang tidak dikenalinya.580* `color`: nama warna seperti `yellow`, atau nilai `#rrggbb`, `#rgb`, `rgb(r,g,b)`, `ansi256(n)`, atau `ansi:<name>`. Claude Code menggunakan warna error tema Anda secara default dan untuk nilai apa pun yang tidak dikenalinya.

585 581 

586Sebagai contoh, pengaturan `spellcheck` ini menjalankan hunspell dengan kamus `en_GB` dan menggarisbawahi kata-kata dalam warna kuning. Ini bekerja sama di `~/.claude/settings.json`, dalam file yang Anda teruskan ke `--settings`, dan dalam pengaturan terkelola:582Sebagai contoh, pengaturan `spellcheck` ini menjalankan hunspell dengan kamus `en_GB`-nya dan menggarisbawahi kata dengan warna kuning. Pengaturan ini bekerja dengan cara yang sama di `~/.claude/settings.json`, di file yang Anda berikan ke `--settings`, dan di pengaturan terkelola:

587 583 

588```json theme={null}584```json theme={null}

589{585{


596}592}

597```593```

598 594 

599Jika lebih dari satu dari tiga tempat memiliki pengaturan `spellcheck`, Claude Code hanya menggunakan satu dari mereka: pengaturan terkelola terlebih dahulu, kemudian `--settings`, kemudian pengaturan pengguna. Ini tidak menggabungkan bidang dari dua tempat. Sebagai contoh, ketika `--settings` menetapkan `spellcheck`, `language` dalam pengaturan pengguna Anda tidak berpengaruh.595Jika lebih dari satu dari ketiga tempat tersebut memiliki pengaturan `spellcheck`, Claude Code hanya menggunakan salah satunya: pengaturan terkelola terlebih dahulu, kemudian `--settings`, kemudian pengaturan pengguna. Claude Code tidak menggabungkan field dari dua tempat. Sebagai contoh, saat `--settings` mengatur `spellcheck`, `language` di pengaturan pengguna Anda tidak berpengaruh.

600 596 

601### Apa yang Claude Code garisbawahi597### Apa yang digarisbawahi Claude Code

602 598 

603Tidak lama setelah Anda berhenti mengetik, Claude Code menggarisbawahi kata-kata yang tidak diketahui kamus. Ini membiarkan kata yang masih Anda ketik sendirian sampai Anda melewatinya, dan tidak pernah mengubah teks Anda. Ini juga melewati teks yang terlihat seperti kode:599Sesaat setelah Anda berhenti mengetik, Claude Code menggarisbawahi kata-kata yang tidak dikenal oleh kamus. Claude Code membiarkan kata yang masih Anda ketik sampai Anda melewatinya. Claude Code juga melewati teks yang terlihat seperti kode:

604 600 

605* Perintah seperti `/help`, penyebutan `@`, URL, jalur file, dan bendera seperti `--verbose`601* Perintah seperti `/help`, mention `@`, URL, path file, dan flag seperti `--verbose`

606* Kata-kata dengan digit, garis bawah, atau huruf besar setelah yang pertama, dan teks dalam backtick602* Kata yang mengandung angka, garis bawah, atau huruf kapital setelah huruf pertama, serta teks di dalam backtick

607 603 

608Claude Code juga melewati teks Cina, Jepang, Korea, Thai, Lao, Khmer, dan Myanmar.604Claude Code juga melewati teks bahasa Tionghoa, Jepang, Korea, Thai, Lao, Khmer, dan Myanmar.

609 605 

610Claude Code tidak memiliki daftar kata sendiri: sebuah kata salah eja ketika pemeriksa Anda mengatakan demikian. Untuk menghentikan Claude Code dari menggarisbawahi sebuah kata, tambahkan kata tersebut ke kamus pribadi pemeriksa Anda, mengikuti dokumentasi pemeriksa sendiri. Claude Code mengambil kata baru setelah Anda memulainya ulang.606Claude Code tidak memiliki daftar kata sendiri: sebuah kata dianggap salah eja jika pemeriksa Anda menyatakannya demikian. Untuk menghentikan Claude Code menggarisbawahi sebuah kata, tambahkan kata tersebut ke kamus pribadi pemeriksa Anda, dengan mengikuti dokumentasi pemeriksa tersebut. Claude Code akan mengenali kata baru tersebut setelah Anda memulai ulang Claude Code.

611 607 

612### Ketika Claude Code tidak menggarisbawahi apa pun608### Saat Claude Code tidak menggarisbawahi apa pun

613 609 

614Claude Code tidak menggarisbawahi apa pun ketika tidak dapat menjaga pemeriksa tetap berjalan:610Claude Code tidak menggarisbawahi apa pun saat tidak dapat menjaga pemeriksa tetap berjalan:

615 611 

616* Tidak ada pemeriksa yang diinstal, atau yang Anda beri nama dalam `checker` hilang612* Tidak ada pemeriksa yang terinstal, atau pemeriksa yang Anda sebutkan di `checker` tidak ada

617* Pemeriksa gagal dua kali berturut-turut, saat startup atau nanti dalam sesi. Claude Code memulainya ulang setelah kegagalan pertama dan berhenti memeriksa setelah yang kedua, sampai Anda memulai ulang Claude Code613* Pemeriksa gagal dua kali berturut-turut, saat startup atau kemudian dalam sesi. Claude Code memulai ulang pemeriksa setelah kegagalan pertama dan berhenti memeriksa setelah kegagalan kedua, hingga Anda memulai ulang Claude Code

618* Pemeriksa membutuhkan waktu lebih dari 15 detik untuk menjawab, tiga kali. Setiap kali, Claude Code membiarkan kata-kata yang ditungguinya tidak ditandai; setelah yang ketiga, berhenti memeriksa sampai Anda memulai ulang Claude Code614* Pemeriksa membutuhkan lebih dari 15 detik untuk menjawab, sebanyak tiga kali. Setiap kali, Claude Code membiarkan kata-kata yang sedang ditunggunya tanpa tanda; setelah kali ketiga, Claude Code berhenti memeriksa hingga Anda memulai ulang Claude Code

619 615 

620Untuk mengetahui mana dari ini yang terjadi, mulai `claude --debug` dengan pemeriksaan ejaan aktif dan ketik sebuah kata. Kemudian cari baris `[spellcheck]` dalam log debug di `~/.claude/debug/<session-id>.txt`. Satu baris menamai program yang dimulai Claude Code, atau mencantumkan yang dicarinya dan tidak ditemukan. Baris-baris kemudian mengatakan mengapa berhenti. Kesalahan kamus yang hilang di sana berarti pemeriksa tidak memiliki kamus untuk nilai `language` Anda, atau tidak ada default ketika `language` tidak diatur. Instal satu, atau atur `language` ke kamus yang Anda miliki.616Untuk mengetahui mana yang terjadi, jalankan `claude --debug` dengan pemeriksaan ejaan aktif dan ketik sebuah kata. Kemudian cari baris `[spellcheck]` di log debug di `~/.claude/debug/<session-id>.txt`. Satu baris menyebutkan program yang dijalankan Claude Code, atau mencantumkan program yang dicarinya dan tidak ditemukan. Baris-baris berikutnya menyebutkan alasan pemeriksaan berhenti. Error kamus tidak ditemukan di sana berarti pemeriksa tidak memiliki kamus untuk nilai `language` Anda, atau tidak memiliki kamus default saat `language` tidak diatur. Instal kamus, atau atur `language` ke kamus yang Anda miliki.

621 617 

622## Karakter tak terlihat dalam prompt618## Karakter tak terlihat dalam prompt

623 619 

keybindings.md +7 −2

Details

581 581 

582Claude Code mengikat chord default ini pada awalan `ctrl+x`, berdasarkan konteks:582Claude Code mengikat chord default ini pada awalan `ctrl+x`, berdasarkan konteks:

583 583 

584* `Chat`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s`, dan `ctrl+x tab`584* `Chat`: `ctrl+x ctrl+k`, `ctrl+x ctrl+e`, `ctrl+x enter`, `ctrl+x ctrl+a`, `ctrl+x ctrl+s`, `ctrl+x tab`, `ctrl+x ctrl+=`, `ctrl+x ctrl+-`, `ctrl+x ctrl+_`, `ctrl+x =`, dan `ctrl+x -`

585* `Task`: `ctrl+x ctrl+b`585* `Task`: `ctrl+x ctrl+b`

586* `DiffPanel`: `ctrl+x b`586* `DiffPanel`: `ctrl+x b`

587* `Pane`: `ctrl+x left`, `ctrl+x right`, `ctrl+x up`, `ctrl+x down`, dan `ctrl+x x`587* `Pane`: `ctrl+x left`, `ctrl+x right`, `ctrl+x up`, `ctrl+x down`, dan `ctrl+x x`


631 "ctrl+x ctrl+a": null,631 "ctrl+x ctrl+a": null,

632 "ctrl+x ctrl+s": null,632 "ctrl+x ctrl+s": null,

633 "ctrl+x tab": null,633 "ctrl+x tab": null,

634 "ctrl+x ctrl+=": null,

635 "ctrl+x ctrl+-": null,

636 "ctrl+x ctrl+_": null,

637 "ctrl+x =": null,

638 "ctrl+x -": null,

634 "ctrl+x": "chat:newline"639 "ctrl+x": "chat:newline"

635 }640 }

636 }641 }


716Claude Code memvalidasi pintasan keyboard Anda dan menulis peringatan ke log debug untuk:721Claude Code memvalidasi pintasan keyboard Anda dan menulis peringatan ke log debug untuk:

717 722 

718* Parse errors (JSON atau struktur tidak valid)723* Parse errors (JSON atau struktur tidak valid)

719* Modifier yang salah eja, seperti `ctl+k`. Claude Code menghapus bagian yang tidak dikenalinya dan menerapkan binding ke keystroke yang tersisa, `k` dalam contoh ini.724* Modifier yang salah eja, seperti `ctl+k`. Claude Code mengabaikan seluruh binding tersebut. Perbaiki modifier-nya, menjadi `ctrl+k` dalam contoh ini.

720* Spasi di samping `+` dalam string kunci, seperti `ctrl+ k`. Claude Code membaca string tersebut sebagai [chord](#chords) dari `ctrl+` diikuti oleh `k`. Tidak ada penekanan tombol yang cocok dengan `ctrl+` saja, sehingga binding tidak pernah aktif. Hapus spasinya.725* Spasi di samping `+` dalam string kunci, seperti `ctrl+ k`. Claude Code membaca string tersebut sebagai [chord](#chords) dari `ctrl+` diikuti oleh `k`. Tidak ada penekanan tombol yang cocok dengan `ctrl+` saja, sehingga binding tidak pernah aktif. Hapus spasinya.

721* Nama konteks tidak valid726* Nama konteks tidak valid

722* Nilai action tidak valid, seperti action yang bukan string atau `null`727* Nilai action tidak valid, seperti action yang bukan string atau `null`

llm-gateway.md +4 −0

Details

43 43 

44Untuk membuat gateway yang dicapai melalui `ANTHROPIC_BASE_URL` menjadi satu-satunya tujuan yang dapat digunakan mesin terkelola, atur [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders) ke `["customEndpoint"]` dalam file pengaturan terkelola yang sama dan masukkan `ANTHROPIC_BASE_URL` gateway dalam blok `env` file tersebut. Claude Code kemudian menolak sesi yang ditunjukkan ke tempat lain, termasuk ke Anthropic secara langsung atau ke proxy pengembang sendiri, dan menerima `ANTHROPIC_BASE_URL` hanya dengan nilai yang Anda tetapkan di sana. Untuk gateway yang dicapai melalui variabel titik akhir khusus penyedia seperti `ANTHROPIC_BEDROCK_BASE_URL`, entri `allowedProviders` mengatakan variabel mana yang akan dikunci. Memerlukan Claude Code v2.1.285 atau lebih baru.44Untuk membuat gateway yang dicapai melalui `ANTHROPIC_BASE_URL` menjadi satu-satunya tujuan yang dapat digunakan mesin terkelola, atur [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders) ke `["customEndpoint"]` dalam file pengaturan terkelola yang sama dan masukkan `ANTHROPIC_BASE_URL` gateway dalam blok `env` file tersebut. Claude Code kemudian menolak sesi yang ditunjukkan ke tempat lain, termasuk ke Anthropic secara langsung atau ke proxy pengembang sendiri, dan menerima `ANTHROPIC_BASE_URL` hanya dengan nilai yang Anda tetapkan di sana. Untuk gateway yang dicapai melalui variabel titik akhir khusus penyedia seperti `ANTHROPIC_BEDROCK_BASE_URL`, entri `allowedProviders` mengatakan variabel mana yang akan dikunci. Memerlukan Claude Code v2.1.285 atau lebih baru.

45 45 

46> [!NOTE]

47>

48> Dengan Desktop yang masuk ke claude.ai, sesi Cowork di mesin pengguna dihitung sebagai [`"anthropic"`](https://code.claude.com/docs/id/settings-reference#allowedproviders). Jika Anda tidak menyertakannya dalam daftar ini di kebijakan MDM atau file pengaturan terkelola, sesi tersebut ditolak. Jika disertakan, sesi yang dikirim langsung ke Anthropic juga lolos dari daftar ini.

49 

46## Langganan dan gateway50## Langganan dan gateway

47 51 

48Sementara [variabel kredensial gateway](https://code.claude.com/docs/id/llm-gateway-connect.md#set-the-credential-variable) atau `apiKeyHelper` aktif, permintaan membawa kredensial itu menggantikan login langganan claude.ai pengembang, dan batas penggunaan langganan tidak berlaku untuk mereka. Claude Code menyimpan login claude.ai yang tersimpan di mesin tetapi tidak mengirimnya dengan permintaan tersebut. Lalu lintas itu ditagih per token kepada siapa pun yang memiliki kredensial yang diteruskan gateway, seperti akun Anthropic Console organisasi Anda, atau akun Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry Anda ketika gateway merutekan ke sana.52Sementara [variabel kredensial gateway](https://code.claude.com/docs/id/llm-gateway-connect.md#set-the-credential-variable) atau `apiKeyHelper` aktif, permintaan membawa kredensial itu menggantikan login langganan claude.ai pengembang, dan batas penggunaan langganan tidak berlaku untuk mereka. Claude Code menyimpan login claude.ai yang tersimpan di mesin tetapi tidak mengirimnya dengan permintaan tersebut. Lalu lintas itu ditagih per token kepada siapa pun yang memiliki kredensial yang diteruskan gateway, seperti akun Anthropic Console organisasi Anda, atau akun Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry Anda ketika gateway merutekan ke sana.

Details

156 156 

157### Konflik dengan login yang ada157### Konflik dengan login yang ada

158 158 

159Variabel kredensial gateway diutamakan daripada login claude.ai yang disimpan atau kunci Console. Dengan `ANTHROPIC_AUTH_TOKEN`, variabel langsung diutamakan. Dengan `ANTHROPIC_API_KEY`, Anda diminta sekali dalam mode interaktif untuk menyetujui kunci sebelum kunci tersebut diutamakan.159Permintaan Anda menggunakan variabel kredensial gateway, bukan login claude.ai yang disimpan. Dengan `ANTHROPIC_AUTH_TOKEN`, variabel langsung diutamakan. Dengan `ANTHROPIC_API_KEY`, Anda diminta sekali dalam mode interaktif untuk menyetujui kunci sebelum kunci tersebut mulai digunakan.

160 160 

161Jalankan `/status` untuk mengonfirmasi sumber kredensial mana yang aktif. Jika startup menampilkan peringatan konflik auth yang menamai dua sumber, lihat baris pertama [tabel pemecahan masalah](#troubleshoot-gateway-errors) untuk mengetahui mana yang harus dihapus. Untuk menghapus login yang disimpan sehingga hanya kredensial gateway yang tersisa, jalankan `/logout`.161Jalankan `/status` untuk mengonfirmasi sumber kredensial mana yang aktif. Jika startup menampilkan peringatan konflik auth yang menamai dua sumber, lihat baris pertama [tabel pemecahan masalah](#troubleshoot-gateway-errors) untuk mengetahui mana yang harus dihapus. Untuk menghapus login yang disimpan sehingga hanya kredensial gateway yang tersisa, jalankan `/logout`.

162 162 


506 506 

507| Kesalahan | Penyebab | Perbaikan |507| Kesalahan | Penyebab | Perbaikan |

508| :- | :- | :- |508| :- | :- | :- |

509| Peringatan startup yang menamai dua sumber kredensial dan berakhir dengan `auth may not work as expected`. Versi lebih lama menampilkan `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set` sebagai gantinya. | Kredensial gateway dan login yang disimpan keduanya aktif; variabel digunakan untuk permintaan, tetapi login basi dapat menyebabkan perilaku auth yang tidak terduga | Batalkan pengaturan variabel untuk menggunakan login yang disimpan, atau jalankan `/logout` untuk menggunakan kredensial gateway |509| Peringatan startup yang menamai dua sumber kredensial dan berakhir dengan `auth may not work as expected`. Versi lebih lama menampilkan `Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set` sebagai gantinya. | Kredensial gateway dan login yang disimpan keduanya aktif | Batalkan pengaturan variabel untuk menggunakan login yang disimpan, atau jalankan `/logout` untuk menggunakan kredensial gateway |

510| Kesalahan `401` yang menamai token yang tidak valid atau tidak dikenali | Kredensial bukan yang dikeluarkan gateway, atau berada di header yang tidak dibaca gateway | Konfirmasi variabel cocok dengan jenis kredensial Anda di [tabel kredensial](#set-the-credential-variable), dan regenerasi kunci di gateway jika itu dicabut |510| Kesalahan `401` yang menamai token yang tidak valid atau tidak dikenali | Kredensial bukan yang dikeluarkan gateway, atau berada di header yang tidak dibaca gateway | Konfirmasi variabel cocok dengan jenis kredensial Anda di [tabel kredensial](#set-the-credential-variable), dan regenerasi kunci di gateway jika itu dicabut |

511| `Your apiKeyHelper script is failing`, atau `apiKeyHelper failed:` pada stderr dalam mode non-interaktif | Perintah dalam pengaturan [`apiKeyHelper`](https://code.claude.com/docs/id/settings-reference#apikeyhelper) tidak menghasilkan kunci yang dapat digunakan, sehingga permintaan membawa kunci placeholder | Jalankan perintah secara langsung untuk melihat mengapa itu gagal, dan autentikasi ulang dengan penyedia kredensial Anda jika itu melaporkan sesi yang kedaluwarsa; lihat [referensi kesalahan](https://code.claude.com/docs/id/errors.md#your-apikeyhelper-script-is-failing) |511| `Your apiKeyHelper script is failing`, atau `apiKeyHelper failed:` pada stderr dalam mode non-interaktif | Perintah dalam pengaturan [`apiKeyHelper`](https://code.claude.com/docs/id/settings-reference#apikeyhelper) tidak menghasilkan kunci yang dapat digunakan, sehingga permintaan membawa kunci placeholder | Jalankan perintah secara langsung untuk melihat mengapa itu gagal, dan autentikasi ulang dengan penyedia kredensial Anda jika itu melaporkan sesi yang kedaluwarsa; lihat [referensi kesalahan](https://code.claude.com/docs/id/errors.md#your-apikeyhelper-script-is-failing) |

512| `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)` ketika tidak ada yang menjawab di alamat, atau `Can't reach the API server — check your internet or DNS (ENOTFOUND)` ketika hostname tidak terselesaikan, sering setelah jeda senyap sementara Claude Code [mencoba ulang dengan backoff](https://code.claude.com/docs/id/errors.md#automatic-retries). Kode dalam tanda kurung bervariasi; [Unable to connect to API](https://code.claude.com/docs/id/errors.md#unable-to-connect-to-api) mencakup ejaan kode dan kata-kata sebelumnya | Tidak ada yang menjawab di URL dasar: alamatnya salah, atau VPN atau firewall memblokir jalur ke gateway | Jalankan [tes curl di atas](#verify-the-connection), yang gagal segera dengan penyebab yang sama, dan konfirmasi URL dan jalur jaringan dengan tim gateway Anda |512| `Connection refused — a firewall or proxy may be blocking it (ConnectionRefused)` ketika tidak ada yang menjawab di alamat, atau `Can't reach the API server — check your internet or DNS (ENOTFOUND)` ketika hostname tidak terselesaikan, sering setelah jeda senyap sementara Claude Code [mencoba ulang dengan backoff](https://code.claude.com/docs/id/errors.md#automatic-retries). Kode dalam tanda kurung bervariasi; [Unable to connect to API](https://code.claude.com/docs/id/errors.md#unable-to-connect-to-api) mencakup ejaan kode dan kata-kata sebelumnya | Tidak ada yang menjawab di URL dasar: alamatnya salah, atau VPN atau firewall memblokir jalur ke gateway | Jalankan [tes curl di atas](#verify-the-connection), yang gagal segera dengan penyebab yang sama, dan konfirmasi URL dan jalur jaringan dengan tim gateway Anda |


520| `/fast` melaporkan `Fast mode unavailable due to network connectivity issues` sementara permintaan inference bekerja | Pemeriksaan ketersediaan [fast mode](https://code.claude.com/docs/id/fast-mode.md) berjalan langsung ke `api.anthropic.com` dan tidak mengikuti `ANTHROPIC_BASE_URL`, jadi egress langsung yang diblokir gagal pemeriksaan | Tambahkan `api.anthropic.com` ke allowlist jika egress diblokir, atau atur variabel skip. Lihat [gunakan fast mode di belakang proxy dan LLM gateway](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |520| `/fast` melaporkan `Fast mode unavailable due to network connectivity issues` sementara permintaan inference bekerja | Pemeriksaan ketersediaan [fast mode](https://code.claude.com/docs/id/fast-mode.md) berjalan langsung ke `api.anthropic.com` dan tidak mengikuti `ANTHROPIC_BASE_URL`, jadi egress langsung yang diblokir gagal pemeriksaan | Tambahkan `api.anthropic.com` ke allowlist jika egress diblokir, atau atur variabel skip. Lihat [gunakan fast mode di belakang proxy dan LLM gateway](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

521| `/fast` melaporkan `Fast mode is currently unavailable` dalam sesi yang diautentikasi dengan kunci yang dikeluarkan gateway di `ANTHROPIC_API_KEY` | Selama `ANTHROPIC_BASE_URL` mengarah ke gateway Anda dan kunci tidak berformat kunci API Anthropic, Claude Code tidak mengirim pemeriksaan ketersediaan [fast mode](https://code.claude.com/docs/id/fast-mode.md). Tanpa pemeriksaan berhasil sebelumnya yang tersimpan di cache, Claude Code memperlakukan fast mode sebagai tidak tersedia | Atur `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`; lihat [gunakan fast mode di belakang proxy dan LLM gateway](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |521| `/fast` melaporkan `Fast mode is currently unavailable` dalam sesi yang diautentikasi dengan kunci yang dikeluarkan gateway di `ANTHROPIC_API_KEY` | Selama `ANTHROPIC_BASE_URL` mengarah ke gateway Anda dan kunci tidak berformat kunci API Anthropic, Claude Code tidak mengirim pemeriksaan ketersediaan [fast mode](https://code.claude.com/docs/id/fast-mode.md). Tanpa pemeriksaan berhasil sebelumnya yang tersimpan di cache, Claude Code memperlakukan fast mode sebagai tidak tersedia | Atur `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`; lihat [gunakan fast mode di belakang proxy dan LLM gateway](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

522| `/fast` melaporkan `Fast mode has been disabled by your organization` dalam sesi yang diautentikasi dengan `ANTHROPIC_AUTH_TOKEN`, meskipun organisasi memiliki fast mode yang diaktifkan | Pemeriksaan ketersediaan memerlukan login claude.ai atau kunci API; dengan hanya token bearer, Claude Code memperlakukan fast mode sebagai dinonaktifkan tanpa mengirim pemeriksaan | Atur `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`; lihat [gunakan fast mode di belakang proxy dan LLM gateway](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |522| `/fast` melaporkan `Fast mode has been disabled by your organization` dalam sesi yang diautentikasi dengan `ANTHROPIC_AUTH_TOKEN`, meskipun organisasi memiliki fast mode yang diaktifkan | Pemeriksaan ketersediaan memerlukan login claude.ai atau kunci API; dengan hanya token bearer, Claude Code memperlakukan fast mode sebagai dinonaktifkan tanpa mengirim pemeriksaan | Atur `CLAUDE_CODE_SKIP_FAST_MODE_ORG_CHECK=1`; lihat [gunakan fast mode di belakang proxy dan LLM gateway](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) |

523| `/feedback` menyimpan file lokal dalam sesi yang menggunakan `ANTHROPIC_BASE_URL` | Di belakang gateway, `ANTHROPIC_AUTH_TOKEN` dan kunci yang tidak berformat kunci API Anthropic bukanlah kredensial Anthropic. Tanpa kredensial tersebut, Claude Code menulis laporan ke arsip lokal di bawah `~/.claude/feedback-bundles/` alih-alih mengirimkannya | Kirim file tersebut ke perwakilan akun Anthropic Anda atau lampirkan ke permintaan dukungan. Lihat [layanan telemetri](https://code.claude.com/docs/id/data-usage.md#telemetry-services) |

523| Claude Code meminta Anda untuk masuk meskipun [tes curl](#verify-the-connection) berhasil | CLI tidak memiliki kredensial sendiri: URL dasar yang dapat dijangkau bukan satu, dan dalam sesi interaktif blok `env` di `.claude/settings.json` atau `.claude/settings.local.json` proyek hanya berlaku setelah wizard first-run dan [prompt kepercayaan](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) | Atur `ANTHROPIC_AUTH_TOKEN` di mana pun Claude Code membaca sebelum pengaturan first-run: ekspor shell, blok `env` di `~/.claude/settings.json`, atau pengaturan terkelola |524| Claude Code meminta Anda untuk masuk meskipun [tes curl](#verify-the-connection) berhasil | CLI tidak memiliki kredensial sendiri: URL dasar yang dapat dijangkau bukan satu, dan dalam sesi interaktif blok `env` di `.claude/settings.json` atau `.claude/settings.local.json` proyek hanya berlaku setelah wizard first-run dan [prompt kepercayaan](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) | Atur `ANTHROPIC_AUTH_TOKEN` di mana pun Claude Code membaca sebelum pengaturan first-run: ekspor shell, blok `env` di `~/.claude/settings.json`, atau pengaturan terkelola |

524| `ANTHROPIC_API_KEY` diatur tetapi diabaikan, tanpa prompt | Kunci memerlukan persetujuan satu kali dalam sesi interaktif, dan kunci yang sebelumnya ditolak diabaikan tanpa bertanya lagi | Aktifkannya di bawah `/config` dengan opsi `Use custom API key` |525| `ANTHROPIC_API_KEY` diatur tetapi diabaikan, tanpa prompt | Kunci memerlukan persetujuan satu kali dalam sesi interaktif, dan kunci yang sebelumnya ditolak diabaikan tanpa bertanya lagi | Aktifkannya di bawah `/config` dengan opsi `Use custom API key` |

525| `This machine's managed settings require a first-party login`, atau [`Administrator policy requires a Cloud gateway sign-in`](https://code.claude.com/docs/id/errors#administrator-policy-requires-a-cloud-gateway-sign-in) ketika pengaturan terkelola menetapkan `forceLoginMethod` ke `"gateway"` atau juga menetapkan `forceLoginGatewayUrl` | Pengaturan terkelola menyertakan `forceLoginMethod` atau `forceLoginOrgUUID`, yang tidak dapat hidup berdampingan dengan `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` | Administrator Anda harus menghapus `forceLoginMethod`, `forceLoginOrgUUID`, dan `forceLoginGatewayUrl` dari pengaturan terkelola untuk menggunakan kredensial gateway, atau menghapus kredensial gateway dan menggunakan sign-in yang diminta pengaturan terkelola. Keduanya tidak dapat digabungkan |526| `This machine's managed settings require a first-party login`, atau [`Administrator policy requires a Cloud gateway sign-in`](https://code.claude.com/docs/id/errors#administrator-policy-requires-a-cloud-gateway-sign-in) ketika pengaturan terkelola menetapkan `forceLoginMethod` ke `"gateway"` atau juga menetapkan `forceLoginGatewayUrl` | Pengaturan terkelola menyertakan `forceLoginMethod` atau `forceLoginOrgUUID`, yang tidak dapat hidup berdampingan dengan `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` | Administrator Anda harus menghapus `forceLoginMethod`, `forceLoginOrgUUID`, dan `forceLoginGatewayUrl` dari pengaturan terkelola untuk menggunakan kredensial gateway, atau menghapus kredensial gateway dan menggunakan sign-in yang diminta pengaturan terkelola. Keduanya tidak dapat digabungkan |

Details

142claude -p "Reply with one word: connected"142claude -p "Reply with one word: connected"

143```143```

144 144 

145**Checkpoint**: prompt mengembalikan respons, dan permintaan muncul dalam log gateway sebagai `POST` ke jalur `/v1/messages` dengan status `200`. Claude Code menambahkan string kueri seperti `?beta=true`, jadi cocokkan pada jalur, bukan URL lengkap. Dua pesan kegagalan menunjuk ke arah berbeda:145**Checkpoint**: prompt mengembalikan respons, dan permintaan muncul dalam log gateway sebagai `POST` ke jalur `/v1/messages` dengan status `200`. Claude Code menambahkan string kueri seperti `?beta=true`, jadi cocokkan pada jalur, bukan URL lengkap. Periksa pesan kegagalannya:

146 146 

147* `Not logged in`: periksa log gateway untuk membedakan dua penyebab. Jika kosong, tidak ada kredensial yang mencapai sesi dan tidak ada permintaan yang meninggalkan mesin; jalankan kembali ekspor di shell yang Anda uji. Jika menunjukkan permintaan yang ditolak dengan `x-api-key` dalam badan `401`, gateway mengharapkan kunci di header itu; beralih ke `ANTHROPIC_API_KEY`147* `Not logged in`: periksa log gateway. Jika kosong, tidak ada kredensial yang mencapai sesi dan tidak ada permintaan yang meninggalkan mesin; jalankan kembali ekspor di shell yang Anda gunakan untuk menguji. Jika menunjukkan `401` dari gateway yang menyebutkan `x-api-key`, gateway mengharapkan kunci di header itu; beralih ke `ANTHROPIC_API_KEY`. Jika menunjukkan `401` dari `api.anthropic.com` atau endpoint penyedia Anda, perbaiki kredensial penyedia yang dipegang gateway

148* `Failed to authenticate. API Error: 401` berarti kredensial dikirim dan ditolak, dan log gateway mengatakan di mana: `401` yang menyebutkan `api.anthropic.com` atau endpoint penyedia Anda berarti gateway mencapai upstream tetapi kredensial penyedia yang dipegang gateway ditolak, jadi kunci pengembang bekerja dan kredensial penyedia yang dipegang gateway salah atau placeholder148* `Failed to authenticate. API Error: 401` berarti kredensial dikirim dan ditolak, dan log gateway mengatakan di mana: `401` yang menyebutkan `api.anthropic.com` atau endpoint penyedia Anda berarti gateway mencapai upstream tetapi kredensial penyedia yang dipegang gateway ditolak, jadi kunci pengembang bekerja dan kredensial penyedia yang dipegang gateway salah atau placeholder

149 149 

150URL dasar yang salah atau tidak dapat dijangkau menghasilkan gejala berbeda: Claude Code [mencoba ulang koneksi dengan backoff](https://code.claude.com/docs/id/errors.md#automatic-retries) dan dapat duduk tanpa output selama beberapa menit sebelum melaporkan kesalahan. Jika perintah tampak hang, periksa log gateway daripada menunggu; tidak ada permintaan yang tiba berarti `ANTHROPIC_BASE_URL` tidak menunjuk ke gateway.150URL dasar yang salah atau tidak dapat dijangkau menghasilkan gejala berbeda: Claude Code [mencoba ulang koneksi dengan backoff](https://code.claude.com/docs/id/errors.md#automatic-retries) dan dapat duduk tanpa output selama beberapa menit sebelum melaporkan kesalahan. Jika perintah tampak hang, periksa log gateway daripada menunggu; tidak ada permintaan yang tiba berarti `ANTHROPIC_BASE_URL` tidak menunjuk ke gateway.


247 247 

248Anda seharusnya melihat baris `data:` tiba secara bertahap. Seluruh respons tiba sekaligus setelah jeda berarti gateway membuffer, yang menghentikan Claude Code; `404` berarti nama model tidak dirutekan. Ulangi per nama model.248Anda seharusnya melihat baris `data:` tiba secara bertahap. Seluruh respons tiba sekaligus setelah jeda berarti gateway membuffer, yang menghentikan Claude Code; `404` berarti nama model tidak dirutekan. Ulangi per nama model.

249 249 

250Kemudian mulai `claude` dan kirim pesan. Setiap gejala pada langkah ini memiliki satu penyebab:250Kemudian mulai `claude`, kirim pesan, dan cocokkan apa yang Anda lihat:

251 251 

252* Prompt login berarti celah kredensial. Jalankan `/status` dan buka tab **Status**: ketika baris `Setting sources` tidak mencakup pengaturan terkelola, distribusi tidak mencapai mesin; ketika itu terjadi, kredensial pengembang tidak dikirimkan, jadi atur `ANTHROPIC_AUTH_TOKEN` atau `apiKeyHelper`252* Layar login, atau `Not logged in` tanpa entri baru di log gateway, berarti celah kredensial. Jalankan `/status` dan buka tab **Status**: ketika baris `Setting sources` tidak mencakup pengaturan terkelola, distribusi tidak mencapai mesin; ketika mencakupnya, kredensial pengembang tidak dikirimkan, jadi atur `ANTHROPIC_AUTH_TOKEN` atau `apiKeyHelper`

253* Kesalahan `Failed to authenticate` berarti gateway menolak permintaan; lognya mengatakan kredensial mana yang gagal. Penolakan yang dicatat gateway sendiri menyebutkan kunci pengembang, sementara `401` dari `api.anthropic.com` atau endpoint penyedia Anda berarti kredensial penyedia yang dipegang gateway ditolak253* `Please run /login · API Error: 401`, `Not logged in`, atau `Invalid API key` dengan `401` di log gateway: periksa siapa yang menulis `401` tersebut. Perbaiki kunci pengembang atau header-nya jika gateway yang menulisnya, atau kredensial penyedia yang dipegang gateway jika berasal dari `api.anthropic.com` atau endpoint penyedia Anda

254* Prompt persetujuan satu kali untuk kunci diharapkan pada penggunaan pertama ketika gateway mengharapkan kunci di header `x-api-key`, ditetapkan sebagai `ANTHROPIC_API_KEY`254* Prompt persetujuan satu kali untuk kunci diharapkan pada penggunaan pertama ketika gateway mengharapkan kunci di header `x-api-key`, ditetapkan sebagai `ANTHROPIC_API_KEY`

255 255 

256Jika organisasi Anda menggunakan [fast mode](https://code.claude.com/docs/id/fast-mode.md), jalankan `/fast` di sini juga: pemeriksaan ketersediaan memanggil `api.anthropic.com` secara langsung daripada mengikuti URL dasar gateway, sehingga sesi yang dirutekan gateway dapat melaporkan fast mode sebagai tidak tersedia atau dinonaktifkan meskipun inferensi berfungsi. [Gunakan fast mode di belakang proxy dan gateway LLM](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) memetakan setiap pesan ke variabel yang mengembalikannya, didistribusikan dengan [sisa konfigurasi](#distribute-the-configuration).256Jika organisasi Anda menggunakan [fast mode](https://code.claude.com/docs/id/fast-mode.md), jalankan `/fast` di sini juga: pemeriksaan ketersediaan memanggil `api.anthropic.com` secara langsung daripada mengikuti URL dasar gateway, sehingga sesi yang dirutekan gateway dapat melaporkan fast mode sebagai tidak tersedia atau dinonaktifkan meskipun inferensi berfungsi. [Gunakan fast mode di belakang proxy dan gateway LLM](https://code.claude.com/docs/id/fast-mode.md#use-fast-mode-behind-proxies-and-llm-gateways) memetakan setiap pesan ke variabel yang mengembalikannya, didistribusikan dengan [sisa konfigurasi](#distribute-the-configuration).

mcp.md +0 −2

Details

835 835 

836Server yang disediakan organisasi Anda melalui pengaturan terkelola [`managedMcpServers`](https://code.claude.com/docs/id/managed-mcp#provide-servers-through-managed-settings) menempati peringkat di atas semua ini, jadi ketika salah satu dari mereka menduplikasinya, Claude Code terhubung ke definisi organisasi. Memerlukan Claude Code v2.1.259 atau lebih baru.836Server yang disediakan organisasi Anda melalui pengaturan terkelola [`managedMcpServers`](https://code.claude.com/docs/id/managed-mcp#provide-servers-through-managed-settings) menempati peringkat di atas semua ini, jadi ketika salah satu dari mereka menduplikasinya, Claude Code terhubung ke definisi organisasi. Memerlukan Claude Code v2.1.259 atau lebih baru.

837 837 

838Jika Anda membuka sesi lokal di [Tab Kode aplikasi Desktop](https://code.claude.com/docs/id/desktop.md#mcp-servers-from-the-claude-desktop-chat-app) dengan nama server stdio yang sama di tingkat atas `~/.claude.json` (cakupan pengguna) dan di `.mcp.json`, Tab Kode menggunakan definisi `~/.claude.json`.

839 

840### Ekspansi variabel lingkungan dalam `.mcp.json`838### Ekspansi variabel lingkungan dalam `.mcp.json`

841 839 

842Claude Code mendukung ekspansi variabel lingkungan dalam file `.mcp.json`, memungkinkan tim untuk berbagi konfigurasi sambil mempertahankan fleksibilitas untuk jalur spesifik mesin dan nilai sensitif seperti kunci API.840Claude Code mendukung ekspansi variabel lingkungan dalam file `.mcp.json`, memungkinkan tim untuk berbagi konfigurasi sambil mempertahankan fleksibilitas untuk jalur spesifik mesin dan nilai sensitif seperti kunci API.

Details

147 147 

148## Konfigurasi Azure RBAC148## Konfigurasi Azure RBAC

149 149 

150Peran default `Azure AI User` dan `Cognitive Services User` mencakup semua izin yang diperlukan untuk memanggil model Claude.150Jika Anda melakukan autentikasi dengan Microsoft Entra ID atau bearer token yang diterbitkannya, tetapkan peran `Foundry User` atau `Cognitive Services User` kepada identitas Anda pada resource Foundry Anda. Anda mungkin masih melihat `Foundry User` dengan nama sebelumnya, `Azure AI User`.

151 151 

152Untuk izin yang lebih ketat, buat peran khusus dengan yang berikut:152Jika peran-peran ini tidak memenuhi kebutuhan Anda, lihat [dokumentasi RBAC Microsoft Foundry](https://learn.microsoft.com/en-us/azure/foundry/concepts/rbac-foundry) untuk peran khusus.

153 

154```json theme={null}

155{

156 "permissions": [

157 {

158 "dataActions": [

159 "Microsoft.CognitiveServices/accounts/providers/*"

160 ]

161 }

162 ]

163}

164```

165 

166Untuk detail, lihat [dokumentasi RBAC Microsoft Foundry](https://learn.microsoft.com/en-us/azure/ai-foundry/concepts/rbac-azure-ai-foundry).

167 153 

168## 1M token context window154## 1M token context window

169 155 

model-config.md +5 −3

Details

157 157 

158Ketika model aktif saat startup berasal dari pengaturan proyek atau terkelola alih-alih pilihan Anda sendiri, header startup menampilkan file pengaturan mana yang mengaturnya. Jalankan `/model` untuk menimpanya; pengaturan proyek atau terkelola diterapkan kembali pada peluncuran berikutnya. Pada platform yang menyematkan Claude Code dan mengatur [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/id/env-vars), konfigurasi model host diutamakan daripada pengaturan model terkelola, sementara allowlist `availableModels` terkelola tetap berlaku kecuali host menyediakan allowlist sendiri; [Pengecualian terhadap prioritas pengaturan terkelola](https://code.claude.com/docs/id/settings.md#exceptions-to-managed-settings-precedence) menjelaskan key dan variabel mana yang ditimpa oleh host.158Ketika model aktif saat startup berasal dari pengaturan proyek atau terkelola alih-alih pilihan Anda sendiri, header startup menampilkan file pengaturan mana yang mengaturnya. Jalankan `/model` untuk menimpanya; pengaturan proyek atau terkelola diterapkan kembali pada peluncuran berikutnya. Pada platform yang menyematkan Claude Code dan mengatur [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](https://code.claude.com/docs/id/env-vars), konfigurasi model host diutamakan daripada pengaturan model terkelola, sementara allowlist `availableModels` terkelola tetap berlaku kecuali host menyediakan allowlist sendiri; [Pengecualian terhadap prioritas pengaturan terkelola](https://code.claude.com/docs/id/settings.md#exceptions-to-managed-settings-precedence) menjelaskan key dan variabel mana yang ditimpa oleh host.

159 159 

160Jika Anda atau organisasi Anda mengonfigurasi [hook PreModelSwitch](https://code.claude.com/docs/id/hooks.md#premodelswitch), hook tersebut berjalan sebelum peralihan yang diminta diterapkan dan dapat memblokirnya atau meminta Anda untuk mengonfirmasi.160Jika Anda atau organisasi Anda mengonfigurasi [hook PreModelSwitch](https://code.claude.com/docs/id/hooks.md#premodelswitch), hook tersebut berjalan sebelum peralihan yang diminta diterapkan dan dapat memblokirnya atau meminta Anda untuk mengonfirmasi. Untuk mengetahui mengapa hook memblokir peralihan dan apa yang harus dilakukan, lihat [Model switch was blocked by a PreModelSwitch hook](https://code.claude.com/docs/id/errors.md#model-switch-was-blocked-by-a-premodelswitch-hook).

161 161 

162Ketika Claude Code tidak dapat mengetahui hook PreModelSwitch mana yang disediakan oleh [plugin terkelola](https://code.claude.com/docs/id/settings-reference.md#enabledplugins) organisasi Anda, misalnya karena plugin terkelola gagal dimuat, Claude Code menolak peralihan alih-alih menerapkannya tanpa pemeriksaan, dan memeriksa lagi pada setiap upaya baru. Lihat [Model switch was blocked by a PreModelSwitch hook](https://code.claude.com/docs/id/errors.md#model-switch-was-blocked-by-a-premodelswitch-hook) untuk pesan dan cara pemulihannya.162Jika [plugin terkelola](https://code.claude.com/docs/id/settings-reference.md#enabledplugins) atau hook-nya gagal dimuat, Anda tetap dapat beralih model. Hook PreModelSwitch milik plugin tersebut tidak berjalan, sehingga peralihan yang seharusnya diblokir oleh salah satunya dapat dilanjutkan. Hook PreModelSwitch lain yang berhasil dimuat tetap berjalan dan dapat memblokirnya. Jika Claude Code sebelum v2.1.323 menolak peralihan dengan `so organization-managed PreModelSwitch hooks could not be checked`, perbarui Claude Code.

163 

164Untuk melihat apa yang gagal, jalankan `/plugin` di sesi Anda dan buka [tab **Errors**](https://code.claude.com/docs/id/plugins/troubleshooting.md#failed-to-load-hooks-from-and-hooks-that-dont-fire). Jika tidak ada yang tercantum di sana, mulai sesi baru dengan `claude --debug` dari shell Anda dan beralih ke model lain, lalu baca [log debug](https://code.claude.com/docs/id/hooks.md#debug-hooks). Setelah Anda memperbaiki plugin, atau [pembaruan plugin](https://code.claude.com/docs/id/plugins/install.md#keep-plugins-updated) membawa perbaikan dari admin Anda ke mesin Anda, jalankan `/reload-plugins` di sesi Anda agar hook-nya berjalan.

163 165 

164Ketika Anda beralih model melalui metode `setModel()` [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), melalui aplikasi seperti [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md), atau dari perangkat yang terhubung melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md), Claude Code memeriksa nilainya saat peralihan:166Ketika Anda beralih model melalui metode `setModel()` [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), melalui aplikasi seperti [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md), atau dari perangkat yang terhubung melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md), Claude Code memeriksa nilainya saat peralihan:

165 167 


903 905 

904### Mengoreksi jendela untuk gateway atau ID model kustom906### Mengoreksi jendela untuk gateway atau ID model kustom

905 907 

906Salah satu dari peringatan saat startup berikut berarti Claude Code tidak mengenali ID model sesi Anda, sehingga Claude Code tidak dapat mengetahui context window model tersebut dan mengasumsikan 200K token:908Salah satu dari peringatan berikut berarti Claude Code tidak mengenali ID model sesi Anda, sehingga Claude Code tidak dapat mengetahui context window model tersebut dan mengasumsikan 200K token:

907 909 

908```text theme={null}910```text theme={null}

909⚠ Model "my-gateway-opus" isn't recognized · context assumed to be 200k tokens · ...911⚠ Model "my-gateway-opus" isn't recognized · context assumed to be 200k tokens · ...

Details

110| `CLAUDE_CODE_ENABLE_TELEMETRY` | Mengaktifkan pengumpulan telemetri (diperlukan) | `1` |110| `CLAUDE_CODE_ENABLE_TELEMETRY` | Mengaktifkan pengumpulan telemetri (diperlukan) | `1` |

111| `OTEL_METRICS_EXPORTER` | Jenis eksporter metrik, dipisahkan koma. Gunakan `none` untuk menonaktifkan | `console`, `otlp`, `prometheus`, `none` |111| `OTEL_METRICS_EXPORTER` | Jenis eksporter metrik, dipisahkan koma. Gunakan `none` untuk menonaktifkan | `console`, `otlp`, `prometheus`, `none` |

112| `OTEL_LOGS_EXPORTER` | Jenis eksporter log/event, dipisahkan koma. Gunakan `none` untuk menonaktifkan | `console`, `otlp`, `none` |112| `OTEL_LOGS_EXPORTER` | Jenis eksporter log/event, dipisahkan koma. Gunakan `none` untuk menonaktifkan | `console`, `otlp`, `none` |

113| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protokol untuk eksporter OTLP, berlaku untuk semua sinyal. Claude Code tidak memiliki protokol default, jadi atur ini atau variabel protokol spesifik sinyal untuk setiap eksporter `otlp` yang Anda aktifkan | `grpc`, `http/json`, `http/protobuf` |113| `OTEL_EXPORTER_OTLP_PROTOCOL` | Protokol untuk eksporter OTLP, berlaku untuk semua sinyal. Default-nya `http/protobuf` untuk endpoint `http://` atau `https://` yang valid. Untuk endpoint gRPC seperti `http://localhost:4317`, atur ini ke `grpc`. Default ini memerlukan Claude Code v2.1.323 atau lebih baru | `grpc`, `http/json`, `http/protobuf` |

114| `OTEL_EXPORTER_OTLP_ENDPOINT` | Endpoint kolektor OTLP untuk semua sinyal | `http://localhost:4317` |114| `OTEL_EXPORTER_OTLP_ENDPOINT` | Endpoint kolektor OTLP untuk semua sinyal | `http://localhost:4317` |

115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protokol untuk metrik, menimpa pengaturan umum | `grpc`, `http/json`, `http/protobuf` |115| `OTEL_EXPORTER_OTLP_METRICS_PROTOCOL` | Protokol untuk metrik, menimpa pengaturan umum | `grpc`, `http/json`, `http/protobuf` |

116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Endpoint metrik OTLP, menimpa pengaturan umum | `http://localhost:4318/v1/metrics` |116| `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` | Endpoint metrik OTLP, menimpa pengaturan umum | `http://localhost:4318/v1/metrics` |


431> * **Tidak ada spasi yang diizinkan**: nilai tidak dapat berisi spasi. Misalnya, `user.organizationName=My Company` tidak valid431> * **Tidak ada spasi yang diizinkan**: nilai tidak dapat berisi spasi. Misalnya, `user.organizationName=My Company` tidak valid

432> * **Format**: harus berupa pasangan kunci=nilai yang dipisahkan koma: `key1=value1,key2=value2`432> * **Format**: harus berupa pasangan kunci=nilai yang dipisahkan koma: `key1=value1,key2=value2`

433> * **Karakter yang diizinkan**: hanya karakter US-ASCII yang mengecualikan karakter kontrol, spasi, tanda kutip ganda, koma, titik koma, dan garis miring terbalik433> * **Karakter yang diizinkan**: hanya karakter US-ASCII yang mengecualikan karakter kontrol, spasi, tanda kutip ganda, koma, titik koma, dan garis miring terbalik

434> * **Karakter khusus**: karakter di luar rentang yang diizinkan harus dikodekan persen434> * **Karakter khusus**: karakter di luar rentang yang diizinkan harus dikodekan persen, dan `=` di dalam sebuah nilai harus ditulis sebagai `%3D`

435>435>

436> Untuk nilai yang memerlukan spasi, gunakan garis bawah atau camelCase sebagai gantinya. Contoh berikut menetapkan `org.name` dengan setiap bentuk:436> Untuk nilai yang memerlukan spasi, gunakan garis bawah atau camelCase sebagai gantinya. Contoh berikut menetapkan `org.name` dengan setiap bentuk:

437>437>


475 475 

476* **Anda menetapkannya di komputer yang menjalankan Desktop**: Desktop tidak meneruskan nilai yang Anda tetapkan di sana ke sesi SSH476* **Anda menetapkannya di komputer yang menjalankan Desktop**: Desktop tidak meneruskan nilai yang Anda tetapkan di sana ke sesi SSH

477* **Anda mengekspornya di `/etc/profile` atau file lain yang hanya dibaca oleh login shell**: nama tersebut tiba ketika Anda menjalankan `claude` dari login shell, tetapi tidak dalam sesi SSH Desktop. Desktop tidak memulai Claude Code melalui login shell. Sebagai gantinya, tetapkan variabel tersebut di bawah `env` dalam [file pengaturan terkelola](https://code.claude.com/docs/id/desktop.md#managed-settings) di mesin jarak jauh.477* **Anda mengekspornya di `/etc/profile` atau file lain yang hanya dibaca oleh login shell**: nama tersebut tiba ketika Anda menjalankan `claude` dari login shell, tetapi tidak dalam sesi SSH Desktop. Desktop tidak memulai Claude Code melalui login shell. Sebagai gantinya, tetapkan variabel tersebut di bawah `env` dalam [file pengaturan terkelola](https://code.claude.com/docs/id/desktop.md#managed-settings) di mesin jarak jauh.

478* **Sebuah nilai mengandung spasi**: Claude Code kemudian tidak menyalin satu pun kunci ke event atau titik data dan tidak melaporkan error. [Hapus spasi dari nilai tersebut](#multi-team-organization-support).478* **Sebuah nilai mengandung spasi**: Claude Code kemudian tidak menyalin satu pun kunci ke event atau titik data. Untuk melihat nilai mana yang mengandung spasi, jalankan `/status` dalam sesi di mesin jarak jauh. [Hapus spasi dari nilai tersebut](#multi-team-organization-support).

479* **Sesuatu yang lain sudah menetapkan variabel tersebut**: dalam sesi yang dimulai oleh aplikasi desktop, variabel yang sudah ditetapkan di lingkungan peluncuran [diutamakan daripada file pengaturan](https://code.claude.com/docs/id/settings-reference.md#how-env-values-interact-with-your-shell). [Log debug](https://code.claude.com/docs/id/debug-your-config.md) menyebutkan setiap variabel yang diabaikan. Ketika deployment Desktop pihak ketiga [menyebutkan endpoint OTLP](#how-managed-settings-lock-the-otlp-destination) dalam lingkungan yang disediakannya, lingkungan tersebut membawa `OTEL_RESOURCE_ATTRIBUTES` milik Desktop sendiri.479* **Sesuatu yang lain sudah menetapkan variabel tersebut**: dalam sesi yang dimulai oleh aplikasi desktop, variabel yang sudah ditetapkan di lingkungan peluncuran [diutamakan daripada file pengaturan](https://code.claude.com/docs/id/settings-reference.md#how-env-values-interact-with-your-shell). [Log debug](https://code.claude.com/docs/id/debug-your-config.md) menyebutkan setiap variabel yang diabaikan. Ketika deployment Desktop pihak ketiga [menyebutkan endpoint OTLP](#how-managed-settings-lock-the-otlp-destination) dalam lingkungan yang disediakannya, lingkungan tersebut membawa `OTEL_RESOURCE_ATTRIBUTES` milik Desktop sendiri.

480 480 

481### Konfigurasi contoh481### Konfigurasi contoh

Details

304claude --permission-mode plan304claude --permission-mode plan

305```305```

306 306 

307Tekan `Shift+Tab` lagi untuk keluar dari plan mode tanpa menyetujui rencana.307Saat tidak ada permintaan persetujuan yang terbuka, tekan `Shift+Tab` lagi untuk keluar dari plan mode. Pada permintaan persetujuan, tekan `Esc` terlebih dahulu, karena menekan `Shift+Tab` di sana akan menyetujui rencana.

308 308 

309### Meninjau dan menyetujui rencana309### Meninjau dan menyetujui rencana

310 310 


593> * Ketika Claude membaca [artifact yang dibuat orang lain](https://code.claude.com/docs/id/artifacts.md#read-an-artifact-shared-with-you), kasus persetujuan yang tercantum di bagian tersebut berlaku593> * Ketika Claude membaca [artifact yang dibuat orang lain](https://code.claude.com/docs/id/artifacts.md#read-an-artifact-shared-with-you), kasus persetujuan yang tercantum di bagian tersebut berlaku

594> * Pembacaan dari [jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths) meminta izin kepada Anda594> * Pembacaan dari [jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths) meminta izin kepada Anda

595> 3. Semua hal lainnya diteruskan ke pengklasifikasi, kecuali [penghapusan jalur kritis](#critical-paths) di bawah penanganan default-nya. Tool konektor dan tool MCP `requiresUserInteraction` yang langsung meminta izin kepada Anda pada langkah 1 juga tidak pernah mencapai pengklasifikasi, sehingga baik persetujuan yang diwajibkan organisasi maupun langkah persetujuan tidak disetujui secara otomatis595> 3. Semua hal lainnya diteruskan ke pengklasifikasi, kecuali [penghapusan jalur kritis](#critical-paths) di bawah penanganan default-nya. Tool konektor dan tool MCP `requiresUserInteraction` yang langsung meminta izin kepada Anda pada langkah 1 juga tidak pernah mencapai pengklasifikasi, sehingga baik persetujuan yang diwajibkan organisasi maupun langkah persetujuan tidak disetujui secara otomatis

596> * Dengan [Code Mode](https://code.claude.com/docs/id/code-mode.md#permission-checks) aktif, kode Claude diteruskan ke pengklasifikasi satu kali sebelum dijalankan, sedangkan panggilan tool di dalamnya tidak. Anda tetap dapat memblokir suatu panggilan dengan aturan `deny` atau mewajibkan permintaan izin dengan aturan `ask`, tetapi Claude dapat menjalankan perintah Bash dalam [bentuk yang tidak dicocokkan oleh aturan](https://code.claude.com/docs/id/permissions.md#bash-rule-limits)

596> 4. Jika pengklasifikasi memblokir, Claude menerima alasannya. Di sebagian besar sesi, alasan tersebut menyebutkan aturan yang dicocokkan pengklasifikasi, seperti `[Data Exfiltration]`, alih-alih memberikan penjelasan tertulis; lihat [Tinjau penolakan](https://code.claude.com/docs/id/auto-mode-config.md#review-denials)597> 4. Jika pengklasifikasi memblokir, Claude menerima alasannya. Di sebagian besar sesi, alasan tersebut menyebutkan aturan yang dicocokkan pengklasifikasi, seperti `[Data Exfiltration]`, alih-alih memberikan penjelasan tertulis; lihat [Tinjau penolakan](https://code.claude.com/docs/id/auto-mode-config.md#review-denials)

597>598>

598> [Mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal dan yang menangani `tool.check` juga dapat menyetujui suatu tindakan. Untuk kasus ketika persetujuannya tidak melewati aturan dan hook Anda, lihat [Perluas izin dengan hook](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).599> [Mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal dan yang menangani `tool.check` juga dapat menyetujui suatu tindakan. Untuk kasus ketika persetujuannya tidak melewati aturan dan hook Anda, lihat [Perluas izin dengan hook](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods).

permissions.md +1 −1

Details

784* Di luar repositori, Claude Code mengaitkan kepercayaan dengan direktori tempat Anda memulainya sebagai kuncinya, dan kepercayaan tersebut mencakup setiap subdirektori dari direktori itu kecuali repositori git yang bersarang di dalamnya, seperti hasil clone. Setiap subdirektori yang tercakup kemudian dianggap sebagai folder yang induknya telah Anda percayai.784* Di luar repositori, Claude Code mengaitkan kepercayaan dengan direktori tempat Anda memulainya sebagai kuncinya, dan kepercayaan tersebut mencakup setiap subdirektori dari direktori itu kecuali repositori git yang bersarang di dalamnya, seperti hasil clone. Setiap subdirektori yang tercakup kemudian dianggap sebagai folder yang induknya telah Anda percayai.

785* Ketika Anda memulai di direktori home Anda, Claude Code menyimpan kepercayaan hanya untuk sesi saat ini dan tidak menuliskannya ke disk; lihat catatan [pengamanan tambahan](https://code.claude.com/docs/id/security.md#additional-safeguards).785* Ketika Anda memulai di direktori home Anda, Claude Code menyimpan kepercayaan hanya untuk sesi saat ini dan tidak menuliskannya ke disk; lihat catatan [pengamanan tambahan](https://code.claude.com/docs/id/security.md#additional-safeguards).

786 786 

787Claude Code menampilkan dialog kepercayaan hanya dalam sesi interaktif. Eksekusi `claude -p` atau sesi SDK tidak pernah menampilkannya, dan memercayai folder induk tidak berlaku untuk aturan-aturan ini, sehingga [Apa yang berjalan sebelum Anda memercayai folder](#what-runs-before-you-trust-a-folder) menjelaskan konten repositori mana yang tetap digunakan Claude Code dalam masing-masing dari kedua situasi tersebut.787Ekstensi VS Code meminta kepercayaan yang sama, dalam dialog berjudul `Trust this folder in Claude Code?`, sebelum memulai sesi. Claude Code menampilkan dialog kepercayaan dalam sesi terminal interaktif, tetapi tidak dalam sesi `claude -p` atau SDK. Memercayai folder induk tidak berlaku untuk aturan-aturan ini. [Apa yang berjalan sebelum Anda memercayai folder](#what-runs-before-you-trust-a-folder) menjelaskan konten repositori mana yang tetap digunakan Claude Code dalam masing-masing situasi.

788 788 

789Sebelum memulai atau memulai ulang [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), Claude Code juga memeriksa kepercayaan workspace untuk direktori tempat sesi tersebut berjalan. Jika Anda menjalankan `claude --bg` dari terminal di direktori yang belum Anda percayai, dialog kepercayaan muncul terlebih dahulu dan sesi dimulai setelah Anda menerimanya. Di tempat dialog tidak dapat muncul, seperti dalam skrip, perintah tersebut justru keluar dengan error [`Workspace not trusted`](https://code.claude.com/docs/id/errors#workspace-not-trusted-when-dispatching-a-background-session).789Sebelum memulai atau memulai ulang [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), Claude Code juga memeriksa kepercayaan workspace untuk direktori tempat sesi tersebut berjalan. Jika Anda menjalankan `claude --bg` dari terminal di direktori yang belum Anda percayai, dialog kepercayaan muncul terlebih dahulu dan sesi dimulai setelah Anda menerimanya. Di tempat dialog tidak dapat muncul, seperti dalam skrip, perintah tersebut justru keluar dengan error [`Workspace not trusted`](https://code.claude.com/docs/id/errors#workspace-not-trusted-when-dispatching-a-background-session).

790 790 

Details

4 4 

5# Tambahkan komponen ke plugin5# Tambahkan komponen ke plugin

6 6 

7> Tambahkan skills, hooks, server MCP, dan setiap jenis komponen lainnya ke plugin Claude Code, dengan contoh yang memvalidasi untuk masing-masing.7> Tambahkan skills, hooks, server MCP, dan jenis komponen lainnya ke plugin Claude Code, dengan contoh yang memvalidasi untuk masing-masing.

8 8 

9Plugin Claude Code dibangun dari komponen, seperti skills, agents, hooks, dan server MCP. Setiap komponen memiliki folder default di plugin, kunci manifest opsional di `.claude-plugin/plugin.json` yang menggantikan atau menambah folder tersebut, dan nama yang dilihat pengguna. Untuk tabel bidang lengkap setiap kunci, lihat [referensi manifest](https://code.claude.com/docs/id/plugins/manifest-reference.md#fields).9Plugin Claude Code dibangun dari komponen, seperti skills, agents, hooks, dan server MCP. Setiap komponen memiliki folder default di plugin, kunci manifest opsional di `.claude-plugin/plugin.json` yang menggantikan atau menambah folder tersebut, dan nama yang dilihat pengguna. Untuk tabel bidang lengkap setiap kunci, lihat [referensi manifest](https://code.claude.com/docs/id/plugins/manifest-reference.md#fields).

10 10 


22 22 

23## Jelajahi direktori plugin23## Jelajahi direktori plugin

24 24 

25Explorer menunjukkan plugin contoh, `my-plugin`, yang memiliki satu dari setiap jenis komponen di lokasi defaultnya:25Explorer menunjukkan plugin contoh, `my-plugin`, yang memiliki komponen-komponen berikut di lokasi defaultnya:

26 26 

27* Skill review dan perintah `about`27* Skill review dan perintah `about`

28* Subagent security-review28* Subagent security-review


31* Gaya output dan tema warna31* Gaya output dan tema warna

32* Workflow route-audit32* Workflow route-audit

33* Executable `hello-plugin`33* Executable `hello-plugin`

34* Pengaturan default

35* Server MCP lokal dan language server Go34* Server MCP lokal dan language server Go

36 35 

37Setiap file adalah contoh valid terkecil dari formatnya, ada untuk menunjukkan bentuknya daripada untuk berguna: skill atau agent nyata membawa instruksi lengkap dan sering kali file pendukung, dan hook atau monitor nyata melakukan pekerjaan nyata. Bagian setelah explorer menggunakan file yang sama sebagai contoh mereka dan menautkan ke yang lebih lengkap. Pilih file atau folder untuk membaca tujuannya, lihat apa yang ada di dalamnya, dan temukan bagian yang mencakupnya.36Setiap file adalah contoh valid terkecil dari formatnya, ada untuk menunjukkan bentuknya daripada untuk berguna: skill atau agent nyata membawa instruksi lengkap dan sering kali file pendukung, dan hook atau monitor nyata melakukan pekerjaan nyata. Bagian setelah explorer menggunakan file yang sama sebagai contoh mereka dan menautkan ke yang lebih lengkap. Pilih file atau folder untuk membaca tujuannya, lihat apa yang ada di dalamnya, dan temukan bagian yang mencakupnya.

38 37 

39What goes in a plugin38What goes in a plugin

40 39 

41This example plugin, `my-plugin`, has one of every kind of component, each in its default location. Select a file or folder to read what it’s for and see what goes in it.40This example plugin, `my-plugin`, has the components listed here, each in its default location. Select a file or folder to read what it’s for and see what goes in it.

42 41 

43Plugin directory42Plugin directory

44 43 


178npx prettier --write .177npx prettier --write .

179```178```

180 179 

181`settings.json` di root plugin menyimpan [settings](https://code.claude.com/docs/id/settings-reference.md) yang berlaku sementara plugin diaktifkan, sehingga plugin dapat mengubah cara sesi berperilaku dan tidak hanya menambahkan komponen. Hanya dua kunci yang berlaku dari plugin, [`agent`](https://code.claude.com/docs/id/settings-reference#agent) dan [`subagentStatusLine`](https://code.claude.com/docs/id/settings-reference#subagentstatusline); setiap kunci lain dijatuhkan. Lihat [Default settings](#default-settings).

182 

183Yang ini menetapkan `agent`, yang menjalankan thread utama sesi sebagai agent `security-reviewer` plugin sendiri, sehingga system prompt, pembatasan tool, dan model agent itu berlaku untuk seluruh sesi:

184 

185```json theme={null}

186{

187 "agent": "security-reviewer"

188}

189```

190 

191[Server MCP](https://code.claude.com/docs/id/mcp.md) memberikan Claude tools dari sistem eksternal. Deklarasikan di `.mcp.json` di root plugin. Yang ini memulai server lokal dari script di dalam plugin, dan muncul di `/mcp` sebagai `plugin:my-plugin:db`:180[Server MCP](https://code.claude.com/docs/id/mcp.md) memberikan Claude tools dari sistem eksternal. Deklarasikan di `.mcp.json` di root plugin. Yang ini memulai server lokal dari script di dalam plugin, dan muncul di `/mcp` sebagai `plugin:my-plugin:db`:

192 181 

193```json theme={null}182```json theme={null}


484 473 

485claude.ai dan Cowork tidak memasang plugin yang memiliki direktori `bin/` level atas, termasuk yang Anda [distribusikan melalui pengaturan organisasi claude.ai](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory).474claude.ai dan Cowork tidak memasang plugin yang memiliki direktori `bin/` level atas, termasuk yang Anda [distribusikan melalui pengaturan organisasi claude.ai](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory).

486 475 

487### Pengaturan default

488 

489Untuk menetapkan default yang berlaku sementara plugin diaktifkan, tambahkan `settings.json` di root plugin, atau letakkan objek yang sama inline di kunci manifest `settings`. Dua kunci berlaku, `agent` dan `subagentStatusLine`, dan setiap kunci lain dijatuhkan.

490 

491Tetapkan `agent` untuk menjalankan salah satu agent plugin sendiri sebagai thread utama:

492 

493```json settings.json theme={null}

494{

495 "agent": "security-reviewer"

496}

497```

498 

499Muat plugin dan mulai sesi. Claude kemudian menjawab dalam percakapan utama dengan system prompt dan model agent `security-reviewer`.

500 

501Untuk semua yang dikontrol kunci, lihat pengaturan [`agent`](https://code.claude.com/docs/id/settings-reference#agent).

502 

503Ketika kunci yang sama ditetapkan di lebih dari satu tempat, aturan ini memutuskan nilai mana yang berlaku:

504 

505* **File atas manifest**: ketika keduanya ada dan `settings.json` menetapkan setidaknya satu kunci yang didukung, `settings.json` berlaku dan `settings` manifest diabaikan

506* **Pengaturan pengguna atas default plugin**: di seluruh sumber pengaturan, default plugin adalah layer terendah, jadi `agent` pengguna sendiri di `~/.claude/settings.json` menggantikan milik Anda

507* **Dua plugin menetapkan kunci yang sama**: nilai dari plugin yang dimuat terakhir berlaku, dan `claude --debug` mencatat `overrides setting`

508 

509Untuk bentuk `subagentStatusLine`, lihat [subagent status lines](https://code.claude.com/docs/id/statusline.md#subagent-status-lines).

510 

511### Tema dan output styles476### Tema dan output styles

512 477 

513Plugin dapat menyertakan color themes dan output styles. Keduanya muncul di picker yang sama dengan pengguna sendiri. Untuk salah satu, menetapkan kunci manifest menggantikan pemindaian folder.478Plugin dapat menyertakan color themes dan output styles. Keduanya muncul di picker yang sama dengan pengguna sendiri. Untuk salah satu, menetapkan kunci manifest menggantikan pemindaian folder.

Details

72* **`version`**: opsional. Menetapkannya membuat pengguna tetap pada versi itu sampai Anda mengubahnya; [Release a new version](https://code.claude.com/docs/id/plugins/host-marketplace.md#release-a-new-version) mengatakan kapan harus menetapkan atau menghilangkannya.72* **`version`**: opsional. Menetapkannya membuat pengguna tetap pada versi itu sampai Anda mengubahnya; [Release a new version](https://code.claude.com/docs/id/plugins/host-marketplace.md#release-a-new-version) mengatakan kapan harus menetapkan atau menghilangkannya.

73* **`author`**: siapa yang dikreditkan. `name` diperlukan di dalamnya; `email` dan `url` opsional.73* **`author`**: siapa yang dikreditkan. `name` diperlukan di dalamnya; `email` dan `url` opsional.

74 74 

75Setiap field lainnya ada di [manifest reference](https://code.claude.com/docs/id/plugins/manifest-reference.md#fields).75Field lainnya ada di [manifest reference](https://code.claude.com/docs/id/plugins/manifest-reference.md#fields).

76 76 

77Hanya `plugin.json` yang masuk ke dalam `.claude-plugin/`. Skill yang Anda tambahkan selanjutnya langsung di bawah `my-first-plugin/`, di sebelah folder itu.77Hanya `plugin.json` yang masuk ke dalam `.claude-plugin/`. Skill yang Anda tambahkan selanjutnya langsung di bawah `my-first-plugin/`, di sebelah folder itu.

78 78 


344 "PostToolUse": [344 "PostToolUse": [

345 {345 {

346 "matcher": "Write|Edit",346 "matcher": "Write|Edit",

347 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]347 "hooks": [{ "type": "command", "command": "f=$(jq -r '.tool_input.file_path') && npm run lint:fix -- \"$f\"" }]

348 }348 }

349 ]349 ]

350 }350 }

Details

4 4 

5# Referensi manifest plugin5# Referensi manifest plugin

6 6 

7> Referensi lengkap untuk plugin.json: setiap field dengan tipenya dan default, bentuk path yang diterima, dan skema userConfig serta variabel lingkungan.7> Referensi lengkap untuk plugin.json: field beserta tipe dan default-nya, bentuk path yang diterima, serta skema userConfig dan environment variable.

8 8 

9Manifest plugin adalah file `plugin.json` di direktori `.claude-plugin/` plugin. File ini membawa metadata plugin dan nilai [`userConfig`](#user-configuration) yang diminta Claude Code kepada pengguna. File ini juga mendeklarasikan komponen apa pun yang Anda tentukan secara inline atau simpan di luar [lokasi defaultnya](#standard-layout).9Manifest plugin adalah file `plugin.json` di direktori `.claude-plugin/` plugin. File ini membawa metadata plugin dan nilai [`userConfig`](#user-configuration) yang diminta Claude Code kepada pengguna. File ini juga mendeklarasikan komponen apa pun yang Anda tentukan secara inline atau simpan di luar [lokasi defaultnya](#standard-layout).

10 10 


141| [`termsOfServiceUrl`](#directory-listing-fields) | String | Tautan ketentuan layanan untuk listing plugin di direktori Anthropic. Claude Code tidak membacanya |141| [`termsOfServiceUrl`](#directory-listing-fields) | String | Tautan ketentuan layanan untuk listing plugin di direktori Anthropic. Claude Code tidak membacanya |

142| [`defaultEnabled`](#defaultenabled) | Boolean | Apakah plugin dimulai dalam keadaan aktif ketika pengguna belum mengaturnya. Default-nya `true` |142| [`defaultEnabled`](#defaultenabled) | Boolean | Apakah plugin dimulai dalam keadaan aktif ketika pengguna belum mengaturnya. Default-nya `true` |

143| [`dependencies`](#dependencies) | Array of strings or objects | Plugin yang harus diaktifkan agar plugin ini berfungsi |143| [`dependencies`](#dependencies) | Array of strings or objects | Plugin yang harus diaktifkan agar plugin ini berfungsi |

144| [`settings`](#settings) | Object | Pengaturan yang diterapkan Claude Code selama plugin aktif. Hanya `agent` dan `subagentStatusLine` yang berlaku |

145| [`userConfig`](#user-configuration) | Object | Nilai yang diminta Claude Code dari pengguna saat plugin diaktifkan |144| [`userConfig`](#user-configuration) | Object | Nilai yang diminta Claude Code dari pengguna saat plugin diaktifkan |

146| `types` | Path | File `.d.ts` yang mendeklarasikan nilai `$.state` dan kata benda `$` dari sebuah [mod](https://code.claude.com/docs/id/plugins/mods/reference.md#files) |145| `types` | Path | File `.d.ts` yang mendeklarasikan nilai `$.state` dan kata benda `$` dari sebuah [mod](https://code.claude.com/docs/id/plugins/mods/reference.md#files) |

147| [`channels`](#channels) | Array of objects | Channel pesan yang disediakan plugin, masing-masing terikat ke salah satu server MCP-nya |146| [`channels`](#channels) | Array of objects | Channel pesan yang disediakan plugin, masing-masing terikat ke salah satu server MCP-nya |


211 210 

212Plugin yang harus diaktifkan agar plugin ini berfungsi. Setiap entri berupa `"name"`, `"name@marketplace"`, atau `{ "name": "...", "marketplace": "...", "version": "..." }`. Nama tanpa marketplace di-resolve ke marketplace milik plugin ini sendiri. Lihat [batasan dependensi](https://code.claude.com/docs/id/plugins/dependencies.md).211Plugin yang harus diaktifkan agar plugin ini berfungsi. Setiap entri berupa `"name"`, `"name@marketplace"`, atau `{ "name": "...", "marketplace": "...", "version": "..." }`. Nama tanpa marketplace di-resolve ke marketplace milik plugin ini sendiri. Lihat [batasan dependensi](https://code.claude.com/docs/id/plugins/dependencies.md).

213 212 

214### `settings`

215 

216Pengaturan yang diterapkan Claude Code selama plugin aktif. Hanya `agent` dan `subagentStatusLine` yang berlaku; kunci lain dibuang saat pemuatan. `settings.json` di root plugin diutamakan daripada kunci ini. Lihat [Pengaturan default](https://code.claude.com/docs/id/plugins/components.md#default-settings).

217 

218## Component path forms213## Component path forms

219 214 

220Setiap kunci komponen menerima path relatif terhadap root plugin. `hooks`, `mcpServers`, `lspServers`, dan `experimental.monitors` juga menerima config inline, `commands` juga menerima peta objek, dan `mcpServers` juga menerima path bundle MCP dan URL. Contoh-contoh berikut menunjukkan setiap bentuk yang diterima sekali. Untuk apa yang dilakukan setiap komponen saat runtime, lihat [Plugin components](https://code.claude.com/docs/id/plugins/components.md).215Setiap kunci komponen menerima path relatif terhadap root plugin. `hooks`, `mcpServers`, `lspServers`, dan `experimental.monitors` juga menerima config inline, `commands` juga menerima peta objek, dan `mcpServers` juga menerima path bundle MCP dan URL. Contoh-contoh berikut menunjukkan setiap bentuk yang diterima sekali. Untuk apa yang dilakukan setiap komponen saat runtime, lihat [Plugin components](https://code.claude.com/docs/id/plugins/components.md).


626| Themes | `themes/` | File tema JSON |621| Themes | `themes/` | File tema JSON |

627| Monitors | `monitors/monitors.json` | Array monitors |622| Monitors | `monitors/monitors.json` | Array monitors |

628| Executables | `bin/` | File di sini ada di `PATH` tool Bash saat plugin diaktifkan, jadi Claude menjalankannya sebagai perintah bare. claude.ai dan Cowork tidak menginstal plugin yang memiliki direktori ini, termasuk yang Anda [distribusikan melalui pengaturan organisasi claude.ai](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory) |623| Executables | `bin/` | File di sini ada di `PATH` tool Bash saat plugin diaktifkan, jadi Claude menjalankannya sebagai perintah bare. claude.ai dan Cowork tidak menginstal plugin yang memiliki direktori ini, termasuk yang Anda [distribusikan melalui pengaturan organisasi claude.ai](https://claude.com/docs/plugins/org-sync#keep-executables-out-of-the-top-level-bin-directory) |

629| Settings | `settings.json` | Default `agent` dan `subagentStatusLine` diterapkan saat plugin diaktifkan |

630 624 

631Plugin yang menggunakan setiap lokasi default, ditambah folder `scripts/` yang dipanggil hook-nya, diatur seperti ini:625Plugin yang menggunakan lokasi default, ditambah folder `scripts/` yang dipanggil hook-nya, diatur seperti ini:

632 626 

633```text theme={null}627```text theme={null}

634deploy-tools/628deploy-tools/


655│ └── deploy-tool649│ └── deploy-tool

656├── scripts/650├── scripts/

657│ └── format.sh651│ └── format.sh

658├── settings.json

659├── .mcp.json652├── .mcp.json

660└── .lsp.json653└── .lsp.json

661```654```

Details

61 * Sesi berjalan dengan [kredensial `/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) untuk paket Team atau Enterprise61 * Sesi berjalan dengan [kredensial `/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) untuk paket Team atau Enterprise

62 62 

63 Pengguna dengan kunci API, atau yang menggunakan Amazon Bedrock, Agent Platform milik Google Cloud, atau Microsoft Foundry, hanya mendapatkan penjaga pada mesin yang memiliki pengaturan terkelola atau `managed-mcp.json`. Sesi yang berjalan dengan [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token) berumur panjang juga tidak dihitung sebagai login tersebut, bahkan ketika login Team atau Enterprise tersimpan di mesin.63 Pengguna dengan kunci API, atau yang menggunakan Amazon Bedrock, Agent Platform milik Google Cloud, atau Microsoft Foundry, hanya mendapatkan penjaga pada mesin yang memiliki pengaturan terkelola atau `managed-mcp.json`. Sesi yang berjalan dengan [`CLAUDE_CODE_OAUTH_TOKEN`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token) berumur panjang juga tidak dihitung sebagai login tersebut, bahkan ketika login Team atau Enterprise tersimpan di mesin.

64* **Penjaga melindungi apa yang Anda kelola.** Mod milik pengguna tidak dapat mengubah apa yang diterima atau diputuskan oleh hook terkelola Anda, system prompt, `CLAUDE.md` terkelola Anda dan instruksi terkelola lainnya, apa yang dibaca mod mana pun sebagai pengaturan, atau tool dan deskripsi dari server MCP terkelola Anda.64* **Penjaga melindungi apa yang Anda kelola.** Mod milik pengguna tidak dapat mengubah apa yang diterima atau diputuskan oleh hook terkelola Anda, system prompt, atau `CLAUDE.md` terkelola Anda dan instruksi terkelola lainnya. Mod tersebut juga tidak dapat mengubah apa yang dibaca mod mana pun sebagai pengaturan, atau tool dan deskripsi dari server MCP terkelola Anda setelah server tersebut terhubung.

65* **Di luar apa yang Anda kelola, mod milik pengguna bertindak sebagai pengguna tersebut.** Mod mempertahankan izin pengguna tersebut: mod masih dapat membaca dan menulis file, memulai proses, dan membuat permintaan jaringan. Mod juga dapat menulis ulang panggilan tool dan prompt, menolak panggilan tool, dan menggambar di antarmuka.65* **Pada v2.1.323 atau yang lebih baru, mod milik pengguna dapat mencegah server MCP terkelola terhubung.** Dalam sesi pengguna tersebut, `/mcp` mencantumkan server tersebut sebagai ditahan oleh mod tersebut. Untuk mencegahnya, [hentikan mod yang diinstal pengguna agar tidak dimuat](#stop-user-installed-mods-from-loading).

66* **Di luar apa yang Anda kelola, mod milik pengguna bertindak sebagai pengguna tersebut.** Mod mempertahankan izin pengguna tersebut: mod masih dapat membaca dan menulis file, memulai proses, dan membuat permintaan jaringan. Mod juga dapat menulis ulang panggilan tool dan prompt, menolak panggilan tool, menambahkan atau menghapus tool, dan menggambar di antarmuka.

66* **Aturan izin dan hook `PreToolUse` diutamakan daripada mod milik pengguna.** Dengan penjaga dimuat, secara default mod milik pengguna tidak dapat menyetujui panggilan yang ditolak oleh aturan `deny` atau yang memerlukan permintaan izin menurut aturan `ask`, di file pengaturan mana pun aturan tersebut berada. Mod juga tidak dapat menyetujui panggilan yang diblokir oleh hook `PreToolUse` mana pun.67* **Aturan izin dan hook `PreToolUse` diutamakan daripada mod milik pengguna.** Dengan penjaga dimuat, secara default mod milik pengguna tidak dapat menyetujui panggilan yang ditolak oleh aturan `deny` atau yang memerlukan permintaan izin menurut aturan `ask`, di file pengaturan mana pun aturan tersebut berada. Mod juga tidak dapat menyetujui panggilan yang diblokir oleh hook `PreToolUse` mana pun.

67 68 

68 Aturan izin dan hook `PreToolUse` berlaku untuk panggilan tool Claude, bukan untuk [panggilan `$.fs` dan `$.process`](https://code.claude.com/docs/id/plugins/mods/api#reach-files-processes-and-the-network) milik mod. Dengan `Read(.env)` ditolak, mod masih dapat membaca file tersebut dengan `$.fs.read` atau memulai program yang melakukannya. Untuk membatasi panggilan `$.fs` dan `$.process` milik mod itu sendiri, [cegah mod agar tidak dimuat](#stop-user-installed-mods-from-loading) atau tangani panggilan tersebut dalam [mod kebijakan](#enforce-a-policy-with-a-mod-of-your-own).69 Aturan izin dan hook `PreToolUse` berlaku untuk panggilan tool Claude, bukan untuk [panggilan `$.fs` dan `$.process`](https://code.claude.com/docs/id/plugins/mods/api#reach-files-processes-and-the-network) milik mod. Dengan `Read(.env)` ditolak, mod masih dapat membaca file tersebut dengan `$.fs.read` atau memulai program yang melakukannya. Untuk membatasi panggilan `$.fs` dan `$.process` milik mod itu sendiri, [cegah mod agar tidak dimuat](#stop-user-installed-mods-from-loading) atau tangani panggilan tersebut dalam [mod kebijakan](#enforce-a-policy-with-a-mod-of-your-own).


159Baris `hooks:` dan `calls:` dalam output menjelaskan kode mod:160Baris `hooks:` dan `calls:` dalam output menjelaskan kode mod:

160 161 

161```text theme={null}162```text theme={null}

162 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane}163 ❯ ./register.js hooks: session.start, tool.call, ui.render{component=Pane} (default matcher key: plugin)

163 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open164 ❯ ./register.js calls: $.fs.read, $.http.fetch, $.store.set, $.ui.open

164```165```

165 166 

166Baris `hooks:` mencantumkan peristiwa yang diterima mod. Baris `calls:` mencantumkan metode API mod yang dipanggil kodenya. [API mod](https://code.claude.com/docs/id/plugins/mods/api.md), ditulis `$` dalam kode mod, adalah cara mod menjangkau file, proses, dan jaringan. Claude Code menolak untuk memuat mod yang menggunakan API mod dengan cara yang tidak dapat dibaca perintah ini.167* **`hooks:`**: peristiwa yang diterima mod. Catatan `default matcher key: plugin` berarti hook sebelumnya [melewati kontrol dan gambar mod lain](https://code.claude.com/docs/id/plugins/mods/events.md#hook-other-mods-drawings-and-controls).

168* **`calls:`**: metode API mod yang dipanggil kodenya

167 169 

168Lihat baris `calls:` untuk ini:170[API mod](https://code.claude.com/docs/id/plugins/mods/api.md), ditulis `$` dalam kode mod, adalah cara mod menjangkau file, proses, dan jaringan. Claude Code menolak untuk memuat mod yang menggunakan API mod dengan cara yang tidak dapat dibaca perintah ini.

171 

172Jangan menyetujui mod yang gagal dalam perintah ini, karena beberapa kegagalan tidak mencegahnya dimuat. Jalankan perintah ini pada Claude Code v2.1.323 atau yang lebih baru, di mana daftar yang panjang berlanjut ke baris-baris berikutnya dengan label yang sama, dan baca setiap baris `hooks:` dan `calls:`. Dalam baris `calls:`, cari hal-hal berikut:

169 173 

170| Panggilan | Apa artinya |174| Panggilan | Apa artinya |

171| :- | :- |175| :- | :- |


174| `$.http.fetch` | Membuat permintaan jaringan |178| `$.http.fetch` | Membuat permintaan jaringan |

175| `$.env.get`, `$.settings.read` | Membaca variabel lingkungan dan pengaturan, yang dapat menyimpan kunci API. Baris `env reads:` dalam output menyebutkan setiap variabel. |179| `$.env.get`, `$.settings.read` | Membaca variabel lingkungan dan pengaturan, yang dapat menyimpan kunci API. Baris `env reads:` dalam output menyebutkan setiap variabel. |

176| `$.env.set` | Menetapkan variabel lingkungan untuk Claude Code dan untuk setiap perintah dan server MCP yang dimulainya setelahnya, yang dapat mengubah apa yang dijalankan program tersebut. Baris `env writes:` menyebutkan setiap variabel. |180| `$.env.set` | Menetapkan variabel lingkungan untuk Claude Code dan untuk setiap perintah dan server MCP yang dimulainya setelahnya, yang dapat mengubah apa yang dijalankan program tersebut. Baris `env writes:` menyebutkan setiap variabel. |

177| `$.mcp.call` | Memanggil alat pada server MCP yang terhubung, di bawah aturan izin sesi |181| `$.mcp.call` | Memanggil tool pada server MCP yang terhubung, tanpa permintaan izin. Claude Code menolak panggilan tersebut di bawah aturan deny atau aturan ask terkelola. Claude Code juga menolak panggilan ke tool yang ditandai [`requiresUserInteraction`](https://code.claude.com/docs/id/mcp#require-approval-for-a-specific-tool), atau ke tool yang oleh organisasi Anda [diatur ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools) jika pengaturan tersebut menjangkau Claude Code. |

178| `$.model.complete` | Menggunakan paket atau kunci API pengguna untuk panggilan model |182| `$.model.complete` | Menggunakan paket atau kunci API pengguna untuk panggilan model |

179| `$.prompt.submit` | Mengirimkan prompt, dan dapat mengirimkannya sebagai kata-kata pengguna sendiri |183| `$.prompt.submit` | Mengirimkan prompt, dan dapat mengirimkannya sebagai kata-kata pengguna sendiri |

180| `$.session.send` | Mengirimkan pesan yang dibaca oleh Claude milik sesi lain, subagent, atau [rekan tim](https://code.claude.com/docs/id/agent-teams.md) |184| `$.session.send` | Mengirimkan pesan yang dibaca oleh Claude milik sesi lain, subagent, atau [rekan tim](https://code.claude.com/docs/id/agent-teams.md) |


316 320 

317Claude Code menaikkan peristiwa setiap kali akan bertindak, seperti menjalankan tool, dan meneruskannya ke setiap mod secara bergantian. Mod yang dihitung sebagai milik Anda [berjalan sebelum mod pengguna](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in) bahkan saat Anda tidak mencantumkannya di mana pun. Untuk menetapkan tempatnya, cantumkan id-nya dalam salah satu dari dua pengaturan. Id adalah nama plugin, `@`, dan nama marketplace, seperti `acme-guard@acme-tools`.321Claude Code menaikkan peristiwa setiap kali akan bertindak, seperti menjalankan tool, dan meneruskannya ke setiap mod secara bergantian. Mod yang dihitung sebagai milik Anda [berjalan sebelum mod pengguna](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in) bahkan saat Anda tidak mencantumkannya di mana pun. Untuk menetapkan tempatnya, cantumkan id-nya dalam salah satu dari dua pengaturan. Id adalah nama plugin, `@`, dan nama marketplace, seperti `acme-guard@acme-tools`.

318 322 

319* **`prependPlugins`**: mod Anda melihat setiap peristiwa sebelum mod pengguna apa pun dan setiap hasil setelahnya. Ini dapat mengubah peristiwa, menolaknya, atau melewati mod pengguna.323* **`prependPlugins`**: mod Anda melihat peristiwa sebelum mod pengguna apa pun, dan hasil peristiwa setelahnya. Ini dapat mengubah peristiwa, menolaknya, atau melewati mod pengguna. Pada v2.1.323 atau yang lebih baru, periksa bahwa hook Anda masih [menjangkau kontrol dan gambar mod lain](https://code.claude.com/docs/id/plugins/mods/events.md#hook-other-mods-drawings-and-controls).

320* **`appendPlugins`**: mod Anda berjalan setelah setiap mod pengguna, jadi hanya melihat peristiwa yang dilewatkan mod tersebut, dalam bentuk yang mereka lewatkan324* **`appendPlugins`**: mod Anda berjalan setelah setiap mod pengguna, jadi hanya melihat peristiwa yang dilewatkan mod tersebut, dalam bentuk yang mereka lewatkan

321 325 

322Contoh ini mendeklarasikan marketplace `acme-tools` di `/opt/acme/claude-plugins`, mengaktifkan `acme-guard` darinya, dan menjalankan mod itu terlebih dahulu, dengan penjaga bawaan setelahnya:326Contoh ini mendeklarasikan marketplace `acme-tools` di `/opt/acme/claude-plugins`, mengaktifkan `acme-guard` darinya, dan menjalankan mod itu terlebih dahulu, dengan penjaga bawaan setelahnya:


359 363 

360Setiap kali mod lain akan memuat, mod Anda menerima daftar yang dicetak `claude plugin validate`, dalam peristiwa bernama [`plugin.register`](https://code.claude.com/docs/id/plugins/mods/reference#other-mods). Mod dalam `prependPlugins` dapat membaca daftar itu dan menolak mod. Ini juga dapat [menangani panggilan API mods apa pun menurut nama](https://code.claude.com/docs/id/plugins/mods/api.md#reach-files-processes-and-the-network) untuk mencatat atau menolak panggilan itu untuk setiap mod lainnya. Nama adalah metode tanpa `$.`, jadi hook pada `fs.write` melihat setiap panggilan `$.fs.write`.364Setiap kali mod lain akan memuat, mod Anda menerima daftar yang dicetak `claude plugin validate`, dalam peristiwa bernama [`plugin.register`](https://code.claude.com/docs/id/plugins/mods/reference#other-mods). Mod dalam `prependPlugins` dapat membaca daftar itu dan menolak mod. Ini juga dapat [menangani panggilan API mods apa pun menurut nama](https://code.claude.com/docs/id/plugins/mods/api.md#reach-files-processes-and-the-network) untuk mencatat atau menolak panggilan itu untuk setiap mod lainnya. Nama adalah metode tanpa `$.`, jadi hook pada `fs.write` melihat setiap panggilan `$.fs.write`.

361 365 

366> [!NOTE]

367>

368> Pada v2.1.323 atau yang lebih baru, hook `ui.focus` memerlukan matcher yang lebih luas untuk menerima panggilan `$.ui.focus` dari mod lain. Lihat [Hook gambar dan kontrol mod lain](https://code.claude.com/docs/id/plugins/mods/events.md#hook-other-mods-drawings-and-controls).

369 

362Mod kebijakan ini menolak mod pengguna apa pun yang kodenya sendiri memanggil `$.process.run` atau `$.process.spawn`. Ini juga menyimpan log audit, menulis setiap panggilan tool dan setiap file yang ditulis mod ke log debug. Karena berjalan terlebih dahulu, log mencatat apa yang diminta, sebelum mod pengguna apa pun mengubahnya. Simpan sebagai `acme-guard/hooks/register.js`:370Mod kebijakan ini menolak mod pengguna apa pun yang kodenya sendiri memanggil `$.process.run` atau `$.process.spawn`. Ini juga menyimpan log audit, menulis setiap panggilan tool dan setiap file yang ditulis mod ke log debug. Karena berjalan terlebih dahulu, log mencatat apa yang diminta, sebelum mod pengguna apa pun mengubahnya. Simpan sebagai `acme-guard/hooks/register.js`:

363 371 

364```javascript acme-guard/hooks/register.js theme={null}372```javascript acme-guard/hooks/register.js theme={null}


403* **`e.tier`**: di mana mod akan berjalan, salah satu dari `prepend`, `user`, `append`, atau `builtin`. Setiap mod yang dipasang orang adalah `user`.411* **`e.tier`**: di mana mod akan berjalan, salah satu dari `prepend`, `user`, `append`, atau `builtin`. Setiap mod yang dipasang orang adalah `user`.

404* **`e.uses.calls`**: metode API mods yang dipanggil mod, masing-masing ditulis `namespace.method` seperti `process.run`, tanpa `$.` yang dicetak `claude plugin validate`412* **`e.uses.calls`**: metode API mods yang dipanggil mod, masing-masing ditulis `namespace.method` seperti `process.run`, tanpa `$.` yang dicetak `claude plugin validate`

405 413 

406Saat pengguna memasang mod yang memanggil `$.process.run`, mod tidak memuat, dan log debug mereka memiliki baris yang berakhir dengan `refused by acme-guard:` dan alasan Anda. Penolakan juga mencapai transkrip dalam [sesi yang memuat ulang panas direktori plugin](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing). Untuk memblokir panggilan tanpa menolak seluruh mod, kembalikan `{ deny: 'your reason' }` dari hook pada nama panggilan itu.414Saat pengguna memasang mod yang memanggil `$.process.run`, mod tidak memuat, dan log debug mereka memiliki baris yang berakhir dengan `refused by acme-guard:` dan alasan Anda. Penolakan juga mencapai transkrip dalam [sesi yang memuat ulang panas direktori plugin](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing).

415 

416Untuk memblokir panggilan tanpa menolak seluruh mod, kembalikan `{ deny: 'your reason' }` dari hook pada nama panggilan itu, setelah Anda [memeriksa siapa yang membuat panggilan tersebut](https://code.claude.com/docs/id/plugins/mods/reference.md#mods-api-calls).

407 417 

408Untuk mengirim baris audit ke tempat lain selain log debug, panggil `$.http.fetch` dari hook yang sama.418Untuk mengirim baris audit ke tempat lain selain log debug, panggil `$.http.fetch` dari hook yang sama.

409 419 

Details

21 21 

22Jelaskan mod yang Anda inginkan dalam sesi Claude Code interaktif, dan Claude menulisnya. Claude bekerja dari [skill](https://code.claude.com/docs/id/skills.md) bawaan bernama `plugin-authoring`, yang memberitahu di mana menulis mod, peristiwa dan metode apa yang dimiliki versi Anda, dan bagaimana mod dimuat. Claude dapat memuat skill ketika Anda meminta mod, atau Anda dapat memuatnya sendiri dengan menjalankan `/plugin-authoring` di prompt Claude Code.22Jelaskan mod yang Anda inginkan dalam sesi Claude Code interaktif, dan Claude menulisnya. Claude bekerja dari [skill](https://code.claude.com/docs/id/skills.md) bawaan bernama `plugin-authoring`, yang memberitahu di mana menulis mod, peristiwa dan metode apa yang dimiliki versi Anda, dan bagaimana mod dimuat. Claude dapat memuat skill ketika Anda meminta mod, atau Anda dapat memuatnya sendiri dengan menjalankan `/plugin-authoring` di prompt Claude Code.

23 23 

24Dalam [mode izin](https://code.claude.com/docs/id/permission-modes.md) `auto` dan `bypassPermissions`, mod dapat berjalan ketika giliran berakhir. Jika tidak, mod berjalan setelah Anda menyetujuinya, kecuali dalam [sesi di mana mod yang ditulis Claude tidak dapat dimuat](#sessions-that-skip-the-approval).24Dalam [mode izin](https://code.claude.com/docs/id/permission-modes.md) `auto` dan `bypassPermissions`, Claude Code [dapat memuat mod tanpa bertanya kepada Anda](#sessions-that-skip-the-approval). Agar ditanya terlebih dahulu, mulai sesi baru dalam mode `default` atau `acceptEdits`, atau [beralih](https://code.claude.com/docs/id/permission-modes.md#switch-permission-modes) ke salah satu mode tersebut sebelum Anda meminta mod pertama dalam sesi. Dalam [beberapa sesi](#sessions-that-cant-load), mod tidak dapat dimuat.

25 25 

26**1. Jelaskan mod**26**1. Jelaskan mod**

27 27 


33 33 

34**2. Setujui mod**34**2. Setujui mod**

35 35 

36Ketika Claude menyimpan file pertama, Claude Code menanyakan apakah akan mengaktifkan hot reloading untuk sesi. Hot reloading menjalankan mod yang ditulis Claude dalam sesi ini dan mengambil setiap perubahan kemudian. Jika tidak ada pertanyaan yang muncul, lewati langkah ini.36Ketika Claude menyimpan file pertama, Claude Code menanyakan apakah akan mengaktifkan hot reloading untuk sesi. Hot reloading menjalankan mod yang ditulis Claude dalam sesi ini dan mengambil setiap perubahan kemudian. Anda tidak melihat pertanyaan ini dalam sesi yang [memuat mod baru tanpa bertanya](#sessions-that-skip-the-approval) atau [tidak dapat memuatnya](#sessions-that-cant-load).

37 37 

38Pilih salah satu jawaban ini:38Pilih salah satu jawaban ini:

39 39 


57* **Dalam sesi yang Anda mulai**: di shell Anda, jalankan `claude --plugin-dir ~/mods/git-branch`57* **Dalam sesi yang Anda mulai**: di shell Anda, jalankan `claude --plugin-dir ~/mods/git-branch`

58* **Untuk orang lain**: [tambahkan ke marketplace](#share-your-mod) sehingga mereka dapat menginstalnya58* **Untuk orang lain**: [tambahkan ke marketplace](#share-your-mod) sehingga mereka dapat menginstalnya

59 59 

60### Sesi yang memuat mod tanpa bertanya

61 

62Claude Code dapat mengaktifkan hot reloading tanpa bertanya dalam mode `auto` dan `bypassPermissions`, dan mod dimuat ketika giliran berakhir.

63 

64Saat Anda melanjutkan sesi, secara interaktif atau dengan `claude -p`, mod yang sudah ada di folder mods sesi tersebut [dapat dimuat](#sessions-that-cant-load) tanpa bertanya. Untuk mencegah mod dimuat saat Anda melanjutkan sesi, hapus direktorinya.

65 

60### Sesi di mana mod yang ditulis Claude tidak dapat dimuat66### Sesi di mana mod yang ditulis Claude tidak dapat dimuat

61 67 

62Mod yang ditulis Claude dimuat dalam workspace terpercaya di mana mod diizinkan untuk berjalan, setelah Anda menyetujuinya dalam mode yang meminta persetujuan. Dalam sesi ini tidak dimuat:68Mod yang ditulis Claude tidak dimuat dalam kasus-kasus berikut, dan Claude Code tidak meminta untuk memuatnya:

63 69 

64* **Tidak ada yang ada untuk menyetujui**: sesi tidak dapat menampilkan prompt kepada Anda, seperti dalam run `claude -p` di luar mode `auto` dan `bypassPermissions`, atau [mode `dontAsk`](https://code.claude.com/docs/id/permission-modes)70* **Tidak ada yang ada untuk menyetujui**: sesi berada dalam [mode `dontAsk`](https://code.claude.com/docs/id/permission-modes), atau merupakan run `claude -p` yang menulis mod, dalam mode `default` atau `acceptEdits`, yang tidak dapat menampilkan pertanyaan hot reloading kepada Anda.

65* **Workspace tidak terpercaya**: Anda belum menerima prompt kepercayaan untuk direktori71* **Sesi interaktif di mana workspace tidak terpercaya**: Anda belum menerima prompt kepercayaan untuk direktori

66* **Mod dinonaktifkan**: Anda memulai dengan `--safe-mode` atau `--bare`, Anda menetapkan `disableAllHooks`, atau [pengaturan terkelola](https://code.claude.com/docs/id/plugins/mods/admin.md#choose-how-much-to-allow) organisasi Anda memblokirnya72* **Mod dinonaktifkan**: Anda memulai dengan `--safe-mode` atau `--bare`, Anda menetapkan `disableAllHooks`, atau [pengaturan terkelola](https://code.claude.com/docs/id/plugins/mods/admin.md#choose-how-much-to-allow) organisasi Anda memblokirnya

67 73 

68## Tulis mod sendiri74## Tulis mod sendiri


292 298 

293Periksa baris `hooks:` untuk peristiwa yang di-hook modul Anda, masing-masing dengan filternya dalam kurung kurawal, dan `calls:` untuk setiap metode mods API yang dipanggilnya. Jika modul Anda membaca atau menetapkan environment variable, cari juga baris `env reads:` dan `env writes:`, serta `state reads:` dan `state writes:` jika modul tersebut menggunakan [`$.state`](https://code.claude.com/docs/id/plugins/mods/interface#keep-state). Anda juga melihat satu baris untuk setiap hook yang dapat menolak suatu tindakan, seperti `gating hook without .catch: tool.call`, yang menunjukkan apakah hook tersebut memiliki [handler `.catch`](https://code.claude.com/docs/id/plugins/mods/events#handle-a-hook-that-fails).299Periksa baris `hooks:` untuk peristiwa yang di-hook modul Anda, masing-masing dengan filternya dalam kurung kurawal, dan `calls:` untuk setiap metode mods API yang dipanggilnya. Jika modul Anda membaca atau menetapkan environment variable, cari juga baris `env reads:` dan `env writes:`, serta `state reads:` dan `state writes:` jika modul tersebut menggunakan [`$.state`](https://code.claude.com/docs/id/plugins/mods/interface#keep-state). Anda juga melihat satu baris untuk setiap hook yang dapat menolak suatu tindakan, seperti `gating hook without .catch: tool.call`, yang menunjukkan apakah hook tersebut memiliki [handler `.catch`](https://code.claude.com/docs/id/plugins/mods/events#handle-a-hook-that-fails).

294 300 

295Jika event yang Anda maksudkan untuk ditangani hilang dari baris pertama, Claude Code juga tidak akan memanggil hook itu. Penyebab biasanya adalah nama event yang salah eja, yang dilaporkan perintah sebagai kesalahan seperti `"tool.calls" is not an event`.301Jika event yang Anda maksudkan untuk ditangani tidak ada di baris `hooks:`, Claude Code juga tidak akan memanggil hook itu. Penyebab biasanya adalah nama event yang salah eja, yang dilaporkan perintah sebagai kesalahan seperti `"tool.calls" is not an event`.

296 302 

297Ikuti aturan-aturan ini sehingga analisis statis dapat menemukan setiap hook dan panggilan:303Ikuti aturan-aturan ini sehingga analisis statis dapat menemukan setiap hook dan panggilan:

298 304 

Details

91 91 

92Daftarkan setiap peristiwa sekali per matcher. Jika Anda memanggil `on` dua kali untuk `session.start` tanpa matcher, modul gagal dimuat dengan `on("session.start") is registered twice without a matcher`. Masukkan semua yang dilakukan mod Anda saat memulai sesi dalam satu hook.92Daftarkan setiap peristiwa sekali per matcher. Jika Anda memanggil `on` dua kali untuk `session.start` tanpa matcher, modul gagal dimuat dengan `on("session.start") is registered twice without a matcher`. Masukkan semua yang dilakukan mod Anda saat memulai sesi dalam satu hook.

93 93 

94#### Hook gambar dan kontrol mod lain

95 

96Untuk melakukan hook pada kontrol, panel, atau baris di atas prompt milik mod lain, teruskan matcher dengan `plugin`. Gunakan nama mod tanpa marketplace-nya, seperti dalam `{ plugin: 'other-mod' }`, atau `{ plugin: '*' }` untuk setiap mod. Tanpa `plugin`, hook pada `ui.press`, `ui.input`, `ui.select`, atau `ui.focus` tidak berjalan untuk kontrol mod lain, dan hook `ui.render` melewati panel mereka dan baris mereka di atas prompt.

97 

98Hook pada wildcard tanpa matcher, seperti `on('*', hook)` atau `on('ui.*', hook)`, tetap berjalan untuk setiap mod. Wildcard dengan matcher juga memerlukan `plugin`.

99 

100> [!NOTE]

101>

102> `{ plugin: '*' }` memerlukan Claude Code v2.1.323 atau yang lebih baru. Sebelum v2.1.323, hook tanpa `plugin` berjalan untuk setiap mod, dan hook dengan `{ plugin: '*' }` tidak berjalan. Untuk mencocokkan setiap mod di kedua versi, gunakan `{ plugin: /./ }` pada `ui.press`, `ui.input`, dan `ui.select`. Untuk `ui.focus` dan `ui.render`, gunakan `on('ui.*', hook)` dan periksa nama peristiwa di `next.event`, seperti dalam `if (next.event !== 'ui.focus') return next(e)`.

103 

94## Hook apa yang dilakukan Claude104## Hook apa yang dilakukan Claude

95 105 

96Tangani peristiwa ini untuk melihat atau mengubah panggilan tool, prompt, giliran, atau pembacaan pengaturan saat terjadi. Untuk setiap peristiwa dan apa yang dapat dikembalikan hook, lihat [referensi peristiwa](https://code.claude.com/docs/id/plugins/mods/reference.md#events).106Tangani peristiwa ini untuk melihat atau mengubah panggilan tool, prompt, giliran, atau pembacaan pengaturan saat terjadi. Untuk setiap peristiwa dan apa yang dapat dikembalikan hook, lihat [referensi peristiwa](https://code.claude.com/docs/id/plugins/mods/reference.md#events).

Details

177 177 

178## Pilih tempat untuk menggambar178## Pilih tempat untuk menggambar

179 179 

180Hook `ui.render` berjalan untuk setiap titik render kecuali Anda mempersempitnya ke titik yang ingin Anda gambar. Untuk memilih titik render, berikan filter, yang disebut [matcher](https://code.claude.com/docs/id/plugins/mods/events.md#filter-which-events-a-hook-handles), sebagai argumen kedua untuk `on`. `{ component: 'Pane' }` menjalankan hook hanya untuk panel. Di dalam hook, `e.component` menyebutkan nama titik render, `e.surface` menyatakan aplikasi mana yang sedang menggambar, dan `e.props` menyimpan data milik titik render tersebut. Untuk panel, `e.requestId` adalah `id` yang Anda gunakan saat membukanya.180Untuk memilih titik render tempat hook `ui.render` menggambar, berikan filter, yang disebut [matcher](https://code.claude.com/docs/id/plugins/mods/events.md#filter-which-events-a-hook-handles), sebagai argumen kedua untuk `on`. `{ component: 'Pane' }` menjalankan hook hanya untuk panel. Di dalam hook, `e.component` menyebutkan nama titik render, `e.surface` menyatakan aplikasi mana yang sedang menggambar, dan `e.props` menyimpan data milik titik render tersebut. Untuk panel, `e.requestId` adalah `id` yang Anda gunakan saat membukanya.

181 181 

182Panel dan pita kosong hingga sebuah mod mengisinya. Pilih tab untuk melihat apa masing-masing dan cara menggambar di dalamnya:182Panel dan pita kosong hingga sebuah mod mengisinya. Pilih tab untuk melihat apa masing-masing dan cara menggambar di dalamnya:

183 183 


191 191 

192> [tab] Pita di atas prompt192> [tab] Pita di atas prompt

193>193>

194> Pita adalah jalur tepat di atas input prompt. Pita ini selalu ada, dan setiap mod berbagi pita tersebut.194> Pita adalah jalur tepat di atas input prompt. Setiap mod yang menggambar di sana mendapatkan barisnya sendiri, dan baris-baris tersebut bertumpuk dari atas sesuai [urutan mod berjalan](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in).

195>195>

196> Hook Anda mengembalikan sebuah tree untuk menampilkan sesuatu di pita, atau `next(e)` untuk tidak menampilkan apa pun. Sebuah tree menggantikan apa yang digambar di sana oleh mod [setelah milik Anda](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in). Untuk mempertahankan milik mereka, letakkan hasil `await next(e)` di antara children dari sebuah [`Box`](#build-a-tree-from-elements) dalam tree Anda.196> Untuk menggambar baris mod Anda, filter dengan `{ component: 'AbovePrompt' }` dan kembalikan sebuah [tree](#build-a-tree-from-elements). Untuk tidak menggambar apa pun, kembalikan `next(e)`.

197>197>

198> Untuk menggambar di pita, filter dengan `{ component: 'AbovePrompt' }`.198> Sebelum v2.1.323, semua mod berbagi satu gambar di pita, dan tree Anda menggantikan apa yang digambar oleh mod setelah milik Anda. Untuk mendukung rilis tersebut juga, letakkan hasil `await next(e)` di antara children dari sebuah [`Box` yang tetap valid](https://code.claude.com/docs/id/plugins/mods/troubleshoot#another-mods-band-shows-and-yours-doesnt). Pada v2.1.323 atau lebih baru, child tersebut tidak menggambar baris mod lain.

199 199 

200Sebuah mod juga dapat [menempatkan barisnya sendiri di transkrip](#place-a-row-in-the-transcript).200Sebuah mod juga dapat [menempatkan barisnya sendiri di transkrip](#place-a-row-in-the-transcript).

201 201 


281 281 

282Saat Claude bekerja, spinner beranimasi seperti sebelumnya, dan `under the spinner` muncul di bawahnya.282Saat Claude bekerja, spinner beranimasi seperti sebelumnya, dan `under the spinner` muncul di bawahnya.

283 283 

284Dialog izin bukan titik render, sehingga sebuah mod tidak dapat mengubah apa yang ditampilkannya. Dialog pertanyaan, `AskUserQuestion`, adalah titik render, sehingga sebuah mod dapat mengubahnya. Tree untuk dialog tersebut harus memuat referensi tepat satu kali, dengan elemen Anda di atasnya. Jika tidak, Claude Code menggambar dialognya sendiri.284Dialog izin bukan titik render, sehingga sebuah mod tidak dapat mengubah apa yang ditampilkannya. Dialog pertanyaan, `AskUserQuestion`, adalah titik render, sehingga sebuah mod dapat mengubah dialog tersebut ketika Claude mengajukan pertanyaan. Tree untuk dialog tersebut harus memuat referensi tepat satu kali, dengan elemen Anda di atasnya. Jika tidak, Claude Code menggambar dialognya sendiri.

285 285 

286### Buka panel pada waktu yang tepat286### Buka panel pada waktu yang tepat

287 287 

288Panel hanya muncul ketika mod Anda membukanya. Cara dan waktu Anda membukanya menentukan apakah panel tersebut mengambil fokus keyboard, berapa banyak ruang yang dimintanya, dan apakah panel tersebut ditampilkan sama sekali di terminal yang sempit.288Panel hanya muncul ketika mod Anda membukanya. Cara dan waktu Anda membukanya menentukan apakah panel tersebut mengambil fokus keyboard, berapa banyak ruang yang dimintanya, dan apakah panel tersebut ditampilkan sama sekali di terminal yang sempit.

289 289 

290Untuk membuka panel, panggil [`$.ui.open`](https://code.claude.com/docs/id/plugins/mods/reference#mods-api-methods) dengan `id` yang Anda pilih. `id` adalah nama panel: hook `ui.render` Anda memeriksanya, dan Anda memberikannya lagi untuk menutup panel.290Untuk membuka panel, panggil [`$.ui.open`](https://code.claude.com/docs/id/plugins/mods/reference#mods-api-methods) dengan `id` yang Anda pilih. `id` adalah nama panel: hook `ui.render` Anda memeriksanya, dan Anda memberikannya lagi untuk menutup panel. Jika mod lain memiliki panel yang terbuka dengan `id` tersebut, panggilan akan ditolak.

291 291 

292```javascript theme={null}292```javascript theme={null}

293await $.ui.open({ id: 'hello-tabs', title: 'Hello tabs', focus: true })293await $.ui.open({ id: 'hello-tabs', title: 'Hello tabs', focus: true })


399 399 

400> [!NOTE]400> [!NOTE]

401>401>

402> `$.theme.set` dan `$.theme.clear` menggantikan `$.ui.backdrop`, yang telah dihapus di Claude Code v2.1.319. Ubah `$.ui.backdrop({ id: 'your-backdrop' })` menjadi `$.theme.set({ backdrop: { id: 'your-backdrop' } })`, dan `$.ui.backdrop(undefined)` menjadi `$.theme.clear()`, yang menghapus latar belakang dari mod mana pun.402> `$.theme.set` dan `$.theme.clear` menggantikan `$.ui.backdrop`, yang telah dihapus di Claude Code v2.1.319. Ubah `$.ui.backdrop({ id: 'your-backdrop' })` menjadi panggilan `$.theme.set` seperti yang ada dalam contoh di bagian ini, dan `$.ui.backdrop(undefined)` menjadi `$.theme.clear()`, yang menghapus latar belakang dari mod mana pun.

403 403 

404Untuk memasang latar belakang di balik percakapan di aplikasi Desktop atau aplikasi seluler, panggil [`$.theme.set`](https://code.claude.com/docs/id/plugins/mods/reference#mods-api-methods) dengan `backdrop`, lalu gambar latar belakang tersebut pada titik render [`Backdrop`](https://code.claude.com/docs/id/plugins/mods/reference#render-sites). Untuk melepas latar belakang, panggil `$.theme.clear()`. Terminal tidak menggambar latar belakang. `$.theme.set` dan `$.theme.clear` memerlukan Claude Code v2.1.319 atau lebih baru.404Untuk memasang latar belakang di balik percakapan di aplikasi Desktop atau aplikasi seluler, panggil [`$.theme.set`](https://code.claude.com/docs/id/plugins/mods/reference#mods-api-methods) dengan `backdrop`, lalu gambar latar belakang tersebut pada titik render [`Backdrop`](https://code.claude.com/docs/id/plugins/mods/reference#render-sites). Untuk melepas latar belakang, panggil `$.theme.clear()`. Terminal tidak menggambar latar belakang. `$.theme.set` dan `$.theme.clear` memerlukan Claude Code v2.1.319 atau lebih baru.

405 405 

406Mod ini memasang latar belakang saat sesi dimulai, menggambar latar belakang tersebut, dan menambahkan perintah `/plain` yang melepas latar belakang:406Contoh ini memerlukan Claude Code v2.1.323 atau lebih baru, jadi [periksa versi Anda](https://code.claude.com/docs/id/plugins/mods/overview.md#turn-mods-on-or-off) terlebih dahulu. Mod ini memasang latar belakang saat sesi dimulai, menggambar latar belakang tersebut, dan menambahkan perintah `/plain` yang melepas latar belakang:

407 407 

408```javascript theme={null}408```javascript theme={null}

409export function register(on) {409export function register(on) {

410 // Neither a reload of this mod nor --resume keeps the backdrop, so set it here410 // Neither a reload of this mod nor --resume keeps the backdrop, so set it here

411 on('session.start', async ($, e, next) => {411 on('session.start', async ($, e, next) => {

412 await $.theme.set({ backdrop: { id: 'night-sky', colorScheme: 'dark' } })412 await $.theme.set({ backdrop: { scene: 'night-sky' }, overrideColorScheme: 'dark' })

413 await $.command.register({ name: 'plain', description: 'Take the backdrop off' })413 await $.command.register({ name: 'plain', description: 'Take the backdrop off' })

414 return next(e)414 return next(e)

415 })415 })

416 416 

417 on('ui.render', { component: 'Backdrop' }, async ($, e, next) => {417 on('ui.render', { component: 'Backdrop' }, async ($, e, next) => {

418 // This hook runs for every mod's backdrop, and another mod can use the same id418 // This hook runs for every mod's backdrop, and another mod can use the same scene

419 if (e.props.plugin !== $.plugin.name || e.props.id !== 'night-sky') return next(e)419 if (e.props.plugin !== $.plugin.name || e.props.scene !== 'night-sky') return next(e)

420 const { Box, Text } = $.ui.resolve(e)420 const { Box, Text } = $.ui.resolve(e)

421 return Box({ backgroundColor: 'blue', children: [Text({ children: ['Night sky'] })] })421 return Box({ backgroundColor: 'blue', children: [Text({ children: ['Night sky'] })] })

422 })422 })


428}428}

429```429```

430 430 

431> [!NOTE]

432>

433> Sebelum v2.1.323, tulis `id` sebagai pengganti `scene` dalam panggilan `$.theme.set` dan di `e.props`, serta pindahkan `overrideColorScheme` ke dalam `backdrop` sebagai `colorScheme`.

434 

431Untuk mencoba contoh ini, letakkan kode ini di sebuah [mod](https://code.claude.com/docs/id/plugins/mods/create.md) dan mulai sesi di aplikasi Desktop atau aplikasi seluler. Untuk melepas latar belakang, jalankan `/plain` di prompt Claude Code. Transkrip menampilkan `the theme is cleared` setelah nama mod, seperti `night-sky: the theme is cleared` untuk mod bernama `night-sky`.435Untuk mencoba contoh ini, letakkan kode ini di sebuah [mod](https://code.claude.com/docs/id/plugins/mods/create.md) dan mulai sesi di aplikasi Desktop atau aplikasi seluler. Untuk melepas latar belakang, jalankan `/plain` di prompt Claude Code. Transkrip menampilkan `the theme is cleared` setelah nama mod, seperti `night-sky: the theme is cleared` untuk mod bernama `night-sky`.

432 436 

433Periksa apa yang diterima `backdrop`, apa yang diberitahukan hasil panggilan kepada Anda, dan apa yang dapat diubah oleh mod lain:437Periksa apa yang diterima `backdrop`, apa yang diberitahukan hasil panggilan kepada Anda, dan apa yang dapat diubah oleh mod lain:

434 438 

435* **Field `backdrop`**: `id`, sebuah [nama](https://code.claude.com/docs/id/plugins/mods/reference.md#limits) yang Anda pilih, wajib diisi, dan field lainnya bersifat opsional. `colorScheme` bernilai `'light'` atau `'dark'` dan menyatakan apakah gambar Anda terang atau gelap. Untuk `glass`, lihat [tipe untuk build Anda](https://code.claude.com/docs/id/plugins/mods/create.md#get-the-types-for-your-build).439* **Field `backdrop`**: `scene` adalah [nama](https://code.claude.com/docs/id/plugins/mods/reference.md#limits) yang Anda pilih untuk latar belakang yang digambar oleh hook Anda. Untuk field lainnya dan `overrideColorScheme`, lihat [tipe untuk build Anda](https://code.claude.com/docs/id/plugins/mods/create.md#get-the-types-for-your-build).

436* **Apakah latar belakang digambar**: `$.theme.set` di-resolve dengan `isDrawn: true` ketika aplikasi Desktop atau seluler yang terhubung ke sesi menyatakan bahwa aplikasi tersebut menggambar latar belakang. Jika tidak, `isDrawn` bernilai `false` dan `reason` menjelaskan alasannya.440* **Apakah latar belakang digambar**: `$.theme.set` di-resolve dengan `isDrawn: true` ketika aplikasi Desktop atau seluler yang terhubung ke sesi menyatakan bahwa aplikasi tersebut menggambar latar belakang. Jika tidak, `isDrawn` bernilai `false` dan `reason` menjelaskan alasannya.

437* **Satu latar belakang untuk setiap sesi**: panggilan `$.theme.set` menggantikan latar belakang sesi dan `$.theme.clear()` menghapus latar belakang tersebut, mod mana pun yang memasangnya. Panggil `$.theme.clear()` hanya ketika pengguna memintanya.441* **Satu latar belakang untuk setiap sesi**: panggilan `$.theme.set` menggantikan latar belakang sesi dan `$.theme.clear()` menghapus latar belakang tersebut, mod mana pun yang memasangnya. Panggil `$.theme.clear()` hanya ketika pengguna memintanya.

438 442 


510>514>

511> Atur `rows` ke 2 atau lebih untuk [bidang yang menampung beberapa baris](https://code.claude.com/docs/id/plugins/mods/gallery.md#input).515> Atur `rows` ke 2 atau lebih untuk [bidang yang menampung beberapa baris](https://code.claude.com/docs/id/plugins/mods/gallery.md#input).

512 516 

513[Galeri antarmuka](https://code.claude.com/docs/id/plugins/mods/gallery.md) memiliki contoh dan tangkapan layar dari sebagian besar elemen. Tabel ini mencantumkan setiap elemen:517[Galeri antarmuka](https://code.claude.com/docs/id/plugins/mods/gallery.md) memiliki contoh dan tangkapan layar dari sebagian besar elemen. Tabel ini mencantumkan elemen-elemen utama:

514 518 

515| Elemen | Apa yang digambarnya | Di mana |519| Elemen | Apa yang digambarnya | Di mana |

516| :- | :- | :- |520| :- | :- | :- |


606Tes dan mod lain mengidentifikasi kontrol berdasarkan key-nya:610Tes dan mod lain mengidentifikasi kontrol berdasarkan key-nya:

607 611 

608* **Tes**: sebuah [tes](https://code.claude.com/docs/id/plugins/mods/test.md#test-a-drawing) menekan atau mengetik ke kontrol berdasarkan key-nya.612* **Tes**: sebuah [tes](https://code.claude.com/docs/id/plugins/mods/test.md#test-a-drawing) menekan atau mengetik ke kontrol berdasarkan key-nya.

609* **Mod lain**: Claude Code menembakkan [`ui.press`, `ui.input`, atau `ui.select`](https://code.claude.com/docs/id/plugins/mods/reference#interface) dengan key kontrol dalam `e.element` sebelum menjalankan callback kontrol tersebut. Hook mod lain untuk event tersebut melihat apa yang pengguna ketik ke `Input` Anda dan dapat mengubah teks itu atau mencegah callback Anda berjalan. API mods tidak memberi mod tersebut metode untuk menekan tombol Anda.613* **Mod lain**: Claude Code menembakkan [`ui.press`, `ui.input`, atau `ui.select`](https://code.claude.com/docs/id/plugins/mods/reference#interface) dengan key kontrol dalam `e.element` sebelum menjalankan callback kontrol tersebut. Hook mod lain juga dapat [berjalan untuk event tersebut](https://code.claude.com/docs/id/plugins/mods/events.md#hook-other-mods-drawings-and-controls). Hook itu melihat apa yang pengguna ketik ke `Input` Anda dan dapat mengubah teks itu atau mencegah callback Anda berjalan. API mods tidak memberi mod tersebut metode untuk menekan tombol Anda.

610 614 

611Jika sebuah pesan mengatakan `needs a key` atau `is drawn twice`, [temukan penyebabnya berdasarkan pesan tersebut](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#needs-a-key).615Jika sebuah pesan mengatakan `needs a key` atau `is drawn twice`, [temukan penyebabnya berdasarkan pesan tersebut](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#needs-a-key).

612 616 

Details

208 208 

209### Panggilan API mod209### Panggilan API mod

210 210 

211Setiap [metode API mod](#mods-api-methods) juga merupakan event, dinamai sesuai namespace dan metodenya, seperti `fs.read`, `model.complete`, atau `ui.open`. Hook pada salah satunya mencegat panggilan dari mod yang dijalankan setelahnya, dan dapat mengembalikan `next(e)`, `{ deny: reason }`, atau `{ value }`.211Setiap [metode API mod](#mods-api-methods) juga merupakan event, dinamai sesuai namespace dan metodenya, seperti `fs.read`, `model.complete`, atau `ui.open`. Hook pada salah satunya dapat mengembalikan `next(e)`, `{ deny: reason }`, atau `{ value }`.

212 

213Beberapa event ini juga dipicu untuk tindakan Claude Code sendiri, jadi periksa apakah `next.origin.plugin` bernilai `engine` sebelum Anda menolak salah satunya.

212 214 

213## Metode API mod215## Metode API mod

214 216 


249| :- | :- | :- | :- |251| :- | :- | :- | :- |

250| [`Pane`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | `id` panel | Terminal, Desktop, VS Code |252| [`Pane`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | `id` panel | Terminal, Desktop, VS Code |

251| [`AbovePrompt`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Satu instans | Terminal, Desktop |253| [`AbovePrompt`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Satu instans | Terminal, Desktop |

254| `AbovePromptList`, tumpukan baris `AbovePrompt` | `rows`, sebuah daftar dengan satu `{ plugin, tree }` untuk baris setiap mod, ditambah prop `AbovePrompt` | Satu instans | Terminal, Desktop. Memerlukan Claude Code v2.1.323 atau lebih baru. |

252| [`Placed`](https://code.claude.com/docs/id/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | `requestId` yang dikembalikan oleh `$.ui.place` | Terminal |255| [`Placed`](https://code.claude.com/docs/id/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | `requestId` yang dikembalikan oleh `$.ui.place` | Terminal |

253| [`Backdrop`](https://code.claude.com/docs/id/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `id`, `plugin`, `glass`, `colorScheme` | `backdrop` | Surface `desktop` dan `mobile`. Hook Anda berjalan saat aplikasi Desktop atau aplikasi seluler meminta untuk menggambar backdrop. |256| [`Backdrop`](https://code.claude.com/docs/id/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `scene`, `plugin`, `glass`, `overrideColorScheme`. Sebelum v2.1.323, `scene` adalah `id` dan `overrideColorScheme` adalah `colorScheme`. | `backdrop` | Surface `desktop` dan `mobile`. Hook Anda berjalan saat aplikasi Desktop atau aplikasi seluler meminta untuk menggambar backdrop. |

254| `UserMessage` | `text`, `origin`, `isExpanded`, dan `task` atau `from` tergantung origin | id baris yang digambar | Terminal, Desktop, VS Code |257| `UserMessage` | `text`, `origin`, `isExpanded`, dan `task` atau `from` tergantung origin | id baris yang digambar | Terminal, Desktop, VS Code |

255| `AssistantMessage` | Teks balasan | id baris yang digambar | Terminal, Desktop, VS Code |258| `AssistantMessage` | Teks balasan | id baris yang digambar | Terminal, Desktop, VS Code |

256| `ToolUse`, `ToolResult`, `ToolGroup` | Nama, input, dan hasil tool | id panggilan tool | Terminal, Desktop, VS Code |259| `ToolUse`, `ToolResult`, `ToolGroup` | Nama, input, dan hasil tool | id panggilan tool | Terminal, Desktop, VS Code |


297* **`action`**: menyebutkan salah satu [aksi pintasan keyboard](https://code.claude.com/docs/id/keybindings.md) milik Claude Code sendiri, dan pintasan keyboard pengguna untuk aksi tersebut akan menekan tombol jika pintasan itu berupa chord atau tombol dengan modifier300* **`action`**: menyebutkan salah satu [aksi pintasan keyboard](https://code.claude.com/docs/id/keybindings.md) milik Claude Code sendiri, dan pintasan keyboard pengguna untuk aksi tersebut akan menekan tombol jika pintasan itu berupa chord atau tombol dengan modifier

298* **Hotkey digit pada band**: `hotkey` berupa digit pada tombol di band juga terpicu saat pengguna mengetik digit tersebut saja ke dalam prompt kosong lalu berhenti sejenak301* **Hotkey digit pada band**: `hotkey` berupa digit pada tombol di band juga terpicu saat pengguna mengetik digit tersebut saja ke dalam prompt kosong lalu berhenti sejenak

299* **Band yang diciutkan**: selama band [diciutkan](https://code.claude.com/docs/id/plugins/mods/interface.md#when-the-user-collapses-the-band), baik pintasan `action` maupun hotkey tidak menekan tombol di dalamnya302* **Band yang diciutkan**: selama band [diciutkan](https://code.claude.com/docs/id/plugins/mods/interface.md#when-the-user-collapses-the-band), baik pintasan `action` maupun hotkey tidak menekan tombol di dalamnya

300* **Dua tombol dengan satu hotkey**: jika dua tombol dalam satu gambar menyebutkan `hotkey` yang sama, tombol yang lebih belakang yang mendapatkannya303* **Dua tombol dengan satu hotkey**: jika dua tombol Anda dalam satu gambar menyebutkan `hotkey` yang sama, tombol yang lebih belakang yang mendapatkannya. Untuk tombol milik mod lain pada tombol keyboard yang sama, lihat [Hotkey tidak berfungsi](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#hotkeys-do-nothing).

301* **`variant`**: `primary` atau `secondary`, dan nilai lain apa pun akan melempar error. Di terminal, tombol `primary` digambar dengan warna aksen kecuali tombol tersebut `plain`.304* **`variant`**: `primary` atau `secondary`, dan nilai lain apa pun akan melempar error. Di terminal, tombol `primary` digambar dengan warna aksen kecuali tombol tersebut `plain`.

302* **`role`**: `dismiss` menandai tombol tutup, dan nilai lain apa pun akan melempar error. Lakukan penutupan di `onPress` Anda. Pada band yang berisi teks dan sebaris tombol, aplikasi Desktop dapat menggambar tombol `dismiss` pertama pada baris tersebut sebagai kontrol tutupnya sendiri. Terminal menggambar tombol tersebut seperti halnya tanpa `role`.305* **`role`**: `dismiss` menandai tombol tutup, dan nilai lain apa pun akan melempar error. Lakukan penutupan di `onPress` Anda. Pada band yang berisi teks dan sebaris tombol, aplikasi Desktop dapat menggambar tombol `dismiss` pertama pada baris tersebut sebagai kontrol tutupnya sendiri. Terminal menggambar tombol tersebut seperti halnya tanpa `role`.

303 306 


401| Kedalaman bersarang satu tree | 32 level di bawah elemen root |404| Kedalaman bersarang satu tree | 32 level di bawah elemen root |

402| Elemen dan anak teks dalam satu tree | 20.000 |405| Elemen dan anak teks dalam satu tree | 20.000 |

403| Sel `Raster` dalam satu tree, yaitu `columns` dikali `rows` dari setiap `Raster` | 262.144 |406| Sel `Raster` dalam satu tree, yaitu `columns` dikali `rows` dari setiap `Raster` | 262.144 |

407| Baris-baris di atas prompt, yang ditumpuk | Elemen, sel `Raster`, dan byte `Image` dijumlahkan di seluruh baris, terhadap batas untuk satu tree |

404| Byte PNG atau RGBA dari semua `Image` dalam satu tree | 2 MiB |408| Byte PNG atau RGBA dari semua `Image` dalam satu tree | 2 MiB |

405| `$.store` | Total 4 MiB JSON |409| `$.store` | Total 4 MiB JSON |

406| `$.session.messages()` | 4.096 entri terbaru |410| `$.session.messages()` | 4.096 entri terbaru |


412| Kedalaman bersarang event yang diubah dan diteruskan ke `next`, di luar [hook async generator](#events) seperti hook pada `turn.step` | 28.000 level. Melewati batas itu, `next` ditolak (reject) dengan pesan yang diakhiri `nesting deeper than 28000 levels is not supported`. Memerlukan Claude Code v2.1.299 atau yang lebih baru. |416| Kedalaman bersarang event yang diubah dan diteruskan ke `next`, di luar [hook async generator](#events) seperti hook pada `turn.step` | 28.000 level. Melewati batas itu, `next` ditolak (reject) dengan pesan yang diakhiri `nesting deeper than 28000 levels is not supported`. Memerlukan Claude Code v2.1.299 atau yang lebih baru. |

413| Kedalaman bersarang nilai kembalian hook, di luar `ui.render`, `ui.resolve`, dan hook async generator | 28.000 level. Melewati batas itu, hasil hook ditolak, dan [pemberitahuan yang melaporkannya](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing) menyertakan `nesting deeper than 28000 levels is not supported`. Memerlukan Claude Code v2.1.299 atau yang lebih baru. |417| Kedalaman bersarang nilai kembalian hook, di luar `ui.render`, `ui.resolve`, dan hook async generator | 28.000 level. Melewati batas itu, hasil hook ditolak, dan [pemberitahuan yang melaporkannya](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing) menyertakan `nesting deeper than 28000 levels is not supported`. Memerlukan Claude Code v2.1.299 atau yang lebih baru. |

414| Cakupan, seperti fungsi, blok, dan loop, yang bersarang satu di dalam yang lain dalam satu file modul hook | 2.000 |418| Cakupan, seperti fungsi, blok, dan loop, yang bersarang satu di dalam yang lain dalam satu file modul hook | 2.000 |

415| Nama perintah, tool, tipe subagent, dan panel, serta `id` dari baris yang ditempatkan atau backdrop | Huruf, digit, `_`, dan `-`, hingga 64 karakter |419| Nama perintah, tool, tipe subagent, dan panel, `id` dari baris yang ditempatkan, dan `scene` dari backdrop | Huruf, digit, `_`, dan `-`, hingga 64 karakter |

416| Satu tes `claude plugin test` | 5 detik kecuali tes tersebut menetapkan `timeoutMs` |420| Satu tes `claude plugin test` | 5 detik kecuali tes tersebut menetapkan `timeoutMs` |

417 421 

418## Pengaturan dan environment variable422## Pengaturan dan environment variable

Details

139 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))139 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))

140 ```140 ```

141 141 

142 Dengan stub terdaftar, pemasangan berhasil, dan `ui.find({ type: 'Text' })` mengembalikan elemen tersebut setiap kali hook Anda mengembalikan `next(e)`.142 Dengan stub terdaftar, pemasangan berhasil, dan `ui.find({ type: 'Text' })` mengembalikan elemen tersebut setiap kali hook Anda mengembalikan `next(e)`. Pada v2.1.323 atau yang lebih baru, untuk band, berikan nama mod Anda sebagai argumen kedua untuk `on`, seperti dalam `{ plugin: 'my-mod' }`. Tanpanya, stub tidak menjawab `next(e)` Anda.

143 143 

144* **Stub untuk `turn.step` adalah async generator**, dan pengujian membaca stream hingga akhir untuk mendapatkan hasilnya:144* **Stub untuk `turn.step` adalah async generator**, dan pengujian membaca stream hingga akhir untuk mendapatkan hasilnya:

145 145 


192| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |192| `$.session.id`, `$.agent.list` | `() => ({ value: 'abc123' })`, `() => ({ value: [] })` |

193| `session.send` | `() => ({ isDelivered: true })`. `e.to` tiba sebagai string bahkan ketika mod Anda memberikan `{ sessionId }`. |193| `session.send` | `() => ({ isDelivered: true })`. `e.to` tiba sebagai string bahkan ketika mod Anda memberikan `{ sessionId }`. |

194| `session.receive` | `($, e) => ({ text: e.text })`. Picu dengan `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`. |194| `session.receive` | `($, e) => ({ text: e.text })`. Picu dengan `$.session.receive({ origin: { kind: 'peer-send-message' }, text })`. |

195| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })` |195| `ui.render` | `() => ({ type: 'Text', props: {}, children: ['...'] })`. Untuk band, lihat matcher di [Mengikuti aturan test kit](#follow-the-test-kit’s-rules). |

196 196 

197### Memeriksa hasil dengan `expect`197### Memeriksa hasil dengan `expect`

198 198 

199Kit ini memiliki asersi berikut, dan asersi yang Anda pilih ditempatkan setelah nilai yang sedang Anda periksa, seperti dalam `expect(answer.text).toBe('ok')`:199`expect` memiliki kumpulan asersinya sendiri, seperti `toEqual` dan `toHaveLength`, yang ditempatkan setelah nilai yang sedang Anda periksa, seperti dalam `expect(answer.text).toBe('ok')`. Untuk daftar lengkapnya, cari `type Matchers` di `claude-code/index.d.ts` dalam [tipe untuk build Anda](https://code.claude.com/docs/id/plugins/mods/create.md#get-the-types-for-your-build). Letakkan `.not` sebelum asersi untuk memeriksa kebalikannya. Untuk memeriksa nilai akhir sebuah promise, letakkan `.resolves` atau `.rejects` tepat setelah `expect(...)` dan gunakan `await` pada baris tersebut, seperti dalam `await expect(promise).rejects.toThrow()`.

200 

201* **Kesetaraan**: `toBe` untuk nilai atau objek yang sama, `toEqual` untuk struktur, `toStrictEqual` untuk struktur beserta field `undefined` dan prototipe, serta `toMatchObject` untuk field yang Anda sebutkan

202* **Teks**: `toMatch`, yang menerima regular expression atau substring, `toStartWith`, dan `toEndWith`

203* **Angka**: `toBeGreaterThan`, `toBeGreaterThanOrEqual`, `toBeLessThan`, `toBeLessThanOrEqual`

204* **Isi**: `toContain` untuk substring atau anggota, `toContainEqual` untuk anggota yang dibandingkan berdasarkan struktur, `toHaveLength`, dan `toHaveProperty`

205* **Keberadaan dan tipe**: `toBeDefined`, `toBeUndefined`, `toBeNull`, `toBeTruthy`, `toBeFalsy`, `toBeNaN`, `toBeInstanceOf`

206* **Pelemparan error**: `toThrow`, untuk fungsi yang dipanggil oleh `expect`, atau untuk promise yang Anda periksa dengan `.rejects`

207 

208Letakkan `.not` di depan sebuah asersi untuk memeriksa kebalikannya, dan `.resolves` atau `.rejects` untuk memeriksa nilai akhir sebuah promise.

209 200 

210Ketika sebuah `expect` gagal di dalam stub atau hook yang Anda berikan ke `on` sebagai fungsi biasa, bukan sebagai async generator, pengujian gagal. Engine melewati hook tersebut, dan output kegagalan menyebutkannya, seperti `in the test's store.set hook`.201Ketika sebuah `expect` gagal di dalam stub atau hook yang Anda berikan ke `on` sebagai fungsi biasa, bukan sebagai async generator, pengujian gagal. Engine melewati hook tersebut, dan output kegagalan menyebutkannya, seperti `in the test's store.set hook`.

211 202 

Details

223 223 

224### Band mod lain ditampilkan dan band Anda tidak224### Band mod lain ditampilkan dan band Anda tidak

225 225 

226Hanya ada satu band di atas prompt, dan setiap mod berbagi band tersebut. Mod yang berjalan [sebelum mod Anda](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in) menggantikan band Anda ketika mod tersebut mengembalikan tree yang tidak berisi hasil `next(e)`. Untuk menampilkan kedua band, ubah hook mod tersebut, atau minta pembuatnya untuk:226Setiap mod yang menggambar di atas prompt mendapatkan barisnya sendiri, jadi ketika baris Anda tidak ada sementara baris mod lain ditampilkan, periksa penyebab berikut:

227 227 

228* **Mempertahankan band setelahnya**: letakkan hasil `await next(e)` di antara children dari sebuah `Box` di tree-nya, seperti pada tab Band di atas prompt dari [Pilih tempat menggambar](https://code.claude.com/docs/id/plugins/mods/interface.md#pick-where-to-draw)228* **Tree Anda tidak lolos validasi**: [tulis debug log](#read-the-debug-log), cari [`ui.render hook skipped`](#a-pane-or-band-is-empty) atau [`does not validate`](#ui-render-refused) di dalamnya, dan perbaiki hal yang disebutkan baris tersebut.

229* **Menjaga tree tetap valid**: jangan berikan prop `width`, `height`, `minWidth`, `minHeight`, `position`, `top`, `left`, `right`, `bottom`, `display`, atau `overflow` pada `Box` tersebut, atau pada `Box` mana pun yang mengelilinginya229* **Baris-baris tersebut secara keseluruhan melampaui batas**: [tulis debug log](#read-the-debug-log) dan cari `past the limits of the band` di dalamnya. Baris-baris tersebut [berbagi batas satu tree](https://code.claude.com/docs/id/plugins/mods/reference.md#limits), jadi gambar tree yang lebih kecil, atau minta pembuat mod lain untuk melakukannya.

230* **Mod lain menyembunyikan atau menggambar di atas baris Anda**: jika log tidak memiliki satu pun dari baris-baris ini, [matikan](https://code.claude.com/docs/id/plugins/mods/overview.md#turn-mods-on-or-off) mod lain satu per satu. Jika baris Anda muncul kembali, minta pembuat mod tersebut untuk mengubahnya.

230 231 

231Untuk menemukan mod tersebut, [tulis debug log](#read-the-debug-log) dan cari `answered ui.render without next()` di dalamnya. Baris seperti `other-mod (user) answered ui.render without next()` menyebutkan mod yang mengembalikan tree-nya tanpa memanggil `next(e)`. Baris tersebut tidak menyebutkan [titik render](https://code.claude.com/docs/id/plugins/mods/reference.md#render-sites), sehingga mod yang hanya menggunakan pane juga dapat muncul. Mod yang memanggil `next(e)` lalu membuang hasilnya tidak menghasilkan baris apa pun, jadi periksa juga hook yang berjalan sebelum hook Anda.232Sebelum v2.1.323, semua mod berbagi satu gambar di band. Mod yang berjalan [sebelum mod Anda](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in) menggantikan gambar Anda ketika mod tersebut mengembalikan tree yang tidak berisi hasil `next(e)`. Perbarui Claude Code, atau minta pembuat mod tersebut untuk melakukan perubahan berikut:

232 233 

233Band sebuah mod juga tidak muncul ketika tree yang dikembalikan hook-nya sendiri tidak lolos validasi, sementara band mod lain tetap ada. Untuk mengetahui mod mana dan alasannya, [tulis debug log](#read-the-debug-log) dan cari [`ui.render hook skipped`](#a-pane-or-band-is-empty) di dalamnya.234* **Mempertahankan gambar mod setelahnya**: letakkan hasil `await next(e)` di antara children dari sebuah `Box` di tree-nya

235* **Menjaga tree tetap valid**: jangan berikan prop `width`, `height`, `minWidth`, `minHeight`, `position`, `top`, `left`, `right`, `bottom`, `display`, atau `overflow` pada `Box` tersebut, atau pada `Box` mana pun yang mengelilinginya

234 236 

235### Pane atau band kosong atau menampilkan konten biasa Claude Code237### Pane atau band kosong atau menampilkan konten biasa Claude Code

236 238 


246 248 

247### Baris `ui.render` mengatakan `refused`249### Baris `ui.render` mengatakan `refused`

248 250 

249`ui.render (<site>) refused:`, atau `ui.render (<site>): the chain settled on a tree that does not validate` di [debug log](#read-the-debug-log), berarti [tree](https://code.claude.com/docs/id/plugins/mods/interface.md#build-a-tree-from-elements) di titik tersebut melampaui [batas ukuran](https://code.claude.com/docs/id/plugins/mods/reference.md#limits). Kedua baris tersebut menyebutkan [titik render](https://code.claude.com/docs/id/plugins/mods/reference.md#render-sites) lalu alasannya, dan alasan tersebut menyebutkan batasnya.251`ui.render (<site>) refused:`, atau `ui.render (<site>): the chain settled on a tree that does not validate` di [debug log](#read-the-debug-log), berarti [tree](https://code.claude.com/docs/id/plugins/mods/interface.md#build-a-tree-from-elements) di titik tersebut melampaui [batas ukuran](https://code.claude.com/docs/id/plugins/mods/reference.md#limits). Kedua baris tersebut menyebutkan [titik render](https://code.claude.com/docs/id/plugins/mods/reference.md#render-sites) lalu alasannya.

250 252 

251Ubah mod yang menggambar di titik tersebut agar hook [`ui.render`](https://code.claude.com/docs/id/plugins/mods/reference#interface) mereka mengembalikan tree yang lebih kecil, atau minta pembuatnya untuk melakukannya. Jika baris transkrip diawali dengan `hooks`, lebih dari satu mod yang dimuat memiliki hook `ui.render` untuk titik tersebut, jadi periksa tree setiap mod tersebut. Untuk beberapa mod yang band-nya di atas prompt bersarang menjadi tree dengan kedalaman lebih dari 32 tingkat, barisnya berbunyi:253Ubah mod yang menggambar di titik tersebut agar hook [`ui.render`](https://code.claude.com/docs/id/plugins/mods/reference#interface) mereka mengembalikan tree yang lebih kecil, atau minta pembuatnya untuk melakukannya. Jika baris transkrip diawali dengan `hooks`, lebih dari satu mod yang dimuat memiliki hook `ui.render` untuk titik tersebut, jadi periksa tree setiap mod tersebut. Untuk baris-baris di atas prompt yang secara keseluruhan tidak muat dalam batas band, barisnya berbunyi:

252 254 

253```text theme={null}255```text theme={null}

254hooks: ui.render (AbovePrompt) refused: deeper than 32; nothing was drawn256hooks: ui.render (AbovePrompt) refused: a row past the limits of the band; nothing was drawn

255```257```

256 258 

259Meskipun diakhiri demikian, baris-baris yang muat tetap digambar.

260 

257Sebelum v2.1.307, baris `refused:` untuk titik mana pun melaporkan tree apa pun yang tidak lolos validasi, dan untuk `Pane` dan `AbovePrompt` baris tersebut diakhiri dengan `; the engine drew its own`. Pada rilis tersebut, perbaiki hal yang disebutkan alasan tersebut.261Sebelum v2.1.307, baris `refused:` untuk titik mana pun melaporkan tree apa pun yang tidak lolos validasi, dan untuk `Pane` dan `AbovePrompt` baris tersebut diakhiri dengan `; the engine drew its own`. Pada rilis tersebut, perbaiki hal yang disebutkan alasan tersebut.

258 262 

259### `needs a key`, `is drawn twice`, atau `key each once`263### `needs a key`, `is drawn twice`, atau `key each once`


307 311 

308### Hotkey tidak melakukan apa pun312### Hotkey tidak melakukan apa pun

309 313 

310Pane atau band Anda tidak memiliki fokus keyboard, tombol Anda berada di band yang diciutkan, atau gambar berada di ekstensi VS Code, tempat tombol tidak memiliki hotkey. Lakukan yang sesuai:314Pane atau band Anda tidak memiliki fokus keyboard, tombol Anda berada di band yang diciutkan, mod lain menggunakan tombol yang sama, atau gambar berada di ekstensi VS Code.

311 315 

312* **Tidak ada fokus keyboard**: tekan Ctrl+X kemudian Tab atau, dalam [rendering fullscreen](https://code.claude.com/docs/id/fullscreen.md), klik pane atau band. Agar pane mengambil fokus saat dibuka, buka pane tersebut dengan `focus: true` dari perintah.316* **Tidak ada fokus keyboard**: tekan Ctrl+X kemudian Tab atau, dalam [rendering fullscreen](https://code.claude.com/docs/id/fullscreen.md), klik pane atau band. Agar pane mengambil fokus saat dibuka, buka pane tersebut dengan `focus: true` dari perintah.

313* **Tombol berada di band yang diciutkan**: band menampilkan satu baris redup yang diawali dengan `▸ plugin panel hidden`. Tekan tombol yang disebutkan baris tersebut, Ctrl+X lalu Ctrl+A secara default, untuk [membentangkannya](#plugin-panel-hidden).317* **Tombol berada di band yang diciutkan**: band menampilkan satu baris redup yang diawali dengan `▸ plugin panel hidden`. Tekan tombol yang disebutkan baris tersebut, Ctrl+X lalu Ctrl+A secara default, untuk [membentangkannya](#plugin-panel-hidden).

314* **Di ekstensi VS Code**: klik tombol, atau tekan Enter pada tombol tersebut setelah tombol itu mendapat fokus318* **Baris mod lain di band menggunakan hotkey yang sama**: di terminal, tombol tersebut tidak menekan kedua tombol. Untuk memeriksanya, [matikan](https://code.claude.com/docs/id/plugins/mods/overview.md#turn-mods-on-or-off) mod lain yang menggambar baris, satu per satu, hingga tombol tersebut berfungsi. Ubah `hotkey` tombol Anda, atau minta pembuat mod tersebut untuk mengubah miliknya.

319* **Di ekstensi VS Code, tempat tombol tidak memiliki hotkey**: klik tombol, atau tekan Enter pada tombol tersebut setelah tombol itu mendapat fokus

315 320 

316### Gambar bekerja di terminal dan bukan di Desktop app atau VS Code321### Gambar bekerja di terminal dan bukan di Desktop app atau VS Code

317 322 

Details

36 36 

37![Diagram dalam dua kolom yang digabungkan oleh lima panah lurus. Di sebelah kiri, direktori plugin bernama my-plugin, menyimpan manifes di .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json, dan komponen lainnya. Di sebelah kanan, apa yang diberikan setiap file dalam sesi Anda: manifes menetapkan nama plugin, my-plugin; skill berjalan sebagai /my-plugin:review; file agent adalah subagent yang dapat didelegasikan Claude; file hooks menyimpan hook yang berjalan pada acara siklus hidup; dan .mcp.json menambahkan server MCP yang memberikan alat Claude.](https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max\&auto=format\&n=2Q_GtOEovg5qaBem\&q=85\&s=f623b64e82713b830e48174f0a922888)37![Diagram dalam dua kolom yang digabungkan oleh lima panah lurus. Di sebelah kiri, direktori plugin bernama my-plugin, menyimpan manifes di .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json, dan komponen lainnya. Di sebelah kanan, apa yang diberikan setiap file dalam sesi Anda: manifes menetapkan nama plugin, my-plugin; skill berjalan sebagai /my-plugin:review; file agent adalah subagent yang dapat didelegasikan Claude; file hooks menyimpan hook yang berjalan pada acara siklus hidup; dan .mcp.json menambahkan server MCP yang memberikan alat Claude.](https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max\&auto=format\&n=2Q_GtOEovg5qaBem\&q=85\&s=f623b64e82713b830e48174f0a922888)

38 38 

39Untuk setiap jenis komponen yang dapat disimpan plugin, dengan contoh masing-masing, lihat [Plugin components](https://code.claude.com/docs/id/plugins/components.md). Untuk melihat di mana setiap bagian berada dalam direktori plugin, gunakan [plugin explorer](https://code.claude.com/docs/id/plugins/components.md#explore-the-plugin-directory) di halaman itu.39Untuk jenis komponen yang dapat disimpan plugin, dengan contoh masing-masing, lihat [Plugin components](https://code.claude.com/docs/id/plugins/components.md). Untuk melihat di mana setiap bagian berada dalam direktori plugin, gunakan [plugin explorer](https://code.claude.com/docs/id/plugins/components.md#explore-the-plugin-directory) di halaman itu.

40 40 

41### Tentukan apakah Anda membutuhkan plugin41### Tentukan apakah Anda membutuhkan plugin

42 42 

Details

59 59 

60**5. Isi metadata yang dilihat pengguna**60**5. Isi metadata yang dilihat pengguna**

61 61 

62Atur `description`, `author`, `homepage`, dan `repository` di `plugin.json`, dan tambahkan `README.md` di root plugin. `homepage` harus diurai sebagai URL. [Referensi manifes](https://code.claude.com/docs/id/plugins/manifest-reference.md#fields) mencantumkan setiap bidang.62Atur `description`, `author`, `homepage`, dan `repository` di `plugin.json`, dan tambahkan `README.md` di root plugin. `homepage` harus dapat diurai sebagai URL. Untuk nilai yang diterima setiap bidang, lihat [referensi manifes](https://code.claude.com/docs/id/plugins/manifest-reference.md#fields).

63 63 

64**6. Jalankan suite eval Anda**64**6. Jalankan suite eval Anda**

65 65 

66Jika Anda memiliki suite eval, jalankan `claude plugin eval` di shell Anda. Ini menjalankan kasus uji plugin dan mencetak hasil, yang menangkap regresi saat Anda mengubah plugin. Lihat [Plugin uji dengan eval](https://code.claude.com/docs/id/plugin-evals.md).66Jika Anda memiliki suite eval, jalankan `claude plugin eval` di shell Anda. Ini menjalankan kasus uji plugin dan memberi skor pada hasilnya, yang menangkap regresi saat Anda mengubah plugin. Lihat [Uji plugin dengan eval](https://code.claude.com/docs/id/plugin-evals.md).

67 67 

68## Bagikan plugin tanpa marketplace68## Bagikan plugin tanpa marketplace

69 69 

Details

67> | `--capacity <N>` | Jumlah maksimum sesi bersamaan. Default adalah 32. Tidak dapat digunakan dengan `--spawn=session`. |67> | `--capacity <N>` | Jumlah maksimum sesi bersamaan. Default adalah 32. Tidak dapat digunakan dengan `--spawn=session`. |

68> | `--[no-]create-session-in-dir` | Buat sesi di direktori saat ini ketika server dimulai, sehingga Anda memiliki tempat untuk mengetik segera. Dalam mode `worktree` sesi ini tetap berada di direktori saat ini sementara sesi sesuai permintaan mendapatkan worktree terisolasi. Aktif secara default. Jika Anda melewatkan `--no-create-session-in-dir` untuk memulai tanpa sesi, Claude Code mengarsipkan sesi server saat Anda menghentikannya, sehingga tidak ada yang dapat [dilanjutkan](#resume-sessions-after-stopping-the-server). |68> | `--[no-]create-session-in-dir` | Buat sesi di direktori saat ini ketika server dimulai, sehingga Anda memiliki tempat untuk mengetik segera. Dalam mode `worktree` sesi ini tetap berada di direktori saat ini sementara sesi sesuai permintaan mendapatkan worktree terisolasi. Aktif secara default. Jika Anda melewatkan `--no-create-session-in-dir` untuk memulai tanpa sesi, Claude Code mengarsipkan sesi server saat Anda menghentikannya, sehingga tidak ada yang dapat [dilanjutkan](#resume-sessions-after-stopping-the-server). |

69> | `--permission-mode <mode>` | Atur [mode izin](https://code.claude.com/docs/id/permission-modes.md) awal untuk sesi server, seperti `acceptEdits`. Menerima `manual` sebagai alias untuk `default`; mode yang tidak dikenali menghentikan server saat startup dan mencantumkan mode yang valid. |69> | `--permission-mode <mode>` | Atur [mode izin](https://code.claude.com/docs/id/permission-modes.md) awal untuk sesi server, seperti `acceptEdits`. Menerima `manual` sebagai alias untuk `default`; mode yang tidak dikenali menghentikan server saat startup dan mencantumkan mode yang valid. |

70> | `--settings <file>` | Terapkan file pengaturan JSON ke sesi server, pada [prioritas](https://code.claude.com/docs/id/settings.md#settings-precedence) yang sama dengan `claude --settings`. Berikan path file, bukan string JSON. Memerlukan Claude Code v2.1.321 atau lebih baru. |

70> | `--chrome` / `--no-chrome` | Aktifkan atau matikan [integrasi Chrome](https://code.claude.com/docs/id/chrome.md) di sesi yang dibuat server, sehingga Claude dapat menggunakan Chrome di mesin Anda saat Anda bekerja dari perangkat lain. Tanpa salah satu flag, sesi yang dimulai server sebelumnya dan sesi apa pun yang Anda mulai sendiri dari claude.ai/code atau aplikasi Claude dimulai dengan Chrome mati, bahkan jika Anda [mengaktifkan Chrome secara default](https://code.claude.com/docs/id/chrome.md#enable-chrome-by-default). Sesi yang dimulai server untuk salah satu [project](https://code.claude.com/docs/id/claude-projects.md) thread Anda mengikuti pengaturan itu sebagai gantinya, kecuali dalam mode `bypassPermissions`. Memerlukan Claude Code v2.1.273 atau lebih baru. |71> | `--chrome` / `--no-chrome` | Aktifkan atau matikan [integrasi Chrome](https://code.claude.com/docs/id/chrome.md) di sesi yang dibuat server, sehingga Claude dapat menggunakan Chrome di mesin Anda saat Anda bekerja dari perangkat lain. Tanpa salah satu flag, sesi yang dimulai server sebelumnya dan sesi apa pun yang Anda mulai sendiri dari claude.ai/code atau aplikasi Claude dimulai dengan Chrome mati, bahkan jika Anda [mengaktifkan Chrome secara default](https://code.claude.com/docs/id/chrome.md#enable-chrome-by-default). Sesi yang dimulai server untuk salah satu [project](https://code.claude.com/docs/id/claude-projects.md) thread Anda mengikuti pengaturan itu sebagai gantinya, kecuali dalam mode `bypassPermissions`. Memerlukan Claude Code v2.1.273 atau lebih baru. |

71> | `-d`, `--debug[=<filter>]` | Aktifkan logging debug untuk server, secara opsional disaring berdasarkan kategori. Lewatkan filter hanya dalam bentuk `=`, seperti `--debug=api,hooks`. Memerlukan Claude Code v2.1.282 atau lebih baru. |72> | `-d`, `--debug[=<filter>]` | Aktifkan logging debug untuk server, secara opsional disaring berdasarkan kategori. Lewatkan filter hanya dalam bentuk `=`, seperti `--debug=api,hooks`. Memerlukan Claude Code v2.1.282 atau lebih baru. |

72> | `--debug-file <path>` | Tulis log debug ke file yang diberikan. |73> | `--debug-file <path>` | Tulis log debug ke file yang diberikan. |

73> | `--verbose` | Tampilkan log koneksi dan sesi terperinci. |74> | `--verbose` | Tampilkan log koneksi dan sesi terperinci. |

74> | `--sandbox`, `--no-sandbox` | Dihapus di v2.1.300. Jika Anda melewatkan salah satu flag ini, server [keluar dengan kesalahan](https://code.claude.com/docs/id/errors.md#sandbox-is-not-supported-by-claude-remote-control) alih-alih dimulai. |75> | `--sandbox`, `--no-sandbox` | Dihapus di v2.1.300. Jika Anda melewatkan salah satu flag ini, server [keluar dengan kesalahan](https://code.claude.com/docs/id/errors.md#sandbox-is-not-supported-by-claude-remote-control) alih-alih dimulai. |

75>76>

76> Jika Anda melewatkan flag global `claude` sebelum `remote-control`, atau skrip wrapper menambahkan satu, Claude Code tidak membawa flag ke sesi yang dibuat server. Claude Code membiarkan flag melewati hanya ketika menjatuhkannya diketahui tidak mengubah apa yang dapat dilakukan sesi tersebut, seperti `--verbose` atau `--model`. Untuk flag lainnya, seperti `--settings`, Claude Code [menolak untuk memulai](https://code.claude.com/docs/id/errors.md#not-carried-over-to-the-sessions-remote-control-starts) dan menyebutkan flag yang akan dihapus.77> Jika Anda melewatkan flag global `claude` sebelum `remote-control`, atau skrip wrapper menambahkan satu, Claude Code tidak membawa flag ke sesi yang dibuat server. Server tetap dimulai dengan beberapa flag, seperti `--verbose` atau `--model`. Dengan flag lainnya, server [tidak dimulai](https://code.claude.com/docs/id/errors.md#not-carried-over-to-the-sessions-remote-control-starts). Untuk melewatkan file pengaturan, letakkan `--settings` setelah `remote-control`.

77>78>

78> Untuk sandbox sesi yang dimulai server, aktifkan [sandboxing](https://code.claude.com/docs/id/sandboxing.md) dalam file pengaturan.79> Untuk sandbox sesi yang dimulai server, aktifkan [sandboxing](https://code.claude.com/docs/id/sandboxing.md) dalam file pengaturan.

79>80>


375* **Dialog yang diteruskan kedaluwarsa**: Claude Code membiarkan permintaan izin dan pertanyaan `AskUserQuestion` tetap terbuka hingga Anda menjawabnya. Ketika Claude Code meneruskan jenis dialog lain ke sesi jarak jauh, seperti prompt pemilihan model yang ditampilkan setelah penolakan keamanan, Claude Code menunggu lima menit secara default, lalu menutup dialog dan melanjutkan dengan default tanpa tindakan dari dialog tersebut. Atur [`dialogExpiry`](https://code.claude.com/docs/id/settings-reference#dialogexpiry) untuk menyesuaikan atau menonaktifkan batas waktu tersebut. Memerlukan Claude Code v2.1.224 atau yang lebih baru.376* **Dialog yang diteruskan kedaluwarsa**: Claude Code membiarkan permintaan izin dan pertanyaan `AskUserQuestion` tetap terbuka hingga Anda menjawabnya. Ketika Claude Code meneruskan jenis dialog lain ke sesi jarak jauh, seperti prompt pemilihan model yang ditampilkan setelah penolakan keamanan, Claude Code menunggu lima menit secara default, lalu menutup dialog dan melanjutkan dengan default tanpa tindakan dari dialog tersebut. Atur [`dialogExpiry`](https://code.claude.com/docs/id/settings-reference#dialogexpiry) untuk menyesuaikan atau menonaktifkan batas waktu tersebut. Memerlukan Claude Code v2.1.224 atau yang lebih baru.

376* **Prompt persetujuan kredit penggunaan Fable tidak diteruskan**: Claude Code menampilkan [prompt persetujuan kredit penggunaan Fable](https://code.claude.com/docs/id/model-config.md#fable-and-usage-credits) di tengah sesi hanya di tempat sesi berjalan, bukan di perangkat Anda. Ketika sesi berjalan di terminal dan tidak ada seorang pun di sana yang menjawab sebelum Claude Code menutup prompt tersebut, giliran berakhir tanpa mengirimkan permintaan; lihat [The prompt to confirm went unanswered](https://code.claude.com/docs/id/errors.md#the-prompt-to-confirm-went-unanswered).377* **Prompt persetujuan kredit penggunaan Fable tidak diteruskan**: Claude Code menampilkan [prompt persetujuan kredit penggunaan Fable](https://code.claude.com/docs/id/model-config.md#fable-and-usage-credits) di tengah sesi hanya di tempat sesi berjalan, bukan di perangkat Anda. Ketika sesi berjalan di terminal dan tidak ada seorang pun di sana yang menjawab sebelum Claude Code menutup prompt tersebut, giliran berakhir tanpa mengirimkan permintaan; lihat [The prompt to confirm went unanswered](https://code.claude.com/docs/id/errors.md#the-prompt-to-confirm-went-unanswered).

377* **Beberapa perintah hanya tersedia secara lokal**: perintah yang hanya berjalan di antarmuka terminal, seperti `/plugin` atau `/resume`, hanya berfungsi dari CLI lokal, baik Anda memberikan argumen maupun tidak. `/claude-api` juga tidak tersedia ketika Anda mengetikkannya dari perangkat seluler atau web. Claude tetap dapat [memuat skill tersebut dengan sendirinya](https://code.claude.com/docs/id/skills.md#work-on-claude-api-projects) di sana. Berikut ini berfungsi dari perangkat seluler dan web:378* **Beberapa perintah hanya tersedia secara lokal**: perintah yang hanya berjalan di antarmuka terminal, seperti `/plugin` atau `/resume`, hanya berfungsi dari CLI lokal, baik Anda memberikan argumen maupun tidak. `/claude-api` juga tidak tersedia ketika Anda mengetikkannya dari perangkat seluler atau web. Claude tetap dapat [memuat skill tersebut dengan sendirinya](https://code.claude.com/docs/id/skills.md#work-on-claude-api-projects) di sana. Berikut ini berfungsi dari perangkat seluler dan web:

378 * Perintah dengan output teks: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, dan `/reload-plugins`. `/usage-credits` mencetak URL penagihan alih-alih membuka browser. `/reload-plugins` hanya berfungsi ketika sesi berjalan di terminal interaktif; sesi tanpa terminal interaktif akan menolaknya.379 * Perintah dengan output teks: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, dan `/reload-plugins`. `/usage-credits` membalas dalam bentuk teks, misalnya tempat untuk mengelola kredit penggunaan. `/reload-plugins` hanya berfungsi ketika sesi berjalan di terminal interaktif; sesi tanpa terminal interaktif akan menolaknya.

379 * `/model`, `/effort`, `/fast`, `/color`, dan `/rename`: berikan nilai sebagai argumen, misalnya `/model sonnet` atau `/effort high`. Dari perangkat seluler dan web, `/model` dan `/effort` menerima argumen sebagai pengganti pemilih atau slider terminal.380 * `/model`, `/effort`, `/fast`, `/color`, dan `/rename`: berikan nilai sebagai argumen, misalnya `/model sonnet` atau `/effort high`. Dari perangkat seluler dan web, `/model` dan `/effort` menerima argumen sebagai pengganti pemilih atau slider terminal.

380 * `/mcp`: dari aplikasi seluler, mengembalikan ringkasan teks status server alih-alih membuka pemilih. Di web, `/mcp` tanpa argumen membuka direktori [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) alih-alih mengembalikan ringkasan. [Subperintah](https://code.claude.com/docs/id/commands.md#all-commands) `reconnect`, `enable`, dan `disable` berfungsi dari keduanya ketika sesi berjalan di terminal interaktif. `/mcp reconnect` tanpa nama server akan mencoba ulang setiap server yang gagal atau memerlukan autentikasi. Untuk mengotorisasi konektor claude.ai tanpa pemilih, lihat [Otorisasi konektor lagi dari shell Anda](#authorize-a-connector-again-from-your-shell).381 * `/mcp`: dari aplikasi seluler, mengembalikan ringkasan teks status server alih-alih membuka pemilih. Di web, `/mcp` tanpa argumen membuka direktori [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) alih-alih mengembalikan ringkasan. [Subperintah](https://code.claude.com/docs/id/commands.md#all-commands) `reconnect`, `enable`, dan `disable` berfungsi dari keduanya ketika sesi berjalan di terminal interaktif. `/mcp reconnect` tanpa nama server akan mencoba ulang setiap server yang gagal atau memerlukan autentikasi. Untuk mengotorisasi konektor claude.ai tanpa pemilih, lihat [Otorisasi konektor lagi dari shell Anda](#authorize-a-connector-again-from-your-shell).

381 * `/config`: dari aplikasi seluler, berikan `key=value` untuk mengatur suatu pengaturan, atau jalankan tanpa argumen untuk menampilkan daftar kunci yang dapat Anda atur. Di web, `/config` justru membuka **Settings > Code** atau **Settings > Claude Code**.382 * `/config`: dari aplikasi seluler, berikan `key=value` untuk mengatur suatu pengaturan, atau jalankan tanpa argumen untuk menampilkan daftar kunci yang dapat Anda atur. Di web, `/config` justru membuka **Settings > Code** atau **Settings > Claude Code**.

routines.md +1 −1

Details

431 431 

432Setiap tugas terjadwal menggunakan [lingkungan cloud](https://code.claude.com/docs/id/cloud-environments.md) yang mengontrol akses jaringan, environment variable, dan skrip penyiapan. Tugas mewarisi kebijakan jaringan lingkungan pada setiap eksekusi.432Setiap tugas terjadwal menggunakan [lingkungan cloud](https://code.claude.com/docs/id/cloud-environments.md) yang mengontrol akses jaringan, environment variable, dan skrip penyiapan. Tugas mewarisi kebijakan jaringan lingkungan pada setiap eksekusi.

433 433 

434Lingkungan **Default** menggunakan akses **Limited** dengan **Allow package managers** dicentang, sehingga eksekusinya dapat menjangkau [allowlist default](https://code.claude.com/docs/id/cloud-environments.md#default-allowed-domains). Permintaan ke host yang diblokir gagal dengan `403` dan `x-deny-reason: host_not_allowed`. Lalu lintas konektor MCP dirutekan melalui server Anthropic, sehingga konektor yang Anda tambahkan ke tugas berfungsi tanpa perlu menambahkan host-nya ke **Allowed domains**. Hapus konektor yang tidak Anda perlukan di bawah [Konektor](#connectors).434Lingkungan **Default** menggunakan akses **Limited** dengan **Allow package managers** dicentang, sehingga eksekusinya dapat menjangkau [allowlist default](https://code.claude.com/docs/id/cloud-environments.md#default-allowed-domains). Permintaan ke host yang diblokir gagal dengan [error seperti `403` atau `ENOTFOUND`](https://code.claude.com/docs/id/errors#host-not-allowed-in-a-cloud-session). Lalu lintas konektor MCP dirutekan melalui server Anthropic, sehingga konektor yang Anda tambahkan ke tugas berfungsi tanpa perlu menambahkan host-nya ke **Allowed domains**. Hapus konektor yang tidak Anda perlukan di bawah [Konektor](#connectors).

435 435 

436Untuk mengizinkan domain tambahan pada salah satu lingkungan Anda sendiri, ikuti langkah-langkah ini. [Lingkungan yang dibagikan organisasi](https://code.claude.com/docs/id/cloud-environments.md#organization-shared-environments) terbuka dalam mode read-only di sini, sehingga Owner mengubah akses jaringannya dari halaman **Cloud environments** di [pengaturan admin](https://claude.ai/admin-settings).436Untuk mengizinkan domain tambahan pada salah satu lingkungan Anda sendiri, ikuti langkah-langkah ini. [Lingkungan yang dibagikan organisasi](https://code.claude.com/docs/id/cloud-environments.md#organization-shared-environments) terbuka dalam mode read-only di sini, sehingga Owner mengubah akses jaringannya dari halaman **Cloud environments** di [pengaturan admin](https://claude.ai/admin-settings).

437 437 

sandboxing.md +5 −3

Details

276 276 

277Path ini diberlakukan di tingkat OS, sehingga semua perintah yang berjalan di dalam sandbox, termasuk proses turunannya, mematuhinya. Ini adalah pendekatan yang direkomendasikan ketika sebuah tool memerlukan akses tulis ke lokasi tertentu, alih-alih mengecualikan tool tersebut dari sandbox sepenuhnya dengan `excludedCommands`.277Path ini diberlakukan di tingkat OS, sehingga semua perintah yang berjalan di dalam sandbox, termasuk proses turunannya, mematuhinya. Ini adalah pendekatan yang direkomendasikan ketika sebuah tool memerlukan akses tulis ke lokasi tertentu, alih-alih mengecualikan tool tersebut dari sandbox sepenuhnya dengan `excludedCommands`.

278 278 

279Di Linux dan WSL2, entri untuk path yang belum ada tidak berpengaruh apa pun, jadi buat path tersebut terlebih dahulu.

280 

279Ketika Anda mendefinisikan array filesystem yang sama di beberapa [cakupan pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence), Claude Code menggabungkannya, yaitu mengombinasikan path dari setiap cakupan alih-alih mengganti array dari satu cakupan dengan array dari cakupan lain. Claude Code tidak menyertakan sebuah entri dalam penggabungan ketika entri tersebut dicakup oleh kunci yang dijelaskan di [Mencegah developer memperluas kebijakan](#keep-developers-from-widening-the-policy).281Ketika Anda mendefinisikan array filesystem yang sama di beberapa [cakupan pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence), Claude Code menggabungkannya, yaitu mengombinasikan path dari setiap cakupan alih-alih mengganti array dari satu cakupan dengan array dari cakupan lain. Claude Code tidak menyertakan sebuah entri dalam penggabungan ketika entri tersebut dicakup oleh kunci yang dijelaskan di [Mencegah developer memperluas kebijakan](#keep-developers-from-widening-the-policy).

280 282 

281Jika Anda mengecualikan suatu sumber dengan [`--setting-sources`](https://code.claude.com/docs/id/cli-reference) di CLI atau [`settingSources`](https://code.claude.com/docs/id/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) di Agent SDK, Claude Code mengabaikan entri `sandbox.filesystem`, aturan izin `Edit`, dan aturan deny `Read` dari sumber tersebut saat membangun konfigurasi sandbox. Memerlukan Claude Code v2.1.246 atau lebih baru.283Jika Anda mengecualikan suatu sumber dengan [`--setting-sources`](https://code.claude.com/docs/id/cli-reference) di CLI atau [`settingSources`](https://code.claude.com/docs/id/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) di Agent SDK, Claude Code mengabaikan entri `sandbox.filesystem`, aturan izin `Edit`, dan aturan deny `Read` dari sumber tersebut saat membangun konfigurasi sandbox. Memerlukan Claude Code v2.1.246 atau lebih baru.


376 378 

377Karena mematikan isolasi filesystem memperluas apa yang dapat dilakukan perintah sandbox, Claude Code hanya menghormati `filesystem.disabled` dari sumber pengaturan berikut:379Karena mematikan isolasi filesystem memperluas apa yang dapat dilakukan perintah sandbox, Claude Code hanya menghormati `filesystem.disabled` dari sumber pengaturan berikut:

378 380 

379* Pengaturan pengguna, pengaturan terkelola, dan flag CLI `--settings` dapat mengaturnya. Pengaturan proyek di `.claude/settings.json` dan `.claude/settings.local.json` tidak dapat, sehingga proyek yang di-checkout tidak dapat mematikan isolasi filesystem.381* Pengaturan pengguna, pengaturan terkelola, dan flag CLI `--settings` dapat mengaturnya. Pengaturan proyek di `.claude/settings.json` dan `.claude/settings.local.json` tidak dapat mengaturnya.

380* Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` dengan cara apa pun, atau mencantumkan entri `sandbox.credentials.files` apa pun dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat mengatur kunci tersebut. Ini mencegah developer mematikan isolasi filesystem dalam deployment semacam itu; untuk mematikannya bagi semua orang, atur `"disabled": true` di pengaturan terkelola.382* Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` dengan cara apa pun, atau mencantumkan entri `sandbox.credentials.files` apa pun dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat mengatur kunci tersebut. Untuk mematikan isolasi filesystem bagi semua orang, atur `"disabled": true` di pengaturan terkelola.

381* Ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/id/env-vars) diatur, Claude Code mengabaikan `filesystem.disabled` dari setiap sumber, termasuk pengaturan terkelola, dan tetap mengaktifkan isolasi filesystem.383* Ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/id/env-vars) diatur, Claude Code mengabaikan `filesystem.disabled` dari setiap sumber, termasuk pengaturan terkelola.

382 384 

383Entri `mask` yang [valid](https://code.claude.com/docs/id/settings-reference.md#invalid-credential-entries-in-managed-settings) tidak mengunci kunci tersebut, bahkan ketika Claude Code [melakukan fallback ke `deny`](#mask-credential-files) untuk entri tersebut saat startup. Cantumkan path yang tidak dapat di-mask, seperti direktori kredensial, sebagai entri `deny` eksplisit di pengaturan terkelola, yang mengunci kunci tersebut.385Entri `mask` yang [valid](https://code.claude.com/docs/id/settings-reference.md#invalid-credential-entries-in-managed-settings) tidak mengunci kunci tersebut, bahkan ketika Claude Code [melakukan fallback ke `deny`](#mask-credential-files) untuk entri tersebut saat startup. Cantumkan path yang tidak dapat di-mask, seperti direktori kredensial, sebagai entri `deny` eksplisit di pengaturan terkelola, yang mengunci kunci tersebut.

384 386 

Details

117 117 

118* **Pendengar**: pendengar adalah proxy forward di `127.0.0.1`. Runner memulai pendengar sebelum mendaftar dengan bidang kontrol, dan keluar pada startup jika pendengar tidak dapat dimulai.118* **Pendengar**: pendengar adalah proxy forward di `127.0.0.1`. Runner memulai pendengar sebelum mendaftar dengan bidang kontrol, dan keluar pada startup jika pendengar tidak dapat dimulai.

119* **Variabel proxy**: runner menulis ulang mana pun dari `HTTPS_PROXY` dan `HTTP_PROXY` yang Anda atur sehingga menunjuk ke pendengar. Nilai yang ditulis ulang itu menjangkau runner itu sendiri, lifecycle hooks-nya, dan setiap sesi yang dijalankannya.119* **Variabel proxy**: runner menulis ulang mana pun dari `HTTPS_PROXY` dan `HTTP_PROXY` yang Anda atur sehingga menunjuk ke pendengar. Nilai yang ditulis ulang itu menjangkau runner itu sendiri, lifecycle hooks-nya, dan setiap sesi yang dijalankannya.

120* **Rotasi token**: token yang diputar berlaku tanpa restart. Untuk setiap koneksi yang dibuka pendengar ke proxy Anda, runner menjalankan perintah Anda atau membaca file Anda lagi dan menambahkan hasilnya sebagai header.120* **Rotasi token**: ketika Anda merotasi token, koneksi baru membawa token baru tanpa perlu me-restart runner. Untuk setiap koneksi yang dibuka listener ke proxy Anda, runner menjalankan perintah Anda atau membaca file Anda lagi dan menambahkan hasilnya sebagai header. Koneksi yang sudah terbuka tetap dapat digunakan dengan token lama hingga proxy Anda menutupnya atau runner keluar.

121* **Lingkungan sesi**: sesi menjangkau proxy Anda hanya melalui pendengar. Dalam lingkungan setiap sesi, runner menghapus `ALL_PROXY`, menghapus ejaan apa pun dari `HTTPS_PROXY` atau `HTTP_PROXY` yang tidak Anda atur, dan menyematkan `NO_PROXY` ke nilai runner itu sendiri.121* **Lingkungan sesi**: sesi menjangkau proxy Anda hanya melalui pendengar. Dalam lingkungan setiap sesi, runner menghapus `ALL_PROXY`, menghapus ejaan apa pun dari `HTTPS_PROXY` atau `HTTP_PROXY` yang tidak Anda atur, dan menyematkan `NO_PROXY` ke nilai runner itu sendiri.

122* **Log**: runner tidak pernah mencatat nilai header.122* **Log**: runner tidak pernah mencatat nilai header.

123 123 


840 840 

841### Beberapa sesi tidak dihitung sebagai menganggur841### Beberapa sesi tidak dihitung sebagai menganggur

842 842 

843Sesi yang memegang tugas latar belakang yang terus berjalan tidak dihitung sebagai menganggur, jadi `--release-idle-session-min` tidak akan melepaskan slot sesi itu. Sesi yang menunggu persetujuan yang diminta dari dalam panggilan tool yang sedang berjalan juga tidak dihitung sebagai menganggur. Atur `--kill-session-after-min` bersamanya sebagai backstop keras.843Selama sesi tidak dihitung sebagai menganggur, sesi tersebut tetap memegang slotnya melewati batas `--release-idle-session-min`, jadi atur juga `--kill-session-after-min`.

844 

845Sesi dihitung sebagai menganggur setelah gilirannya berakhir atau selama gilirannya menunggu penggunanya, tetapi tidak dalam kasus seperti berikut:

846 

847* Gilirannya telah berakhir dan sesi tidak sedang menunggu penggunanya, tetapi tugas latar belakang terus berjalan

848* Gilirannya menunggu persetujuan yang diminta oleh tool non-MCP selama tool tersebut berjalan

849* Gilirannya menunggu [permintaan `elicitation/create`](https://code.claude.com/docs/id/mcp#respond-to-mcp-elicitation-requests) dari server MCP

844 850 

845`--kill-session-after-min` adalah backstop untuk sesi yang melarikan diri. Pada runner pada v2.1.260 atau lebih baru, sesi yang mencapai batas tidak dihentikan begitu saja. Runner memberikan jendela grace, 15 menit secara default, yang dapat Anda ubah dengan [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](https://code.claude.com/docs/id/self-hosted-environments-reference#environment-variable-only-settings):851`--kill-session-after-min` adalah backstop untuk sesi yang melarikan diri. Pada runner pada v2.1.260 atau lebih baru, sesi yang mencapai batas tidak dihentikan begitu saja. Runner memberikan jendela grace, 15 menit secara default, yang dapat Anda ubah dengan [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](https://code.claude.com/docs/id/self-hosted-environments-reference#environment-variable-only-settings):

846 852 

847* Jika sesi menunggu penggunanya, runner melepaskannya. Jika putarannya telah berakhir dan hanya memegang tugas latar belakang, runner menunggu hingga 60 detik untuk tugas-tugas itu selesai dan kemudian melepaskannya. Sesi dilanjutkan ketika penggunanya mengirim pesan berikutnya.853* Jika sesi menunggu penggunanya, runner melepaskannya. Jika putarannya telah berakhir dan hanya memegang tugas latar belakang, runner menunggu hingga 60 detik untuk tugas-tugas itu selesai dan kemudian melepaskannya. Sesi dilanjutkan ketika penggunanya mengirim pesan berikutnya.

848* Jika putaran masih berjalan, runner menunggu putaran selesai, atau untuk sesi berikutnya menunggu penggunanya, dan kemudian melepaskannya.854* Jika putaran masih berjalan, runner menunggu putaran selesai, atau untuk sesi berikutnya menunggu penggunanya, dan kemudian melepaskannya.

849* Jika sesi masih di runner ketika jendela grace berakhir, runner menghentikannya, dan pekerjaan putaran yang berjalan hilang. Putaran menunggu persetujuan yang diminta dari dalam panggilan alat yang berjalan adalah satu cara sesi melampaui jendela.855* Jika sesi masih di runner ketika jendela grace berakhir, runner menghentikannya, dan pekerjaan giliran yang sedang berjalan hilang. Misalnya, sesi dapat tetap berada di runner hingga saat itu jika gilirannya menunggu persetujuan yang diminta oleh tool non-MCP selama tool tersebut berjalan. Sesi juga dapat tetap berada di sana selama gilirannya menunggu permintaan `elicitation/create` dari server MCP.

850 856 

851Sesi yang dilepaskan dilanjutkan dari klon segar, jadi pekerjaan yang belum di-push tetap hilang; lihat [Resumed sessions lose unpushed work](#resumed-sessions-lose-unpushed-work). Sebelum v2.1.260, runner menghentikan setiap sesi pada batas, setelah menunggu paling lama jendela grace agar giliran yang sedang berjalan selesai.857Sesi yang dilepaskan dilanjutkan dari klon segar, jadi pekerjaan yang belum di-push tetap hilang; lihat [Resumed sessions lose unpushed work](#resumed-sessions-lose-unpushed-work). Sebelum v2.1.260, runner menghentikan setiap sesi pada batas, setelah menunggu paling lama jendela grace agar giliran yang sedang berjalan selesai.

852 858 

Details

252 252 

253Setiap key lain dalam blok `env` yang di-cache berlaku saat startup. Setelah server mengonfirmasi payload, dan Anda menyetujuinya jika payload tersebut memerlukan [persetujuan keamanan](#security-approval-dialogs), variabel yang ditahan berlaku selama sisa sesi.253Setiap key lain dalam blok `env` yang di-cache berlaku saat startup. Setelah server mengonfirmasi payload, dan Anda menyetujuinya jika payload tersebut memerlukan [persetujuan keamanan](#security-approval-dialogs), variabel yang ditahan berlaku selama sisa sesi.

254 254 

255Jika organisasi Anda memerlukan proxy untuk menjangkau `api.anthropic.com`, penahanan ini hanya memengaruhi blok `env` yang dikirim server itu sendiri: proxy yang ditetapkan dalam blok `env` [yang dikelola endpoint](https://code.claude.com/docs/id/managed-settings.md#delivery-mechanisms) melalui MDM atau `managed-settings.json`, dalam environment shell, atau dalam [pengaturan pengguna](https://code.claude.com/docs/id/settings.md#where-settings-live) akan menjangkau pengambilan pengaturan. Sumber yang dikelola endpoint memerlukan Claude Code v2.1.223 atau yang lebih baru: nilai proxy yang dikelola server dan di-cache ditahan hingga pengambilan mengonfirmasinya, sehingga nilai yang dikelola endpoint mengisinya per key dan menjangkau pengambilan itu sendiri. Sebelum v2.1.223, gunakan environment shell atau pengaturan pengguna agar proxy berlaku bersamaan dengan payload server yang di-cache. Peluncuran pertama tidak memiliki cache, sehingga sumber yang dikelola endpoint, environment shell, atau pengaturan pengguna tetap diperlukan untuk pengambilan awal.255Jika pengambilan memerlukan proxy, tetapkan `HTTPS_PROXY` di salah satu dari:

256 

257* Blok `env` [yang dikelola endpoint](https://code.claude.com/docs/id/managed-settings.md#delivery-mechanisms) melalui MDM atau `managed-settings.json`. Sumber ini memerlukan Claude Code v2.1.223 atau yang lebih baru. Sebelum v2.1.223, gunakan environment shell atau pengaturan pengguna agar proxy [berlaku bersamaan dengan payload server yang di-cache](#per-key-exceptions-across-managed-sources).

258* Environment shell

259* [Pengaturan pengguna](https://code.claude.com/docs/id/settings.md#where-settings-live)

260 

261Tetapkan `HTTPS_PROXY` meskipun `ALL_PROXY` sudah menyebutkan proxy tersebut.

256 262 

257Claude Code menerapkan sebagian besar pembaruan pengaturan ke sesi yang sedang berjalan tanpa perlu memulai ulang. Beberapa pembaruan hanya berlaku pada peluncuran berikutnya, termasuk konfigurasi exporter OpenTelemetry, key `model`, dan penghapusan variabel dari blok `env`.263Claude Code menerapkan sebagian besar pembaruan pengaturan ke sesi yang sedang berjalan tanpa perlu memulai ulang. Beberapa pembaruan hanya berlaku pada peluncuran berikutnya, termasuk konfigurasi exporter OpenTelemetry, key `model`, dan penghapusan variabel dari blok `env`.

258 264 

settings.md +1 −1

Details

177 177 

178Claude Code memantau file pengaturan Anda dan memuat ulang saat berubah, jadi ia menerapkan sebagian besar pengeditan ke sesi yang sedang berjalan tanpa restart, termasuk pengeditan ke `permissions`, `hooks`, dan pembantu kredensial seperti `apiKeyHelper`. Claude Code juga memuat file pengaturan yang Anda buat di tengah sesi jika foldernya ada saat sesi dimulai. Untuk folder `.claude/` proyek, ia memuat file bahkan ketika Anda membuat folder di sesi yang sama.178Claude Code memantau file pengaturan Anda dan memuat ulang saat berubah, jadi ia menerapkan sebagian besar pengeditan ke sesi yang sedang berjalan tanpa restart, termasuk pengeditan ke `permissions`, `hooks`, dan pembantu kredensial seperti `apiKeyHelper`. Claude Code juga memuat file pengaturan yang Anda buat di tengah sesi jika foldernya ada saat sesi dimulai. Untuk folder `.claude/` proyek, ia memuat file bahkan ketika Anda membuat folder di sesi yang sama.

179 179 

180Reload mencakup pengaturan pengguna, proyek, lokal, dan yang dikelola, dan Claude Code menjalankan hook [`ConfigChange`](https://code.claude.com/docs/id/hooks#configchange) untuk setiap perubahan file pengaturan yang terdeteksi, bukan untuk pengaturan yang dikelola yang tiba dari MDM atau konsol claude.ai. Pengaturan yang dikelola yang tiba melalui MDM atau dari konsol claude.ai mencapai sesi yang sedang berjalan sesuai jadwal daripada saat disimpan; [tabel pengiriman](https://code.claude.com/docs/id/managed-settings.md#choose-a-delivery-mechanism) memberikannya per sumber.180Pemuatan ulang mencakup pengaturan pengguna, proyek, lokal, dan terkelola. Claude Code menjalankan [hook `ConfigChange`](https://code.claude.com/docs/id/hooks#configchange) untuk pengeditan langsung pada file pengaturan, bukan untuk pengaturan terkelola yang tiba dari MDM atau konsol claude.ai. Pengaturan terkelola yang tiba melalui MDM atau dari konsol claude.ai mencapai sesi yang sedang berjalan sesuai jadwal, bukan saat disimpan; [tabel pengiriman](https://code.claude.com/docs/id/managed-settings.md#choose-a-delivery-mechanism) menjelaskannya per sumber.

181 181 

182Claude Code membaca beberapa kunci hanya sekali, saat startup sesi, jadi pengeditan ke salah satunya tidak mencapai sesi yang sedang berjalan. Kunci tingkat admin yang juga menunggu restart, seperti `requiredMinimumVersion`, tercantum di bawah [tempat dan kapan kebijakan berlaku](https://code.claude.com/docs/id/managed-settings.md#where-and-when-a-policy-applies). Yang paling mungkin Anda edit di tengah sesi:182Claude Code membaca beberapa kunci hanya sekali, saat startup sesi, jadi pengeditan ke salah satunya tidak mencapai sesi yang sedang berjalan. Kunci tingkat admin yang juga menunggu restart, seperti `requiredMinimumVersion`, tercantum di bawah [tempat dan kapan kebijakan berlaku](https://code.claude.com/docs/id/managed-settings.md#where-and-when-a-policy-applies). Yang paling mungkin Anda edit di tengah sesi:

183 183 

Details

235| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Blokir [server MCP](https://code.claude.com/docs/id/mcp.md) dari sumber user dan project | Plugin dan skill | Managed |235| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Blokir [server MCP](https://code.claude.com/docs/id/mcp.md) dari sumber user dan project | Plugin dan skill | Managed |

236| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Blokir [skill](https://code.claude.com/docs/id/skills.md) dari sumber user dan project | Plugin dan skill | Managed |236| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Blokir [skill](https://code.claude.com/docs/id/skills.md) dari sumber user dan project | Plugin dan skill | Managed |

237| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Pilih [masa berlaku cache prompt](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) untuk subagent dan permintaan lain di luar percakapan utama | Model dan respons | File apa pun |237| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Pilih [masa berlaku cache prompt](https://code.claude.com/docs/id/prompt-caching.md#cache-lifetime) untuk subagent dan permintaan lain di luar percakapan utama | Model dan respons | File apa pun |

238| [`subagentStatusLine`](#subagentstatusline) | Tulis ulang baris dalam tampilan tugas [subagent](https://code.claude.com/docs/id/sub-agents.md) dengan perintah Anda sendiri | Antarmuka dan terminal | File apa pun |

239| [`switchModelsOnFlag`](#switchmodelsonflag) | Beralih model secara otomatis atau jeda saat [pengklasifikasi keamanan](https://code.claude.com/docs/id/model-config.md#ask-before-switching) menandai sebuah permintaan | Model dan respons | File apa pun |238| [`switchModelsOnFlag`](#switchmodelsonflag) | Beralih model secara otomatis atau jeda saat [pengklasifikasi keamanan](https://code.claude.com/docs/id/model-config.md#ask-before-switching) menandai sebuah permintaan | Model dan respons | File apa pun |

240| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Berhenti memuat [plugin yang diaktifkan di akun claude.ai Anda](https://code.claude.com/docs/id/plugins/loading.md#synced-plugins) dan berhenti mengunduh yang baru | Plugin dan skill | User, local, atau managed |239| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Berhenti memuat [plugin yang diaktifkan di akun claude.ai Anda](https://code.claude.com/docs/id/plugins/loading.md#synced-plugins) dan berhenti mengunduh yang baru | Plugin dan skill | User, local, atau managed |

241| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Berhenti memuat [skill yang diaktifkan di akun claude.ai Anda](https://code.claude.com/docs/id/skills.md#how-synced-skills-behave) dan berhenti mengunduh yang baru | Plugin dan skill | User, local, atau managed |240| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Berhenti memuat [skill yang diaktifkan di akun claude.ai Anda](https://code.claude.com/docs/id/skills.md#how-synced-skills-behave) dan berhenti mengunduh yang baru | Plugin dan skill | User, local, atau managed |


885}884}

886```885```

887 886 

888Lihat [Arahkan semua perintah shell melalui pengklasifikasi](https://code.claude.com/docs/id/auto-mode-config.md#route-all-shell-commands-through-the-classifier).887Kunci ini bekerja secara berbeda dalam sesi Code Mode. Lihat [Arahkan semua perintah shell melalui pengklasifikasi](https://code.claude.com/docs/id/auto-mode-config.md#route-all-shell-commands-through-the-classifier).

889 888 

890### `disableAutoMode`889### `disableAutoMode`

891 890 


1533}1532}

1534```1533```

1535 1534 

1535Di Linux dan WSL2, entri untuk jalur yang belum ada tidak berpengaruh, jadi buat jalur tersebut terlebih dahulu.

1536 

1536Claude Code menggabungkan entri `allowWrite` dan path dari aturan allow `Edit(...)` Anda di seluruh cakupan pengaturan yang dimuat sesi, dengan mengecualikan yang berasal dari pengaturan repositori selama [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) aktif. [Penguncian repositori](https://code.claude.com/docs/id/sandboxing.md#repository-settings-under-an-admin-required-sandbox) juga dapat mengecualikan entri repositori. Entri `allowWrite` tidak dapat mencabut [path yang dilindungi](https://code.claude.com/docs/id/sandboxing.md#protected-paths).1537Claude Code menggabungkan entri `allowWrite` dan path dari aturan allow `Edit(...)` Anda di seluruh cakupan pengaturan yang dimuat sesi, dengan mengecualikan yang berasal dari pengaturan repositori selama [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) aktif. [Penguncian repositori](https://code.claude.com/docs/id/sandboxing.md#repository-settings-under-an-admin-required-sandbox) juga dapat mengecualikan entri repositori. Entri `allowWrite` tidak dapat mencabut [path yang dilindungi](https://code.claude.com/docs/id/sandboxing.md#protected-paths).

1537 1538 

1538### `sandbox.filesystem.denyWrite`1539### `sandbox.filesystem.denyWrite`


2453 2454 

2454#### Bagaimana nilai `env` berinteraksi dengan shell Anda2455#### Bagaimana nilai `env` berinteraksi dengan shell Anda

2455 2456 

2456* Nilai di sini menimpa variabel yang sama yang diekspor di shell Anda, dan saat lebih dari satu file pengaturan mengatur suatu variabel, yang memiliki [prioritas tertinggi](https://code.claude.com/docs/id/settings.md#settings-precedence) yang berlaku. [Variabel yang diabaikan Claude Code di `env`](#variables-claude-code-ignores-in-env) mencantumkan pengecualian untuk pengaturan proyek dan lokal.2457* Nilai di sini menimpa variabel yang sama yang diekspor di shell Anda, dan saat lebih dari satu file pengaturan mengatur suatu variabel, yang memiliki [prioritas tertinggi](https://code.claude.com/docs/id/settings.md#settings-precedence) yang berlaku. [Variabel yang diabaikan Claude Code di `env`](#variables-claude-code-ignores-in-env) mencantumkan pengecualiannya.

2457* Saat aplikasi Claude Desktop atau runner [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments) memulai sesi, lingkungan peluncuran yang dibangunnya yang diutamakan: Claude Code mengabaikan nilai `env` dari file pengaturan mana pun untuk variabel yang sudah diatur oleh lingkungan peluncuran. [Log debug](https://code.claude.com/docs/id/debug-your-config.md) menyebutkan setiap variabel yang diabaikan.2458* Saat aplikasi Claude Desktop atau runner [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments) memulai sesi, lingkungan peluncuran yang dibangunnya yang diutamakan: Claude Code mengabaikan nilai `env` dari file pengaturan mana pun untuk variabel yang sudah diatur oleh lingkungan peluncuran. [Log debug](https://code.claude.com/docs/id/debug-your-config.md) menyebutkan setiap variabel yang diabaikan.

2458* Untuk membatalkan ekspor shell, atur variabel ke `""`. Claude Code memperlakukan nilai kosong sebagai tidak diatur untuk pemilihan penyedia, dan subproses mewarisi nilai kosong tersebut.2459* Untuk membatalkan ekspor shell, atur variabel ke `""`. Claude Code memperlakukan nilai kosong sebagai tidak diatur untuk pemilihan penyedia, dan subproses mewarisi nilai kosong tersebut.

2459* `NO_COLOR` dan `FORCE_COLOR` yang diatur di sini hanya mencapai subproses. Untuk mengubah warna antarmuka Claude Code sendiri, atur keduanya di shell Anda sebelum menjalankan `claude`.2460* `NO_COLOR` dan `FORCE_COLOR` yang diatur di sini hanya mencapai subproses. Untuk mengubah warna antarmuka Claude Code sendiri, atur keduanya di shell Anda sebelum menjalankan `claude`.


2494 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](https://code.claude.com/docs/id/env-vars#variables), yang menghentikan Claude Code dari memperluas mention `@` untuk file dan direktori.2495 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](https://code.claude.com/docs/id/env-vars#variables), yang menghentikan Claude Code dari memperluas mention `@` untuk file dan direktori.

2495 2496 

2496 Sebelum v2.1.251, pengaturan proyek dan lokal juga dapat mengatur variabel dalam daftar ini yang memilih tempat Claude Code menulis filenya atau yang mengekspor konten sesi, kecuali `HOME` dan `XDG_CONFIG_HOME`. Sebelum v2.1.290, pengaturan tersebut juga dapat mengatur variabel pengatur waktu dialog dan `CLAUDE_CODE_DISABLE_ATTACHMENTS`.2497 Sebelum v2.1.251, pengaturan proyek dan lokal juga dapat mengatur variabel dalam daftar ini yang memilih tempat Claude Code menulis filenya atau yang mengekspor konten sesi, kecuali `HOME` dan `XDG_CONFIG_HOME`. Sebelum v2.1.290, pengaturan tersebut juga dapat mengatur variabel pengatur waktu dialog dan `CLAUDE_CODE_DISABLE_ATTACHMENTS`.

2498* Anda dapat menyalakan [Code Mode](https://code.claude.com/docs/id/code-mode.md) dengan [`CLAUDE_CODE_EXPERIMENTAL_CODE_MODE`](https://code.claude.com/docs/id/env-vars#variables) dari shell, pengaturan pengguna, atau file `--settings` Anda, dan tidak dari pengaturan terkelola, proyek, atau lokal. Dengan `0` di salah satu dari tiga sumber pertama atau di pengaturan terkelola, Code Mode tetap mati apa pun yang Anda atur di tempat lain. Saat pengaturan terkelola berisi `1`, atur `1` Anda sendiri di pengaturan pengguna, karena `1` di shell Anda diabaikan

2497* Variabel identitas yang dimiliki oleh lingkungan hosting Claude Code, seperti `CLAUDE_CODE_REMOTE` dan `CLAUDE_CODE_ACCOUNT_UUID`, diabaikan dari setiap file.2499* Variabel identitas yang dimiliki oleh lingkungan hosting Claude Code, seperti `CLAUDE_CODE_REMOTE` dan `CLAUDE_CODE_ACCOUNT_UUID`, diabaikan dari setiap file.

2498* [`CLAUDE_CODE_MESSAGING_SOCKET` dan `CLAUDE_CODE_MESSAGING_TOKEN`](https://code.claude.com/docs/id/env-vars#variables), yang diekspor sendiri oleh Claude Code, diabaikan dari setiap file. Pengabaian variabel socket memerlukan Claude Code v2.1.224 atau yang lebih baru, dan pengabaian token memerlukan v2.1.228 atau yang lebih baru.2500* [`CLAUDE_CODE_MESSAGING_SOCKET` dan `CLAUDE_CODE_MESSAGING_TOKEN`](https://code.claude.com/docs/id/env-vars#variables), yang diekspor sendiri oleh Claude Code, diabaikan dari setiap file. Pengabaian variabel socket memerlukan Claude Code v2.1.224 atau yang lebih baru, dan pengabaian token memerlukan v2.1.228 atau yang lebih baru.

2499* [`CLAUDE_CODE_PROJECT_DIR_NAME`](https://code.claude.com/docs/id/sessions#name-the-project-directory-yourself), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file; memerlukan v2.1.234 atau yang lebih baru.2501* [`CLAUDE_CODE_PROJECT_DIR_NAME`](https://code.claude.com/docs/id/sessions#name-the-project-directory-yourself), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file; memerlukan v2.1.234 atau yang lebih baru.


3173 3175 

3174Contoh memerlukan [`jq`](https://jqlang.org/) terinstal dan berjalan dalam shell. Untuk PowerShell dan setara Git Bash, lihat [Windows configuration](https://code.claude.com/docs/id/statusline.md#windows-configuration); untuk setup lengkap, lihat [Manually configure a status line](https://code.claude.com/docs/id/statusline.md#manually-configure-a-status-line).3176Contoh memerlukan [`jq`](https://jqlang.org/) terinstal dan berjalan dalam shell. Untuk PowerShell dan setara Git Bash, lihat [Windows configuration](https://code.claude.com/docs/id/statusline.md#windows-configuration); untuk setup lengkap, lihat [Manually configure a status line](https://code.claude.com/docs/id/statusline.md#manually-configure-a-status-line).

3175 3177 

3176### `subagentStatusLine`

3177 

3178Ketika Claude menjalankan [subagents](https://code.claude.com/docs/id/sub-agents.md), Claude Code mencantumkannya dalam tampilan tugas di bawah prompt, satu baris per subagent menampilkan `name · description · token count`. Kunci ini memungkinkan Anda menjalankan perintah Anda sendiri untuk menulis ulang baris tersebut, misalnya untuk menampilkan penggunaan konteks setiap subagent sebagai persentase. Pada setiap refresh, Claude Code mengirim baris yang terlihat sebagai satu objek JSON di stdin, dengan array `tasks` membawa `id`, `name`, `status`, `model`, `tokenCount`, dan lainnya setiap subagent, dan mengganti baris untuk setiap `id` yang Anda tulis kembali sebagai baris `{"id", "content"}`. Baris yang tidak Anda tulis kembali menjaga rendering default.

3179 

3180* **Scope**: [`Any file`](#scopes). Ketika [`allowManagedHooksOnly`](#allowmanagedhooksonly) aktif, atau [`disableAllHooks`](#disableallhooks) diatur di luar pengaturan terkelola, hanya nilai pengaturan terkelola yang berjalan.

3181* **Type**: object dengan `type` diatur ke `"command"` dan string `command`

3182* **Default**: unset, jadi Claude Code merender baris default

3183 

3184```json settings.json theme={null}

3185{

3186 "subagentStatusLine": {

3187 "type": "command",

3188 "command": "jq -c '.tasks[] | {id, content: \"\\(.name): \\(.tokenCount) tokens\"}'"

3189 }

3190}

3191```

3192 

3193Lihat [Subagent status lines](https://code.claude.com/docs/id/statusline.md#subagent-status-lines).

3194 

3195### `syntaxHighlightingDisabled`3178### `syntaxHighlightingDisabled`

3196 3179 

3197Claude Code mewarnai kode berdasarkan bahasa dalam diff, blok kode, dan pratinjau file yang ditampilkan di terminal, dengan highlighter bawaannya. Atur kunci ini ke `true` untuk menampilkannya sebagai teks biasa, misalnya jika warna bertentangan dengan tema terminal Anda atau memperlambat pembaca layar.3180Claude Code mewarnai kode berdasarkan bahasa dalam diff, blok kode, dan pratinjau file yang ditampilkan di terminal, dengan highlighter bawaannya. Atur kunci ini ke `true` untuk menampilkannya sebagai teks biasa, misalnya jika warna bertentangan dengan tema terminal Anda atau memperlambat pembaca layar.


3648* **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](https://code.claude.com/docs/id/plugins/mods/overview.md#mods-built-into-claude-code) terus berjalan. Untuk memblokir hanya mods pengguna, atur [`allowManagedModsOnly`](https://code.claude.com/docs/id/plugins/mods/admin#set-options-on-the-built-in-guard) sebagai gantinya.3631* **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](https://code.claude.com/docs/id/plugins/mods/overview.md#mods-built-into-claude-code) terus berjalan. Untuk memblokir hanya mods pengguna, atur [`allowManagedModsOnly`](https://code.claude.com/docs/id/plugins/mods/admin#set-options-on-the-built-in-guard) sebagai gantinya.

3649* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](https://code.claude.com/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang dipaksa diaktifkan dalam `enabledPlugins` terkelola, kecuali Anda menyetel [`disableCommandPluginSources`](#disablecommandpluginsources) ke `false` secara eksplisit3632* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](https://code.claude.com/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

3650* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](https://code.claude.com/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 baru3633* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](https://code.claude.com/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

3651* **Baris status dan file suggestion menyempit ke pengaturan terkelola**: Claude Code membaca [`statusLine`](https://code.claude.com/docs/id/statusline), [`fileSuggestion`](#filesuggestion), dan [`subagentStatusLine`](https://code.claude.com/docs/id/statusline#subagent-status-lines) dari pengaturan terkelola saja, mengikuti [gerbang baris status dan file suggestion](#status-line-and-file-suggestion-gates)3634* **Baris status dan file suggestion menyempit ke pengaturan terkelola**: Claude Code membaca [`statusLine`](https://code.claude.com/docs/id/statusline) dan [`fileSuggestion`](#filesuggestion) dari pengaturan terkelola saja, mengikuti [gerbang baris status dan file suggestion](#status-line-and-file-suggestion-gates)

3652 3635 

3653Perintah [`/goal`](https://code.claude.com/docs/id/goal) tidak dapat berjalan saat kunci ini diatur, karena bergantung pada hooks.3636Perintah [`/goal`](https://code.claude.com/docs/id/goal) tidak dapat berjalan saat kunci ini diatur, karena bergantung pada hooks.

3654 3637 


3687 3670 

3688#### Gerbang baris status dan file suggestion3671#### Gerbang baris status dan file suggestion

3689 3672 

3690Claude Code membuat dua keputusan untuk `statusLine`, `fileSuggestion`, dan `subagentStatusLine`, dalam urutan ini:3673Claude Code membuat dua keputusan untuk `statusLine` dan `fileSuggestion`, dalam urutan ini:

3691 3674 

3692* **Matikan sepenuhnya**: ketika pengaturan terkelola menyetel `disableAllHooks`, atau ketika folder tidak dipercaya di bawah [aturan kepercayaan workspace yang sama dengan hooks dalam file pengaturan](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder)3675* **Matikan sepenuhnya**: ketika pengaturan terkelola menyetel `disableAllHooks`, atau ketika folder tidak dipercaya di bawah [aturan kepercayaan workspace yang sama dengan hooks dalam file pengaturan](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder)

3693* **Menyempit ke pengaturan terkelola**: ketika [`allowManagedHooksOnly`](#allowmanagedhooksonly) diatur, ketika `disableAllHooks` adalah `true` di luar pengaturan terkelola setelah [prioritas pengaturan](https://code.claude.com/docs/id/hooks.md#disable-or-remove-hooks) diterapkan, atau ketika Anda memulai Claude Code dengan `--safe-mode`3676* **Menyempit ke pengaturan terkelola**: ketika [`allowManagedHooksOnly`](#allowmanagedhooksonly) diatur, ketika `disableAllHooks` adalah `true` di luar pengaturan terkelola setelah [prioritas pengaturan](https://code.claude.com/docs/id/hooks.md#disable-or-remove-hooks) diterapkan, atau ketika Anda memulai Claude Code dengan `--safe-mode`


4659 4642 

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

4661* **Type**: string, nama agent bawaan atau kustom4644* **Type**: string, nama agent bawaan atau kustom

4662* **Default**: unset, sehingga thread utama berjalan sebagai agent default Claude Code4645* **Default**: unset

4663* **Per-session overrides**: `--agent` diutamakan daripada kunci ini untuk satu sesi4646* **Per-session overrides**: `--agent` diutamakan daripada kunci ini untuk satu sesi

4664 4647 

4665```json settings.json theme={null}4648```json settings.json theme={null}


4668}4651}

4669```4652```

4670 4653 

4671`settings.json` plugin sendiri juga dapat menyediakan kunci ini; lihat [Ship default settings with your plugin](https://code.claude.com/docs/id/plugins/components.md#default-settings).

4672 

4673### `crossSessionInbound`4654### `crossSessionInbound`

4674 4655 

4675Pilih apa yang dilakukan sesi ini dengan [pesan yang tiba dari sesi Claude Code lain Anda](https://code.claude.com/docs/id/cross-session-messaging.md#control-inbound-messages). Ketika tidak ada nilai yang berlaku, Claude Code memutuskan per pesan dari kelas permission-mode kedua sesi.4656Pilih apa yang dilakukan sesi ini dengan [pesan yang tiba dari sesi Claude Code lain Anda](https://code.claude.com/docs/id/cross-session-messaging.md#control-inbound-messages). Ketika tidak ada nilai yang berlaku, Claude Code memutuskan per pesan dari kelas permission-mode kedua sesi.


5207 5188 

5208* **Scope**: [`Managed`](#scopes). Daftar yang sumber admin mesin sendiri atur, kebijakan MDM dan file pengaturan terkelola, terus berlaku ketika pengaturan terkelola server juga memberikan satu: sesi kemudian dapat menggunakan hanya penyedia di kedua daftar, jadi daftar terkelola server dapat mempersempit apa yang mesin izinkan tetapi tidak pernah memperluas. Sumber mesin mana yang `allowedProviders` dihitung mengikuti [bagaimana Claude Code menggabungkan sumber terkelola](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources). Daftar yang disampaikan melalui pengaturan terkelola server saja mencapai hanya sesi yang [mengambil pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability).5189* **Scope**: [`Managed`](#scopes). Daftar yang sumber admin mesin sendiri atur, kebijakan MDM dan file pengaturan terkelola, terus berlaku ketika pengaturan terkelola server juga memberikan satu: sesi kemudian dapat menggunakan hanya penyedia di kedua daftar, jadi daftar terkelola server dapat mempersempit apa yang mesin izinkan tetapi tidak pernah memperluas. Sumber mesin mana yang `allowedProviders` dihitung mengikuti [bagaimana Claude Code menggabungkan sumber terkelola](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources). Daftar yang disampaikan melalui pengaturan terkelola server saja mencapai hanya sesi yang [mengambil pengaturan terkelola server](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability).

5209* **Type**: array string, masing-masing satu dari:5190* **Type**: array string, masing-masing satu dari:

5210 * `"anthropic"`: API Anthropic di host Anthropic sendiri, melalui sign-in claude.ai atau Console atau kunci API. Pasangkan dengan [`forceLoginMethod`](#forceloginmethod) atau [`forceLoginOrgUUID`](#forceloginorguuid) untuk juga membatasi sign-in5191 * `"anthropic"`: API Anthropic di host Anthropic sendiri, melalui sign-in claude.ai atau Console atau kunci API. Pasangkan dengan [`forceLoginMethod`](#forceloginmethod) atau [`forceLoginOrgUUID`](#forceloginorguuid) untuk juga membatasi sign-in. Cowork di Desktop [pada mesin pengguna](https://code.claude.com/docs/id/managed-settings.md#where-and-when-a-policy-applies) dihitung sebagai `"anthropic"` ketika masuk ke claude.ai, sehingga tanpa entri itu dalam daftar mesin, Cowork [ditolak saat dimulai](https://code.claude.com/docs/id/errors.md#managed-settings-dont-allow-this-api-provider). Agar Cowork dapat dimulai, tambahkan entri itu, yang juga membuka daftar ini untuk sesi Anthropic langsung.

5211 * `"bedrock"`: [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md)5192 * `"bedrock"`: [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md)

5212 * `"vertex"`: [Agent Platform Google Cloud](https://code.claude.com/docs/id/google-vertex-ai.md), sebelumnya Vertex AI5193 * `"vertex"`: [Agent Platform Google Cloud](https://code.claude.com/docs/id/google-vertex-ai.md), sebelumnya Vertex AI

5213 * `"foundry"`: [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md)5194 * `"foundry"`: [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md)

setup.md +5 −23

Details

141 141 

142### Alpine Linux dan distribusi berbasis musl142### Alpine Linux dan distribusi berbasis musl

143 143 

144Menginstal Claude Code di Alpine dan distribusi berbasis musl/uClibc lainnya memerlukan `bash` dan `curl` untuk perintah instalasi, serta `libgcc`, `libstdc++`, dan `ripgrep` saat runtime. Alpine tidak menyertakan `bash` atau `curl` secara default, jadi perintah instalasi yang didokumentasikan gagal dengan kesalahan `not found` sampai Anda menginstalnya. Instal paket-paket ini menggunakan manajer paket distribusi Anda, kemudian atur `USE_BUILTIN_RIPGREP=0`.144Di Alpine dan distribusi berbasis musl lainnya, [perintah instalasi](#install-claude-code) memerlukan `bash` dan `curl`, dan Claude Code sendiri memerlukan `bash` atau `zsh`. Alpine tidak menyertakan `bash` atau `curl` secara default, jadi perintah instalasi yang didokumentasikan gagal dengan kesalahan `not found` sampai Anda menginstalnya.

145 145 

146Contoh ini menginstal paket yang diperlukan di Alpine:146Contoh ini menginstal paket yang diperlukan di Alpine:

147 147 

148```bash theme={null}148```bash theme={null}

149apk add bash curl libgcc libstdc++ ripgrep149apk add bash curl

150```

151 

152Di Alpine, `ripgrep` berada di repositori komunitas. Jika `apk` melaporkan bahwa paket hilang, tambahkan repositori komunitas ke `/etc/apk/repositories`, menggunakan versi Alpine Anda:

153 

154```bash theme={null}

155echo "https://dl-cdn.alpinelinux.org/alpine/v3.22/community" >> /etc/apk/repositories

156```

157 

158Jalankan `apk update` untuk menyegarkan indeks paket, dan coba lagi perintah `apk add`.

159 

160Kemudian atur `USE_BUILTIN_RIPGREP` ke `0` di file [`settings.json`](https://code.claude.com/docs/id/settings-reference#all-settings) Anda:

161 

162```json theme={null}

163{

164 "env": {

165 "USE_BUILTIN_RIPGREP": "0"

166 }

167}

168```150```

169 151 

170## Verifikasi instalasi Anda152## Verifikasi instalasi Anda


443> wget -O /etc/apk/keys/claude-code.rsa.pub \425> wget -O /etc/apk/keys/claude-code.rsa.pub \

444> https://downloads.claude.ai/keys/claude-code.rsa.pub426> https://downloads.claude.ai/keys/claude-code.rsa.pub

445> echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories427> echo "https://downloads.claude.ai/claude-code/apk/stable" >> /etc/apk/repositories

446> apk add claude-code428> apk add bash claude-code

447> ```429> ```

448>430>

449> Untuk beralih ke saluran `latest`, hapus baris repositori `stable` dan tambahkan repositori `latest`:431> Untuk beralih ke saluran `latest`, hapus baris repositori `stable` dan tambahkan repositori `latest`:


463>445>

464> Jika `npm --version` mencetak versi yang diawali dengan `12` di shell Anda, ikuti [Memperbaiki instalasi npm 12](https://code.claude.com/docs/id/troubleshoot-install.md#fix-an-npm-12-install) sebagai gantinya. Jangan menginstal dengan `sudo`. Claude Code menjalankan npm tanpa `sudo` saat memperbarui dirinya sendiri, sehingga instalasi yang memerlukan `sudo` tidak dapat diperbarui secara otomatis.446> Jika `npm --version` mencetak versi yang diawali dengan `12` di shell Anda, ikuti [Memperbaiki instalasi npm 12](https://code.claude.com/docs/id/troubleshoot-install.md#fix-an-npm-12-install) sebagai gantinya. Jangan menginstal dengan `sudo`. Claude Code menjalankan npm tanpa `sudo` saat memperbarui dirinya sendiri, sehingga instalasi yang memerlukan `sudo` tidak dapat diperbarui secara otomatis.

465 447 

466Anda juga dapat menginstal Claude Code sebagai paket npm global. Paket npm memerlukan [Node.js 22 atau lebih baru](https://nodejs.org/en/download). Pada versi Node.js yang lebih lama, npm mencetak peringatan `EBADENGINE` selama instalasi daripada gagal; instalasi selesai dan `claude` masih berjalan, karena paket mengunduh biner asli yang tidak menggunakan Node.js Anda saat runtime.448Anda juga dapat menginstal Claude Code sebagai paket npm global. Paket npm memerlukan [Node.js 22 atau lebih baru](https://nodejs.org/en/download). Pada versi Node.js yang lebih lama, npm secara default mencetak peringatan `EBADENGINE` dan menyelesaikan instalasi alih-alih gagal. `claude` yang terinstal tetap berjalan, karena paket mengunduh biner asli yang tidak menggunakan Node.js Anda saat runtime.

467 449 

468```bash theme={null}450```bash theme={null}

469npm install -g @anthropic-ai/claude-code451npm install -g @anthropic-ai/claude-code@latest

470```452```

471 453 

472Paket npm menginstal biner asli yang sama dengan penginstal standalone. npm menarik biner melalui dependensi opsional per-platform seperti `@anthropic-ai/claude-code-darwin-arm64`, dan langkah postinstall menautkannya ke tempat. Biner `claude` yang terinstal tidak sendiri memanggil Node.454Paket npm menginstal biner asli yang sama dengan penginstal standalone. npm menarik biner melalui dependensi opsional per-platform seperti `@anthropic-ai/claude-code-darwin-arm64`, dan langkah postinstall menautkannya ke tempat. Biner `claude` yang terinstal tidak sendiri memanggil Node.

skills.md +5 −1

Details

787 787 

788Perintah yang diinjeksi tidak pernah meminta izin saat skill dirender. Claude Code memeriksa masing-masing terhadap [aturan izin](https://code.claude.com/docs/id/permissions.md) Anda terlebih dahulu. Perintah yang cocok dengan aturan deny membatalkan invokasi dengan `Shell command permission check failed for pattern "..."`.788Perintah yang diinjeksi tidak pernah meminta izin saat skill dirender. Claude Code memeriksa masing-masing terhadap [aturan izin](https://code.claude.com/docs/id/permissions.md) Anda terlebih dahulu. Perintah yang cocok dengan aturan deny membatalkan invokasi dengan `Shell command permission check failed for pattern "..."`.

789 789 

790Di luar [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), ketika pemeriksaan izin perintah mengembalikan apa pun selain allow, Claude Code membatalkan invokasi dengan kesalahan yang sama. Ini termasuk aturan yang biasanya akan menanyakan Anda. Untuk menjaga perintah yang tidak cocok agar tidak membatalkan di sini, pra-setujui dengan [`allowed-tools`](#pre-approve-tools-for-a-skill). Jika organisasi Anda membatasi aturan izin hanya pada pengaturan terkelola, lihat [Ketika hanya aturan izin terkelola yang berlaku](#when-only-managed-permission-rules-apply). Aturan deny dan ask masih menimpa `allowed-tools`. Lihat [Kelola izin](https://code.claude.com/docs/id/permissions.md#manage-permissions).790Di luar [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), ketika pemeriksaan izin perintah mengembalikan apa pun selain allow, Claude Code membatalkan invokasi. Agar perintah yang tidak cocok tidak membatalkan invokasi, pra-setujui perintah tersebut dengan [`allowed-tools`](#pre-approve-tools-for-a-skill), dengan batasan berikut:

791 

792* **Aturan deny dan ask**: perintah yang cocok dengan salah satunya tetap membatalkan invokasi. Untuk menemukan aturannya, lihat [Kelola izin](https://code.claude.com/docs/id/permissions.md#manage-permissions).

793* **Aturan khusus terkelola**: jika `/status` dalam sesi mencantumkan skill di bawah `allowed-tools ignored this session`, lihat [Ketika hanya aturan izin terkelola yang berlaku](#when-only-managed-permission-rules-apply).

794* **Folder Git yang belum diverifikasi**: di tempat file `HEAD` atau `.git` mungkin bukan milik Anda, Claude Code mengabaikan `allowed-tools` untuk perintah Bash yang berisi `git` atau yang tidak dapat di-parse oleh Claude Code. Jika Anda memercayai folder tersebut, misalnya worktree dari repositori bare milik Anda sendiri, izinkan perintah tersebut dengan [`/permissions`](https://code.claude.com/docs/id/permissions#manage-permissions) dalam sesi.

791 795 

792Dalam mode auto, perintah yang sebaliknya memerlukan persetujuan Anda tidak membatalkan invokasi. Skill dimuat dengan instruksi yang memberi tahu Claude untuk menjalankan perintah terlebih dahulu, dan panggilan Claude sendiri kemudian melalui [pemeriksaan biasa mode auto](https://code.claude.com/docs/id/permission-modes.md#how-the-classifier-evaluates-actions). Invokasi masih membatalkan dalam [skill yang di-fork](#run-skills-in-a-subagent) yang menetapkan `agent`, dan dalam sesi di mana Claude tidak memiliki [alat shell yang menjalankan perintah yang diinjeksi](#how-injected-commands-run).796Dalam mode auto, perintah yang sebaliknya memerlukan persetujuan Anda tidak membatalkan invokasi. Skill dimuat dengan instruksi yang memberi tahu Claude untuk menjalankan perintah terlebih dahulu, dan panggilan Claude sendiri kemudian melalui [pemeriksaan biasa mode auto](https://code.claude.com/docs/id/permission-modes.md#how-the-classifier-evaluates-actions). Invokasi masih membatalkan dalam [skill yang di-fork](#run-skills-in-a-subagent) yang menetapkan `agent`, dan dalam sesi di mana Claude tidak memiliki [alat shell yang menjalankan perintah yang diinjeksi](#how-injected-commands-run).

793 797 

statusline.md +0 −40

Details

1085echo "$dirname [$model]"1085echo "$dirname [$model]"

1086```1086```

1087 1087 

1088## Baris status subagen

1089 

1090Pengaturan `subagentStatusLine` merender badan baris khusus untuk setiap [subagen](https://code.claude.com/docs/id/sub-agents.md) yang ditampilkan di panel agen di bawah prompt. Gunakan untuk mengganti baris default `name · description · token count` dengan pemformatan Anda sendiri.

1091 

1092```json theme={null}

1093{

1094 "subagentStatusLine": {

1095 "type": "command",

1096 "command": "~/.claude/subagent-statusline.sh"

1097 }

1098}

1099```

1100 

1101Perintah berjalan sekali per tick refresh dan menerima semua baris subagent yang terlihat sebagai objek JSON tunggal di stdin. Input mencakup [bidang hook umum](https://code.claude.com/docs/id/hooks.md#common-input-fields), bidang `columns` dengan lebar baris yang dapat digunakan, dan array `tasks` dengan satu entri per baris, yang dijelaskan dalam [Bidang tugas](#task-fields).

1102 

1103Tulis satu baris JSON ke stdout per baris yang ingin Anda ganti, dalam bentuk `{"id": "<task id>", "content": "<row body>"}`. String `content` dirender apa adanya, termasuk warna ANSI dan hyperlink OSC 8. Hilangkan `id` tugas untuk menjaga rendering default untuk baris itu; keluarkan string `content` kosong untuk menyembunyikannya.

1104 

1105Gerbang kepercayaan, `disableAllHooks`, dan [`allowManagedHooksOnly`](https://code.claude.com/docs/id/settings-reference#allowmanagedhooksonly) yang sama yang berlaku untuk `statusLine` berlaku di sini. Plugin dapat mengirimkan `subagentStatusLine` default dalam [`settings.json`](https://code.claude.com/docs/id/plugins/manifest-reference#standard-layout) mereka, tetapi tidak seperti hooks, nilai plugin tidak berjalan di bawah `allowManagedHooksOnly` bahkan ketika plugin dipaksa diaktifkan dalam pengaturan terkelola `enabledPlugins`.

1106 

1107### Bidang tugas

1108 

1109Setiap entri dalam array `tasks` menjelaskan satu baris subagent dengan bidang-bidang di bawah ini. Bidang yang ditandai opsional dihilangkan ketika tidak memiliki nilai, jadi antisipasi ketiadaannya dalam skrip Anda.

1110 

1111| Bidang | Tipe | Deskripsi |

1112| :- | :- | :- |

1113| `id` | string | Pengidentifikasi tugas. Kembalikan sebagai `id` dalam baris yang Anda tulis kembali untuk baris ini |

1114| `name` | string, opsional | Nama yang digunakan untuk [menyapa](https://code.claude.com/docs/id/sub-agents.md#subagent-names) subagent, jika ada |

1115| `type` | string | Jenis tugas: `local_agent` |

1116| `agentType` | string | Tipe subagent yang dijalankan oleh tugas, seperti [`Explore`](https://code.claude.com/docs/id/sub-agents#built-in-subagents) bawaan atau `code-reviewer` kustom. Berisi nilai yang sama dengan yang diterima hook sebagai [`agent_type`](https://code.claude.com/docs/id/hooks#subagentstart). Memerlukan Claude Code v2.1.293 atau lebih baru |

1117| `status` | string | Status tugas, seperti `running`, `completed`, `failed`, atau `killed` |

1118| `description` | string | Deskripsi singkat tugas, seperti yang diberikan Claude saat memunculkan subagent |

1119| `label` | string | Ringkasan kemajuan singkat tugas jika Claude Code memilikinya, jika tidak teksnya sama dengan `description` |

1120| `startTime` | number | Waktu tugas dimulai, dalam milidetik sejak epoch Unix |

1121| `model` | string, opsional | ID model yang diselesaikan tempat tugas berjalan. Dihilangkan hingga model diselesaikan |

1122| `effort` | string atau number, opsional | Effort penalaran yang ditetapkan untuk subagent dalam [frontmatter definisinya](https://code.claude.com/docs/id/sub-agents.md#supported-frontmatter-fields) atau pada invokasi individual: `low`, `medium`, `high`, `xhigh`, `max`, atau anggaran token numerik. Ini adalah nilai yang dikonfigurasi, dan effort yang diterapkan Claude Code dapat berbeda jika model tidak mendukung tingkat tersebut. Dihilangkan ketika tidak ada effort yang ditetapkan |

1123| `contextWindowSize` | number, opsional | Context window dari `model` dalam token, dihitung dengan cara yang sama seperti [`context_window.context_window_size`](#context-window-fields) baris status utama, sehingga Anda dapat merender persentase per-baris dari `tokenCount`. Dihilangkan ketika `model` dihilangkan |

1124| `tokenCount` | number | Jumlah token berjalan subagent, angka yang ditampilkan oleh baris default |

1125| `tokenSamples` | array of numbers | Hingga 16 pembacaan `tokenCount` terakhir, satu per tick refresh, yang terlama terlebih dahulu dan diakhiri dengan yang saat ini |

1126| `cwd` | string | Direktori kerja subagent: direktorinya sendiri ketika berjalan di dalamnya, seperti worktree terisolasi, jika tidak direktori kerja sesi |

1127 

1128## Tips1088## Tips

1129 1089 

1130* **Uji dengan input mock**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`1090* **Uji dengan input mock**: `echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/home/user/project"},"context_window":{"used_percentage":25},"session_id":"test-session-abc"}' | ./statusline.sh`

Details

26 26 

27| Terminal | Shift+Enter untuk newline |27| Terminal | Shift+Enter untuk newline |

28| :- | :- |28| :- | :- |

29| Ghostty, Kitty, iTerm2, WezTerm, Warp, Apple Terminal, Windows Terminal | Berfungsi tanpa setup |29| Ghostty, Kitty, iTerm2, WezTerm, Warp, Windows Terminal | Berfungsi tanpa setup |

30| Terminal lain yang mendukung protokol keyboard kitty, seperti foot dan Alacritty 0.16 atau lebih baru | Berfungsi tanpa setup. Memerlukan Claude Code v2.1.269 atau lebih baru |30| Terminal lain yang mendukung protokol keyboard kitty, seperti foot dan Alacritty 0.16 atau lebih baru | Berfungsi tanpa setup. Memerlukan Claude Code v2.1.269 atau lebih baru |

31| VS Code, Cursor, Devin Desktop, Alacritty sebelum 0.16, Zed | Jalankan `/terminal-setup` sekali |31| VS Code, Cursor, Devin Desktop, Alacritty sebelum 0.16, Zed | Jalankan `/terminal-setup` sekali |

32| gnome-terminal, JetBrains IDEs seperti PyCharm dan Android Studio | Tidak tersedia; gunakan Ctrl+J atau `\` lalu Enter |32| gnome-terminal, JetBrains IDEs seperti PyCharm dan Android Studio | Tidak tersedia; gunakan Ctrl+J atau `\` lalu Enter |

Details

173 173 

174Untuk membatasi opsi deployment mana yang boleh digunakan oleh mesin terkelola, atur [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders) di pengaturan terkelola. Misalnya, `["bedrock"]` mengizinkan Amazon Bedrock dan tidak ada yang lain; armada Bedrock yang juga mengaktifkan endpoint Mantle juga mencantumkan `"mantle"`. Entri tersebut menyebutkan variabel endpoint mana yang juga memerlukan penyematan `env` terkelola. Memerlukan Claude Code v2.1.285 atau yang lebih baru.174Untuk membatasi opsi deployment mana yang boleh digunakan oleh mesin terkelola, atur [`allowedProviders`](https://code.claude.com/docs/id/settings-reference#allowedproviders) di pengaturan terkelola. Misalnya, `["bedrock"]` mengizinkan Amazon Bedrock dan tidak ada yang lain; armada Bedrock yang juga mengaktifkan endpoint Mantle juga mencantumkan `"mantle"`. Entri tersebut menyebutkan variabel endpoint mana yang juga memerlukan penyematan `env` terkelola. Memerlukan Claude Code v2.1.285 atau yang lebih baru.

175 175 

176> [!NOTE]

177>

178> Dengan Desktop yang masuk ke claude.ai, sesi Cowork di mesin pengguna dihitung sebagai [`"anthropic"`](https://code.claude.com/docs/id/settings-reference#allowedproviders). Jika Anda tidak mencantumkannya dalam daftar ini di kebijakan MDM atau file pengaturan terkelola, sesi tersebut akan ditolak. Jika dicantumkan, sesi yang dikirim langsung ke Anthropic juga lolos dari daftar ini.

179 

176### Gunakan MCP untuk integrasi180### Gunakan MCP untuk integrasi

177 181 

178MCP adalah cara yang bagus untuk memberikan lebih banyak informasi kepada Claude Code, seperti menghubungkan ke sistem manajemen tiket atau log error. Minta satu tim pusat untuk mengonfigurasi server MCP dan melakukan check-in konfigurasi `.mcp.json` ke dalam codebase sehingga semua pengguna mendapat manfaat. [Pelajari lebih lanjut](https://code.claude.com/docs/id/mcp.md).182MCP adalah cara yang bagus untuk memberikan lebih banyak informasi kepada Claude Code, seperti menghubungkan ke sistem manajemen tiket atau log error. Minta satu tim pusat untuk mengonfigurasi server MCP dan melakukan check-in konfigurasi `.mcp.json` ke dalam codebase sehingga semua pengguna mendapat manfaat. [Pelajari lebih lanjut](https://code.claude.com/docs/id/mcp.md).

Details

127 127 

128Claude menggunakan `AskUserQuestion` untuk mengajukan pertanyaan pilihan ganda kepada Anda ketika memerlukan keputusan atau klarifikasi. Jawab dengan memilih opsi, atau ketik teks Anda sendiri melalui baris `Other` atau kolom catatan.128Claude menggunakan `AskUserQuestion` untuk mengajukan pertanyaan pilihan ganda kepada Anda ketika memerlukan keputusan atau klarifikasi. Jawab dengan memilih opsi, atau ketik teks Anda sendiri melalui baris `Other` atau kolom catatan.

129 129 

130Ketika Anda menjawab dengan mengetik teks Anda sendiri, Claude Code menyampaikan jawaban dengan redaksi netral sehingga Claude mengikuti apa yang Anda tulis, termasuk permintaan untuk menunggu atau menjelaskan terlebih dahulu.

131 

132### Timeout auto-continue pertanyaan130### Timeout auto-continue pertanyaan

133 131 

134Pertanyaan tetap terbuka sampai Anda menjawabnya. Jika Anda ingin pertanyaan yang Anda biarkan tanpa jawaban akhirnya ditutup dan membiarkan Claude melanjutkan tanpa Anda, atur pengaturan [`askUserQuestionTimeout`](https://code.claude.com/docs/id/settings-reference#askuserquestiontimeout) ke `60s`, `5m`, atau `10m`, baik di `settings.json` pengguna Anda atau dari baris **Question auto-continue timeout** di `/config`.132Pertanyaan tetap terbuka sampai Anda menjawabnya. Jika Anda ingin pertanyaan yang Anda biarkan tanpa jawaban akhirnya ditutup dan membiarkan Claude melanjutkan tanpa Anda, atur pengaturan [`askUserQuestionTimeout`](https://code.claude.com/docs/id/settings-reference#askuserquestiontimeout) ke `60s`, `5m`, atau `10m`, baik di `settings.json` pengguna Anda atau dari baris **Question auto-continue timeout** di `/config`.


525 523 

526## Perilaku alat Read524## Perilaku alat Read

527 525 

528Alat Read mengambil jalur file dan mengembalikan isinya dengan nomor baris. Claude diinstruksikan untuk selalu melewatkan jalur absolut.526Tool Read mengambil jalur file dan mengembalikan isinya dengan nomor baris.

529 527 

530Membaca file kosong mengembalikan pemberitahuan bahwa file ada tetapi isinya kosong, dan `offset` melampaui baris terakhir mengembalikan pemberitahuan yang memberikan jumlah baris file.528Membaca file kosong mengembalikan pemberitahuan bahwa file ada tetapi isinya kosong, dan `offset` melampaui baris terakhir mengembalikan pemberitahuan yang memberikan jumlah baris file.

531 529 

Details

388> Get-Command claude | Select-Object Source388> Get-Command claude | Select-Object Source

389> ```389> ```

390 390 

391Di Linux, periksa shared libraries yang hilang. Jika `ldd` menunjukkan library yang hilang, Anda mungkin perlu menginstal paket sistem. Di Alpine Linux dan distribusi berbasis musl lainnya, lihat [Alpine Linux setup](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions).391Di Linux, periksa shared libraries yang hilang. Jika `ldd` menunjukkan library yang hilang, Anda mungkin perlu menginstal paket sistem. Di Alpine Linux dan distribusi berbasis musl lainnya, lihat [Ketidakcocokan binary musl atau glibc di Linux](#linux-musl-or-glibc-binary-mismatch).

392 392 

393```bash theme={null}393```bash theme={null}

394ldd "$(command -v claude)" | grep "not found"394ldd "$(command -v claude)" | grep "not found"


402 402 

403## Masalah instalasi umum403## Masalah instalasi umum

404 404 

405Ini adalah masalah instalasi yang paling sering dihadapi dan solusinya.405Berikut adalah masalah instalasi yang paling sering ditemui beserta solusinya.

406 406 

407### Install script returns HTML instead of a shell script407### Skrip instalasi mengembalikan HTML, bukan skrip shell

408 408 

409Perintah install gagal dengan salah satu error berikut ketika yang diunduhnya bukan script instalasi.409Perintah instalasi gagal dengan salah satu error berikut ketika yang diunduhnya bukan skrip instalasi.

410 410 

411**Bash atau Zsh**: error mengutip baris pertama dari halaman yang dikembalikan.411**Bash atau Zsh**: error tersebut mengutip baris pertama dari halaman yang dikembalikan.

412 412 

413```text theme={null}413```text theme={null}

414bash: line 1: syntax error near unexpected token `<'414bash: line 1: syntax error near unexpected token `<'

415bash: line 1: `<!DOCTYPE html>'415bash: line 1: `<!DOCTYPE html>'

416```416```

417 417 

418**PowerShell, parse errors**: error menunjuk ke halaman yang dikembalikan, dengan `iex` mencoba menjalankan HTML dan CSS sebagai PowerShell.418**PowerShell, error parse**: error tersebut menunjuk ke dalam halaman yang dikembalikan, dengan `iex` mencoba menjalankan HTML dan CSS sebagai PowerShell.

419 419 

420```text theme={null}420```text theme={null}

421iex : At line:1 char:2310421iex : At line:1 char:2310


424...424...

425```425```

426 426 

427Kata-katanya bervariasi dengan versi PowerShell dan bahasa sistem: Anda mungkin melihat `Missing expression after unary operator '--'` atau `ParserError` dengan `ParseException` sebagai gantinya. Tag HTML atau CSS dalam teks yang dikutip mengidentifikasi kegagalan ini. Jika Anda mengunduh dengan `-OutFile install.ps1` sebagai gantinya, file yang disimpan adalah halaman web yang sama, jadi itu tidak membantu juga.427Kata-katanya bervariasi tergantung versi PowerShell dan bahasa sistem: Anda mungkin melihat `Missing expression after unary operator '--'` atau `ParserError` dengan `ParseException` sebagai gantinya. Tag HTML atau CSS dalam teks yang dikutip menandakan kegagalan ini. Jika Anda mengunduh dengan `-OutFile install.ps1` sebagai gantinya, file yang disimpan adalah halaman web yang sama, sehingga cara itu juga tidak membantu.

428 428 

429**PowerShell, `System.Xml.XmlDocument`**: error menyebutkan tipe ini alih-alih mengutip halaman.429**PowerShell, `System.Xml.XmlDocument`**: error tersebut menyebutkan tipe ini alih-alih mengutip halaman.

430 430 

431```text theme={null}431```text theme={null}

432System.Xml.XmlDocument : The term 'System.Xml.XmlDocument' is not recognized as the name of a cmdlet, function, script432System.Xml.XmlDocument : The term 'System.Xml.XmlDocument' is not recognized as the name of a cmdlet, function, script

433file, or operable program.433file, or operable program.

434```434```

435 435 

436Ketika `irm` dapat mem-parse respons sebagai XML, ia mengembalikan objek XML alih-alih teks, lalu `iex` mencoba menjalankan nama tipe objek tersebut sebagai perintah. Script instalasi adalah kode PowerShell dan tidak dapat di-parse sebagai XML, jadi error ini juga berarti respons tersebut adalah sesuatu selain script. Kata-kata di sekitar nama tipe bervariasi dengan versi PowerShell dan bahasa sistem, tetapi `System.Xml.XmlDocument` itu sendiri tetap sama, jadi cocokkan berdasarkan nama tipe.436Ketika `irm` dapat mem-parse respons sebagai XML, ia mengembalikan objek XML alih-alih teks, lalu `iex` mencoba menjalankan nama tipe objek tersebut sebagai perintah. Skrip instalasi adalah kode PowerShell dan tidak dapat di-parse sebagai XML, sehingga error ini juga berarti respons tersebut adalah sesuatu selain skrip. Kata-kata di sekitar nama tipe bervariasi tergantung versi PowerShell dan bahasa sistem, tetapi `System.Xml.XmlDocument` itu sendiri tetap sama, jadi cocokkan berdasarkan nama tipe tersebut.

437 437 

438**CMD**: Anda melihat error ini, diikuti oleh HTML dari halaman yang dikembalikan.438**CMD**: Anda melihat error ini, diikuti oleh HTML dari halaman yang dikembalikan.

439 439 


443C:\Users\you><!DOCTYPE html>...443C:\Users\you><!DOCTYPE html>...

444```444```

445 445 

446Baris pertama muncul dalam bahasa sistem Anda, jadi cari HTML yang mengikutinya.446Baris pertama muncul dalam bahasa sistem Anda, jadi carilah HTML yang mengikutinya.

447 447 

448**403 tanpa halaman**: tergantung pada bagaimana permintaan dirutekan, curl melaporkan status 403 tanpa body HTML.448**403 tanpa halaman**: tergantung bagaimana permintaan dirutekan, curl melaporkan status 403 tanpa body HTML.

449 449 

450```text theme={null}450```text theme={null}

451curl: (22) The requested URL returned error: 403451curl: (22) The requested URL returned error: 403

452```452```

453 453 

454Semuanya berarti URL instalasi mengembalikan halaman web, dokumen XML, atau status error alih-alih script instalasi. Jika output error mengutip "App unavailable in region," Claude Code tidak tersedia di negara Anda. Lihat [supported countries](https://www.anthropic.com/supported-countries).454Semua ini berarti URL instalasi mengembalikan halaman web, dokumen XML, atau status error alih-alih skrip instalasi. Jika output error mengutip "App unavailable in region," Claude Code tidak tersedia di negara Anda. Lihat [negara yang didukung](https://www.anthropic.com/supported-countries).

455 455 

456403 tanpa body sering memiliki penyebab yang sama, tetapi juga dapat berasal dari proxy perusahaan atau firewall yang memblokir download. Jika Anda berada di negara yang didukung dan masih melihat 403, kerjakan [Check network connectivity](#check-network-connectivity) sebelum mencoba installer alternatif di bawah, karena installer tersebut menjangkau host yang sama.456403 polos tanpa body sering kali memiliki penyebab yang sama, tetapi juga dapat berasal dari proxy atau firewall perusahaan yang memblokir unduhan. Jika Anda berada di negara yang didukung dan masih melihat 403, ikuti langkah-langkah di [Periksa konektivitas jaringan](#check-network-connectivity) sebelum mencoba penginstal alternatif di bawah, karena penginstal tersebut menjangkau host yang sama.

457 457 

458Sebaliknya, ini dapat terjadi karena masalah jaringan, routing regional, atau gangguan layanan sementara.458Selain itu, hal ini dapat terjadi karena masalah jaringan, perutean regional, atau gangguan layanan sementara.

459 459 

460**Solusi:**460**Solusi:**

461 461 

4621. **Coba lagi setelah beberapa menit**: masalahnya sering bersifat sementara. Tunggu dan coba perintah asli lagi.4621. **Coba lagi setelah beberapa menit**: masalah ini sering kali bersifat sementara. Tunggu dan coba lagi perintah aslinya.

463 463 

4642. **Gunakan metode instalasi alternatif**: tidak seperti instalasi native, instalasi Homebrew atau WinGet [tidak memperbarui dirinya sendiri secara default](https://code.claude.com/docs/id/setup.md#auto-updates).4642. **Gunakan metode instalasi alternatif**: tidak seperti instalasi native, instalasi Homebrew atau WinGet [tidak memperbarui dirinya sendiri secara default](https://code.claude.com/docs/id/setup.md#auto-updates).

465 465 


475 winget install Anthropic.ClaudeCode475 winget install Anthropic.ClaudeCode

476 ```476 ```

477 477 

478 Kemudian jalankan `claude --version` untuk mengonfirmasi: perintah mencetak nomor versi seperti `2.1.211 (Claude Code)`. Jika shell melaporkan `claude` tidak ditemukan, buka jendela terminal baru dan coba ulang: sesi tempat Anda menginstal menyimpan `PATH` lamanya.478 Kemudian jalankan `claude --version` untuk memastikan: perintah tersebut mencetak nomor versi seperti `2.1.211 (Claude Code)`. Jika shell melaporkan bahwa `claude` tidak ditemukan, buka jendela terminal baru dan coba lagi: sesi tempat Anda menginstal tetap menggunakan `PATH` lamanya.

479 479 

480### `command not found: claude` after installation480### `command not found: claude` setelah instalasi

481 481 

482Instalasi selesai tetapi `claude` tidak berfungsi. Error yang tepat bervariasi menurut platform:482Instalasi selesai tetapi `claude` tidak berfungsi. Error persisnya bervariasi menurut platform:

483 483 

484| Platform | Pesan error |484| Platform | Pesan error |

485| :- | :- |485| :- | :- |


488| Windows CMD | `'claude' is not recognized as an internal or external command` |488| Windows CMD | `'claude' is not recognized as an internal or external command` |

489| PowerShell | `claude : The term 'claude' is not recognized as the name of a cmdlet` |489| PowerShell | `claude : The term 'claude' is not recognized as the name of a cmdlet` |

490 490 

491Di Windows, jika error mulai muncul tepat setelah Claude Code diperbarui, lihat [pulihkan `claude.exe` dari backup-nya](#claude-exe-missing-after-an-update-on-windows).491Di Windows, jika error mulai muncul tepat setelah Claude Code diperbarui, lihat [pulihkan `claude.exe` dari cadangannya](#claude-exe-missing-after-an-update-on-windows).

492 492 

493Jika tidak, lihat [Verifikasi PATH Anda](#verify-your-path) untuk perbaikan di setiap platform.493Jika tidak, lihat [Verifikasi PATH Anda](#verify-your-path) untuk perbaikan di setiap platform.

494 494 

495### `permission denied` when adding to your PATH495### `permission denied` saat menambahkan ke PATH Anda

496 496 

497Jika perintah `echo` yang menambahkan `~/.local/bin` ke PATH Anda mencetak `zsh: permission denied: /Users/you/.zshrc` atau `bash: /home/you/.bashrc: Permission denied`, pengguna Anda tidak dapat menulis ke file tersebut dan tidak ada yang disimpan. Di terminal Anda, periksa siapa pemilik file tersebut, menggunakan nama file shell Anda sebagai pengganti `~/.zshrc`:497Jika perintah `echo` yang menambahkan `~/.local/bin` ke PATH Anda mencetak `zsh: permission denied: /Users/you/.zshrc` atau `bash: /home/you/.bashrc: Permission denied`, pengguna Anda tidak dapat menulis ke file tersebut dan tidak ada yang tersimpan. Di terminal Anda, periksa siapa pemilik file tersebut, dengan menggunakan nama file shell Anda sebagai pengganti `~/.zshrc`:

498 498 

499```bash theme={null}499```bash theme={null}

500ls -l ~/.zshrc500ls -l ~/.zshrc


503Kolom ketiga dari output adalah pemiliknya.503Kolom ketiga dari output adalah pemiliknya.

504 504 

505* **Pemiliknya adalah pengguna lain, seperti `root`**: ambil alih kepemilikan dengan `sudo chown $(whoami) ~/.zshrc`, yang memerlukan hak administrator.505* **Pemiliknya adalah pengguna lain, seperti `root`**: ambil alih kepemilikan dengan `sudo chown $(whoami) ~/.zshrc`, yang memerlukan hak administrator.

506* **Pemiliknya adalah Anda**: file tersebut read-only. Jadikan dapat ditulis dengan `chmod u+w ~/.zshrc`.506* **Pemiliknya adalah Anda**: file tersebut bersifat read-only. Jadikan dapat ditulis dengan `chmod u+w ~/.zshrc`.

507 507 

508Kemudian jalankan lagi dua perintah PATH untuk shell Anda di [Verifikasi PATH Anda](#verify-your-path).508Kemudian jalankan lagi dua perintah PATH untuk shell Anda di [Verifikasi PATH Anda](#verify-your-path).

509 509 

510### `curl: (56) Failure writing output to destination`510### `curl: (56) Failure writing output to destination`

511 511 

512Perintah `curl ... | bash` mengunduh script dan menyalurkannya ke Bash untuk dieksekusi. Error ini, dan error terkait `curl: (23) Failure writing output to destination`, berarti Bash tidak menerima script lengkap. Exit code 56 menunjukkan download itu sendiri terputus, dan exit code 23 menunjukkan curl tidak dapat menulis apa yang diterima ke pipe, biasanya karena Bash keluar lebih awal.512Perintah `curl ... | bash` mengunduh skrip dan menyalurkannya (pipe) ke Bash untuk dieksekusi. Error ini, dan error terkait `curl: (23) Failure writing output to destination`, berarti Bash tidak menerima skrip secara lengkap. Exit code 56 menunjukkan bahwa unduhan itu sendiri terputus, dan exit code 23 menunjukkan bahwa curl tidak dapat menulis apa yang diterimanya ke pipe, biasanya karena Bash keluar lebih awal.

513 513 

514Uji bahwa Anda dapat menjangkau `downloads.claude.ai` dengan pemeriksaan di [Check network connectivity](#check-network-connectivity). Jika Anda menjangkau server, kegagalan asli mungkin bersifat intermiten; coba ulang perintah install. Anda juga dapat [mencoba metode instalasi alternatif](https://code.claude.com/docs/id/setup.md#install-claude-code).514Uji apakah Anda dapat menjangkau `downloads.claude.ai` dengan pemeriksaan di [Periksa konektivitas jaringan](#check-network-connectivity). Jika Anda berhasil menjangkau server, kegagalan awal kemungkinan bersifat intermiten; coba lagi perintah instalasi. Anda juga dapat [mencoba metode instalasi alternatif](https://code.claude.com/docs/id/setup.md#install-claude-code).

515 515 

516### Homebrew cask unavailable or outdated516### Cask Homebrew tidak tersedia atau usang

517 517 

518Homebrew melaporkan `Error: Cask 'claude-code' is unavailable: No Cask with this name exists` ketika salinan lokal indeks cask Homebrew Anda mendahului publikasi cask. Segarkan indeks dan coba ulang:518Homebrew melaporkan `Error: Cask 'claude-code' is unavailable: No Cask with this name exists` ketika salinan lokal indeks cask Homebrew Anda lebih lama daripada publikasi cask tersebut. Perbarui indeks dan coba lagi:

519 519 

520```bash theme={null}520```bash theme={null}

521brew update521brew update

522brew install --cask claude-code522brew install --cask claude-code

523```523```

524 524 

525Jika Homebrew menginstal versi Claude Code yang lebih lama dari yang Anda harapkan, indeks yang sudah usang biasanya menjadi penyebabnya. Cask `claude-code` melacak saluran stabil dan biasanya tertinggal sekitar satu minggu dari rilis terbaru; untuk versi terbaru jalankan `brew install --cask claude-code@latest` sebagai gantinya. Lihat [Configure release channel](https://code.claude.com/docs/id/setup.md#configure-release-channel) untuk perbedaan antara dua cask.525Jika Homebrew menginstal versi Claude Code yang lebih lama dari yang Anda harapkan, indeks usang yang sama biasanya menjadi penyebabnya. Cask `claude-code` mengikuti saluran stabil dan biasanya tertinggal sekitar satu minggu dari rilis terbaru; untuk versi terbaru, jalankan `brew install --cask claude-code@latest` sebagai gantinya. Lihat [Konfigurasi saluran rilis](https://code.claude.com/docs/id/setup.md#configure-release-channel) untuk perbedaan antara kedua cask tersebut.

526 526 

527### `Cask 'claude-code@latest' is not installed`527### `Cask 'claude-code@latest' is not installed`

528 528 


532brew list --cask | grep claude-code532brew list --cask | grep claude-code

533```533```

534 534 

535Upgrade cask yang dicetaknya. Jika tidak mencetak apa pun, tidak ada cask yang terinstal.535Tingkatkan cask yang dicetaknya. Jika tidak mencetak apa pun, tidak ada cask yang terinstal.

536 536 

537### TLS or SSL connection errors537### Error koneksi TLS atau SSL

538 538 

539Error seperti ini berarti TLS handshake gagal:539Error seperti berikut berarti handshake TLS gagal:

540 540 

541* `curl: (35) TLS connect error`541* `curl: (35) TLS connect error`

542* `schannel: next InitializeSecurityContext failed`542* `schannel: next InitializeSecurityContext failed`

543* PowerShell's `Could not create SSL/TLS secure channel`543* `Could not create SSL/TLS secure channel` dari PowerShell

544* PowerShell's `Could not establish trust relationship for the SSL/TLS secure channel`544* `Could not establish trust relationship for the SSL/TLS secure channel` dari PowerShell

545 545 

546Untuk `CRYPT_E_NO_REVOCATION_CHECK` atau `CRYPT_E_REVOCATION_OFFLINE`, langsung ke langkah 4.546Untuk `CRYPT_E_NO_REVOCATION_CHECK` atau `CRYPT_E_REVOCATION_OFFLINE`, lanjutkan ke langkah 4.

547 547 

548**Solusi:**548**Solusi:**

549 549 


555 sudo apt-get update && sudo apt-get install ca-certificates555 sudo apt-get update && sudo apt-get install ca-certificates

556 ```556 ```

557 557 

558 Di macOS, curl sistem menggunakan Keychain trust store; memperbarui macOS itu sendiri memperbarui root certificates.558 Di macOS, curl sistem menggunakan trust store Keychain; memperbarui macOS itu sendiri akan memperbarui sertifikat root.

559 559 

5602. **Di Windows PowerShell 5.1, aktifkan TLS 1.2**:5602. **Di Windows PowerShell 5.1, aktifkan TLS 1.2**:

561 ```powershell theme={null}561 ```powershell theme={null}

562 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12562 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

563 ```563 ```

564 Kemudian jalankan installer di jendela yang sama:564 Kemudian jalankan penginstal di jendela yang sama:

565 ```powershell theme={null}565 ```powershell theme={null}

566 irm https://claude.ai/install.ps1 | iex566 irm https://claude.ai/install.ps1 | iex

567 ```567 ```

568 568 

5693. **Periksa gangguan proxy atau firewall**: proxy perusahaan yang melakukan TLS inspection dapat menyebabkan error ini, termasuk `unable to get local issuer certificate`, `unable to verify the first certificate`, dan `SELF_SIGNED_CERT_IN_CHAIN`. Buat download install mempercayai CA proxy perusahaan Anda:5693. **Periksa gangguan proxy atau firewall**: proxy perusahaan yang melakukan inspeksi TLS dapat menyebabkan error ini, termasuk `unable to get local issuer certificate`, `unable to verify the first certificate`, dan `SELF_SIGNED_CERT_IN_CHAIN`. Buat unduhan instalasi memercayai CA proxy perusahaan Anda:

570 570 

571 > [tab] macOS/Linux571 > [tab] macOS/Linux

572 >572 >

573 > Atur `CURL_CA_BUNDLE` untuk download `curl` milik script install, dan [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/id/network-config#custom-ca-certificates) untuk perintah `claude install` yang kemudian dijalankan oleh script. Minta file PEM berisi sertifikat root CA proxy Anda kepada tim IT jika Anda belum memilikinya. Contoh ini mengatur keduanya ke file CA proxy Anda dan menjalankan script di terminal yang sama:573 > Atur `CURL_CA_BUNDLE` untuk unduhan `curl` skrip instalasi, dan [`NODE_EXTRA_CA_CERTS`](https://code.claude.com/docs/id/network-config#custom-ca-certificates) untuk perintah `claude install` yang kemudian dijalankan oleh skrip. Mintalah file PEM berisi sertifikat CA root proxy Anda kepada tim IT jika Anda belum memilikinya. Contoh ini mengatur keduanya ke file CA proxy Anda dan menjalankan skrip di terminal yang sama:

574 >574 >

575 > ```bash theme={null}575 > ```bash theme={null}

576 > export CURL_CA_BUNDLE=/path/to/corporate-ca.pem576 > export CURL_CA_BUNDLE=/path/to/corporate-ca.pem


578 > curl -fsSL https://claude.ai/install.sh | bash578 > curl -fsSL https://claude.ai/install.sh | bash

579 > ```579 > ```

580 >580 >

581 > Jika instalasi masih gagal dengan salah satu error sertifikat tersebut, minta tim IT Anda untuk file yang berisi root certificate publik sekaligus rantai CA lengkap proxy Anda. Kemudian atur kedua variabel ke file tersebut.581 > Jika instalasi masih gagal dengan salah satu error sertifikat tersebut, mintalah kepada tim IT Anda file yang berisi sertifikat root publik sekaligus rantai CA lengkap proxy Anda. Kemudian atur kedua variabel ke file tersebut.

582 582 

583 > [tab] Windows PowerShell583 > [tab] Windows PowerShell

584 >584 >

585 > PowerShell installer mengunduh melalui .NET, yang memvalidasi TLS terhadap Windows certificate store. Minta tim IT Anda untuk menambahkan sertifikat CA proxy ke Windows store jika belum ada, kemudian jalankan installer:585 > Penginstal PowerShell mengunduh melalui .NET, yang memvalidasi TLS terhadap penyimpanan sertifikat Windows. Mintalah tim IT Anda untuk menambahkan sertifikat CA proxy ke penyimpanan Windows jika belum ada, lalu jalankan penginstal:

586 >586 >

587 > ```powershell theme={null}587 > ```powershell theme={null}

588 > irm https://claude.ai/install.ps1 | iex588 > irm https://claude.ai/install.ps1 | iex

589 > ```589 > ```

590 590 

591 Untuk Claude Code itu sendiri setelah diinstal, atur `NODE_EXTRA_CA_CERTS` sehingga permintaan API mempercayai bundle yang sama:591 Untuk Claude Code itu sendiri setelah terinstal, atur `NODE_EXTRA_CA_CERTS` agar permintaan API memercayai bundle yang sama:

592 592 

593 > [tab] macOS/Linux593 > [tab] macOS/Linux

594 >594 >


602 > $env:NODE_EXTRA_CA_CERTS = 'C:\path\to\corporate-ca.pem'602 > $env:NODE_EXTRA_CA_CERTS = 'C:\path\to\corporate-ca.pem'

603 > ```603 > ```

604 604 

6054. **Di Windows, lewati pemeriksaan revokasi sertifikat yang diblokir**. Error `CRYPT_E_NO_REVOCATION_CHECK (0x80092012)` dan `CRYPT_E_REVOCATION_OFFLINE (0x80092013)` berarti curl menjangkau server tetapi jaringan Anda memblokir pencarian revokasi sertifikat, yang umum di belakang firewall perusahaan. Jika perintah yang gagal adalah `curl` yang mengunduh `install.cmd`, jalankan ulang dari Command Prompt dengan `--ssl-revoke-best-effort` ditambahkan:6054. **Di Windows, gunakan solusi alternatif untuk mengatasi pemeriksaan revokasi yang diblokir**. Error `CRYPT_E_NO_REVOCATION_CHECK (0x80092012)` dan `CRYPT_E_REVOCATION_OFFLINE (0x80092013)` berarti curl berhasil menjangkau server tetapi jaringan Anda memblokir pencarian revokasi sertifikat, yang umum terjadi di balik firewall perusahaan. Jika perintah yang gagal adalah `curl` yang mengunduh `install.cmd`, jalankan ulang dari Command Prompt dengan menambahkan `--ssl-revoke-best-effort`:

606 ```batch theme={null}606 ```batch theme={null}

607 curl --ssl-revoke-best-effort -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd607 curl --ssl-revoke-best-effort -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

608 ```608 ```

609 Ketika download script itu sendiri mengalami error yang sama, script mencoba ulang dengan pemeriksaan revokasi best-effort secara otomatis, jadi flag hanya diperlukan pada perintah yang Anda jalankan sendiri. Pemeriksaan best-effort mentoleransi server revokasi yang tidak dapat dijangkau tetapi masih menolak sertifikat yang diketahui telah dicabut, sesuai dengan cara browser menangani revokasi. Anda juga dapat menghindari pemeriksaan revokasi curl sepenuhnya dengan menjalankan PowerShell installer dari PowerShell, yang mengunduh melalui .NET dan tidak gagal ketika server revokasi tidak dapat dijangkau:609 Ketika unduhan milik skrip itu sendiri mengalami error yang sama, skrip secara otomatis mencobanya ulang dengan pemeriksaan revokasi best-effort, sehingga flag tersebut hanya diperlukan pada perintah yang Anda jalankan sendiri. Pemeriksaan best-effort menoleransi server revokasi yang tidak dapat dijangkau tetapi tetap menolak sertifikat yang diketahui telah dicabut, sesuai dengan cara browser menangani revokasi. Anda juga dapat sepenuhnya menghindari pemeriksaan revokasi curl dengan menjalankan penginstal PowerShell dari PowerShell, yang mengunduh melalui .NET dan tidak gagal ketika server revokasi tidak dapat dijangkau:

610 ```powershell theme={null}610 ```powershell theme={null}

611 irm https://claude.ai/install.ps1 | iex611 irm https://claude.ai/install.ps1 | iex

612 ```612 ```

613 Anda juga dapat menginstal dengan `winget install Anthropic.ClaudeCode`, yang menghindari curl sepenuhnya.613 Anda juga dapat menginstal dengan `winget install Anthropic.ClaudeCode`, yang sepenuhnya menghindari curl.

614 614 

615### `Failed to fetch version from downloads.claude.ai`615### `Failed to fetch version from downloads.claude.ai`

616 616 

617Bagian akhir pesan menyebutkan alasannya. Jika alasannya adalah error sertifikat seperti `unable to verify the first certificate`, lihat [TLS or SSL connection errors](#tls-or-ssl-connection-errors). Untuk alasan lainnya, lihat [Check network connectivity](#check-network-connectivity).617Bagian akhir pesan memberikan alasannya. Jika berupa error sertifikat seperti `unable to verify the first certificate`, lihat [Error koneksi TLS atau SSL](#tls-or-ssl-connection-errors). Untuk alasan lainnya, lihat [Periksa konektivitas jaringan](#check-network-connectivity).

618 618 

619### The connection dropped while downloading the update619### The connection dropped while downloading the update

620 620 

621Koneksi ke server download tertutup saat `claude install` atau `claude update` sedang mengambil binary Claude Code, dan retry tidak berhasil memulihkannya. Claude Code mencoba ulang download ketika koneksi terputus, transfer macet, atau file yang diunduh gagal dalam pemeriksaan checksum, hingga total tiga kali percobaan. Error HTTP yang sudah selesai, seperti 404, tidak dicoba ulang karena server sudah menjawab. Sebelum v2.1.202, satu koneksi yang terputus langsung menggagalkan download dengan error polos `aborted` alih-alih mencoba ulang.621Koneksi ke server unduhan tertutup saat `claude install` atau `claude update` sedang mengambil binary Claude Code, dan retry tidak berhasil memulihkannya. Claude Code mencoba ulang unduhan ketika koneksi terputus, transfer macet, atau file yang diunduh gagal dalam pemeriksaan checksum, hingga total tiga kali percobaan. Error HTTP yang sudah selesai, seperti 404, tidak dicoba ulang karena server sudah menjawab. Sebelum v2.1.202, satu koneksi yang terputus langsung menggagalkan unduhan dengan error polos `aborted` alih-alih mencoba ulang.

622 622 

623```text theme={null}623```text theme={null}

624The connection dropped while downloading the update (attempt 3/3: aborted). Check your network — proxies sometimes cut off large downloads.624The connection dropped while downloading the update (attempt 3/3: aborted). Check your network — proxies sometimes cut off large downloads.


626 626 

627Teks dalam tanda kurung menyebutkan percobaan mana yang gagal dan error jaringan yang mendasarinya. `claude update` mendahului pesan tersebut dengan `Error: Failed to install native update` di stderr.627Teks dalam tanda kurung menyebutkan percobaan mana yang gagal dan error jaringan yang mendasarinya. `claude update` mendahului pesan tersebut dengan `Error: Failed to install native update` di stderr.

628 628 

629Download yang tetap terhubung tetapi tidak selesai dalam 10 menit gagal dengan `Download timed out: exceeded the total deadline` sebagai gantinya. Claude Code tidak mencoba ulang download yang timeout, karena koneksi yang terlalu lambat untuk selesai dalam batas waktu juga tidak akan selesai pada retry langsung. Langkah-langkah di bawah berlaku untuk kedua pesan.629Unduhan yang tetap terhubung tetapi tidak selesai dalam 10 menit akan gagal dengan `Download timed out: exceeded the total deadline` sebagai gantinya. Claude Code tidak mencoba ulang unduhan yang kehabisan waktu, karena koneksi yang terlalu lambat untuk selesai dalam batas waktu juga tidak akan selesai pada retry langsung. Langkah-langkah di bawah berlaku untuk kedua pesan tersebut.

630 630 

631Proxy atau gateway dapat menutup transfer yang panjang sebelum selesai, dan binary Claude Code adalah download yang besar.631Proxy atau gateway dapat menutup transfer yang panjang sebelum selesai, dan binary Claude Code merupakan unduhan yang besar.

632 632 

633**Yang harus dilakukan:**633**Yang harus dilakukan:**

634 634 

635* Jalankan `claude update` lagi. Pada jaringan yang selain itu sehat, download biasanya berhasil pada percobaan berikutnya. Untuk pesan timeout, jalankan lagi dari jaringan yang lebih cepat atau kurang dibatasi.635* Jalankan `claude update` lagi. Pada jaringan yang selain itu sehat, unduhan biasanya berhasil pada percobaan berikutnya. Untuk pesan kehabisan waktu, jalankan lagi dari jaringan yang lebih cepat atau yang tidak terlalu dibatasi.

636* Jika jaringan Anda memerlukan proxy, atur `HTTPS_PROXY` sebelum menjalankan installer atau `claude update`. Lihat [Check network connectivity](#check-network-connectivity).636* Jika jaringan Anda memerlukan proxy, atur `HTTPS_PROXY` sebelum menjalankan penginstal atau `claude update`. Lihat [Periksa konektivitas jaringan](#check-network-connectivity).

637* Jika proxy perusahaan terus menutup transfer, minta tim jaringan Anda untuk mengizinkan download penuh dari `downloads.claude.ai`. Lihat [Network access requirements](https://code.claude.com/docs/id/network-config.md#network-access-requirements).637* Jika proxy perusahaan terus menutup transfer, mintalah tim jaringan Anda untuk mengizinkan unduhan penuh dari `downloads.claude.ai`. Lihat [Persyaratan akses jaringan](https://code.claude.com/docs/id/network-config.md#network-access-requirements).

638* Jalankan `claude doctor` dari shell Anda untuk diagnostik instalasi638* Jalankan `claude doctor` dari shell Anda untuk diagnostik instalasi

639 639 

640### Release verification failed for Claude Code640### Release verification failed for Claude Code

641 641 

642Pesan dari `claude update` atau `claude install` ini berarti Claude Code tidak dapat mengonfirmasi bahwa rilis yang akan diinstalnya asli, sehingga tidak ada yang diinstal. Versi apa pun yang sudah Anda miliki tetap berfungsi.642Pesan dari `claude update` atau `claude install` ini berarti Claude Code tidak dapat memastikan bahwa rilis yang akan diinstalnya asli, sehingga tidak menginstal apa pun. Versi apa pun yang sudah Anda miliki tetap berfungsi.

643 643 

644```text theme={null}644```text theme={null}

645Release verification failed for Claude Code <version> (<reason>). The update was not installed.645Release verification failed for Claude Code <version> (<reason>). The update was not installed.

646```646```

647 647 

648Ambil langkah yang sesuai dengan nilai dalam tanda kurung di pesan Anda:648Lakukan langkah yang sesuai dengan nilai dalam tanda kurung pada pesan Anda:

649 649 

650* **Nilai yang dimulai dengan `sidecar_fetch_`**: jalankan perintah yang sama lagi dari shell Anda. `claude update` berhasil jika mencetak baris yang dimulai dengan `Successfully updated from`, dan `claude install` berhasil jika mencetak `Claude Code successfully installed!`.650* **Nilai yang diawali dengan `sidecar_fetch_`**: jalankan lagi perintah yang sama dari shell Anda. `claude update` berhasil jika mencetak baris yang diawali dengan `Successfully updated from`, dan `claude install` berhasil jika mencetak `Claude Code successfully installed!`.

651* **Nilai lainnya**: coba perintah yang sama lagi nanti651* **Nilai lainnya**: coba lagi perintah yang sama nanti

652 652 

653Untuk nilai apa pun, jika pesan tersebut muncul lagi, [laporkan masalahnya](#still-stuck) dan sertakan pesan lengkapnya.653Dengan nilai apa pun, jika pesan tersebut terus muncul, [laporkan masalahnya](#still-stuck) dan sertakan pesan lengkapnya.

654 654 

655### `Auto-update failed · Run claude doctor` in the session footer655### `Auto-update failed · Run claude doctor` di footer sesi

656 656 

657Baris merah ini berarti Claude Code mencoba memperbarui dirinya sendiri di latar belakang dan pembaruan tersebut tidak terinstal. Anda dapat terus bekerja tanpa melakukan apa pun.657Baris merah ini berarti Claude Code mencoba memperbarui dirinya sendiri di latar belakang dan pembaruan tersebut tidak terinstal. Anda dapat terus bekerja tanpa melakukan apa pun.

658 658 

659Baris tersebut mengarahkan Anda ke `claude doctor`, yang baris `Last update attempt: failed (install_failed)`-nya memberikan tanggal tetapi tidak menyebutkan penyebab. Untuk menyelesaikan pembaruan atau melihat mengapa gagal, jalankan `claude update` di shell Anda sebagai gantinya. Jika instalasi itu juga gagal, cari error yang dicetak `claude update` di bawah [Find your error](#find-your-error).659Baris tersebut mengarahkan Anda ke `claude doctor`, yang baris `Last update attempt: failed (install_failed)`-nya memberikan tanggal tetapi tidak menyebutkan penyebabnya. Untuk menyelesaikan pembaruan atau melihat mengapa pembaruan gagal, jalankan `claude update` di shell Anda sebagai gantinya. Jika instalasi tersebut juga gagal, cari error yang dicetak oleh `claude update` di bawah [Temukan error Anda](#find-your-error).

660 660 

661### Wrong install command on Windows661### Perintah instalasi yang salah di Windows

662 662 

663Jika Anda melihat `'irm' is not recognized`, `The token '&&' is not a valid statement separator`, `A parameter cannot be found that matches parameter name 'fsSL'`, atau `'bash' is not recognized as the name of a cmdlet`, Anda menyalin perintah install untuk shell atau sistem operasi yang berbeda. Jika perintah mencetak teks script alih-alih menginstal apa pun, Anda menjalankan hanya sebagian darinya.663Jika Anda melihat `'irm' is not recognized`, `The token '&&' is not a valid statement separator`, `A parameter cannot be found that matches parameter name 'fsSL'`, atau `'bash' is not recognized as the name of a cmdlet`, Anda menyalin perintah instalasi untuk shell atau sistem operasi yang berbeda. Jika perintah mencetak teks skrip alih-alih menginstal apa pun, Anda hanya menjalankan sebagian darinya.

664 664 

665* **`irm` not recognized**: Anda berada di CMD, bukan PowerShell. Anda memiliki dua opsi:665* **`irm` tidak dikenali**: Anda berada di CMD, bukan PowerShell. Anda memiliki dua opsi:

666 666 

667 Buka PowerShell dengan mencari "PowerShell" di Start menu, kemudian jalankan perintah install asli:667 Buka PowerShell dengan mencari "PowerShell" di menu Start, lalu jalankan perintah instalasi aslinya:

668 668 

669 ```powershell theme={null}669 ```powershell theme={null}

670 irm https://claude.ai/install.ps1 | iex670 irm https://claude.ai/install.ps1 | iex

671 ```671 ```

672 672 

673 Atau tetap di CMD dan gunakan CMD installer sebagai gantinya:673 Atau tetap di CMD dan gunakan penginstal CMD sebagai gantinya:

674 674 

675 ```batch theme={null}675 ```batch theme={null}

676 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd676 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

677 ```677 ```

678 678 

679* **`&&` not a valid statement separator**: Anda berada di PowerShell tetapi menjalankan perintah CMD installer. Gunakan PowerShell installer:679* **`&&` bukan pemisah pernyataan yang valid**: Anda berada di PowerShell tetapi menjalankan perintah penginstal CMD. Gunakan penginstal PowerShell:

680 ```powershell theme={null}680 ```powershell theme={null}

681 irm https://claude.ai/install.ps1 | iex681 irm https://claude.ai/install.ps1 | iex

682 ```682 ```

683 683 

684* **`A parameter cannot be found that matches parameter name 'fsSL'`**: Anda menjalankan installer macOS/Linux `curl -fsSL ... | bash` di Windows PowerShell, di mana `curl` adalah alias untuk `Invoke-WebRequest` dan menolak flag `-fsSL`. Gunakan PowerShell installer sebagai gantinya:684* **`A parameter cannot be found that matches parameter name 'fsSL'`**: Anda menjalankan penginstal macOS/Linux `curl -fsSL ... | bash` di Windows PowerShell, tempat `curl` merupakan alias untuk `Invoke-WebRequest` dan menolak flag `-fsSL`. Gunakan penginstal PowerShell sebagai gantinya:

685 ```powershell theme={null}685 ```powershell theme={null}

686 irm https://claude.ai/install.ps1 | iex686 irm https://claude.ai/install.ps1 | iex

687 ```687 ```

688 688 

689* **`bash` not recognized**: Anda menjalankan installer macOS/Linux di Windows. Gunakan PowerShell installer sebagai gantinya:689* **`bash` tidak dikenali**: Anda menjalankan penginstal macOS/Linux di Windows. Gunakan penginstal PowerShell sebagai gantinya:

690 ```powershell theme={null}690 ```powershell theme={null}

691 irm https://claude.ai/install.ps1 | iex691 irm https://claude.ai/install.ps1 | iex

692 ```692 ```

693 693 

694* **Perintah mencetak teks script alih-alih menginstal**: Anda menjalankan bagian download dari perintah tanpa bagian yang mengeksekusinya. `irm https://claude.ai/install.ps1` sendirian mencetak script yang diunduh ke terminal. Salurkan ke `iex` untuk menjalankannya:694* **Perintah mencetak teks skrip alih-alih menginstal**: Anda menjalankan separuh perintah yang mengunduh tanpa bagian yang mengeksekusinya. `irm https://claude.ai/install.ps1` saja akan mencetak skrip yang diunduh ke terminal. Salurkan (pipe) ke `iex` untuk menjalankannya:

695 695 

696 ```powershell theme={null}696 ```powershell theme={null}

697 irm https://claude.ai/install.ps1 | iex697 irm https://claude.ai/install.ps1 | iex

698 ```698 ```

699 699 

700 Di CMD, `curl -fsSL https://claude.ai/install.cmd` tanpa `-o` mencetak batch script alih-alih menyimpannya. Jalankan perintah lengkap:700 Di CMD, `curl -fsSL https://claude.ai/install.cmd` tanpa `-o` mencetak skrip batch alih-alih menyimpannya. Jalankan perintah lengkapnya:

701 701 

702 ```batch theme={null}702 ```batch theme={null}

703 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd703 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

704 ```704 ```

705 705 

706Installer mana pun yang Anda gunakan, konfirmasi itu berfungsi: buka terminal baru dan jalankan `claude --version`, yang mencetak nomor versi seperti `2.1.211 (Claude Code)`.706Penginstal mana pun yang Anda gunakan, pastikan penginstal tersebut berhasil: buka terminal baru dan jalankan `claude --version`, yang mencetak nomor versi seperti `2.1.211 (Claude Code)`.

707 707 

708### `running scripts is disabled on this system`708### `running scripts is disabled on this system`

709 709 


715 + CategoryInfo : SecurityError: (:) [], PSSecurityException715 + CategoryInfo : SecurityError: (:) [], PSSecurityException

716```716```

717 717 

718Error yang sama menyebutkan `claude.ps1` ketika Anda menjalankan `claude` setelah npm install. Kebijakan eksekusi PowerShell memblokir script launcher `.ps1` yang npm buat untuk perintahnya. Kebijakan berlaku untuk file script, jadi tidak mempengaruhi PowerShell installer `irm https://claude.ai/install.ps1 | iex`, yang menjalankan teks yang diunduh secara langsung.718Error yang sama menyebutkan `claude.ps1` ketika Anda menjalankan `claude` setelah instalasi npm. Kebijakan eksekusi PowerShell memblokir skrip peluncur `.ps1` yang dibuat npm untuk perintah-perintahnya. Kebijakan tersebut berlaku untuk file skrip, sehingga tidak memengaruhi penginstal PowerShell `irm https://claude.ai/install.ps1 | iex`, yang menjalankan teks yang diunduh secara langsung.

719 719 

720**Solusi:**720**Solusi:**

721 721 

7221. **Izinkan script yang dibuat secara lokal untuk pengguna Anda**, kemudian coba ulang:7221. **Izinkan skrip yang dibuat secara lokal untuk pengguna Anda**, lalu coba lagi:

723 ```powershell theme={null}723 ```powershell theme={null}

724 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser724 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

725 ```725 ```

7262. **Panggil launcher `.cmd` sebagai gantinya**: `npm.cmd` dan `claude.cmd` melakukan pekerjaan yang sama, dan kebijakan tidak mencakup mereka.7262. **Panggil peluncur `.cmd` sebagai gantinya**: `npm.cmd` dan `claude.cmd` melakukan pekerjaan yang sama, dan kebijakan tersebut tidak mencakup keduanya.

7273. **Gunakan [PowerShell installer](https://code.claude.com/docs/id/setup.md#install-claude-code)** alih-alih npm. Ini menginstal binary alih-alih script `.ps1`.7273. **Gunakan [penginstal PowerShell](https://code.claude.com/docs/id/setup.md#install-claude-code)** alih-alih npm. Penginstal ini menginstal binary, bukan skrip `.ps1`.

728 728 

729### `The process cannot access the file` during Windows install729### `The process cannot access the file` saat instalasi Windows

730 730 

731Jika PowerShell installer gagal dengan `Failed to download binary: The process cannot access the file ... because it is being used by another process`, installer tidak dapat menulis ke `%USERPROFILE%\.claude\downloads`. Ini biasanya berarti upaya install sebelumnya masih berjalan, atau software antivirus memindai binary yang sebagian diunduh di folder itu.731Jika penginstal PowerShell gagal dengan `Failed to download binary: The process cannot access the file ... because it is being used by another process`, penginstal tidak dapat menulis ke `%USERPROFILE%\.claude\downloads`. Hal ini biasanya berarti upaya instalasi sebelumnya masih berjalan, atau perangkat lunak antivirus sedang memindai binary yang terunduh sebagian di folder tersebut.

732 732 

733Tutup jendela PowerShell lain yang menjalankan installer dan tunggu pemindaian antivirus melepaskan file. Kemudian hapus folder downloads dan jalankan installer lagi:733Tutup jendela PowerShell lain yang menjalankan penginstal dan tunggu hingga pemindaian antivirus melepaskan file tersebut. Kemudian hapus folder downloads dan jalankan penginstal lagi:

734 734 

735```powershell theme={null}735```powershell theme={null}

736Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\downloads"736Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\downloads"

737irm https://claude.ai/install.ps1 | iex737irm https://claude.ai/install.ps1 | iex

738```738```

739 739 

740### `claude.exe` missing after an update on Windows740### `claude.exe` hilang setelah pembaruan di Windows

741 741 

742Jika terminal Anda melaporkan `'claude' is not recognized` tepat setelah Claude Code diperbarui di Windows, periksa apakah `%USERPROFILE%\.local\bin` masih berisi `claude.exe`. Jika direktori itu tidak ada di PATH Anda sama sekali, lihat [Verifikasi PATH Anda](#verify-your-path) sebagai gantinya. Untuk memperbarui di Windows, Claude Code mengganti nama `claude.exe` yang ada ke samping sebagai backup dan memindahkan versi baru ke tempatnya. Jika memindahkan versi baru ke tempat gagal dan Claude Code tidak dapat mengganti nama backup kembali juga, direktori menyimpan backup tetapi tidak memiliki `claude.exe`.742Jika terminal Anda melaporkan `'claude' is not recognized` tepat setelah Claude Code diperbarui di Windows, periksa apakah `%USERPROFILE%\.local\bin` masih berisi `claude.exe`. Jika direktori tersebut sama sekali tidak ada di PATH Anda, lihat [Verifikasi PATH Anda](#verify-your-path) sebagai gantinya. Untuk memperbarui di Windows, Claude Code mengganti nama `claude.exe` yang ada menjadi cadangan dan memindahkan versi baru ke tempatnya. Jika pemindahan versi baru ke tempatnya gagal dan Claude Code juga tidak dapat mengembalikan nama cadangan tersebut, direktori tersebut tetap menyimpan cadangan tetapi tidak memiliki `claude.exe`.

743 743 

744Backup adalah file di direktori yang sama yang namanya dimulai dengan `claude.exe.old.` diikuti oleh timestamp numerik. Jalankan yang berikut di PowerShell untuk mengganti nama backup terbaru kembali ke `claude.exe`:744Cadangan tersebut adalah file di direktori yang sama yang namanya diawali dengan `claude.exe.old.` diikuti timestamp numerik. Jalankan perintah berikut di PowerShell untuk mengganti nama cadangan terbaru kembali menjadi `claude.exe`:

745 745 

746```powershell theme={null}746```powershell theme={null}

747Get-ChildItem "$env:USERPROFILE\.local\bin\claude.exe.old.*" | Sort-Object Name | Select-Object -Last 1 | Rename-Item -NewName claude.exe747Get-ChildItem "$env:USERPROFILE\.local\bin\claude.exe.old.*" | Sort-Object Name | Select-Object -Last 1 | Rename-Item -NewName claude.exe

748```748```

749 749 

750Kemudian jalankan `claude --version` untuk mengonfirmasi perbaikan. `claude.exe` yang dipulihkan mencetak nomor versi.750Kemudian jalankan `claude --version` untuk memastikan perbaikan berhasil. `claude.exe` yang dipulihkan akan mencetak nomor versi.

751 751 

752Jika tidak ada file `claude.exe.old.*`, atau `claude` masih gagal setelah penggantian nama, instal ulang sebagai gantinya:752Jika tidak ada file `claude.exe.old.*`, atau `claude` masih gagal setelah penggantian nama, instal ulang sebagai gantinya:

753 753 


755irm https://claude.ai/install.ps1 | iex755irm https://claude.ai/install.ps1 | iex

756```756```

757 757 

758Sebelum v2.1.281, Claude Code dapat menghapus backup sementara `claude.exe` masih hilang.758Sebelum v2.1.281, Claude Code dapat menghapus cadangan saat `claude.exe` masih hilang.

759 759 

760### Install killed on low-memory Linux servers760### Instalasi dihentikan di server Linux dengan memori rendah

761 761 

762Pesan `Killed` selama install biasanya berarti Linux out-of-memory (OOM) killer menghentikan langkah `claude install` karena sistem kehabisan memori bebas. Ini umum di VPS dan cloud instance kecil. Script install melaporkan penyebabnya dan keluar dengan kode 137. Dalam contoh ini, nomor baris dan ID proses bervariasi menurut rilis dan eksekusi:762Pesan `Killed` saat instalasi biasanya berarti OOM (out-of-memory) killer Linux menghentikan langkah `claude install` karena sistem kehabisan memori bebas. Hal ini umum terjadi pada VPS kecil dan instans cloud. Skrip instalasi melaporkan penyebabnya dan keluar dengan kode 137. Dalam contoh ini, nomor baris dan ID proses bervariasi menurut rilis dan eksekusi:

763 763 

764```text theme={null}764```text theme={null}

765Setting up Claude Code...765Setting up Claude Code...


768Claude Code needs roughly 512MB of free memory to install. Free up memory, then run this script again.768Claude Code needs roughly 512MB of free memory to install. Free up memory, then run this script again.

769```769```

770 770 

771Instalasi memerlukan kira-kira 512 MB memori bebas, dan menjalankan Claude Code memerlukan lebih banyak. Lihat [system requirements](https://code.claude.com/docs/id/setup.md#system-requirements).771Instalasi memerlukan sekitar 512 MB memori bebas, dan menjalankan Claude Code memerlukan lebih banyak lagi. Lihat [persyaratan sistem](https://code.claude.com/docs/id/setup.md#system-requirements).

772 772 

773**Solusi:**773**Solusi:**

774 774 

7751. **Tambahkan swap space** jika server Anda memiliki RAM terbatas. Swap menggunakan ruang disk sebagai memori overflow, memungkinkan instalasi selesai bahkan dengan RAM fisik rendah.7751. **Tambahkan ruang swap** jika server Anda memiliki RAM terbatas. Swap menggunakan ruang disk sebagai memori luapan, sehingga instalasi dapat selesai meskipun RAM fisik rendah.

776 776 

777 Buat file swap 2 GB dan aktifkan:777 Buat file swap 2 GB dan aktifkan:

778 778 


783 sudo swapon /swapfile783 sudo swapon /swapfile

784 ```784 ```

785 785 

786 Kemudian coba ulang instalasi:786 Kemudian coba lagi instalasi:

787 787 

788 ```bash theme={null}788 ```bash theme={null}

789 curl -fsSL https://claude.ai/install.sh | bash789 curl -fsSL https://claude.ai/install.sh | bash

790 ```790 ```

791 791 

7922. **Tutup proses lain** untuk membebaskan memori sebelum menginstal.7922. **Tutup proses lain** untuk mengosongkan memori sebelum menginstal.

793 793 

7943. **Gunakan instance yang lebih besar** jika memungkinkan. Claude Code memerlukan setidaknya 4 GB RAM.7943. **Gunakan instans yang lebih besar** jika memungkinkan. Claude Code memerlukan RAM minimal 4 GB.

795 795 

796### Installation was killed before it could finish796### Installation was killed before it could finish

797 797 

798Script install melaporkan ketika langkah `claude install` dihentikan oleh sinyal. Di Linux, exit code 137 berarti proses menerima SIGKILL, dan pada host dengan memori rendah itu biasanya adalah kernel out-of-memory (OOM) killer. Script mencetak penjelasan ini dan keluar dengan kode 137:798Skrip instalasi melaporkan ketika langkah `claude install` dihentikan oleh sinyal. Di Linux, exit code 137 berarti proses menerima SIGKILL, dan pada host dengan memori rendah, itu biasanya berasal dari OOM (out-of-memory) killer kernel. Skrip mencetak penjelasan ini dan keluar dengan kode 137:

799 799 

800```text theme={null}800```text theme={null}

801Installation was killed before it could finish (exit code 137). This usually means the system ran out of memory.801Installation was killed before it could finish (exit code 137). This usually means the system ran out of memory.

802Claude Code needs roughly 512MB of free memory to install. Free up memory, then run this script again.802Claude Code needs roughly 512MB of free memory to install. Free up memory, then run this script again.

803```803```

804 804 

805Untuk sinyal fatal lainnya, dan untuk exit code 137 di macOS, script mencetak `Installation was killed before it could finish (exit code <N>)` dengan exit code yang sebenarnya dan menghilangkan penjelasan out-of-memory. Pesan ini berasal dari script install yang digunakan macOS dan Linux, yang juga mencakup instalasi di dalam WSL; script install Windows native tidak pernah mencetaknya. Sebelum v2.1.200, script keluar hanya dengan baris `Killed` polos dari shell.805Untuk sinyal fatal lainnya, dan untuk exit code 137 di macOS, skrip mencetak `Installation was killed before it could finish (exit code <N>)` dengan exit code yang sebenarnya dan menghilangkan penjelasan tentang kehabisan memori. Pesan ini berasal dari skrip instalasi yang digunakan macOS dan Linux, yang juga mencakup instalasi di dalam WSL; skrip instalasi Windows native tidak pernah mencetaknya. Sebelum v2.1.200, skrip keluar hanya dengan baris `Killed` polos dari shell.

806 806 

807**Yang harus dilakukan:**807**Yang harus dilakukan:**

808 808 

809* Hentikan proses lain untuk membebaskan memori, lalu jalankan ulang installer809* Hentikan proses lain untuk mengosongkan memori, lalu jalankan ulang penginstal

810* Tambahkan swap space atau pindah ke instance yang lebih besar. Lihat [Install killed on low-memory Linux servers](#install-killed-on-low-memory-linux-servers) untuk perintah file swap.810* Tambahkan ruang swap atau pindah ke instans yang lebih besar. Lihat [Instalasi dihentikan di server Linux dengan memori rendah](#install-killed-on-low-memory-linux-servers) untuk perintah file swap.

811 811 

812### Install hangs in Docker812### Instalasi macet di Docker

813 813 

814Saat menginstal Claude Code di Docker container, menginstal sebagai root ke `/` dapat menyebabkan hang.814Saat menginstal Claude Code di container Docker, menginstal sebagai root ke `/` dapat menyebabkan instalasi macet.

815 815 

816**Solusi:**816**Solusi:**

817 817 

8181. **Atur direktori kerja** sebelum menjalankan installer. Saat dijalankan dari `/`, installer memindai seluruh filesystem, yang menyebabkan penggunaan memori berlebihan. Mengatur `WORKDIR` membatasi pemindaian ke direktori kecil:8181. **Atur direktori kerja** sebelum menjalankan penginstal. Ketika dijalankan dari `/`, penginstal memindai seluruh filesystem, yang menyebabkan penggunaan memori berlebihan. Mengatur `WORKDIR` membatasi pemindaian ke direktori kecil:

819 ```dockerfile theme={null}819 ```dockerfile theme={null}

820 WORKDIR /tmp820 WORKDIR /tmp

821 RUN curl -fsSL https://claude.ai/install.sh | bash821 RUN curl -fsSL https://claude.ai/install.sh | bash

822 ```822 ```

823 823 

8242. **Berikan Docker lebih banyak memori** jika menggunakan Docker Desktop. Container build berbagi memori yang dialokasikan ke virtual machine Docker Desktop, jadi buka **Settings > Resources** di Docker Desktop, naikkan batas memori, dan jalankan ulang build.8242. **Berikan lebih banyak memori ke Docker** jika menggunakan Docker Desktop. Container build berbagi memori yang dialokasikan ke mesin virtual Docker Desktop, jadi buka **Settings > Resources** di Docker Desktop, naikkan batas memori, dan jalankan ulang build.

825 825 

826### `Raw mode is not supported` during install826### `Raw mode is not supported` saat instalasi

827 827 

828Ketika [server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md) organisasi Anda menyertakan perubahan yang memerlukan [security approval](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs), versi Claude Code sebelum 2.1.246 mencoba menampilkan dialog persetujuan selama `claude install`. Dialog memerlukan terminal di stdin. Ketika installer menjalankan `claude install` dari pipe, seperti yang dilakukan `curl -fsSL https://claude.ai/install.sh | bash`, stdin adalah pipe alih-alih terminal, jadi install gagal dengan error yang berisi `Raw mode is not supported`.828Ketika [pengaturan yang dikelola server](https://code.claude.com/docs/id/server-managed-settings.md) organisasi Anda menyertakan perubahan yang memerlukan [persetujuan keamanan](https://code.claude.com/docs/id/server-managed-settings.md#security-approval-dialogs), versi Claude Code sebelum 2.1.246 mencoba menampilkan dialog persetujuan selama `claude install`. Dialog tersebut memerlukan terminal pada stdin. Ketika penginstal menjalankan `claude install` dari pipe, seperti yang dilakukan `curl -fsSL https://claude.ai/install.sh | bash`, stdin adalah pipe dan bukan terminal, sehingga instalasi gagal dengan error yang berisi `Raw mode is not supported`.

829 829 

830Claude Code v2.1.246 dan lebih baru tidak menampilkan dialog selama `claude install` atau `claude update`. Perintah berjalan dengan pengaturan yang terakhir Anda setujui, dan Claude Code menampilkan dialog di sesi interaktif Anda berikutnya. Jika konfigurasi startup organisasi Anda [menunggu pengambilan pengaturan](https://code.claude.com/docs/id/server-managed-settings.md#enforce-fail-closed-startup), seperti ketika mengatur `forceRemoteSettingsRefresh`, dialog masih muncul selama perintah ini, dan install yang dijalankan dari pipe masih gagal.830Claude Code v2.1.246 dan yang lebih baru tidak menampilkan dialog tersebut selama `claude install` atau `claude update`. Perintah berjalan dengan pengaturan yang terakhir Anda setujui, dan Claude Code menampilkan dialog tersebut di sesi interaktif Anda berikutnya. Jika konfigurasi startup organisasi Anda [menunggu pengambilan pengaturan](https://code.claude.com/docs/id/server-managed-settings.md#enforce-fail-closed-startup), seperti ketika konfigurasi tersebut mengatur `forceRemoteSettingsRefresh`, dialog tersebut tetap muncul selama perintah-perintah ini, dan instalasi yang dijalankan dari pipe tetap gagal.

831 831 

832Di setiap konfigurasi lain, menjalankan ulang installer melewati error ini, karena script menjalankan perintah `install` rilis terbaru bahkan ketika Anda memintanya untuk menginstal versi yang lebih lama. Jalankan ulang perintah untuk platform Anda:832Dalam setiap konfigurasi lainnya, menjalankan ulang penginstal akan melewati error ini, karena skrip menjalankan perintah `install` dari rilis terbaru bahkan ketika Anda memintanya untuk menginstal versi yang lebih lama. Jalankan ulang perintah untuk platform Anda:

833 833 

834> [tab] macOS/Linux834> [tab] macOS/Linux

835>835>


845 845 

846`claude --version` mencetak versi yang diinstal oleh eksekusi ulang tersebut.846`claude --version` mencetak versi yang diinstal oleh eksekusi ulang tersebut.

847 847 

848### `claude update` or `claude doctor` hangs848### `claude update` atau `claude doctor` macet

849 849 

850`claude update` dan `claude doctor` memindai file konfigurasi shell Anda untuk alias `claude` yang sudah usang: `~/.zshrc`, `~/.bashrc`, dan `~/.config/fish/config.fish`, plus di macOS yang pertama dari `~/.bash_profile`, `~/.bash_login`, atau `~/.profile` yang ada. Jika Anda mengatur `ZDOTDIR`, file Zsh adalah `$ZDOTDIR/.zshrc` sebagai gantinya. Ketika salah satu path tersebut adalah direktori, Claude Code melewatinya dan kedua perintah selesai secara normal. Sebelum v2.1.214, direktori di salah satu path tersebut membuat kedua perintah hang dan meninggalkan bagian System diagnostics dari `/status` kosong. `claude doctor` hang tanpa output; `claude update` hang tepat setelah mencetak `Checking for updates`.850`claude update` dan `claude doctor` memindai file konfigurasi shell Anda untuk mencari alias `claude` yang usang: `~/.zshrc`, `~/.bashrc`, dan `~/.config/fish/config.fish`, ditambah di macOS file pertama yang ada di antara `~/.bash_profile`, `~/.bash_login`, atau `~/.profile`. Jika Anda mengatur `ZDOTDIR`, file Zsh-nya adalah `$ZDOTDIR/.zshrc` sebagai gantinya. Ketika salah satu path tersebut adalah direktori, Claude Code melewatinya dan kedua perintah selesai secara normal. Sebelum v2.1.214, direktori di salah satu path tersebut membuat kedua perintah macet dan membiarkan bagian System diagnostics dari `/status` kosong. `claude doctor` macet tanpa output; `claude update` macet tepat setelah mencetak `Checking for updates`.

851 851 

852Jika Anda mengalami hang pada versi sebelumnya, temukan direktorinya. Dalam output perintah ini, baris yang dimulai dengan `d` menandai path itu sebagai direktori. Baris `No such file or directory` berarti tidak ada apa pun di path itu dan bukan penyebabnya:852Jika Anda mengalami macet ini pada versi yang lebih lama, temukan direktori tersebut. Dalam output perintah ini, baris yang diawali dengan `d` menandai path tersebut sebagai direktori. Baris `No such file or directory` berarti tidak ada apa pun di path tersebut dan bukan penyebabnya:

853 853 

854```bash theme={null}854```bash theme={null}

855ls -ld ~/.zshrc ~/.bashrc ~/.bash_profile ~/.bash_login ~/.profile ~/.config/fish/config.fish855ls -ld ~/.zshrc ~/.bashrc ~/.bash_profile ~/.bash_login ~/.profile ~/.config/fish/config.fish

856```856```

857 857 

858Pindahkan direktori ke samping, atau perbarui ke v2.1.214 atau lebih baru. Karena `claude update` hang pada versi yang terpengaruh, perbarui dengan menjalankan ulang [install script](https://code.claude.com/docs/id/setup.md#install-claude-code) sebagai gantinya.858Pindahkan direktori tersebut ke tempat lain, atau perbarui ke v2.1.214 atau yang lebih baru. Karena `claude update` macet pada versi yang terdampak, perbarui dengan menjalankan ulang [skrip instalasi](https://code.claude.com/docs/id/setup.md#install-claude-code) sebagai gantinya.

859 859 

860### Claude Desktop overrides the `claude` command on Windows860### Claude Desktop menimpa perintah `claude` di Windows

861 861 

862Jika Anda menginstal versi Claude Desktop yang lebih lama, aplikasi tersebut mungkin mendaftarkan `Claude.exe` di direktori `WindowsApps` yang mendapat prioritas PATH di atas Claude Code CLI. Menjalankan `claude` membuka Desktop app alih-alih CLI.862Jika Anda menginstal versi lama Claude Desktop, aplikasi tersebut mungkin mendaftarkan `Claude.exe` di direktori `WindowsApps` yang mendapat prioritas PATH di atas Claude Code CLI. Menjalankan `claude` akan membuka aplikasi Desktop alih-alih CLI.

863 863 

864Perbarui Claude Desktop ke versi terbaru untuk memperbaiki masalah ini.864Perbarui Claude Desktop ke versi terbaru untuk memperbaiki masalah ini.

865 865 

866### Claude Code on Windows requires either Git for Windows (for bash) or PowerShell866### Claude Code on Windows requires either Git for Windows (for bash) or PowerShell

867 867 

868Git for Windows bersifat opsional. Claude Code menggunakan [PowerShell tool](https://code.claude.com/docs/id/tools-reference.md#powershell-tool) saat Git Bash tidak ada, jadi error ini berarti tidak ada shell yang ditemukan.868Git for Windows bersifat opsional. Claude Code menggunakan [tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool) ketika Git Bash tidak ada, sehingga error ini berarti tidak ada shell yang ditemukan.

869 869 

870**Jika PowerShell hilang dari PATH Anda**, lokasi defaultnya adalah `C:\Windows\System32\WindowsPowerShell\v1.0\`. Tambahkan direktori itu ke `PATH` Anda, atau instal [PowerShell 7](https://aka.ms/powershell), yang menyediakan `pwsh`.870**Jika PowerShell tidak ada di PATH Anda**, lokasi default-nya adalah `C:\Windows\System32\WindowsPowerShell\v1.0\`. Tambahkan direktori tersebut ke `PATH` Anda, atau instal [PowerShell 7](https://aka.ms/powershell), yang menyediakan `pwsh`.

871 871 

872**Untuk menginstal Git for Windows sebagai gantinya**, unduh dari [git-scm.com/downloads/win](https://git-scm.com/downloads/win). Selama setup, pilih "Add to PATH." Restart terminal Anda setelah menginstal. Menginstalnya mengaktifkan Bash tool, berguna saat bekerja dengan script dan tooling berbasis Bash.872**Untuk menginstal Git for Windows sebagai gantinya**, unduh dari [git-scm.com/downloads/win](https://git-scm.com/downloads/win). Selama penyiapan, pilih "Add to PATH." Mulai ulang terminal Anda setelah menginstal. Menginstalnya akan mengaktifkan tool Bash, yang berguna saat bekerja dengan skrip dan alat berbasis Bash.

873 873 

874**Jika Git sudah terinstal** tetapi Claude Code tidak dapat menemukannya, bandingkan lokasinya dengan tempat yang diperiksa Claude Code. Ketika `CLAUDE_CODE_GIT_BASH_PATH` tidak diatur, Claude Code mencari `bash.exe` dalam urutan ini:874**Jika Git sudah terinstal** tetapi Claude Code tidak dapat menemukannya, bandingkan lokasinya dengan tempat-tempat yang diperiksa Claude Code. Ketika `CLAUDE_CODE_GIT_BASH_PATH` tidak diatur, Claude Code mencari `bash.exe` dengan urutan berikut:

875 875 

8761. Lokasi instalasi default `C:\Program Files\Git` dan `C:\Program Files (x86)\Git`.8761. Lokasi instalasi default `C:\Program Files\Git` dan `C:\Program Files (x86)\Git`.

8772. `git` di `PATH` Anda, menggunakan `bin\bash.exe` dari instalasi Git itu.8772. `git` di `PATH` Anda, menggunakan `bin\bash.exe` dari instalasi Git tersebut.

878 878 

879Di langkah 2, Claude Code melewati `git` yang berada di folder tempat Anda meluncurkan Claude Code, atau di bawahnya di path yang berisi `node_modules` atau folder virtual-environment seperti `.venv` atau `env`, misalnya `C:\dev\env\myproject\Git` ketika Anda meluncurkan dari `C:\dev\env\myproject`. Ini mencegah Claude Code menjalankan executable yang ditempatkan proyek di sana. Jika Git Anda berada di lokasi seperti itu, arahkan `CLAUDE_CODE_GIT_BASH_PATH` ke sana.879Pada langkah 2, Claude Code melewati `git` yang berada di folder tempat Anda meluncurkan Claude Code, atau di bawahnya dalam path yang berisi `node_modules` atau folder virtual environment seperti `.venv` atau `env`, misalnya `C:\dev\env\myproject\Git` ketika Anda meluncurkan dari `C:\dev\env\myproject`. Hal ini mencegah Claude Code menjalankan executable yang ditempatkan di sana oleh sebuah proyek. Jika Git Anda berada di lokasi seperti itu, arahkan `CLAUDE_CODE_GIT_BASH_PATH` ke lokasi tersebut.

880 880 

881**Untuk mengarahkan Claude Code ke instalasi Git tertentu**, temukan dengan menjalankan `where.exe git` di PowerShell, kemudian atur path `bin\bash.exe` dari instalasi itu sebagai `CLAUDE_CODE_GIT_BASH_PATH` di [file settings.json](https://code.claude.com/docs/id/settings.md) Anda:881**Untuk mengarahkan Claude Code ke instalasi Git tertentu**, temukan dengan menjalankan `where.exe git` di PowerShell, lalu atur path `bin\bash.exe` dari instalasi tersebut sebagai `CLAUDE_CODE_GIT_BASH_PATH` di [file settings.json](https://code.claude.com/docs/id/settings.md) Anda:

882 882 

883```json theme={null}883```json theme={null}

884{884{


888}888}

889```889```

890 890 

891**Jika `CLAUDE_CODE_GIT_BASH_PATH` diatur ke path yang benar dan file ada** tetapi Claude Code masih tidak menggunakannya, periksa nama file terlebih dahulu. Claude Code hanya menerima file bernama `bash.exe`, `sh.exe`, `bash`, atau `sh`; dengan nama lain, seperti launcher `git-bash.exe` milik Git for Windows, Claude Code mengabaikan variabel dan mendeteksi Git Bash secara otomatis seolah-olah variabel tidak diatur, sambil mencatat warning yang terlihat dengan `--debug`. Path yang tidak ada mendapat fallback dan warning yang sama. Sebelum v2.1.219, Claude Code menggunakan file apa pun yang ada sebagai shell tanpa memeriksa namanya, dan keluar saat startup dengan `Claude Code was unable to find CLAUDE_CODE_GIT_BASH_PATH path` ketika path tidak ada.891**Jika `CLAUDE_CODE_GIT_BASH_PATH` diatur ke path yang benar dan file tersebut ada** tetapi Claude Code tetap tidak menggunakannya, periksa nama file tersebut terlebih dahulu. Claude Code hanya menerima file bernama `bash.exe`, `sh.exe`, `bash`, atau `sh`; dengan nama lain, seperti peluncur `git-bash.exe` milik Git for Windows, Claude Code mengabaikan variabel tersebut dan mendeteksi Git Bash secara otomatis seolah-olah variabel itu tidak diatur, sambil mencatat peringatan yang terlihat dengan `--debug`. Path yang tidak ada mendapatkan fallback dan peringatan yang sama. Sebelum v2.1.219, Claude Code menggunakan file apa pun yang ada sebagai shell tanpa memeriksa namanya, dan keluar saat startup dengan `Claude Code was unable to find CLAUDE_CODE_GIT_BASH_PATH path` ketika path tersebut tidak ada.

892 892 

893Jika nama file benar, software endpoint security seperti AppLocker, Group Policy software restriction policies, atau EDR agent mungkin mengganggu. Minta tim IT Anda untuk memasukkan `claude.exe` dan proses yang dijalankannya, termasuk `cmd.exe` dan `bash.exe`, ke allowlist dalam kebijakan endpoint protection Anda.893Jika nama file sudah benar, perangkat lunak keamanan endpoint seperti AppLocker, kebijakan pembatasan perangkat lunak Group Policy, atau agent EDR mungkin mengganggu. Mintalah tim IT Anda untuk menambahkan `claude.exe` dan proses yang dijalankannya, termasuk `cmd.exe` dan `bash.exe`, ke allowlist dalam kebijakan perlindungan endpoint Anda.

894 894 

895### Claude Code does not support 32-bit Windows895### Claude Code does not support 32-bit Windows

896 896 

897Windows menyertakan dua entri PowerShell di Start menu: `Windows PowerShell` dan `Windows PowerShell (x86)`. Entri x86 berjalan sebagai proses 32-bit dan memicu error ini bahkan di mesin 64-bit. Untuk memeriksa kasus mana yang Anda alami, jalankan ini di jendela yang sama yang menghasilkan error:897Windows menyertakan dua entri PowerShell di menu Start: `Windows PowerShell` dan `Windows PowerShell (x86)`. Entri x86 berjalan sebagai proses 32-bit dan memicu error ini bahkan pada mesin 64-bit. Untuk memeriksa kasus mana yang Anda alami, jalankan ini di jendela yang sama yang menghasilkan error:

898 898 

899```powershell theme={null}899```powershell theme={null}

900[Environment]::Is64BitOperatingSystem900[Environment]::Is64BitOperatingSystem

901```901```

902 902 

903Jika ini mencetak `True`, sistem operasi Anda baik-baik saja. Tutup jendela, buka `Windows PowerShell` tanpa suffix x86, dan jalankan perintah install lagi.903Jika ini mencetak `True`, sistem operasi Anda tidak bermasalah. Tutup jendela tersebut, buka `Windows PowerShell` tanpa akhiran x86, dan jalankan lagi perintah instalasi.

904 904 

905Jika ini mencetak `False`, Anda berada di edisi Windows 32-bit. Claude Code memerlukan sistem operasi 64-bit. Lihat [system requirements](https://code.claude.com/docs/id/setup.md#system-requirements).905Jika ini mencetak `False`, Anda menggunakan edisi Windows 32-bit. Claude Code memerlukan sistem operasi 64-bit. Lihat [persyaratan sistem](https://code.claude.com/docs/id/setup.md#system-requirements).

906 906 

907### Linux musl or glibc binary mismatch907### Ketidakcocokan binary musl atau glibc di Linux

908 908 

909Jika Anda melihat error tentang shared libraries yang hilang seperti `libstdc++.so.6` atau `libgcc_s.so.1` setelah instalasi, installer mungkin telah mengunduh varian binary yang salah untuk sistem Anda.909Jika Anda melihat error tentang shared library yang hilang seperti `ld-linux-x86-64.so.2` atau `ld-linux-aarch64.so.1` setelah instalasi, penginstal mungkin telah mengunduh varian binary yang salah untuk sistem Anda.

910 910 

911```text theme={null}911```text theme={null}

912Error loading shared library libstdc++.so.6: No such file or directory912Error loading shared library ld-linux-x86-64.so.2: No such file or directory

913```913```

914 914 

915Ini dapat terjadi pada sistem berbasis glibc yang memiliki paket cross-compilation musl terinstal, menyebabkan installer salah mendeteksi sistem sebagai musl.

916 

917**Solusi:**915**Solusi:**

918 916 

9191. **Periksa libc mana yang digunakan sistem Anda**:9171. **Periksa libc mana yang digunakan sistem Anda**:


922 ```920 ```

923 Output yang menyebutkan `GNU libc` atau `GLIBC` berarti glibc. Output yang menyebutkan `musl` berarti musl.921 Output yang menyebutkan `GNU libc` atau `GLIBC` berarti glibc. Output yang menyebutkan `musl` berarti musl.

924 922 

9252. **Jika Anda berada di glibc tetapi mendapat binary musl**, hapus instalasi dan instal ulang. Anda juga dapat secara manual mengunduh binary yang benar menggunakan manifest di `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`. Buat [GitHub issue](https://github.com/anthropics/claude-code/issues) dengan output `ldd --version` dan `ls /lib/libc.musl*`.9232. **Jika Anda menggunakan glibc tetapi mendapatkan binary musl**, hapus instalasi dan instal ulang. Anda juga dapat mengunduh binary yang benar secara manual menggunakan manifest di `https://downloads.claude.ai/claude-code-releases/{VERSION}/manifest.json`. Ajukan [issue GitHub](https://github.com/anthropics/claude-code/issues) dengan output dari `ldd --version` dan `ls /lib/libc.musl*`.

926 924 

9273. **Jika Anda benar-benar di musl**, seperti Alpine Linux, instal paket yang diperlukan:9253. **Jika Anda menggunakan musl tetapi mendapatkan binary glibc**, [hapus instalasi](https://code.claude.com/docs/id/setup.md#uninstall-claude-code). Di Alpine Linux, instal terlebih dahulu paket-paket yang disebutkan dalam [penyiapan Alpine Linux](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions). Kemudian jalankan [perintah instalasi](https://code.claude.com/docs/id/setup.md#install-claude-code), yang menginstal binary musl.

928 ```bash theme={null}

929 apk add libgcc libstdc++ ripgrep

930 ```

931 Di Alpine, `ripgrep` berada di community repository. Jika `apk` melaporkan bahwa paket hilang, lihat [Alpine Linux setup](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions).

932 926 

933### `Illegal instruction`927### `Illegal instruction`

934 928 

935Jika menjalankan `claude` atau installer mencetak `Illegal instruction`, binary native menggunakan instruksi CPU yang tidak didukung prosesor Anda. Ada dua penyebab yang berbeda.929Jika menjalankan `claude` atau penginstal mencetak `Illegal instruction`, binary native menggunakan instruksi CPU yang tidak didukung prosesor Anda. Ada dua penyebab berbeda.

936 930 

937**Ketidakcocokan arsitektur.** Installer mengunduh binary yang salah, misalnya x86 di server ARM. Periksa dengan `uname -m` di macOS atau Linux, atau `$env:PROCESSOR_ARCHITECTURE` di PowerShell. Jika hasilnya tidak cocok dengan binary yang Anda terima, [buat GitHub issue](https://github.com/anthropics/claude-code/issues) dengan output tersebut.931**Ketidakcocokan arsitektur.** Penginstal mengunduh binary yang salah, misalnya x86 pada server ARM. Periksa dengan `uname -m` di macOS atau Linux, atau `$env:PROCESSOR_ARCHITECTURE` di PowerShell. Jika hasilnya tidak cocok dengan binary yang Anda terima, [ajukan issue GitHub](https://github.com/anthropics/claude-code/issues) dengan output tersebut.

938 932 

939**Set instruksi AVX tidak ada.** Jika arsitektur Anda benar tetapi Anda masih melihat `Illegal instruction`, CPU Anda mungkin tidak memiliki AVX atau instruksi lain yang diperlukan binary. Ini mempengaruhi kira-kira prosesor Intel dan AMD sebelum 2013, dan virtual machine di mana hypervisor tidak meneruskan AVX ke guest.933**Set instruksi AVX tidak ada.** Jika arsitektur Anda benar tetapi Anda masih melihat `Illegal instruction`, CPU Anda kemungkinan tidak memiliki AVX atau instruksi lain yang diperlukan binary. Hal ini memengaruhi prosesor Intel dan AMD dari sekitar sebelum tahun 2013, serta mesin virtual yang hypervisor-nya tidak meneruskan AVX ke guest.

940 934 

941Di VPS atau VM, jalankan `grep -m1 -ow avx /proc/cpuinfo`; hasil kosong berarti AVX tidak tersedia untuk guest.935Pada VPS atau VM, jalankan `grep -m1 -ow avx /proc/cpuinfo`; hasil kosong berarti AVX tidak tersedia untuk guest.

942 936 

943Tidak ada workaround untuk binary native; pantau [issue #50384](https://github.com/anthropics/claude-code/issues/50384) untuk status, dan sertakan model CPU Anda dari `grep -m1 "model name" /proc/cpuinfo` di Linux atau `sysctl -n machdep.cpu.brand_string` di macOS saat melaporkan.937Tidak ada solusi alternatif untuk binary native; pantau [issue #50384](https://github.com/anthropics/claude-code/issues/50384) untuk statusnya, dan sertakan model CPU Anda dari `grep -m1 "model name" /proc/cpuinfo` di Linux atau `sysctl -n machdep.cpu.brand_string` di macOS saat melapor.

944 938 

945Metode instalasi alternatif mengunduh binary native yang sama dan tidak akan menyelesaikan penyebab mana pun.939Metode instalasi alternatif mengunduh binary native yang sama dan tidak akan mengatasi kedua penyebab tersebut.

946 940 

947### `dyld: cannot load` on macOS941### `dyld: cannot load` di macOS

948 942 

949Jika Anda melihat `dyld: Symbol not found`, `dyld: cannot load`, atau `Abort trap: 6` selama instalasi, binary tidak kompatibel dengan versi macOS atau hardware Anda.943Jika Anda melihat `dyld: Symbol not found`, `dyld: cannot load`, atau `Abort trap: 6` saat instalasi, binary tersebut tidak kompatibel dengan versi macOS atau perangkat keras Anda.

950 944 

951Error `Symbol not found` yang mereferensikan `libicucore` berarti versi macOS Anda lebih lama dari yang didukung binary:945Error `Symbol not found` yang merujuk ke `libicucore` berarti versi macOS Anda lebih lama daripada yang didukung binary:

952 946 

953```text theme={null}947```text theme={null}

954dyld: Symbol not found: _ubrk_clone948dyld: Symbol not found: _ubrk_clone


956 Expected in: /usr/lib/libicucore.A.dylib950 Expected in: /usr/lib/libicucore.A.dylib

957```951```

958 952 

959Loader dapat juga menolak load commands binary, yang juga berarti versi macOS Anda terlalu lama:953Loader juga dapat menolak load command binary, yang juga berarti versi macOS Anda terlalu lama:

960 954 

961```text theme={null}955```text theme={null}

962dyld: cannot load 'claude-2.1.42-darwin-x64' (load command 0x80000034 is unknown)956dyld: cannot load 'claude-2.1.42-darwin-x64' (load command 0x80000034 is unknown)


965 959 

966**Solusi:**960**Solusi:**

967 961 

9681. **Periksa versi macOS Anda**: Claude Code memerlukan macOS 13.0 atau lebih baru. Buka menu Apple dan pilih About This Mac untuk memeriksa versi Anda.9621. **Periksa versi macOS Anda**: Claude Code memerlukan macOS 13.0 atau yang lebih baru. Buka menu Apple dan pilih About This Mac untuk memeriksa versi Anda.

969 963 

9702. **Perbarui macOS** jika Anda berada di versi yang lebih lama. Binary menggunakan load commands dan system libraries yang tidak didukung versi macOS yang lebih lama. Metode instalasi alternatif seperti Homebrew mengunduh binary yang sama dan tidak akan menyelesaikan error ini.9642. **Perbarui macOS** jika Anda menggunakan versi yang lebih lama. Binary menggunakan load command dan library sistem yang tidak didukung oleh versi macOS yang lebih lama. Metode instalasi alternatif seperti Homebrew mengunduh binary yang sama dan tidak akan mengatasi error ini.

971 965 

972### `Bus error` while a session is running966### `Bus error` saat sesi sedang berjalan

973 967 

974Jika sesi yang sedang berjalan keluar dan shell Anda mencetak `Bus error`, salah satu penyebabnya adalah Claude Code tidak lagi dapat membaca file executable-nya sendiri dari disk. Misalnya, file tersebut terpotong, atau dihapus di network storage, saat sesi berjalan.968Jika sesi yang sedang berjalan keluar dan shell Anda mencetak `Bus error`, salah satu penyebabnya adalah Claude Code tidak lagi dapat membaca file executable-nya sendiri dari disk. Misalnya, file tersebut terpotong, atau dihapus di penyimpanan jaringan, saat sesi berjalan.

975 969 

976Sebelum pesan dari shell, runtime Claude Code dapat mencetak laporan crash yang menyertakan `panic(main thread): Bus error at address` dan `oh no: Bun has crashed. This indicates a bug in Bun, not your code.` Ketika executable menjadi tidak dapat dibaca, crash berasal dari file yang tidak dapat dibaca, bukan dari bug di Bun. Laporan tersebut juga bisa tidak muncul, jika runtime juga tidak dapat membaca kode yang mencetaknya.970Sebelum pesan shell, runtime Claude Code dapat mencetak laporan crash yang mencakup `panic(main thread): Bus error at address` dan `oh no: Bun has crashed. This indicates a bug in Bun, not your code.` Ketika executable menjadi tidak dapat dibaca, crash tersebut berasal dari file yang tidak dapat dibaca, bukan dari bug di Bun. Laporan tersebut juga bisa tidak muncul, jika runtime juga tidak dapat membaca kode yang mencetaknya.

977 971 

978Mulai sesi baru untuk melanjutkan. Jika Claude Code diinstal di network storage, ikuti [Install on network storage](https://code.claude.com/docs/id/setup.md#install-on-network-storage) agar upgrade tidak menghapus binary yang masih dibutuhkan oleh sesi yang sedang berjalan.972Mulai sesi baru untuk melanjutkan. Jika Claude Code diinstal di penyimpanan jaringan, ikuti [Instal di penyimpanan jaringan](https://code.claude.com/docs/id/setup.md#install-on-network-storage) agar peningkatan versi tidak menghapus binary yang masih dibutuhkan oleh sesi yang sedang berjalan.

979 973 

980### `Exec format error` on WSL1974### `Exec format error` di WSL1

981 975 

982Jika menjalankan `claude` di WSL mencetak `cannot execute binary file: Exec format error`, Anda berada di WSL1 dan mengalami regresi binary native yang sudah diketahui dan dilacak di [issue #38788](https://github.com/anthropics/claude-code/issues/38788). Program headers binary berubah dengan cara yang tidak dapat ditangani oleh loader WSL1.976Jika menjalankan `claude` di WSL mencetak `cannot execute binary file: Exec format error`, Anda menggunakan WSL1 dan mengalami regresi binary native yang diketahui dan dilacak di [issue #38788](https://github.com/anthropics/claude-code/issues/38788). Program header binary berubah dengan cara yang tidak dapat ditangani oleh loader WSL1.

983 977 

984Perbaikan paling bersih adalah mengonversi distribusi Anda ke WSL2 dari PowerShell:978Perbaikan paling bersih adalah mengonversi distribusi Anda ke WSL2 dari PowerShell:

985 979 


987wsl --set-version <DistroName> 2981wsl --set-version <DistroName> 2

988```982```

989 983 

990Jika Anda perlu tetap di WSL1, panggil binary melalui dynamic linker. Tambahkan fungsi ini ke `~/.bashrc` di dalam WSL, ganti path jika direktori home Anda berbeda:984Jika Anda perlu tetap menggunakan WSL1, panggil binary melalui dynamic linker. Tambahkan fungsi ini ke `~/.bashrc` di dalam WSL, ganti path-nya jika direktori home Anda berbeda:

991 985 

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

993claude() {987claude() {


995}989}

996```990```

997 991 

998Kemudian jalankan `source ~/.bashrc` dan coba ulang `claude`.992Kemudian jalankan `source ~/.bashrc` dan coba lagi `claude`.

999 993 

1000### npm install errors in WSL994### Error instalasi npm di WSL

1001 995 

1002Masalah ini berlaku jika Anda menginstal Claude Code dengan `npm install -g` di dalam WSL. Jika Anda menggunakan [native installer](https://code.claude.com/docs/id/setup.md), lewati bagian ini. Di npm 12, instal seperti yang dijelaskan dalam [Memperbaiki instalasi npm 12](#fix-an-npm-12-install).996Masalah-masalah ini berlaku jika Anda menginstal Claude Code dengan `npm install -g` di dalam WSL. Jika Anda menggunakan [penginstal native](https://code.claude.com/docs/id/setup.md), lewati bagian ini. Di npm 12, instal sebagaimana dijelaskan di [Perbaiki instalasi npm 12](#fix-an-npm-12-install).

1003 997 

1004**Masalah deteksi OS atau platform.** Jika npm melaporkan ketidakcocokan platform selama instalasi, WSL mungkin mengambil `npm` Windows. Jalankan `npm config set os linux` terlebih dahulu, kemudian instal dengan `npm install -g @anthropic-ai/claude-code --force`. Jangan gunakan `sudo`.998**Masalah deteksi OS atau platform.** Jika npm melaporkan ketidakcocokan platform saat instalasi, jalankan `npm config set os linux` terlebih dahulu, lalu instal dengan `npm install -g @anthropic-ai/claude-code@latest --force`. Jangan gunakan `sudo`.

1005 999 

1006**`exec: node: not found` saat menjalankan `claude`.** Lingkungan WSL Anda mungkin menggunakan instalasi Windows Node.js. Konfirmasi dengan `which npm` dan `which node`: path yang dimulai dengan `/mnt/c/` adalah binary Windows, sementara path Linux dimulai dengan `/usr/`. Untuk memperbaiki ini, instal Node melalui package manager distribusi Linux Anda atau melalui [`nvm`](https://github.com/nvm-sh/nvm).1000**`exec: node: not found` saat menjalankan `claude`.** Lingkungan WSL Anda kemungkinan menggunakan instalasi Node.js Windows. Konfirmasikan dengan `which npm` dan `which node`: path yang diawali dengan `/mnt/c/` adalah binary Windows, sedangkan path Linux diawali dengan `/usr/`. Untuk memperbaikinya, instal Node melalui package manager distribusi Linux Anda atau melalui [`nvm`](https://github.com/nvm-sh/nvm).

1007 1001 

1008**Konflik versi nvm.** Jika Anda memiliki nvm terinstal di WSL dan Windows, beralih versi Node di WSL mungkin rusak karena WSL mengimpor PATH Windows secara default dan nvm Windows mendapat prioritas. Penyebab paling umum adalah nvm tidak dimuat di shell Anda. Tambahkan nvm loader ke `~/.bashrc` atau `~/.zshrc`:1002**Konflik versi nvm.** Jika Anda memiliki nvm yang terinstal di WSL dan Windows, berpindah versi Node di WSL mungkin gagal karena WSL mengimpor PATH Windows secara default dan nvm Windows mendapat prioritas. Penyebab paling umum adalah nvm tidak dimuat di shell Anda. Tambahkan loader nvm ke `~/.bashrc` atau `~/.zshrc`:

1009 1003 

1010```bash theme={null}1004```bash theme={null}

1011export NVM_DIR="$HOME/.nvm"1005export NVM_DIR="$HOME/.nvm"


1013[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"1007[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

1014```1008```

1015 1009 

1016Atau muat di sesi saat ini:1010Atau muat di sesi Anda saat ini:

1017 1011 

1018```bash theme={null}1012```bash theme={null}

1019source ~/.nvm/nvm.sh1013source ~/.nvm/nvm.sh

1020```1014```

1021 1015 

1022Jika nvm dimuat tetapi path Windows masih mendapat prioritas, tambahkan path Node Linux Anda di depan secara eksplisit:1016Jika nvm sudah dimuat tetapi path Windows masih mendapat prioritas, tambahkan path Node Linux Anda di awal secara eksplisit:

1023 1017 

1024```bash theme={null}1018```bash theme={null}

1025export PATH="$HOME/.nvm/versions/node/$(node -v)/bin:$PATH"1019export PATH="$HOME/.nvm/versions/node/$(node -v)/bin:$PATH"


1027 1021 

1028> [!WARNING]1022> [!WARNING]

1029>1023>

1030> Hindari menonaktifkan impor PATH Windows melalui `appendWindowsPath = false` karena ini merusak kemampuan untuk memanggil executable Windows dari WSL. Demikian pula, hindari menghapus instalasi Node.js dari Windows jika Anda menggunakannya untuk pengembangan Windows.1024> Hindari menonaktifkan impor PATH Windows melalui `appendWindowsPath = false` karena hal ini merusak kemampuan untuk memanggil executable Windows dari WSL. Demikian pula, hindari menghapus instalasi Node.js dari Windows jika Anda menggunakannya untuk pengembangan Windows.

1031 1025 

1032### Permission errors during installation1026### Error permission saat instalasi

1033 1027 

1034Jika native installer gagal dengan error permission, direktori target mungkin tidak dapat ditulis. Lihat [Check directory permissions](#check-directory-permissions).1028Jika penginstal native gagal dengan error permission, direktori target mungkin tidak dapat ditulis. Lihat [Periksa hak akses direktori](#check-directory-permissions).

1035 1029 

1036Jika Anda sebelumnya menginstal dengan npm dan mengalami error permission khusus npm, beralih ke native installer:1030Jika sebelumnya Anda menginstal dengan npm dan mengalami error permission khusus npm, beralihlah ke penginstal native:

1037 1031 

1038```bash theme={null}1032```bash theme={null}

1039curl -fsSL https://claude.ai/install.sh | bash1033curl -fsSL https://claude.ai/install.sh | bash

1040```1034```

1041 1035 

1042### Native binary not found after npm install1036### Binary native tidak ditemukan setelah instalasi npm

1043 1037 

1044Paket npm `@anthropic-ai/claude-code` mengunduh binary native sebagai optional dependency per platform, seperti `@anthropic-ai/claude-code-darwin-arm64`. `claude` adalah script placeholder sampai langkah postinstall paket `@anthropic-ai/claude-code` berjalan dan mengganti placeholder tersebut dengan binary itu. Jika download atau langkah postinstall dilewati, placeholder tetap ada, dan menjalankan `claude` di macOS dan Linux mencetak:1038Paket npm `@anthropic-ai/claude-code` mengunduh binary native sebagai dependensi opsional per platform, seperti `@anthropic-ai/claude-code-darwin-arm64`. `claude` merupakan skrip placeholder hingga langkah postinstall paket `@anthropic-ai/claude-code` berjalan dan mengganti placeholder tersebut dengan binary itu. Jika unduhan atau langkah postinstall dilewati, placeholder tetap berada di tempatnya, dan menjalankan `claude` di macOS dan Linux akan mencetak:

1045 1039 

1046```text theme={null}1040```text theme={null}

1047Error: claude native binary not installed.1041Error: claude native binary not installed.


1056Or reinstall without --ignore-scripts / --omit=optional.1050Or reinstall without --ignore-scripts / --omit=optional.

1057```1051```

1058 1052 

1059Di Windows, `bin/claude.exe` adalah script placeholder yang sama alih-alih executable nyata, jadi PowerShell dan CMD melaporkan bahwa mereka tidak dapat menjalankan file alih-alih mencetak pesan ini.1053Di Windows, `bin/claude.exe` adalah placeholder skrip shell yang sama, bukan executable sungguhan, sehingga PowerShell dan CMD melaporkan bahwa mereka tidak dapat menjalankan file tersebut alih-alih mencetak pesan ini.

1060 1054 

1061Periksa penyebab berikut:1055Periksa penyebab-penyebab berikut:

1062 1056 

1063* **npm 12 melewati langkah postinstall secara default.** Ketika Anda menginstal atau memperbarui Claude Code dengan npm 12, npm tetap menyelesaikan instalasi tanpa menjalankan langkah tersebut. Lihat [Memperbaiki instalasi npm 12](#fix-an-npm-12-install).1057* **npm 12 melewati langkah postinstall secara default.** Ketika Anda menginstal atau memperbarui Claude Code dengan npm 12, npm tetap menyelesaikan instalasi tanpa menjalankan langkah tersebut. Lihat [Perbaiki instalasi npm 12](#fix-an-npm-12-install).

1064* **Optional dependencies dinonaktifkan.** Hapus `--omit=optional` dari perintah npm install Anda, `--no-optional` dari pnpm, atau `--ignore-optional` dari yarn, dan periksa bahwa `.npmrc` tidak mengatur `optional=false`. Kemudian instal ulang. Binary native disampaikan hanya sebagai optional dependency, jadi tidak ada fallback JavaScript jika dilewati, dan menjalankan `install.cjs` lagi tidak dapat menempatkan binary yang tidak pernah diunduh.1058* **Dependensi opsional dinonaktifkan.** Hapus `--omit=optional` dari perintah instalasi npm Anda, `--no-optional` dari pnpm, atau `--ignore-optional` dari yarn, dan periksa bahwa `.npmrc` tidak mengatur `optional=false`. Kemudian instal ulang. Binary native hanya dikirimkan sebagai dependensi opsional, sehingga tidak ada fallback JavaScript jika dilewati, dan menjalankan `install.cjs` lagi tidak dapat menempatkan binary yang tidak pernah diunduh.

1065* **Install scripts dinonaktifkan.** `--ignore-scripts` dan beberapa konfigurasi pnpm melewati langkah postinstall tetapi masih mengunduh paket platform. Jalankan `node node_modules/@anthropic-ai/claude-code/install.cjs` seperti yang disarankan pesan, atau instal ulang tanpa flag. Jika postinstall tidak dapat berjalan di lingkungan Anda sama sekali, `node node_modules/@anthropic-ai/claude-code/cli-wrapper.cjs` menemukan paket yang diunduh dan meluncurkannya, dengan biaya proses Node tambahan di setiap start. Jika wrapper mencetak `Could not find native binary package` sebagai gantinya, paket platform tidak pernah diunduh, jadi perbaiki penyebab optional-dependencies di atas terlebih dahulu.1059* **Skrip instalasi dinonaktifkan.** `--ignore-scripts` dan beberapa konfigurasi pnpm melewati langkah postinstall tetapi tetap mengunduh paket platform. Jalankan `node node_modules/@anthropic-ai/claude-code/install.cjs` seperti yang disarankan pesan tersebut, atau instal ulang tanpa flag tersebut. Jika postinstall sama sekali tidak dapat berjalan di lingkungan Anda, `node node_modules/@anthropic-ai/claude-code/cli-wrapper.cjs` menemukan paket yang diunduh dan meluncurkannya, dengan konsekuensi adanya proses Node tambahan pada setiap startup. Jika wrapper mencetak `Could not find native binary package` sebagai gantinya, paket platform tidak pernah diunduh, jadi perbaiki terlebih dahulu penyebab dependensi opsional di atas.

1066* **Platform tidak didukung.** Binary prebuilt dipublikasikan untuk `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64`, dan `win32-arm64`. Claude Code tidak menyediakan binary untuk platform lain; lihat [system requirements](https://code.claude.com/docs/id/setup.md#system-requirements). Di FreeBSD, installer melaporkan platform sebagai tidak didukung. Sebelum v2.1.205, installer memperlakukan FreeBSD sebagai Linux dan mengunduh binary yang tidak dapat dijalankan.1060* **Platform tidak didukung.** Binary prebuilt dipublikasikan untuk `darwin-arm64`, `darwin-x64`, `linux-x64`, `linux-arm64`, `linux-x64-musl`, `linux-arm64-musl`, `win32-x64`, dan `win32-arm64`. Claude Code tidak menyediakan binary untuk platform lain; lihat [persyaratan sistem](https://code.claude.com/docs/id/setup.md#system-requirements). Di FreeBSD, penginstal melaporkan platform tersebut sebagai tidak didukung. Sebelum v2.1.205, penginstal memperlakukan FreeBSD sebagai Linux dan mengunduh binary yang tidak dapat berjalan.

1067* **Mirror npm perusahaan tidak memiliki paket platform.** Pastikan registry Anda mencerminkan kedelapan paket platform `@anthropic-ai/claude-code-*` selain paket meta.1061* **Mirror npm perusahaan tidak memiliki paket platform.** Pastikan registry Anda mencerminkan kedelapan paket platform `@anthropic-ai/claude-code-*` selain paket meta.

1068 1062 

1069#### Memperbaiki instalasi npm 121063#### Perbaiki instalasi npm 12

1070 1064 

1071Jika `claude` mencetak `Error: claude native binary not installed.` setelah instalasi atau pembaruan npm, atau di Windows shell tidak dapat menjalankannya, jalankan `npm --version`. Versi yang dimulai dengan `12` berarti bahwa, kecuali konfigurasi npm Anda mengizinkannya, npm melewati langkah postinstall Claude Code, yang menempatkan binary. Untuk versi lainnya, periksa [penyebab lain](#native-binary-not-found-after-npm-install).1065Jika `claude` mencetak `Error: claude native binary not installed.` setelah instalasi atau pembaruan npm, atau di Windows shell tidak dapat menjalankannya, jalankan `npm --version`. Versi yang diawali dengan `12` berarti bahwa, kecuali konfigurasi npm Anda mengizinkannya, npm melewati langkah postinstall Claude Code, yang bertugas menempatkan binary. Untuk versi lainnya, periksa [penyebab lain](#native-binary-not-found-after-npm-install).

1072 1066 

1073Untuk memperbaiki instalasi npm 12, beralih ke native installer atau izinkan langkah tersebut:1067Untuk memperbaiki instalasi npm 12, beralihlah ke penginstal native atau izinkan langkah tersebut:

1074 1068 

1075* **Beralih ke native installer**: [instal dengan native installer](https://code.claude.com/docs/id/setup.md#install-claude-code), lalu [hapus instalasi paket npm](https://code.claude.com/docs/id/setup.md#uninstall-with-npm). Pembaruan selanjutnya tidak menggunakan npm, sehingga error tidak muncul kembali.1069* **Beralih ke penginstal native**: [instal dengan penginstal native](https://code.claude.com/docs/id/setup.md#install-claude-code), lalu [hapus instalasi paket npm](https://code.claude.com/docs/id/setup.md#uninstall-with-npm). Pembaruan selanjutnya tidak menggunakan npm, sehingga error tersebut tidak akan muncul kembali.

1076* **Tetap menggunakan npm**: untuk instalasi npm global, tambahkan Claude Code ke `allow-scripts` di konfigurasi npm pengguna Anda. npm kemudian menjalankan install scripts Claude Code pada setiap instalasi dan pembaruan berikutnya, serta dalam instalasi proyek yang `package.json`-nya tidak mengatur `allowScripts`.1070* **Tetap menggunakan npm**: untuk instalasi npm global, tambahkan Claude Code ke `allow-scripts` dalam konfigurasi npm pengguna Anda. npm kemudian menjalankan skrip instalasi Claude Code pada setiap instalasi dan pembaruan berikutnya, serta pada instalasi proyek yang `package.json`-nya tidak mengatur `allowScripts`.

1077 1071 

1078 Gunakan native installer untuk instalasi lokal di `~/.claude/local`. Gunakan juga jika script `package.json` Anda memanggil `npm install` dan Anda menjalankannya dengan pnpm 9, pnpm 10, Yarn 1, atau alat lain yang meneruskan pengaturan ini kepadanya. Di npm 12.1 dan lebih baru, instalasi tersebut dapat gagal dengan `EALLOWSCRIPTS` setelah pengaturan disimpan.1072 Gunakan penginstal native untuk instalasi lokal di `~/.claude/local`. Gunakan juga penginstal native jika skrip `package.json` Anda memanggil `npm install` dan Anda menjalankannya dengan pnpm 9, pnpm 10, Yarn 1, atau alat lain yang meneruskan pengaturan ini kepada skrip tersebut. Di npm 12.1 dan yang lebih baru, instalasi tersebut dapat gagal dengan `EALLOWSCRIPTS` setelah pengaturan disimpan.

1079 1073 

1080 1. Jika `npm --version` mencetak 12.0.x, perbarui npm ke 12.1 atau lebih baru, misalnya dengan `npm install -g npm@latest`. Di 12.0.x, instalasi proyek yang dimulai oleh alat `npx` atau script `npm run` dapat gagal dengan `EALLOWSCRIPTS` setelah pengaturan disimpan.1074 1. Jika `npm --version` mencetak 12.0.x, perbarui npm ke 12.1 atau yang lebih baru, misalnya dengan `npm install -g npm@latest`. Di 12.0.x, instalasi proyek yang dimulai oleh tool `npx` atau skrip `npm run` dapat gagal dengan `EALLOWSCRIPTS` setelah pengaturan disimpan.

1081 1075 

1082 2. Jalankan `npm config get allow-scripts` dan catat paket apa pun yang dicantumkannya, karena perintah berikutnya menggantikan seluruh nilai. Simpan pengaturan dengan paket-paket tersebut di dalam tanda kutip, seperti dalam `"allow-scripts=@anthropic-ai/claude-code,<package>"`:1076 2. Jalankan `npm config get allow-scripts` dan catat paket apa pun yang dicantumkannya, karena perintah berikutnya menggantikan seluruh nilainya. Simpan pengaturan dengan paket-paket tersebut di dalam tanda kutip, seperti pada `"allow-scripts=@anthropic-ai/claude-code,<package>"`:

1083 1077 

1084 ```bash theme={null}1078 ```bash theme={null}

1085 npm config set "allow-scripts=@anthropic-ai/claude-code" --location=user1079 npm config set "allow-scripts=@anthropic-ai/claude-code" --location=user


1088 3. Instal ulang:1082 3. Instal ulang:

1089 1083 

1090 ```bash theme={null}1084 ```bash theme={null}

1091 npm install -g @anthropic-ai/claude-code1085 npm install -g @anthropic-ai/claude-code@latest

1092 ```1086 ```

1093 1087 

1094 Jika perintah ini atau langkah 1 gagal dengan `EACCES`, beralih ke native installer alih-alih menjalankannya ulang dengan `sudo`. Claude Code menjalankan npm tanpa `sudo` saat memperbarui dirinya sendiri, sehingga pembaruan otomatis akan gagal dengan cara yang sama.1088 Jika langkah ini atau langkah 1 gagal dengan `EACCES`, beralihlah ke penginstal native alih-alih menjalankannya ulang dengan `sudo`. Claude Code menjalankan npm tanpa `sudo` saat memperbarui dirinya sendiri, sehingga pembaruan otomatis akan gagal dengan cara yang sama.

1095 1089 

1096 4. Jika `claude --version` tidak mencetak nomor versi, periksa [penyebab lain](#native-binary-not-found-after-npm-install).1090 4. Jika `claude --version` tidak mencetak nomor versi, periksa [penyebab lain](#native-binary-not-found-after-npm-install).

1097 1091 

1098 Untuk membatalkan, atur daftar lagi tanpa `@anthropic-ai/claude-code`, atau hapus seluruh daftar dengan `npm config delete allow-scripts --location=user`. Di npm 12, error tersebut akan muncul kembali setelah pembaruan Anda berikutnya.1092 Untuk membatalkan, atur daftar tersebut lagi tanpa `@anthropic-ai/claude-code`, atau hapus seluruh daftar dengan `npm config delete allow-scripts --location=user`. Di npm 12, error tersebut kemudian akan muncul kembali setelah pembaruan Anda berikutnya.

1099 1093 

1100### npm `ENOTEMPTY` error during update or reinstall1094### Error npm `ENOTEMPTY` saat pembaruan atau instalasi ulang

1101 1095 

1102Ketika Anda menjalankan `npm install -g @anthropic-ai/claude-code` di atas instalasi yang ada, npm dapat gagal saat memindahkan direktori paket lama ke samping:1096Ketika Anda menjalankan `npm install -g @anthropic-ai/claude-code@latest` di atas instalasi yang sudah ada, npm dapat gagal saat memindahkan direktori paket lama ke tempat lain:

1103 1097 

1104```text theme={null}1098```text theme={null}

1105npm error code ENOTEMPTY1099npm error code ENOTEMPTY


1110npm error ENOTEMPTY: directory not empty, rename '...'1104npm error ENOTEMPTY: directory not empty, rename '...'

1111```1105```

1112 1106 

1113Baris `npm error path` menyebutkan direktori yang tidak dapat dipindahkan npm. Hapus direktori itu dan direktori `.claude-code-*` sisa apa pun di sebelahnya, yang dapat ditinggalkan oleh eksekusi sebelumnya yang terputus. Perintah di bawah menemukan direktori paket global Anda dengan `npm root -g`; jika direktori yang disebutkan baris `npm error path` tidak berada di bawah direktori yang dicetak `npm root -g`, misalnya karena Anda beralih versi Node dengan nvm, hapus direktori yang disebutkan error sebagai gantinya:1107Baris `npm error path` menyebutkan direktori yang tidak dapat dipindahkan npm. Hapus direktori tersebut beserta direktori `.claude-code-*` sisa di sebelahnya, yang dapat ditinggalkan oleh eksekusi sebelumnya yang terputus. Perintah di bawah menemukan direktori paket global Anda dengan `npm root -g`; jika direktori yang disebutkan baris `npm error path` tidak berada di bawah direktori yang dicetak `npm root -g`, misalnya karena Anda berpindah versi Node dengan nvm, hapus direktori yang disebutkan oleh error tersebut sebagai gantinya:

1114 1108 

1115> [tab] macOS/Linux1109> [tab] macOS/Linux

1116>1110>


1118> rm -rf "$(npm root -g)/@anthropic-ai/claude-code"1112> rm -rf "$(npm root -g)/@anthropic-ai/claude-code"

1119> ```1113> ```

1120>1114>

1121> Kemudian hapus direktori temp sisa apa pun. Jika Zsh mencetak `no matches found`, tidak ada yang perlu dihapus:1115> Kemudian hapus direktori sementara sisa. Jika Zsh mencetak `no matches found`, tidak ada yang perlu dihapus:

1122>1116>

1123> ```bash theme={null}1117> ```bash theme={null}

1124> rm -rf "$(npm root -g)/@anthropic-ai/.claude-code-"*1118> rm -rf "$(npm root -g)/@anthropic-ai/.claude-code-"*


1130> Remove-Item -Recurse -Force "$(npm root -g)/@anthropic-ai/claude-code", "$(npm root -g)/@anthropic-ai/.claude-code-*"1124> Remove-Item -Recurse -Force "$(npm root -g)/@anthropic-ai/claude-code", "$(npm root -g)/@anthropic-ai/.claude-code-*"

1131> ```1125> ```

1132 1126 

1133Kemudian instal ulang. Di npm 12, ikuti [Memperbaiki instalasi npm 12](#fix-an-npm-12-install). Jika tidak, jalankan:1127Kemudian instal ulang. Di npm 12, ikuti [Perbaiki instalasi npm 12](#fix-an-npm-12-install). Jika tidak, jalankan:

1134 1128 

1135```bash theme={null}1129```bash theme={null}

1136npm install -g @anthropic-ai/claude-code1130npm install -g @anthropic-ai/claude-code@latest

1137```1131```

1138 1132 

1139Konfirmasi dengan `claude --version`, yang mencetak nomor versi seperti `2.1.211 (Claude Code)`.1133Konfirmasikan dengan `claude --version`, yang mencetak nomor versi seperti `2.1.211 (Claude Code)`.

1140 1134 

1141## Login and authentication1135## Login and authentication

1142 1136 

Details

152> apk add ripgrep152> apk add ripgrep

153> ```153> ```

154>154>

155> `ripgrep` berada di repositori komunitas Alpine. Jika `apk` melaporkan bahwa paket hilang, lihat [Alpine Linux setup](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions).155> `ripgrep` berada di repositori komunitas Alpine.

156 156 

157> [tab] Arch157> [tab] Arch

158>158>

vs-code.md +10 −0

Details

202 Thinking block yang sudah Anda miliki tetap kosong. Pada respons setelah pemuatan ulang, klik sebuah blok atau tekan `Ctrl+O` untuk memperluas semuanya.202 Thinking block yang sudah Anda miliki tetap kosong. Pada respons setelah pemuatan ulang, klik sebuah blok atau tekan `Ctrl+O` untuk memperluas semuanya.

203* **Input multi-baris**: tekan `Shift+Enter` untuk menambahkan baris baru tanpa mengirim. Ini juga berfungsi di input teks bebas "Other" pada dialog pertanyaan.203* **Input multi-baris**: tekan `Shift+Enter` untuk menambahkan baris baru tanpa mengirim. Ini juga berfungsi di input teks bebas "Other" pada dialog pertanyaan.

204 204 

205### Menggunakan atau menonaktifkan prompt yang disarankan

206 

207Setelah Claude membalas, panel dapat menampilkan prompt berikutnya yang disarankan sebagai teks miring berwarna abu-abu di kotak prompt yang kosong. Setiap saran menggunakan [permintaan latar belakang singkat](https://code.claude.com/docs/id/interactive-mode.md#prompt-suggestions) yang diperhitungkan dalam batas penggunaan paket Anda atau biaya API.

208 

209* **Menggunakan saran**: tekan `Tab` untuk mengubahnya menjadi teks yang dapat diedit, lalu kirimkan. Menekan `Enter` sebelum Anda menerimanya tidak mengirimkan saran tersebut.

210* **Menulis prompt Anda sendiri**: mulailah mengetik, yang akan menyembunyikan saran.

211 

212Untuk menonaktifkan saran, atur [`promptSuggestionEnabled`](https://code.claude.com/docs/id/settings-reference#promptsuggestionenabled) ke `false` di `~/.claude/settings.json`. Anda tidak lagi melihatnya di percakapan baru, atau di percakapan yang terbuka setelah Anda menjalankan **Developer: Reload Window** dari Command Palette. Jika Anda mengatur [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](https://code.claude.com/docs/id/env-vars) ke `true`, ubah menjadi `false` di tempat Anda mengaturnya, atau Anda akan tetap melihat saran.

213 

205### Mereferensikan file dan folder214### Mereferensikan file dan folder

206 215 

207Gunakan @-mention untuk memberikan konteks kepada Claude tentang file atau folder tertentu. Ketika Anda mengetik `@` diikuti nama file atau folder, Claude membaca konten tersebut dan dapat menjawab pertanyaan tentangnya atau membuat perubahan padanya. Claude Code mendukung fuzzy matching, sehingga Anda dapat mengetik sebagian nama untuk menemukan yang Anda perlukan:216Gunakan @-mention untuk memberikan konteks kepada Claude tentang file atau folder tertentu. Ketika Anda mengetik `@` diikuti nama file atau folder, Claude membaca konten tersebut dan dapat menjawab pertanyaan tentangnya atau membuat perubahan padanya. Claude Code mendukung fuzzy matching, sehingga Anda dapat mengetik sebagian nama untuk menemukan yang Anda perlukan:


936| `SSL certificate verification failed` atau `Self-signed certificate detected` | [Kesalahan sertifikat SSL](https://code.claude.com/docs/id/errors.md#ssl-certificate-errors) |945| `SSL certificate verification failed` atau `Self-signed certificate detected` | [Kesalahan sertifikat SSL](https://code.claude.com/docs/id/errors.md#ssl-certificate-errors) |

937| `Dictation error: WebSocket error:` diikuti kesalahan sertifikat seperti `unable to get local issuer certificate`, atau `Remote server is not connected` di tab Web | [Dikte atau tab Web gagal di balik proxy yang melakukan inspeksi TLS](#dictation-or-the-web-tab-fails-behind-a-tls-inspecting-proxy) |946| `Dictation error: WebSocket error:` diikuti kesalahan sertifikat seperti `unable to get local issuer certificate`, atau `Remote server is not connected` di tab Web | [Dikte atau tab Web gagal di balik proxy yang melakukan inspeksi TLS](#dictation-or-the-web-tab-fails-behind-a-tls-inspecting-proxy) |

938| `Claude Code process exited with code 1`, atau kode lain | [Claude Code process exited with code N](https://code.claude.com/docs/id/errors.md#claude-code-process-exited-with-code-n) |947| `Claude Code process exited with code 1`, atau kode lain | [Claude Code process exited with code N](https://code.claude.com/docs/id/errors.md#claude-code-process-exited-with-code-n) |

948| `Claude Code did not finish starting` atau `Subprocess initialization did not complete within 60000ms` | [Subprocess initialization did not complete within 60000ms](https://code.claude.com/docs/id/errors.md#subprocess-initialization-did-not-complete-within-60000ms) |

939| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/id/errors.md#could-not-locate-the-claude-cli-on-path) |949| `Could not locate the Claude CLI on PATH` | [Could not locate the Claude CLI on PATH](https://code.claude.com/docs/id/errors.md#could-not-locate-the-claude-cli-on-path) |

940| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/id/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |950| `The connection to Claude Code ended before this message completed` | [The connection to Claude Code ended before this message completed](https://code.claude.com/docs/id/errors.md#the-connection-to-claude-code-ended-before-this-message-completed) |

941| `The Claude Code program for this computer, the <build> build, could not be found` | [The Claude Code program for this computer could not be found](https://code.claude.com/docs/id/errors.md#the-claude-code-program-for-this-computer-could-not-be-found) |951| `The Claude Code program for this computer, the <build> build, could not be found` | [The Claude Code program for this computer could not be found](https://code.claude.com/docs/id/errors.md#the-claude-code-program-for-this-computer-could-not-be-found) |

workflows.md +0 −2

Details

75| :- | :- |75| :- | :- |

76| `/deep-research <question>` | Menyebarkan pencarian web pada pertanyaan di beberapa sudut, mengambil dan memeriksa silang sumber yang ditemukannya, memilih setiap klaim, dan mengembalikan laporan yang dikutip dengan klaim yang tidak bertahan pemeriksaan silang disaring. Memerlukan [alat WebSearch](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior) tersedia |76| `/deep-research <question>` | Menyebarkan pencarian web pada pertanyaan di beberapa sudut, mengambil dan memeriksa silang sumber yang ditemukannya, memilih setiap klaim, dan mengembalikan laporan yang dikutip dengan klaim yang tidak bertahan pemeriksaan silang disaring. Memerlukan [alat WebSearch](https://code.claude.com/docs/id/tools-reference.md#websearch-tool-behavior) tersedia |

77 77 

78`/deep-research` berjalan hanya ketika Anda menjalankannya.

79 

80[Alur kerja yang Anda simpan](#save-the-workflow-for-reuse) sendiri menjadi perintah dengan cara yang sama dan muncul dalam `/` autocomplete bersama yang bundel.78[Alur kerja yang Anda simpan](#save-the-workflow-for-reuse) sendiri menjadi perintah dengan cara yang sama dan muncul dalam `/` autocomplete bersama yang bundel.

81 79 

82### Tonton run80### Tonton run