SpyBara
Go Premium

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

67 files changed +4,848 −3,308. View all changes and history on the product overview
2026
Fri 2 07:00 Thu 1 23:59

accessibility.md +11 −5

Details

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

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

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

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

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

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

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


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

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

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

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

63 64 

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

65 66 

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

67 

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

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

70 68 

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

72 70 


94 92 

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

96 94 

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

96 Membaca output sebelumnya tanpa kehilangan posisi Anda

97</h3>

98 

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

100 

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

102 

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

98 Melompat antar giliran104 Melompat antar giliran

99</h3>105</h3>

admin-setup.md +22 −1

Details

123 123 

124Tidak ada kontrol ini yang menjangkau sesi di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Di penyedia tersebut, gunakan pengaturan terkelola sebagai gantinya: `availableModels` untuk pembatasan, `model` untuk default, dan [`maxEffortLevel`](/docs/id/settings-reference#maxeffortlevel) untuk batas upaya.124Tidak ada kontrol ini yang menjangkau sesi di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau [Claude Platform on AWS](/docs/id/claude-platform-on-aws). Di penyedia tersebut, gunakan pengaturan terkelola sebagai gantinya: `availableModels` untuk pembatasan, `model` untuk default, dan [`maxEffortLevel`](/docs/id/settings-reference#maxeffortlevel) untuk batas upaya.

125 125 

126[Cloud sessions](/docs/id/claude-code-on-the-web) memiliki permukaan admin sendiri: di halaman Cloud environments di pengaturan admin, Pemilik membuat [organization-shared environments](/docs/id/cloud-environments#organization-shared-environments) yang menetapkan [network access level](/docs/id/cloud-environments#network-access), variabel lingkungan, dan skrip setup untuk sesi cloud anggota. Pemilik memilih environment default organisasi secara terpisah, di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).126[Cloud sessions](/docs/id/claude-code-on-the-web) memiliki surface admin sendiri di claude.ai:

127 

128* **Halaman Cloud environments**: Pemilik membuat [organization-shared environments](/docs/id/cloud-environments#organization-shared-environments) yang menetapkan [network access level](/docs/id/cloud-environments#network-access), environment variable, dan skrip setup untuk sesi cloud anggota.

129* **Environment default**: Pemilik memilih environment default organisasi secara terpisah, di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

130* **Halaman GitHub**: lihat [Akun GitHub yang terhubung](#connected-github-accounts) untuk akun GitHub yang ditautkan ke organisasi Anda.

127 131 

128Aturan izin dan sandboxing mencakup lapisan berbeda. Menolak WebFetch memblokir alat fetch Claude, tetapi jika Bash diizinkan, `curl` dan `wget` masih dapat menjangkau URL apa pun. Sandboxing menutup celah itu dengan daftar allowlist domain jaringan yang diberlakukan di tingkat OS.132Aturan izin dan sandboxing mencakup lapisan berbeda. Menolak WebFetch memblokir alat fetch Claude, tetapi jika Bash diizinkan, `curl` dan `wget` masih dapat menjangkau URL apa pun. Sandboxing menutup celah itu dengan daftar allowlist domain jaringan yang diberlakukan di tingkat OS.

129 133 

130Untuk model ancaman yang dilindungi kontrol ini, lihat [Security](/docs/id/security).134Untuk model ancaman yang dilindungi kontrol ini, lihat [Security](/docs/id/security).

131 135 

136<h3 id="connected-github-accounts">

137 Akun GitHub yang terhubung

138</h3>

139 

140Pada paket Team dan Enterprise, [**Admin settings > GitHub**](https://claude.ai/admin-settings/github) mencantumkan organisasi GitHub dan akun pribadi yang ditautkan ke organisasi Claude Anda melalui [Claude GitHub App](https://github.com/apps/claude). Claude Code, [Claude Tag](https://claude.com/docs/claude-tag/admins/configure-github), dan Claude Security berbagi daftar tersebut. Membukanya memerlukan peran admin di organisasi Claude Anda.

141 

142Admin atau anggota dapat menautkan akun:

143 

144* **Koneksi admin**: admin mengklik **Connect** di halaman tersebut dan menginstal Claude GitHub App pada organisasi GitHub. Menautkan organisasi dengan cara ini memerlukan seseorang yang merupakan pemilik organisasi GitHub sekaligus admin organisasi Claude Anda.

145* **Koneksi anggota**: ketika anggota menghubungkan akun GitHub mereka ke Claude, misalnya saat [menyiapkan sesi cloud](/docs/id/web-quickstart#connect-github), Claude menautkan akun GitHub yang dimiliki anggota tersebut tempat Claude GitHub App sudah terinstal. Itu dapat mencakup akun pribadi mereka dan organisasi GitHub yang mereka miliki.

146 

147Baris yang ditandai **Not linked** berasal dari sign-in GitHub Anda sendiri. Itu adalah akun yang dapat Anda lihat di GitHub tempat Claude GitHub App terinstal.

148 

149Untuk melepas tautan akun dari organisasi Claude Anda, buka menu barisnya dan pilih **Unlink from this workspace**. Melepas tautan membiarkan Claude GitHub App tetap terinstal di GitHub, dan akun tersebut ditautkan kembali saat salah satu pemiliknya menghubungkan GitHub ke Claude berikutnya. Agar akun tidak ditautkan kembali, hapus instalasi Claude GitHub App dari akun tersebut di GitHub.

150 

151Pada paket Enterprise, jenis aktivitas [Compliance API](https://platform.claude.com/docs/en/api/compliance/activities/list) untuk penautan dan pelepasan tautan adalah `github_app_installation_linked` dan `github_app_installation_unlinked`.

152 

132<h2 id="set-up-usage-visibility">153<h2 id="set-up-usage-visibility">

133 Siapkan visibilitas penggunaan154 Siapkan visibilitas penggunaan

134</h2>155</h2>

Details

325 325 

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

327 327 

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

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

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

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

Details

261 261 

262* **Top-level fields** diterima pada setiap event: `systemMessage` menampilkan pesan kepada pengguna, dan `continue` (`continue_` di Python) menentukan apakah agent terus berjalan setelah hook ini. Beberapa events membuangnya atau mengirimnya ke tempat lain. Setiap [bagian event](/docs/id/hooks#hook-events) di halaman hooks mengatakan di mana mereka mendarat.262* **Top-level fields** diterima pada setiap event: `systemMessage` menampilkan pesan kepada pengguna, dan `continue` (`continue_` di Python) menentukan apakah agent terus berjalan setelah hook ini. Beberapa events membuangnya atau mengirimnya ke tempat lain. Setiap [bagian event](/docs/id/hooks#hook-events) di halaman hooks mengatakan di mana mereka mendarat.

263* **`hookSpecificOutput`** mengontrol operasi saat ini. Fields yang Anda tetapkan di dalamnya tergantung pada tipe hook event:263* **`hookSpecificOutput`** mengontrol operasi saat ini. Fields yang Anda tetapkan di dalamnya tergantung pada tipe hook event:

264 * Untuk hooks `PreToolUse`, di sinilah Anda menetapkan `permissionDecision` (`"allow"`, `"deny"`, `"ask"`, atau `"defer"`), `permissionDecisionReason`, dan `updatedInput`. Jika Anda mengembalikan `"defer"`, query berakhir sehingga Anda dapat [melanjutkannya nanti](/docs/id/hooks#defer-a-tool-call-for-later).264 * Untuk hooks `PreToolUse`, di sinilah Anda menetapkan `permissionDecision` (`"allow"`, `"deny"`, `"ask"`, atau `"defer"`), `permissionDecisionReason`, dan `updatedInput`. Jika Anda mengembalikan `"defer"`, giliran berakhir dengan pesan hasil yang `stop_reason`-nya adalah `"tool_deferred"`, sehingga Anda dapat [melanjutkan panggilan tersebut nanti](/docs/id/hooks#defer-a-tool-call-for-later).

265 * Untuk hooks `PostToolUse`, Anda dapat menetapkan `additionalContext` untuk menambahkan informasi ke hasil tool. Untuk mengganti output tool sebelum Claude melihatnya, tetapkan `updatedToolOutput`, yang bekerja untuk tool apa pun di kedua SDK. Field `updatedMCPToolOutput` yang lebih lama mengganti output MCP tool saja dan sudah usang.265 * Untuk hooks `PostToolUse`, Anda dapat menetapkan `additionalContext` untuk menambahkan informasi ke hasil tool. Untuk mengganti output tool sebelum Claude melihatnya, tetapkan `updatedToolOutput`, yang bekerja untuk tool apa pun di kedua SDK. Field `updatedMCPToolOutput` yang lebih lama mengganti output MCP tool saja dan sudah usang.

266 * Di TypeScript SDK, callback `PostToolUse` juga dapat mengembalikan `classifierContext`, catatan singkat tentang hasil pemanggilan tool untuk [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) permission classifier. Karena callback Anda berjalan dalam proses aplikasi Anda sendiri, classifier dapat menimbang pernyataan pengguna yang Anda sampaikan dalam catatan sebagai intent pengguna. Field memerlukan TypeScript Agent SDK v0.3.236 atau lebih baru. [Annotate a result for the auto mode classifier](/docs/id/hooks#annotate-a-result-for-the-auto-mode-classifier) mencakup batas panjang, aturan synchronous-only, dan apa yang tidak boleh dimasukkan dalam catatan.266 * Di TypeScript SDK, callback `PostToolUse` juga dapat mengembalikan `classifierContext`, catatan singkat tentang hasil pemanggilan tool untuk [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) permission classifier. Karena callback Anda berjalan dalam proses aplikasi Anda sendiri, classifier dapat menimbang pernyataan pengguna yang Anda sampaikan dalam catatan sebagai intent pengguna. Field memerlukan TypeScript Agent SDK v0.3.236 atau lebih baru. [Annotate a result for the auto mode classifier](/docs/id/hooks#annotate-a-result-for-the-auto-mode-classifier) mencakup batas panjang, aturan synchronous-only, dan apa yang tidak boleh dimasukkan dalam catatan.

267 267 

Details

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

1489 1489 

1490<Warning>1490<Warning>

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

1492</Warning>1492</Warning>

1493 1493 

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

Details

92 Sandbox runtime92 Sandbox runtime

93</h3>93</h3>

94 94 

95Untuk isolasi ringan tanpa kontainer, [sandbox-runtime](https://github.com/anthropic-experimental/sandbox-runtime) memberlakukan pembatasan filesystem dan jaringan di tingkat OS.95Untuk isolasi ringan tanpa kontainer, [sandbox-runtime](https://github.com/anthropics/sandbox-runtime) memberlakukan pembatasan filesystem dan jaringan di tingkat OS.

96 96 

97Keuntungan utama adalah kesederhanaan: tidak ada konfigurasi Docker, citra kontainer, atau setup jaringan yang diperlukan. Proxy dan pembatasan filesystem sudah tertanam.97Keuntungan utama adalah kesederhanaan: tidak ada konfigurasi Docker, citra kontainer, atau setup jaringan yang diperlukan. Proxy dan pembatasan filesystem sudah tertanam.

98 98 


164 164 

165Dengan `--network none`, kontainer tidak memiliki antarmuka jaringan sama sekali. Satu-satunya cara bagi agen untuk menjangkau dunia luar adalah melalui soket Unix yang dipasang, yang terhubung ke proxy yang berjalan di host. Proxy ini dapat memberlakukan daftar izin domain, menyuntikkan kredensial, dan mencatat semua lalu lintas.165Dengan `--network none`, kontainer tidak memiliki antarmuka jaringan sama sekali. Satu-satunya cara bagi agen untuk menjangkau dunia luar adalah melalui soket Unix yang dipasang, yang terhubung ke proxy yang berjalan di host. Proxy ini dapat memberlakukan daftar izin domain, menyuntikkan kredensial, dan mencatat semua lalu lintas.

166 166 

167Ini adalah arsitektur yang sama yang digunakan oleh [sandbox-runtime](https://github.com/anthropic-experimental/sandbox-runtime). Bahkan jika agen dikompromikan melalui prompt injection, itu tidak dapat mengeksfiltrasi data ke server arbitrer. Itu hanya dapat berkomunikasi melalui proxy, yang mengontrol domain mana yang dapat dijangkau. Untuk detail lebih lanjut, lihat [posting blog sandboxing Claude Code](https://www.anthropic.com/engineering/claude-code-sandboxing).167Ini adalah arsitektur yang sama yang digunakan oleh [sandbox-runtime](https://github.com/anthropics/sandbox-runtime). Bahkan jika agent dikompromikan melalui prompt injection, agent tidak dapat mengeksfiltrasi data ke server arbitrer. Agent hanya dapat berkomunikasi melalui proxy, yang mengontrol domain mana yang dapat dijangkau. Untuk detail lebih lanjut, lihat [posting blog sandboxing Claude Code](https://www.anthropic.com/engineering/claude-code-sandboxing).

168 168 

169**Opsi pengerasan tambahan:**169**Opsi pengerasan tambahan:**

170 170 


385* [Dokumentasi keamanan Claude Code](/docs/id/security)385* [Dokumentasi keamanan Claude Code](/docs/id/security)

386* [Hosting Agent SDK](/docs/id/agent-sdk/hosting)386* [Hosting Agent SDK](/docs/id/agent-sdk/hosting)

387* [Menangani izin](/docs/id/agent-sdk/permissions)387* [Menangani izin](/docs/id/agent-sdk/permissions)

388* [Sandbox runtime](https://github.com/anthropic-experimental/sandbox-runtime)388* [Sandbox runtime](https://github.com/anthropics/sandbox-runtime)

389* [The Lethal Trifecta for AI Agents](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/)389* [The Lethal Trifecta for AI Agents](https://simonwillison.net/2025/Jun/16/the-lethal-trifecta/)

390* [OWASP Top 10 for LLM Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)390* [OWASP Top 10 for LLM Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)

391* [Docker Security Best Practices](https://docs.docker.com/engine/security/)391* [Docker Security Best Practices](https://docs.docker.com/engine/security/)

Details

378</h2>378</h2>

379 379 

380<Note>380<Note>

381 Untuk skills proyek dan pribadi, Claude Code menerapkan bidang frontmatter [`allowed-tools`](/docs/id/skills#pre-approve-tools-for-a-skill) dalam sesi SDK. Anda juga dapat pra-menyetujui alat untuk skills ini melalui opsi `allowedTools` (`allowed_tools` di Python) dalam konfigurasi query Anda. Skills [disinkronkan dari claude.ai](/docs/id/skills#how-claude-code-handles-the-frontmatter-of-a-synced-skill) mengikuti aturan frontmatter mereka sendiri.381 Dalam sesi SDK, Anda dapat pra-menyetujui tool untuk skill proyek atau pribadi dengan frontmatter [`allowed-tools`](/docs/id/skills#pre-approve-tools-for-a-skill) milik skill tersebut atau dengan opsi `allowedTools` (`allowed_tools` di Python) dalam konfigurasi query Anda. Jika organisasi Anda menetapkan [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) dalam pengaturan terkelola, Claude Code mengabaikan keduanya. Skills [disinkronkan dari claude.ai](/docs/id/skills#how-claude-code-handles-the-frontmatter-of-a-synced-skill) mengikuti aturan frontmatter mereka sendiri.

382</Note>382</Note>

383 383 

384Skills berjalan dengan alat sesi. Contoh di bawah pra-menyetujui `Read`, `Grep`, dan `Glob` dengan `allowedTools` (`allowed_tools` di Python), jadi Claude dapat memeriksa file saat menjalankan [skill security-check](#create-and-dispatch-your-first-skill) tanpa berhenti untuk persetujuan:384Skills berjalan dengan alat sesi. Contoh di bawah pra-menyetujui `Read`, `Grep`, dan `Glob` dengan `allowedTools` (`allowed_tools` di Python), jadi Claude dapat memeriksa file saat menjalankan [skill security-check](#create-and-dispatch-your-first-skill) tanpa berhenti untuk persetujuan:

Details

166 166 

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

168 168 

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

170 

169<Note>171<Note>

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

171 173 

Details

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

205 205 

206<Note>206<Note>

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

208 208 

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

210 210 

Details

1551* `'model_not_found'`: model yang dipilih tidak ada atau tidak tersedia untuk akun atau deployment Anda1551* `'model_not_found'`: model yang dipilih tidak ada atau tidak tersedia untuk akun atau deployment Anda

1552* `'overloaded'`: API mengembalikan 529 karena server mencapai kapasitas, berbeda dengan `'rate_limit'`, yang merupakan 429 terhadap kuota Anda1552* `'overloaded'`: API mengembalikan 529 karena server mencapai kapasitas, berbeda dengan `'rate_limit'`, yang merupakan 429 terhadap kuota Anda

1553* `'account_on_hold'`: [akun Anda sedang ditahan](/docs/id/errors#your-account-is-on-hold)1553* `'account_on_hold'`: [akun Anda sedang ditahan](/docs/id/errors#your-account-is-on-hold)

1554* `'cloud_credential_error'`: Claude Code tidak dapat memperoleh kredensial AWS atau Google Cloud yang dapat digunakan di mesin tempat ia berjalan, sehingga tidak ada permintaan yang mencapai penyedia cloud. Penyebab umum adalah masuk cloud yang kedaluwarsa atau tidak pernah selesai di mesin itu, meskipun layanan kredensial yang singkat tidak dapat dijangkau melaporkan nilai yang sama. Lihat [Tidak dapat memuat kredensial AWS atau Google Cloud](/docs/id/errors#could-not-load-aws-or-google-cloud-credentials). Memerlukan TypeScript Agent SDK v0.3.267 atau lebih baru, yang menggabungkan Claude Code v2.1.2671554* `'cloud_credential_error'`: Claude Code tidak dapat memperoleh kredensial AWS atau Google Cloud yang dapat digunakan di mesin tempat ia berjalan, sehingga tidak ada permintaan yang mencapai penyedia cloud. Penyebab umum adalah masuk cloud yang kedaluwarsa atau tidak pernah selesai di mesin itu, meskipun layanan kredensial yang sesaat tidak dapat dijangkau melaporkan nilai yang sama. Lihat [Tidak dapat memuat kredensial AWS atau Google Cloud](/docs/id/errors#could-not-load-aws-or-google-cloud-credentials). Memerlukan TypeScript Agent SDK v0.3.267 atau lebih baru, yang menggabungkan Claude Code v2.1.267

1555 1555 

1556`aborted` adalah `true` ketika gangguan atau pembatalan memotong pesan asisten sebelum aliran selesai: pesan tidak memiliki `stop_reason` dan konten mungkin berakhir di tengah kata. Bidang ini tidak ada pada pesan yang diselesaikan secara normal. Ini memerlukan Agent SDK v0.3.214 atau lebih baru.1556`aborted` adalah `true` ketika gangguan atau pembatalan memotong pesan asisten sebelum aliran selesai: pesan tidak memiliki `stop_reason` dan konten mungkin berakhir di tengah kata. Bidang ini tidak ada pada pesan yang diselesaikan secara normal. Ini memerlukan Agent SDK v0.3.214 atau lebih baru.

1557 1557 

1558Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada pesan asisten pertama giliran, di bawah kondisi dalam [`user_message_uuid`](#user_message_uuid). Ketika Claude Code menjalankan kembali giliran yang gangguan interupsi, pesan asisten re-run yang membawa bidang itu juga membawa [`resume_reason`](#resume_reason).1558Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada pesan asisten pertama giliran, di bawah kondisi dalam [`user_message_uuid`](#user_message_uuid). Ketika Claude Code menjalankan kembali giliran yang terinterupsi oleh restart, pesan asisten re-run yang membawa bidang itu juga membawa [`resume_reason`](#resume_reason).

1559 1559 

1560`timestamp` adalah waktu ISO 8601 ketika konten pesan selesai dihasilkan pada proses yang menghasilkannya. Nilai berasal dari jam mesin itu, jadi gunakan hanya untuk tampilan dan jangan urutkan pesan berdasarkannya. Satu giliran API dapat menghasilkan beberapa pesan asisten yang berbagi `message.id`, masing-masing dengan `timestamp` sendiri. Ketika bidang tidak ada, kembali ke waktu Anda menerima pesan.1560`timestamp` adalah waktu ISO 8601 ketika konten pesan selesai dihasilkan pada proses yang menghasilkannya. Nilai berasal dari jam mesin itu, jadi gunakan hanya untuk tampilan dan jangan urutkan pesan berdasarkannya. Satu giliran API dapat menghasilkan beberapa pesan asisten yang berbagi `message.id`, masing-masing dengan `timestamp` sendiri. Ketika bidang tidak ada, kembali ke waktu Anda menerima pesan.

1561 1561 

1562`context_usage` adalah salinan terstruktur dari laporan `/context`, diketik sebagai [`SDKContextUsage`](#sdkcontextusage), dan memerlukan Agent SDK v0.3.232 atau lebih baru. Ketika Anda mengirim `/context` sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang `message.content` menyimpan tabel markdown, dan melampirkan `context_usage` ke pesan yang sama. Claude Code tidak menetapkan bidang pada pesan asisten lain mana pun, dan versi sebelumnya mengirimkan tabel `/context` tanpanya, jadi baca rincian dari bidang ketika ada dan kembali ke teks markdown ketika tidak.1562`context_usage` adalah salinan terstruktur dari laporan `/context`, diketik sebagai [`SDKContextUsage`](#sdkcontextusage), dan memerlukan Agent SDK v0.3.232 atau lebih baru. Ketika Anda mengirim `/context` sebagai prompt, Claude Code mengirimkan laporan sebagai pesan asisten yang `message.content`-nya menyimpan tabel markdown, dan melampirkan `context_usage` ke pesan yang sama. Claude Code tidak menetapkan bidang pada pesan asisten lain mana pun, dan versi sebelumnya mengirimkan tabel `/context` tanpanya, jadi baca rincian dari bidang ketika ada dan kembali ke teks markdown ketika tidak.

1563 1563 

1564<h3 id="sdkusermessage">1564<h3 id="sdkusermessage">

1565 `SDKUserMessage`1565 `SDKUserMessage`


1591* `shouldQuery`: atur ke `false` untuk menambahkan pesan ke transkrip tanpa memicu giliran asisten. Pesan ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu giliran. Gunakan ini untuk menyuntikkan konteks, seperti output perintah yang Anda jalankan di luar pita, tanpa menghabiskan panggilan model.1591* `shouldQuery`: atur ke `false` untuk menambahkan pesan ke transkrip tanpa memicu giliran asisten. Pesan ditahan dan digabungkan ke pesan pengguna berikutnya yang memicu giliran. Gunakan ini untuk menyuntikkan konteks, seperti output perintah yang Anda jalankan di luar pita, tanpa menghabiskan panggilan model.

1592* `client_composed`: atur ke `true` untuk membuat Claude Code mengirimkan teks pesan seperti yang ditulis. Claude Code kemudian tidak memperluas penyebutan `@path` atau [`@server:resource`](/docs/id/mcp#use-mcp-resources), dan tidak menjalankan teks yang dimulai dengan `/` sebagai perintah. Sementara opsi [`verbatimPrompts`](#options) aktif, SDK menetapkan bidang pada setiap pesan. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru dan Claude Code v2.1.248 atau lebih baru.1592* `client_composed`: atur ke `true` untuk membuat Claude Code mengirimkan teks pesan seperti yang ditulis. Claude Code kemudian tidak memperluas penyebutan `@path` atau [`@server:resource`](/docs/id/mcp#use-mcp-resources), dan tidak menjalankan teks yang dimulai dengan `/` sebagai perintah. Sementara opsi [`verbatimPrompts`](#options) aktif, SDK menetapkan bidang pada setiap pesan. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru dan Claude Code v2.1.248 atau lebih baru.

1593 1593 

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

1595 1595 

1596Untuk alat `Agent`, `tool_use_result` adalah [`AgentOutput`](#agent-2). Pada hasil `completed`, `content` menyimpan laporan subagen tanpa ID agen dan trailer penggunaan yang Claude Code tambahkan ke teks `tool_result`, jadi render dari `tool_use_result` daripada mengurai teks itu.1596Untuk tool `Agent`, `tool_use_result` adalah [`AgentOutput`](#agent-2). Render dari objek ini daripada mengurai teks `tool_result`. `content` pada hasil `completed` menyimpan laporan subagent, atau, untuk subagent yang laporannya melewati panggilan tool `SubagentHandback`, catatan singkat tentang penyerahan itu sebagai pengganti laporan. Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) pada Claude Code v2.1.271 atau lebih baru, setiap subagent yang menghasilkan hasil `completed` melapor dengan cara itu kecuali jika ia adalah [fork](/docs/id/sub-agents#fork-the-current-conversation), dan Claude menerima laporan sebagai pesan terpisah dari subagent.

1597 1597 

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

1599 1599 

1600Atur `inline_pastes` untuk memberi tahu Claude Code bagian mana dari `message.content` yang pengguna tempel daripada ketik, satu string per tempel. Teks prompt tetap di tempat pengguna meletakkannya. Claude Code dapat membungkus setiap tempel yang tercantum dalam tag `<pasted_content>` di mana ia berdiri, jadi Claude dapat membedakan materi yang ditempel dari kata-kata pengguna sendiri. Hanya tempel dalam blok teks terakhir prompt yang dibungkus. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.1600Atur `inline_pastes` untuk memberi tahu Claude Code bagian mana dari `message.content` yang pengguna tempel daripada ketik, satu string per tempel. Teks prompt tetap di tempat pengguna meletakkannya. Claude Code dapat membungkus setiap tempel yang tercantum dalam tag `<pasted_content>` di tempatnya berada, jadi Claude dapat membedakan materi yang ditempel dari kata-kata pengguna sendiri. Hanya tempel dalam blok teks terakhir prompt yang dibungkus. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.

1601 1601 

1602<h3 id="sdkusermessagereplay">1602<h3 id="sdkusermessagereplay">

1603 `SDKUserMessageReplay`1603 `SDKUserMessageReplay`


1620};1620};

1621```1621```

1622 1622 

1623Giliran pengguna yang disuntikkan dari luar sesi, yang [`origin`](#sdkmessageorigin) jenisnya adalah `peer` atau `channel`, mencapai aliran sebagai pemutaran ulang apakah itu disampaikan selama giliran aktif atau memulai giliran baru saat sesi menganggur. Sebelum v2.1.207, giliran yang disuntikkan disampaikan saat sesi menganggur tidak menghasilkan pesan pada aliran dan hanya muncul ketika Anda membaca ulang transkrip.1623Giliran pengguna yang disuntikkan dari luar sesi, yang jenis [`origin`](#sdkmessageorigin)-nya adalah `peer` atau `channel`, mencapai aliran sebagai pemutaran ulang baik itu disampaikan selama giliran aktif maupun memulai giliran baru saat sesi menganggur. Sebelum v2.1.207, giliran yang disuntikkan yang disampaikan saat sesi menganggur tidak menghasilkan pesan pada aliran dan hanya muncul ketika Anda membaca ulang transkrip.

1624 1624 

1625<h3 id="sdkresultmessage">1625<h3 id="sdkresultmessage">

1626 `SDKResultMessage`1626 `SDKResultMessage`


1705* `ttft_stream_ms`: waktu dalam milidetik hingga acara aliran `message_start` pertama, ketika aliran respons terbuka. Lebih rendah dari `ttft_ms`; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada lengan kesuksesan.1705* `ttft_stream_ms`: waktu dalam milidetik hingga acara aliran `message_start` pertama, ketika aliran respons terbuka. Lebih rendah dari `ttft_ms`; celah antara keduanya adalah waktu yang dihabiskan untuk streaming pesan pertama. Hadir hanya pada lengan kesuksesan.

1706* `user_message_uuid`: `uuid` dari pesan yang Anda kirim yang dijawab giliran ini. Lihat [`user_message_uuid`](#user_message_uuid) untuk hasil mana yang membawanya.1706* `user_message_uuid`: `uuid` dari pesan yang Anda kirim yang dijawab giliran ini. Lihat [`user_message_uuid`](#user_message_uuid) untuk hasil mana yang membawanya.

1707* `user_message_uuids`: `uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Lihat [`user_message_uuids`](#user_message_uuids).1707* `user_message_uuids`: `uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Lihat [`user_message_uuids`](#user_message_uuids).

1708* `resume_reason`: mengapa Claude Code menjalankan kembali giliran ini setelah gangguan interupsi. Hadir pada kedua lengan, dan hanya pada re-run seperti itu. Lihat [`resume_reason`](#resume_reason).1708* `resume_reason`: mengapa Claude Code menjalankan kembali giliran ini setelah restart menginterupsinya. Hadir pada kedua lengan, dan hanya pada re-run seperti itu. Lihat [`resume_reason`](#resume_reason).

1709* `local_command`: nama perintah yang dijalankan giliran, pada hasil kesuksesan giliran yang perintah selesai tanpa memasuki loop agen, seperti `/compact`. Nama dilipat menjadi huruf kecil dan garis bawah, jadi `/reload-plugins` melaporkan `reload_plugins`. Perintah yang server MCP sediakan, dan `/mcp` bawaan, melaporkan `mcp`. Perintah yang Anda tentukan sendiri melaporkan `custom`. Argumen tidak pernah disertakan. Tidak ada pada setiap giliran yang memasuki loop agen dan pada pengiriman yang tidak menjalankan perintah. Memerlukan Agent SDK v0.3.268 atau lebih baru.1709* `local_command`: nama perintah yang dijalankan giliran, pada hasil kesuksesan giliran yang diselesaikan oleh perintah tanpa memasuki loop agent, seperti `/compact`. Nama dilipat menjadi huruf kecil dan garis bawah, jadi `/reload-plugins` melaporkan `reload_plugins`. Perintah yang disediakan server MCP, dan `/mcp` bawaan, melaporkan `mcp`. Perintah yang Anda tentukan sendiri melaporkan `custom`. Argumen tidak pernah disertakan. Tidak ada pada setiap giliran yang memasuki loop agent dan pada pengiriman yang tidak menjalankan perintah. Memerlukan Agent SDK v0.3.268 atau lebih baru.

1710* `request_sent_wall_ms`: epoch milidetik di mana Claude Code mengirim permintaan API, untuk bergabung dengan stempel waktu sisi server. Hadir hanya bersama dengan [`user_message_uuid`](#user_message_uuid), pada hasil kesuksesan dengan `is_error` false yang gilirannya mengirim permintaan API.1710* `request_sent_wall_ms`: epoch milidetik di mana Claude Code mengirim permintaan API, untuk penggabungan dengan stempel waktu sisi server. Hadir hanya bersama dengan [`user_message_uuid`](#user_message_uuid), pada hasil kesuksesan dengan `is_error` false yang gilirannya mengirim permintaan API.

1711* `first_content_frame_ms`: waktu dalam milidetik hingga acara aliran `content_block_start` atau `content_block_delta` pertama, menghitung blok pemikiran sebagai konten. Hadir pada lengan kesuksesan hanya, ketika `is_error` adalah false. Memerlukan Agent SDK v0.3.260 atau lebih baru.1711* `first_content_frame_ms`: waktu dalam milidetik hingga acara aliran `content_block_start` atau `content_block_delta` pertama, menghitung thinking block sebagai konten. Hadir hanya pada lengan kesuksesan, ketika `is_error` adalah false. Memerlukan Agent SDK v0.3.260 atau lebih baru.

1712* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: waktu untuk mengunggah acara aliran pertama giliran. Claude Code merekamnya hanya dalam sesi yang dialirkan ke claude.ai, seperti [sesi cloud](/docs/id/claude-code-on-the-web), dan hasil yang `query()` hasilkan tidak membawanya. Memerlukan Agent SDK v0.3.260 atau lebih baru.1712* `first_stream_post_ms`, `first_stream_post_ack_ms`, `first_stream_post_wall_ms`: waktu untuk mengunggah acara aliran pertama giliran. Claude Code merekamnya hanya dalam sesi yang dialirkan ke claude.ai, seperti [sesi cloud](/docs/id/claude-code-on-the-web), dan hasil yang `query()` hasilkan tidak membawanya. Memerlukan Agent SDK v0.3.260 atau lebih baru.

1713* `usage`: loop agen utama saja. Mengecualikan panggilan subagen dan model tambahan, dan per-giliran dalam sesi input streaming. Lebih suka `modelUsage` untuk akuntansi token/biaya.1713* `usage`: loop agent utama saja. Mengecualikan panggilan subagent dan model tambahan, dan per-giliran dalam sesi input streaming. Lebih baik gunakan `modelUsage` untuk akuntansi token/biaya.

1714* `modelUsage`: total per-model untuk setiap panggilan model yang dibuat melalui pipeline kueri selama panggilan `query()` ini, termasuk loop utama, subagen, dan panggilan internal seperti pemadatan dan agen Workflow. Panggilan pembantu di luar pipeline itu, seperti pengklasifikasi izin dan permintaan penghitungan token, dikecualikan. Panggilan yang melanjutkan sesi juga menghitung [total per-model yang dipulihkan dari panggilan sebelumnya sesi](/docs/id/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Dalam sesi input streaming total bersifat kumulatif di seluruh giliran, jadi baca hasil terbaru daripada menjumlahkan di seluruh hasil. Lihat [Lacak biaya dalam mode input streaming](/docs/id/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) untuk pengaturan ulang dan [Pulihkan total setelah kerusakan sesi](/docs/id/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) untuk hasil yang dinolkan.1714* `modelUsage`: total per-model untuk setiap panggilan model yang dibuat melalui pipeline kueri selama panggilan `query()` ini, termasuk loop utama, subagent, dan panggilan internal seperti compaction dan agent Workflow. Panggilan pembantu di luar pipeline itu, seperti pengklasifikasi izin dan permintaan penghitungan token, dikecualikan. Panggilan yang melanjutkan sesi juga menghitung [total per-model yang dipulihkan dari panggilan sebelumnya sesi](/docs/id/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Dalam sesi input streaming total bersifat kumulatif di seluruh giliran, jadi baca hasil terbaru daripada menjumlahkan di seluruh hasil. Lihat [Lacak biaya dalam mode input streaming](/docs/id/agent-sdk/cost-tracking#track-costs-in-streaming-input-mode) untuk pengaturan ulang dan [Pulihkan total setelah kerusakan sesi](/docs/id/agent-sdk/cost-tracking#recover-totals-after-a-session-crash) untuk hasil yang dinolkan.

1715* `total_cost_usd`: biaya perkiraan kumulatif dalam USD, mencakup panggilan yang sama dengan `modelUsage` dan pengaturan ulang pada titik yang sama. Panggilan yang melanjutkan sesi juga menghitung [total yang dipulihkan dari panggilan sebelumnya sesi](/docs/id/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Ini adalah perkiraan, bukan pernyataan penagihan. Lihat [Lacak biaya dan penggunaan](/docs/id/agent-sdk/cost-tracking) untuk peringatan akurasi.1715* `total_cost_usd`: biaya perkiraan kumulatif dalam USD, mencakup panggilan yang sama dengan `modelUsage` dan diatur ulang pada titik yang sama. Panggilan yang melanjutkan sesi juga menghitung [total yang dipulihkan dari panggilan sebelumnya sesi](/docs/id/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls). Ini adalah perkiraan, bukan pernyataan penagihan. Lihat [Lacak biaya dan penggunaan](/docs/id/agent-sdk/cost-tracking) untuk peringatan akurasi.

1716* `queued_turn_count`: jumlah pesan yang Anda kirim dengan `origin: { kind: "human" }` yang masih menunggu ketika Claude Code menghasilkan hasil. Lihat [`queued_turn_count`](#queued_turn_count) untuk apa yang `0` dan bidang yang tidak ada katakan.1716* `queued_turn_count`: jumlah pesan yang Anda kirim dengan `origin: { kind: "human" }` yang masih menunggu ketika Claude Code menghasilkan hasil. Lihat [`queued_turn_count`](#queued_turn_count) untuk apa yang `0` dan bidang yang tidak ada katakan.

1717* `result_index`: di mana hasil ini jatuh dalam urutan pengiriman jalankan, menghitung dari 0 di seluruh setiap hasil yang ditulis proses. Hadir pada kedua lengan. Hasil yang penulisannya gagal masih menggunakan nomornya, jadi celah dalam urutan berarti hasil hilang. Memerlukan Agent SDK v0.3.268 atau lebih baru.1717* `result_index`: posisi hasil ini dalam urutan pengiriman run, menghitung dari 0 di seluruh setiap hasil yang ditulis proses. Hadir pada kedua lengan. Hasil yang penulisannya gagal masih menggunakan nomornya, jadi celah dalam urutan berarti hasil hilang. Memerlukan Agent SDK v0.3.268 atau lebih baru.

1718* `startup_failure_reason`: mengapa Claude Code menolak untuk memulai, pada hasil `error_during_execution` yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Lihat [`startup_failure_reason`](#startup_failure_reason) untuk nilai-nilai dan kegagalan mana yang membawanya. Memerlukan Agent SDK v0.3.274 atau lebih baru.1718* `startup_failure_reason`: mengapa Claude Code menolak untuk memulai, pada hasil `error_during_execution` yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Lihat [`startup_failure_reason`](#startup_failure_reason) untuk nilai-nilai dan kegagalan mana yang membawanya. Memerlukan Agent SDK v0.3.274 atau lebih baru.

1719* `terminal_reason`: mengapa loop berakhir. Salah satu dari `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, atau `"turn_setup_failed"`.1719* `terminal_reason`: mengapa loop berakhir. Salah satu dari `"completed"`, `"max_turns"`, `"tool_deferred"`, `"aborted_streaming"`, `"aborted_tools"`, `"hook_stopped"`, `"stop_hook_prevented"`, `"background_requested"`, `"blocking_limit"`, `"rapid_refill_breaker"`, `"prompt_too_long"`, `"image_error"`, `"model_error"`, `"api_error"`, `"malformed_tool_use_exhausted"`, `"budget_exhausted"`, `"structured_output_retry_exhausted"`, `"tool_deferred_unavailable"`, atau `"turn_setup_failed"`.

1720* `fast_mode_state`: salah satu dari `"on"`, `"off"`, atau `"cooldown"`.1720* `fast_mode_state`: salah satu dari `"on"`, `"off"`, atau `"cooldown"`.

1721* `fast_mode_disabled_reason`: mengapa [fast mode](/docs/id/fast-mode) tidak tersedia sekarang. Tidak ada ketika tidak ada yang memblokir fast mode, meskipun permintaan mungkin masih berjalan dengan kecepatan standar. Selama cooldown setelah batas laju fast mode, Claude Code melaporkan `fast_mode_state: "cooldown"` tanpa kode alasan dan mengaktifkan kembali fast mode ketika cooldown berakhir. Memerlukan Claude Code v2.1.219 atau lebih baru.1721* `fast_mode_disabled_reason`: mengapa [fast mode](/docs/id/fast-mode) tidak tersedia sekarang. Tidak ada ketika tidak ada yang memblokir fast mode, meskipun permintaan mungkin masih berjalan dengan kecepatan standar. Selama cooldown setelah rate limit fast mode, Claude Code melaporkan `fast_mode_state: "cooldown"` tanpa kode alasan dan mengaktifkan kembali fast mode ketika cooldown berakhir. Memerlukan Claude Code v2.1.219 atau lebih baru.

1722 1722 

1723Gunakan kode alasan untuk menjelaskan mengapa fast mode mati di UI Anda sendiri daripada menurunkan ketersediaan. Setiap kode menamai pemeriksaan yang memblokir fast mode:1723Gunakan kode alasan untuk menjelaskan mengapa fast mode mati di UI Anda sendiri daripada menurunkan ulang ketersediaan. Setiap kode menamai pemeriksaan yang memblokir fast mode:

1724 1724 

1725| Kode Alasan | Arti |1725| Kode Alasan | Arti |

1726| - | - |1726| - | - |


1731| `unknown` | Claude Code tidak dapat menentukan ketersediaan |1731| `unknown` | Claude Code tidak dapat menentukan ketersediaan |

1732| `not_first_party` | Sesi menggunakan penyedia selain Anthropic API |1732| `not_first_party` | Sesi menggunakan penyedia selain Anthropic API |

1733| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/id/env-vars) diatur |1733| `disabled_by_env` | [`CLAUDE_CODE_DISABLE_FAST_MODE`](/docs/id/env-vars) diatur |

1734| `model_not_allowed` | Model Opus fast mode tidak ada dalam daftar izin [`availableModels`](/docs/id/model-config#restrict-model-selection) organisasi |1734| `model_not_allowed` | Model Opus fast mode tidak ada dalam allowlist [`availableModels`](/docs/id/model-config#restrict-model-selection) organisasi |

1735| `sdk_opt_in_required` | Sesi belum memilih fast mode: teruskan `fastMode: true` dalam opsi [`settings`](#options) atau melalui [`applyFlagSettings()`](#applyflagsettings) |1735| `sdk_opt_in_required` | Sesi belum memilih fast mode: teruskan `fastMode: true` dalam opsi [`settings`](#options) atau melalui [`applyFlagSettings()`](#applyflagsettings) |

1736| `pending` | Pemeriksaan ketersediaan belum selesai |1736| `pending` | Pemeriksaan ketersediaan belum selesai |

1737 1737 

1738Pasangan bidang yang sama muncul pada [`SDKSystemMessage`](#sdksystemmessage) dan pada [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), jadi Anda dapat membaca status fast mode sebelum giliran pertama.1738Pasangan bidang yang sama muncul pada [`SDKSystemMessage`](#sdksystemmessage) dan pada [`SDKControlInitializeResponse`](#sdkcontrolinitializeresponse), jadi Anda dapat membaca status fast mode sebelum giliran pertama.

1739 1739 

1740Bidang `origin` meneruskan [`SDKMessageOrigin`](#sdkmessageorigin) dari pesan pengguna yang memicu hasil ini. Ketika SDK menyuntikkan giliran tindak lanjut sintetis, seperti untuk tugas yang selesai, `SDKResultMessage` yang dihasilkan membawa `origin: { kind: "task-notification" }`. Rutinitas yang pemicunya dipecat dan pesan yang diverifikasi server dari sesi lain Anda tiba dengan jenis ini juga, masing-masing dengan `subkind` yang dijelaskan dalam [Subkind notifikasi tugas](#task-notification-subkinds). Periksa `kind` untuk membedakan hasil yang menjawab prompt Anda dari tindak lanjut yang disuntikkan sebelum merutekan atau menekan mereka. Jika aplikasi Anda [mendeklarasikan jalankan terjadwal](#declare-a-scheduled-run), hasil mereka membawa `kind: "task-notification"` juga, jadi jangan tekan pada `kind` saja.1740Bidang `origin` meneruskan [`SDKMessageOrigin`](#sdkmessageorigin) dari pesan pengguna yang memicu hasil ini. Ketika SDK menyuntikkan giliran tindak lanjut sintetis, seperti untuk tugas latar belakang yang selesai, `SDKResultMessage` yang dihasilkan membawa `origin: { kind: "task-notification" }`. Routine yang pemicunya aktif dan pesan yang diverifikasi server dari sesi lain Anda tiba dengan jenis ini juga, masing-masing dengan `subkind` yang dijelaskan dalam [Subkind notifikasi tugas](#task-notification-subkinds). Periksa `kind` untuk membedakan hasil yang menjawab prompt Anda dari tindak lanjut yang disuntikkan sebelum merutekan atau menekan mereka. Jika aplikasi Anda [mendeklarasikan run terjadwal](#declare-a-scheduled-run), hasil mereka membawa `kind: "task-notification"` juga, jadi jangan menekan berdasarkan `kind` saja.

1741 1741 

1742Ketika beberapa penyelesaian tugas latar belakang antri bersama-sama, Claude Code dapat menjawabnya dalam satu giliran daripada satu giliran masing-masing. Setiap penyelesaian masih menghasilkan hasilnya sendiri dengan asal ini. Semua kecuali yang terakhir dari penyelesaian yang Claude Code jawab bersama menghasilkan hasil kosong dengan `num_turns: 0`, secara berurutan, dan hasil yang terakhir membawa giliran yang menjawab mereka semua.1742Ketika beberapa penyelesaian tugas latar belakang antri bersama-sama, Claude Code dapat menjawabnya dalam satu giliran daripada satu giliran masing-masing. Setiap penyelesaian masih menghasilkan hasilnya sendiri dengan asal ini. Semua kecuali yang terakhir dari penyelesaian yang Claude Code jawab bersama menghasilkan hasil kosong dengan `num_turns: 0`, secara berurutan, dan hasil yang terakhir membawa giliran yang menjawab mereka semua.

1743 1743 

1744Bidang tidak ada untuk hasil yang dipancarkan sebelum giliran pengguna apa pun, seperti kesalahan startup.1744Bidang tidak ada untuk hasil yang dipancarkan sebelum giliran pengguna apa pun, seperti kesalahan startup.

1745 1745 

1746Ketika hook `PreToolUse` mengembalikan `permissionDecision: "defer"`, hasil memiliki `stop_reason: "tool_deferred"` dan `deferred_tool_use` membawa `id`, `name`, dan `input` alat yang tertunda. Baca bidang ini untuk menampilkan permintaan di UI Anda sendiri, kemudian lanjutkan dengan `session_id` yang sama untuk melanjutkan. Lihat [Tunda panggilan alat untuk nanti](/docs/id/hooks#defer-a-tool-call-for-later) untuk perjalanan putaran penuh.1746Ketika hook `PreToolUse` mengembalikan `permissionDecision: "defer"`, hasil memiliki `stop_reason: "tool_deferred"` dan `deferred_tool_use` membawa `id`, `name`, dan `input` tool yang tertunda. Baca bidang ini untuk menampilkan permintaan di UI Anda sendiri, kemudian lanjutkan dengan `session_id` yang sama untuk melanjutkan. Lihat [Tunda panggilan tool untuk nanti](/docs/id/hooks#defer-a-tool-call-for-later) untuk perjalanan pulang-pergi lengkap.

1747 1747 

1748<h4 id="user_message_uuid">1748<h4 id="user_message_uuid">

1749 `user_message_uuid`1749 `user_message_uuid`


1754Pesan mana yang dijawab giliran tergantung pada bagaimana giliran dimulai:1754Pesan mana yang dijawab giliran tergantung pada bagaimana giliran dimulai:

1755 1755 

1756* **Pesan reguler yang Anda kirim**, yang berarti tanpa `isSynthetic: true`: giliran menjawab pesan itu untuk seluruh jalannya. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan bidang kemudian membawa hanya `uuid` pesan terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, gunakan [`user_message_uuids`](#user_message_uuids).1756* **Pesan reguler yang Anda kirim**, yang berarti tanpa `isSynthetic: true`: giliran menjawab pesan itu untuk seluruh jalannya. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan bidang kemudian membawa hanya `uuid` pesan terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, gunakan [`user_message_uuids`](#user_message_uuids).

1757* **Pesan yang Anda kirim dengan `isSynthetic: true`**: giliran menjawab pesan itu pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan alat, giliran menjawab pesan yang diambil dari saat itu. Mengulangi `uuid` pesan sintetis memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran sintetis.1757* **Pesan yang Anda kirim dengan `isSynthetic: true`**: giliran menjawab pesan itu pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan yang diambil dari saat itu. Mengulangi `uuid` pesan sintetis memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran sintetis.

1758* **Prompt yang dihasilkan Claude Code untuk menjalankan kembali giliran terputus di bawah [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/id/env-vars)**: ketika prompt terakhir giliran terputus adalah pesan reguler yang Anda kirim, apakah itu membuka giliran atau Claude Code mengambilnya selama giliran, re-run menjawab pesan itu pada awalnya. [`resume_reason`](#resume_reason) memberi tahu frame re-run dari upaya terputus. Ketika prompt terakhir bukan pesan reguler Anda, re-run tidak menjawab pesan Anda pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan alat, giliran menjawab pesan yang diambil dari saat itu. Mengulangi prompt giliran terputus memerlukan Agent SDK v0.3.268 atau lebih baru.1758* **Prompt yang dihasilkan Claude Code untuk menjalankan kembali giliran terputus di bawah [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/id/env-vars)**: ketika prompt terakhir giliran terputus adalah pesan reguler yang Anda kirim, baik itu membuka giliran maupun Claude Code mengambilnya selama giliran, re-run menjawab pesan itu pada awalnya. [`resume_reason`](#resume_reason) membedakan frame re-run dari frame upaya terputus. Ketika prompt terakhir bukan pesan reguler Anda, re-run tidak menjawab pesan Anda pada awalnya. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan yang diambil dari saat itu. Mengulangi prompt giliran terputus memerlukan Agent SDK v0.3.268 atau lebih baru.

1759* **Prompt lain yang dihasilkan Claude Code sendiri**: giliran tidak menjawab pesan Anda pada awalnya dan frame-nya tidak membawa echo. Jika Claude Code mengambil pesan reguler Anda di antara panggilan alat, giliran menjawab pesan itu dari saat itu. Echo pengambilan memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran ini.1759* **Prompt lain yang dihasilkan Claude Code sendiri**: giliran tidak menjawab pesan Anda pada awalnya dan frame-nya tidak membawa echo. Jika Claude Code mengambil pesan reguler Anda di antara panggilan tool, giliran menjawab pesan itu dari saat itu. Echo pengambilan memerlukan Agent SDK v0.3.265 atau lebih baru; versi sebelumnya tidak mengulangi apa pun pada giliran ini.

1760 1760 

1761Claude Code mengulangi `uuid` pesan yang dijawab pada tiga jenis frame:1761Claude Code mengulangi `uuid` pesan yang dijawab pada tiga jenis frame:

1762 1762 

1763* **Hasil**: setiap hasil giliran yang menjawab pesan yang Anda kirim. Setiap hasil seperti itu membawanya pada Agent SDK v0.3.265 atau lebih baru. Sebelum v0.3.265, hasil kesuksesan giliran yang dimulai pesan reguler tidak membawanya ketika giliran tidak mengirim permintaan API atau berakhir dengan panggilan alat yang ditunda. Sebelum v0.3.246, hasil kesalahan juga tidak membawanya, dan sebelum v0.3.216 setiap hasil tidak.1763* **Hasil**: setiap hasil giliran yang menjawab pesan yang Anda kirim. Setiap hasil seperti itu membawanya pada Agent SDK v0.3.265 atau lebih baru. Sebelum v0.3.265, hasil kesuksesan giliran yang dimulai pesan reguler tidak membawanya ketika giliran tidak mengirim permintaan API atau berakhir dengan panggilan tool yang ditunda. Sebelum v0.3.246, hasil kesalahan juga tidak membawanya, dan sebelum v0.3.216 setiap hasil tidak.

1764* **Balasan pertama giliran**: [pesan asisten](#sdkassistantmessage) pertama, atau dengan `includePartialMessages` [acara aliran](#sdkpartialassistantmessage) pertama yang `event.type` bukan `ping`, jadi Anda dapat mengikat balasan sebelum hasil tiba. Ketika giliran tidak mengalirkan apa pun, Claude Code menetapkannya pada pesan asisten pertama. Echo balasan pertama memerlukan Agent SDK v0.3.246 atau lebih baru. Ketika pesan yang dijawab giliran berubah di tengah giliran, balasan pertama setelah perubahan membawa bidang juga, pada Agent SDK v0.3.265 atau lebih baru; versi sebelumnya menetapkannya pada satu frame balasan per giliran.1764* **Balasan pertama giliran**: [pesan asisten](#sdkassistantmessage) pertama, dan dengan `includePartialMessages` juga [acara aliran](#sdkpartialassistantmessage) pertama yang `event.type`-nya bukan `ping`, jadi Anda dapat mengikat balasan sebelum hasil tiba. Echo balasan pertama memerlukan Agent SDK v0.3.246 atau lebih baru. Sebelum v0.3.269, dengan `includePartialMessages`, Claude Code menetapkannya hanya pada acara aliran pertama itu, atau pada pesan asisten pertama ketika giliran tidak mengalirkan apa pun. Ketika pesan yang dijawab giliran berubah di tengah giliran, balasan pertama setelah perubahan membawa bidang juga, pada Agent SDK v0.3.265 atau lebih baru; versi sebelumnya menetapkannya pada satu frame balasan per giliran.

1765* **Setiap frame [`thinking_tokens`](#sdkthinkingtokensmessage) giliran**: jadi Anda dapat mengatribusikan kemajuan pemikiran ke pesan yang Anda kirim tanpa menunggu balasan pertama giliran. Memerlukan Agent SDK v0.3.260 atau lebih baru.1765* **Setiap frame [`thinking_tokens`](#sdkthinkingtokensmessage) giliran**: jadi Anda dapat mengatribusikan kemajuan thinking ke pesan yang Anda kirim tanpa menunggu balasan pertama giliran. Memerlukan Agent SDK v0.3.260 atau lebih baru.

1766 1766 

1767Claude Code menghilangkan bidang dalam kasus-kasus ini:1767Claude Code menghilangkan bidang dalam kasus-kasus ini:

1768 1768 

1769* Frame balasan selain balasan pertama itu1769* Frame balasan selain balasan pertama itu

1770* Frame subagen1770* Frame subagent

1771* Giliran yang tidak menjawab pesan Anda, atau menjawab pesan yang Anda kirim tanpa `uuid`1771* Giliran yang tidak menjawab pesan Anda, atau menjawab pesan yang Anda kirim tanpa `uuid`

1772* Hasil yang tidak menjawab pesan apa pun yang Anda kirim, seperti hasil yang dinolkan setelah proses pekerja yang jatuh1772* Hasil yang tidak menjawab pesan apa pun yang Anda kirim, seperti hasil yang dinolkan setelah proses pekerja yang jatuh

1773 1773 


1777 1777 

1778`uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan `user_message_uuid` kemudian menamai hanya yang terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, cari `uuid` pesan itu di mana pun dalam daftar ini. Memerlukan Agent SDK v0.3.259 atau lebih baru.1778`uuid` dari setiap pesan yang Anda kirim yang dijawab Claude Code dalam giliran ini. Ketika Anda mengirim beberapa pesan berdekatan, Claude Code dapat menggabungkannya menjadi satu giliran, dan `user_message_uuid` kemudian menamai hanya yang terakhir. Untuk mencocokkan balasan dengan salah satu pesan yang digabungkan, cari `uuid` pesan itu di mana pun dalam daftar ini. Memerlukan Agent SDK v0.3.259 atau lebih baru.

1779 1779 

1780Claude Code menetapkan daftar bersama dengan `user_message_uuid` pada setiap frame balasan yang membawa bidang itu dan pada hasil. Untuk set lengkap frame yang membawa `user_message_uuid`, dan versi yang masing-masing memerlukan, lihat [`user_message_uuid`](#user_message_uuid). Daftar selalu berisi `user_message_uuid` dan menyimpan paling banyak 64 entri.1780Claude Code menetapkan daftar bersama dengan `user_message_uuid` pada setiap frame balasan yang membawa bidang itu dan pada hasil. Untuk set lengkap frame giliran yang mengulangi `uuid` pesan yang dijawab, dan versi yang masing-masing memerlukan, lihat [`user_message_uuid`](#user_message_uuid). Daftar selalu berisi `user_message_uuid` dan menyimpan paling banyak 64 entri.

1781 1781 

1782Ketika Claude Code mengambil pesan reguler yang Anda kirim saat giliran berjalan, ia menambahkan `uuid` pesan itu ke daftar hasil.1782Ketika Claude Code mengambil pesan reguler yang Anda kirim saat giliran berjalan, ia menambahkan `uuid` pesan itu ke daftar hasil.

1783 1783 


1787 `resume_reason`1787 `resume_reason`

1788</h4>1788</h4>

1789 1789 

1790Mengapa Claude Code menjalankan kembali giliran ini setelah gangguan interupsi. Claude Code menetapkan bidang ini pada giliran yang dijalankan kembali di bawah [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/id/env-vars), jadi Anda dapat membedakan balasan dan hasil re-run dari upaya terputus. Memerlukan Agent SDK v0.3.268 atau lebih baru.1790Mengapa Claude Code menjalankan kembali giliran ini setelah restart. Claude Code menetapkan bidang ini pada giliran yang dijalankan kembali di bawah [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/id/env-vars), jadi Anda dapat membedakan balasan dan hasil re-run dari upaya terputus. Memerlukan Agent SDK v0.3.268 atau lebih baru.

1791 1791 

1792Claude Code menetapkan bidang pada dua jenis frame:1792Claude Code menetapkan bidang pada dua jenis frame:

1793 1793 

1794* **Hasil re-run**: pada lengan kesuksesan dan kesalahan sama-sama, apakah atau tidak hasil membawa `user_message_uuid`.1794* **Hasil re-run**: pada lengan kesuksesan dan kesalahan sama-sama, baik hasil membawa `user_message_uuid` maupun tidak.

1795* **Frame balasan re-run**: yang membawa [`user_message_uuid`](#user_message_uuid).1795* **Frame balasan re-run**: yang membawa [`user_message_uuid`](#user_message_uuid).

1796 1796 

1797Nilai adalah token huruf kecil pendek yang menamai mengapa giliran dijalankan kembali, seperti `interrupted_turn`. Bidang tidak ada pada setiap giliran lain.1797Nilai adalah token huruf kecil pendek yang menamai mengapa giliran dijalankan kembali, seperti `interrupted_turn`. Bidang tidak ada pada setiap giliran lain.


1811 `startup_failure_reason`1811 `startup_failure_reason`

1812</h4>1812</h4>

1813 1813 

1814Mengapa Claude Code menolak untuk memulai, sehingga aplikasi Anda dapat menawarkan perbaikan daripada percobaan ulang. Claude Code menetapkannya pada hasil `error_during_execution` yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Hasil itu membawa total yang dinolkan, dan array `errors` membawa teks yang sama dengan stderr. Bidang tidak ada pada setiap hasil lainnya. Memerlukan Agent SDK v0.3.274 atau lebih baru.1814Mengapa Claude Code menolak untuk memulai, sehingga aplikasi Anda dapat menawarkan perbaikan daripada retry. Claude Code menetapkannya pada hasil `error_during_execution` yang ditulis sebelum keluar pada kegagalan startup yang diketahui. Hasil itu membawa total yang dinolkan, dan array `errors`-nya membawa teks yang sama dengan stderr. Bidang tidak ada pada setiap hasil lainnya. Memerlukan Agent SDK v0.3.274 atau lebih baru.

1815 1815 

1816Atur `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` ke `1` dalam [`env`](#options) untuk menerima hasil ini untuk setiap nilai `SDKStartupFailureReason`. Tanpa variabel itu, Claude Code menulis hasil hanya untuk kegagalan ini, dan sisanya berakhir dengan output stderr, keluar non-nol, dan tidak ada pesan hasil:1816Atur `CLAUDE_CODE_STARTUP_FAILURE_RESULTS` ke `1` dalam [`env`](#options) untuk menerima hasil ini untuk setiap nilai `SDKStartupFailureReason`. Tanpa variabel itu, Claude Code menulis hasil hanya untuk kegagalan ini, dan sisanya berakhir dengan output stderr, keluar non-nol, dan tidak ada pesan hasil:

1817 1817 


1844| Nilai | Apa yang menghentikan sesi |1844| Nilai | Apa yang menghentikan sesi |

1845| :- | :- |1845| :- | :- |

1846| `org_pin_api_key_conflict` | Pengaturan terkelola [memerlukan masuk gateway first-party atau Cloud](/docs/id/authentication#restrict-login-to-your-organization), dan kunci API Anthropic, token auth, atau `apiKeyHelper` dikonfigurasi sebagai gantinya |1846| `org_pin_api_key_conflict` | Pengaturan terkelola [memerlukan masuk gateway first-party atau Cloud](/docs/id/authentication#restrict-login-to-your-organization), dan kunci API Anthropic, token auth, atau `apiKeyHelper` dikonfigurasi sebagai gantinya |

1847| `provider_not_allowed` | Pengaturan terkelola [mencantumkan penyedia API yang mesin ini boleh gunakan](/docs/id/settings-reference#allowedproviders), dan sesi diatur untuk penyedia yang tidak tercantum, atau untuk endpoint yang pengaturan tidak pin. Memerlukan Claude Code v2.1.285 atau lebih baru |1847| `provider_not_allowed` | Pengaturan terkelola [mencantumkan penyedia API yang boleh digunakan mesin ini](/docs/id/settings-reference#allowedproviders), dan sesi diatur untuk penyedia yang tidak tercantum, atau untuk endpoint yang tidak di-pin oleh pengaturan. Memerlukan Claude Code v2.1.285 atau lebih baru |

1848| `org_verify_failed` | Organisasi masuk tidak dapat diverifikasi terhadap pin, misalnya karena kegagalan jaringan atau token yang dicabut |1848| `org_verify_failed` | Organisasi masuk tidak dapat diverifikasi terhadap pin, misalnya karena kegagalan jaringan atau token yang dicabut |

1849| `org_pin_mismatch` | Masuk milik organisasi yang pin tidak izinkan |1849| `org_pin_mismatch` | Masuk milik organisasi yang tidak diizinkan pin |

1850| `managed_settings_invalid` | Pengaturan kebijakan terkelola tidak dapat dibaca, pin tidak menamai organisasi, atau [pembatasan model terkelola](/docs/id/errors#managed-settings-block-the-default-model) tidak meninggalkan model yang diizinkan untuk opsi Default |1850| `managed_settings_invalid` | Pengaturan kebijakan terkelola tidak dapat dibaca, pin tidak menamai organisasi, atau [pembatasan model terkelola](/docs/id/errors#managed-settings-block-the-default-model) tidak menyisakan model yang diizinkan untuk opsi Default |

1851| `remote_settings_required_unavailable` | Pengaturan terkelola yang organisasi perlukan tidak dapat dimuat |1851| `remote_settings_required_unavailable` | Pengaturan terkelola yang diwajibkan organisasi tidak dapat dimuat |

1852| `gateway_signin_required` | [Gateway cloud](/docs/id/claude-apps-gateway) mengakhiri masuk ini |1852| `gateway_signin_required` | [Gateway Cloud](/docs/id/claude-apps-gateway) mengakhiri masuk ini |

1853| `gateway_access_denied` | Permintaan pengaturan terkelola ke gateway cloud kembali dengan 403, yang [tabel pemecahan masalah](/docs/id/claude-apps-gateway-deploy#troubleshooting) gateway mencakup |1853| `gateway_access_denied` | Permintaan pengaturan terkelola ke gateway Cloud kembali dengan 403, yang dibahas dalam [tabel pemecahan masalah](/docs/id/claude-apps-gateway-deploy#troubleshooting) gateway |

1854| `proxy_invalid` | Pengaturan proxy bukan URL lengkap |1854| `proxy_invalid` | Pengaturan proxy bukan URL lengkap |

1855| `temp_dir_unusable` | Direktori sementara per-pengguna tidak aman atau tidak dapat dibuat |1855| `temp_dir_unusable` | Direktori sementara per-pengguna tidak aman atau tidak dapat dibuat |

1856| `cwd_unavailable` | Direktori kerja dihapus, dipindahkan, atau tidak dapat dibaca |1856| `cwd_unavailable` | Direktori kerja dihapus, dipindahkan, atau tidak dapat dibaca |

1857| `shell_tool_missing` | Di Windows, tidak ada alat shell yang tersedia: Git Bash hilang, dan PowerShell hilang atau dimatikan dengan `CLAUDE_CODE_USE_POWERSHELL_TOOL` |1857| `shell_tool_missing` | Di Windows, tidak ada tool shell yang tersedia: Git Bash hilang, dan PowerShell hilang atau dimatikan dengan `CLAUDE_CODE_USE_POWERSHELL_TOOL` |

1858| `session_held_by_background` | Percakapan untuk dilanjutkan atau diteruskan berjalan sebagai [sesi latar belakang](/docs/id/agent-view) |1858| `session_held_by_background` | Percakapan untuk dilanjutkan atau diteruskan berjalan sebagai [sesi latar belakang](/docs/id/agent-view) |

1859| `worktree_resume_refused` | Worktree sesi gagal pemeriksaan keamanannya, atau resume diluncurkan dari dalamnya. `errors` mengatakan apakah menjalankan resume yang sama lagi berlanjut tanpa worktree |1859| `worktree_resume_refused` | Worktree sesi gagal pemeriksaan keamanannya, atau resume diluncurkan dari dalamnya. `errors` mengatakan apakah menjalankan resume yang sama lagi berlanjut tanpa worktree |

1860| `worktree_unverified` | Worktree sesi tidak dapat diverifikasi sekarang, dan mencoba lagi mungkin berhasil |1860| `worktree_unverified` | Worktree sesi tidak dapat diverifikasi sekarang, dan mencoba ulang mungkin berhasil |

1861| `cli_version_too_old` | Versi Claude Code ini di bawah minimum yang Anthropic perlukan |1861| `cli_version_too_old` | Versi Claude Code ini di bawah minimum yang Anthropic wajibkan |

1862| `bypass_root` | Mode izin bypass diminta saat berjalan sebagai root |1862| `bypass_root` | Mode izin bypass diminta saat berjalan sebagai root |

1863 1863 

1864<h3 id="sdksystemmessage">1864<h3 id="sdksystemmessage">


1908 1908 

1909`terminal_slash_commands` menamai entri dalam `slash_commands` yang antarmukanya terikat ke terminal lokal, seperti `exit`. Anda dapat mengirimnya seperti entri lain dalam `slash_commands`; bidang ada sehingga klien jarak jauh atau mobile dapat menyembunyikannya dari menu perintah. Bidang ada hanya ketika tidak kosong, dan memerlukan Agent SDK v0.3.229 atau lebih baru.1909`terminal_slash_commands` menamai entri dalam `slash_commands` yang antarmukanya terikat ke terminal lokal, seperti `exit`. Anda dapat mengirimnya seperti entri lain dalam `slash_commands`; bidang ada sehingga klien jarak jauh atau mobile dapat menyembunyikannya dari menu perintah. Bidang ada hanya ketika tidak kosong, dan memerlukan Agent SDK v0.3.229 atau lebih baru.

1910 1910 

1911*1911* `source` pada setiap entri `mcp_servers`: dari mana definisi server berasal, dengan nilai yang sama seperti `source` milik [`McpServerStatus`](#mcpserverstatus). Memerlukan Agent SDK v0.3.274 atau lebih baru.

1912 1912* `effort`: [tingkat effort](/docs/id/model-config#adjust-effort-level) yang Claude Code kirim pada permintaan sesi berikutnya, atau `null` ketika tidak mengirim apa pun. Claude Code menetapkan bidang hanya pada pesan init yang dikirimnya ke klien [Remote Control](/docs/id/remote-control), dan menghilangkannya dari pesan init yang dibaca aplikasi Anda. Memerlukan Agent SDK v0.3.234 atau lebih baru.

1913`source` pada setiap entri `mcp_servers`: dari mana definisi server berasal, dengan nilai yang sama seperti [`McpServerStatus`](#mcpserverstatus) `source`. Memerlukan Agent SDK v0.3.274 atau lebih baru.

1914 

1915*

1916 

1917`effort`: [tingkat upaya](/docs/id/model-config#adjust-effort-level) yang Claude Code kirim pada permintaan sesi berikutnya, atau `null` ketika tidak mengirim apa pun. Claude Code menetapkan bidang hanya pada pesan init yang dikirimnya ke klien [Remote Control](/docs/id/remote-control), dan menghilangkannya dari pesan init yang dibaca aplikasi Anda. Memerlukan Agent SDK v0.3.234 atau lebih baru.

1918 1913 

1919Array `capabilities` menamai perilaku protokol yang diimplementasikan CLI ini, jadi Anda dapat mendeteksi fitur daripada membandingkan string `claude_code_version`. Ini adalah set terbuka: abaikan nilai yang tidak Anda kenal, dan periksa kemampuan spesifik yang perilakunya Anda andalkan. Bidang memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada pada CLI sebelumnya.1914Array `capabilities` menamai perilaku protokol yang diimplementasikan CLI ini, jadi Anda dapat mendeteksi fitur daripada membandingkan string `claude_code_version`. Ini adalah set terbuka: abaikan nilai yang tidak Anda kenal, dan periksa kemampuan spesifik yang perilakunya Anda andalkan. Bidang memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada pada CLI sebelumnya.

1920 1915 

1921| Kemampuan | Arti |1916| Kemampuan | Arti |

1922| - | - |1917| - | - |

1923| `interrupt_receipt_v1` | [`interrupt()`](#query-object) menyelesaikan dengan penerimaan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan yang tertunda ketika gangguan tiba |1918| `interrupt_receipt_v1` | [`interrupt()`](#query-object) menyelesaikan dengan penerimaan [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) yang mencantumkan pesan yang tertunda ketika gangguan tiba |

1924| `interrupt_cancel_queued_v1` | Permintaan kontrol `interrupt` menghormati `cancel_queued: true`, membatalkan pesan yang akan dicantumkan penerimaan di bawah `still_queued` dan mencantumnya di bawah `cancelled` sebagai gantinya. Lihat [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Memerlukan Claude Code v2.1.219 atau lebih baru |1919| `interrupt_cancel_queued_v1` | Permintaan kontrol `interrupt` menghormati `cancel_queued: true`, membatalkan pesan yang akan dicantumkan penerimaan di bawah `still_queued` dan mencantumkannya di bawah `cancelled` sebagai gantinya. Lihat [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse). Memerlukan Claude Code v2.1.219 atau lebih baru |

1925 1920 

1926Array `plugin_errors` mencantumkan kegagalan pemuatan plugin. Entri menggambarkan baik plugin yang tidak dimuat dan tidak ada dalam `plugins`, atau plugin yang dimuat tanpa salah satu bagiannya, seperti file hooks-nya. Kunci dihilangkan ketika tidak ada yang gagal. `SDKSystemMessage` mendeklarasikan `plugin_errors` dalam Agent SDK v0.3.283 atau lebih baru.1921Array `plugin_errors` mencantumkan kegagalan pemuatan plugin. Entri menggambarkan baik plugin yang tidak dimuat dan tidak ada dalam `plugins`, atau plugin yang dimuat tanpa salah satu bagiannya, seperti file hooks-nya. Kunci dihilangkan ketika tidak ada yang gagal. `SDKSystemMessage` mendeklarasikan `plugin_errors` dalam Agent SDK v0.3.283 atau lebih baru.

1927 1922 

1928Ketika direktori atau arsip dari opsi [`plugins`](#options) Anda sendiri gagal dimuat, bidang `plugin` entri menyimpan tag posisional seperti `inline[0]` daripada nama plugin. Ini terjadi, misalnya, ketika jalur tidak ada atau manifes tidak valid. Cocokkan entri seperti itu dengan opsi Anda berdasarkan bidang `path`.1923Ketika direktori atau arsip dari [opsi `plugins`](#options) Anda sendiri gagal dimuat, bidang `plugin` entri menyimpan tag posisional seperti `inline[0]` daripada nama plugin. Ini terjadi, misalnya, ketika jalur tidak ada atau manifes tidak valid. Cocokkan entri seperti itu dengan opsi Anda berdasarkan bidang `path`.

1929 1924 

1930Tabel di bawah mencantumkan bidang setiap entri `plugin_errors`.1925Tabel di bawah mencantumkan bidang setiap entri `plugin_errors`.

1931 1926 


1940 `SDKPartialAssistantMessage`1935 `SDKPartialAssistantMessage`

1941</h3>1936</h3>

1942 1937 

1943Pesan parsial streaming (hanya ketika `includePartialMessages` adalah true). Bidang `parent_tool_use_id` selalu `null`: acara aliran dipancarkan untuk sesi utama saja. Untuk atribusi subagen, gunakan pesan lengkap, yang membawa `parent_tool_use_id`, atau aktifkan [`forwardSubagentText`](#options) untuk menerima teks dan pemikiran subagen sebagai pesan lengkap.1938Pesan parsial streaming (hanya ketika `includePartialMessages` adalah true). Bidang `parent_tool_use_id` selalu `null`: acara aliran dipancarkan untuk sesi utama saja. Untuk atribusi subagent, gunakan pesan lengkap, yang membawa `parent_tool_use_id`, atau aktifkan [`forwardSubagentText`](#options) untuk menerima teks dan thinking subagent sebagai pesan lengkap.

1944 1939 

1945```typescript theme={null}1940```typescript theme={null}

1946type SDKPartialAssistantMessage = {1941type SDKPartialAssistantMessage = {


1956};1951};

1957```1952```

1958 1953 

1959Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada acara aliran non-ping pertama giliran, dan lagi ketika pesan yang dijawab giliran berubah, di bawah kondisi dalam [`user_message_uuid`](#user_message_uuid). Ketika Claude Code menjalankan kembali giliran yang gangguan interupsi, acara aliran re-run yang membawa bidang itu juga membawa [`resume_reason`](#resume_reason).1954Claude Code menetapkan `user_message_uuid` dan `user_message_uuids` pada acara aliran non-ping pertama giliran, dan lagi ketika pesan yang dijawab giliran berubah, di bawah kondisi dalam [`user_message_uuid`](#user_message_uuid). Ketika Claude Code menjalankan kembali giliran yang terinterupsi oleh restart, acara aliran re-run yang membawa bidang itu juga membawa [`resume_reason`](#resume_reason).

1960 1955 

1961<h3 id="sdkcompactboundarymessage">1956<h3 id="sdkcompactboundarymessage">

1962 `SDKCompactBoundaryMessage`1957 `SDKCompactBoundaryMessage`

1963</h3>1958</h3>

1964 1959 

1965Pesan yang menunjukkan batas pemadatan percakapan.1960Pesan yang menunjukkan batas compaction percakapan.

1966 1961 

1967```typescript theme={null}1962```typescript theme={null}

1968type SDKCompactBoundaryMessage = {1963type SDKCompactBoundaryMessage = {


2038 `SDKPermissionDeniedMessage`2033 `SDKPermissionDeniedMessage`

2039</h3>2034</h3>

2040 2035 

2041Acara aliran yang dipancarkan ketika sistem izin menolak panggilan alat tanpa prompt interaktif. Gunakan untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil alat `is_error` yang mengikuti. Penolakan mana yang dilaporkan tergantung pada bagaimana jalannya menangani prompt izin:2036Acara aliran yang dipancarkan ketika sistem izin menolak panggilan tool tanpa permintaan izin interaktif. Gunakan untuk merender penolakan di UI Anda saat terjadi, daripada hanya mengamati hasil tool `is_error` yang mengikuti. Penolakan mana yang dilaporkan tergantung pada bagaimana run menangani permintaan izin:

2042 2037 

2043* **Dengan callback [`canUseTool`](#canusetool) dan [`permissionPrompts: 'host'`](#options) default**: prompt izin pergi ke callback Anda, dan acara ini melaporkan penolakan yang Claude Code putuskan sendiri tanpa memanggilnya.2038* **Dengan callback [`canUseTool`](#canusetool)** dan [`permissionPrompts: 'host'`](#options) default: permintaan izin pergi ke callback Anda, dan acara ini melaporkan penolakan yang Claude Code putuskan sendiri tanpa memanggilnya.

2044* **Tanpa keduanya**: jalankan `-p` telanjang, atau `query()` yang tidak menetapkan `canUseTool` atau `permissionPromptToolName`, menolak panggilan alat apa pun yang akan diminta, dan acara ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Sebelum v2.1.223, Claude Code tidak memancarkan acara ini dalam jalankan tanpa callback.2039* **Tanpa keduanya**: run `-p` polos, atau `query()` yang tidak menetapkan `canUseTool` maupun `permissionPromptToolName`, menolak panggilan tool apa pun yang akan memunculkan permintaan izin, dan acara ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Sebelum v2.1.223, Claude Code tidak memancarkan acara ini dalam run tanpa callback.

2045* **Dengan alat prompt MCP**, diatur dengan `permissionPromptToolName` atau flag [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags), dan `permissionPrompts: 'host'` default: Claude Code tidak memancarkan acara ini sama sekali, bahkan untuk penolakan aturan yang diputuskan sendiri.2040* **Dengan tool prompt MCP**, diatur dengan `permissionPromptToolName` atau flag [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags), dan `permissionPrompts: 'host'` default: Claude Code tidak memancarkan acara ini sama sekali, bahkan untuk penolakan aturan yang diputuskannya sendiri.

2046* **Dengan [`permissionPrompts: 'none'`](#options)**: Claude Code menolak panggilan yang akan diminta, bahkan ketika `canUseTool` atau alat prompt MCP juga diatur, dan acara ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Memerlukan Claude Code v2.1.259 atau lebih baru.2041* **Dengan [`permissionPrompts: 'none'`](#options)**: Claude Code menolak panggilan yang akan memunculkan permintaan izin, bahkan ketika `canUseTool` atau tool prompt MCP juga diatur, dan acara ini melaporkan penolakan itu serta yang Claude Code putuskan sendiri. Memerlukan Claude Code v2.1.259 atau lebih baru.

2047 2042 

2048Dalam setiap konfigurasi, acara ini melewati penolakan apa pun yang diputuskan pada jalur hook `PreToolUse`, apakah hook menolak panggilan sendiri atau aturan deny menimpa keputusan allow atau ask hook. Acara ini juga best-effort: kadang-kadang Claude Code merekam penolakan tanpa memancarkan acara ini, jadi `permission_denials` pada [pesan hasil](#sdkresultmessage) adalah catatan otoritatif.2043Dalam setiap konfigurasi, acara ini melewati penolakan apa pun yang diputuskan pada jalur hook `PreToolUse`, baik hook menolak panggilan sendiri maupun aturan deny menimpa keputusan allow atau ask hook. Acara ini juga best-effort: kadang-kadang Claude Code merekam penolakan tanpa memancarkan acara ini, jadi `permission_denials` pada [pesan hasil](#sdkresultmessage) adalah catatan otoritatif.

2049 2044 

2050```typescript theme={null}2045```typescript theme={null}

2051type SDKPermissionDeniedMessage = {2046type SDKPermissionDeniedMessage = {


2064 2059 

2065| Bidang | Tipe | Deskripsi |2060| Bidang | Tipe | Deskripsi |

2066| - | - | - |2061| - | - | - |

2067| `tool_name` | `string` | Nama alat yang ditolak |2062| `tool_name` | `string` | Nama tool yang ditolak |

2068| `tool_use_id` | `string` | ID blok `tool_use` yang dijawab penolakan ini |2063| `tool_use_id` | `string` | ID blok `tool_use` yang dijawab penolakan ini |

2069| `agent_id` | `string` | ID subagen ketika panggilan yang ditolak berasal dari dalam subagen. Mencerminkan bidang pada `can_use_tool` untuk perutean sisi host |2064| `agent_id` | `string` | ID subagent ketika panggilan yang ditolak berasal dari dalam subagent. Mencerminkan bidang pada `can_use_tool` untuk perutean sisi host |

2070| `decision_reason_type` | `string` | Diskriminator untuk komponen yang memutuskan, seperti `"rule"`, `"mode"`, `"classifier"`, atau `"asyncAgent"` |2065| `decision_reason_type` | `string` | Diskriminator untuk komponen yang memutuskan, seperti `"rule"`, `"mode"`, `"classifier"`, atau `"asyncAgent"` |

2071| `decision_reason` | `string` | Alasan yang dapat dibaca manusia dari komponen yang memutuskan, ketika tersedia |2066| `decision_reason` | `string` | Alasan yang dapat dibaca manusia dari komponen yang memutuskan, ketika tersedia |

2072| `message` | `string` | Pesan penolakan yang dikembalikan ke model dalam `tool_result` |2067| `message` | `string` | Pesan penolakan yang dikembalikan ke model dalam `tool_result` |


2075 `SDKPermissionDenial`2070 `SDKPermissionDenial`

2076</h3>2071</h3>

2077 2072 

2078Informasi tentang penggunaan alat yang ditolak.2073Informasi tentang penggunaan tool yang ditolak.

2079 2074 

2080```typescript theme={null}2075```typescript theme={null}

2081type SDKPermissionDenial = {2076type SDKPermissionDenial = {


2089 `SDKContextUsage`2084 `SDKContextUsage`

2090</h3>2085</h3>

2091 2086 

2092Bentuk terstruktur dari laporan `/context`, dibawa sebagai `context_usage` pada [`SDKAssistantMessage`](#sdkassistantmessage) yang mengirimkan hasil `/context`. Agent SDK v0.3.232 dan lebih baru mengekspor tipe. Tidak seperti [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), ia hanya membawa data yang diperlukan untuk merender rincian penggunaan, tanpa bidang tampilan seperti `color` dan `gridRows`. Claude Code menghitung laporan dengan permintaan API penghitungan token yang tidak muncul dalam aliran pesan; lihat [bagaimana permintaan ini ditangani](#sdkcontrolgetcontextusageresponse).2087Bentuk terstruktur dari laporan `/context`, dibawa sebagai `context_usage` pada [`SDKAssistantMessage`](#sdkassistantmessage) yang mengirimkan hasil `/context`. Agent SDK v0.3.232 dan lebih baru mengekspor tipe ini. Tidak seperti [`SDKControlGetContextUsageResponse`](#sdkcontrolgetcontextusageresponse), ia hanya membawa data yang diperlukan untuk merender rincian penggunaan, tanpa bidang tampilan seperti `color` dan `gridRows`. Claude Code menghitung laporan dengan permintaan API penghitungan token yang tidak muncul dalam aliran pesan; lihat [bagaimana permintaan ini ditangani](#sdkcontrolgetcontextusageresponse).

2093 2088 

2094```typescript theme={null}2089```typescript theme={null}

2095type SDKContextUsage = {2090type SDKContextUsage = {


2126};2121};

2127```2122```

2128 2123 

2129Tabel mencantumkan apa yang Claude Code masukkan dalam setiap bidang. Bidang dari `model` melalui `over_limit` menggambarkan sesi secara keseluruhan, dan bidang koleksi mengatribusikan token ke item individual.2124Tabel mencantumkan apa yang Claude Code masukkan dalam setiap bidang. Bidang dari `model` hingga `over_limit` menggambarkan sesi secara keseluruhan, dan bidang koleksi mengatribusikan token ke item individual.

2130 2125 

2131| Bidang | Tipe | Deskripsi |2126| Bidang | Tipe | Deskripsi |

2132| - | - | - |2127| - | - | - |

2133| `model` | `string` | Model loop utama yang Claude Code hitung penggunaan, bukan subagen |2128| `model` | `string` | Model loop utama yang penggunaannya dihitung Claude Code, bukan model subagent |

2134| `total_tokens` | `number` | Perkiraan Claude Code tentang token yang digunakan. Tidak diklem ke jendela, jadi dapat melebihi `raw_max_tokens` ketika sesi melampaui batas |2129| `total_tokens` | `number` | Perkiraan Claude Code tentang token yang digunakan. Tidak diklem ke jendela, jadi dapat melebihi `raw_max_tokens` ketika sesi melampaui batas |

2135| `raw_max_tokens` | `number` | Jendela konteks model, atau [jendela auto-compact](/docs/id/model-config#context-window-and-auto-compaction) yang lebih rendah ketika satu berlaku, seperti yang Anda atur atau batas 200K yang Claude Code terapkan pada beberapa model dengan jendela 1M-token. Claude Code mengukur `total_tokens` terhadap jendela ini |2130| `raw_max_tokens` | `number` | Context window model, atau [jendela auto-compact](/docs/id/model-config#context-window-and-auto-compaction) yang lebih rendah ketika satu berlaku, seperti yang Anda atur atau batas 200K yang Claude Code terapkan pada beberapa model dengan jendela 1M-token. Claude Code mengukur `total_tokens` terhadap jendela ini |

2136| `percentage` | `number` | `total_tokens` sebagai persentase pembulatan `raw_max_tokens`, jadi dapat melebihi 100 ketika sesi melampaui batas |2131| `percentage` | `number` | `total_tokens` sebagai persentase pembulatan dari `raw_max_tokens`, jadi dapat melebihi 100 ketika sesi melampaui batas |

2137| `over_limit` | `object` | Hadir hanya ketika `total_tokens` melebihi `raw_max_tokens`. `tokens_over` adalah jumlah yang berlebihan, dan `kind` mengatakan bagaimana Claude Code menyelesaikan jendela |2132| `over_limit` | `object` | Hadir hanya ketika `total_tokens` melebihi `raw_max_tokens`. `tokens_over` adalah jumlah kelebihannya, dan `kind` mengatakan bagaimana Claude Code menentukan jendela |

2138| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Satu entri per baris rincian penggunaan-per-kategori |2133| `categories` | [`SDKContextUsageCategory`](#sdkcontextusagecategory)`[]` | Satu entri per baris rincian penggunaan-per-kategori |

2139| `mcp_tools` | `object[]` | Token yang diatribusikan ke setiap alat MCP, dengan nama kawatnya, seperti `mcp__linear__create_issue`, dan `server_name` |2134| `mcp_tools` | `object[]` | Token yang diatribusikan ke setiap tool MCP, dengan nama wire-nya, seperti `mcp__linear__create_issue`, dan `server_name`-nya |

2140| `memory_files` | `object[]` | Token yang diatribusikan ke setiap file memori yang dimuat, dengan `path` dan label sumber seperti `Project` atau `User` dalam `type` |2135| `memory_files` | `object[]` | Token yang diatribusikan ke setiap file memori yang dimuat, dengan `path`-nya dan label sumber seperti `Project` atau `User` dalam `type` |

2141| `agents` | `object[]` | Token yang diatribusikan ke setiap definisi subagen kustom, dengan pengidentifikasi sumber seperti `projectSettings`, `userSettings`, atau `plugin`. Subagen bawaan tidak tercantum |2136| `agents` | `object[]` | Token yang diatribusikan ke setiap definisi subagent kustom, dengan pengidentifikasi sumber seperti `projectSettings`, `userSettings`, atau `plugin`. Subagent bawaan tidak tercantum |

2142| `skills` | `object[]` | Token yang diatribusikan ke setiap skill dalam daftar skill, dengan pengidentifikasi sumber dan, untuk skill plugin, nama plugin dalam `plugin_name`. Tidak ada ketika tidak ada skill yang berkontribusi token |2137| `skills` | `object[]` | Token yang diatribusikan ke setiap skill dalam daftar skill, dengan pengidentifikasi sumber dan, untuk skill plugin, nama plugin dalam `plugin_name`. Tidak ada ketika tidak ada skill yang berkontribusi token |

2143 2138 

2144`over_limit.kind` merekam bagaimana Claude Code menyelesaikan jendela, bukan apakah API menerima permintaan berikutnya:2139`over_limit.kind` merekam bagaimana Claude Code menentukan jendela, bukan apakah API menerima permintaan berikutnya:

2145 2140 

2146* `hard_limit`: jendela adalah apa yang Claude Code percaya menjadi batas model sendiri, melampaui mana API menolak permintaan2141* `hard_limit`: jendela adalah apa yang Claude Code yakini sebagai batas model itu sendiri, yang jika dilampaui API menolak permintaan

2147* `compaction_window`: jendela adalah jendela kebijakan pemadatan, yang mungkin atau mungkin tidak bertepatan dengan batas model2142* `compaction_window`: jendela adalah jendela kebijakan compaction, yang mungkin atau mungkin tidak bertepatan dengan batas model

2148 2143 

2149Claude Code mengembangkan tipe secara aditif, menambahkan data baru sebagai bidang opsional daripada membentuk ulang yang ada. Baca bidang yang Anda ketahui dan abaikan yang tidak Anda kenal.2144Claude Code mengembangkan tipe secara aditif, menambahkan data baru sebagai bidang opsional daripada membentuk ulang yang ada. Baca bidang yang Anda ketahui dan abaikan yang tidak Anda kenal.

2150 2145 


2166 2161 

2167| Bidang | Tipe | Deskripsi |2162| Bidang | Tipe | Deskripsi |

2168| - | - | - |2163| - | - | - |

2169| `name` | `string` | Nama tampilan baris seperti `/context` mencetaknya, seperti `Messages`. Klasifikasikan baris berdasarkan `kind`, bukan berdasarkan nama |2164| `name` | `string` | Nama tampilan baris seperti yang dicetak `/context`, seperti `Messages`. Klasifikasikan baris berdasarkan `kind`, bukan berdasarkan nama |

2170| `tokens` | `number` | Hitungan token baris. Baris dapat membawa nol token |2165| `tokens` | `number` | Jumlah token baris. Baris dapat membawa nol token |

2171| `kind` | `string` | Apa yang diwakili baris: `used`, `free`, `buffer`, atau `deferred` |2166| `kind` | `string` | Apa yang diwakili baris: `used`, `free`, `buffer`, atau `deferred` |

2172 2167 

2173Setiap nilai `kind` mengatakan apa token baris:2168Setiap nilai `kind` mengatakan apa token baris tersebut:

2174 2169 

2175* `used`: konten yang menempati jendela konteks2170* `used`: konten yang menempati context window

2176* `free`: jendela yang tersisa2171* `free`: jendela yang tersisa

2177* `buffer`: cadangan pemadatan2172* `buffer`: cadangan compaction

2178* `deferred`: skema alat yang Claude Code tahan di luar jendela dan kecualikan dari perhitungan penggunaan, tercantum untuk kesadaran2173* `deferred`: skema tool yang Claude Code tahan di luar jendela dan kecualikan dari perhitungan penggunaan, dicantumkan sebagai informasi

2179 2174 

2180<h3 id="sdkmessageorigin">2175<h3 id="sdkmessageorigin">

2181 `SDKMessageOrigin`2176 `SDKMessageOrigin`


2209 2204 

2210| `kind` | Arti |2205| `kind` | Arti |

2211| - | - |2206| - | - |

2212| `human` | Input langsung dari pengguna akhir. Jika aplikasi Anda meneruskan apa yang diketik pengguna sebagai pesan pengguna, atur `origin` ke `{ kind: "human" }` secara eksplisit: Claude Code memperlakukan pesan pengguna tanpa `origin` sebagai tidak teratribusi, dan memeriksa yang memerlukan prompt yang diketik manusia, seperti [kata kunci workflow `ultracode`](/docs/id/workflows#ask-for-a-workflow-in-your-prompt), tidak menerimanya. Sebelum v2.1.210, Claude Code memperlakukan `origin` yang tidak ada pada pesan pengguna sebagai input manusia. |2207| `human` | Input langsung dari pengguna akhir. Jika aplikasi Anda meneruskan apa yang diketik pengguna sebagai pesan pengguna, atur `origin`-nya ke `{ kind: "human" }` secara eksplisit: Claude Code memperlakukan pesan pengguna tanpa `origin` sebagai tidak teratribusi, dan pemeriksaan yang memerlukan prompt yang diketik manusia, seperti [kata kunci workflow `ultracode`](/docs/id/workflows#ask-for-a-workflow-in-your-prompt), tidak menerimanya. Sebelum v2.1.210, Claude Code memperlakukan `origin` yang tidak ada pada pesan pengguna sebagai input manusia. |

2213| `channel` | Pesan tiba di [channel](/docs/id/channels). `server` adalah nama server MCP sumber. |2208| `channel` | Pesan yang tiba di [channel](/docs/id/channels). `server` adalah nama server MCP sumber. |

2214| `peer` | Pesan dari agen lain: [rekan kerja](/docs/id/agent-teams) dalam proses atau [rekan lintas sesi](/docs/id/cross-session-messaging), sesi Claude Code lain Anda. Lihat [Bidang asal peer](#peer-origin-fields) untuk semantik per-bidang dan model kepercayaan. |2209| `peer` | Pesan dari agent lain: [rekan kerja](/docs/id/agent-teams) dalam proses atau [rekan lintas sesi](/docs/id/cross-session-messaging), sesi Claude Code lain milik Anda. Lihat [Bidang asal peer](#peer-origin-fields) untuk semantik per-bidang dan model kepercayaan. |

2215| `task-notification` | Giliran sintetis yang disuntikkan untuk pengiriman yang tiba tanpa prompt pengguna segar, seperti tugas yang selesai; lihat [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) untuk lengan itu. Prompt yang aplikasi Anda [deklarasikan sebagai jalankan terjadwal](#declare-a-scheduled-run) membawa jenis ini juga. `subkind` opsional menandai apa yang menaikkan notifikasi. Lihat [Subkind notifikasi tugas](#task-notification-subkinds). |2210| `task-notification` | Giliran sintetis yang disuntikkan untuk pengiriman yang tiba tanpa prompt pengguna baru, seperti tugas latar belakang yang selesai; lihat [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) untuk lengan itu. Prompt yang aplikasi Anda [deklarasikan sebagai run terjadwal](#declare-a-scheduled-run) membawa jenis ini juga. `subkind` opsional menandai apa yang memunculkan notifikasi. Lihat [Subkind notifikasi tugas](#task-notification-subkinds). |

2216| `coordinator` | Pesan dari koordinator tim dalam [tim agen](/docs/id/agent-teams). |2211| `coordinator` | Pesan dari koordinator tim dalam [tim agent](/docs/id/agent-teams). |

2217| `auto-continuation` | Giliran sintetis yang disuntikkan ketika sesi berlanjut tanpa input pengguna segar, seperti hasil perintah yang memicu prompt tindak lanjut. |2212| `auto-continuation` | Giliran sintetis yang disuntikkan ketika sesi berlanjut tanpa input pengguna baru, seperti hasil perintah yang memicu prompt tindak lanjut. |

2218| `unclassified` | Giliran yang disuntikkan yang asal usulnya tidak dapat ditentukan. Memerlukan Claude Code v2.1.223 atau lebih baru. Ketika Claude Code menerima [`SDKUserMessage`](#sdkusermessage) dengan `isSynthetic: true` dan tidak dapat mengklasifikasikannya sebagai `kind` lain, ia menetapkan jenis ini saat pesan tiba dan membingkai giliran ke model sebagai sumber non-pengguna daripada memperlakukannya sebagai input manusia. Aplikasi Anda tidak boleh menetapkan nilai ini. |2213| `unclassified` | Giliran yang disuntikkan yang asal usulnya tidak dapat ditentukan. Memerlukan Claude Code v2.1.223 atau lebih baru. Ketika Claude Code menerima [`SDKUserMessage`](#sdkusermessage) dengan `isSynthetic: true` dan tidak dapat mengklasifikasikannya sebagai `kind` lain, ia menetapkan jenis ini saat pesan tiba dan membingkai giliran ke model sebagai sumber non-pengguna daripada memperlakukannya sebagai input manusia. Aplikasi Anda tidak boleh menetapkan nilai ini. |

2219 2214 

2220<h3 id="task-notification-subkinds">2215<h3 id="task-notification-subkinds">

2221 Subkind notifikasi tugas2216 Subkind notifikasi tugas

2222</h3>2217</h3>

2223 2218 

2224Ketika Claude Code mengirimkan notifikasi tugas ke sesi, ia menetapkan `subkind` pada `origin` notifikasi jika server Anthropic memverifikasi dari mana notifikasi itu berasal. Ia juga menetapkan `subkind` ketika aplikasi Anda [mendeklarasikan pesan sebagai jalankan terjadwal](#declare-a-scheduled-run) sendiri, yang memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru. `subkind` memerlukan Claude Code v2.1.213 atau lebih baru, dan mengambil salah satu dari dua nilai:2219Ketika Claude Code mengirimkan notifikasi tugas ke sesi, ia menetapkan `subkind` pada `origin` notifikasi jika server Anthropic memverifikasi dari mana notifikasi itu berasal. Ia juga menetapkan `subkind` ketika aplikasi Anda sendiri [mendeklarasikan pesan sebagai run terjadwal](#declare-a-scheduled-run), yang memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru. `subkind` memerlukan Claude Code v2.1.213 atau lebih baru, dan mengambil salah satu dari dua nilai:

2225 

2226* `scheduled-trigger`: notifikasi adalah prompt tersimpan [rutinitas](/docs/id/routines), disampaikan karena salah satu pemicu rutinitas dipecat: jadwalnya, [pemicu API](/docs/id/routines#add-an-api-trigger), [pemicu GitHub](/docs/id/routines#add-a-github-trigger), atau **Jalankan sekarang**. Prompt yang aplikasi Anda [deklarasikan sebagai jalankan terjadwal](#declare-a-scheduled-run) membawa nilai ini juga. Claude Code membingkai ini ke model sebagai tugas yang ditugaskan sesi, dengan pemberitahuan berbeda dari [pemberitahuan yang dibawa notifikasi tugas lain](#sdktasknotificationmessage).

2227*

2228 2220 

2229`peer-send-message`: notifikasi adalah pesan yang sesi lain Anda kirim dengan alat `send_message` sisi server yang [Claude Code di web](/docs/id/claude-code-on-the-web) gunakan sesi untuk saling berkirim pesan, bukan [alat `SendMessage` lintas sesi](/docs/id/cross-session-messaging), dan server Anthropic memverifikasi bahwa kedua sesi termasuk dalam grup pribadi sesi yang sama. Memerlukan Claude Code v2.1.224 atau lebih baru. Pengiriman `send_message` yang tidak diverifikasi server dengan cara itu tidak mendapat subkind.2221* `scheduled-trigger`: notifikasi adalah prompt tersimpan sebuah [routine](/docs/id/routines), disampaikan karena salah satu pemicu routine aktif: jadwalnya, [pemicu API](/docs/id/routines#add-an-api-trigger)-nya, [pemicu GitHub](/docs/id/routines#add-a-github-trigger)-nya, atau **Run now**. Prompt yang aplikasi Anda [deklarasikan sebagai run terjadwal](#declare-a-scheduled-run) membawa nilai ini juga. Claude Code membingkai ini ke model sebagai tugas yang ditugaskan ke sesi, dengan pemberitahuan berbeda dari [pemberitahuan yang dibawa notifikasi tugas lain](#sdktasknotificationmessage).

2222* `peer-send-message`: notifikasi adalah pesan yang dikirim sesi lain milik Anda dengan tool `send_message` sisi server yang digunakan [sesi cloud](/docs/id/claude-code-on-the-web) untuk saling berkirim pesan, bukan [tool `SendMessage` lintas sesi](/docs/id/cross-session-messaging), dan server Anthropic memverifikasi bahwa kedua sesi termasuk dalam grup pribadi sesi yang sama. Memerlukan Claude Code v2.1.224 atau lebih baru. Pengiriman `send_message` yang tidak diverifikasi server dengan cara itu tidak mendapat subkind.

2230 2223 

2231Setiap notifikasi tugas lain tidak memiliki `subkind`. Itu termasuk [aktivitas PR](/docs/id/claude-code-on-the-web#how-claude-responds-to-pr-activity) yang disampaikan ke sesi dan acara latar belakang seperti tugas yang selesai. Pesan dari [alat `SendMessage` lintas sesi](/docs/id/cross-session-messaging) sama sekali bukan notifikasi tugas: apakah mereka berasal dari sesi di mesin yang sama atau melalui server Anthropic dari mesin lain, Claude Code memberi mereka `kind: "peer"` dan [bidang asal peer](#peer-origin-fields).2224Setiap notifikasi tugas lain tidak memiliki `subkind`. Itu termasuk [aktivitas PR](/docs/id/claude-code-on-the-web#how-claude-responds-to-pr-activity) yang disampaikan ke sesi dan acara latar belakang seperti tugas yang selesai. Pesan dari [tool `SendMessage` lintas sesi](/docs/id/cross-session-messaging) sama sekali bukan notifikasi tugas: baik berasal dari sesi di mesin yang sama maupun melalui server Anthropic dari mesin lain, Claude Code memberinya `kind: "peer"` dan [bidang asal peer](#peer-origin-fields).

2232 2225 

2233`fireReason` mengatakan mengapa notifikasi `scheduled-trigger` dipecat, sebagai token huruf kecil pendek seperti `scheduled`, `manual`, `retry`, `catch_up`, atau `api`. Server Anthropic menetapkannya pada pengiriman [rutinitas](/docs/id/routines), dan aplikasi Anda menetapkannya ketika mendeklarasikan jalankan terjadwal. Itu tidak ada ketika tidak ada yang mengirimnya. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.2226`fireReason` mengatakan mengapa notifikasi `scheduled-trigger` aktif, sebagai token huruf kecil pendek seperti `scheduled`, `manual`, `retry`, `catch_up`, atau `api`. Server Anthropic menetapkannya pada pengiriman [routine](/docs/id/routines), dan aplikasi Anda menetapkannya ketika mendeklarasikan run terjadwal. Bidang ini tidak ada ketika keduanya tidak mengirimnya. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.

2234 2227 

2235<h4 id="declare-a-scheduled-run">2228<h4 id="declare-a-scheduled-run">

2236 Deklarasikan jalankan terjadwal2229 Deklarasikan run terjadwal

2237</h4>2230</h4>

2238 2231 

2239Jika aplikasi Anda menjalankan prompt sesuai jadwal sendiri, deklarasikan setiap jalankan sehingga Claude Code membingkai giliran ke model sebagai tugas terjadwal daripada sebagai input langsung dari pengguna. Mulai sesi dengan `CLAUDE_CODE_HOST_SCHEDULED_RUN` diatur ke `1` dalam [`env`](#options), kemudian kirim [`SDKUserMessage`](#sdkusermessage) jalankan dengan `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }` dan tanpa `isSynthetic`. Claude Code mengabaikan deklarasi dalam proses yang dimulai tanpa variabel itu. Ia juga mengabaikannya dalam proses yang lingkungannya membawa [`CLAUDECODE`](/docs/id/env-vars) atau `CLAUDE_CODE_CHILD_SESSION`. Claude Code menyimpan `fireReason` hanya ketika nilainya adalah 1 hingga 32 huruf kecil atau garis bawah. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.2232Jika aplikasi Anda menjalankan prompt sesuai jadwalnya sendiri, deklarasikan setiap run sehingga Claude Code membingkai giliran ke model sebagai tugas terjadwal daripada sebagai input langsung dari pengguna. Mulai sesi dengan `CLAUDE_CODE_HOST_SCHEDULED_RUN` diatur ke `1` dalam [`env`](#options), kemudian kirim [`SDKUserMessage`](#sdkusermessage) run dengan `origin: { kind: "task-notification", subkind: "scheduled-trigger", fireReason: "scheduled" }` dan tanpa `isSynthetic`. Claude Code mengabaikan deklarasi dalam proses yang dimulai tanpa variabel itu. Ia juga mengabaikannya dalam proses yang lingkungannya membawa [`CLAUDECODE`](/docs/id/env-vars) atau `CLAUDE_CODE_CHILD_SESSION`. Claude Code menyimpan `fireReason` hanya ketika nilainya adalah 1 hingga 32 huruf kecil atau garis bawah. Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru.

2240 2233 

2241<h3 id="peer-origin-fields">2234<h3 id="peer-origin-fields">

2242 Bidang asal peer2235 Bidang asal peer

2243</h3>2236</h3>

2244 2237 

2245Asal `peer` mengidentifikasi agen mana yang mengirim pesan: [rekan kerja](/docs/id/agent-teams) dalam proses mengirim ke `main` dengan `SendMessage`, atau [rekan lintas sesi](/docs/id/cross-session-messaging), sesi Claude Code lain Anda. Rekan lintas sesi memerlukan Claude Code v2.1.224 atau lebih baru di macOS dan Linux; lihat [ketersediaan pesan lintas sesi](/docs/id/cross-session-messaging#availability) untuk persyaratan Windows asli. Rekan lintas sesi dapat berjalan di mesin yang sama, atau di [mesin lain Anda](/docs/id/cross-session-messaging#message-sessions-on-other-machines) atau [Claude Code di web](/docs/id/claude-code-on-the-web) ketika pesannya tiba melalui Remote Control. Dua jenis pengirim mengisi bidang secara berbeda:2238Asal `peer` mengidentifikasi agent mana yang mengirim pesan: [rekan kerja](/docs/id/agent-teams) dalam proses yang mengirim ke `main` dengan `SendMessage`, atau [rekan lintas sesi](/docs/id/cross-session-messaging), sesi Claude Code lain milik Anda. Rekan lintas sesi memerlukan Claude Code v2.1.224 atau lebih baru di macOS dan Linux; lihat [ketersediaan pesan lintas sesi](/docs/id/cross-session-messaging#availability) untuk persyaratan Windows native. Rekan lintas sesi dapat berjalan di mesin yang sama, atau di [mesin lain milik Anda](/docs/id/cross-session-messaging#message-sessions-on-other-machines) atau [di cloud](/docs/id/claude-code-on-the-web) ketika pesannya tiba melalui Remote Control. Dua jenis pengirim mengisi bidang secara berbeda:

2246 

2247* `from`: nama rekan kerja, atau alamat pengirim untuk rekan lintas sesi. Untuk [pesan lintas mesin satu arah](/docs/id/cross-session-messaging#message-sessions-on-other-machines), pengirim tidak memiliki alamat balasan dan `from` adalah `"unknown"`. Nilai adalah yang dibuat pengirim; `verifiedPeerPid` adalah identitas yang diverifikasi.

2248*

2249 

2250`fromMode`: kelas izin sesi pengiriman, `bypass` atau `prompting`, dideklarasikan oleh host yang meneruskan pesan peer antara sesi Anda, seperti [aplikasi desktop](/docs/id/desktop#work-across-sessions). Claude Code membacanya dalam sesi penerima ketika menerapkan [kontrol inbound](/docs/id/cross-session-messaging#control-inbound-messages). Memerlukan Agent SDK v0.3.234 atau lebih baru.

2251 2239 

2240* `from`: nama rekan kerja, atau alamat pengirim untuk rekan lintas sesi. Untuk [pesan lintas mesin satu arah](/docs/id/cross-session-messaging#message-sessions-on-other-machines), pengirim tidak memiliki alamat balasan dan `from` adalah `"unknown"`. Nilai dibuat oleh pengirim; `verifiedPeerPid` adalah identitas yang diverifikasi.

2241* `fromMode`: kelas izin sesi pengirim, `bypass` atau `prompting`, dideklarasikan oleh host yang meneruskan pesan peer antara sesi Anda, seperti [aplikasi desktop](/docs/id/desktop#work-across-sessions). Claude Code membacanya dalam sesi penerima ketika menerapkan [kontrol inbound](/docs/id/cross-session-messaging#control-inbound-messages). Memerlukan Agent SDK v0.3.234 atau lebih baru.

2252* `senderTaskId`: ID tugas rekan kerja. Tidak ada untuk rekan lintas sesi.2242* `senderTaskId`: ID tugas rekan kerja. Tidak ada untuk rekan lintas sesi.

2253*2243* `name`: nama tampilan pengirim, dinormalisasi oleh Claude Code: ia menghapus code point kontrol, format, surrogate, dan pemisah baris atau paragraf Unicode, kemudian memangkas hasil dan membatasinya pada 64 code point dengan elipsis. Memerlukan Claude Code v2.1.205 atau lebih baru.

2254 2244* `body`: badan pesan yang didekode dengan amplop peer dihapus, byte-tepat dengan apa yang dilihat model. Selalu ada untuk pesan rekan kerja; untuk rekan lintas sesi, ada hanya ketika giliran adalah tepat satu amplop peer yang dibentuk Claude Code. Render `name` dan `body` daripada mengurai ulang teks pesan. Memerlukan Claude Code v2.1.205 atau lebih baru.

2255`name`: nama tampilan pengirim, dinormalisasi oleh Claude Code: ia menghapus kontrol Unicode, format, surrogate, dan pemisah baris atau paragraf, kemudian memangkas hasil dan membatasinya pada 64 poin kode dengan elipsis. Memerlukan Claude Code v2.1.205 atau lebih baru.2245* `fromSession`: ID sesi pengirim yang dapat dibuka host, diatur oleh host pengirim sehingga UI Anda dapat menautkan kembali ke sesi pengirim. Seperti `from`, nilainya diklaim oleh pengirim: gunakan hanya sebagai target navigasi, dan jangan perlakukan sebagai bukti identitas pengirim. Memerlukan Claude Code v2.1.216 atau lebih baru.

2256 2246* `verifiedPeerPid`: ID proses dari proses yang terhubung ke soket pesan lintas sesi sesi ini, diverifikasi oleh kernel dan dibaca dari koneksi itu sendiri, tidak pernah dari payload. Gunakan ini, bukan `from`, untuk mengidentifikasi pengirim: `from` dapat dipalsukan oleh proses apa pun milik pengguna yang sama. Bidang tidak ada ketika Claude Code tidak dapat memverifikasinya, seperti di Windows atau ingress non-soket, jadi nilai yang tidak ada berarti pengirim tidak diverifikasi. Untuk lalu lintas yang diteruskan, ini mengidentifikasi relay daripada penulis pesan, dan ID proses dapat didaur ulang, jadi perlakukan sebagai asal usul daripada token autentikasi. Memerlukan Claude Code v2.1.216 atau lebih baru.

2257*

2258 

2259`body`: badan pesan yang didekode dengan amplop peer dihapus, byte-tepat dengan apa yang dilihat model. Selalu ada untuk pesan rekan kerja; untuk rekan lintas sesi, ada hanya ketika giliran adalah tepat satu amplop peer yang dibentuk Claude Code. Render `name` dan `body` daripada mengurai ulang teks pesan. Memerlukan Claude Code v2.1.205 atau lebih baru.

2260 

2261*

2262 

2263`fromSession`: ID sesi yang dapat dibuka host pengirim, diatur oleh host pengirim sehingga UI Anda dapat menautkan kembali ke sesi pengiriman. Seperti `from`, itu adalah yang diklaim pengirim: gunakan hanya sebagai target navigasi, dan jangan perlakukan sebagai bukti identitas pengirim. Memerlukan Claude Code v2.1.216 atau lebih baru.

2264 

2265*

2266 

2267`verifiedPeerPid`: ID proses dari proses yang terhubung ke soket pesan lintas sesi sesi ini, diverifikasi oleh kernel dan dibaca dari koneksi itu sendiri, tidak pernah dari muatan. Gunakan itu, bukan `from`, untuk mengidentifikasi pengirim: `from` dapat dipalsukan oleh proses pengguna yang sama. Bidang tidak ada ketika Claude Code tidak dapat memverifikasinya, seperti di Windows atau ingress non-soket, jadi nilai yang tidak ada berarti pengirim tidak diverifikasi. Untuk lalu lintas yang diteruskan itu mengidentifikasi relay daripada penulis pesan, dan ID proses dapat didaur ulang, jadi perlakukan sebagai asal usul daripada token autentikasi. Memerlukan Claude Code v2.1.216 atau lebih baru.

2268 2247 

2269<h2 id="hook-types">2248<h2 id="hook-types">

2270 Tipe Hook2249 Tipe Hook


5092 5071 

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

5094| - | - |5073| - | - |

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

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

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

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

5099 5078 

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

5101 5080 

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

5103 `SdkBeta`5082 `SdkBeta`


5110```5089```

5111 5090 

5112<Warning>5091<Warning>

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

5114</Warning>5093</Warning>

5115 5094 

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


5129};5108};

5130```5109```

5131 5110 

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

5133 5112 

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

5135 `ModelInfo`5114 `ModelInfo`


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

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

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

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

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

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

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

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

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

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

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

5165 5144 

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

5167 `AgentInfo`5146 `AgentInfo`

5168</h3>5147</h3>

5169 5148 

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

5171 5150 

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

5173type AgentInfo = {5152type AgentInfo = {


5179 5158 

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

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

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

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

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

5185 5164 

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

5187 `McpServerProvenance`5166 `McpServerProvenance`


5198 5177 

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

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

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

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

5203 5182 

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

5205 5184 

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

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

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

5209 5188 

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

5211 5190 


5242};5221};

5243```5222```

5244 5223 

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

5246 5225 

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

5248 5227 

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

5250 `McpServerStatusConfig`5229 `McpServerStatusConfig`


5283 `ModelUsage`5262 `ModelUsage`

5284</h3>5263</h3>

5285 5264 

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

5287 5266 

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

5289type ModelUsage = {5268type ModelUsage = {


5302};5281};

5303```5282```

5304 5283 

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

5306 5285 

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

5308 5287 

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

5310 5289 


5357 5336 

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

5359 5338 

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

5361 5340 

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

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

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

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

5366 5345 

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

5368 `CallToolResult`5347 `CallToolResult`


5374type CallToolResult = {5353type CallToolResult = {

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

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

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

5378 }>;5357 }>;

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

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


5385 `SDKMcpResourceLink`5364 `SDKMcpResourceLink`

5386</h3>5365</h3>

5387 5366 

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

5389 5368 

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

5391type SDKMcpResourceLink = {5370type SDKMcpResourceLink = {


5399};5378};

5400```5379```

5401 5380 

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

5403 5382 

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

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


5415 `ThinkingConfig`5394 `ThinkingConfig`

5416</h3>5395</h3>

5417 5396 

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

5419 5398 

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

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

5422 5401 

5423type ThinkingConfig =5402type ThinkingConfig =

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

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

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

5427```5406```

5428 5407 

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

5430 5409 

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

5432 `SpawnedProcess`5411 `SpawnedProcess`


5476```5455```

5477 5456 

5478<Note>5457<Note>

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

5480 5459 

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

5482</Note>5461</Note>

5483 5462 

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


5495};5474};

5496```5475```

5497 5476 

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

5499 5478 

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

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

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

5503 5482 

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

5505 5484 

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

5507 5486 

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

5509 `RewindFilesResult`5488 `RewindFilesResult`


5522};5501};

5523```5502```

5524 5503 

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

5526 5505 

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

5528 `SDKStatusMessage`5507 `SDKStatusMessage`


5545 `SDKTaskNotificationMessage`5524 `SDKTaskNotificationMessage`

5546</h3>5525</h3>

5547 5526 

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

5549 5528 

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

5551type SDKTaskNotificationMessage = {5530type SDKTaskNotificationMessage = {


5568};5547};

5569```5548```

5570 5549 

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

5572 5551 

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

5574 5553 

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

5576 5555 

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

5578 `SDKToolUseSummaryMessage`5557 `SDKToolUseSummaryMessage`


5594 `SDKHookStartedMessage`5573 `SDKHookStartedMessage`

5595</h3>5574</h3>

5596 5575 

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

5598 5577 

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

5600 5579 

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

5602type SDKHookStartedMessage = {5581type SDKHookStartedMessage = {


5635 `SDKHookResponseMessage`5614 `SDKHookResponseMessage`

5636</h3>5615</h3>

5637 5616 

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

5639 5618 

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

5641type SDKHookResponseMessage = {5620type SDKHookResponseMessage = {


5658 `SDKToolProgressMessage`5637 `SDKToolProgressMessage`

5659</h3>5638</h3>

5660 5639 

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

5662 5641 

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

5664type SDKToolProgressMessage = {5643type SDKToolProgressMessage = {


5683};5662};

5684```5663```

5685 5664 

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

5687 5666 

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

5689 5668 

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

5691 5670 

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

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

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

5695 5674 

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

5697 `SDKAuthStatusMessage`5676 `SDKAuthStatusMessage`


5714 `SDKTaskStartedMessage`5693 `SDKTaskStartedMessage`

5715</h3>5694</h3>

5716 5695 

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

5718 5697 

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

5720type SDKTaskStartedMessage = {5699type SDKTaskStartedMessage = {


5732};5711};

5733```5712```

5734 5713 

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

5736 5715 

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

5738 5717 

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

5740 5719 

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

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

5743 5722 

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

5745 5724 

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

5747 `SDKTaskProgressMessage`5726 `SDKTaskProgressMessage`

5748</h3>5727</h3>

5749 5728 

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

5751 5730 

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

5753 5732 

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

5755type SDKTaskProgressMessage = {5734type SDKTaskProgressMessage = {


5775 `SDKTaskUpdatedMessage`5754 `SDKTaskUpdatedMessage`

5776</h3>5755</h3>

5777 5756 

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

5779 5758 

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

5781type SDKTaskUpdatedMessage = {5760type SDKTaskUpdatedMessage = {


5799 `SDKBackgroundTasksChangedMessage`5778 `SDKBackgroundTasksChangedMessage`

5800</h3>5779</h3>

5801 5780 

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

5803 5782 

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

5805 5784 

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

5807 5786 

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

5809 5788 

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

5811 5790 

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

5813 5792 


5830 `SDKThinkingTokensMessage`5809 `SDKThinkingTokensMessage`

5831</h3>5810</h3>

5832 5811 

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

5834 5813 

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

5836 5815 

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

5838 5817 


5852 `SDKFilesPersistedEvent`5831 `SDKFilesPersistedEvent`

5853</h3>5832</h3>

5854 5833 

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

5856 5835 

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

5858type SDKFilesPersistedEvent = {5837type SDKFilesPersistedEvent = {


5870 `SDKRateLimitEvent`5849 `SDKRateLimitEvent`

5871</h3>5850</h3>

5872 5851 

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

5874 5853 

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

5876type SDKRateLimitEvent = {5855type SDKRateLimitEvent = {


5888};5867};

5889```5868```

5890 5869 

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

5892 5871 

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

5894 `SDKLocalCommandOutputMessage`5873 `SDKLocalCommandOutputMessage`


5910 `SDKCommandsChangedMessage`5889 `SDKCommandsChangedMessage`

5911</h3>5890</h3>

5912 5891 

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

5914 5893 

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

5916 5895 

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

5918type SDKCommandsChangedMessage = {5897type SDKCommandsChangedMessage = {


5928 `SDKPromptSuggestionMessage`5907 `SDKPromptSuggestionMessage`

5929</h3>5908</h3>

5930 5909 

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

5932 5911 

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

5934type SDKPromptSuggestionMessage = {5913type SDKPromptSuggestionMessage = {


5959 5938 

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

5961 5940 

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

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

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

5965 5944 

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

5967 5946 

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

5969 5948 

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

5971 `AbortError`5950 `AbortError`


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

5978```5957```

5979 5958 

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

5981 5960 

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

5983 Konfigurasi Sandbox5962 Konfigurasi Sandbox

agent-teams.md +5 −2

Details

195* **Mode in-process**: gunakan tombol panah atas dan bawah di panel agent untuk memilih rekan tim, kemudian tekan Enter untuk melihat sessionnya dan ketik untuk mengirim pesan kepadanya. Tekan `x` pada rekan tim yang dipilih untuk menghentikannya. Tekan Ctrl+T untuk toggle daftar tugas.195* **Mode in-process**: gunakan tombol panah atas dan bawah di panel agent untuk memilih rekan tim, kemudian tekan Enter untuk melihat sessionnya dan ketik untuk mengirim pesan kepadanya. Tekan `x` pada rekan tim yang dipilih untuk menghentikannya. Tekan Ctrl+T untuk toggle daftar tugas.

196* **Mode split-pane**: klik ke dalam pane rekan tim untuk berinteraksi dengan session mereka secara langsung. Setiap rekan tim memiliki tampilan penuh dari terminal mereka sendiri.196* **Mode split-pane**: klik ke dalam pane rekan tim untuk berinteraksi dengan session mereka secara langsung. Setiap rekan tim memiliki tampilan penuh dari terminal mereka sendiri.

197 197 

198Saat Anda melihat rekan tim in-process, teks biasa dan [skills](/docs/id/skills) pergi ke rekan tim itu, tetapi perintah built-in masih berjalan dalam session lead.198Saat Anda melihat rekan tim in-process, teks biasa dan [skills](/docs/id/skills) pergi ke rekan tim itu, dan perintah built-in pergi ke sesi lead, dengan pengaman berikut:

199 199 

200Model rekan tim dan fast mode diperbaiki ketika mereka spawn, jadi `/model` dan `/fast` hanya mengubah pengaturan lead. Mulai dari v2.1.199, mengetik salah satu perintah saat melihat rekan tim menampilkan pemberitahuan bahwa perubahan berlaku untuk lead; versi sebelumnya menerapkannya ke lead tanpa indikasi. `/effort` masih berlaku untuk giliran rekan tim yang lebih baru, karena rekan tim mengikuti [effort level](/docs/id/model-config#adjust-effort-level) lead.200* `/compact`, `/clear`, dan `/rewind` bertindak pada percakapan lead, sehingga Claude Code meminta Anda untuk mengonfirmasi sebelum menjalankan salah satunya dari tampilan ini.

201* `/model` dan `/fast` menetapkan model dan fast mode lead, bukan milik rekan tim, sehingga keduanya tidak berjalan dari tampilan ini. Sebuah pemberitahuan memberi tahu Anda alasannya.

202 

203Model dan fast mode rekan tim ditetapkan saat rekan tim tersebut di-spawn. `/effort` masih berlaku untuk giliran berikutnya dari rekan tim yang sedang dilihat, karena rekan tim mengikuti [tingkat effort](/docs/id/model-config#adjust-effort-level) lead.

201 204 

202<h3 id="assign-and-claim-tasks">205<h3 id="assign-and-claim-tasks">

203 Tetapkan dan klaim tugas206 Tetapkan dan klaim tugas

agent-view.md +26 −6

Details

224 224 

225Sebagian besar waktu panel intip cukup dan Anda tidak perlu membuka transkrip lengkap.225Sebagian besar waktu panel intip cukup dan Anda tidak perlu membuka transkrip lengkap.

226 226 

227Ketik balasan di panel intip dan tekan `Enter` untuk mengirimnya ke sesi itu. Ketika sesi mengajukan pertanyaan dengan pilihan yang telah ditentukan, panel intip menunjukkannya sebagai daftar bernomor dan Anda dapat menekan tombol angka untuk memilih satu. Prompt izin ditampilkan sebagai teks yang menjelaskan apa yang ingin dijalankan sesi, tanpa opsi bernomor. Ketik balasan untuk menjawabnya, atau lampirkan untuk menjawab dengan prompt standar. Untuk sesi terhalang lainnya, tekan `Tab` untuk mengisi input dengan balasan yang disarankan yang dapat Anda edit sebelum mengirim. Awali balasan dengan `!` untuk mengirim perintah Bash sebagai gantinya.227Ketik balasan di panel intip dan tekan `Enter` untuk mengirimnya ke sesi itu. Awali balasan dengan `!` untuk mengirim perintah Bash sebagai gantinya. Apa yang terjadi pada balasan tergantung pada sesi dan apa yang Anda kirim:

228 

229* Sesi yang sedang bekerja: balasan masuk ke [antrean pesan](/docs/id/interactive-mode#queue-messages-while-claude-works) sesi alih-alih menginterupsi respons, dan berlaku [saat input dalam antrean berlaku](/docs/id/interactive-mode#when-claude-code-sends-what-you-queued). [Perintah](/docs/id/commands) menunggu hingga giliran berakhir, bahkan perintah yang langsung berjalan saat Anda mengetiknya di prompt sesi itu sendiri

230* Balasan yang persis `/stop`: menghentikan sesi seketika alih-alih dikirimkan kepadanya, baik sesi sedang bekerja maupun menunggu Anda

231* [Shell job](#run-a-shell-command): balasan, termasuk `/stop`, dikirim ke terminal perintah sebagai input yang diketik

232 

233Ketika sesi menunggu Anda, cara Anda menjawab dari panel intip tergantung pada apa yang ditunggunya:

234 

235* Pertanyaan dengan pilihan yang telah ditentukan: panel mencantumkan pilihan berdasarkan nomor. Dengan input balasan kosong, tekan nomor pilihan untuk mengisinya, lalu `Enter` untuk mengirimnya, atau ketik jawaban Anda sendiri sebagai gantinya

236* Pertanyaan tanpa pilihan yang telah ditentukan: ketik jawaban Anda. Ketika input kosong menampilkan balasan yang disarankan, tekan `Tab` untuk mengisinya dan mengeditnya sebelum mengirim

237* Permintaan izin atau dialog lain, seperti permintaan [sandbox](/docs/id/sandboxing) atau [permintaan masukan](/docs/id/mcp#respond-to-mcp-elicitation-requests) dari server MCP: membalas tidak menjawabnya. Balasan Anda menunggu dalam antrean. Untuk menjawab dialog, lampirkan dengan `→`

228 238 

229Ketika hook [`PermissionRequest`](/docs/id/hooks#permissionrequest) atau [`PreToolUse`](/docs/id/hooks#pretooluse) mengembalikan output yang tidak dapat divalidasi Claude Code untuk panggilan yang diminta sesi, baris menunjukkan acara hook dan `hook output invalid:` dengan kesalahan validasi sebelum teks permintaan yang tertunda. Untuk hook yang gagal dengan cara lain, baris mengatakan hook gagal. Sesi masih menunggu permintaan yang sama.239Ketika hook [`PermissionRequest`](/docs/id/hooks#permissionrequest) atau [`PreToolUse`](/docs/id/hooks#pretooluse) mengembalikan output yang tidak dapat divalidasi Claude Code untuk panggilan yang diminta sesi, baris menunjukkan acara hook dan `hook output invalid:` dengan kesalahan validasi sebelum teks permintaan yang tertunda. Untuk hook yang gagal dengan cara lain, baris mengatakan hook gagal. Sesi masih menunggu permintaan yang sama.

230 240 


301* Tekan `Ctrl+T` untuk menyematkan sesi ke atas dan [menjaga proses tetap berjalan](#the-supervisor-process) saat menganggur311* Tekan `Ctrl+T` untuk menyematkan sesi ke atas dan [menjaga proses tetap berjalan](#the-supervisor-process) saat menganggur

302* Tekan `Shift+↑` atau `Shift+↓` untuk mengatur ulang sesi312* Tekan `Shift+↑` atau `Shift+↓` untuk mengatur ulang sesi

303* Tekan `Ctrl+R` untuk mengganti nama sesi313* Tekan `Ctrl+R` untuk mengganti nama sesi

304* Tekan `Enter` pada header grup untuk menutupnya314* Tekan `Enter` pada header grup untuk menciutkannya, kecuali saat [filter](#filter-sessions) aktif, ketika setiap grup tetap terbuka

305 315 

306Untuk menghapus sesi dari daftar, tekan `Ctrl+X` untuk menghentikannya dan `Ctrl+X` lagi dalam dua detik untuk menghapusnya. Menekan `Ctrl+X` pada header grup menghapus setiap sesi dalam grup itu setelah konfirmasi.316Untuk menghapus sesi dari daftar, tekan `Ctrl+X` untuk menghentikannya dan `Ctrl+X` lagi dalam dua detik untuk menghapusnya. Menekan `Ctrl+X` pada header grup menghapus setiap sesi dalam grup itu setelah konfirmasi.

307 317 


324 Filter sesi334 Filter sesi

325</h3>335</h3>

326 336 

327Ketik dalam input pengiriman untuk memfilter alih-alih mengirim:337Awali input dispatch dengan salah satu filter berikut untuk mempersempit daftar saat Anda mengetik:

328 338 

329| Filter | Menampilkan |339| Filter | Menampilkan |

330| :- | :- |340| :- | :- |

331| `a:<name>` | Sesi yang menjalankan agen bernama |341| `a:<name>` | Sesi yang menjalankan agen bernama |

332| `s:<state>` | Sesi dalam status tertentu, seperti `s:working`. Juga menerima `s:blocked` untuk semua yang menunggu Anda |342| `s:<state>` | Sesi dalam status tertentu, seperti `s:working`, atau di bawah header grup tertentu, seperti `s:ready` untuk `Ready for review`. `s:blocked` mencantumkan semua yang menunggu Anda |

333| `#<number>` atau URL PR atau MR | Sesi yang bekerja pada permintaan tarik atau permintaan penggabungan itu |343| `n:<text>` | Sesi yang nama atau prompt pertamanya berisi teks tersebut, seperti `n:login`. Memerlukan Claude Code v2.1.287 atau lebih baru |

344| `o:<text>` | Sesi yang hasilnya berisi teks tersebut, seperti `o:merged`. `o:` tanpa teks mencantumkan setiap sesi yang telah melaporkan hasil |

345| Nomor pull request atau merge request, seperti `#1234`, atau URL-nya | Sesi yang bekerja pada pull request atau merge request tersebut |

334| URL lainnya | Sesi yang prompt pertamanya berisi URL itu |346| URL lainnya | Sesi yang prompt pertamanya berisi URL itu |

335 347 

348Untuk menggabungkan filter, mulai dengan `a:`, `s:`, `n:`, atau `o:` lalu tambahkan filter lain, dipisahkan dengan spasi. Daftar menampilkan sesi yang cocok dengan semuanya. Misalnya, `s:blocked a:reviewer` mencantumkan sesi `reviewer` yang sedang menunggu Anda.

349 

350Saat filter aktif, grup yang Anda ciutkan terbuka untuk menampilkan kecocokannya dan kecocokan pertama dipilih, sehingga menekan `Enter` akan membukanya. Kosongkan input untuk menghapus filter, dan grup-grup tersebut diciutkan kembali.

351 

336<h3 id="keyboard-shortcuts">352<h3 id="keyboard-shortcuts">

337 Pintasan keyboard353 Pintasan keyboard

338</h3>354</h3>


342| Pintasan | Tindakan |358| Pintasan | Tindakan |

343| :- | :- |359| :- | :- |

344| `↑` / `↓` | Pindah antar baris |360| `↑` / `↓` | Pindah antar baris |

345| `Enter` | Lampirkan ke sesi yang dipilih, atau kirim jika ada teks dalam input |361| `PgUp` / `PgDn` | Pindah ke atas atau ke bawah sebanyak satu layar baris |

362| `Home` / `End` | Lompat ke baris pertama atau terakhir |

363| `Enter` | Lampirkan ke sesi yang dipilih, atau kirim teks di input jika bukan [filter](#filter-sessions) |

346| `Space` | Buka atau tutup panel intip untuk sesi yang dipilih |364| `Space` | Buka atau tutup panel intip untuk sesi yang dipilih |

347| `Shift+Enter` | Sisipkan baris baru dalam input pengiriman, [seperti dalam prompt utama](/docs/id/terminal-config#enter-multiline-prompts) |365| `Shift+Enter` | Sisipkan baris baru dalam input pengiriman, [seperti dalam prompt utama](/docs/id/terminal-config#enter-multiline-prompts) |

348| `Ctrl+Enter` | Kirim dan lampirkan segera, di terminal tempat overlay `?` mencantumkan `ctrl+enter to start and open` |366| `Ctrl+Enter` | Kirim dan lampirkan segera, di terminal tempat overlay `?` mencantumkan `ctrl+enter to start and open` |


1068 1086 

1069| Versi | Perubahan |1087| Versi | Perubahan |

1070| - | - |1088| - | - |

1089| v2.1.287 | [Filter `n:<text>`](#filter-sessions) menemukan sesi berdasarkan nama atau prompt pertama. Selama filter apa pun aktif, grup yang Anda ciutkan diperluas untuk menampilkan kecocokannya dan kecocokan pertama dipilih, sehingga `Enter` membukanya. |

1090| v2.1.287 | Perintah yang dikirim sebagai [balasan intip](#peek-and-reply) dijalankan ketika giliran sesi saat ini berakhir, termasuk perintah yang langsung dijalankan begitu Anda mengetiknya di prompt sesi itu sendiri. Balasan yang persis `/stop` menghentikan sesi seketika. |

1071| v2.1.281 | Pembatasan [`--setting-sources`](/docs/id/cli-reference#cli-flags) [terbawa](/docs/id/agent-view#what-carries-over-when-you-background) ke sesi yang Anda pindahkan ke latar belakang dengan `←` atau `/bg` dan ke sesi yang Anda dispatch dari agent view. Sebelum rilis ini, sesi yang dihasilkan memuat setiap sumber pengaturan. |1091| v2.1.281 | Pembatasan [`--setting-sources`](/docs/id/cli-reference#cli-flags) [terbawa](/docs/id/agent-view#what-carries-over-when-you-background) ke sesi yang Anda pindahkan ke latar belakang dengan `←` atau `/bg` dan ke sesi yang Anda dispatch dari agent view. Sebelum rilis ini, sesi yang dihasilkan memuat setiap sumber pengaturan. |

1072| v2.1.281 | `claude --bg`, dan perintah yang memulai ulang sesi, memeriksa kepercayaan ruang kerja untuk direktori sesi terlebih dahulu. Dari terminal di direktori itu, [dialog kepercayaan muncul](#from-your-shell) jika Anda belum menerimanya; di mana tidak ada dialog yang dapat muncul, seperti dalam skrip, perintah keluar dengan kesalahan [`Workspace not trusted`](/docs/id/errors#workspace-not-trusted-when-dispatching-a-background-session). |1092| v2.1.281 | `claude --bg`, dan perintah yang memulai ulang sesi, memeriksa kepercayaan ruang kerja untuk direktori sesi terlebih dahulu. Dari terminal di direktori itu, [dialog kepercayaan muncul](#from-your-shell) jika Anda belum menerimanya; di mana tidak ada dialog yang dapat muncul, seperti dalam skrip, perintah keluar dengan kesalahan [`Workspace not trusted`](/docs/id/errors#workspace-not-trusted-when-dispatching-a-background-session). |

1073| v2.1.274 | Setelah pembaruan otomatis, agent view yang Anda tinggalkan selama sekitar satu jam dapat meluncurkan ulang dirinya ke build baru. Ketika melakukannya, ia menyimpan [default dispatch](#dispatch-defaults) yang Anda buka dengannya: `--model`, `--effort`, `--permission-mode`, `--allow-dangerously-skip-permissions`, dan `--agent`. Sebelum rilis ini, tampilan yang diluncurkan ulang hanya menyimpan `--cwd` dan flag konfigurasi seperti `--settings` dan `--mcp-config`, jadi sesi yang Anda dispatch setelahnya dimulai tanpa default tersebut. |1093| v2.1.274 | Setelah pembaruan otomatis, agent view yang Anda tinggalkan selama sekitar satu jam dapat meluncurkan ulang dirinya ke build baru. Ketika melakukannya, ia menyimpan [default dispatch](#dispatch-defaults) yang Anda buka dengannya: `--model`, `--effort`, `--permission-mode`, `--allow-dangerously-skip-permissions`, dan `--agent`. Sebelum rilis ini, tampilan yang diluncurkan ulang hanya menyimpan `--cwd` dan flag konfigurasi seperti `--settings` dan `--mcp-config`, jadi sesi yang Anda dispatch setelahnya dimulai tanpa default tersebut. |

Details

526 526 

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

528 528 

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

530 

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

530 Gunakan endpoint Mantle532 Gunakan endpoint Mantle

531</h2>533</h2>

artifacts.md +9 −0

Details

118 118 

119Claude membaca halaman yang ditulis orang lain dengan cara yang sama seperti membaca halaman web dengan [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior): Claude mendapatkan ringkasan tentang apa yang dimintanya daripada halaman mentah, dan ringkasan tersebut melaporkan instruksi yang ditulis ke dalam halaman daripada menyampaikannya. Claude Code juga menyimpan sumber lengkap halaman ke file lokal, yang dapat dibuka Claude ketika memerlukan konten yang tepat, seperti untuk menerbitkan kembali artefak sebagai [editor](#let-someone-edit-with-you).119Claude membaca halaman yang ditulis orang lain dengan cara yang sama seperti membaca halaman web dengan [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior): Claude mendapatkan ringkasan tentang apa yang dimintanya daripada halaman mentah, dan ringkasan tersebut melaporkan instruksi yang ditulis ke dalam halaman daripada menyampaikannya. Claude Code juga menyimpan sumber lengkap halaman ke file lokal, yang dapat dibuka Claude ketika memerlukan konten yang tepat, seperti untuk menerbitkan kembali artefak sebagai [editor](#let-someone-edit-with-you).

120 120 

121Claude Code meminta persetujuan Anda sebelum Claude membaca artifact dalam kasus-kasus berikut, selain permintaan izin apa pun yang diwajibkan oleh mode izin atau aturan Anda:

122 

123* **Sesi cloud tanpa akses jaringan**: untuk [lingkungan cloud](/docs/id/cloud-environments#access-levels), itu adalah level **None**. Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), pengklasifikasi dapat memberikan persetujuan sebagai gantinya; dalam sesi [Cowork](https://claude.com/product/cowork), persetujuan sepenuhnya ada di tangan Anda.

124* **Artifact publik milik organisasi lain**: Claude Code bertanya kepada Anda terlebih dahulu, bahkan dalam auto mode. Ketika Claude Code tidak dapat bertanya kepada Anda, seperti dalam mode `bypassPermissions`, Claude tidak dapat membaca artifact tersebut. Claude hanya dapat membaca artifact ini selama [pengambilan feature flag](/docs/id/env-vars#features-that-need-feature-flag-fetching) aktif.

125* **Pemilik atau pengaturan jaringan yang belum terkonfirmasi**: ketika Claude Code tidak dapat mengonfirmasi siapa yang membuat artifact, atau tidak dapat mengonfirmasi pengaturan jaringan sesi cloud, Claude Code akan bertanya, dan persetujuan Anda hanya berlaku untuk satu permintaan tersebut.

126* **Plan mode, atau pengambilan feature flag dinonaktifkan**: dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), atau jika Anda menonaktifkan [pengambilan feature flag](/docs/id/env-vars#features-that-need-feature-flag-fetching), Claude Code bertanya sebelum tool Artifact membaca artifact yang dibuat oleh orang lain di organisasi Anda.

127 

128Ketika Claude membaca artifact dengan WebFetch, [aturan permintaan izin](/docs/id/tools-reference#webfetch-tool-behavior) milik WebFetch sendiri tetap berlaku.

129 

121<h2 id="collect-comments-on-an-artifact">130<h2 id="collect-comments-on-an-artifact">

122 Kumpulkan komentar pada artefak131 Kumpulkan komentar pada artefak

123</h2>132</h2>

Details

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

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

4 4 

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

6 6 

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

8 8 


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

21</Frame>21</Frame>

22 22 

23Konfigurasi referensi menyediakan:23Deployment ini terdiri dari:

24 24 

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

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

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

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

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

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

31 31 

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

33 Prasyarat33 Prasyarat


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

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

145 145 

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

147 147 

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

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

150 150 

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

152 152 


179 179 

180 store:180 store:

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

182 # readiness_grace_seconds: 300 # keep passing the readiness probe

183 # through a Cloud SQL failover

182 184 

183 upstreams:185 upstreams:

184 - provider: vertex186 - provider: vertex


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

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

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

224 --max-instances=8 \

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

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

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

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

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

227 ```230 ```

228 231 

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

230 233 

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

232 235 


239 242 

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

241 244 

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

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

244 247 

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

246 249 


288 </Step>291 </Step>

289 292 

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

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

292 </Step>295 </Step>

293</Steps>296</Steps>

294 297 


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

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

304 307 

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

306 309 

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

308 311 


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

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

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

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

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

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

323 326 

cli-reference.md +15 −7

Details

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

51 51 

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

53 53 


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

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

158 158 

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

160 

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

162 

163```bash theme={null}

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

165```

166 

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

160 168 

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

162 170 

Details

271 271 

272* **Kredensial Git**: klien git di dalam VM menggunakan kredensial yang dibatasi, yang diverifikasi proxy dan ditukar dengan token GitHub aktual Anda.272* **Kredensial Git**: klien git di dalam VM menggunakan kredensial yang dibatasi, yang diverifikasi proxy dan ditukar dengan token GitHub aktual Anda.

273* **Permintaan API**: permintaan dari alat GitHub bawaan, dan dari `gh` di bawah [placeholder `proxy-injected`](#work-with-github-issues-and-pull-requests), keluar dengan kredensial nyata Anda diganti.273* **Permintaan API**: permintaan dari alat GitHub bawaan, dan dari `gh` di bawah [placeholder `proxy-injected`](#work-with-github-issues-and-pull-requests), keluar dengan kredensial nyata Anda diganti.

274* **Push protection**: `git push` hanya bekerja terhadap cabang kerja saat ini sesi; kloning, pengambilan, dan operasi PR bekerja secara normal.274* **Pembatasan push**: proxy menolak penghapusan branch dan push apa pun selain branch, seperti tag. Proxy tidak membatasi branch mana yang dapat diperbarui oleh push. Untuk melakukannya, gunakan aturan perlindungan branch atau ruleset di GitHub.

275* **Cakupan repositori**: API GitHub dan permintaan aset rilis hanya menjangkau repositori yang terlampir pada sesi, jadi skrip setup yang mengunduh aset rilis dari repositori yang tidak terlampir mendapat 403.275* **Cakupan repositori**: API GitHub dan permintaan aset rilis hanya menjangkau repositori yang terlampir pada sesi, jadi skrip setup yang mengunduh aset rilis dari repositori yang tidak terlampir mendapat 403.

276* **Pembatasan GraphQL**: proxy melayani hanya set operasi GraphQL yang disematkan untuk alur kerja pull-request. Proxy menolak segalanya di endpoint GraphQL dengan 403 yang mengatakan `This GraphQL query is not enabled for this session` dan menyebutkan fallback REST, `gh api repos/{owner}/{repo}/...`. Pembatasan berlaku untuk setiap permintaan melalui proxy terlepas dari kredensial yang Anda berikan, jadi `GH_TOKEN` yang Anda tetapkan mendapat 403 yang sama. Claude tidak dapat menjangkau API GitHub yang hanya ada di GraphQL, seperti Projects v2, melalui proxy.276* **Pembatasan GraphQL**: proxy melayani hanya set operasi GraphQL yang disematkan untuk alur kerja pull-request. Proxy menolak segalanya di endpoint GraphQL dengan 403 yang mengatakan `This GraphQL query is not enabled for this session` dan menyebutkan fallback REST, `gh api repos/{owner}/{repo}/...`. Pembatasan berlaku untuk setiap permintaan melalui proxy terlepas dari kredensial yang Anda berikan, jadi `GH_TOKEN` yang Anda tetapkan mendapat 403 yang sama. Claude tidak dapat menjangkau API GitHub yang hanya ada di GraphQL, seperti Projects v2, melalui proxy.

277 277 

code-review.md +1 −3

Details

434 Ultrareview memerlukan autentikasi dengan akun claude.ai dan tidak tersedia di Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry, atau untuk organisasi dengan Zero Data Retention diaktifkan. Ketika ultrareview tidak tersedia, `/code-review ultra` menjalankan ulasan lokal dalam sesi Anda sebagai gantinya.434 Ultrareview memerlukan autentikasi dengan akun claude.ai dan tidak tersedia di Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry, atau untuk organisasi dengan Zero Data Retention diaktifkan. Ketika ultrareview tidak tersedia, `/code-review ultra` menjalankan ulasan lokal dalam sesi Anda sebagai gantinya.

435</Note>435</Note>

436 436 

437Untuk memulai ulasan cloud dari skrip atau CI, jalankan `claude -p '/code-review ultra'`. Claude Code meluncurkan ulasan dan mencetak tautan untuk melacaknya. Memerlukan Claude Code v2.1.218 atau lebih baru.437Untuk menjalankan ulasan cloud dari skrip atau tugas CI, gunakan [subperintah `claude ultrareview`](/docs/id/ultrareview#run-ultrareview-non-interactively), yang menunggu temuan dan mencetaknya ke stdout.

438 

439Ketika ulasan akan menagih [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans), Claude Code berhenti sebelum meluncurkan, karena konfirmasi penagihan memerlukan sesi interaktif. Jalankan [subperintah `claude ultrareview`](/docs/id/ultrareview#run-ultrareview-non-interactively) sebagai gantinya; dengan menjalankannya, Anda menyetujui biaya.

440 438 

441Perintah ini dinamai `/simplify` sebelum v2.1.147, ketika itu menerapkan perbaikan secara default. `/simplify` menjalankan ulasan pembersihan terpisah yang menerapkan perbaikan tanpa berburu bug. Jika Anda membuat skrip `/simplify` untuk pencarian bug, beralih ke `/code-review --fix`.439Perintah ini dinamai `/simplify` sebelum v2.1.147, ketika itu menerapkan perbaikan secara default. `/simplify` menjalankan ulasan pembersihan terpisah yang menerapkan perbaikan tanpa berburu bug. Jika Anda membuat skrip `/simplify` untuk pencarian bug, beralih ke `/code-review --fix`.

442 440 

commands.md +56 −56

Details

38 38 

39Tabel 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:39Tabel 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:

40 40 

41* **[Skill](/docs/id/skills#bundled-skills)**: sebuah skill bundel. Ini bekerja seperti skill yang Anda tulis sendiri: prompt yang diberikan kepada Claude.41* **[Skill](/docs/id/skills#bundled-skills)**: sebuah skill bawaan. Ini bekerja seperti skill yang Anda tulis sendiri: prompt yang diberikan kepada Claude.

42 * `/verify` berjalan hanya ketika Anda menjalankannya. Sebelum v2.1.215, Claude juga bisa menjalankan `/verify` dengan sendirinya.42 * `/verify` berjalan hanya ketika Anda menjalankannya. Sebelum v2.1.215, Claude juga bisa menjalankan `/verify` dengan sendirinya.

43* **[Workflow](/docs/id/workflows#bundled-workflows)**: sebuah [dynamic workflow](/docs/id/workflows) bundel yang menyebarkan pekerjaan di banyak subagent dan berjalan di latar belakang.43* **[Workflow](/docs/id/workflows#bundled-workflows)**: sebuah [dynamic workflow](/docs/id/workflows) bawaan yang menyebarkan pekerjaan di banyak subagent dan berjalan di latar belakang.

44 * `/deep-research` berjalan hanya ketika Anda menjalankannya. Sebelum v2.1.218, Claude juga bisa memulainya dengan sendirinya.44 * `/deep-research` berjalan hanya ketika Anda menjalankannya. Sebelum v2.1.218, Claude juga bisa memulainya dengan sendirinya.

45 45 

46Untuk menambahkan perintah Anda sendiri, lihat [skills](/docs/id/skills).46Untuk menambahkan perintah Anda sendiri, lihat [skills](/docs/id/skills).


53 53 

54| Perintah | Tujuan |54| Perintah | Tujuan |

55| :- | :- |55| :- | :- |

56| `/add-dir <path>` | Tambahkan direktori kerja untuk akses file selama sesi saat ini. Ketik jalur sebagian untuk melihat saran direktori yang cocok; tekan `Tab` untuk menerima satu. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori yang ditambahkan. Anda tidak dapat menambahkan sebagian besar [jalur jaringan](/docs/id/errors#working-directory-is-a-network-path), seperti `\\server\share`. Setelah penambahan yang berhasil, [hook `DirectoryAdded`](/docs/id/hooks#directoryadded) Anda berjalan. Ketika Anda menjalankannya saat Claude merespons, Claude Code meminta Anda untuk mengonfirmasi direktori segera, dan setelah Anda mengonfirmasi, panggilan alat berikutnya Claude dalam giliran yang sama dapat mengaksesnya. Sebelum v2.1.234, Claude Code mengantrikan perintah sampai giliran selesai |56| `/add-dir <path>` | Tambahkan direktori kerja untuk akses file selama sesi saat ini. Ketik jalur sebagian untuk melihat saran direktori yang cocok; tekan `Tab` untuk menerima satu. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori yang ditambahkan. Anda tidak dapat menambahkan sebagian besar [jalur jaringan](/docs/id/errors#working-directory-is-a-network-path), seperti `\\server\share`. Setelah penambahan yang berhasil, [hook `DirectoryAdded`](/docs/id/hooks#directoryadded) Anda berjalan. Ketika Anda menjalankannya saat Claude merespons, Claude Code meminta Anda untuk mengonfirmasi direktori segera, dan setelah Anda mengonfirmasi, panggilan tool berikutnya Claude dalam giliran yang sama dapat mengaksesnya. Sebelum v2.1.234, Claude Code mengantrikan perintah sampai giliran selesai |

57| `/advisor [model\|off]` | Aktifkan atau nonaktifkan [alat advisor](/docs/id/advisor), yang berkonsultasi dengan model kedua untuk panduan di momen-momen kunci selama tugas. Menerima `fable`, `opus`, `sonnet`, atau ID model lengkap. `fable` memerlukan [akses Fable](/docs/id/advisor#choose-an-advisor-model). Tanpa argumen, membuka pemilih. Dalam sesi tanpa terminal interaktif, atau melalui [Remote Control](/docs/id/remote-control#limitations), berikan model atau `off` sebagai argumen; tanpa argumen di sana, perintah mencetak advisor saat ini sebagai teks. Bentuk-bentuk ini memerlukan Claude Code v2.1.260 atau lebih baru |57| `/advisor [model\|off]` | Aktifkan atau nonaktifkan [tool advisor](/docs/id/advisor), yang berkonsultasi dengan model kedua untuk panduan di momen-momen kunci selama tugas. Menerima `fable`, `opus`, `sonnet`, atau ID model lengkap. `fable` memerlukan [akses Fable](/docs/id/advisor#choose-an-advisor-model). Tanpa argumen, membuka pemilih. Dalam sesi tanpa terminal interaktif, atau melalui [Remote Control](/docs/id/remote-control#limitations), berikan model atau `off` sebagai argumen; tanpa argumen di sana, perintah mencetak advisor saat ini sebagai teks. Bentuk-bentuk ini memerlukan Claude Code v2.1.260 atau lebih baru |

58| `/agents` | Mulai dari v2.1.198, menjalankan `/agents` mencetak pengingat untuk meminta Claude membuat atau mengelola [subagent](/docs/id/sub-agents), atau untuk mengedit `.claude/agents/` atau `~/.claude/agents/` secara langsung. Pada v2.1.197 dan lebih awal, membuka antarmuka interaktif untuk membuat dan mengelola konfigurasi subagent |58| `/agents` | Mulai dari v2.1.198, menjalankan `/agents` mencetak pengingat untuk meminta Claude membuat atau mengelola [subagent](/docs/id/sub-agents), atau untuk mengedit `.claude/agents/` atau `~/.claude/agents/` secara langsung. Pada v2.1.197 dan lebih awal, membuka antarmuka interaktif untuk membuat dan mengelola konfigurasi subagent |

59| `/artifact-capabilities` | **[Skill](/docs/id/skills#bundled-skills).** Muat referensi untuk kemampuan runtime yang dapat digunakan [artifact](/docs/id/artifacts) yang dipublikasikan, seperti [memanggil konektor Anda](/docs/id/artifacts#pull-live-data-with-mcp-connectors) atau [menawarkan unduhan file](/docs/id/artifacts#offer-a-file-download), termasuk yang dimiliki akun Anda. Claude biasanya memuatnya dengan sendirinya sebelum membangun halaman yang menggunakan salah satu. Tersedia di mana [artifact](/docs/id/artifacts#availability) tersedia |59| `/artifact-capabilities` | **[Skill](/docs/id/skills#bundled-skills).** Muat referensi untuk kemampuan runtime yang dapat digunakan [artifact](/docs/id/artifacts) yang dipublikasikan, seperti [memanggil konektor Anda](/docs/id/artifacts#pull-live-data-with-mcp-connectors) atau [menawarkan unduhan file](/docs/id/artifacts#offer-a-file-download), termasuk yang dimiliki akun Anda. Claude biasanya memuatnya dengan sendirinya sebelum membangun halaman yang menggunakan salah satu. Tersedia di mana [artifact](/docs/id/artifacts#availability) tersedia |

60| `/artifact-diagramming` | **[Skill](/docs/id/skills#bundled-skills).** Muat panduan diagram untuk diikuti Claude dalam [artifact](/docs/id/artifacts): kapan diagram membantu, apa yang harus digambar, dan cara menulis SVG inline yang tetap terbaca dalam tema terang dan gelap. Memerlukan Claude Code v2.1.221 atau lebih baru |60| `/artifact-diagramming` | **[Skill](/docs/id/skills#bundled-skills).** Muat panduan diagram untuk diikuti Claude dalam [artifact](/docs/id/artifacts): kapan diagram membantu, apa yang harus digambar, dan cara menulis SVG inline yang tetap terbaca dalam tema terang dan gelap. Memerlukan Claude Code v2.1.221 atau lebih baru |

61| `/artifacts` | Daftar [artifact](/docs/id/artifacts#find-an-artifact-again) yang Anda miliki atau yang dibagikan dengan Anda, kemudian lampirkan satu ke sesi, buka di browser Anda, atau salin tautannya. Tersedia di mana [artifact](/docs/id/artifacts#availability) tersedia. Memerlukan Claude Code v2.1.208 atau lebih baru; melampirkan dengan `Enter` memerlukan v2.1.216 |61| `/artifacts` | Daftar [artifact](/docs/id/artifacts#find-an-artifact-again) yang Anda miliki atau yang dibagikan dengan Anda, kemudian lampirkan satu ke sesi, buka di browser Anda, atau salin tautannya. Tersedia di mana [artifact](/docs/id/artifacts#availability) tersedia. Memerlukan Claude Code v2.1.208 atau lebih baru; melampirkan dengan `Enter` memerlukan v2.1.216 |

62| `/auto-mode-setup` | [Buat entri `autoMode.environment`](/docs/id/auto-mode-config#generate-environment-entries) dari proyek dan sesi terbaru Anda, kemudian tinjau draf dan simpan ke pengaturan pengguna Anda. Memerlukan paket Pro, Max, atau Team dan Claude Code v2.1.228 atau lebih baru. Di Windows asli, memerlukan v2.1.233 atau lebih baru |62| `/auto-mode-setup` | [Buat entri `autoMode.environment`](/docs/id/auto-mode-config#generate-environment-entries) dari proyek dan sesi terbaru Anda, kemudian tinjau draf dan simpan ke pengaturan pengguna Anda. Memerlukan paket Pro, Max, atau Team dan Claude Code v2.1.228 atau lebih baru. Di Windows asli, memerlukan v2.1.233 atau lebih baru |

63| `/autocompact [auto\|<tokens>]` | Atur jendela auto-compact: seberapa penuh jendela konteks sebelum Claude Code melakukan pemadatan otomatis. Berikan ukuran seperti `500k`, atau `auto` untuk kembali ke jendela yang disesuaikan untuk model Anda. Claude Code menyimpan nilai ke pengaturan pengguna dan menerapkannya ke sesi saat ini. Lihat [Atur jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) untuk nilai yang diterima dan apa yang menimpanya. Tanpa argumen, membuka dialog yang menunjukkan jendela saat ini. Memerlukan Claude Code v2.1.221 atau lebih baru |63| `/autocompact [auto\|<tokens>]` | Atur jendela auto-compact: seberapa penuh context window sebelum Claude Code melakukan compaction otomatis. Berikan ukuran seperti `500k`, atau `auto` untuk kembali ke jendela yang disesuaikan untuk model Anda. Claude Code menyimpan nilai ke pengaturan pengguna dan menerapkannya ke sesi saat ini. Lihat [Atur jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) untuk nilai yang diterima dan apa yang menimpanya. Tanpa argumen, membuka dialog yang menunjukkan jendela saat ini. Memerlukan Claude Code v2.1.221 atau lebih baru |

64| `/autofix-pr [prompt]` | Spawn [sesi cloud](/docs/id/claude-code-on-the-web#auto-fix-pull-requests) yang memantau PR cabang saat ini dan mendorong perbaikan ketika CI gagal atau pengulas meninggalkan komentar. Mendeteksi PR terbuka dari cabang yang Anda checkout dengan `gh pr view`; untuk memantau PR berbeda, checkout cabangnya terlebih dahulu. Secara default sesi cloud diberitahu untuk memperbaiki setiap kegagalan CI dan komentar ulasan; berikan prompt untuk memberikan instruksi berbeda, misalnya `/autofix-pr only fix lint and type errors`. Memerlukan CLI `gh` dan akses ke [sesi cloud](/docs/id/claude-code-on-the-web) |64| `/autofix-pr [prompt]` | Spawn [sesi cloud](/docs/id/claude-code-on-the-web#auto-fix-pull-requests) yang memantau PR branch saat ini dan mendorong perbaikan ketika CI gagal atau pengulas meninggalkan komentar. Mendeteksi PR terbuka dari branch yang Anda checkout dengan `gh pr view`; untuk memantau PR berbeda, checkout branch-nya terlebih dahulu. Secara default sesi cloud diberitahu untuk memperbaiki setiap kegagalan CI dan komentar ulasan; berikan prompt untuk memberikan instruksi berbeda, misalnya `/autofix-pr only fix lint and type errors`. Memerlukan CLI `gh` dan akses ke [sesi cloud](/docs/id/claude-code-on-the-web) |

65| `/background [prompt]` | Lepaskan sesi saat ini untuk berjalan sebagai [agen latar belakang](/docs/id/agent-view) dan bebaskan terminal ini. Berikan prompt untuk mengirim satu instruksi lagi sebelum melepaskan. Pantau sesi dengan `claude agents`. Untuk menyalin percakapan ke sesi latar belakang baru sementara sesi ini terus berjalan, gunakan `/fork`. Alias: `/bg` |65| `/background [prompt]` | Lepaskan sesi saat ini untuk berjalan sebagai [agent latar belakang](/docs/id/agent-view) dan bebaskan terminal ini. Berikan prompt untuk mengirim satu instruksi lagi sebelum melepaskan. Pantau sesi dengan `claude agents`. Untuk menyalin percakapan ke sesi latar belakang baru sementara sesi ini terus berjalan, gunakan `/fork`. Alias: `/bg` |

66| `/batch <instruction>` | **[Skill](/docs/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh basis kode secara paralel. Meneliti basis kode, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) per unit dalam [worktree](/docs/id/worktrees) terisolasi. Setiap subagent mengimplementasikan unitnya, menjalankan tes, dan menerbitkan perubahannya. Memerlukan repositori git atau [hook `WorktreeCreate`](/docs/id/worktrees#non-git-version-control) yang membuat worktree. Di luar repositori git, `/batch` memerlukan Claude Code v2.1.281 atau lebih baru. Contoh: `/batch migrate src/ from JavaScript to TypeScript` |66| `/batch <instruction>` | **[Skill](/docs/id/skills#bundled-skills).** Orkestrasi perubahan skala besar di seluruh codebase secara paralel. Meneliti codebase, menguraikan pekerjaan menjadi 5 hingga 30 unit independen, dan menyajikan rencana. Setelah disetujui, spawn satu [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) per unit dalam [worktree](/docs/id/worktrees) terisolasi. Setiap subagent mengimplementasikan unitnya, menjalankan tes, dan menerbitkan perubahannya. Memerlukan repositori git atau [hook `WorktreeCreate`](/docs/id/worktrees#non-git-version-control) yang membuat worktree. Di luar repositori git, `/batch` memerlukan Claude Code v2.1.281 atau lebih baru. Contoh: `/batch migrate src/ from JavaScript to TypeScript` |

67| `/branch [name]` | Buat cabang percakapan saat ini pada titik ini, sehingga Anda dapat mencoba arah berbeda tanpa kehilangan percakapan seperti adanya. Beralih ke cabang dan menyimpan yang asli, yang dapat Anda kembali dengan `/resume`. Untuk menjalankan salinan sebagai [sesi latar belakang](/docs/id/agent-view) terpisah alih-alih beralih ke dalamnya, gunakan `/fork`; untuk menyerahkan tugas sampingan ke [subagent](/docs/id/sub-agents) yang melaporkan kembali ke percakapan ini, gunakan `/subtask` |67| `/branch [name]` | Buat branch dari percakapan saat ini pada titik ini, sehingga Anda dapat mencoba arah berbeda tanpa kehilangan percakapan seperti adanya. Beralih ke branch dan menyimpan yang asli, yang dapat Anda kembali dengan `/resume`. Untuk menjalankan salinan sebagai [sesi latar belakang](/docs/id/agent-view) terpisah alih-alih beralih ke dalamnya, gunakan `/fork`; untuk menyerahkan tugas sampingan ke [subagent](/docs/id/sub-agents) yang melaporkan kembali ke percakapan ini, gunakan `/subtask` |

68| `/btw [question]` | Tanyakan [pertanyaan sampingan](/docs/id/interactive-mode#side-questions-with-%2Fbtw) tentang sesi saat ini tanpa menambahkan ke percakapan. Jika Anda menjalankan `/btw` tanpa pertanyaan, Claude Code menunjukkan pertanyaan sampingan terbaru Anda sehingga Anda dapat menelusuri jawaban sebelumnya; jika Anda belum menanyakan satu pun, Claude Code mencetak baris penggunaan. Sebelum v2.1.212, `/btw` memerlukan pertanyaan |68| `/btw [question]` | Tanyakan [pertanyaan sampingan](/docs/id/interactive-mode#side-questions-with-%2Fbtw) tentang sesi saat ini tanpa menambahkan ke percakapan. Jika Anda menjalankan `/btw` tanpa pertanyaan, Claude Code menunjukkan pertanyaan sampingan terbaru Anda sehingga Anda dapat menelusuri jawaban sebelumnya; jika Anda belum menanyakan satu pun, Claude Code mencetak baris penggunaan. Sebelum v2.1.212, `/btw` memerlukan pertanyaan |

69| `/bug [report]` | Laporkan bug atau bagikan percakapan Anda. Anda memilih berapa banyak riwayat sesi yang akan disertakan dan konfirmasi di layar persetujuan sebelum apa pun dikirim. Ketika Anda masuk ke Anthropic pada koneksi pihak pertama, laporan pergi ke Anthropic; pada penyedia pihak ketiga, atau tanpa kredensial Anthropic, Claude Code menulis laporan ke [arsip lokal di bawah `~/.claude/feedback-bundles/`](/docs/id/data-usage#telemetry-services) yang Anda teruskan sendiri. Di [ekstensi VS Code](/docs/id/vs-code#use-the-prompt-box), `/bug` membuka dialog umpan balik ekstensi sendiri; memerlukan Claude Code v2.1.229 atau lebih baru. Ketika Anda menjalankannya saat Claude merespons, Claude Code membuka dialog segera. Sebelum v2.1.232, Claude Code mengantrikan perintah sampai giliran selesai. Alias: `/share`. Sebelum v2.1.212, `/bug` dan `/share` adalah alias dari `/feedback` |69| `/bug [report]` | Laporkan bug atau bagikan percakapan Anda. Anda memilih berapa banyak riwayat sesi yang akan disertakan dan konfirmasi di layar persetujuan sebelum apa pun dikirim. Ketika Anda masuk ke Anthropic pada koneksi pihak pertama, laporan pergi ke Anthropic; pada penyedia pihak ketiga, atau tanpa kredensial Anthropic, Claude Code menulis laporan ke [arsip lokal di bawah `~/.claude/feedback-bundles/`](/docs/id/data-usage#telemetry-services) yang Anda teruskan sendiri. Di [ekstensi VS Code](/docs/id/vs-code#use-the-prompt-box), `/bug` membuka dialog umpan balik ekstensi sendiri; memerlukan Claude Code v2.1.229 atau lebih baru. Ketika Anda menjalankannya saat Claude merespons, Claude Code membuka dialog segera. Sebelum v2.1.232, Claude Code mengantrikan perintah sampai giliran selesai. Alias: `/share`. Sebelum v2.1.212, `/bug` dan `/share` adalah alias dari `/feedback` |

70| `/cd <path>` | Pindahkan sesi ini ke direktori kerja baru, menjaga percakapan. Ketik jalur sebagian untuk melihat saran direktori yang cocok; tekan `Tab` untuk menerima satu. Saran memerlukan Claude Code v2.1.206 atau lebih baru. Untuk apa yang Claude Code terapkan dari direktori baru segera setelah Anda pindah, dan bagaimana `/cd` berbeda dari `/add-dir`, lihat [Pindahkan sesi ke direktori lain](/docs/id/permissions#move-the-session-to-another-directory) |70| `/cd <path>` | Pindahkan sesi ini ke direktori kerja baru, menjaga percakapan. Ketik jalur sebagian untuk melihat saran direktori yang cocok; tekan `Tab` untuk menerima satu. Saran memerlukan Claude Code v2.1.206 atau lebih baru. Untuk apa yang Claude Code terapkan dari direktori baru segera setelah Anda pindah, dan bagaimana `/cd` berbeda dari `/add-dir`, lihat [Pindahkan sesi ke direktori lain](/docs/id/permissions#move-the-session-to-another-directory) |


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

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

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

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

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

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

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

79| `/context [all]` | Visualisasikan penggunaan konteks saat ini sebagai grid berwarna. Menunjukkan saran optimasi untuk alat yang berat konteks, bloat memori, dan peringatan kapasitas. Ketika percakapan melebihi jendela konteks, output mencakup [peringatan](/docs/id/errors#context-exceeds-the-token-limit) yang menunjukkan seberapa jauh Anda melampaui batas dan perintah mana yang membebaskan ruang. Dalam [mode layar penuh](/docs/id/fullscreen), `/context` meruntuhkan rincian per-item untuk menjaga grid tetap terlihat. Berikan `all` untuk meluaskannya |79| `/context [all]` | Visualisasikan penggunaan konteks saat ini sebagai grid berwarna. Menunjukkan saran optimasi untuk tool yang berat konteks, bloat memori, dan peringatan kapasitas. Ketika percakapan melebihi context window, output mencakup [peringatan](/docs/id/errors#context-exceeds-the-token-limit) yang menunjukkan seberapa jauh Anda melampaui batas dan perintah mana yang membebaskan ruang. Dalam [mode layar penuh](/docs/id/fullscreen), `/context` meruntuhkan rincian per-item untuk menjaga grid tetap terlihat. Berikan `all` untuk meluaskannya |

80| `/copy [N]` | Salin respons asisten terakhir ke clipboard. Berikan angka `N` untuk menyalin respons ke-N terbaru: `/copy 2` menyalin yang kedua terakhir. Ketika blok kode ada, menunjukkan pemilih interaktif untuk memilih blok individual atau respons lengkap. Tekan `w` di pemilih untuk menulis pilihan ke file alih-alih clipboard, yang berguna melalui SSH |80| `/copy [N]` | Salin respons asisten terakhir ke clipboard. Berikan angka `N` untuk menyalin respons ke-N terbaru: `/copy 2` menyalin yang kedua terakhir. Ketika blok kode ada, menunjukkan pemilih interaktif untuk memilih blok individual atau respons lengkap. Tekan `w` di pemilih untuk menulis pilihan ke file alih-alih clipboard, yang berguna melalui SSH |

81| `/cost` | Alias untuk `/usage` |81| `/cost` | Alias untuk `/usage` |

82| `/dataviz [request]` | **[Skill](/docs/id/skills#bundled-skills).** Panduan desain untuk bagan, grafik, dan dasbor. Claude memilih bentuk bagan untuk data, menetapkan warna berdasarkan peran, memvalidasi palet untuk keamanan buta warna dan kontras dengan skrip bundel, dan menerapkan aturan tanda, interaksi, dan aksesibilitas. Menggunakan palet placeholder netral merek yang Anda ganti dengan milik Anda sendiri. Memerlukan Claude Code v2.1.198 atau lebih baru |82| `/dataviz [request]` | **[Skill](/docs/id/skills#bundled-skills).** Panduan desain untuk bagan, grafik, dan dasbor. Claude memilih bentuk bagan untuk data, menetapkan warna berdasarkan peran, memvalidasi palet untuk keamanan buta warna dan kontras dengan skrip bawaan, dan menerapkan aturan tanda, interaksi, dan aksesibilitas. Menggunakan palet placeholder netral merek yang Anda ganti dengan milik Anda sendiri. Memerlukan Claude Code v2.1.198 atau lebih baru |

83| `/debug [description]` | **[Skill](/docs/id/skills#bundled-skills).** Aktifkan pencatatan debug untuk sesi saat ini dan selesaikan masalah dengan membaca log debug sesi. Pencatatan debug dimatikan secara default kecuali Anda memulai dengan `claude --debug`, jadi menjalankan `/debug` di tengah sesi mulai menangkap log dari titik itu maju. Secara opsional jelaskan masalah untuk fokus analisis |83| `/debug [description]` | **[Skill](/docs/id/skills#bundled-skills).** Aktifkan pencatatan debug untuk sesi saat ini dan selesaikan masalah dengan membaca log debug sesi. Pencatatan debug dimatikan secara default kecuali Anda memulai dengan `claude --debug`, jadi menjalankan `/debug` di tengah sesi mulai menangkap log dari titik itu maju. Secara opsional jelaskan masalah untuk fokus analisis |

84| `/deep-research <question>` | **[Workflow](/docs/id/workflows#bundled-workflows).** Kipas pencarian web pada pertanyaan, ambil dan periksa silang sumber, dan sintetis laporan yang dikutip |84| `/deep-research <question>` | **[Workflow](/docs/id/workflows#bundled-workflows).** Sebarkan pencarian web pada pertanyaan, ambil dan periksa silang sumber, dan sintesis laporan yang dikutip |

85| `/design [brief]` | **[Skill](/docs/id/skills#bundled-skills).** Buat sketsa UI mockup, alur layar, halaman pendaratan, atau poster sebagai artboard di satu kanvas, dipublikasikan sebagai [artifact](/docs/id/artifacts#draft-a-design-canvas) Claude Design, misalnya `/design a settings screen for a mobile banking app`. Anda mengedit artboard di browser desktop, dan edit Anda disimpan secara otomatis. Anda dapat mengekspor setiap artboard sebagai PNG atau PDF. Memerlukan Claude Code v2.1.265 atau lebih baru, sesi di mana [artifact tersedia](/docs/id/artifacts#availability), dan akun di mana [template Design tersedia](/docs/id/artifacts#start-from-a-slides-design-or-docs-template); jika organisasi Anda telah mematikan template itu, `/design` tidak membuat desain. Tersedia di Anthropic API. Di Amazon Bedrock, Platform Agen Google Cloud, Microsoft Foundry, dan Claude Platform di AWS, artifact tidak tersedia, jadi perintah tidak tersedia di sana |85| `/design [brief]` | **[Skill](/docs/id/skills#bundled-skills).** Buat sketsa UI mockup, alur layar, halaman pendaratan, atau poster sebagai artboard di satu kanvas, dipublikasikan sebagai [artifact](/docs/id/artifacts#draft-a-design-canvas) Claude Design, misalnya `/design a settings screen for a mobile banking app`. Anda mengedit artboard di browser desktop, dan edit Anda disimpan secara otomatis. Anda dapat mengekspor setiap artboard sebagai PNG atau PDF. Memerlukan Claude Code v2.1.265 atau lebih baru, sesi di mana [artifact tersedia](/docs/id/artifacts#availability), dan akun di mana [template Design tersedia](/docs/id/artifacts#start-from-a-slides-design-or-docs-template); jika organisasi Anda telah mematikan template itu, `/design` tidak membuat desain. Tersedia di Anthropic API. Di Amazon Bedrock, Platform Agen Google Cloud, Microsoft Foundry, dan Claude Platform di AWS, artifact tidak tersedia, jadi perintah tidak tersedia di sana |

86| `/design-login` | Otorisasi akses sistem desain untuk `/design-sync` dengan akun claude.ai Anda |86| `/design-login` | Otorisasi akses sistem desain untuk `/design-sync` dengan akun claude.ai Anda |

87| `/design-sync [hint]` | **[Skill](/docs/id/skills#bundled-skills).** Konversi sistem desain React repo Anda dan unggah ke [Claude Design](https://claude.ai/design), sehingga desain yang dihasilkan menggunakan komponen nyata Anda. Secara opsional beri nama sistem desain, misalnya `/design-sync Acme DS`. Sinkronisasi pertama kali memverifikasi setiap komponen dan dapat memakan waktu beberapa jam di repo besar. Tersedia di Anthropic API. Memerlukan claude.ai, yang CLI tidak hubungi di Amazon Bedrock, Platform Agen Google Cloud, Microsoft Foundry, atau Claude Platform di AWS, atau melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway#availability-and-limitations), jadi perintah tidak tersedia di sana |87| `/design-sync [hint]` | **[Skill](/docs/id/skills#bundled-skills).** Konversi sistem desain React repo Anda dan unggah ke [Claude Design](https://claude.ai/design), sehingga desain yang dihasilkan menggunakan komponen nyata Anda. Secara opsional beri nama sistem desain, misalnya `/design-sync Acme DS`. Sinkronisasi pertama kali memverifikasi setiap komponen dan dapat memakan waktu beberapa jam di repo besar. Tersedia di Anthropic API. Memerlukan claude.ai, yang CLI tidak hubungi di Amazon Bedrock, Platform Agen Google Cloud, Microsoft Foundry, atau Claude Platform di AWS, atau melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway#availability-and-limitations), jadi perintah tidak tersedia di sana |

88| `/desktop` | Lanjutkan sesi saat ini di aplikasi Claude Code Desktop. Memerlukan macOS atau Windows x64 dan langganan Claude. Alias: `/app` |88| `/desktop` | Lanjutkan sesi saat ini di aplikasi Claude Code Desktop. Memerlukan macOS atau Windows x64 dan langganan Claude. Alias: `/app` |

89| `/diff` | Tinjau perubahan di pohon kerja Anda, termasuk edit yang telah dilakukan Claude sejauh ini. Lihat [Tinjau perubahan dengan /diff](/docs/id/interactive-mode#review-changes-with-%2Fdiff) |89| `/diff` | Tinjau perubahan di working tree Anda, termasuk edit yang telah dilakukan Claude sejauh ini. Lihat [Tinjau perubahan dengan /diff](/docs/id/interactive-mode#review-changes-with-%2Fdiff) |

90| `/doctor [prompt-audit [path]]` | **[Skill](/docs/id/skills#bundled-skills).** Jalankan pemeriksaan pengaturan yang mendiagnosis masalah dan dapat memperbaikinya. Memeriksa kesehatan instalasi, termasuk instalasi duplikat atau sisa, masalah `PATH`, dan file pengaturan yang tidak dapat diuraikan. Menemukan skill, server MCP, dan plugin yang tidak digunakan versus biaya konteks mereka, menandai [hook](/docs/id/hooks) yang lambat, dan memeriksa versi lebih baru di [saluran rilis](/docs/id/setup#configure-release-channel) Anda. Menghilangkan duplikat file `CLAUDE.md` lokal terhadap yang diperiksa, memangkas file [`CLAUDE.md`](/docs/id/memory#my-claude-md-is-too-large) yang diperiksa dengan memotong konten yang Claude bisa turunkan dari basis kode, dan memigrasikan panduan yang selalu dimuat yang tersisa ke [skill](/docs/id/skills) dan file `CLAUDE.md` bersarang yang dimuat sesuai permintaan. Juga menawarkan untuk membuat [mode otomatis](/docs/id/permissions#permission-modes) default Anda dan untuk [pra-persetujuan](/docs/id/permissions) perintah baca-saja yang sering ditolak. Laporan temuan terlebih dahulu dan minta konfirmasi sebelum mengubah apa pun. Dari terminal, `claude doctor` mencetak diagnostik instalasi baca-saja tanpa memulai sesi. Alias: `/checkup`. Jalankan `/doctor prompt-audit` untuk memiliki Claude [audit file `CLAUDE.md`, skill, dan konfigurasi lainnya](/docs/id/memory#audit-your-instruction-files) untuk instruksi usang atau bertentangan alih-alih menjalankan pemeriksaan. Subperintah `prompt-audit` memerlukan Claude Code v2.1.283 atau lebih baru. Pemeriksaan trim `CLAUDE.md` memerlukan Claude Code v2.1.206 atau lebih baru. Sebelum v2.1.205, `/doctor` membuka layar diagnostik baca-saja dan menekan `f` mengirim laporan ke Claude |90| `/doctor [prompt-audit [path]]` | **[Skill](/docs/id/skills#bundled-skills).** Jalankan pemeriksaan pengaturan yang mendiagnosis masalah dan dapat memperbaikinya. Memeriksa kesehatan instalasi, termasuk instalasi duplikat atau sisa, masalah `PATH`, dan file pengaturan yang tidak dapat diuraikan. Menemukan skill, server MCP, dan plugin yang tidak digunakan versus biaya konteks mereka, menandai [hook](/docs/id/hooks) yang lambat, dan memeriksa versi lebih baru di [saluran rilis](/docs/id/setup#configure-release-channel) Anda. Menghilangkan duplikat file `CLAUDE.md` lokal terhadap yang di-commit, memangkas file [`CLAUDE.md`](/docs/id/memory#my-claude-md-is-too-large) yang di-commit dengan memotong konten yang Claude bisa turunkan dari codebase, dan memigrasikan panduan yang selalu dimuat yang tersisa ke [skill](/docs/id/skills) dan file `CLAUDE.md` bersarang yang dimuat sesuai permintaan. Juga menawarkan untuk membuat [auto mode](/docs/id/permissions#permission-modes) default Anda dan untuk [pra-menyetujui](/docs/id/permissions) perintah read-only yang sering ditolak. Melaporkan temuan terlebih dahulu dan meminta konfirmasi sebelum mengubah apa pun. Dari terminal, `claude doctor` mencetak diagnostik instalasi read-only tanpa memulai sesi. Alias: `/checkup`. Jalankan `/doctor prompt-audit` agar Claude [mengaudit file `CLAUDE.md`, skill, dan konfigurasi lainnya](/docs/id/memory#audit-your-instruction-files) untuk instruksi usang atau bertentangan alih-alih menjalankan pemeriksaan. Subperintah `prompt-audit` memerlukan Claude Code v2.1.283 atau lebih baru. Pemeriksaan trim `CLAUDE.md` memerlukan Claude Code v2.1.206 atau lebih baru. Sebelum v2.1.205, `/doctor` membuka layar diagnostik read-only dan menekan `f` mengirim laporan ke Claude |

91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Atur [tingkat upaya](/docs/id/model-config#adjust-effort-level): `low` hingga `xhigh`, `max`, atau `auto`; `status` mencetaknya. `ultracode` atau `ultracode on` mengaktifkan [ultracode](/docs/id/workflows#let-claude-decide-with-ultracode) untuk sesi pada level saat ini, dan `ultracode off` mematikannya; kunci [`ultracode`](/docs/id/settings-reference#ultracode) bertahan. `max` hanya sesi. Argumen `on` dan `off` dan mempertahankan level saat ini memerlukan Claude Code v2.1.284 atau lebih baru. Sebelum v2.1.284, `/effort ultracode` menetapkan sesi ke `xhigh`, dan `/effort ultracode off` gagal dengan `Invalid argument`. Jalankan saat Claude merespons dan, setelah Anda mengonfirmasi [peringatan cache](/docs/id/prompt-caching#changing-effort-level), jika Claude Code menunjukkan satu, Claude Code menerapkan level baru ke permintaan berikutnya dalam giliran itu. Sebelum v2.1.242, Claude Code memutuskan dari bendera fitur yang diambil dari Anthropic apakah akan menjalankan perintah di tengah giliran atau mengantrikannya sampai giliran selesai, dan selalu mengantrikannya dalam sesi yang tidak [mengambil bendera fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching), seperti pada [penyedia pihak ketiga](/docs/id/third-party-integrations). Bekerja dalam `-p` |91| `/effort [level\|auto\|status\|ultracode [on\|off]]` | Atur [tingkat effort](/docs/id/model-config#adjust-effort-level): `low` hingga `xhigh`, `max`, atau `auto`; `status` mencetaknya. `ultracode` atau `ultracode on` mengaktifkan [ultracode](/docs/id/workflows#let-claude-decide-with-ultracode) untuk sesi pada level saat ini, dan `ultracode off` mematikannya; kunci [`ultracode`](/docs/id/settings-reference#ultracode) bertahan. `max` hanya sesi. Argumen `on` dan `off` dan mempertahankan level saat ini memerlukan Claude Code v2.1.284 atau lebih baru. Sebelum v2.1.284, `/effort ultracode` menetapkan sesi ke `xhigh`, dan `/effort ultracode off` gagal dengan `Invalid argument`. Jalankan saat Claude merespons dan, setelah Anda mengonfirmasi [peringatan cache](/docs/id/prompt-caching#changing-effort-level), jika Claude Code menunjukkan satu, Claude Code menerapkan level baru ke permintaan berikutnya dalam giliran itu. Sebelum v2.1.242, Claude Code memutuskan dari feature flag yang diambil dari Anthropic apakah akan menjalankan perintah di tengah giliran atau mengantrikannya sampai giliran selesai, dan selalu mengantrikannya dalam sesi yang tidak [mengambil feature flag](/docs/id/env-vars#features-that-need-feature-flag-fetching), seperti pada [penyedia pihak ketiga](/docs/id/third-party-integrations). Bekerja dalam `-p` |

92| `/exit` | Keluar dari CLI. Dalam [sesi latar belakang](/docs/id/agent-view#attach-to-a-session) yang terlampir, ini melepaskan dan sesi terus berjalan. Alias: `/quit` |92| `/exit` | Keluar dari CLI. Dalam [sesi latar belakang](/docs/id/agent-view#attach-to-a-session) yang terlampir, ini melepaskan dan sesi terus berjalan. Alias: `/quit` |

93| `/export [filename]` | Ekspor percakapan saat ini sebagai teks biasa. Dengan nama file, menulis langsung ke file itu. Tanpa, membuka dialog untuk menyalin ke clipboard atau menyimpan ke file |93| `/export [filename]` | Ekspor percakapan saat ini sebagai teks biasa. Dengan nama file, menulis langsung ke file itu. Tanpa, membuka dialog untuk menyalin ke clipboard atau menyimpan ke file |

94| `/fast [on\|off]` | Alihkan [mode cepat](/docs/id/fast-mode) aktif atau nonaktif. Jalankan saat Claude merespons dan Claude Code mengalihkan mode cepat tanpa menunggu giliran berakhir, meskipun giliran yang berjalan selesai pada kecepatan aslinya. Sebelum v2.1.242, Claude Code memutuskan dari bendera fitur yang diambil dari Anthropic apakah akan menjalankan perintah di tengah giliran atau mengantrikannya sampai giliran selesai, dan selalu mengantrikannya dalam sesi yang tidak [mengambil bendera fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching). Ketersediaan dalam mode non-interaktif dengan `-p` terbatas; lihat [Alihkan mode cepat](/docs/id/fast-mode#toggle-fast-mode). Memerlukan Claude Code v2.1.205 atau lebih baru |94| `/fast [on\|off]` | Alihkan [fast mode](/docs/id/fast-mode) aktif atau nonaktif. Jalankan saat Claude merespons dan Claude Code mengalihkan fast mode tanpa menunggu giliran berakhir, meskipun giliran yang berjalan selesai pada kecepatan aslinya. Sebelum v2.1.242, Claude Code memutuskan dari feature flag yang diambil dari Anthropic apakah akan menjalankan perintah di tengah giliran atau mengantrikannya sampai giliran selesai, dan selalu mengantrikannya dalam sesi yang tidak [mengambil feature flag](/docs/id/env-vars#features-that-need-feature-flag-fetching). Ketersediaan dalam mode non-interaktif dengan `-p` terbatas; lihat [Alihkan fast mode](/docs/id/fast-mode#toggle-fast-mode). Memerlukan Claude Code v2.1.205 atau lebih baru |

95| `/feedback [report]` | Kirim umpan balik produk tentang Claude Code. Membuka dialog yang sama seperti [`/bug`](#all-commands), dengan langkah persetujuan yang sama, aturan pengiriman, dan perilaku di tengah giliran. Dalam sesi dengan [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), `/feedback` tanpa argumen membuka antrian draf sebagai gantinya, di mana Anda meninjau, mengedit, mengirim, atau membuang draf yang Claude antrikan; antrian mencakup opsi untuk menulis laporan baru dalam dialog. Dengan argumen, dan untuk `/bug` selalu, dialog membuka langsung |95| `/feedback [report]` | Kirim umpan balik produk tentang Claude Code. Membuka dialog yang sama seperti [`/bug`](#all-commands), dengan langkah persetujuan yang sama, aturan pengiriman, dan perilaku di tengah giliran. Dalam sesi dengan [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), `/feedback` tanpa argumen membuka antrian draf sebagai gantinya, di mana Anda meninjau, mengedit, mengirim, atau membuang draf yang Claude antrikan; antrian mencakup opsi untuk menulis laporan baru dalam dialog. Dengan argumen, dan untuk `/bug` selalu, dialog membuka langsung |

96| `/fewer-permission-prompts` | **[Skill](/docs/id/skills#bundled-skills).** Pindai transkrip Anda untuk panggilan alat Bash dan MCP baca-saja umum, kemudian tambahkan daftar izin yang diprioritaskan ke `.claude/settings.json` proyek untuk mengurangi prompt izin |96| `/fewer-permission-prompts` | **[Skill](/docs/id/skills#bundled-skills).** Pindai transkrip Anda untuk panggilan tool Bash dan MCP read-only umum, kemudian tambahkan allowlist yang diprioritaskan ke `.claude/settings.json` proyek untuk mengurangi permintaan izin |

97| `/focus` | Alihkan tampilan fokus, yang menunjukkan hanya prompt terakhir Anda, ringkasan panggilan alat satu baris dengan diffstat edit, dan respons akhir. Ringkasan panggilan alat juga menghitung subagent yang diluncurkan dalam giliran dan meruntuhkan notifikasi tugas latar belakang yang selesai menjadi satu hitungan. Pilihan bertahan di seluruh sesi; atur [`viewMode`](/docs/id/settings-reference#viewmode) dalam pengaturan untuk menimpanya. Hanya tersedia dalam [rendering layar penuh](/docs/id/fullscreen). Dari klien [Remote Control](/docs/id/remote-control), jalankan `/focus [on\|off]` untuk mengaktifkan atau menonaktifkan tampilan fokus untuk sesi saat ini saja, tanpa mengubah pilihan yang disimpan; ini memerlukan Claude Code v2.1.281 atau lebih baru. [Ekstensi VS Code](/docs/id/vs-code#use-the-prompt-box) menawarkan tampilan Focus sendiri sebagai toggle menu perintah, disimpan sebagai pengaturan ekstensi, independen dari `viewMode` |97| `/focus` | Alihkan tampilan fokus, yang menunjukkan hanya prompt terakhir Anda, ringkasan panggilan tool satu baris dengan diffstat edit, dan respons akhir. Ringkasan panggilan tool juga menghitung subagent yang diluncurkan dalam giliran dan meruntuhkan notifikasi tugas latar belakang yang selesai menjadi satu hitungan. Pilihan bertahan di seluruh sesi; atur [`viewMode`](/docs/id/settings-reference#viewmode) dalam pengaturan untuk menimpanya. Hanya tersedia dalam [rendering layar penuh](/docs/id/fullscreen). Dari klien [Remote Control](/docs/id/remote-control), jalankan `/focus [on\|off]` untuk mengaktifkan atau menonaktifkan tampilan fokus untuk sesi saat ini saja, tanpa mengubah pilihan yang disimpan; ini memerlukan Claude Code v2.1.281 atau lebih baru. [Ekstensi VS Code](/docs/id/vs-code#use-the-prompt-box) menawarkan tampilan Focus sendiri sebagai toggle menu perintah, disimpan sebagai pengaturan ekstensi, independen dari `viewMode` |

98| `/fork [prompt]` | [Salin percakapan saat ini](/docs/id/agent-view#copy-the-session-with-%2Ffork) ke sesi latar belakang baru dan terus bekerja di sini. Berikan prompt dan salinan mulai bekerja padanya segera; tanpa salinan menunggu di tampilan agen untuk prompt pertamanya. Kecuali ketika salinan [mengedit di tempat](/docs/id/agent-view#how-file-edits-are-isolated), Claude Code menginstruksikannya untuk membuat worktree sendiri sebelum membuat perubahan kode; instruksi isolasi memerlukan Claude Code v2.1.221 atau lebih baru. Untuk menyerahkan tugas sampingan ke subagent yang hasilnya kembali ke percakapan ini, gunakan `/subtask`; untuk beralih ke salinan sendiri, gunakan `/branch`. Memerlukan Claude Code v2.1.212 atau lebih baru; pada v2.1.161 melalui v2.1.211, dan kapan pun [tampilan agen dimatikan](/docs/id/agent-view#turn-off-agent-view), `/fork` memulai [subagent yang bercabang](/docs/id/sub-agents#fork-the-current-conversation) sebagai gantinya |98| `/fork [prompt]` | [Salin percakapan saat ini](/docs/id/agent-view#copy-the-session-with-%2Ffork) ke sesi latar belakang baru dan terus bekerja di sini. Berikan prompt dan salinan mulai mengerjakannya segera; tanpa prompt, salinan menunggu di tampilan agent untuk prompt pertamanya. Kecuali ketika salinan [mengedit di tempat](/docs/id/agent-view#how-file-edits-are-isolated), Claude Code menginstruksikannya untuk membuat worktree sendiri sebelum membuat perubahan kode; instruksi isolasi memerlukan Claude Code v2.1.221 atau lebih baru. Untuk menyerahkan tugas sampingan ke subagent yang hasilnya kembali ke percakapan ini, gunakan `/subtask`; untuk beralih ke salinan sendiri, gunakan `/branch`. Memerlukan Claude Code v2.1.212 atau lebih baru; pada v2.1.161 hingga v2.1.211, dan kapan pun [tampilan agent dimatikan](/docs/id/agent-view#turn-off-agent-view), `/fork` memulai [subagent fork](/docs/id/sub-agents#fork-the-current-conversation) sebagai gantinya |

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

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

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

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

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

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

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

106| `/insights` | Hasilkan laporan HTML yang menganalisis sesi terbaru Anda di mesin ini: proyek mana yang Anda kerjakan, bagaimana Anda menggunakan Claude Code, di mana hal-hal salah, dan fitur untuk dicoba. Tidak tersedia dalam [sesi cloud](/docs/id/claude-code-on-the-web). Lihat [Analisis pola penggunaan Anda](/docs/id/costs#analyze-your-usage-patterns) untuk lokasi laporan, retensi, dan biaya |106| `/insights` | Hasilkan laporan HTML yang menganalisis sesi terbaru Anda di mesin ini: proyek mana yang Anda kerjakan, bagaimana Anda menggunakan Claude Code, di mana hal-hal salah, dan fitur untuk dicoba. Tidak tersedia dalam [sesi cloud](/docs/id/claude-code-on-the-web). Lihat [Analisis pola penggunaan Anda](/docs/id/costs#analyze-your-usage-patterns) untuk lokasi laporan, retensi, dan biaya |

107| `/install-github-app` | Pasang Aplikasi GitHub Claude untuk repositori, dengan langkah opsional untuk menyiapkan alur kerja [GitHub Actions](/docs/id/github-actions) dan rahasia. Memandu Anda melalui pemilihan repo dan konfigurasi integrasi. Hanya bekerja dengan repositori github.com. Ketika remote git repositori Anda berada di gitlab.com atau bitbucket.org, perintah mencetak pemberitahuan dan keluar alih-alih memulai pengaturan. Untuk menjalankan Claude Code dari pipeline GitLab, lihat [GitLab CI/CD](/docs/id/gitlab-ci-cd) |107| `/install-github-app` | Pasang Aplikasi GitHub Claude untuk repositori, dengan langkah opsional untuk menyiapkan workflow [GitHub Actions](/docs/id/github-actions) dan rahasia. Memandu Anda melalui pemilihan repo dan konfigurasi integrasi. Hanya bekerja dengan repositori github.com. Ketika remote git repositori Anda berada di gitlab.com atau bitbucket.org, perintah mencetak pemberitahuan dan keluar alih-alih memulai pengaturan. Untuk menjalankan Claude Code dari pipeline GitLab, lihat [GitLab CI/CD](/docs/id/gitlab-ci-cd) |

108| `/install-slack-app` | Pasang aplikasi Claude Slack. Membuka browser untuk menyelesaikan alur OAuth |108| `/install-slack-app` | Pasang aplikasi Claude Slack. Membuka browser untuk menyelesaikan alur OAuth |

109| `/keybindings` | Buka file [pintasan keyboard](/docs/id/keybindings) Anda |109| `/keybindings` | Buka file [pintasan keyboard](/docs/id/keybindings) Anda |

110| `/list-agents` | Daftar subagent, rekan [tim agen](/docs/id/agent-teams), dan sesi Claude Code lainnya yang dapat dikomunikasikan Claude, dengan nama yang digunakan untuk masing-masing. Lihat [pesan lintas sesi](/docs/id/cross-session-messaging). Juga tersedia sebagai `/peers`. Memerlukan Claude Code v2.1.224 atau lebih baru; versi sebelumnya melaporkan `Unknown command: /list-agents`. Baris rekan dan baris pertama yang menunjukkan nama sesi sendiri memerlukan v2.1.239 atau lebih baru. Hanya tersedia dalam sesi di mana [pesan lintas sesi diaktifkan](/docs/id/cross-session-messaging#availability) |110| `/list-agents` | Daftar subagent, rekan [tim agent](/docs/id/agent-teams), dan sesi Claude Code lainnya yang dapat dikirimi pesan oleh Claude, dengan nama yang digunakan untuk masing-masing. Lihat [pesan lintas sesi](/docs/id/cross-session-messaging). Juga tersedia sebagai `/peers`. Memerlukan Claude Code v2.1.224 atau lebih baru; versi sebelumnya melaporkan `Unknown command: /list-agents`. Baris rekan dan baris pertama yang menunjukkan nama sesi sendiri memerlukan v2.1.239 atau lebih baru. Hanya tersedia dalam sesi di mana [pesan lintas sesi diaktifkan](/docs/id/cross-session-messaging#availability) |

111| `/login` | Masuk ke akun Anthropic Anda |111| `/login` | Masuk ke akun Anthropic Anda |

112| `/logout` | Keluar dari akun Anthropic Anda |112| `/logout` | Keluar dari akun Anthropic Anda |

113| `/loop [interval] [prompt]` | **[Skill](/docs/id/skills#bundled-skills).** Jalankan prompt berulang kali saat sesi tetap terbuka. Hilangkan interval dan Claude [mengatur kecepatan sendiri di antara iterasi](/docs/id/scheduled-tasks#let-claude-choose-the-interval). Hilangkan prompt dan Claude menjalankan [prompt pemeliharaan bawaan](/docs/id/scheduled-tasks#run-the-built-in-maintenance-prompt) atau [`loop.md`](/docs/id/scheduled-tasks#customize-the-default-prompt-with-loop-md) Anda. Contoh: `/loop 5m check if the deploy finished`. Lihat [Jalankan prompt sesuai jadwal](/docs/id/scheduled-tasks). Alias: `/proactive` |113| `/loop [interval] [prompt]` | **[Skill](/docs/id/skills#bundled-skills).** Jalankan prompt berulang kali saat sesi tetap terbuka. Hilangkan interval dan Claude [mengatur kecepatan sendiri di antara iterasi](/docs/id/scheduled-tasks#let-claude-choose-the-interval). Hilangkan prompt dan Claude menjalankan [prompt pemeliharaan bawaan](/docs/id/scheduled-tasks#run-the-built-in-maintenance-prompt) atau [`loop.md`](/docs/id/scheduled-tasks#customize-the-default-prompt-with-loop-md) Anda. Contoh: `/loop 5m check if the deploy finished`. Lihat [Jalankan prompt sesuai jadwal](/docs/id/scheduled-tasks). Alias: `/proactive` |

114| `/mcp [reconnect <server>\|enable\|disable [<server>\|all]]` | Kelola koneksi server MCP dan autentikasi OAuth. Jalankan tanpa argumen untuk membuka daftar interaktif, berikan `reconnect <server>` untuk menghubungkan kembali satu server yang terputus, atau berikan `enable`/`disable` dengan nama server atau `all` untuk mengubah status koneksi tanpa membuka dialog. Juga tersedia dalam mode non-interaktif (`-p`), di mana menjalankannya tanpa argumen mencetak ringkasan teks status server alih-alih membuka daftar; memerlukan Claude Code v2.1.205 atau lebih baru |114| `/mcp [reconnect <server>\|enable\|disable [<server>\|all]]` | Kelola koneksi server MCP dan autentikasi OAuth. Jalankan tanpa argumen untuk membuka daftar interaktif, berikan `reconnect <server>` untuk menghubungkan kembali satu server yang terputus, atau berikan `enable`/`disable` dengan nama server atau `all` untuk mengubah status koneksi tanpa membuka dialog. Juga tersedia dalam mode non-interaktif (`-p`), di mana menjalankannya tanpa argumen mencetak ringkasan teks status server alih-alih membuka daftar; memerlukan Claude Code v2.1.205 atau lebih baru |

115| `/memory` | Edit file `CLAUDE.md`, aktifkan atau nonaktifkan [memori otomatis](/docs/id/memory#auto-memory), dan lihat entri memori otomatis |115| `/memory` | Edit file `CLAUDE.md`, aktifkan atau nonaktifkan [auto memory](/docs/id/memory#auto-memory), dan lihat entri auto memory |

116| `/mobile` | Tampilkan kode QR untuk mengunduh aplikasi mobile Claude. Alias: `/ios`, `/android` |116| `/mobile` | Tampilkan kode QR untuk mengunduh aplikasi mobile Claude. Alias: `/ios`, `/android` |

117| `/model [model]` | Alihkan model AI dan simpan sebagai default Anda untuk sesi baru. Untuk model yang mendukungnya, gunakan panah kiri/kanan untuk [menyesuaikan tingkat upaya](/docs/id/model-config#adjust-effort-level). Tanpa argumen, membuka pemilih; tekan `s` pada baris untuk beralih hanya untuk sesi saat ini. Lihat [kapan Claude Code meminta Anda untuk mengonfirmasi switch](/docs/id/prompt-caching#switching-models). Setelah Anda mengonfirmasi switch, jika Claude Code meminta, Claude Code menerapkan perubahan tanpa menunggu respons saat ini selesai. Sebelum v2.1.242, Claude Code memutuskan dari bendera fitur yang diambil dari Anthropic apakah akan menjalankan perintah di tengah giliran atau mengantrikannya sampai giliran selesai, dan selalu mengantrikannya dalam sesi yang tidak [mengambil bendera fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching), seperti pada [penyedia pihak ketiga](/docs/id/third-party-integrations). Juga tersedia dalam mode non-interaktif (`-p`) dengan argumen model alih-alih pemilih, di mana berlaku hanya untuk sesi saat ini dan tidak disimpan sebagai default Anda; memerlukan Claude Code v2.1.205 atau lebih baru |117| `/model [model]` | Alihkan model AI dan simpan sebagai default Anda untuk sesi baru. Untuk model yang mendukungnya, gunakan panah kiri/kanan untuk [menyesuaikan tingkat effort](/docs/id/model-config#adjust-effort-level). Tanpa argumen, membuka pemilih; tekan `s` pada baris untuk beralih hanya untuk sesi saat ini. Lihat [kapan Claude Code meminta Anda untuk mengonfirmasi peralihan](/docs/id/prompt-caching#switching-models). Setelah Anda mengonfirmasi peralihan, jika Claude Code meminta, Claude Code menerapkan perubahan tanpa menunggu respons saat ini selesai. Sebelum v2.1.242, Claude Code memutuskan dari feature flag yang diambil dari Anthropic apakah akan menjalankan perintah di tengah giliran atau mengantrikannya sampai giliran selesai, dan selalu mengantrikannya dalam sesi yang tidak [mengambil feature flag](/docs/id/env-vars#features-that-need-feature-flag-fetching), seperti pada [penyedia pihak ketiga](/docs/id/third-party-integrations). Juga tersedia dalam mode non-interaktif (`-p`) dengan argumen model alih-alih pemilih, di mana berlaku hanya untuk sesi saat ini dan tidak disimpan sebagai default Anda; memerlukan Claude Code v2.1.205 atau lebih baru |

118| `/output-style [style]` | Daftar [gaya output](/docs/id/output-styles) atau beralih ke satu, misalnya `/output-style concise`. Lihat [Ubah gaya output Anda](/docs/id/output-styles#change-your-output-style). Memerlukan Claude Code v2.1.269 atau lebih baru |118| `/output-style [style]` | Daftar [gaya output](/docs/id/output-styles) atau beralih ke satu, misalnya `/output-style concise`. Lihat [Ubah gaya output Anda](/docs/id/output-styles#change-your-output-style). Memerlukan Claude Code v2.1.269 atau lebih baru |

119| `/passes` | Bagikan minggu gratis Claude Code dengan teman. Hanya terlihat jika akun Anda memenuhi syarat |119| `/passes` | Bagikan minggu gratis Claude Code dengan teman. Hanya terlihat jika akun Anda memenuhi syarat |

120| `/permissions` | Kelola aturan izin, tanya, dan tolak untuk izin alat. Membuka dialog interaktif di mana Anda dapat melihat aturan berdasarkan cakupan, menambah atau menghapus aturan, mengelola direktori kerja, dan meninjau [penolakan mode otomatis terbaru](/docs/id/auto-mode-config#review-denials). Anda juga dapat melihat dan mengedit [aturan pengklasifikasi mode otomatis](/docs/id/auto-mode-config#edit-rules-from-permissions) dari tab **Mode otomatis** dialog. Ketika Anda menjalankannya saat Claude merespons, Claude Code membuka dialog segera dan menerapkan perubahan Anda mulai dengan panggilan alat berikutnya Claude dalam giliran yang sama. Sebelum v2.1.234, Claude Code mengantrikan perintah sampai giliran selesai. Alias: `/allowed-tools` |120| `/permissions` | Kelola aturan allow, ask, dan deny untuk izin tool. Membuka dialog interaktif di mana Anda dapat melihat aturan berdasarkan cakupan, menambah atau menghapus aturan, mengelola direktori kerja, dan meninjau [penolakan auto mode terbaru](/docs/id/auto-mode-config#review-denials). Anda juga dapat melihat dan mengedit [aturan pengklasifikasi auto mode](/docs/id/auto-mode-config#edit-rules-from-permissions) dari tab **Auto mode** dialog. Ketika Anda menjalankannya saat Claude merespons, Claude Code membuka dialog segera dan menerapkan perubahan Anda mulai dengan panggilan tool berikutnya Claude dalam giliran yang sama. Sebelum v2.1.234, Claude Code mengantrikan perintah sampai giliran selesai. Alias: `/allowed-tools` |

121| `/plan [description]` | Masukkan mode rencana langsung dari prompt. Berikan deskripsi opsional untuk memasukkan mode rencana dan segera mulai dengan tugas itu, misalnya `/plan fix the auth bug` |121| `/plan [description]` | Masuk ke plan mode langsung dari prompt. Berikan deskripsi opsional untuk masuk ke plan mode dan segera mulai dengan tugas itu, misalnya `/plan fix the auth bug` |

122| `/plugin [subcommand]` | Kelola [plugin](/docs/id/plugins/overview) Claude Code. Jalankan tanpa argumen untuk membuka menu plugin, atau berikan subperintah seperti `list`, `install`, `enable`, atau `disable` untuk bertindak langsung. Claude Code dapat mengaktifkan plugin selama instalasi; [ringkasan instalasi](/docs/id/plugins/install#install-a-plugin) memberi tahu Anda apakah itu dilakukan atau apakah harus menjalankan `/reload-plugins` |122| `/plugin [subcommand]` | Kelola [plugin](/docs/id/plugins/overview) Claude Code. Jalankan tanpa argumen untuk membuka menu plugin, atau berikan subperintah seperti `list`, `install`, `enable`, atau `disable` untuk bertindak langsung. Claude Code dapat mengaktifkan plugin selama instalasi; [ringkasan instalasi](/docs/id/plugins/install#install-a-plugin) memberi tahu Anda apakah itu dilakukan atau apakah harus menjalankan `/reload-plugins` |

123| `/powerup` | Temukan fitur Claude Code melalui pelajaran interaktif cepat dengan demo animasi |123| `/powerup` | Temukan fitur Claude Code melalui pelajaran interaktif cepat dengan demo animasi |

124| `/pr-comments [PR]` | Dihapus di v2.1.91. Tanyakan Claude secara langsung untuk melihat komentar permintaan tarik sebagai gantinya. Pada versi sebelumnya, mengambil dan menampilkan komentar dari permintaan tarik GitHub; secara otomatis mendeteksi PR untuk cabang saat ini, atau berikan URL atau nomor PR. Memerlukan CLI `gh` |124| `/pr-comments [PR]` | Dihapus di v2.1.91. Minta Claude secara langsung untuk melihat komentar pull request sebagai gantinya. Pada versi sebelumnya, mengambil dan menampilkan komentar dari pull request GitHub; secara otomatis mendeteksi PR untuk branch saat ini, atau berikan URL atau nomor PR. Memerlukan CLI `gh` |

125| `/privacy-settings` | Lihat dan perbarui pengaturan privasi Anda. Hanya tersedia untuk pelanggan paket Pro dan Max |125| `/privacy-settings` | Lihat dan perbarui pengaturan privasi Anda. Hanya tersedia untuk pelanggan paket Pro dan Max |

126| `/radio` | Buka radio lo-fi Claude FM di browser Anda. Mencetak URL aliran ketika tidak ada browser yang tersedia |126| `/radio` | Buka radio lo-fi Claude FM di browser Anda. Mencetak URL aliran ketika tidak ada browser yang tersedia |

127| `/rate-limit-options` | Tampilkan cara untuk terus bekerja ketika batas penggunaan claude.ai memblokir permintaan: tunggu dan [lanjutkan secara otomatis ketika batas direset](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset), tambahkan [kredit penggunaan](/docs/id/costs#add-usage-credits-to-your-subscription), atau tingkatkan paket Anda. Claude Code juga dapat membuka menu ini dengan sendirinya ketika Anda mencapai batas di terminal Anda sendiri. Lihat [Matikan lanjutan otomatis](/docs/id/interactive-mode#turn-automatic-continue-off). Memerlukan langganan claude.ai. Baris tunggu-dan-lanjutkan memerlukan Claude Code v2.1.234 atau lebih baru |127| `/rate-limit-options` | Tampilkan cara untuk terus bekerja ketika batas penggunaan claude.ai memblokir permintaan: tunggu dan [lanjutkan secara otomatis ketika batas direset](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset), tambahkan [kredit penggunaan](/docs/id/costs#add-usage-credits-to-your-subscription), atau tingkatkan paket Anda. Claude Code juga dapat membuka menu ini dengan sendirinya ketika Anda mencapai batas di terminal Anda sendiri. Lihat [Matikan lanjutan otomatis](/docs/id/interactive-mode#turn-automatic-continue-off). Memerlukan langganan claude.ai. Baris tunggu-dan-lanjutkan memerlukan Claude Code v2.1.234 atau lebih baru |

128| `/recap` | Hasilkan ringkasan satu baris dari sesi saat ini sesuai permintaan. Lihat [Ringkasan sesi](/docs/id/interactive-mode#session-recap) untuk ringkasan otomatis yang muncul setelah Anda pergi |128| `/recap` | Hasilkan ringkasan satu baris dari sesi saat ini sesuai permintaan. Lihat [Ringkasan sesi](/docs/id/interactive-mode#session-recap) untuk ringkasan otomatis yang muncul setelah Anda pergi |

129| `/release-notes` | Lihat changelog dalam pemilih versi interaktif. Pilih versi spesifik untuk melihat catatan rilisnya, atau pilih untuk menampilkan semua versi. Catatan muncul dalam transkrip Anda tanpa memasukkan percakapan yang Claude lihat |129| `/release-notes` | Lihat changelog dalam pemilih versi interaktif. Pilih versi spesifik untuk melihat catatan rilisnya, atau pilih untuk menampilkan semua versi. Catatan muncul dalam transkrip Anda tanpa masuk ke percakapan yang Claude lihat |

130| `/reload-plugins [--force]` | Muat ulang semua [plugin](/docs/id/plugins/overview) aktif untuk menerapkan perubahan yang tertunda tanpa memulai ulang. Laporan hitungan untuk setiap komponen yang dimuat ulang dan menandai kesalahan pemuatan apa pun. Ketika pemuatan ulang akan mengubah alat MCP mana yang dimuat dan membatalkan cache prompt, perintah memperingatkan dan melewati kecuali Anda berikan `--force`. Juga tersedia dalam mode non-interaktif (`-p`), Agent SDK, dan aplikasi desktop, di mana hanya berjalan pada input yang diketik langsung ke sesi dan tidak menerapkan perubahan MCP server plugin; memerlukan Claude Code v2.1.260 atau lebih baru. Lihat [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/plugins/cli-reference#reload-plugins) |130| `/reload-plugins [--force]` | Muat ulang semua [plugin](/docs/id/plugins/overview) aktif untuk menerapkan perubahan yang tertunda tanpa memulai ulang. Melaporkan hitungan untuk setiap komponen yang dimuat ulang dan menandai kesalahan pemuatan apa pun. Ketika pemuatan ulang akan mengubah tool MCP mana yang dimuat dan membatalkan cache prompt, perintah memperingatkan dan melewati kecuali Anda berikan `--force`. Juga tersedia dalam mode non-interaktif (`-p`), Agent SDK, dan aplikasi desktop, di mana hanya berjalan pada input yang diketik langsung ke sesi dan tidak menerapkan perubahan server MCP plugin; memerlukan Claude Code v2.1.260 atau lebih baru. Lihat [Terapkan perubahan plugin tanpa memulai ulang](/docs/id/plugins/cli-reference#reload-plugins) |

131| `/reload-skills` | Pindai ulang direktori [skill](/docs/id/skills) dan perintah sehingga skill yang ditambahkan atau diubah di disk selama sesi menjadi tersedia tanpa memulai ulang. Laporan berapa banyak skill yang tersedia dan berapa banyak yang ditambahkan atau dihapus |131| `/reload-skills` | Pindai ulang direktori [skill](/docs/id/skills) dan perintah sehingga skill yang ditambahkan atau diubah di disk selama sesi menjadi tersedia tanpa memulai ulang. Melaporkan berapa banyak skill yang tersedia dan berapa banyak yang ditambahkan atau dihapus |

132| `/remote-control` | Buat sesi ini tersedia untuk [Remote Control](/docs/id/remote-control) dari claude.ai. Menjalankannya saat keluar mencetak bahwa Remote Control memerlukan langganan claude.ai dan memberi tahu Anda cara masuk; sebelum v2.1.206 melaporkan `Unknown command: /remote-control`. Alias: `/rc` |132| `/remote-control` | Buat sesi ini tersedia untuk [Remote Control](/docs/id/remote-control) dari claude.ai. Menjalankannya saat keluar mencetak bahwa Remote Control memerlukan langganan claude.ai dan memberi tahu Anda cara masuk; sebelum v2.1.206 melaporkan `Unknown command: /remote-control`. Alias: `/rc` |

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

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

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

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

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

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

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

140| `/sandbox` | Alihkan [mode sandbox](/docs/id/sandboxing). Hanya tersedia di platform yang didukung |140| `/sandbox` | Alihkan [mode sandbox](/docs/id/sandboxing). Hanya tersedia di platform yang didukung |

141| `/schedule [description]` | Buat, perbarui, daftar, atau jalankan [rutinitas](/docs/id/routines), yang dieksekusi di cloud. Claude memandu Anda melalui pengaturan secara percakapan. Anda juga dapat menanyakan tentang [jalankan terbaru rutinitas](/docs/id/routines#manage-routines-from-the-cli). Alias: `/routines` |141| `/schedule [description]` | Buat, perbarui, daftar, atau jalankan [routine](/docs/id/routines), yang dieksekusi di cloud. Claude memandu Anda melalui pengaturan secara percakapan. Anda juga dapat menanyakan tentang [eksekusi terbaru routine](/docs/id/routines#manage-routines-from-the-cli). Alias: `/routines` |

142| `/scroll-speed` | Sesuaikan [kecepatan scroll](/docs/id/fullscreen#mouse-wheel-scrolling) roda mouse secara interaktif, dengan penggaris yang dapat Anda gulir saat dialog terbuka untuk melihat pratinjau perubahan. Hanya tersedia dalam [rendering layar penuh](/docs/id/fullscreen) dan bukan di terminal IDE JetBrains |142| `/scroll-speed` | Sesuaikan [kecepatan scroll](/docs/id/fullscreen#mouse-wheel-scrolling) roda mouse secara interaktif, dengan penggaris yang dapat Anda gulir saat dialog terbuka untuk melihat pratinjau perubahan. Hanya tersedia dalam [rendering layar penuh](/docs/id/fullscreen) dan bukan di terminal IDE JetBrains |

143| `/security-review` | Analisis perubahan di cabang saat ini untuk kerentanan keamanan. Meninjau diff antara cabang dan cabang default asal, mengidentifikasi risiko seperti injeksi, masalah auth, dan paparan data. Memerlukan remote `origin`; jika tinjauan gagal dengan kesalahan `ambiguous argument`, lihat [referensi kesalahan](/docs/id/errors#security-review-fails-without-origin-head) |143| `/security-review` | Analisis perubahan di branch saat ini untuk kerentanan keamanan. Meninjau diff antara branch Anda dan branch default origin, mengidentifikasi risiko seperti injeksi, masalah auth, dan paparan data. Memerlukan remote `origin`; jika tinjauan gagal dengan kesalahan `ambiguous argument`, lihat [referensi kesalahan](/docs/id/errors#security-review-fails-without-origin-head) |

144| `/setup-bedrock` | Konfigurasi autentikasi [Amazon Bedrock](/docs/id/amazon-bedrock), wilayah, dan pin model melalui wizard interaktif. [Tersembunyi dari menu perintah](#how-the-command-menu-matches-what-you-type) sampai `CLAUDE_CODE_USE_BEDROCK=1` diatur; ketik sepenuhnya. Pengguna Amazon Bedrock pertama kali juga dapat mengakses wizard ini dari layar login |144| `/setup-bedrock` | Konfigurasi autentikasi [Amazon Bedrock](/docs/id/amazon-bedrock), wilayah, dan pin model melalui wizard interaktif. [Tersembunyi dari menu perintah](#how-the-command-menu-matches-what-you-type) sampai `CLAUDE_CODE_USE_BEDROCK=1` diatur; ketik sepenuhnya. Pengguna Amazon Bedrock pertama kali juga dapat mengakses wizard ini dari layar login |

145| `/setup-vertex` | Konfigurasi autentikasi [Platform Agen Google Cloud](/docs/id/google-vertex-ai), proyek, wilayah, dan pin model melalui wizard interaktif. [Tersembunyi dari menu perintah](#how-the-command-menu-matches-what-you-type) sampai `CLAUDE_CODE_USE_VERTEX=1` diatur; ketik sepenuhnya. Pengguna Platform Agen Google Cloud pertama kali juga dapat mengakses wizard ini dari layar login |145| `/setup-vertex` | Konfigurasi autentikasi [Platform Agen Google Cloud](/docs/id/google-vertex-ai), proyek, wilayah, dan pin model melalui wizard interaktif. [Tersembunyi dari menu perintah](#how-the-command-menu-matches-what-you-type) sampai `CLAUDE_CODE_USE_VERTEX=1` diatur; ketik sepenuhnya. Pengguna Platform Agen Google Cloud pertama kali juga dapat mengakses wizard ini dari layar login |

146| `/simplify [target]` | **[Skill](/docs/id/skills#bundled-skills).** Tinjau kode yang diubah untuk peluang pembersihan dan terapkan perbaikan. Empat [agen](/docs/id/sub-agents) tinjauan berjalan secara paralel, mencakup penggunaan kembali pembantu yang ada, penyederhanaan, efisiensi, dan apakah perubahan berada pada tingkat abstraksi yang tepat. Tinjauan tidak mencari bug kebenaran. Gunakan `/code-review` untuk menemukan bug. Berikan jalur atau referensi PR untuk meninjau target spesifik |146| `/simplify [target]` | **[Skill](/docs/id/skills#bundled-skills).** Tinjau kode yang diubah untuk peluang pembersihan dan terapkan perbaikan. Empat [agent](/docs/id/sub-agents) tinjauan berjalan secara paralel, mencakup penggunaan kembali pembantu yang ada, penyederhanaan, efisiensi, dan apakah perubahan berada pada tingkat abstraksi yang tepat. Tinjauan tidak mencari bug kebenaran. Gunakan `/code-review` untuk menemukan bug. Berikan jalur atau referensi PR untuk meninjau target spesifik |

147| `/skill-doctor` | Tampilkan apa yang setiap [skill](/docs/id/skills) Anda biaya dalam konteks dan seberapa sering digunakan, sehingga Anda dapat [menemukan skill untuk dimatikan](/docs/id/skills#find-unused-skills). Memerlukan Claude Code v2.1.252 atau lebih baru dan [pengambilan bendera fitur](/docs/id/env-vars#features-that-need-feature-flag-fetching) |147| `/skill-doctor` | Tampilkan berapa biaya konteks setiap [skill](/docs/id/skills) Anda dan seberapa sering digunakan, sehingga Anda dapat [menemukan skill untuk dimatikan](/docs/id/skills#find-unused-skills). Memerlukan Claude Code v2.1.252 atau lebih baru dan [pengambilan feature flag](/docs/id/env-vars#features-that-need-feature-flag-fetching) |

148| `/skills` | Daftar [skill](/docs/id/skills) yang tersedia. Ketik untuk memfilter daftar berdasarkan nama, deskripsi, atau sumber. Tekan `t` untuk mengurutkan berdasarkan jumlah token, `Space` atau `Enter` untuk [siklus visibilitas skill ke Claude dan menu `/`](/docs/id/skills#override-skill-visibility-from-settings), dan `Esc` untuk menyimpan dan menutup. Anda tidak dapat mengulangi skill plugin, skill yang frontmatter menetapkan `disable-model-invocation: true`, atau skill dengan entri `skillOverrides` dalam pengaturan terkelola atau bendera `--settings` |148| `/skills` | Daftar [skill](/docs/id/skills) yang tersedia. Ketik untuk memfilter daftar berdasarkan nama, deskripsi, atau sumber. Tekan `t` untuk mengurutkan berdasarkan jumlah token, `Space` atau `Enter` untuk [mengganti secara bergiliran visibilitas skill ke Claude dan menu `/`](/docs/id/skills#override-skill-visibility-from-settings), dan `Esc` untuk menyimpan dan menutup. Anda tidak dapat mengganti secara bergiliran skill plugin, skill yang frontmatter-nya menetapkan `disable-model-invocation: true`, atau skill dengan entri `skillOverrides` dalam pengaturan terkelola atau flag `--settings` |

149| `/slides [brief]` | **[Skill](/docs/id/skills#bundled-skills).** Buat presentasi baru sebagai [artifact](/docs/id/artifacts#make-a-slide-deck) Claude Slides yang diisi dari ringkasan Anda, misalnya `/slides a quarterly review of the platform team`. Memerlukan Claude Code v2.1.265 atau lebih baru, sesi di mana [artifact tersedia](/docs/id/artifacts#availability), dan akun di mana [template Slides tersedia](/docs/id/artifacts#start-from-a-slides-design-or-docs-template); jika tidak, perintah tidak muncul. Tersedia di Anthropic API. Di Amazon Bedrock, Platform Agen Google Cloud, Microsoft Foundry, dan Claude Platform di AWS, artifact tidak tersedia, jadi perintah tidak tersedia di sana |149| `/slides [brief]` | **[Skill](/docs/id/skills#bundled-skills).** Buat presentasi baru sebagai [artifact](/docs/id/artifacts#make-a-slide-deck) Claude Slides yang diisi dari ringkasan Anda, misalnya `/slides a quarterly review of the platform team`. Memerlukan Claude Code v2.1.265 atau lebih baru, sesi di mana [artifact tersedia](/docs/id/artifacts#availability), dan akun di mana [template Slides tersedia](/docs/id/artifacts#start-from-a-slides-design-or-docs-template); jika tidak, perintah tidak muncul. Tersedia di Anthropic API. Di Amazon Bedrock, Platform Agen Google Cloud, Microsoft Foundry, dan Claude Platform di AWS, artifact tidak tersedia, jadi perintah tidak tersedia di sana |

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

151| `/status` | Buka antarmuka Pengaturan di tab Status, menampilkan versi, model, akun, dan konektivitas. Baris `Session kind` membaca `background job · attached` atau `background job · unattended` dalam [sesi latar belakang](/docs/id/agent-view), tergantung pada apakah terminal terlampir, dan `interactive` dalam sesi lainnya. Sebelum v2.1.221, `/status` tidak menampilkan baris ini. Bekerja saat Claude merespons |151| `/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](/docs/id/agent-view), tergantung pada apakah terminal terlampir, dan `interactive` dalam sesi lainnya. Sebelum v2.1.221, `/status` tidak menampilkan baris ini. Bekerja saat Claude merespons |

152| `/statusline` | Konfigurasi [baris status](/docs/id/statusline) Claude Code. Jelaskan apa yang Anda inginkan, atau jalankan tanpa argumen untuk auto-konfigurasi dari prompt shell Anda |152| `/statusline` | Konfigurasi [baris status](/docs/id/statusline) Claude Code. Jelaskan apa yang Anda inginkan, atau jalankan tanpa argumen untuk auto-konfigurasi dari prompt shell Anda |

153| `/stickers` | Pesan stiker Claude Code |153| `/stickers` | Pesan stiker Claude Code |

154| `/stop` | Hentikan [sesi latar belakang](/docs/id/agent-view) saat ini. Hanya tersedia saat terlampir ke sesi latar belakang; transkrip dan worktree apa pun disimpan. Untuk melepaskan tanpa menghentikan, gunakan `/exit` atau tekan `←` |154| `/stop` | Hentikan [sesi latar belakang](/docs/id/agent-view) yang sedang Anda lampirkan, atau sesi yang Anda kirimi perintah ini sebagai [balasan peek](/docs/id/agent-view#peek-and-reply); transkrip dan worktree apa pun disimpan. Untuk melepaskan tanpa menghentikan, gunakan `/exit` atau tekan `←` |

155| `/subtask <task>` | Spawn [subagent yang bercabang](/docs/id/sub-agents#fork-the-current-conversation): subagent latar belakang yang mewarisi percakapan lengkap dan bekerja pada tugas saat Anda terus bekerja. Hasilnya kembali ke percakapan ini ketika selesai. Untuk menyalin percakapan ke sesi latar belakang terpisah sebagai gantinya, gunakan `/fork`. Memerlukan Claude Code v2.1.212 atau lebih baru; pada v2.1.161 melalui v2.1.211 perintah ini adalah `/fork`. Ketika [tampilan agen dimatikan](/docs/id/agent-view#turn-off-agent-view), `/subtask` tidak tersedia dan `/fork` mempertahankan perilaku subagent yang bercabang |155| `/subtask <task>` | Spawn [subagent fork](/docs/id/sub-agents#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`. Memerlukan Claude Code v2.1.212 atau lebih baru; pada v2.1.161 hingga v2.1.211 perintah ini adalah `/fork`. Ketika [tampilan agent dimatikan](/docs/id/agent-view#turn-off-agent-view), `/subtask` tidak tersedia dan `/fork` mempertahankan perilaku subagent fork |

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

157| `/team-onboarding` | Hasilkan panduan onboarding tim dari riwayat penggunaan Claude Code Anda. Claude menganalisis sesi, perintah, dan penggunaan server MCP Anda dari 30 hari terakhir dan menghasilkan panduan markdown yang dapat ditempel rekan kerja sebagai pesan pertama untuk pengaturan cepat. Untuk pelanggan claude.ai di paket Pro, Max, Team, dan Enterprise, juga mengembalikan tautan bagikan yang dapat dibuka rekan kerja langsung di Claude Code |157| `/team-onboarding` | Hasilkan panduan onboarding tim dari riwayat penggunaan Claude Code Anda. Claude menganalisis sesi, perintah, dan penggunaan server MCP Anda dari 30 hari terakhir dan menghasilkan panduan markdown yang dapat ditempel rekan kerja sebagai pesan pertama untuk pengaturan cepat. Untuk pelanggan claude.ai di paket Pro, Max, Team, dan Enterprise, juga mengembalikan tautan bagikan yang dapat dibuka rekan kerja langsung di Claude Code |

158| `/teleport` | Tarik [sesi cloud](/docs/id/claude-code-on-the-web#from-cloud-to-terminal) ke terminal ini. Membuka pemilih, kemudian mengambil cabang dan percakapan. Juga tersedia sebagai `/tp`. Memerlukan langganan claude.ai |158| `/teleport` | Tarik [sesi cloud](/docs/id/claude-code-on-the-web#from-cloud-to-terminal) ke terminal ini. Membuka pemilih, kemudian mengambil branch dan percakapan. Juga tersedia sebagai `/tp`. Memerlukan langganan claude.ai |

159| `/terminal-setup` | [Pasang pintasan keyboard Shift+Enter untuk baris baru](/docs/id/terminal-config#enter-multiline-prompts) di VS Code, Cursor, Devin Desktop, Alacritty, atau Zed. Di Apple Terminal, [aktifkan Option+Enter untuk baris baru dan matikan bel audibel](/docs/id/terminal-config#enable-option-key-shortcuts-on-macos) sebagai gantinya. Di iTerm2, [aktifkan akses clipboard sehingga `/copy` berfungsi](/docs/id/terminal-config#enable-option-key-shortcuts-on-macos) |159| `/terminal-setup` | [Pasang pintasan keyboard Shift+Enter untuk baris baru](/docs/id/terminal-config#enter-multiline-prompts) di VS Code, Cursor, Devin Desktop, Alacritty, atau Zed. Di Apple Terminal, [aktifkan Option+Enter untuk baris baru dan matikan bel audibel](/docs/id/terminal-config#enable-option-key-shortcuts-on-macos) sebagai gantinya. Di iTerm2, [aktifkan akses clipboard sehingga `/copy` berfungsi](/docs/id/terminal-config#enable-option-key-shortcuts-on-macos) |

160| `/theme` | Ubah tema warna. Mencakup opsi `auto` yang cocok dengan latar belakang terang atau gelap terminal Anda, varian terang dan gelap, tema yang dapat diakses buta warna (daltonized), tema ANSI yang menggunakan palet warna terminal Anda, dan [tema kustom](/docs/id/terminal-config#create-a-custom-theme) apa pun dari `~/.claude/themes/` atau plugin. Pilih **Tema kustom baru…** untuk membuat satu |160| `/theme` | Ubah tema warna. Mencakup opsi `auto` yang cocok dengan latar belakang terang atau gelap terminal Anda, varian terang dan gelap, tema yang dapat diakses buta warna (daltonized), tema ANSI yang menggunakan palet warna terminal Anda, dan [tema kustom](/docs/id/terminal-config#create-a-custom-theme) apa pun dari `~/.claude/themes/` atau plugin. Pilih **New custom theme…** untuk membuat satu |

161| `/tui [default\|fullscreen]` | Atur renderer UI terminal dan luncurkan ulang ke dalamnya dengan percakapan Anda tetap utuh. `fullscreen` mengaktifkan [renderer alt-screen bebas flicker](/docs/id/fullscreen). Tanpa argumen, mencetak renderer aktif |161| `/tui [default\|fullscreen]` | Atur renderer UI terminal dan luncurkan ulang ke dalamnya dengan percakapan Anda tetap utuh. `fullscreen` mengaktifkan [renderer alt-screen bebas flicker](/docs/id/fullscreen). Tanpa argumen, mencetak renderer aktif |

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

163| `/ultrareview [PR or branch]` | Jalankan tinjauan kode mendalam multi-agen dalam sandbox cloud dengan [ultrareview](/docs/id/ultrareview). Berikan referensi PR untuk meninjau permintaan tarik itu, atau cabang dasar atau commit untuk mengubah basis perbandingan. Invokasi yang disukai adalah `/code-review ultra`, dan `/ultrareview` adalah alias. Mencakup 3 jalankan gratis di Pro dan Max, kemudian memerlukan [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |163| `/ultrareview [PR or branch]` | Jalankan code review mendalam multi-agent dalam sandbox cloud dengan [ultrareview](/docs/id/ultrareview). 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 dan Max, kemudian memerlukan [kredit penggunaan](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) |

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

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

166| `/usage` | Tampilkan biaya sesi, batas penggunaan paket, dan statistik aktivitas. Pada paket Pro, Max, Team, atau Enterprise, mencakup [rincian apa yang dihitung terhadap batas paket Anda](/docs/id/costs#plan-usage-breakdown). `/cost` dan `/stats` adalah alias |166| `/usage` | Tampilkan biaya sesi, batas penggunaan paket, dan statistik aktivitas. Pada paket Pro, Max, Team, atau Enterprise, mencakup [rincian apa yang dihitung terhadap batas paket Anda](/docs/id/costs#plan-usage-breakdown). `/cost` dan `/stats` adalah alias |

167| `/usage-credits` | Konfigurasi kredit penggunaan, atau minta dari admin Anda, ketika Anda mencapai batas. Membuka [pengaturan penagihan kredit penggunaan](/docs/id/costs#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` |167| `/usage-credits` | Konfigurasi kredit penggunaan, atau minta dari admin Anda, ketika Anda mencapai batas. Membuka [pengaturan penagihan kredit penggunaan](/docs/id/costs#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` |

168| `/verify` | **[Skill](/docs/id/skills#bundled-skills).** Konfirmasi perubahan kode melakukan apa yang seharusnya dengan membangun aplikasi proyek Anda, menjalankannya, dan mengamati hasilnya, daripada mengandalkan tes atau pemeriksaan tipe. Lihat [Jalankan dan verifikasi aplikasi Anda](/docs/id/skills#run-and-verify-your-app) |168| `/verify` | **[Skill](/docs/id/skills#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](/docs/id/skills#run-and-verify-your-app) |

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

170| `/voice [hold\|tap\|off]` | Alihkan [dikte suara](/docs/id/voice-dictation), atau aktifkan dalam mode spesifik. Memerlukan akun Claude.ai |170| `/voice [hold\|tap\|off]` | Alihkan [dikte suara](/docs/id/voice-dictation), atau aktifkan dalam mode spesifik. Memerlukan akun Claude.ai |

171| `/web-setup` | Hubungkan akun GitHub Anda untuk [sesi cloud](/docs/id/web-quickstart#connect-from-your-terminal) menggunakan kredensial CLI `gh` lokal Anda |171| `/web-setup` | Hubungkan akun GitHub Anda untuk [sesi cloud](/docs/id/web-quickstart#connect-from-your-terminal) menggunakan kredensial CLI `gh` lokal Anda |

172| `/workflow-authoring` | **[Skill](/docs/id/skills#bundled-skills).** Muat referensi untuk menulis skrip [dynamic workflow](/docs/id/workflows): API skrip, perilaku resume, pola kualitas, dan contoh yang dikerjakan. Claude biasanya memuatnya dengan sendirinya sebelum menulis skrip; jalankan sendiri sebelum [mengedit skrip yang disimpan dengan tangan](/docs/id/workflows#edit-a-saved-script). Tersedia ketika alur kerja dinamis diaktifkan, dan memerlukan Claude Code v2.1.248 atau lebih baru |172| `/workflow-authoring` | **[Skill](/docs/id/skills#bundled-skills).** Muat referensi untuk menulis skrip [dynamic workflow](/docs/id/workflows): API skrip, perilaku resume, pola kualitas, dan contoh yang dikerjakan. Claude biasanya memuatnya dengan sendirinya sebelum menulis skrip; jalankan sendiri sebelum [mengedit skrip yang disimpan secara manual](/docs/id/workflows#edit-a-saved-script). Tersedia ketika dynamic workflow diaktifkan, dan memerlukan Claude Code v2.1.248 atau lebih baru |

173| `/workflows` | Buka tampilan [workflow](/docs/id/workflows#watch-the-run) untuk menonton, menjeda, melanjutkan, atau menyimpan alur kerja yang berjalan dan selesai |173| `/workflows` | Buka tampilan progres [workflow](/docs/id/workflows#watch-the-run) untuk memantau, menjeda, melanjutkan, atau menyimpan workflow yang sedang berjalan dan yang telah selesai |

174 174 

175<h2 id="how-the-command-menu-matches-what-you-type">175<h2 id="how-the-command-menu-matches-what-you-type">

176 Bagaimana menu perintah mencocokkan apa yang Anda ketik176 Bagaimana menu perintah mencocokkan apa yang Anda ketik

Details

65 Periksa hooks65 Periksa hooks

66</h2>66</h2>

67 67 

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

69 

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

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

69 72 

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

71 74 

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

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

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

75 77 

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

77 79 

Details

103 103 

104Jika apt melaporkan `E: Unsupported file ./claude-desktop_*.deb given on commandline`, pola tidak cocok dengan file `.deb` di direktori saat ini. Konfirmasi bahwa unduhan selesai, kemudian jalankan perintah lagi dari direktori yang berisi file tersebut.104Jika apt melaporkan `E: Unsupported file ./claude-desktop_*.deb given on commandline`, pola tidak cocok dengan file `.deb` di direktori saat ini. Konfirmasi bahwa unduhan selesai, kemudian jalankan perintah lagi dari direktori yang berisi file tersebut.

105 105 

106Menginstal `.deb` juga mendaftarkan repositori apt Anthropic di `/etc/apt/sources.list.d/claude-desktop.list`, jadi pembaruan di masa depan tiba dengan [pembaruan paket reguler](#update) sistem Anda.106`.deb` berisi kunci penandatanganan Anthropic dan menginstalnya di `/usr/share/keyrings/claude-desktop-archive-keyring.asc`, sehingga Anda tidak perlu mengunduh kunci tersebut sendiri. Kecuali Anda menonaktifkan pendaftaran dengan `CLAUDE_DESKTOP_ADD_REPO`, paket juga mendaftarkan repositori apt di `/etc/apt/sources.list.d/claude-desktop.list`, sehingga pembaruan di masa depan tiba dengan [pembaruan paket reguler](#update) sistem Anda.

107 107 

108<h2 id="update">108<h2 id="update">

109 Perbarui109 Perbarui

env-vars.md +363 −358

Details

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

17 17 

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

19 Atur variabel lingkungan19 Atur environment variable

20</h2>20</h2>

21 21 

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


56 </Tab>56 </Tab>

57</Tabs>57</Tabs>

58 58 

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

60 60 

61<Tabs>61<Tabs>

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


124 Variabel124 Variabel

125</h2>125</h2>

126 126 

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

128 128 

129<Note>129<Note>

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

131 131 

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

133 133 

134 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`134 * `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

135 * `DISABLE_TELEMETRY`135 * `DISABLE_TELEMETRY`


138 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`138 * `FALLBACK_FOR_ALL_PRIMARY_MODELS`

139 * `IS_DEMO`139 * `IS_DEMO`

140 140 

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

142</Note>142</Note>

143 143 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

183| `ANTHROPIC_FOUNDRY_RESOURCE` | Nama sumber daya Microsoft Foundry (misalnya, `my-resource`). Diperlukan jika `ANTHROPIC_FOUNDRY_BASE_URL` tidak diatur (lihat [Microsoft Foundry](/docs/id/microsoft-foundry)) |183| `ANTHROPIC_FOUNDRY_RESOURCE` | Nama resource Microsoft Foundry (misalnya, `my-resource`). Wajib jika `ANTHROPIC_FOUNDRY_BASE_URL` tidak diatur (lihat [Microsoft Foundry](/docs/id/microsoft-foundry)) |

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

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

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

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

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

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

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

191| `ANTHROPIC_WORKSPACE_ID` | ID Workspace untuk [federasi identitas beban kerja](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Atur ini ketika aturan federasi Anda mencakup lebih dari satu workspace sehingga pertukaran token tahu workspace mana yang ditargetkan |191| `ANTHROPIC_WORKSPACE_ID` | ID workspace untuk [workload identity federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Atur ini jika aturan federasi Anda mencakup lebih dari satu workspace sehingga pertukaran token mengetahui workspace mana yang dituju |

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

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

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

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

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

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

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

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

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

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

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

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

204| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Atur ke `1` untuk melewati awalan `mcp__<server>__` pada nama alat dari server MCP yang dibuat SDK. Alat menggunakan nama asli mereka. Penggunaan SDK saja |204| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Atur ke `1` untuk melewati prefiks `mcp__<server>__` pada nama tool dari server MCP yang dibuat SDK. Tool menggunakan nama aslinya. Hanya untuk penggunaan SDK |

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

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

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

208| `CLAUDE_AX_PREPARK_MS` | Dalam [mode pembaca layar](/docs/id/accessibility#what-your-screen-reader-hears), berapa milidetik Claude Code menunggu, dengan kursor di awal baris, sebelum menulis baris baru atau berubah. Default `50`. Atur `0` untuk menulis segera. Claude Code membatasi tunggu pada `5000`. Memerlukan Claude Code v2.1.233 atau lebih baru |208| `CLAUDE_AX_PREPARK_MS` | Dalam [mode pembaca layar](/docs/id/accessibility), berapa milidetik Claude Code menunggu sebelum menulis baris baru atau baris yang berubah. Default `0`, sehingga Claude Code tidak menunggu. Sebelum v2.1.287, default-nya adalah `50`. Claude Code membatasi waktu tunggu hingga `5000`. Memerlukan Claude Code v2.1.233 atau lebih baru |

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

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

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

212| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | Timeout dalam milidetik untuk watchdog idle streaming tingkat byte; ketika diatur, itu mengambil prioritas di atas `CLAUDE_STREAM_IDLE_TIMEOUT_MS` untuk watchdog itu dan meninggalkan watchdog tingkat acara tidak berubah. Claude Code menjepit variabel ini antara 10 detik dan 30 menit. Memerlukan Claude Code v2.1.210 atau lebih baru |212| `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` | Timeout dalam milidetik untuk watchdog idle streaming tingkat byte; jika diatur, variabel ini diutamakan daripada `CLAUDE_STREAM_IDLE_TIMEOUT_MS` untuk watchdog tersebut dan membiarkan watchdog tingkat event tidak berubah. Claude Code membatasi variabel ini antara 10 detik dan 30 menit. Memerlukan Claude Code v2.1.210 atau lebih baru |

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

248| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Atur ke `1` untuk menonaktifkan [memori otomatis](/docs/id/memory#auto-memory). Atur ke `0` untuk memaksa memori otomatis aktif bahkan ketika mode `--bare` atau [`autoMemoryEnabled: false`](/docs/id/settings-reference#automemoryenabled) akan menonaktifkannya. Ketika dinonaktifkan, Claude tidak membuat atau memuat file memori otomatis |248| `CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK` | Atur ke `1` agar proses Claude Code menjalankan sendiri perintah [`gcpAuthRefresh`](/docs/id/settings-reference#gcpauthrefresh) atau [`awsAuthRefresh`](/docs/id/settings-reference#awsauthrefresh) alih-alih menunggu selagi proses lain menjalankannya. Memerlukan Claude Code v2.1.286 atau lebih baru |

249| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Atur ke `1` untuk menonaktifkan semua fungsionalitas tugas latar belakang, termasuk parameter `run_in_background` pada alat Bash dan subagent, auto-backgrounding, dan pintasan Ctrl+B |249| `CLAUDE_CODE_DISABLE_AUTO_MEMORY` | Atur ke `1` untuk menonaktifkan [auto memory](/docs/id/memory#auto-memory). Atur ke `0` untuk memaksa auto memory aktif bahkan ketika mode `--bare` atau [`autoMemoryEnabled: false`](/docs/id/settings-reference#automemoryenabled) akan menonaktifkannya. Jika dinonaktifkan, Claude tidak membuat atau memuat file auto memory |

250| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Atur ke `1` untuk menghentikan Claude Code dari memperlakukan respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) dengan header `Content-Type` yang hilang atau kosong sebagai aliran acara biner Amazon Bedrock. Secara default, Claude Code mengasumsikan gateway menghilangkan header dari respons yang sebaliknya tidak dimodifikasi, jadi itu mendekode badan dan streaming terus bekerja. Atur ini hanya untuk gateway yang juga memancarkan ulang aliran sebagai acara yang dikirim server; Claude Code kemudian membaca badan tanpa header sebagai acara yang dikirim server sebagai gantinya. Memerlukan Claude Code v2.1.239 atau lebih baru |250| `CLAUDE_CODE_DISABLE_BACKGROUND_TASKS` | Atur ke `1` untuk menonaktifkan semua fungsionalitas tugas latar belakang, termasuk parameter `run_in_background` pada tool Bash dan subagent, pemindahan otomatis ke latar belakang, dan pintasan Ctrl+B |

251| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Atur ke `1` untuk melewati pemeriksaan bahwa respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) membawa jenis konten `application/vnd.amazon.eventstream`. Tanpa variabel ini, ketika respons membawa jenis konten berbeda, Claude Code gagal permintaan dengan kesalahan yang menyebutkan jenis itu, yang berarti [gateway atau proxy mengubah respons](/docs/id/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). Konfigurasikan gateway untuk meneruskan header `Content-Type` dan badan tanpa dimodifikasi daripada menetapkan variabel ini. Memerlukan Claude Code v2.1.208 atau lebih baru |251| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_DEFAULT` | Atur ke `1` untuk menghentikan Claude Code memperlakukan respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) dengan header `Content-Type` yang hilang atau kosong sebagai event stream biner Amazon Bedrock. Secara default, Claude Code mengasumsikan gateway menghapus header dari respons yang selebihnya tidak dimodifikasi, sehingga Claude Code mendekode body dan streaming tetap berfungsi. Atur ini hanya untuk gateway yang juga mengirim ulang stream sebagai server-sent events; Claude Code kemudian membaca body tanpa header sebagai server-sent events. Memerlukan Claude Code v2.1.239 atau lebih baru |

252| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Atur ke `1` untuk menghentikan perintah shell latar belakang sesi [latar belakang](/docs/id/agent-view) yang berjalan, alur kerja dinamis, dan, mulai dari v2.1.198, subagent latar belakang ketika [supervisor](/docs/id/agent-view#the-supervisor-process) berhenti, memulai ulang, atau memperbarui proses sesi itu, daripada menyerahkannya ke proses berikutnya sesi. Hanya mempengaruhi penyerahan itu: backgrounding sesi dengan `←` atau [`/background`](/docs/id/agent-view#from-inside-a-session) masih membawa pekerjaan dalam penerbangan, dan `CLAUDE_DISABLE_ADOPT` menonaktifkan keduanya. Memerlukan Claude Code v2.1.196 atau lebih baru |252| `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD` | Atur ke `1` untuk melewati pemeriksaan bahwa respons streaming [Amazon Bedrock](/docs/id/amazon-bedrock) membawa content-type `application/vnd.amazon.eventstream`. Tanpa variabel ini, ketika respons membawa content-type yang berbeda, Claude Code menggagalkan permintaan dengan error yang menyebutkan jenis tersebut, yang berarti [gateway atau proxy sedang mengubah respons](/docs/id/amazon-bedrock#streaming-errors-behind-a-gateway-or-proxy). Konfigurasikan gateway untuk meneruskan header `Content-Type` dan body tanpa modifikasi alih-alih mengatur variabel ini. Memerlukan Claude Code v2.1.208 atau lebih baru |

253| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Atur ke `1` untuk menghentikan Claude Code dari menghentikan [perintah shell latar belakang](/docs/id/interactive-mode#background-bash-commands) ketika sistem operasi melaporkan tekanan memori. Secara default, di macOS dan Linux, Claude Code menghentikan shell latar belakang yang dimulai di sesi utama pada sinyal tekanan memori setelah sesi telah menganggur selama 30 menit dan tidak ada giliran atau subagent yang berjalan. Windows tidak memiliki sinyal tekanan memori, jadi variabel ini tidak berpengaruh di sana. Memerlukan Claude Code v2.1.193 atau lebih baru |253| `CLAUDE_CODE_DISABLE_BG_EXIT_HANDOFF` | Atur ke `1` untuk menghentikan perintah shell latar belakang yang sedang berjalan di [sesi latar belakang](/docs/id/agent-view), workflow dinamis, dan, sejak v2.1.198, subagent latar belakang ketika [supervisor](/docs/id/agent-view#the-supervisor-process) menghentikan, memulai ulang, atau memperbarui proses sesi tersebut, alih-alih menyerahkannya ke proses berikutnya dari sesi tersebut. Hanya memengaruhi penyerahan tersebut: memindahkan sesi ke latar belakang dengan `←` atau [`/background`](/docs/id/agent-view#from-inside-a-session) tetap membawa pekerjaan yang sedang berlangsung, dan `CLAUDE_DISABLE_ADOPT` mematikan keduanya. Memerlukan Claude Code v2.1.196 atau lebih baru |

254| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Atur ke `1` untuk menonaktifkan [skills](/docs/id/skills) dan alur kerja yang disertakan dengan Claude Code: skills bundel dan alur kerja dihapus sepenuhnya, sementara perintah bawaan seperti `/init` tetap dapat diketik tetapi disembunyikan dari model. `/doctor` tetap dapat diketik seperti perintah bawaan; sembunyikan dengan `DISABLE_DOCTOR_COMMAND` sebagai gantinya. Skills dari plugin, `.claude/skills/`, dan `.claude/commands/` tidak terpengaruh. Setara dengan pengaturan [`disableBundledSkills`](/docs/id/settings-reference#disablebundledskills) |254| `CLAUDE_CODE_DISABLE_BG_SHELL_PRESSURE_REAP` | Atur ke `1` untuk menghentikan Claude Code mengakhiri [perintah shell latar belakang](/docs/id/interactive-mode#background-bash-commands) saat terjadi tekanan memori. Secara default, di macOS dan Linux, Claude Code mengakhiri shell latar belakang ketika sistem operasi melaporkan tekanan memori kritis dan sesi telah idle selama 30 menit tanpa giliran atau subagent yang berjalan. Windows tidak memiliki sinyal tekanan memori, sehingga variabel ini tidak berpengaruh di sana. Memerlukan Claude Code v2.1.193 atau lebih baru |

255| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Atur ke `1` untuk menjaga alat browser [Claude in Chrome](/docs/id/chrome) tetap tersedia sambil menghilangkan bagian Chrome dari prompt sistem dan skill bundel `/claude-in-chrome` [](/docs/id/skills#bundled-skills). Untuk host yang menyematkan Claude Code dan menyediakan panduan browser mereka sendiri. Memerlukan Claude Code v2.1.257 atau lebih baru |255| `CLAUDE_CODE_DISABLE_BUNDLED_SKILLS` | Atur ke `1` untuk menonaktifkan [skill](/docs/id/skills) dan workflow yang disertakan dengan Claude Code: skill dan workflow bawaan dihapus sepenuhnya, sementara perintah bawaan seperti `/init` tetap dapat diketik tetapi disembunyikan dari model. `/doctor` tetap dapat diketik seperti perintah bawaan; sembunyikan dengan `DISABLE_DOCTOR_COMMAND` sebagai gantinya. Skill dari plugin, `.claude/skills/`, dan `.claude/commands/` tidak terpengaruh. Setara dengan pengaturan [`disableBundledSkills`](/docs/id/settings-reference#disablebundledskills) |

256| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Atur ke `1` untuk mencegah memuat file memori CLAUDE.md apa pun ke dalam konteks, termasuk file memori pengguna, proyek, dan otomatis |256| `CLAUDE_CODE_DISABLE_CFC_PROMPT` | Atur ke `1` untuk menjaga tool browser [Claude in Chrome](/docs/id/chrome) tetap tersedia sambil menghilangkan bagian Chrome dari system prompt dan [skill bawaan](/docs/id/skills#bundled-skills) `/claude-in-chrome`. Untuk host yang menyematkan Claude Code dan menyediakan panduan browser mereka sendiri. Memerlukan Claude Code v2.1.257 atau lebih baru |

257| `CLAUDE_CODE_DISABLE_CRON` | Atur ke `1` untuk menonaktifkan [tugas terjadwal](/docs/id/scheduled-tasks). Skill `/loop` dan alat cron menjadi tidak tersedia dan tugas yang sudah dijadwalkan apa pun berhenti diaktifkan, termasuk tugas yang sudah berjalan di tengah sesi |257| `CLAUDE_CODE_DISABLE_CLAUDE_MDS` | Atur ke `1` untuk mencegah pemuatan file memori CLAUDE.md apa pun ke dalam konteks, termasuk file memori pengguna, proyek, dan auto memory |

258| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Atur ke `1` untuk menonaktifkan batas waktu pada prompt [penghapusan jalur kritis](/docs/id/permission-modes#critical-paths). Dalam mode `auto` Claude Code kemudian mengirim penghapusan ini ke pengklasifikasi sebagai gantinya, dan dalam mode `bypassPermissions` prompt menunggu jawaban Anda. Atur di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirim melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.281 atau lebih baru |258| `CLAUDE_CODE_DISABLE_CRON` | Atur ke `1` untuk menonaktifkan [tugas terjadwal](/docs/id/scheduled-tasks). Skill `/loop` dan tool cron menjadi tidak tersedia dan tugas yang sudah dijadwalkan berhenti dijalankan, termasuk tugas yang sedang berjalan di tengah sesi |

259| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS` | Atur ke `1` untuk menghapus header permintaan `anthropic-beta` spesifik Anthropic dan bidang skema alat beta (seperti `defer_loading` dan `eager_input_streaming`) dari permintaan API. Gunakan ini ketika gateway proxy menolak permintaan dengan kesalahan seperti "Unexpected value(s) for the `anthropic-beta` header" atau "Extra inputs are not permitted". Bidang standar (`name`, `description`, `input_schema`, `cache_control`) dipertahankan. [Pencarian alat MCP](/docs/id/mcp#scale-with-mcp-tool-search) dinonaktifkan dan semua alat MCP dimuat di muka, bahkan ketika Anda menetapkan `ENABLE_TOOL_SEARCH`. Di Claude Code v2.1.227 atau lebih baru, [pengaturan yang dikelola](/docs/id/managed-settings) dapat menjaga pencarian alat tetap aktif. [Nonaktifkan kemampuan pra-rilis](/docs/id/llm-gateway-protocol#disable-pre-release-capabilities) mencakup tempat penggantian berlaku |259| `CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT` | Atur ke `1` untuk mematikan batas waktu pada permintaan izin [penghapusan jalur kritis](/docs/id/permission-modes#critical-paths). Dalam mode `auto`, Claude Code kemudian mengirimkan penghapusan ini ke pengklasifikasi, dan dalam mode `bypassPermissions` permintaan izin menunggu jawaban Anda. Atur di lingkungan yang meluncurkan Claude Code, karena Claude Code mengabaikan salinan yang dikirimkan melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.281 atau lebih baru |

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

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

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

263| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Atur ke `1` untuk menonaktifkan file [checkpointing](/docs/id/checkpointing). Perintah `/rewind` tidak akan dapat mengembalikan perubahan kode. Mengganti pengaturan [`fileCheckpointingEnabled`](/docs/id/settings-reference#filecheckpointingenabled) |263| `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` | Atur ke `1` untuk menonaktifkan survei kualitas sesi "How is Claude doing?". Survei juga dinonaktifkan ketika `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur, kecuali `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` mengaktifkannya kembali. Untuk mengatur laju sampel alih-alih menonaktifkannya sepenuhnya, gunakan pengaturan [`feedbackSurveyRate`](/docs/id/settings-reference#feedbacksurveyrate). Lihat [Survei kualitas sesi](/docs/id/data-usage#session-quality-surveys) |

264| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Atur ke `1` untuk menghapus instruksi alur kerja commit dan PR bawaan dan snapshot status git dari prompt sistem Claude. Berguna saat menggunakan skill alur kerja git Anda sendiri. Mengambil prioritas di atas pengaturan [`includeGitInstructions`](/docs/id/settings-reference#includegitinstructions) ketika diatur |264| `CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING` | Atur ke `1` untuk menonaktifkan [checkpointing](/docs/id/checkpointing) file. Perintah `/rewind` tidak akan dapat memulihkan perubahan kode. Menimpa pengaturan [`fileCheckpointingEnabled`](/docs/id/settings-reference#filecheckpointingenabled) |

265| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Atur ke `1` untuk mencegah pemetaan ulang otomatis Opus 4.0 dan 4.1 ke versi Opus saat ini di API Anthropic. Gunakan ketika Anda sengaja ingin menyematkan model yang lebih lama. Pemetaan ulang tidak berjalan di Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry |265| `CLAUDE_CODE_DISABLE_GIT_INSTRUCTIONS` | Atur ke `1` untuk menghapus instruksi alur kerja commit dan PR bawaan serta snapshot status git dari konteks Claude. Berguna saat menggunakan skill alur kerja git Anda sendiri. Diutamakan daripada pengaturan [`includeGitInstructions`](/docs/id/settings-reference#includegitinstructions) jika diatur |

266| `CLAUDE_CODE_DISABLE_MOUSE` | Atur ke `1` untuk menonaktifkan pelacakan mouse dalam [rendering fullscreen](/docs/id/fullscreen). Pengguliran keyboard dengan `PgUp` dan `PgDn` masih bekerja. Gunakan ini untuk menjaga perilaku salinan-pada-pilih asli terminal Anda |266| `CLAUDE_CODE_DISABLE_LEGACY_MODEL_REMAP` | Atur ke `1` untuk mencegah pemetaan ulang otomatis Opus 4.0 dan 4.1 ke versi Opus saat ini di Anthropic API. Gunakan ketika Anda sengaja ingin mem-pin model yang lebih lama. Pemetaan ulang tidak berjalan di Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry |

267| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Atur ke `1` untuk menonaktifkan penanganan klik, seret, dan hover dalam [rendering fullscreen](/docs/id/fullscreen) sambil menjaga pengguliran roda mouse. Gunakan ini ketika Anda ingin pengguliran roda bekerja di dalam Claude Code tetapi tidak ingin klik memposisikan kursor, memperluas output alat, atau membuka tautan. `CLAUDE_CODE_DISABLE_MOUSE` mengambil prioritas ketika keduanya diatur. Memerlukan Claude Code v2.1.195 atau lebih baru |267| `CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK` | Atur ke `1` untuk menghentikan Claude Code di [Amazon Bedrock](/docs/id/amazon-bedrock#when-a-model-is-disabled-mid-session) dan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai#when-a-model-is-disabled-mid-session) beralih ke model yang lebih lama ketika akun Anda kehilangan akses ke model sesi di tengah sesi; permintaan yang ditolak langsung gagal sebagai gantinya. [Rantai model fallback](/docs/id/model-config#fallback-model-chains) yang Anda konfigurasi tetap beralih pada penolakan tersebut, dan [pemeriksaan model saat startup](/docs/id/amazon-bedrock#startup-model-checks) tetap melakukan fallback saat peluncuran. Memerlukan Claude Code v2.1.285 atau lebih baru |

268| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Atur ke `1` untuk menghentikan Claude Code dari membaca ulang [sertifikat klien mTLS dan kunci](/docs/id/network-config#mtls-authentication) ketika permintaan API gagal dengan kesalahan tingkat koneksi, seperti pengaturan ulang koneksi atau kesalahan jabat tangan TLS. Dengan reload dinonaktifkan, Claude Code memuat file yang diputar hanya ketika berikutnya menerapkan pengaturan atau pada startup berikutnya. Memerlukan Claude Code v2.1.232 atau lebih baru |268| `CLAUDE_CODE_DISABLE_MOUSE` | Atur ke `1` untuk menonaktifkan pelacakan mouse dalam [rendering fullscreen](/docs/id/fullscreen). Pengguliran keyboard dengan `PgUp` dan `PgDn` tetap berfungsi. Gunakan ini untuk mempertahankan perilaku copy-on-select native terminal Anda |

269| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk menonaktifkan lalu lintas jaringan yang tidak penting: pembaruan otomatis, telemetri, pelaporan kesalahan, perintah `/feedback`, [umpan balik yang ditulis Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), catatan rilis, pemeriksaan [lencana status PR dan MR](/docs/id/interactive-mode#pr-review-status), dan pemeriksaan ketersediaan seperti pemeriksaan [mode cepat](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). Ini juga menghentikan [jalankan latar belakang dari sumber `command` plugin](/docs/id/plugins/loading#when-a-command-source-re-runs), yang merupakan perintah lokal daripada lalu lintas jaringan, karena mereka dapat memicu instalasi ketergantungan. **Menetapkannya ke `0` atau `false` masih menonaktifkan lalu lintas ini**, tidak seperti sebagian besar variabel aktif/mati; batalkan penetapan variabel untuk mengizinkannya lagi. Juga menonaktifkan pengambilan flag fitur, yang membuat [Remote Control](/docs/id/remote-control#requirements) dan [fitur lain yang memerlukan pengambilan flag fitur](#features-that-need-feature-flag-fetching) tidak tersedia. Instalasi otomatis marketplace plugin resmi tidak tercakup; nonaktifkan dengan `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. Tidak mempengaruhi [penemuan model gateway](/docs/id/llm-gateway-connect#add-gateway-models-to-the-model-picker), yang memiliki opt-in sendiri |269| `CLAUDE_CODE_DISABLE_MOUSE_CLICKS` | Atur ke `1` untuk menonaktifkan penanganan klik, seret, dan hover dalam [rendering fullscreen](/docs/id/fullscreen) sambil tetap mempertahankan pengguliran roda mouse. Gunakan ini ketika Anda ingin pengguliran roda berfungsi di dalam Claude Code tetapi tidak ingin klik memosisikan kursor, memperluas output tool, atau membuka tautan. `CLAUDE_CODE_DISABLE_MOUSE` diutamakan ketika keduanya diatur. Memerlukan Claude Code v2.1.195 atau lebih baru |

270| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Atur ke `1` untuk menonaktifkan fallback non-streaming ketika permintaan streaming gagal di tengah-tengah. Kesalahan streaming menyebar ke lapisan percobaan ulang sebagai gantinya. Berguna ketika proxy atau gateway menyebabkan fallback menghasilkan eksekusi alat duplikat |270| `CLAUDE_CODE_DISABLE_MTLS_RELOAD_ON_STALE_CONNECTION` | Atur ke `1` untuk menghentikan Claude Code membaca ulang [sertifikat dan kunci klien mTLS](/docs/id/network-config#mtls-authentication) ketika permintaan API gagal dengan error tingkat koneksi, seperti reset koneksi atau error handshake TLS. Dengan pemuatan ulang dinonaktifkan, Claude Code memuat file yang dirotasi hanya saat berikutnya menerapkan pengaturan atau pada startup berikutnya. Memerlukan Claude Code v2.1.232 atau lebih baru |

271| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Atur ke `1` untuk mengirim pemberitahuan desktop alat `PushNotification` bahkan saat Anda mengetik atau fokus pada terminal. Secara default alat melewati pemberitahuan desktop dan [push mobile](/docs/id/remote-control#mobile-push-notifications) ketika mendeteksi aktivitas keyboard atau fokus terminal baru-baru ini. Variabel ini hanya menonaktifkan pemeriksaan lokal itu, jadi server masih dapat menekan push mobile ketika mendeteksi bahwa Anda aktif. Memerlukan Claude Code v2.1.193 atau lebih baru |271| `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` | Atur ke nilai apa pun yang tidak kosong, seperti `1`, untuk menonaktifkan lalu lintas jaringan yang tidak penting: pembaruan otomatis, telemetri, pelaporan error, perintah `/feedback`, [umpan balik yang dirancang Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), catatan rilis, pemeriksaan [lencana status PR dan MR](/docs/id/interactive-mode#pr-review-status), dan pemeriksaan ketersediaan seperti pemeriksaan [fast mode](/docs/id/fast-mode#use-fast-mode-behind-proxies-and-llm-gateways). Ini juga menghentikan [eksekusi latar belakang dari sumber `command` plugin](/docs/id/plugins/loading#when-a-command-source-re-runs), yang merupakan perintah lokal alih-alih lalu lintas jaringan, karena dapat memicu instalasi dependensi. **Mengaturnya ke `0` atau `false` tetap menonaktifkan lalu lintas ini**, tidak seperti sebagian besar variabel on/off; hapus pengaturan variabel untuk mengizinkannya lagi. Juga menonaktifkan pengambilan feature flag, yang membuat [Remote Control](/docs/id/remote-control#requirements) dan [fitur lain yang memerlukan pengambilan feature flag](#features-that-need-feature-flag-fetching) tidak tersedia. Instalasi otomatis marketplace plugin resmi tidak tercakup; nonaktifkan dengan `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`. Tidak memengaruhi [penemuan model gateway](/docs/id/llm-gateway-connect#add-gateway-models-to-the-model-picker), yang memiliki opsi aktivasinya sendiri |

272| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Atur ke `1` untuk menonaktifkan pendaftaran otomatis marketplace plugin resmi. Claude Code membaca variabel ketika akan mendaftarkan marketplace, biasanya selama peluncuran interaktif mesin pertama. Jika variabel diatur pada titik itu, Claude Code melewati pendaftaran secara permanen. Membatalkan penetapan variabel nanti tidak membatalkan lompatan. Jalankan `claude plugin marketplace add anthropics/claude-plugins-official` untuk mendaftarkan marketplace kapan saja |272| `CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK` | Atur ke `1` untuk menonaktifkan fallback non-streaming ketika permintaan streaming gagal di tengah stream. Error streaming diteruskan ke lapisan retry sebagai gantinya. Berguna ketika proxy atau gateway menyebabkan fallback menghasilkan eksekusi tool duplikat |

273| `CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS` | Atur ke `1` untuk menghentikan Claude Code dari menjalankan [hook `Notification` Anda untuk permintaan izin yang belum dijawab](/docs/id/hooks#notification) di sesi di mana Claude Code mengirimnya ke callback `canUseTool` Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code menampilkan Claude Code. Tidak berpengaruh di sesi terminal. Memerlukan Claude Code v2.1.233 atau lebih baru |273| `CLAUDE_CODE_DISABLE_NOTIFICATION_PRESENCE_CHECK` | Atur ke `1` untuk mengirim notifikasi desktop tool `PushNotification` bahkan saat Anda sedang mengetik di terminal atau terminal sedang dalam fokus. Secara default, tool tersebut melewati notifikasi desktop dan [push seluler](/docs/id/remote-control#mobile-push-notifications) ketika mendeteksi aktivitas keyboard terbaru atau fokus terminal. Variabel ini hanya menonaktifkan pemeriksaan lokal tersebut, sehingga server masih dapat menekan push seluler ketika mendeteksi bahwa Anda sedang aktif. Memerlukan Claude Code v2.1.193 atau lebih baru |

274| `CLAUDE_CODE_DISABLE_POLICY_SKILLS` | Atur ke `1` untuk melewati pemuatan skills dari direktori skills yang dikelola di seluruh sistem. Berguna untuk sesi container atau CI yang tidak boleh memuat skills yang disediakan operator |274| `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` | Atur ke `1` untuk menonaktifkan pendaftaran otomatis marketplace plugin resmi. Claude Code membaca variabel ini saat akan mendaftarkan marketplace, biasanya selama peluncuran interaktif pertama pada suatu mesin. Jika variabel diatur pada saat itu, Claude Code melewati pendaftaran secara permanen. Menghapus pengaturan variabel di kemudian hari tidak membatalkan pelewatan tersebut. Jalankan `claude plugin marketplace add anthropics/claude-plugins-official` untuk mendaftarkan marketplace kapan saja |

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

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

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

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

279| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Atur ke `1` untuk melewati [auto-compaction](/docs/id/costs#reduce-token-usage) proaktif ketika Claude Code tidak mengenali ID model, seperti alias [gateway LLM](/docs/id/llm-gateway). Tanpa variabel ini, Claude Code compact pada jendela konteks yang diasumsikan untuk ID. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` dapat mengoreksi jendela yang diasumsikan sebagai gantinya; lihat [Koreksi jendela untuk ID model gateway atau khusus](/docs/id/model-config#correct-the-window-for-a-gateway-or-custom-model-id) untuk kapan setiap variabel berlaku. Memerlukan Claude Code v2.1.223 atau lebih baru |279| `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Atur ke `1` untuk menonaktifkan pembaruan judul terminal otomatis berdasarkan konteks percakapan. Ini juga melewati permintaan model small/fast di latar belakang yang [menghasilkan judul sesi](/docs/id/sessions#name-your-sessions) |

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

281| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Atur ke `1` untuk memulai perintah [alat PowerShell](/docs/id/tools-reference#powershell-tool) di Windows secara langsung daripada melalui peluncur `cmd.exe`. Secara default, peluncur memungkinkan perintah PowerShell [berjalan di latar belakang](/docs/id/tools-reference#background-commands) [membawa ke proses sesi berikutnya](/docs/id/agent-view#the-supervisor-process), seperti ketika Anda [menempatkan sesi di latar belakang](/docs/id/agent-view#from-inside-a-session). Jika Anda menetapkan variabel, perintah PowerShell yang dilatarbelakangkan berhenti ketika proses sesi keluar. Perintah Bash tidak terpengaruh. Memerlukan Claude Code v2.1.269 atau lebih baru |281| `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT` | Atur ke `1` untuk melewati [auto-compaction](/docs/id/costs#reduce-token-usage) proaktif ketika Claude Code tidak mengenali ID model, seperti alias [LLM gateway](/docs/id/llm-gateway). Tanpa variabel ini, Claude Code melakukan compaction pada context window yang diasumsikannya untuk ID tersebut. `CLAUDE_CODE_MAX_CONTEXT_TOKENS` dapat mengoreksi window yang diasumsikan sebagai gantinya; lihat [Mengoreksi window untuk gateway atau ID model kustom](/docs/id/model-config#correct-the-window-for-a-gateway-or-custom-model-id) untuk mengetahui kapan setiap variabel berlaku. Memerlukan Claude Code v2.1.223 atau lebih baru |

282| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Atur ke `1` untuk menonaktifkan [alur kerja](/docs/id/workflows#turn-workflows-off). Setara dengan pengaturan [`disableWorkflows`](/docs/id/settings-reference#disableworkflows) |282| `CLAUDE_CODE_DISABLE_VIRTUAL_SCROLL` | Atur ke `1` untuk menonaktifkan virtual scrolling dalam [rendering fullscreen](/docs/id/fullscreen) dan merender setiap pesan dalam transkrip. Gunakan ini jika pengguliran dalam mode fullscreen menampilkan area kosong di tempat pesan seharusnya muncul |

283| `CLAUDE_CODE_EFFORT_LEVEL` | Atur tingkat effort untuk model yang didukung. Nilai: `low`, `medium`, `high`, `xhigh`, `max`, atau `auto` untuk menggunakan default model. Tingkat yang tersedia tergantung pada model. Mengambil prioritas di atas `--effort`, `/effort`, dan pengaturan `modelSettings` dan `effortLevel`. Batas [`maxEffortLevel`](/docs/id/settings-reference#maxeffortlevel) masih berlaku. Lihat [Sesuaikan tingkat effort](/docs/id/model-config#adjust-effort-level) |283| `CLAUDE_CODE_DISABLE_WEB_FETCH` | Atur ke `1` untuk mematikan tool [WebFetch](/docs/id/tools-reference#webfetch-tool-behavior). Tool [WebSearch](/docs/id/tools-reference#websearch-tool-behavior) tetap tersedia. Memerlukan Claude Code v2.1.285 atau lebih baru |

284| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Diterima untuk kompatibilitas dengan rilis yang lebih lama dan tidak berpengaruh. Mode otomatis tersedia secara default di setiap penyedia, termasuk Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, dan sesi [gateway aplikasi Claude](/docs/id/claude-apps-gateway) yang masuk. Di v2.1.158 melalui v2.1.206, menetapkan ini ke `1` diperlukan untuk membuat [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) tersedia di penyedia itu |284| `CLAUDE_CODE_DISABLE_WINDOWS_SHELL_LAUNCHER` | Atur ke `1` untuk memulai perintah [tool PowerShell](/docs/id/tools-reference#powershell-tool) di Windows secara langsung alih-alih melalui launcher `cmd.exe`. Secara default, launcher memungkinkan perintah PowerShell yang [berjalan di latar belakang](/docs/id/tools-reference#background-commands) [berlanjut ke proses berikutnya dari sesi](/docs/id/agent-view#the-supervisor-process), seperti saat Anda [memindahkan sesi ke latar belakang](/docs/id/agent-view#from-inside-a-session). Jika Anda mengatur variabel ini, perintah PowerShell yang dipindahkan ke latar belakang berhenti saat proses sesi keluar. Perintah Bash tidak terpengaruh. Memerlukan Claude Code v2.1.269 atau lebih baru |

285| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Ganti ketersediaan [ringkasan sesi](/docs/id/interactive-mode#session-recap). Atur ke `0` untuk memaksa ringkasan mati terlepas dari toggle `/config`. Atur ke `1` untuk memaksa ringkasan aktif ketika [`awaySummaryEnabled`](/docs/id/settings-reference#awaysummaryenabled) adalah `false`. Mengambil prioritas di atas pengaturan dan toggle `/config` |285| `CLAUDE_CODE_DISABLE_WORKFLOWS` | Atur ke `1` untuk menonaktifkan [workflow](/docs/id/workflows#turn-workflows-off). Setara dengan pengaturan [`disableWorkflows`](/docs/id/settings-reference#disableworkflows) |

286| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Atur ke `1` untuk menyegarkan status plugin di batas giliran dalam [mode non-interaktif](/docs/id/headless) setelah instalasi latar belakang selesai. Dimatikan secara default karena penyegaran mengubah prompt sistem di tengah sesi, yang membatalkan [prompt caching](/docs/id/prompt-caching) untuk giliran itu |286| `CLAUDE_CODE_EFFORT_LEVEL` | Atur tingkat effort untuk model yang didukung. Nilai: `low`, `medium`, `high`, `xhigh`, `max`, atau `auto` untuk menggunakan default model. Tingkat yang tersedia bergantung pada model. Diutamakan daripada `--effort`, `/effort`, serta pengaturan `modelSettings` dan `effortLevel`. Batas [`maxEffortLevel`](/docs/id/settings-reference#maxeffortlevel) tetap berlaku. Lihat [Menyesuaikan tingkat effort](/docs/id/model-config#adjust-effort-level) |

287| `CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL` | Atur ke `1` untuk merutekan survei kualitas sesi "Bagaimana Claude melakukannya?" ke [kolektor OpenTelemetry](/docs/id/monitoring-usage) Anda sendiri ketika lalu lintas nonessential terikat Anthropic diblokir. Peringkat survei dipancarkan hanya sebagai acara OTEL ke kolektor yang dikonfigurasi. Tidak ada data survei yang dikirim ke Anthropic dalam mode ini. Berlaku ketika `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`, atau `DO_NOT_TRACK` diatur, dan tidak berpengaruh sebaliknya. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` dan kebijakan umpan balik produk organisasi mengambil prioritas |287| `CLAUDE_CODE_ENABLE_AUTO_MODE` | Diterima untuk kompatibilitas dengan rilis lama dan tidak berpengaruh. Auto mode tersedia secara default di setiap penyedia, termasuk Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, dan sesi [Claude apps gateway](/docs/id/claude-apps-gateway) yang sudah masuk. Di v2.1.158 hingga v2.1.206, mengatur ini ke `1` diperlukan agar [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) tersedia di penyedia tersebut |

288| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Mengontrol apakah input panggilan alat mengalir dari API saat Claude menghasilkannya. Dengan ini dimatikan, input alat besar seperti penulisan file panjang tiba hanya setelah Claude selesai menghasilkannya, yang dapat terlihat seperti itu tergantung. Diaktifkan secara default di API Anthropic. Di Amazon Bedrock dan Google Cloud's Agent Platform, diaktifkan per model di mana kontainer yang digunakan mendukungnya. Atur ke `0` untuk memilih keluar. Atur ke `1` untuk memaksa aktif saat merutekan melalui proxy melalui `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, atau `ANTHROPIC_BEDROCK_BASE_URL`. Dimatikan secara default di Microsoft Foundry dan koneksi [gateway](/docs/id/llm-gateway) |288| `CLAUDE_CODE_ENABLE_AWAY_SUMMARY` | Timpa ketersediaan [rekap sesi](/docs/id/interactive-mode#session-recap). Atur ke `0` untuk memaksa rekap nonaktif terlepas dari toggle `/config`. Atur ke `1` untuk memaksa rekap aktif ketika [`awaySummaryEnabled`](/docs/id/settings-reference#awaysummaryenabled) bernilai `false`. Diutamakan daripada pengaturan dan toggle `/config` |

289| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Atur ke `1` untuk mengisi pemilih `/model` dari endpoint `/v1/models` gateway Anda ketika `ANTHROPIC_BASE_URL` menunjuk ke gateway yang kompatibel Anthropic seperti LiteLLM, Kong, atau proxy internal. Dimatikan secara default karena gateway yang didukung oleh kunci API bersama akan menampilkan setiap pengguna setiap model yang dapat diakses kunci. Model yang ditemukan masih disaring oleh daftar izin [`availableModels`](/docs/id/settings-reference#availablemodels) yang diterima sesi; berikan daftar melalui [MDM atau file pengaturan yang dikelola](/docs/id/managed-settings#delivery-mechanisms), karena [pengiriman yang dikelola server tidak tersedia di konfigurasi gateway](/docs/id/server-managed-settings#platform-availability) |289| `CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH` | Atur ke `1` untuk menyegarkan status plugin pada batas giliran dalam [mode non-interaktif](/docs/id/headless) setelah instalasi latar belakang selesai. Nonaktif secara default karena penyegaran mengubah system prompt di tengah sesi, yang membatalkan [prompt caching](/docs/id/prompt-caching) untuk giliran tersebut |

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

291| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Atur ke `false` untuk menonaktifkan saran prompt, prediksi abu-abu yang muncul di input prompt Anda. Mengambil prioritas di atas pengaturan [`promptSuggestionEnabled`](/docs/id/settings-reference#promptsuggestionenabled), yang merupakan apa yang toggle **Saran prompt** di `/config` tulis. Claude Code juga [menjeda saran saat akun Anda mendekati atau mencapai batas penggunaan](/docs/id/interactive-mode#when-claude-code-skips-suggestions). Atur ke `true` untuk menyimpannya aktif sampai Anda mencapai batas. Memerlukan Claude Code v2.1.238 atau lebih baru. Lihat [Saran prompt](/docs/id/interactive-mode#prompt-suggestions) |291| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | Mengontrol apakah input panggilan tool di-stream dari API saat Claude menghasilkannya. Jika ini dinonaktifkan, input tool yang besar seperti penulisan file yang panjang baru tiba setelah Claude selesai menghasilkannya, yang dapat terlihat seperti macet. Diaktifkan secara default pada Anthropic API. Pada Amazon Bedrock dan Google Cloud's Agent Platform, diaktifkan per model jika container yang di-deploy mendukungnya. Atur ke `0` untuk menonaktifkan. Atur ke `1` untuk memaksa aktif saat merutekan melalui proxy via `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERTEX_BASE_URL`, atau `ANTHROPIC_BEDROCK_BASE_URL`. Nonaktif secara default pada koneksi Microsoft Foundry dan [gateway](/docs/id/llm-gateway) |

292| `CLAUDE_CODE_ENABLE_TASKS` | Memilih alat pelacakan tugas mana yang Claude Code sediakan di [sesi yang memilikinya](/docs/id/tools-reference#task-tool-availability). Secara default, Claude Code menyediakan alat Task `TaskCreate`, `TaskUpdate`, `TaskGet`, dan `TaskList`. Atur ke `0` untuk mendapatkan alat `TodoWrite` warisan sebagai gantinya. Lihat [Daftar tugas](/docs/id/interactive-mode#task-list) |292| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | Atur ke `1` untuk mengisi pemilih `/model` dari endpoint `/v1/models` gateway Anda ketika `ANTHROPIC_BASE_URL` mengarah ke gateway yang kompatibel dengan Anthropic seperti LiteLLM, Kong, atau proxy internal. Nonaktif secara default karena gateway yang didukung oleh kunci API bersama akan menampilkan kepada setiap pengguna setiap model yang dapat diakses oleh kunci tersebut. Model yang ditemukan tetap difilter oleh allowlist [`availableModels`](/docs/id/settings-reference#availablemodels) yang diterima sesi; kirimkan daftar tersebut melalui [MDM atau file pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms), karena [pengiriman yang dikelola server tidak tersedia pada konfigurasi gateway](/docs/id/server-managed-settings#platform-availability) |

293| `CLAUDE_CODE_ENABLE_TELEMETRY` | Atur ke `1` untuk mengaktifkan pengumpulan data OpenTelemetry untuk metrik dan logging. Diperlukan sebelum mengonfigurasi pengekspor OTel. Atur di shell, pengaturan pengguna, atau pengaturan yang dikelola. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Lihat [Monitoring](/docs/id/monitoring-usage) |293| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | Dihapus di v2.1.142, ketika default [fast mode](/docs/id/fast-mode) berpindah dari Opus 4.6 ke Opus 4.7 |

294| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Atur ke `1` untuk mendapatkan alat pelacakan tugas di setiap model. Tanpanya, Claude Code menyediakannya secara default hanya di model yang tercantum di bawah [Ketersediaan alat Task](/docs/id/tools-reference#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` masih memilih alat Task atau `TodoWrite`. Memerlukan Claude Code v2.1.233 atau lebih baru |294| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | Atur ke `false` untuk menonaktifkan saran prompt, yaitu prediksi berwarna abu-abu yang muncul di input prompt Anda. Diutamakan daripada pengaturan [`promptSuggestionEnabled`](/docs/id/settings-reference#promptsuggestionenabled), yang merupakan nilai yang ditulis oleh toggle **Prompt suggestions** di `/config`. Claude Code juga [menjeda saran ketika akun Anda mendekati atau mencapai batas penggunaannya](/docs/id/interactive-mode#when-claude-code-skips-suggestions). Atur ke `true` agar saran tetap aktif hingga Anda mencapai batas. Memerlukan Claude Code v2.1.238 atau yang lebih baru. Lihat [Saran prompt](/docs/id/interactive-mode#prompt-suggestions) |

295| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Waktu dalam milidetik untuk menunggu setelah loop kueri menjadi idle sebelum keluar secara otomatis. Berguna untuk alur kerja otomatis dan skrip menggunakan mode SDK |295| `CLAUDE_CODE_ENABLE_TASKS` | Memilih tool pelacakan tugas mana yang disediakan Claude Code dalam [sesi yang memilikinya](/docs/id/tools-reference#task-tool-availability). Secara default, Claude Code menyediakan tool Task `TaskCreate`, `TaskUpdate`, `TaskGet`, dan `TaskList`. Atur ke `0` untuk mendapatkan tool `TodoWrite` versi lama sebagai gantinya. Lihat [Daftar tugas](/docs/id/interactive-mode#task-list) |

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

331| `CLAUDE_CODE_NATIVE_CURSOR` | Atur ke `1` untuk menampilkan kursor terminal sendiri di karet input daripada blok yang ditarik. Kursor menghormati pengaturan blink, bentuk, dan fokus terminal |334| `CLAUDE_CODE_NATIVE_CURSOR` | Atur ke `1` untuk menampilkan kursor terminal sendiri pada posisi caret input alih-alih blok yang digambar. Kursor menghormati pengaturan kedip, bentuk, dan fokus terminal |

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

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

334| `CLAUDE_CODE_NO_FLICKER` | Atur ke `1` untuk mengaktifkan [rendering fullscreen](/docs/id/fullscreen), pratinjau penelitian yang mengurangi flicker dan menjaga memori datar dalam percakapan panjang. Mengganti pengaturan [`tui`](/docs/id/settings-reference#tui); Anda juga dapat beralih dengan `/tui fullscreen` |337| `CLAUDE_CODE_NO_FLICKER` | Atur ke `1` untuk mengaktifkan [rendering layar penuh](/docs/id/fullscreen), sebuah research preview yang mengurangi kedipan dan menjaga penggunaan memori tetap stabil dalam percakapan panjang. Menimpa pengaturan [`tui`](/docs/id/settings-reference#tui); Anda juga dapat beralih dengan `/tui fullscreen` |

335| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Token penyegaran OAuth untuk autentikasi Claude.ai. Ketika diatur, `claude auth login` menukar token ini secara langsung daripada membuka browser. Memerlukan `CLAUDE_CODE_OAUTH_SCOPES`. Berguna untuk menyediakan autentikasi di lingkungan otomatis |338| `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` | Refresh token OAuth untuk autentikasi Claude.ai. Jika diatur, `claude auth login` menukarkan token ini secara langsung alih-alih membuka browser. Memerlukan `CLAUDE_CODE_OAUTH_SCOPES`. Berguna untuk menyediakan autentikasi di lingkungan otomatis |

336| `CLAUDE_CODE_OAUTH_SCOPES` | Ruang lingkup OAuth yang dipisahkan spasi yang token penyegaran dikeluarkan dengan, seperti `"user:profile user:inference user:sessions:claude_code"`. Diperlukan ketika `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` diatur |339| `CLAUDE_CODE_OAUTH_SCOPES` | Scope OAuth yang dipisahkan spasi yang digunakan saat refresh token diterbitkan, seperti `"user:profile user:inference user:sessions:claude_code"`. Diperlukan ketika `CLAUDE_CODE_OAUTH_REFRESH_TOKEN` diatur |

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

363| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Atur ke `1` untuk secara otomatis melanjutkan jika sesi sebelumnya berakhir di tengah-giliran. Digunakan dalam mode SDK sehingga model melanjutkan tanpa memerlukan SDK untuk mengirim ulang prompt. Untuk menonaktifkan ini, batalkan penetapan variabel atau atur ke `0`. Sebelum v2.1.221, Claude Code mengabaikan `0` dan nilai falsy lainnya, jadi menetapkan `0` masih memicu resume dalam mode non-interaktif dan membatalkan penetapan variabel adalah satu-satunya cara untuk menonaktifkannya |366| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` | Atur ke `1` untuk melanjutkan secara otomatis jika sesi sebelumnya berakhir di tengah giliran. Digunakan dalam mode SDK sehingga model melanjutkan tanpa mengharuskan SDK mengirim ulang prompt. Untuk mematikannya, hapus pengaturan variabel atau atur ke `0`. Untuk panel chat VS Code, lihat [Melanjutkan percakapan setelah reload](/docs/id/vs-code#continue-conversations-after-a-reload) |

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

518 522 

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

520 524 

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

522 526 

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

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


540* Mensinkronkan [skills](/docs/id/skills#where-synced-skills-load) dan [plugins](/docs/id/plugins/loading#synced-plugins) yang diaktifkan untuk akun claude.ai Anda ke dalam sesi terminal Anda544* Mensinkronkan [skills](/docs/id/skills#where-synced-skills-load) dan [plugins](/docs/id/plugins/loading#synced-plugins) yang diaktifkan untuk akun claude.ai Anda ke dalam sesi terminal Anda

541* Menggunakan [alat penasihat](/docs/id/advisor#requirements)545* Menggunakan [alat penasihat](/docs/id/advisor#requirements)

542* Membaca atau membalas [komentar pada artefak](/docs/id/artifacts#collect-comments-on-an-artifact)546* Membaca atau membalas [komentar pada artefak](/docs/id/artifacts#collect-comments-on-an-artifact)

547* Meminta Claude membaca [artifact publik milik organisasi lain](/docs/id/artifacts#read-an-artifact-shared-with-you)

543* Memiliki Claude Code menyelidiki server konektor claude.ai untuk [revisi protokol MCP 2026-07-28](/docs/id/mcp#mcp-client-runtimes) kecuali Anda menetapkan `MCP_PROTOCOL_NEGOTIATION=auto`548* Memiliki Claude Code menyelidiki server konektor claude.ai untuk [revisi protokol MCP 2026-07-28](/docs/id/mcp#mcp-client-runtimes) kecuali Anda menetapkan `MCP_PROTOCOL_NEGOTIATION=auto`

544* Mendapatkan [alat PowerShell](/docs/id/tools-reference#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 menetapkan `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Di Windows tanpa Git Bash, alat tetap aktif549* Mendapatkan [alat PowerShell](/docs/id/tools-reference#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 menetapkan `CLAUDE_CODE_USE_POWERSHELL_TOOL=1`. Di Windows tanpa Git Bash, alat tetap aktif

545* Mendapatkan [umpan balik yang dibuat Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), yang Claude Code aktifkan melalui flag yang diambil550* Mendapatkan [umpan balik yang dibuat Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), yang Claude Code aktifkan melalui flag yang diambil

errors.md +641 −613

Details

8 8 

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

10 10 

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

12 12 

13<Note>13<Note>

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


75| `Remote Control stopped — the app running this session is now signed in to a different Claude account` | [Authentication](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |75| `Remote Control stopped — the app running this session is now signed in to a different Claude account` | [Authentication](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |

76| `Remote Control stopped — the app running this session is signed out of Claude` | [Authentication](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |76| `Remote Control stopped — the app running this session is signed out of Claude` | [Authentication](#remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts) |

77| `Couldn't verify your organization's policy for remote control` | [Troubleshoot Remote Control](/docs/id/remote-control#couldnt-verify-your-organizations-policy-for-remote-control) |77| `Couldn't verify your organization's policy for remote control` | [Troubleshoot Remote Control](/docs/id/remote-control#couldnt-verify-your-organizations-policy-for-remote-control) |

78| `Remote Control is disabled by your organization's policy` | [Troubleshoot Remote Control](/docs/id/remote-control#remote-control-is-disabled-by-your-organizations-policy) |

79| `Remote Control was turned off by your organization's policy` | [Troubleshoot Remote Control](/docs/id/remote-control#remote-control-was-turned-off-by-your-organizations-policy) |

78| `OAuth token revoked` / `OAuth token has expired` | [Authentication](#oauth-token-revoked-or-expired) |80| `OAuth token revoked` / `OAuth token has expired` | [Authentication](#oauth-token-revoked-or-expired) |

79| `API Error: 401 Invalid authentication credentials` | [Authentication](#api-error-401-invalid-authentication-credentials) |81| `API Error: 401 Invalid authentication credentials` | [Authentication](#api-error-401-invalid-authentication-credentials) |

80| `Login expired · Please run /login` | [Authentication](#login-expired) |82| `Login expired · Please run /login` | [Authentication](#login-expired) |


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

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

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

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

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

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

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


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

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

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

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

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

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

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


246| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |249| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |

247| `Marketplace "<name>" is already added from a different source` | [Plugin errors](#marketplace-is-already-added-from-a-different-source) |250| `Marketplace "<name>" is already added from a different source` | [Plugin errors](#marketplace-is-already-added-from-a-different-source) |

248| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Plugin errors](#marketplace-name-is-another-spelling-of-a-reserved-name) |251| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Plugin errors](#marketplace-name-is-another-spelling-of-a-reserved-name) |

252| `Marketplace "<name>" is added but ignored` | [Plugin troubleshooting](/docs/id/plugins/troubleshooting#marketplace-is-added-but-ignored) |

253| `Marketplace "<name>" is registered but was refused (see the debug log)` | [Plugin troubleshooting](/docs/id/plugins/troubleshooting#marketplace-is-added-but-ignored) |

249| `references ${user_config.*} in a shell-form command` | [Plugin errors](#plugin-command-references-user-config) |254| `references ${user_config.*} in a shell-form command` | [Plugin errors](#plugin-command-references-user-config) |

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

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

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

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

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

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

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


418 Kesalahan server424 Kesalahan server

419</h2>425</h2>

420 426 

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

422 428 

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

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


432 438 

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

434 440 

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

436 442 

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

438 444 


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

447</h3>453</h3>

448 454 

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

450 456 

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

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


474Request timed out480Request timed out

475```481```

476 482 

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

478 484 

479**Yang harus dilakukan:**485**Yang harus dilakukan:**

480 486 

481* Coba lagi permintaan487* Coba lagi permintaan

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

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

484 490 

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

486 No response from API492 No response from API

487</h3>493</h3>

488 494 

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

490 496 

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

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

493```499```

494 500 

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

496 502 

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

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

499 505 

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

501 507 


503 509 

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

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

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

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

508 514 

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

510 516 

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

512 The response above may be incomplete518 The response above may be incomplete

513</h3>519</h3>

514 520 

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

516 522 

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

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


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

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

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

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

530* `The response stream was malformed`: peristiwa tiba untuk blok konten yang sudah selesai, atau peristiwa tiba rusak. Peristiwa yang rusak adalah peristiwa yang datanya bukan JSON yang valid, yang kontennya hilang, atau yang kontennya tidak cocok dengan jenis peristiwa. Sebelum v2.1.284, kesalahan parser mentah, seperti yang dimulai dengan `API Error: JSON Parse error`, muncul sebagai gantinya ketika peristiwa dengan JSON yang tidak valid tiba setelah Claude menyelesaikan pemikirannya, blok teks, atau panggilan alat.536* `The response stream was malformed`: peristiwa tiba untuk blok konten yang sudah selesai, atau peristiwa tiba rusak. Peristiwa yang rusak adalah peristiwa yang datanya bukan JSON yang valid, yang kontennya hilang, atau yang kontennya tidak cocok dengan jenis peristiwa. Sebelum v2.1.284, kesalahan parser mentah, seperti yang dimulai dengan `API Error: JSON Parse error`, muncul sebagai gantinya ketika peristiwa dengan JSON yang tidak valid tiba setelah Claude menyelesaikan pemikirannya, blok teks, atau panggilan tool.

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

532 538 

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

534 540 

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

536 542 

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

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

539 545 

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

541 547 

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

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

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

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

546 552 

547**Yang harus dilakukan:**553**Yang harus dilakukan:**

548 554 

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

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

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

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


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

567```573```

568 574 

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

570 576 

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

572 578 

573**Yang harus dilakukan:**579**Yang harus dilakukan:**

574 580 

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

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

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

578 584 

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

580 586 

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

582 588 


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

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

611 617 

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

613 619 

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

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


617 623 

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

619 625 

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

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

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

623 629 

624**Yang harus dilakukan:**630**Yang harus dilakukan:**

625 631 

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

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

628 634 

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


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

637```643```

638 644 

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

640 646 

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

642 648 


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

648 654 

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

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

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

652 658 

653**Yang harus dilakukan:**659**Yang harus dilakukan:**


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

664</h3>670</h3>

665 671 

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

667 673 

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

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


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

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

676 682 

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

678 684 

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

680 Batas penggunaan686 Batas penggunaan


885 Kesalahan autentikasi891 Kesalahan autentikasi

886</h2>892</h2>

887 893 

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

889 895 

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

891 Belum masuk897 Belum masuk

892</h3>898</h3>

893 899 

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

895 901 

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

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

898```904```

899 905 

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

907 

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

909 

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

901 911 

902**Yang harus dilakukan:**912**Yang harus dilakukan:**

903 913 

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

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

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

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

908 918 

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

910 920 

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

912 Tidak dapat menyelesaikan metode autentikasi922 Tidak dapat menentukan metode autentikasi

913</h3>923</h3>

914 924 

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

916 926 

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

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

919```929```

920 930 

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

922 932 

923**Yang harus dilakukan:**933**Yang harus dilakukan:**

924 934 

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

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

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

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

929 939 

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

931 Kunci API tidak valid941 Kunci API tidak valid

932</h3>942</h3>

933 943 

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

935 945 

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

937Invalid API key · Fix external API key947Invalid API key · Fix external API key

938```948```

939 949 

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

941 951 

942**Yang harus dilakukan:**952**Yang harus dilakukan:**

943 953 

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

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

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

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

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

949 959 

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

951 Skrip apiKeyHelper Anda gagal961 Skrip apiKeyHelper Anda gagal

952</h3>962</h3>

953 963 

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

955 965 

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

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

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

959 969 

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

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

962```972```

963 973 

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

965 975 

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

967 977 

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

969 979 

970**Yang harus dilakukan:**980**Yang harus dilakukan:**

971 981 

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

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

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

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

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

977 987 

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

979 Nilai header permintaan tidak valid989 Nilai header permintaan tidak valid

980</h3>990</h3>

981 991 

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

983 993 

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

985 995 

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

987Invalid auth token · Fix external auth token997Invalid auth token · Fix external auth token


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

990```1000```

991 1001 

992Bagian pertama pesan tergantung pada tempat nilai buruk berasal:1002Bagian pertama pesan bergantung pada asal nilai yang salah:

993 1003 

994* `Invalid auth token`: token pembawa dari [`ANTHROPIC_AUTH_TOKEN`](/docs/id/env-vars) atau [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars)1004* `Invalid auth token`: bearer token dari [`ANTHROPIC_AUTH_TOKEN`](/docs/id/env-vars) atau [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars)

995* `Invalid ANTHROPIC_CUSTOM_HEADERS`: nama header atau nilai yang Anda atur dalam [`ANTHROPIC_CUSTOM_HEADERS`](/docs/id/env-vars). Deskripsi menghitung pasangan `Name: Value` mana yang bersalah, seperti `distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS`, tanpa mengulangi nama atau nilai, karena Anda memilih keduanya.1005* `Invalid ANTHROPIC_CUSTOM_HEADERS`: nama atau nilai header yang Anda atur di [`ANTHROPIC_CUSTOM_HEADERS`](/docs/id/env-vars). Deskripsi menghitung pasangan `Name: Value` mana yang bermasalah, seperti `distinct header 2 of 3 parsed from ANTHROPIC_CUSTOM_HEADERS`, tanpa mengulang nama atau nilainya, karena Anda yang memilih keduanya.

996* `Invalid request header from the environment`: nilai yang Claude Code salin ke header permintaan dari variabel lingkungan lain, seperti `CLAUDE_AGENT_SDK_CLIENT_APP`. Deskripsi menamai variabel untuk diperbaiki.1006* `Invalid request header from the environment`: nilai yang disalin Claude Code ke header permintaan dari environment variable lain, seperti `CLAUDE_AGENT_SDK_CLIENT_APP`. Deskripsi menyebutkan variabel yang perlu diperbaiki.

997 1007 

998Claude Code melaporkan `ANTHROPIC_API_KEY` buruk yang ditangkap oleh pemeriksaan ini sebagai [Kunci API tidak valid](#invalid-api-key), dengan deskripsi trailing yang sama. Ini melaporkan kredensial `/login` yang disimpan buruk sebagai [Belum masuk](#not-logged-in) sebagai gantinya; jalankan `/login` untuk menyimpan yang baru. Output skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) tidak pernah mencapai pemeriksaan ini: Claude Code memvalidasinya ketika skrip berjalan, dan output yang tidak dapat dibawa header HTTP gagal dengan [Skrip apiKeyHelper Anda gagal](#your-apikeyhelper-script-is-failing).1008Claude Code melaporkan `ANTHROPIC_API_KEY` yang salah yang tertangkap oleh pemeriksaan ini sebagai [Kunci API tidak valid](#invalid-api-key), dengan deskripsi penutup yang sama. Claude Code melaporkan kredensial `/login` tersimpan yang salah sebagai [Belum masuk](#not-logged-in); jalankan `/login` untuk menyimpan kredensial baru. Output skrip [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) tidak pernah mencapai pemeriksaan ini: Claude Code memvalidasinya saat skrip dijalankan, dan output yang tidak dapat dibawa oleh header HTTP akan gagal dengan [Skrip apiKeyHelper Anda gagal](#your-apikeyhelper-script-is-failing).

999 1009 

1000Setelah `·` kedua, pesan menjelaskan masalahnya, seperti dalam contoh lengkap ini:1010Setelah `·` kedua, pesan menjelaskan masalahnya, seperti pada contoh lengkap berikut:

1001 1011 

1002```text theme={null}1012```text theme={null}

1003Invalid auth token · Fix external auth token · Invalid Authorization header value from ANTHROPIC_AUTH_TOKEN: it contains a line break at character 41 (120 characters on 2 lines).1013Invalid auth token · Fix external auth token · Invalid Authorization header value from ANTHROPIC_AUTH_TOKEN: it contains a line break at character 41 (120 characters on 2 lines).

1004```1014```

1005 1015 

1006Posisi menghitung karakter mulai dari satu. Deskripsi dibangun dari frasa tetap dan penghitungan karakter, jadi tidak pernah menyertakan nilai itu sendiri. Ini menamai karakter yang menyinggung hanya ketika itu adalah karakter tak terlihat atau tipografi yang terkenal, seperti tanda urutan byte, spasi lebar nol, atau tanda kutip melengkung, dan melaporkan apa pun yang lain sebagai `a non-ASCII character`.1016Posisi menghitung karakter mulai dari satu. Deskripsi dibangun dari frasa tetap dan jumlah karakter, sehingga tidak pernah menyertakan nilai itu sendiri. Deskripsi menyebutkan karakter yang bermasalah hanya jika karakter tersebut adalah karakter tak terlihat atau tipografis yang dikenal luas, seperti byte-order mark, spasi lebar-nol, atau tanda kutip melengkung, dan melaporkan karakter lainnya sebagai `a non-ASCII character`.

1007 1017 

1008**Yang harus dilakukan:**1018**Yang harus dilakukan:**

1009 1019 

1010* Atur ulang variabel atau pengaturan yang dinamai pesan, mengetik ulang karakter di sekitar posisi yang dilaporkan daripada menempel dari sumber yang sama lagi1020* Atur ulang variabel atau pengaturan yang disebutkan pesan, dengan mengetik ulang karakter di sekitar posisi yang dilaporkan alih-alih menempel lagi dari sumber yang sama

1011* Untuk `ANTHROPIC_CUSTOM_HEADERS`, simpan satu pasangan `Name: Value` per baris dan tulis ulang pasangan yang dihitung pesan1021* Untuk `ANTHROPIC_CUSTOM_HEADERS`, pertahankan satu pasangan `Name: Value` per baris dan tulis ulang pasangan yang dihitung oleh pesan

1012* Jalankan `/status` untuk mengonfirmasi sumber kredensial mana yang aktif1022* Jalankan `/status` untuk memastikan sumber kredensial mana yang aktif

1013 1023 

1014<h3 id="this-organization-has-been-disabled">1024<h3 id="this-organization-has-been-disabled">

1015 Organisasi ini telah dinonaktifkan1025 Organisasi ini telah dinonaktifkan

1016</h3>1026</h3>

1017 1027 

1018Claude Code menggunakan `ANTHROPIC_API_KEY` lama dari organisasi Console yang dinonaktifkan. Ketika Anda memiliki login langganan yang disimpan, kunci menimpanya.1028Claude Code menggunakan `ANTHROPIC_API_KEY` usang dari organisasi Console yang dinonaktifkan. Ketika Anda memiliki login langganan yang tersimpan, kunci tersebut menimpanya.

1019 1029 

1020```text theme={null}1030```text theme={null}

1021Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your subscription instead1031Your ANTHROPIC_API_KEY belongs to a disabled organization · Unset the environment variable to use your subscription instead


1023API Error: 400 ... This organization has been disabled.1033API Error: 400 ... This organization has been disabled.

1024```1034```

1025 1035 

1026Petunjuk setelah `·` tergantung pada kredensial yang disimpan Anda: bentuk pertama muncul ketika `/login` yang disimpan dapat mengambil alih setelah Anda membatalkan pengaturan kunci, dan yang kedua ketika kunci adalah satu-satunya kredensial Anda.1036Petunjuk setelah `·` bergantung pada kredensial tersimpan Anda: bentuk pertama muncul ketika `/login` yang tersimpan dapat menggantikannya setelah Anda menghapus pengaturan kunci, dan bentuk kedua ketika kunci tersebut adalah satu-satunya kredensial Anda.

1027 1037 

1028Variabel lingkungan mengambil prioritas atas `/login`, jadi kunci yang diekspor dalam profil shell Anda atau dimuat dari file `.env` digunakan bahkan ketika Anda memiliki langganan Pro atau Max yang berfungsi. Dalam mode non-interaktif (`-p`), kunci selalu digunakan saat ada.1038Environment variable diutamakan daripada `/login`, sehingga kunci yang diekspor di profil shell Anda atau dimuat dari file `.env` tetap digunakan bahkan ketika Anda memiliki langganan Pro atau Max yang berfungsi. Dalam mode non-interaktif (`-p`), kunci selalu digunakan jika ada.

1029 1039 

1030**Yang harus dilakukan:**1040**Yang harus dilakukan:**

1031 1041 

1032* Batalkan pengaturan `ANTHROPIC_API_KEY` di shell saat ini dan hapus dari profil shell Anda, kemudian luncurkan ulang `claude`1042* Hapus pengaturan `ANTHROPIC_API_KEY` di shell saat ini dan hapus dari profil shell Anda, lalu jalankan ulang `claude`

1033* Jika pesan mengatakan `Update or unset`, Anda tidak memiliki login yang disimpan untuk kembali. Batalkan pengaturan kunci dan jalankan `/login`, atau ganti kunci dengan yang dari organisasi Console aktif.1043* Jika pesan menyebutkan `Update or unset`, Anda tidak memiliki login tersimpan untuk dijadikan cadangan. Hapus pengaturan kunci dan jalankan `/login`, atau ganti kunci dengan kunci dari organisasi Console yang aktif.

1034* Jalankan `/status` setelahnya untuk mengonfirmasi kredensial aktif adalah langganan Anda1044* Jalankan `/status` setelahnya untuk memastikan kredensial yang aktif adalah langganan Anda

1035* Jika tidak ada variabel lingkungan yang diatur dan kesalahan berlanjut, hubungi dukungan atau masuk dengan akun berbeda.1045* Jika tidak ada environment variable yang diatur dan kesalahan tetap terjadi, hubungi dukungan atau masuk dengan akun lain.

1036 1046 

1037<h3 id="your-organization-has-disabled-api-key-authentication">1047<h3 id="your-organization-has-disabled-api-key-authentication">

1038 Organisasi Anda telah menonaktifkan autentikasi kunci API1048 Organisasi Anda telah menonaktifkan autentikasi kunci API

1039</h3>1049</h3>

1040 1050 

1041Pesan ini memerlukan Claude Code v2.1.169 atau lebih baru. Admin organisasi Console Anda telah mematikan autentikasi kunci API, jadi API menolak kunci yang dikirim Claude Code. Petunjuk pemulihan setelah `·` bervariasi tergantung pada tempat kunci berasal:1051Pesan ini memerlukan Claude Code v2.1.169 atau yang lebih baru. Admin organisasi Console Anda telah mematikan autentikasi kunci API, sehingga API menolak kunci yang dikirim Claude Code. Petunjuk pemulihan setelah `·` bervariasi tergantung dari mana kunci berasal:

1042 1052 

1043```text theme={null}1053```text theme={null}

1044Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account1054Your organization has disabled API key authentication · Run /login to sign in with your claude.ai account


1048Your organization has disabled API key authentication · Sign in again with your claude.ai account1058Your organization has disabled API key authentication · Sign in again with your claude.ai account

1049```1059```

1050 1060 

1051Bentuk terakhir muncul dalam sesi yang dijalankan aplikasi Claude Desktop, seperti tab Code atau Cowork, di mana Anda masuk lagi dari aplikasi.1061Bentuk terakhir muncul dalam sesi yang dijalankan oleh aplikasi Claude Desktop, seperti tab Code atau Cowork, tempat Anda masuk kembali dari aplikasi tersebut.

1052 1062 

1053Variabel lingkungan dan `apiKeyHelper` mengambil prioritas atas `/login`, jadi menjalankan `/login` saja tidak membantu sementara salah satu masih memasok kunci. Lihat [Urutan prioritas autentikasi](/docs/id/authentication#authentication-precedence).1063Environment variable dan `apiKeyHelper` diutamakan daripada `/login`, sehingga menjalankan `/login` saja tidak membantu selama salah satunya masih menyediakan kunci. Lihat [Prioritas autentikasi](/docs/id/authentication#authentication-precedence).

1054 1064 

1055**Yang harus dilakukan:**1065**Yang harus dilakukan:**

1056 1066 

1057* Jika pesan menamai `ANTHROPIC_API_KEY`, batalkan pengaturannya di shell saat ini dan hapus dari profil shell atau file `.env` Anda, kemudian luncurkan ulang `claude`1067* Jika pesan menyebutkan `ANTHROPIC_API_KEY`, hapus pengaturannya di shell saat ini dan hapus dari profil shell atau file `.env` Anda, lalu jalankan ulang `claude`

1058* Jika pesan menamai `apiKeyHelper`, hapus pengaturan [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) dari `settings.json` Anda1068* Jika pesan menyebutkan `apiKeyHelper`, hapus pengaturan [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper) dari `settings.json` Anda

1059* Jalankan `/login` untuk masuk dengan akun claude.ai Anda1069* Jalankan `/login` untuk masuk dengan akun claude.ai Anda

1060* Jalankan `/status` setelahnya untuk mengonfirmasi kredensial aktif adalah langganan Anda daripada kunci API1070* Jalankan `/status` setelahnya untuk memastikan kredensial yang aktif adalah langganan Anda, bukan kunci API

1061* Jika Anda memerlukan autentikasi kunci API untuk otomasi, minta admin organisasi Anda untuk mengaktifkannya kembali di Console1071* Jika Anda memerlukan autentikasi kunci API untuk otomatisasi, minta admin organisasi Anda untuk mengaktifkannya kembali di Console

1062 1072 

1063<h3 id="your-organization-has-disabled-claude-subscription-access">1073<h3 id="your-organization-has-disabled-claude-subscription-access">

1064 Organisasi Anda telah menonaktifkan akses langganan Claude1074 Organisasi Anda telah menonaktifkan akses langganan Claude

1065</h3>1075</h3>

1066 1076 

1067Organisasi Claude Anda tidak memungkinkan masuk ke Claude Code dengan login langganan. Menjalankan `/login` lagi dengan akun yang sama mengembalikan kesalahan yang sama.1077Organisasi Claude Anda tidak mengizinkan masuk ke Claude Code dengan login langganan. Menjalankan `/login` lagi dengan akun yang sama akan menghasilkan kesalahan yang sama.

1068 1078 

1069```text theme={null}1079```text theme={null}

1070Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access1080Your organization has disabled Claude subscription access for Claude Code · Use an Anthropic API key instead, or ask your admin to enable access

1071```1081```

1072 1082 

1073Ini adalah pengaturan organisasi sisi server, jadi tidak dapat ditimpa dari pengaturan lokal, variabel lingkungan, atau flag CLI.1083Ini adalah pengaturan organisasi di sisi server, sehingga tidak dapat ditimpa dari pengaturan lokal, environment variable, atau flag CLI.

1074 1084 

1075Agent SDK dan mode non-interaktif `-p` menampilkan ini sebagai kode kesalahan `oauth_org_not_allowed`.1085Agent SDK dan mode non-interaktif `-p` menampilkan ini sebagai kode kesalahan `oauth_org_not_allowed`.

1076 1086 

1077**Yang harus dilakukan:**1087**Yang harus dilakukan:**

1078 1088 

1079* Minta admin Anda untuk mengaktifkan akses Claude Code untuk organisasi Anda1089* Minta admin Anda untuk mengaktifkan akses Claude Code bagi organisasi Anda

1080* Autentikasi dengan kunci API Console sebagai gantinya dari langganan Anda. Lihat [Autentikasi Claude Console](/docs/id/authentication#claude-console-authentication) untuk pengaturan.1090* Lakukan autentikasi dengan kunci API Console alih-alih langganan Anda. Lihat [Autentikasi Claude Console](/docs/id/authentication#claude-console-authentication) untuk penyiapan.

1081* Jika Anda adalah admin dan tidak melihat opsi untuk mengaktifkan akses, hubungi [dukungan Anthropic](https://support.claude.com)1091* Jika Anda adalah admin dan tidak melihat opsi untuk mengaktifkan akses, hubungi [dukungan Anthropic](https://support.claude.com)

1082 1092 

1083<h3 id="routines-are-disabled-by-your-organizations-policy">1093<h3 id="routines-are-disabled-by-your-organizations-policy">

1084 Rutinitas dinonaktifkan oleh kebijakan organisasi Anda1094 Routines dinonaktifkan oleh kebijakan organisasi Anda

1085</h3>1095</h3>

1086 1096 

1087An Owner dalam organisasi Tim atau Enterprise Anda telah mematikan rutinitas di tingkat organisasi. Kesalahan muncul ketika Anda mencoba membuat atau menjalankan rutinitas, misalnya dari UI [Rutinitas](/docs/id/routines) di claude.ai/code. Pada Claude Code v2.1.227 atau lebih baru, pengaturan yang sama juga [menyembunyikan `/schedule`](/docs/id/routines#troubleshooting) di CLI.1097Seorang Owner di organisasi Team atau Enterprise Anda telah mematikan routine di tingkat organisasi. Kesalahan muncul ketika Anda mencoba membuat atau menjalankan routine, misalnya dari UI [Routines](/docs/id/routines) di claude.ai/code. Pada Claude Code v2.1.227 atau yang lebih baru, pengaturan yang sama juga [menyembunyikan `/schedule`](/docs/id/routines#troubleshooting) di CLI.

1088 1098 

1089```text theme={null}1099```text theme={null}

1090Routines are disabled by your organization's policy.1100Routines are disabled by your organization's policy.

1091```1101```

1092 1102 

1093Ini adalah pengaturan sisi server, jadi tidak dapat ditimpa dari pengaturan lokal, variabel lingkungan, atau flag CLI.1103Ini adalah pengaturan di sisi server, sehingga tidak dapat ditimpa dari pengaturan lokal, environment variable, atau flag CLI.

1094 1104 

1095**Yang harus dilakukan:**1105**Yang harus dilakukan:**

1096 1106 

1097* Minta Pemilik dalam organisasi Anda untuk mengaktifkan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)1107* Minta seorang Owner di organisasi Anda untuk mengaktifkan toggle **Routines** di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

1098* Untuk pekerjaan terjadwal satu kali yang tidak memerlukan rutinitas tingkat organisasi, lihat [tugas terjadwal](/docs/id/scheduled-tasks)1108* Untuk pekerjaan terjadwal satu kali yang tidak memerlukan routine tingkat organisasi, lihat [tugas terjadwal](/docs/id/scheduled-tasks)

1099 1109 

1100<h3 id="remote-control-requires-the-anthropic-api">1110<h3 id="remote-control-requires-the-anthropic-api">

1101 Remote Control memerlukan Anthropic API1111 Remote Control memerlukan Anthropic API

1102</h3>1112</h3>

1103 1113 

1104Sesi tidak berbicara langsung ke Anthropic API, yang [Remote Control](/docs/id/remote-control) memerlukan.1114Sesi tidak berkomunikasi langsung dengan Anthropic API, yang diperlukan oleh [Remote Control](/docs/id/remote-control).

1105 1115 

1106```text theme={null}1116```text theme={null}

1107Remote Control is only available when using Claude via api.anthropic.com. CLAUDE_CODE_USE_BEDROCK is set, so this session is using Amazon Bedrock — unset it (or run in a shell without it) to use Remote Control.1117Remote Control is only available when using Claude via api.anthropic.com. CLAUDE_CODE_USE_BEDROCK is set, so this session is using Amazon Bedrock — unset it (or run in a shell without it) to use Remote Control.

1108```1118```

1109 1119 

1110Kalimat kedua menjelaskan apa yang mengarahkan sesi menjauh dari Anthropic API; sebelum v2.1.219, pesan hanya kalimat pertama. Tergantung pada penyebabnya, pesan menamai:1120Kalimat kedua menjelaskan apa yang mengalihkan sesi dari Anthropic API; sebelum v2.1.219, pesan hanya berisi kalimat pertama. Bergantung pada penyebabnya, pesan menyebutkan:

1111 1121 

1112* Variabel penyedia `CLAUDE_CODE_USE_*`, seperti `CLAUDE_CODE_USE_BEDROCK` untuk [Amazon Bedrock](/docs/id/amazon-bedrock) atau `CLAUDE_CODE_USE_VERTEX` untuk [Platform Agen Google Cloud](/docs/id/google-vertex-ai)1122* Variabel penyedia `CLAUDE_CODE_USE_*`, seperti `CLAUDE_CODE_USE_BEDROCK` untuk [Amazon Bedrock](/docs/id/amazon-bedrock) atau `CLAUDE_CODE_USE_VERTEX` untuk [Agent Platform milik Google Cloud](/docs/id/google-vertex-ai)

1113* [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) menunjuk ke host selain `api.anthropic.com`, seperti [gateway LLM](/docs/id/llm-gateway) atau proxy, bahkan ketika Anda masuk dengan claude.ai; sebelum v2.1.196, URL dasar khusus tidak memblokir Remote Control1123* [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) yang mengarah ke host selain `api.anthropic.com`, seperti [LLM gateway](/docs/id/llm-gateway) atau proxy, bahkan ketika Anda masuk dengan claude.ai; sebelum v2.1.196, base URL kustom tidak memblokir Remote Control

1114* `ANTHROPIC_UNIX_SOCKET` diatur, jadi sesi mengirim permintaannya melalui soket lokal daripada ke `api.anthropic.com`1124* `ANTHROPIC_UNIX_SOCKET` diatur, sehingga sesi mengirim permintaannya melalui socket lokal alih-alih ke `api.anthropic.com`

1115* Masuk [gateway cloud](/docs/id/claude-apps-gateway) perusahaan yang dibuat melalui `/login`, yang tidak mendukung Remote Control dan tidak memiliki variabel untuk dibatalkan pengaturannya1125* Login [cloud gateway](/docs/id/claude-apps-gateway) enterprise yang dilakukan melalui `/login`, yang tidak mendukung Remote Control dan tidak memiliki variabel untuk dihapus pengaturannya

1116 1126 

1117**Yang harus dilakukan:**1127**Yang harus dilakukan:**

1118 1128 

1119* Batalkan pengaturan variabel yang dinamai pesan, seperti `CLAUDE_CODE_USE_BEDROCK` atau `ANTHROPIC_BASE_URL`, dan mulai ulang sesi, atau mulai Remote Control dari sesi yang berbicara langsung ke Anthropic API1129* Hapus pengaturan variabel yang disebutkan pesan, seperti `CLAUDE_CODE_USE_BEDROCK` atau `ANTHROPIC_BASE_URL`, dan mulai ulang sesi, atau mulai Remote Control dari sesi yang berkomunikasi langsung dengan Anthropic API

1120* Jika variabel tidak diatur di shell Anda, periksa kunci `env` dalam [file pengaturan](/docs/id/settings#where-settings-live) Anda, yang menerapkan variabel lingkungan ke setiap sesi1130* Jika variabel tidak diatur di shell Anda, periksa kunci `env` di [file pengaturan](/docs/id/settings#where-settings-live) Anda, yang menerapkan environment variable ke setiap sesi

1121* Untuk pesan startup Remote Control ini dan lainnya, lihat [Troubleshoot Remote Control](/docs/id/remote-control#troubleshooting)1131* Untuk pesan ini dan pesan startup Remote Control lainnya, lihat [Pemecahan masalah Remote Control](/docs/id/remote-control#troubleshooting)

1122 1132 

1123<h3 id="remote-control-couldnt-refresh-your-login">1133<h3 id="remote-control-couldnt-refresh-your-login">

1124 Remote Control tidak dapat menyegarkan login Anda1134 Remote Control tidak dapat memperbarui login Anda

1125</h3>1135</h3>

1126 1136 

1127Claude Code menjalankan koneksi [Remote Control](/docs/id/remote-control) langsung pada kredensial berumur pendek yang diperoleh dan diperbarui menggunakan login claude.ai yang disimpan. Ketika claude.ai berhenti menerima login itu, atau Claude Code tidak memiliki login yang disimpan lagi, Claude Code menghentikan Remote Control dan memerlukan Anda untuk masuk lagi. Kedua kegagalan dapat terjadi saat Claude Code masih terhubung atau nanti, ketika memperbaharui kredensial.1137Claude Code menjalankan koneksi [Remote Control](/docs/id/remote-control) aktif dengan kredensial berumur pendek yang diperoleh dan diperbaruinya menggunakan login claude.ai tersimpan Anda. Ketika claude.ai berhenti menerima login tersebut, atau Claude Code tidak lagi memiliki login tersimpan, Claude Code menghentikan Remote Control dan mengharuskan Anda masuk kembali. Kedua kegagalan ini dapat terjadi saat Claude Code masih menyambungkan atau nanti, saat memperbarui kredensial.

1128 1138 

1129Ketika Claude Code meminta layanan login untuk menyegarkan login yang disimpan dan tidak mendapat jawaban, itu membuat Remote Control tetap berjalan dan mencoba penyegaran lagi saat kredensial koneksi masih berlaku. Penyegaran tidak mendapat jawaban ketika Claude Code tidak dapat menjangkau layanan login, permintaan habis waktu, atau layanan gagal tanpa menolak login Anda. Jika layanan login masih tidak menjawab ketika kredensial itu kedaluwarsa, Claude Code menghentikan Remote Control dan melaporkan `OAuth token refresh failed`.1139Ketika Claude Code meminta layanan login untuk memperbarui login tersimpan Anda dan tidak mendapat jawaban, Claude Code tetap menjalankan Remote Control dan mencoba pembaruan lagi selama kredensial koneksi saat ini masih valid. Pembaruan tidak mendapat jawaban ketika Claude Code tidak dapat menjangkau layanan login, permintaan mengalami timeout, atau layanan gagal tanpa menolak login Anda. Jika layanan login masih belum menjawab saat kredensial tersebut kedaluwarsa, Claude Code menghentikan Remote Control dan melaporkan `OAuth token refresh failed`.

1130 1140 

1131Ketika Claude Code menghentikan Remote Control, itu menunjukkan alasannya dalam peringatan dan dalam baris transkrip yang dimulai dengan `Remote Control disconnected`. Sesi lokal Anda terus berjalan tanpa Remote Control. Bagian ini mencakup baris-baris ini:1141Ketika Claude Code menghentikan Remote Control, Claude Code menampilkan alasannya dalam peringatan dan dalam baris transkrip yang diawali dengan `Remote Control disconnected`. Sesi lokal Anda tetap berjalan tanpa Remote Control. Bagian ini membahas baris-baris berikut:

1132 1142 

1133```text theme={null}1143```text theme={null}

1134Remote Control disconnected — Claude.ai login expired — run /login to restore Remote Control1144Remote Control disconnected — Claude.ai login expired — run /login to restore Remote Control


1140Remote Control disconnected — Signed out of Claude — run /login, then /remote-control1150Remote Control disconnected — Signed out of Claude — run /login, then /remote-control

1141```1151```

1142 1152 

1143Claude Code menamai penyebabnya di tengah pesan:1153Claude Code menyebutkan penyebabnya di bagian tengah pesan:

1144 1154 

1145* ` Claude.ai login expired` dan `Claude.ai login was rejected`: claude.ai tidak lagi menerima token login yang disimpan Anda, karena kedaluwarsa atau dicabut1155* `Claude.ai login expired` dan `Claude.ai login was rejected`: claude.ai tidak lagi menerima token login tersimpan Anda, karena token tersebut kedaluwarsa atau dicabut

1146* ` OAuth token unavailable`: Claude Code tidak memiliki token login yang disimpan ketika kredensial koneksi jatuh tempo untuk pembaruan1156* `OAuth token unavailable`: Claude Code tidak memiliki token login tersimpan ketika kredensial koneksi jatuh tempo untuk diperbarui

1147* `OAuth token refresh failed`: claude.ai menolak token login yang disimpan Anda saat Claude Code terhubung kembali, dan menyegarkan token tidak menghasilkan yang baru1157* `OAuth token refresh failed`: claude.ai menolak token login tersimpan Anda saat Claude Code sedang menyambung ulang, dan pembaruan token tidak menghasilkan token baru

1148* `JWT refresh failed: no OAuth token`: Claude Code tidak menemukan token login yang disimpan untuk diperbarui1158* `JWT refresh failed: no OAuth token`: Claude Code tidak menemukan token login tersimpan untuk melakukan pembaruan

1149* ` Signed out of Claude`: Anda keluar di mesin ini, misalnya dengan menjalankan `/logout` di terminal lain, jadi Claude Code tidak memiliki login yang disimpan lagi untuk memperbarui koneksi1159* `Signed out of Claude`: Anda keluar di mesin ini, misalnya dengan menjalankan `/logout` di terminal lain, sehingga Claude Code tidak lagi memiliki login tersimpan untuk memperbarui koneksi

1150 1160 

1151**Yang harus dilakukan:**1161**Yang harus dilakukan:**

1152 1162 

1153* Jalankan `/login` untuk masuk lagi1163* Jalankan `/login` untuk masuk kembali

1154* Jalankan `/remote-control` untuk menghubungkan kembali sesi. Pesan yang berakhir `run /login to restore Remote Control` tidak memerlukan langkah ini: Claude Code terhubung kembali dengan sendirinya setelah Anda masuk.1164* Jalankan `/remote-control` untuk menyambungkan ulang sesi. Pesan yang diakhiri dengan `run /login to restore Remote Control` tidak memerlukan langkah ini: Claude Code menyambung ulang dengan sendirinya setelah Anda masuk.

1155 1165 

1156Sebelum v2.1.224, `OAuth token refresh failed — run /login to re-authenticate` berbunyi `OAuth token refresh failed — re-authenticate, then re-enable Remote Control`, dan `JWT refresh failed: no OAuth token — run /login` berbunyi `no OAuth token available for recovery (code <N>)`. Pesan `Claude.ai login expired`, `Claude.ai login was rejected`, dan `OAuth token unavailable` ditambahkan dalam v2.1.225.1166Sebelum v2.1.224, `OAuth token refresh failed — run /login to re-authenticate` berbunyi `OAuth token refresh failed — re-authenticate, then re-enable Remote Control`, dan `JWT refresh failed: no OAuth token — run /login` berbunyi `no OAuth token available for recovery (code <N>)`. Pesan `Claude.ai login expired`, `Claude.ai login was rejected`, dan `OAuth token unavailable` ditambahkan di v2.1.225.

1157 1167 

1158Sebelum v2.1.238, Claude Code melaporkan kasus yang sekarang mengatakan `Signed out of Claude` sebagai `JWT refresh failed: no OAuth token — run /login`, dan menghentikan Remote Control dengan `Claude.ai login expired — run /login to restore Remote Control` segera setelah satu penyegaran login tidak mendapat jawaban.1168Sebelum v2.1.238, Claude Code melaporkan kasus-kasus yang kini berbunyi `Signed out of Claude` sebagai `JWT refresh failed: no OAuth token — run /login`, dan menghentikan Remote Control dengan `Claude.ai login expired — run /login to restore Remote Control` segera setelah satu pembaruan login tidak mendapat jawaban.

1159 1169 

1160<h3 id="remote-control-stopped-because-the-signed-in-account-changed">1170<h3 id="remote-control-stopped-because-the-signed-in-account-changed">

1161 Remote Control berhenti karena akun yang masuk berubah1171 Remote Control berhenti karena akun yang masuk berubah

1162</h3>1172</h3>

1163 1173 

1164Claude Code menampilkan baris ini selama sesi [Remote Control](/docs/id/remote-control) ketika Anda masuk ke akun claude.ai atau organisasi berbeda di mesin ini. Anda membuat switch di luar sesi Claude Code, misalnya dengan menjalankan `/login` di terminal lain.1174Claude Code menampilkan baris ini selama sesi [Remote Control](/docs/id/remote-control) ketika Anda masuk ke akun atau organisasi claude.ai yang berbeda di mesin ini. Anda melakukan peralihan di luar sesi Claude Code, misalnya dengan menjalankan `/login` di terminal lain.

1165 1175 

1166Sesi Remote Control yang Anda mulai saat masuk melalui `/login` milik akun claude.ai dan organisasi yang masuk pada saat itu.1176Sesi Remote Control yang Anda mulai saat masuk melalui `/login` dimiliki oleh akun dan organisasi claude.ai yang sedang masuk pada saat itu.

1167 1177 

1168```text theme={null}1178```text theme={null}

1169Remote Control disconnected — signed-in claude.ai account or organization changed on this machine — run /remote-control to start a session for the current account, or /login to switch back, then /remote-control1179Remote Control disconnected — signed-in claude.ai account or organization changed on this machine — run /remote-control to start a session for the current account, or /login to switch back, then /remote-control

1170```1180```

1171 1181 

1172Claude Code menghentikan sesi Remote Control segera setelah claude.ai mengonfirmasi bahwa akun atau organisasi berubah. Sesi lokal Anda terus berjalan tanpa Remote Control.1182Claude Code menghentikan sesi Remote Control segera setelah claude.ai mengonfirmasi bahwa akun atau organisasi telah berubah. Sesi lokal Anda tetap berjalan tanpa Remote Control.

1173 1183 

1174**Yang harus dilakukan:**1184**Yang harus dilakukan:**

1175 1185 

1176* Jalankan `/remote-control` untuk memulai sesi Remote Control baru di bawah akun atau organisasi saat ini1186* Jalankan `/remote-control` untuk memulai sesi Remote Control baru di bawah akun atau organisasi saat ini

1177* Untuk beralih kembali, jalankan `/login` dan masuk ke akun atau organisasi sebelumnya lagi. Kemudian jalankan `/remote-control`.1187* Untuk beralih kembali, jalankan `/login` dan masuk lagi ke akun atau organisasi sebelumnya. Lalu jalankan `/remote-control`.

1178 1188 

1179Sebelum v2.1.234, Claude Code tidak memperhatikan ketika Anda beralih ke akun atau organisasi berbeda di luar sesi Claude Code. Claude Code membuat sesi Remote Control tetap terhubung sampai permintaan nanti ke server Remote Control gagal dengan `Remote Control server rejected the request (HTTP 404)`. Kegagalan itu bisa datang berjam-jam setelah switch.1189Sebelum v2.1.234, Claude Code tidak menyadari ketika Anda beralih ke akun atau organisasi lain di luar sesi Claude Code. Claude Code tetap menyambungkan sesi Remote Control hingga permintaan berikutnya ke server Remote Control gagal dengan `Remote Control server rejected the request (HTTP 404)`. Kegagalan tersebut dapat terjadi berjam-jam setelah peralihan.

1180 1190 

1181<h3 id="remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts">1191<h3 id="remote-control-stopped-because-the-app-running-the-session-signed-out-or-switched-accounts">

1182 Remote Control berhenti karena aplikasi yang menjalankan sesi keluar atau beralih akun1192 Remote Control berhenti karena aplikasi yang menjalankan sesi keluar atau beralih akun

1183</h3>1193</h3>

1184 1194 

1185Ketika aplikasi desktop Claude atau IDE menghosting sesi Anda, Claude Code mendapatkan token login dari aplikasi itu daripada dari `/login`. Ketika claude.ai menolak token itu, Claude Code meminta aplikasi untuk yang baru. Jika aplikasi menjawab bahwa itu keluar, atau bahwa itu sekarang masuk ke akun Claude berbeda, Claude Code mengakhiri sesi [Remote Control](/docs/id/remote-control) dan mengirim aplikasi salah satu baris ini:1195Ketika aplikasi desktop Claude atau IDE menjadi host sesi Anda, Claude Code mendapatkan token login dari aplikasi tersebut, bukan dari `/login`. Ketika claude.ai menolak token tersebut, Claude Code meminta token baru dari aplikasi. Jika aplikasi menjawab bahwa aplikasi sudah keluar, atau bahwa aplikasi kini masuk ke akun Claude yang berbeda, Claude Code mengakhiri sesi [Remote Control](/docs/id/remote-control) dan mengirimkan salah satu baris berikut ke aplikasi:

1186 1196 

1187```text theme={null}1197```text theme={null}

1188Remote Control stopped — the app running this session is now signed in to a different Claude account1198Remote Control stopped — the app running this session is now signed in to a different Claude account

1189Remote Control stopped — the app running this session is signed out of Claude. Sign in there, then turn Remote Control back on1199Remote Control stopped — the app running this session is signed out of Claude. Sign in there, then turn Remote Control back on

1190```1200```

1191 1201 

1192Sesi lokal Anda terus berjalan tanpa Remote Control.1202Sesi lokal Anda tetap berjalan tanpa Remote Control.

1193 1203 

1194**Yang harus dilakukan:**1204**Yang harus dilakukan:**

1195 1205 

1196* Jika aplikasi keluar, masuk lagi, kemudian aktifkan Remote Control kembali di aplikasi1206* Jika aplikasi sudah keluar, masuk kembali ke aplikasi tersebut, lalu aktifkan kembali Remote Control di aplikasi

1197* Jika aplikasi beralih akun, Claude Code tidak dapat melanjutkan sesi yang berakhir di bawah akun baru. Mulai sesi Remote Control baru di bawah akun itu.1207* Jika aplikasi beralih akun, Claude Code tidak dapat melanjutkan sesi yang telah berakhir di bawah akun baru. Mulai sesi Remote Control baru di bawah akun tersebut.

1198 1208 

1199Sebelum v2.1.238, Claude Code mengirim aplikasi pesan `run /login` yang tercantum di bawah [Remote Control tidak dapat menyegarkan login Anda](#remote-control-couldnt-refresh-your-login) dalam kedua kasus.1209Sebelum v2.1.238, Claude Code mengirimkan pesan `run /login` yang tercantum di bawah [Remote Control tidak dapat memperbarui login Anda](#remote-control-couldnt-refresh-your-login) ke aplikasi dalam kedua kasus.

1200 1210 

1201<h3 id="oauth-token-revoked-or-expired">1211<h3 id="oauth-token-revoked-or-expired">

1202 Token OAuth dicabut atau kedaluwarsa1212 Token OAuth dicabut atau kedaluwarsa

1203</h3>1213</h3>

1204 1214 

1205Login yang disimpan tidak lagi valid. Token yang dicabut berarti Anda keluar di mana-mana atau admin menghapus akses; token yang kedaluwarsa berarti penyegaran otomatis gagal di tengah sesi.1215Login tersimpan Anda tidak lagi valid. Token yang dicabut berarti Anda keluar di semua tempat atau admin menghapus akses; token yang kedaluwarsa berarti pembaruan otomatis gagal di tengah sesi.

1206 1216 

1207Kedua pesan melaporkan penolakan yang dikembalikan API untuk permintaan yang dikirim Claude Code. Ketika login yang disimpan sudah dihapus setelah penyegaran yang gagal, Anda melihat [Login kedaluwarsa](#login-expired) sebagai gantinya. Jika Anda autentikasi dengan token berumur panjang dalam [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), Anda melihat pesan yang sama ketika token itu kedaluwarsa atau dicabut.1217Kedua pesan melaporkan penolakan yang dikembalikan API untuk permintaan yang dikirim Claude Code. Ketika login tersimpan sudah dihapus setelah pembaruan yang gagal, Anda akan melihat [Login kedaluwarsa](#login-expired). Jika Anda melakukan autentikasi dengan token berumur panjang di [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), Anda akan melihat pesan yang sama ketika token tersebut kedaluwarsa atau dicabut.

1208 1218 

1209```text theme={null}1219```text theme={null}

1210OAuth token revoked · Please run /login1220OAuth token revoked · Please run /login


1213 1223 

1214**Yang harus dilakukan:**1224**Yang harus dilakukan:**

1215 1225 

1216* Jalankan `/login` untuk masuk lagi1226* Jalankan `/login` untuk masuk kembali

1217* Jika Anda autentikasi dengan variabel lingkungan `CLAUDE_CODE_OAUTH_TOKEN`, Claude Code terus mengirim nilai yang Anda atur setelah permintaan gagal dengan 401, daripada beralih ke token login yang disimpan. [`/status`](/docs/id/commands) menampilkan kredensial ini sebagai baris `Auth token` membaca `CLAUDE_CODE_OAUTH_TOKEN`. Hasilkan token baru dengan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token) dan mulai ulang dengannya, atau batalkan pengaturan variabel dan jalankan `/login`. Sebelum v2.1.225, Claude Code dapat mengganti nilai variabel di tengah sesi dengan token akses berumur pendek dari login yang disimpan, dan sesi gagal dengan kesalahan 401 lagi setelah token itu kedaluwarsa.1227* Jika Anda melakukan autentikasi dengan environment variable `CLAUDE_CODE_OAUTH_TOKEN`, Claude Code tetap mengirimkan nilai yang Anda atur setelah permintaan gagal dengan 401, alih-alih beralih ke token login tersimpan. [`/status`](/docs/id/commands) menampilkan kredensial ini sebagai baris `Auth token` yang berbunyi `CLAUDE_CODE_OAUTH_TOKEN`. Buat token baru dengan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token) dan mulai ulang dengan token tersebut, atau hapus pengaturan variabel dan jalankan `/login`. Sebelum v2.1.225, Claude Code dapat mengganti nilai variabel di tengah sesi dengan access token berumur pendek dari login tersimpan, dan sesi kembali gagal dengan kesalahan 401 setelah token tersebut kedaluwarsa.

1218* Untuk prompt berulang untuk masuk di seluruh peluncuran, lihat pemeriksaan jam sistem dan langkah pemulihan penyimpanan kredensial macOS dalam [Troubleshooting](/docs/id/troubleshoot-install#not-logged-in-or-token-expired)1228* Untuk permintaan masuk yang berulang di setiap peluncuran, lihat pemeriksaan jam sistem dan langkah pemulihan penyimpanan kredensial macOS di [Pemecahan masalah](/docs/id/troubleshoot-install#not-logged-in-or-token-expired)

1219* Untuk kegagalan lainnya termasuk `403 Forbidden` dan masalah browser OAuth, lihat [Login dan autentikasi](/docs/id/troubleshoot-install#login-and-authentication)1229* Untuk kegagalan lain termasuk `403 Forbidden` dan masalah browser OAuth, lihat [Login dan autentikasi](/docs/id/troubleshoot-install#login-and-authentication)

1220 1230 

1221<h3 id="api-error-401-invalid-authentication-credentials">1231<h3 id="api-error-401-invalid-authentication-credentials">

1222 API Error: 401 Kredensial autentikasi tidak valid1232 API Error: 401 Invalid authentication credentials

1223</h3>1233</h3>

1224 1234 

1225API mengenali format kredensial Anda tetapi menolak akun atau organisasi di baliknya. Anthropic mengembalikan pesan ini ketika kredensial baru saja dicabut, ketika organisasi dinonaktifkan atau menghapus akses Anda, atau ketika akun itu sendiri dinonaktifkan, jadi token yang kedaluwarsa bukan penyebabnya. Kredensial dapat berupa login yang disimpan atau `ANTHROPIC_API_KEY` yang disetujui, dan perbaikannya berbeda, jadi mulai dengan menjalankan `/status` untuk melihat mana yang aktif.1235API mengenali format kredensial Anda tetapi menolak akun atau organisasi di baliknya. Anthropic mengembalikan pesan ini ketika kredensial baru saja dicabut, ketika organisasi dinonaktifkan atau menghapus akses Anda, atau ketika akun itu sendiri dinonaktifkan, sehingga token yang kedaluwarsa bukanlah penyebabnya. Kredensial tersebut dapat berupa login tersimpan Anda atau `ANTHROPIC_API_KEY` yang disetujui, dan perbaikannya berbeda, jadi mulailah dengan menjalankan `/status` untuk melihat mana yang aktif.

1226 1236 

1227```text theme={null}1237```text theme={null}

1228Please run /login · API Error: 401 Invalid authentication credentials1238Please run /login · API Error: 401 Invalid authentication credentials


1230 1240 

1231**Yang harus dilakukan:**1241**Yang harus dilakukan:**

1232 1242 

1233* Jika `/status` menampilkan baris `API key` yang tidak ditandai sebagai tidak digunakan, `ANTHROPIC_API_KEY` yang disetujui]\(/id/authentication#authentication-precedence) adalah kredensial aktif dan mengambil prioritas atas login Anda, jadi `/login` tidak menggantinya. Putar kunci di Claude Console, atau kembali ke langganan Anda dengan menjalankan `unset ANTHROPIC_API_KEY`, atau di PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`.1243* Jika `/status` menampilkan baris `API key` yang tidak ditandai sebagai tidak digunakan, [`ANTHROPIC_API_KEY`](/docs/id/authentication#authentication-precedence) yang disetujui adalah kredensial aktif dan diutamakan daripada login Anda, sehingga `/login` tidak menggantikannya. Rotasi kunci di Claude Console, atau kembali ke langganan Anda dengan menjalankan `unset ANTHROPIC_API_KEY`, atau di PowerShell `Remove-Item Env:ANTHROPIC_API_KEY`.

1234* Jika `/status` hanya menampilkan login Anda, jalankan `/login` sekali. Jika kredensial dicabut, login baru menggantinya.1244* Jika `/status` hanya menampilkan login Anda, jalankan `/login` sekali. Jika kredensial telah dicabut, login baru akan menggantikannya.

1235* Jika pesan yang sama kembali untuk akun login yang sama, akun atau organisasi tidak lagi aktif. Periksa akun dan organisasi yang dilaporkan `/status`, dan minta admin organisasi Anda untuk memulihkan akses.1245* Jika pesan yang sama muncul kembali untuk akun login yang sama, akun atau organisasi tersebut tidak lagi aktif. Periksa akun dan organisasi yang dilaporkan `/status`, dan minta admin organisasi Anda untuk memulihkan akses.

1236* Jika [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) menunjuk ke [gateway LLM](/docs/id/llm-gateway), teks setelah `401` adalah pesan gateway Anda daripada Anthropic, dan `/login` tidak mengubahnya. Perbaiki kredensial yang diharapkan gateway Anda sebagai gantinya.1246* Jika [`ANTHROPIC_BASE_URL`](/docs/id/env-vars) mengarah ke [LLM gateway](/docs/id/llm-gateway), teks setelah `401` adalah pesan dari gateway Anda, bukan dari Anthropic, dan `/login` tidak mengubahnya. Perbaiki kredensial yang diharapkan gateway Anda.

1237 1247 

1238<h3 id="login-expired">1248<h3 id="login-expired">

1239 Login kedaluwarsa1249 Login kedaluwarsa

1240</h3>1250</h3>

1241 1251 

1242Claude Code mencoba memperbarui login claude.ai atau Claude Console yang disimpan dan layanan OAuth menolak token penyegaran yang disimpan, jadi Claude Code menghapus kredensial yang disimpan. Setelah itu, setiap permintaan model berhenti secara lokal dengan pesan ini sebelum mencapai API, karena hanya `/login` yang dapat membuat kredensial baru.1252Claude Code mencoba memperbarui login claude.ai tersimpan Anda dan layanan OAuth menolak refresh token yang tersimpan, sehingga Claude Code menghapus kredensial tersimpan. Setelah itu, setiap permintaan model berhenti secara lokal dengan pesan ini sebelum mencapai API, karena hanya `/login` yang dapat membuat kredensial baru.

1243 1253 

1244Sebelum v2.1.206, Claude Code mengirim permintaan model bagaimanapun dengan kredensial apa pun yang tersisa di lingkungan, dan setiap model kemudian gagal dengan [Ada masalah dengan model yang dipilih](#theres-an-issue-with-the-selected-model) atau 401 sebagai gantinya dari prompt untuk masuk.1254Sebelum v2.1.206, Claude Code tetap mengirimkan permintaan model dengan kredensial apa pun yang tersisa di lingkungan, dan setiap model kemudian gagal dengan [Ada masalah dengan model yang dipilih](#theres-an-issue-with-the-selected-model) atau 401 alih-alih permintaan untuk masuk.

1245 1255 

1246```text theme={null}1256```text theme={null}

1247Login expired · Please run /login1257Login expired · Please run /login

1248```1258```

1249 1259 

1250Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), pesan berbunyi sebagai berikut, dan kode kesalahan terstruktur adalah `authentication_failed`:1260Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), pesannya berbunyi sebagai berikut, dan kode kesalahan terstrukturnya adalah `authentication_failed`:

1251 1261 

1252```text theme={null}1262```text theme={null}

1253Failed to authenticate: OAuth session expired and could not be refreshed1263Failed to authenticate: OAuth session expired and could not be refreshed

1254```1264```

1255 1265 

1256Ini bukan keadaan yang sama seperti [Token OAuth dicabut atau kedaluwarsa](#oauth-token-revoked-or-expired). Pesan-pesan itu melaporkan penolakan yang dikembalikan API. Claude Code itu sendiri menghasilkan `Login expired` untuk login yang sudah gagal diperbarui, jadi tidak mengirim permintaan. Ketika pembaruan gagal karena akun itu sendiri ditangguhkan daripada login yang sudah lama, Claude Code menampilkan [Akun Anda ditahan](#your-account-is-on-hold) sebagai gantinya.1266Ini bukan kondisi yang sama dengan [Token OAuth dicabut atau kedaluwarsa](#oauth-token-revoked-or-expired). Pesan-pesan tersebut melaporkan penolakan yang dikembalikan API. Claude Code sendiri yang menghasilkan `Login expired` untuk login yang sudah gagal diperbaruinya, sehingga tidak mengirim permintaan. Ketika pembaruan gagal karena akun itu sendiri ditangguhkan, bukan karena login yang usang, Claude Code menampilkan [Akun Anda ditangguhkan](#your-account-is-on-hold).

1257 1267 

1258Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login yang disimpan dan tidak pernah melihat pesan ini.1268Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login tersimpan dan tidak pernah melihat pesan ini.

1259 1269 

1260Anda dapat memeriksa keadaan ini sebelum permintaan gagal: [`/status`](/docs/id/commands) menampilkan baris `Login` membaca `Expired — log in again`, ditambah organisasi dan email yang disimpannya untuk login yang kedaluwarsa. Baris muncul hanya ketika login yang disimpan adalah kredensial aktif Anda dan tidak dapat lagi disegarkan. Sesi yang diautentikasi dengan cara lain tidak menampilkan baris, bahkan jika login yang kedaluwarsa tetap disimpan. Sebelum v2.1.210, `/status` tidak memberikan indikasi dalam keadaan ini bahwa login pernah ada, karena kredensial yang dihapus meninggalkannya tidak ada untuk dilaporkan.1270Anda dapat memeriksa kondisi ini sebelum permintaan gagal: [`/status`](/docs/id/commands) menampilkan baris `Login` yang berbunyi `Expired — log in again`, ditambah organisasi dan email yang tersimpan untuk login yang kedaluwarsa. Baris ini hanya muncul ketika login tersimpan adalah kredensial aktif Anda dan tidak dapat diperbarui lagi. Sesi yang diautentikasi dengan cara lain tidak menampilkan baris ini, meskipun login yang kedaluwarsa masih tersimpan. Sebelum v2.1.210, `/status` tidak memberikan indikasi apa pun dalam kondisi ini bahwa pernah ada login, karena kredensial yang dihapus tidak menyisakan apa pun untuk dilaporkan.

1261 1271 

1262**Yang harus dilakukan:**1272**Yang harus dilakukan:**

1263 1273 

1264* Jalankan `/login` untuk masuk lagi. Mencoba lagi tanpa masuk menampilkan pesan yang sama pada setiap permintaan.1274* Jalankan `/login` untuk masuk kembali. Mencoba ulang tanpa masuk akan menampilkan pesan yang sama pada setiap permintaan.

1265* Dalam mode non-interaktif, jalankan `claude` di lingkungan yang sama, selesaikan `/login`, kemudian jalankan kembali perintah Anda. Untuk otomasi yang tidak dapat masuk secara interaktif, autentikasi dengan `ANTHROPIC_API_KEY` atau [hasilkan token berumur panjang dengan `claude setup-token`](/docs/id/authentication#generate-a-long-lived-token).1275* Jika Anda masuk dengan akun claude.ai Anda di jendela Claude Code lain, lihat [Belum masuk](#not-logged-in) untuk mengetahui kapan sesi ini mulai menggunakan login tersebut dengan sendirinya.

1276* Dalam mode non-interaktif, jalankan `claude` di lingkungan yang sama, selesaikan `/login`, lalu jalankan ulang perintah Anda. Untuk otomatisasi yang tidak dapat masuk secara interaktif, lakukan autentikasi dengan `ANTHROPIC_API_KEY` atau [buat token berumur panjang dengan `claude setup-token`](/docs/id/authentication#generate-a-long-lived-token).

1266* Jika masuk terus gagal, lihat [Login dan autentikasi](/docs/id/troubleshoot-install#login-and-authentication)1277* Jika masuk terus gagal, lihat [Login dan autentikasi](/docs/id/troubleshoot-install#login-and-authentication)

1267 1278 

1268<h3 id="could-not-refresh-your-login">1279<h3 id="could-not-refresh-your-login">

1269 Tidak dapat menyegarkan login Anda karena proses Claude Code lain menyegarkannya1280 Tidak dapat memperbarui login Anda karena proses Claude Code lain sedang memperbaruinya

1270</h3>1281</h3>

1271 1282 

1272Pesan ini tidak berarti login Anda ditolak. Login claude.ai yang disimpan kedaluwarsa dan perlu diperbarui. Proses Claude Code lain di mesin yang sama menahan kunci penyegaran bersama, atau keluar dan meninggalkannya, dan penyegaran tidak membuat kemajuan saat sesi ini menunggu. Claude Code menghentikan permintaan sebelum mengirimnya:1283Pesan ini tidak berarti login Anda ditolak. Login claude.ai tersimpan Anda telah kedaluwarsa dan perlu diperbarui. Proses Claude Code lain di mesin yang sama memegang kunci pembaruan bersama, atau keluar dan meninggalkannya, dan pembaruan tidak mengalami kemajuan selama sesi ini menunggu. Claude Code menghentikan permintaan sebelum mengirimkannya:

1273 1284 

1274```text theme={null}1285```text theme={null}

1275Could not refresh your login because another Claude Code process is refreshing it (or exited mid-refresh) · Try again in a minute; if it keeps happening, close other Claude Code windows or sign in again with /login1286Could not refresh your login because another Claude Code process is refreshing it (or exited mid-refresh) · Try again in a minute; if it keeps happening, close other Claude Code windows or sign in again with /login

1276```1287```

1277 1288 

1278Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), pesan berbunyi sebagai berikut, dan kode kesalahan terstruktur adalah `server_error`:1289Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), pesannya berbunyi sebagai berikut, dan kode kesalahan terstrukturnya adalah `server_error`:

1279 1290 

1280```text theme={null}1291```text theme={null}

1281Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again1292Failed to refresh OAuth token: another Claude Code process is refreshing it or exited mid-refresh. This is usually transient; retry in a minute, and if it persists close other Claude Code processes or sign in again

1282```1293```

1283 1294 

1284Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login yang disimpan dan tidak pernah melihat pesan ini.1295Sesi yang diautentikasi dengan kunci API, [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/id/env-vars), atau penyedia pihak ketiga tidak menggunakan login tersimpan dan tidak pernah melihat pesan ini.

1285 1296 

1286**Yang harus dilakukan:**1297**Yang harus dilakukan:**

1287 1298 

1288* Coba lagi dalam satu menit. Jika proses lain menyelesaikan penyegaran terlebih dahulu, sesi ini menggunakan login yang diperbarui.1299* Coba lagi dalam satu menit. Jika proses lain menyelesaikan pembaruan terlebih dahulu, sesi ini menggunakan login yang telah diperbarui.

1289* Jika pesan terus kembali, tutup jendela dan proses Claude Code lainnya, kemudian coba lagi.1300* Jika pesan terus muncul, tutup jendela dan proses Claude Code lainnya, lalu coba lagi.

1290* Jika kembali tanpa proses Claude Code lain yang berjalan, jalankan `/login`. Masuk lagi tidak menunggu kunci penyegaran.1301* Jika pesan muncul tanpa ada proses Claude Code lain yang berjalan, jalankan `/login`. Masuk kembali tidak menunggu kunci pembaruan.

1291 1302 

1292<h3 id="couldnt-save-your-login">1303<h3 id="couldnt-save-your-login">

1293 Tidak dapat menyimpan login Anda1304 Tidak dapat menyimpan login Anda

1294</h3>1305</h3>

1295 1306 

1296Anda masuk dengan claude.ai, tetapi Claude Code tidak dapat menyimpan login ke penyimpanan kredensialnya, jadi login tidak selesai. Di macOS ini dapat terjadi ketika keychain login terkunci, misalnya saat tidur atau menganggur, setelah Claude Code sudah membaca atau menyimpan kredensial di dalamnya selama sesi yang sama.1307Anda masuk dengan claude.ai, tetapi Claude Code tidak dapat menyimpan login ke penyimpanan kredensialnya, sehingga login tidak selesai. Di macOS, hal ini dapat terjadi ketika keychain login terkunci, misalnya saat sleep atau idle, setelah Claude Code sudah membaca atau menyimpan kredensial di dalamnya selama sesi yang sama.

1297 1308 

1298```text theme={null}1309```text theme={null}

1299Couldn't save your login. If your Mac's keychain is locked, unlock it and log in again.1310Couldn't save your login. If your Mac's keychain is locked, unlock it and log in again.

1300Couldn't save your login. Try logging in again.1311Couldn't save your login. Try logging in again.

1301```1312```

1302 1313 

1303Bentuk pertama muncul di macOS dan yang kedua di mana-mana. Kegagalan penyimpanan kredensial sementara, seperti timeout atau penyimpanan yang tidak dapat dibaca, menghasilkan pesan yang sama.1314Bentuk pertama muncul di macOS dan bentuk kedua di platform lainnya. Kegagalan penyimpanan kredensial yang bersifat sementara, seperti timeout atau penyimpanan yang tidak dapat dibaca, menghasilkan pesan yang sama.

1304 1315 

1305**Yang harus dilakukan:**1316**Yang harus dilakukan:**

1306 1317 

1307* Di macOS, buka kunci keychain login, kemudian jalankan `/login` lagi1318* Di macOS, buka kunci keychain login, lalu jalankan `/login` lagi

1308* Di platform lain, jalankan `/login` lagi1319* Di platform lain, jalankan `/login` lagi

1309* Jika login masih tidak menyimpan, lihat [Belum masuk atau token kedaluwarsa](/docs/id/troubleshoot-install#not-logged-in-or-token-expired) untuk perintah buka kunci keychain dan langkah pemulihan penyimpanan kredensial lainnya1320* Jika login masih tidak tersimpan, lihat [Belum masuk atau token kedaluwarsa](/docs/id/troubleshoot-install#not-logged-in-or-token-expired) untuk perintah membuka kunci keychain dan langkah pemulihan penyimpanan kredensial lainnya

1310 1321 

1311<h3 id="failed-to-start-oauth-callback-server">1322<h3 id="failed-to-start-oauth-callback-server">

1312 Gagal memulai server callback OAuth1323 Gagal memulai server callback OAuth

1313</h3>1324</h3>

1314 1325 

1315Ketika `/login`, `claude auth login`, atau `claude setup-token` menandatangani Anda melalui browser, Claude Code membuka port mendengarkan pada `127.0.0.1` sehingga browser Anda dapat mengembalikan hasil masuk ke sana. Pesan ini berarti Claude Code tidak dapat membuka port itu, dan masuk berhenti sebelum jendela browser atau URL login muncul:1326Ketika `/login`, `claude auth login`, atau `claude setup-token` memasukkan Anda melalui browser, Claude Code membuka port yang mendengarkan di `127.0.0.1` agar browser Anda dapat mengembalikan hasil login kepadanya. Pesan ini berarti Claude Code tidak dapat membuka port tersebut, dan proses masuk berhenti sebelum jendela browser atau URL login muncul:

1316 1327 

1317```text theme={null}1328```text theme={null}

1318Failed to start OAuth callback server: Failed to start server. Is port 0 in use?1329Failed to start OAuth callback server: Failed to start server. Is port 0 in use?

1319```1330```

1320 1331 

1321Jika pesan Anda berakhir dengan `Is port 0 in use?`, upaya untuk mendengarkan pada alamat loopback IPv4 `127.0.0.1` gagal total. Karena kegagalan terjadi sebelum URL login ada, alur `Paste code here if prompted` tidak tersedia sebagai solusi.1332Jika pesan Anda diakhiri dengan `Is port 0 in use?`, upaya untuk mendengarkan di alamat loopback IPv4 `127.0.0.1` gagal sepenuhnya. Karena kegagalan terjadi sebelum URL login ada, alur `Paste code here if prompted` tidak tersedia sebagai solusi alternatif.

1322 1333 

1323**Yang harus dilakukan:**1334**Yang harus dilakukan:**

1324 1335 

1325* Untuk masuk sekarang tanpa pendengar lokal: jika Anda menggunakan langganan claude.ai, jalankan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token) di mesin tempat masuk berfungsi dan atur token yang dicetak sebagai `CLAUDE_CODE_OAUTH_TOKEN` di mesin ini. Jika tidak, atur `ANTHROPIC_API_KEY` ke kunci dari [Claude Console](https://platform.claude.com/settings/keys). [Urutan prioritas autentikasi](/docs/id/authentication#authentication-precedence) menjelaskan bagaimana Claude Code memilih antara kredensial.1336* Untuk langsung masuk tanpa listener lokal: jika Anda menggunakan langganan claude.ai, jalankan [`claude setup-token`](/docs/id/authentication#generate-a-long-lived-token) di mesin tempat proses masuk berfungsi dan atur token yang dicetaknya sebagai `CLAUDE_CODE_OAUTH_TOKEN` di mesin ini. Jika tidak, atur `ANTHROPIC_API_KEY` ke kunci dari [Claude Console](https://platform.claude.com/settings/keys). [Prioritas autentikasi](/docs/id/authentication#authentication-precedence) menjelaskan cara Claude Code memilih di antara kredensial.

1326* Untuk menggunakan masuk browser di mesin ini sebagai gantinya, Claude Code harus dapat mendengarkan pada `127.0.0.1`. Jika berjalan di dalam sandbox, periksa bahwa kebijakan sandbox memungkinkan mendengarkan pada port lokal, kemudian jalankan `/login` lagi. Jika seharusnya dapat dan masih gagal, jalankan `/feedback` sehingga laporan mencakup detail lingkungan Anda.1337* Untuk menggunakan login browser di mesin ini, Claude Code harus dapat mendengarkan di `127.0.0.1`. Jika Claude Code berjalan di dalam sandbox, periksa apakah kebijakan sandbox mengizinkan mendengarkan di port lokal, lalu jalankan `/login` lagi. Jika seharusnya bisa dan masih gagal, jalankan `/feedback` agar laporan menyertakan detail lingkungan Anda.

1327 1338 

1328<h3 id="claude-login-not-accepted">1339<h3 id="claude-login-not-accepted">

1329 Login Claude tidak diterima1340 Login Claude tidak diterima

1330</h3>1341</h3>

1331 1342 

1332Anda mencoba memulai [sesi cloud](/docs/id/claude-code-on-the-web), dan server menolak untuk membuatnya dengan 401: itu tidak menerima login Claude yang dikirim mesin ini, biasanya karena login kedaluwarsa atau dicabut.1343Anda mencoba memulai [sesi cloud](/docs/id/claude-code-on-the-web), dan server menolak membuatnya dengan 401: server tidak menerima login Claude yang dikirim mesin ini, biasanya karena login telah kedaluwarsa atau dicabut.

1333 1344 

1334Bagian pertama dari baris adalah alasan server sendiri ketika memberikan satu. Jika tidak, baris berbunyi:1345Bagian pertama baris adalah alasan dari server itu sendiri jika server memberikannya. Jika tidak, barisnya berbunyi:

1335 1346 

1336```text theme={null}1347```text theme={null}

1337Claude login not accepted · Run /login, then try again1348Claude login not accepted · Run /login, then try again


1339 1350 

1340**Yang harus dilakukan:**1351**Yang harus dilakukan:**

1341 1352 

1342* Jalankan `/login`, selesaikan masuk, kemudian mulai sesi lagi1353* Jalankan `/login`, selesaikan proses masuk, lalu mulai sesi lagi

1343 1354 

1344<h3 id="artifacts-need-a-claude-ai-login">1355<h3 id="artifacts-need-a-claude-ai-login">

1345 Artefak memerlukan login claude.ai1356 Artifact memerlukan login claude.ai

1346</h3>1357</h3>

1347 1358 

1348Claude Code menolak publikasi atau pembacaan [artefak](/docs/id/artifacts) karena sesi tidak memiliki login claude.ai yang dapat digunakan untuk artefak.1359Claude Code menolak publikasi atau pembacaan [artifact](/docs/id/artifacts) karena sesi tidak memiliki login claude.ai yang dapat digunakan untuk artifact.

1349 1360 

1350Setiap bentuk pesan dimulai dengan kata-kata yang sama, diikuti dengan solusi yang tergantung pada cara sesi Anda autentikasi. Tanpa kredensial yang bersaing, itu berbunyi:1361Setiap bentuk pesan diawali dengan kata-kata yang sama, diikuti dengan solusi yang bergantung pada cara sesi Anda diautentikasi. Tanpa kredensial yang bersaing, pesannya berbunyi:

1351 1362 

1352```text theme={null}1363```text theme={null}

1353Artifacts need a claude.ai login. Run /login and select "Claude account with subscription", then retry — the "Anthropic Console account" option does not provide claude.ai credentials.1364Artifacts need a claude.ai login. Run /login and select "Claude account with subscription", then retry — the "Anthropic Console account" option does not provide claude.ai credentials.


1356**Yang harus dilakukan:**1367**Yang harus dilakukan:**

1357 1368 

1358* Jalankan `/login` dan pilih **Claude account with subscription**. Opsi **Anthropic Console account** tidak menyediakan kredensial claude.ai.1369* Jalankan `/login` dan pilih **Claude account with subscription**. Opsi **Anthropic Console account** tidak menyediakan kredensial claude.ai.

1359* Ketika pesan menamai kredensial yang mengambil prioritas, seperti `ANTHROPIC_API_KEY`, pengaturan `apiKeyHelper`, atau kunci Console yang disimpan oleh `/login` sebelumnya, hapus dengan cara yang dikatakan pesan, kemudian jalankan `/login`1370* Ketika pesan menyebutkan kredensial yang diutamakan, seperti `ANTHROPIC_API_KEY`, pengaturan `apiKeyHelper`, atau kunci Console yang disimpan oleh `/login` sebelumnya, hapus kredensial tersebut sesuai petunjuk pesan, lalu jalankan `/login`

1360* Ketika pesan mengatakan sesi jarak jauh ini autentikasi melalui mesin yang meluncurkannya, masuk ke claude.ai di mesin itu, kemudian hubungkan kembali sesi1371* Ketika pesan menyebutkan bahwa sesi jarak jauh ini diautentikasi melalui mesin yang meluncurkannya, masuk ke claude.ai di mesin tersebut, lalu sambungkan ulang sesi

1361* Ketika pesan mengatakan kredensial disuntikkan oleh lingkungan host sesi, Anda tidak dapat mengubahnya dalam sesi itu; mulai sesi yang masuk ke claude.ai1372* Ketika pesan menyebutkan bahwa kredensial disuntikkan oleh lingkungan host sesi, Anda tidak dapat mengubahnya di sesi tersebut; mulai sesi yang telah masuk ke claude.ai

1362* Lihat [Ketersediaan](/docs/id/artifacts#availability) untuk persyaratan lain yang dimiliki artefak, seperti rencana, penyedia model, dan kebijakan organisasi1373* Lihat [Ketersediaan](/docs/id/artifacts#availability) untuk persyaratan lain yang dimiliki artifact, seperti paket, penyedia model, dan kebijakan organisasi

1363 1374 

1364<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">1375<h3 id="administrator-policy-requires-a-cloud-gateway-sign-in">

1365 Kebijakan administrator memerlukan masuk Cloud gateway1376 Kebijakan administrator mengharuskan login Cloud gateway

1366</h3>1377</h3>

1367 1378 

1368Pengaturan [managed settings](/docs/id/managed-settings) administrator di mesin ini menetapkan [`forceLoginMethod`](/docs/id/settings-reference#forceloginmethod) ke `"gateway"` atau menetapkan [`forceLoginGatewayUrl`](/docs/id/settings-reference#forcelogingatewayurl). Kecuali Anda memilih penyedia cloud melalui variabel seperti `CLAUDE_CODE_USE_BEDROCK`, Claude Code kemudian hanya menerima masuk [gateway aplikasi Claude](/docs/id/claude-apps-gateway). Anda melihat salah satu dari dua pesan:1379[Pengaturan terkelola](/docs/id/managed-settings) administrator di mesin ini mengatur [`forceLoginMethod`](/docs/id/settings-reference#forceloginmethod) ke `"gateway"` atau mengatur [`forceLoginGatewayUrl`](/docs/id/settings-reference#forcelogingatewayurl). Kecuali Anda memilih penyedia cloud melalui variabel seperti `CLAUDE_CODE_USE_BEDROCK`, Claude Code kemudian hanya menerima login [Claude apps gateway](/docs/id/claude-apps-gateway). Anda akan melihat salah satu dari dua pesan:

1369 1380 

1370```text theme={null}1381```text theme={null}

1371Not signed in to the Cloud gateway — run /login.1382Not signed in to the Cloud gateway — run /login.

1372```1383```

1373 1384 

1374Permintaan model gagal dengan pesan ini ketika sesi tidak memiliki masuk gateway, misalnya karena Anda belum menjalankan `/login` sejak kebijakan mencapai mesin.1385Permintaan model gagal dengan pesan ini ketika sesi tidak memiliki login gateway, misalnya karena Anda belum menjalankan `/login` sejak kebijakan tersebut mencapai mesin.

1375 1386 

1376Jika mesin juga menyimpan kredensial yang diterbitkan Anthropic dan pengaturan yang dikelola menetapkan `forceLoginMethod` atau `forceLoginOrgUUID`, Claude Code keluar saat startup sebagai gantinya. Kredensial itu dapat berupa variabel `ANTHROPIC_API_KEY` atau `ANTHROPIC_AUTH_TOKEN`, pengaturan `apiKeyHelper`, atau kunci API yang disimpan oleh login Claude Console sebelumnya. Pesan dimulai:1387Jika mesin juga menyimpan kredensial yang diterbitkan Anthropic dan pengaturan terkelola mengatur `forceLoginMethod` atau `forceLoginOrgUUID`, Claude Code keluar saat startup. Kredensial tersebut dapat berupa variabel `ANTHROPIC_API_KEY` atau `ANTHROPIC_AUTH_TOKEN`, pengaturan `apiKeyHelper`, atau kunci API yang disimpan oleh login Claude Console sebelumnya. Pesannya diawali dengan:

1377 1388 

1378```text theme={null}1389```text theme={null}

1379Administrator policy requires a Cloud gateway sign-in on this machine; the1390Administrator policy requires a Cloud gateway sign-in on this machine; the


1383 1394 

1384**Yang harus dilakukan:**1395**Yang harus dilakukan:**

1385 1396 

1386* Jalankan `/login` dan selesaikan masuk di layar **Cloud gateway**1397* Jalankan `/login` dan selesaikan proses masuk di layar **Cloud gateway**

1387* Untuk pesan startup, hapus `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau pengaturan `apiKeyHelper` yang Anda konfigurasikan. Untuk menghapus kunci API Console yang disimpan, jalankan `claude auth logout`, yang juga menghapus login claude.ai yang disimpan. Jika Anda memilih penyedia cloud dengan `CLAUDE_CODE_USE_*`, sesi kemudian dimulai tanpa masuk. Jika tidak, mulai `claude` dan jalankan `/login`1398* Untuk pesan startup, hapus pengaturan `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN`, atau `apiKeyHelper` yang Anda konfigurasikan. Untuk menghapus kunci API Console yang tersimpan, jalankan `claude auth logout`, yang juga menghapus login claude.ai yang tersimpan. Jika Anda memilih penyedia cloud dengan `CLAUDE_CODE_USE_*`, sesi kemudian dimulai tanpa login. Jika tidak, mulai `claude` dan jalankan `/login`

1388* Jika Anda percaya mesin tidak boleh memerlukan gateway, minta administrator yang mengelolanya untuk menghapus `forceLoginMethod` dan `forceLoginGatewayUrl` dari pengaturan yang dikelolanya1399* Jika Anda yakin mesin tersebut seharusnya tidak mengharuskan gateway, minta administrator yang mengelolanya untuk menghapus `forceLoginMethod` dan `forceLoginGatewayUrl` dari pengaturan terkelolanya

1389 1400 

1390Pada v2.1.265, regresi juga menampilkan pesan pertama dalam beberapa konfigurasi gateway LLM dan proxy yang autentikasi dengan kunci API, `apiKeyHelper`, atau header khusus, bahkan tanpa persyaratan administrator di mesin. Perbarui ke v2.1.266 atau lebih baru. Anda tidak perlu mengubah konfigurasi Anda.1401Pada v2.1.265, sebuah regresi juga menampilkan pesan pertama di beberapa konfigurasi LLM gateway dan proxy yang melakukan autentikasi dengan kunci API, `apiKeyHelper`, atau header kustom, bahkan tanpa persyaratan administrator di mesin tersebut. Perbarui ke v2.1.266 atau yang lebih baru. Anda tidak perlu mengubah konfigurasi Anda.

1391 1402 

1392Sebelum v2.1.261, pada mesin yang menetapkan `forceLoginMethod` ke `"gateway"`, Claude Code menggunakan login yang disimpan sisa daripada gagal permintaan model, dan melaporkan kredensial lingkungan yang dikonfigurasi dengan `This machine's managed settings require a first-party login` daripada pesan startup. Sebelum v2.1.265, mesin yang pengaturan yang dikelolanya hanya menetapkan `forceLoginGatewayUrl` tidak memerlukan masuk gateway, dan Claude Code menggunakan kredensial sisa di sana.1403Sebelum v2.1.261, pada mesin yang mengatur `forceLoginMethod` ke `"gateway"`, Claude Code menggunakan login tersimpan yang tersisa alih-alih menggagalkan permintaan model, dan melaporkan kredensial lingkungan yang dikonfigurasi dengan `This machine's managed settings require a first-party login` alih-alih pesan startup. Sebelum v2.1.265, mesin yang pengaturan terkelolanya hanya mengatur `forceLoginGatewayUrl` tidak mengharuskan login gateway, dan Claude Code menggunakan kredensial yang tersisa di sana.

1393 1404 

1394<h3 id="your-account-is-on-hold">1405<h3 id="your-account-is-on-hold">

1395 Akun Anda ditahan1406 Akun Anda ditangguhkan

1396</h3>1407</h3>

1397 1408 

1398Akun Claude di balik login Anda telah ditangguhkan. Claude Code menampilkan pesan pertama ketika mencoba memperbarui login yang disimpan dan mempelajari tentang penahan, dan yang kedua ketika masuk yang Anda selesaikan di browser melaporkannya:1409Akun Claude di balik login Anda telah ditangguhkan. Claude Code menampilkan pesan pertama ketika mencoba memperbarui login tersimpan Anda dan mengetahui adanya penangguhan, dan pesan kedua ketika proses masuk yang Anda selesaikan di browser melaporkannya:

1399 1410 

1400```text theme={null}1411```text theme={null}

1401Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted1412Your account is on hold and can't use Claude Code. View details or appeal: https://claude.ai/restricted

1402Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted1413Your account is on hold and can't sign in to Claude Code. View details or appeal: https://claude.ai/restricted

1403```1414```

1404 1415 

1405Masuk lagi dengan akun yang sama tidak menghapus pesan, karena penahan ada di akun daripada login. Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), kode kesalahan terstruktur adalah `account_on_hold`. Sebelum v2.1.235, Claude Code melaporkan akun yang ditahan sebagai [Login kedaluwarsa · Jalankan /login](#login-expired), yang langkah pemulihannya tidak dapat menghapus penahan.1416Masuk kembali dengan akun yang sama tidak menghilangkan pesan ini, karena penangguhan berlaku pada akun, bukan pada login. Dalam [mode non-interaktif](/docs/id/headless) (`-p`) dan [Agent SDK](/docs/id/agent-sdk/overview), kode kesalahan terstrukturnya adalah `account_on_hold`. Sebelum v2.1.235, Claude Code melaporkan akun yang ditangguhkan sebagai [Login expired · Please run /login](#login-expired), yang langkah pemulihannya tidak dapat menghapus penangguhan.

1406 1417 

1407**Yang harus dilakukan:**1418**Yang harus dilakukan:**

1408 1419 

1409* Buka tautan dalam pesan untuk melihat detail penahan atau mengajukan banding1420* Buka tautan di pesan untuk melihat detail penangguhan atau mengajukan banding

1410* Jika Anda memiliki akun Claude lain atau kunci API yang tidak terpengaruh oleh penahan, Anda dapat terus bekerja saat penahan diselesaikan: jalankan `/login` dengan akun itu, atau atur kunci dengan `ANTHROPIC_API_KEY`1421* Jika Anda memiliki akun Claude lain atau kunci API yang tidak terpengaruh oleh penangguhan, Anda dapat terus bekerja selama penangguhan diselesaikan: jalankan `/login` dengan akun tersebut, atau atur kunci dengan `ANTHROPIC_API_KEY`

1411 1422 

1412<h3 id="anthropic-profile-login-expired">1423<h3 id="anthropic-profile-login-expired">

1413 Login profil Anthropic kedaluwarsa1424 Login profil Anthropic kedaluwarsa

1414</h3>1425</h3>

1415 1426 

1416Claude Code autentikasi melalui profil kredensial Anthropic yang kredensial login yang disimpannya kedaluwarsa, dan profil tidak menyimpan kredensial penyegaran yang dapat digunakan Claude Code untuk memperbarui. Claude Code menghentikan setiap permintaan secara lokal tanpa mencoba ulang, karena percobaan ulang akan membaca kredensial yang sama yang kedaluwarsa.1427Claude Code melakukan autentikasi melalui profil kredensial Anthropic yang kredensial login tersimpannya telah kedaluwarsa, dan profil tersebut tidak menyimpan kredensial pembaruan yang dapat digunakan Claude Code untuk memperbaruinya. Claude Code menghentikan setiap permintaan secara lokal tanpa mencoba ulang, karena retry akan membaca kredensial kedaluwarsa yang sama.

1417 1428 

1418```text theme={null}1429```text theme={null}

1419Anthropic profile login expired · Re-authenticate your Anthropic profile1430Anthropic profile login expired · Re-authenticate your Anthropic profile

1420Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile1431Anthropic profile login expired · Run /login to use your claude.ai account instead, or re-authenticate the profile

1421```1432```

1422 1433 

1423Ini muncul hanya ketika kredensial aktif berasal dari profil kredensial Anthropic, yang Anda pilih dengan variabel lingkungan `ANTHROPIC_PROFILE`, yang Claude Code temukan sebagai profil aktif di direktori konfigurasi Anthropic Anda, atau yang Claude Code tulis ketika Anda [masuk tanpa kunci API](/docs/id/authentication#sign-in-without-an-api-key). Sesi yang autentikasi dengan opsi claude.ai `/login`, kunci API, token pembawa seperti `ANTHROPIC_AUTH_TOKEN`, atau penyedia pihak ketiga tidak pernah melihat pesan ini.1434Pesan ini hanya muncul ketika kredensial aktif berasal dari profil kredensial Anthropic, yaitu profil yang Anda pilih dengan environment variable `ANTHROPIC_PROFILE`, yang ditemukan Claude Code sebagai profil aktif di direktori konfigurasi Anthropic Anda, atau yang ditulis Claude Code ketika Anda [masuk tanpa kunci API](/docs/id/authentication#sign-in-without-an-api-key). Sesi yang diautentikasi dengan kunci API, bearer token seperti `ANTHROPIC_AUTH_TOKEN`, atau penyedia pihak ketiga tidak pernah melihat pesan ini.

1424 1435 

1425Di mesin yang [menawarkan masuk tanpa kunci](/docs/id/authentication#sign-in-without-an-api-key), jalankan `/login`, pilih akun Anthropic Console, dan masuk lagi untuk memperbarui profil yang ditulis oleh masuk Console tanpa kunci atau CLI Platform Claude `ant auth login`. Claude Code mengganti kredensial yang kedaluwarsa dalam profil itu. Untuk profil federasi atau yang dibuat alat lain, `/login` tidak memperbarui kredensial. Bentuk mana yang Anda lihat tergantung pada apakah Anda memilih profil atau Claude Code menemukannya:1436Pada mesin yang [menawarkan login tanpa kunci](/docs/id/authentication#sign-in-without-an-api-key), jalankan `/login`, pilih akun Anthropic Console, dan masuk kembali untuk memperbarui profil yang ditulis oleh login Console tanpa kunci atau oleh `ant auth login` dari Claude Platform CLI. Claude Code mengganti kredensial yang kedaluwarsa di profil tersebut. Untuk profil federasi atau profil yang dibuat oleh alat lain, `/login` tidak memperbarui kredensial. Bentuk yang Anda lihat bergantung pada apakah Anda memilih profil tersebut atau Claude Code menemukannya:

1426 1437 

1427* Ketika Anda menetapkan `ANTHROPIC_PROFILE` secara eksplisit, pesan berakhir dengan `Re-authenticate your Anthropic profile`.1438* Ketika Anda mengatur `ANTHROPIC_PROFILE` secara eksplisit, pesan diakhiri dengan `Re-authenticate your Anthropic profile`.

1428* Ketika Claude Code menemukan profil dari direktori konfigurasi Anda, pesan menawarkan `/login`, karena Claude Code memberikan prioritas `/login` yang berfungsi atas profil yang ditemukan dan kemudian autentikasi dengan akun claude.ai atau Console Anda sebagai gantinya. Sebelum v2.1.234, Claude Code menampilkan bentuk `Re-authenticate your Anthropic profile` dalam kasus ini juga.1439* Ketika Claude Code menemukan profil dari direktori konfigurasi Anda, pesan menawarkan `/login`, karena Claude Code mengutamakan `/login` yang berfungsi daripada profil yang ditemukan, lalu melakukan autentikasi dengan akun claude.ai atau Console Anda. Sebelum v2.1.234, Claude Code menampilkan bentuk `Re-authenticate your Anthropic profile` dalam kasus ini juga.

1429 1440 

1430**Yang harus dilakukan:**1441**Yang harus dilakukan:**

1431 1442 

1432* Masuk ke profil lagi, kemudian coba ulang: di mesin yang [menawarkan masuk tanpa kunci](/docs/id/authentication#sign-in-without-an-api-key), jalankan `/login` dan pilih akun Anthropic Console untuk profil yang ditulis oleh masuk Console tanpa kunci atau CLI Platform Claude `ant auth login`; untuk profil lain, gunakan alat yang membuatnya1443* Masuk kembali ke profil, lalu coba lagi: pada mesin yang [menawarkan login tanpa kunci](/docs/id/authentication#sign-in-without-an-api-key), jalankan `/login` dan pilih akun Anthropic Console untuk profil yang ditulis oleh login Console tanpa kunci atau oleh `ant auth login` dari Claude Platform CLI; untuk profil lain, gunakan alat yang membuatnya

1433* Jika administrator memprovisikan kredensial profil, minta mereka untuk mengeluarkan yang baru1444* Jika administrator menyediakan kredensial profil tersebut, minta mereka untuk menerbitkan yang baru

1434* Jalankan `/status` untuk mengonfirmasi sumber kredensial aktif dan nama profil1445* Jalankan `/status` untuk memastikan sumber kredensial aktif dan nama profil

1435* Untuk berhenti menggunakan profil, batalkan pengaturan `ANTHROPIC_PROFILE` jika Anda menetapkannya, kemudian autentikasi dengan cara lain, seperti `/login` atau `ANTHROPIC_API_KEY`1446* Untuk berhenti menggunakan profil, hapus pengaturan `ANTHROPIC_PROFILE` jika Anda mengaturnya, lalu lakukan autentikasi dengan cara lain, seperti `/login` atau `ANTHROPIC_API_KEY`

1436 1447 

1437<h3 id="oauth-scope-requirement">1448<h3 id="oauth-scope-requirement">

1438 Persyaratan cakupan OAuth1449 Persyaratan scope OAuth

1439</h3>1450</h3>

1440 1451 

1441Token yang disimpan mendahului cakupan izin yang diperlukan fitur yang lebih baru:1452Token tersimpan dibuat sebelum adanya scope izin yang dibutuhkan oleh fitur yang lebih baru:

1442 1453 

1443```text theme={null}1454```text theme={null}

1444OAuth token does not meet scope requirement: user:profile1455OAuth token does not meet scope requirement: user:profile


1446 1457 

1447**Yang harus dilakukan:**1458**Yang harus dilakukan:**

1448 1459 

1449* Jalankan `/login` untuk mendapatkan token baru dengan cakupan saat ini. Anda tidak perlu keluar terlebih dahulu.1460* Jalankan `/login` untuk mendapatkan token baru dengan scope saat ini. Anda tidak perlu keluar terlebih dahulu.

1450 1461 

1451<h3 id="claude-ai-rejected-the-session-token">1462<h3 id="claude-ai-rejected-the-session-token">

1452 claude.ai menolak token sesi1463 claude.ai menolak token sesi

1453</h3>1464</h3>

1454 1465 

1455Permintaan [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) gagal karena claude.ai menolak token dari login Claude Code Anda. Token yang ditolak adalah login Anda, bukan otorisasi konektor sendiri di claude.ai, jadi mengotorisasi konektor lagi tidak menyelesaikannya. Dalam `/mcp`, konektor menampilkan sebagai `session token rejected` dan tampilan detailnya berbunyi:1466Permintaan [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) gagal karena claude.ai menolak token dari login Claude Code Anda. Token yang ditolak adalah login Anda, bukan otorisasi konektor itu sendiri di claude.ai, sehingga mengotorisasi ulang konektor tidak menyelesaikannya. Di `/mcp`, konektor ditampilkan sebagai `session token rejected` dan tampilan detailnya berbunyi:

1456 1467 

1457```text theme={null}1468```text theme={null}

1458claude.ai rejected the session token. Run /login, then reconnect.1469claude.ai rejected the session token. Run /login, then reconnect.


1460 1471 

1461**Yang harus dilakukan:**1472**Yang harus dilakukan:**

1462 1473 

1463* Jalankan `/login` untuk masuk lagi1474* Jalankan `/login` untuk masuk kembali

1464* Hubungkan kembali konektor dari `/mcp`, atau jalankan `/mcp reconnect <server>`. Menghubungkan kembali sebelum Anda masuk lagi meninggalkan konektor dalam keadaan yang sama. Opsi **Reconnect** panel `/mcp` melaporkan `your claude.ai session token was rejected`; bentuk `/mcp reconnect <server>` yang diketik melaporkan reconnect yang berhasil meskipun token masih ditolak.1475* Sambungkan ulang konektor dari `/mcp`, atau jalankan `/mcp reconnect <server>`. Menyambung ulang sebelum Anda masuk kembali akan membiarkan konektor dalam kondisi yang sama. Opsi **Reconnect** di panel `/mcp` melaporkan `your claude.ai session token was rejected`; bentuk `/mcp reconnect <server>` yang diketik melaporkan penyambungan ulang yang berhasil meskipun token masih ditolak.

1465 1476 

1466Sebelum v2.1.222, Claude Code menandai konektor sebagai memerlukan autentikasi sebagai gantinya, yang menunjukkan Anda pada alur otorisasi konektor meskipun menyelesaikannya tidak menyelesaikan keadaan.1477Sebelum v2.1.222, Claude Code menandai konektor sebagai memerlukan autentikasi, yang mengarahkan Anda ke alur otorisasi konektor meskipun menyelesaikannya tidak menyelesaikan kondisi tersebut.

1467 1478 

1468<h3 id="mcp-server-needs-you-to-sign-in-again">1479<h3 id="mcp-server-needs-you-to-sign-in-again">

1469 Server MCP memerlukan Anda untuk masuk lagi1480 Server MCP mengharuskan Anda masuk kembali

1470</h3>1481</h3>

1471 1482 

1472Server [MCP](/docs/id/mcp) jarak jauh menolak kredensial pada panggilan alat di tengah sesi, biasanya karena masuk atau token kedaluwarsa atau karena token kekurangan izin yang diperlukan alat. Panggilan alat gagal, dan `/mcp` menandai server sebagai [memerlukan autentikasi](/docs/id/mcp#authenticate-with-remote-mcp-servers).1483[Server MCP](/docs/id/mcp) jarak jauh menolak kredensial pada panggilan tool di tengah sesi, biasanya karena login atau token telah kedaluwarsa atau karena token tidak memiliki izin yang dibutuhkan tool tersebut. Panggilan tool gagal, dan `/mcp` menandai server sebagai [memerlukan autentikasi](/docs/id/mcp#authenticate-with-remote-mcp-servers).

1473 1484 

1474Untuk server yang Anda masuki dari Claude Code, termasuk konektor claude.ai, masuk kedaluwarsa atau dicabut:1485Untuk server yang Anda masuki dari Claude Code, termasuk konektor claude.ai, login telah kedaluwarsa atau dicabut:

1475 1486 

1476```text theme={null}1487```text theme={null}

1477MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)1488MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)

1478```1489```

1479 1490 

1480Jalankan `/mcp`, pilih server, dan masuk lagi dari menunya.1491Jalankan `/mcp`, pilih server, dan masuk kembali dari menunya.

1481 1492 

1482Untuk server yang dikonfigurasi dengan skrip [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication), Claude Code sudah menjalankan kembali helper dan mencoba ulang panggilan sekali sebelum menampilkan ini:1493Untuk server yang dikonfigurasi dengan skrip [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication), Claude Code telah menjalankan ulang helper dan mencoba ulang panggilan sekali sebelum menampilkan ini:

1483 1494 

1484```text theme={null}1495```text theme={null}

1485MCP server "<name>" rejected the credential from its headersHelper (check the helper and run /mcp to reconnect, or to authenticate if the server also uses OAuth)1496MCP server "<name>" rejected the credential from its headersHelper (check the helper and run /mcp to reconnect, or to authenticate if the server also uses OAuth)

1486```1497```

1487 1498 

1488Periksa bahwa helper mengembalikan kredensial yang diterima server, kemudian hubungkan kembali dari `/mcp`, yang menjalankan helper lagi.1499Periksa apakah helper mengembalikan kredensial yang diterima server, lalu sambungkan ulang dari `/mcp`, yang menjalankan helper lagi.

1489 1500 

1490Untuk server dengan header `Authorization` statis dalam konfigurasinya:1501Untuk server dengan header `Authorization` statis dalam konfigurasinya:

1491 1502 


1493MCP server "<name>" rejected the Authorization header in its config (update it, then run /mcp to reconnect)1504MCP server "<name>" rejected the Authorization header in its config (update it, then run /mcp to reconnect)

1494```1505```

1495 1506 

1496Perbarui nilai header tempat server dikonfigurasi, kemudian hubungkan kembali dari `/mcp`.1507Perbarui nilai header di tempat server dikonfigurasi, lalu sambungkan ulang dari `/mcp`.

1497 1508 

1498Sebelum v2.1.273, kasus masuk yang kedaluwarsa, `headersHelper`, dan header `Authorization` semuanya menampilkan `MCP server "<name>" requires re-authorization (token expired)`.1509Sebelum v2.1.273, kasus login kedaluwarsa, `headersHelper`, dan header `Authorization` semuanya menampilkan `MCP server "<name>" requires re-authorization (token expired)`.

1499 1510 

1500Server juga dapat menolak panggilan alat dengan HTTP 403 `insufficient_scope` untuk meminta Anda mengotorisasi cakupan, kadang-kadang yang sudah tercantum dalam token Anda. Pesan menamai cakupan itu:1511Server juga dapat menolak panggilan tool dengan HTTP 403 `insufficient_scope` untuk meminta Anda mengotorisasi suatu scope, terkadang scope yang sudah tercantum dalam token Anda. Pesan menyebutkan scope tersebut:

1501 1512 

1502```text theme={null}1513```text theme={null}

1503MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate1514MCP server "<name>" needs additional permissions (scope: "<scope>") — run /mcp to re-authenticate

1504```1515```

1505 1516 

1506Jalankan `/mcp`, pilih server, dan autentikasi lagi dari menunya.1517Jalankan `/mcp`, pilih server, dan lakukan autentikasi ulang dari menunya.

1507 1518 

1508Ketika konfigurasi server tidak menetapkan [`oauth.scopes`](/docs/id/mcp#restrict-oauth-scopes) atau [`authServerMetadataUrl`](/docs/id/mcp#override-oauth-metadata-discovery), Claude Code meminta cakupan yang dinamai server. Dengan pengaturan apa pun, Claude Code meminta cakupan pengaturan itu sebagai gantinya. Jika Anda menyematkan `oauth.scopes`, tambahkan cakupan yang hilang ke daftar itu sebelum Anda autentikasi lagi.1519Ketika konfigurasi server tidak mengatur [`oauth.scopes`](/docs/id/mcp#restrict-oauth-scopes) maupun [`authServerMetadataUrl`](/docs/id/mcp#override-oauth-metadata-discovery), Claude Code meminta scope yang disebutkan server. Dengan salah satu pengaturan tersebut, Claude Code meminta scope dari pengaturan tersebut. Jika Anda menetapkan `oauth.scopes`, tambahkan scope yang kurang ke daftar tersebut sebelum Anda melakukan autentikasi ulang.

1509 1520 

1510Sebelum v2.1.274, kasus ini menampilkan pesan `needs you to sign in again`, dan sebelum v2.1.273 itu menampilkan `requires re-authorization (token expired)` seperti kasus lainnya.1521Sebelum v2.1.274, kasus ini menampilkan pesan `needs you to sign in again`, dan sebelum v2.1.273 kasus ini menampilkan `requires re-authorization (token expired)` seperti kasus lainnya.

1511 1522 

1512<h3 id="mcp-server-url-is-missing-or-not-a-valid-url">1523<h3 id="mcp-server-url-is-missing-or-not-a-valid-url">

1513 URL server MCP hilang atau bukan URL yang valid1524 URL server MCP tidak ada atau bukan URL yang valid

1514</h3>1525</h3>

1515 1526 

1516Claude Code menolak untuk memulai masuk OAuth untuk server MCP jarak jauh karena `url` server yang dikonfigurasi tidak diuraikan sebagai URL. Kecuali Claude Code memiliki masalah konfigurasi yang lebih spesifik untuk dilaporkan untuk server, menjalankan [`claude mcp login <name>`](/docs/id/mcp#authenticate-from-the-command-line) di shell Anda mencetak penolakan sebagai:1527Claude Code menolak memulai login OAuth untuk server MCP jarak jauh karena `url` yang dikonfigurasi untuk server tersebut tidak dapat diurai sebagai URL. Kecuali Claude Code memiliki masalah konfigurasi yang lebih spesifik untuk dilaporkan bagi server tersebut, menjalankan [`claude mcp login <name>`](/docs/id/mcp#authenticate-from-the-command-line) di shell Anda mencetak penolakan tersebut sebagai:

1517 1528 

1518```text theme={null}1529```text theme={null}

1519Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.1530Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.


1521 1532 

1522**Yang harus dilakukan:**1533**Yang harus dilakukan:**

1523 1534 

1524* Atur entri `url` ke titik akhir server yang sebenarnya tempat server dikonfigurasi, atau atur variabel lingkungan yang dirujuk [`${VAR}`](/docs/id/mcp#environment-variable-expansion-in-mcp-json)-nya, kemudian jalankan masuk lagi.1535* Atur `url` entri ke endpoint server yang sebenarnya di tempat server dikonfigurasi, atau atur environment variable yang disebutkan oleh [referensi `${VAR}`](/docs/id/mcp#environment-variable-expansion-in-mcp-json)-nya, lalu jalankan proses masuk lagi.

1525 1536 

1526<h3 id="issuer-mismatch-in-authorization-response">1537<h3 id="issuer-mismatch-in-authorization-response">

1527 Ketidaksesuaian penerbit dalam respons otorisasi1538 Ketidakcocokan issuer dalam respons otorisasi

1528</h3>1539</h3>

1529 1540 

1530Selama [masuk OAuth MCP](/docs/id/mcp#authenticate-with-remote-mcp-servers), server otorisasi dialihkan kembali ke Claude Code dengan parameter `iss` yang tidak menamai penerbit yang diharapkan Claude Code dari metadata OAuth server. Penerbit yang salah pada langkah ini adalah bagaimana serangan pencampuran server otorisasi terlihat, jadi Claude Code gagal masuk daripada menukar kode otorisasi. Claude Code menampilkan kesalahan dalam menu server `/mcp` setelah masuk browser:1541Selama [login OAuth MCP](/docs/id/mcp#authenticate-with-remote-mcp-servers), server otorisasi mengalihkan kembali ke Claude Code dengan parameter `iss` yang tidak menyebutkan issuer yang diharapkan Claude Code dari metadata OAuth server. Issuer yang salah pada langkah ini adalah tanda serangan mix-up server otorisasi, sehingga Claude Code menggagalkan proses masuk alih-alih menukarkan kode otorisasi. Claude Code menampilkan kesalahan di menu server `/mcp` setelah proses masuk di browser:

1531 1542 

1532```text theme={null}1543```text theme={null}

1533Issuer mismatch in authorization response (RFC 9207): expected "https://auth.example.com", received "https://other.example.com"1544Issuer mismatch in authorization response (RFC 9207): expected "https://auth.example.com", received "https://other.example.com"

1534```1545```

1535 1546 

1536`expected` adalah penerbit dari metadata OAuth server, dan `received` adalah nilai `iss` yang dibawa pengalihan. Masuk yang pengalihannya tidak membawa parameter `iss` melewati pemeriksaan, kecuali metadata server menetapkan `authorization_response_iss_parameter_supported`, dalam hal ini Claude Code gagal masuk.1547`expected` adalah issuer dari metadata OAuth server, dan `received` adalah nilai `iss` yang dibawa oleh pengalihan. Proses masuk yang pengalihannya tidak membawa parameter `iss` lolos pemeriksaan, kecuali metadata server mengatur `authorization_response_iss_parameter_supported`, yang dalam hal ini Claude Code menggagalkan proses masuk.

1537 1548 

1538**Yang harus dilakukan:**1549**Yang harus dilakukan:**

1539 1550 

1540* Coba masuk lagi dari `/mcp`1551* Coba proses masuk lagi dari `/mcp`

1541* Jika kesalahan berulang, laporkan ke operator server. Perbaikannya adalah sisi server: server otorisasi harus mengembalikan penerbit yang sama dalam parameter `iss` yang diiklankan dalam metadata-nya1552* Jika kesalahan berulang, laporkan ke operator server. Perbaikannya ada di sisi server: server otorisasi harus mengembalikan issuer yang sama di parameter `iss` dengan yang diiklankannya di metadata

1542* Untuk terhubung saat server sedang diperbaiki, mulai Claude Code dengan [`MCP_SDK_GENERATION=v1`](/docs/id/env-vars), yang [runtime](/docs/id/mcp#mcp-client-runtimes)-nya tidak menjalankan pemeriksaan ini. Ini menghapus perlindungan terhadap serangan pencampuran, jadi lebih suka perbaikan sisi server1553* Untuk terhubung selagi server diperbaiki, mulai Claude Code dengan [`MCP_SDK_GENERATION=v1`](/docs/id/env-vars), yang [runtime](/docs/id/mcp#mcp-client-runtimes)-nya tidak menjalankan pemeriksaan ini. Ini menghilangkan perlindungan terhadap serangan mix-up, jadi utamakan perbaikan di sisi server

1543 1554 

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

1545 1556 

1546<h3 id="refusing-to-send-credentials-to-non-https-token-endpoint">1557<h3 id="refusing-to-send-credentials-to-non-https-token-endpoint">

1547 Menolak mengirim kredensial ke titik akhir token non-https1558 Menolak mengirim kredensial ke token endpoint non-https

1548</h3>1559</h3>

1549 1560 

1550Pada [runtime v2](/docs/id/mcp#mcp-client-runtimes), Claude Code mengirim permintaan token [OAuth MCP](/docs/id/mcp#authenticate-with-remote-mcp-servers) hanya ke titik akhir token yang disajikan melalui HTTPS atau di `localhost`, `127.0.0.1`, atau `::1`. Pesan ini berarti titik akhir token server bukan keduanya, jadi Claude Code berhenti sebelum mengirim permintaan. Itu terjadi setelah masuk browser, jadi langkah browser berhasil terlebih dahulu, dan lagi setiap kali Claude Code menyegarkan token server.1561Pada [runtime v2](/docs/id/mcp#mcp-client-runtimes), Claude Code mengirim permintaan token [OAuth MCP](/docs/id/mcp#authenticate-with-remote-mcp-servers) hanya ke token endpoint yang dilayani melalui HTTPS atau di `localhost`, `127.0.0.1`, atau `::1`. Pesan ini berarti token endpoint server bukan salah satunya, sehingga Claude Code berhenti sebelum mengirim permintaan. Hal itu terjadi setelah proses masuk di browser, sehingga langkah browser berhasil terlebih dahulu, dan terjadi lagi setiap kali Claude Code memperbarui token server.

1551 1562 

1552Dalam bentuk lengkapnya, pesan berasal dari MCP SDK dan mengutip titik akhir token yang ditolaknya. Dalam log debug, itu mengikuti `Error during auth completion:` untuk masuk atau `Token refresh failed:` untuk penyegaran. Di shell Anda, `claude mcp login <name>` mencetaknya setelah `Couldn't complete authentication for "<name>":`, dan dalam sesi, `/mcp` menampilkannya di bawah menu server:1563Dalam bentuk lengkapnya, pesan ini berasal dari MCP SDK dan mengutip token endpoint yang ditolaknya. Di log debug, pesan ini mengikuti `Error during auth completion:` untuk proses masuk atau `Token refresh failed:` untuk pembaruan. Di shell Anda, `claude mcp login <name>` mencetaknya setelah `Couldn't complete authentication for "<name>":`, dan dalam sesi, `/mcp` menampilkannya di bawah menu server:

1553 1564 

1554```text theme={null}1565```text theme={null}

1555Refusing to send credentials to non-https token endpoint 'http://192.168.1.50:8123/oauth/token'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).1566Refusing to send credentials to non-https token endpoint 'http://192.168.1.50:8123/oauth/token'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).

1556```1567```

1557 1568 

1558Claude Code memperlakukan URL server yang memiliki string kueri atau segmen jalur panjang yang terlihat acak sebagai kemungkinan rahasia. Untuk server seperti itu, itu menyunting kesalahan masuk yang dimunculkan MCP SDK sebelum ditampilkan atau dicatat. Kesalahan ini kemudian berbunyi sebagai nama pendek yang dapat berubah antar rilis, seperti `io`, diikuti oleh `from the MCP SDK for` dan URL server yang disunting. Kesalahan lain dari MCP SDK mengambil bentuk yang sama di sana. Pesan yang disunting hanya dapat menjadi kesalahan ini ketika titik akhir token server adalah `http://` biasa di alamat selain `localhost`, `127.0.0.1`, atau `::1`.1569Claude Code memperlakukan URL server yang memiliki query string atau segmen path panjang yang tampak acak sebagai kemungkinan rahasia. Untuk server semacam itu, Claude Code menyamarkan kesalahan login yang dimunculkan MCP SDK sebelum menampilkan atau mencatatnya ke log. Kesalahan ini kemudian terbaca sebagai nama pendek yang dapat berubah antar rilis, seperti `io`, diikuti dengan `from the MCP SDK for` dan URL server yang disamarkan. Kesalahan lain dari MCP SDK memiliki bentuk yang sama di sana. Pesan yang disamarkan dapat berupa kesalahan ini hanya jika token endpoint server adalah `http://` biasa di alamat selain `localhost`, `127.0.0.1`, atau `::1`.

1559 1570 

1560**Yang harus dilakukan:**1571**Yang harus dilakukan:**

1561 1572 

1562* Sajikan titik akhir token itu melalui HTTPS, misalnya dengan menempatkan server di belakang proxy terbalik atau terowongan yang menghentikan TLS dan mengonfigurasi server untuk mengiklankan alamat `https://`1573* Layani token endpoint tersebut melalui HTTPS, misalnya dengan menempatkan server di belakang reverse proxy atau tunnel yang menangani TLS dan mengonfigurasi server untuk mengiklankan alamat `https://`

1563* Untuk terhubung tanpa mengubah server, mulai Claude Code dengan [`MCP_SDK_GENERATION=v1`](/docs/id/env-vars), yang [runtime](/docs/id/mcp#mcp-client-runtimes)-nya tidak menerapkan aturan ini dan mengirim permintaan token melalui HTTP biasa. Pilihan itu berlangsung sampai Anda keluar dan berlaku untuk setiap server. Runtime v1 juga melewati [pemeriksaan penerbit](#issuer-mismatch-in-authorization-response), jadi lebih suka menyajikan titik akhir melalui HTTPS1574* Untuk terhubung tanpa mengubah server, mulai Claude Code dengan [`MCP_SDK_GENERATION=v1`](/docs/id/env-vars), yang [runtime](/docs/id/mcp#mcp-client-runtimes)-nya tidak menerapkan aturan ini dan mengirim permintaan token melalui HTTP biasa. Pilihan tersebut berlaku hingga Anda keluar dan berlaku untuk setiap server. Runtime v1 juga melewati [pemeriksaan issuer](#issuer-mismatch-in-authorization-response), jadi utamakan melayani endpoint melalui HTTPS

1564 1575 

1565<h3 id="aws-credentials-expired-or-invalid">1576<h3 id="aws-credentials-expired-or-invalid">

1566 Kredensial AWS kedaluwarsa atau tidak valid1577 Kredensial AWS kedaluwarsa atau tidak valid

1567</h3>1578</h3>

1568 1579 

1569Token sesi AWS Anda kedaluwarsa atau ditolak. Pesan ini muncul pada 401 dari [Claude Platform di AWS](/docs/id/claude-platform-on-aws) atau [titik akhir Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint), yang merupakan cara penyedia itu melaporkan token keamanan yang kedaluwarsa.1580Token sesi AWS Anda telah kedaluwarsa atau ditolak. Pesan ini muncul pada 401 dari [Claude Platform on AWS](/docs/id/claude-platform-on-aws) atau [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint), yang merupakan cara penyedia tersebut melaporkan token keamanan yang kedaluwarsa.

1570 1581 

1571Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `AWS credentials expired or invalid` terkemuka:1582Petunjuk tindakan di bagian tengah bervariasi sesuai penyiapan Anda. Bagian yang tetap adalah `AWS credentials expired or invalid` di awal:

1572 1583 

1573```text theme={null}1584```text theme={null}

1574AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...1585AWS credentials expired or invalid · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · API Error: 401 ...

1575```1586```

1576 1587 

1577Sebelum v2.1.273, pesan ini muncul hanya ketika `awsAuthRefresh` dikonfigurasi.1588Sebelum v2.1.273, pesan ini hanya muncul ketika `awsAuthRefresh` dikonfigurasi.

1578 1589 

1579**Yang harus dilakukan:**1590**Yang harus dilakukan:**

1580 1591 

1581* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1592* Jika petunjuk menyebutkan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1582* Jika [`awsAuthRefresh`](/docs/id/amazon-bedrock#advanced-credential-configuration) diatur, jalankan perintah yang dinamai dalam pesan, seperti `aws sso login --profile myprofile`, di terminal lain dan selesaikan masuk browser, kemudian coba ulang. Jika tidak, segarkan kredensial AWS yang Anda gunakan sendiri: masuk SSO, kunci akses, kunci API, atau token proxy Anda1593* Jika [`awsAuthRefresh`](/docs/id/amazon-bedrock#advanced-credential-configuration) diatur, jalankan perintah yang disebutkan dalam pesan, seperti `aws sso login --profile myprofile`, di terminal lain dan selesaikan proses masuk di browser, lalu coba lagi. Jika tidak, perbarui sendiri kredensial AWS yang Anda gunakan: login SSO, access key, kunci API, atau token proxy Anda

1583* Dengan `awsAuthRefresh` diatur dalam sesi interaktif, Anda dapat menjalankan `/login`, pilih **3rd-party platform**, kemudian pilih **Claude Platform on AWS · refresh credentials** di bawah **Using 3rd-party platforms** untuk menjalankan perintah yang sama tanpa memulai ulang Claude Code. Lihat [Konfigurasi kredensial AWS](/docs/id/claude-platform-on-aws#1-configure-aws-credentials)1594* Dengan `awsAuthRefresh` diatur dalam sesi interaktif, Anda dapat menjalankan `/login`, memilih **3rd-party platform**, lalu memilih **Claude Platform on AWS · refresh credentials** di bawah **Using 3rd-party platforms** untuk menjalankan perintah yang sama tanpa memulai ulang Claude Code. Lihat [Mengonfigurasi kredensial AWS](/docs/id/claude-platform-on-aws#1-configure-aws-credentials)

1584* Jika kesalahan berulang setelah perintah penyegaran berhasil, konfirmasi identitas valid di luar Claude Code dengan `aws sts get-caller-identity` di shell dan profil yang sama1595* Jika kesalahan berulang setelah perintah pembaruan berhasil, pastikan identitas valid di luar Claude Code dengan `aws sts get-caller-identity` di shell dan profil yang sama

1585 1596 

1586<h3 id="aws-authentication-failed">1597<h3 id="aws-authentication-failed">

1587 Autentikasi AWS gagal1598 Autentikasi AWS gagal


1589 1600 

1590Penyedia AWS Anda mengembalikan 403, atau [Amazon Bedrock](/docs/id/amazon-bedrock) mengembalikan 401.1601Penyedia AWS Anda mengembalikan 403, atau [Amazon Bedrock](/docs/id/amazon-bedrock) mengembalikan 401.

1591 1602 

1592Amazon Bedrock melaporkan token keamanan yang kedaluwarsa sebagai 403, tetapi 403 juga merupakan cara itu melaporkan penolakan otorisasi, seperti `AccessDeniedException` dari izin IAM yang hilang. Claude Code tidak dapat membedakan kedua penyebab itu.1603Amazon Bedrock melaporkan token keamanan yang kedaluwarsa sebagai 403, tetapi 403 juga merupakan cara Amazon Bedrock melaporkan penolakan otorisasi, seperti `AccessDeniedException` karena izin IAM yang tidak ada. Claude Code tidak dapat membedakan kedua penyebab tersebut.

1593 1604 

1594401 dari Amazon Bedrock juga mendarat di sini daripada di bawah [Kredensial AWS kedaluwarsa atau tidak valid](#aws-credentials-expired-or-invalid), karena Amazon Bedrock tidak melaporkan token yang kedaluwarsa sebagai 401. 401 dari titik akhir itu biasanya berasal dari sesuatu yang lain dalam jalur permintaan, seperti proxy perusahaan.1605401 dari Amazon Bedrock juga masuk ke sini alih-alih ke [Kredensial AWS kedaluwarsa atau tidak valid](#aws-credentials-expired-or-invalid), karena Amazon Bedrock tidak melaporkan token yang kedaluwarsa sebagai 401. 401 dari endpoint tersebut biasanya berasal dari hal lain di jalur permintaan, seperti proxy perusahaan.

1595 1606 

1596Penyegaran kredensial memperbaiki token yang kedaluwarsa dan tidak dapat memperbaiki penyebab lainnya, jadi pesan menawarkan keduanya:1607Pembaruan kredensial memperbaiki token yang kedaluwarsa dan tidak dapat memperbaiki penyebab lainnya, sehingga pesan menawarkan keduanya:

1597 1608 

1598```text theme={null}1609```text theme={null}

1599AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...1610AWS authentication failed · run /login and select "Claude Platform on AWS · refresh credentials", or run `aws sso login --profile myprofile` in another terminal · if credentials are current, check AWS permissions and model access · API Error: 403 ...

1600```1611```

1601 1612 

1602Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `AWS authentication failed` terkemuka.1613Petunjuk tindakan di bagian tengah bervariasi sesuai penyiapan Anda. Bagian yang tetap adalah `AWS authentication failed` di awal.

1603 1614 

1604Ketika 403 adalah jawaban Amazon Bedrock bahwa Anda tidak memiliki akses ke model dengan ID model yang ditentukan, petunjuk sebagai gantinya memberi tahu Anda untuk mengaktifkan model untuk akun dan wilayah Anda di konsol Amazon Bedrock.1615Ketika 403 tersebut adalah jawaban Amazon Bedrock bahwa Anda tidak memiliki akses ke model dengan ID model yang ditentukan, petunjuknya justru meminta Anda untuk mengaktifkan model untuk akun dan region Anda di konsol Amazon Bedrock.

1605 1616 

1606Sebelum v2.1.273, pesan ini muncul hanya ketika `awsAuthRefresh` dikonfigurasi.1617Sebelum v2.1.273, pesan ini hanya muncul ketika `awsAuthRefresh` dikonfigurasi.

1607 1618 

1608**Yang harus dilakukan:**1619**Yang harus dilakukan:**

1609 1620 

1610* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1621* Jika petunjuk menyebutkan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1611* Segarkan kredensial AWS Anda jika kredensial yang kedaluwarsa mungkin menjadi penyebabnya: jalankan perintah [`awsAuthRefresh`](/docs/id/amazon-bedrock#advanced-credential-configuration) yang dinamai dalam pesan ketika satu diatur, atau segarkan masuk SSO, kunci akses, kunci API, atau token proxy Anda sendiri1622* Perbarui kredensial AWS Anda untuk berjaga-jaga jika kredensial yang kedaluwarsa adalah penyebabnya: jalankan perintah [`awsAuthRefresh`](/docs/id/amazon-bedrock#advanced-credential-configuration) yang disebutkan dalam pesan jika ada, atau perbarui sendiri login SSO, access key, kunci API, atau token proxy Anda

1612* Jika kredensial Anda saat ini, konfirmkan izin IAM dalam [Konfigurasi IAM](/docs/id/amazon-bedrock#iam-configuration) dilampirkan ke identitas yang Anda gunakan dan model yang dipilih diaktifkan untuk akun dan wilayah Anda1623* Jika kredensial Anda masih berlaku, pastikan izin IAM di [Konfigurasi IAM](/docs/id/amazon-bedrock#iam-configuration) terpasang pada identitas yang Anda gunakan dan bahwa model yang dipilih diaktifkan untuk akun dan region Anda

1613* Jalankan `aws sts get-caller-identity` untuk mengonfirmasi identitas mana yang digunakan permintaan Anda1624* Jalankan `aws sts get-caller-identity` untuk memastikan identitas mana yang digunakan permintaan Anda

1614 1625 

1615<h3 id="google-cloud-credentials-expired-or-invalid">1626<h3 id="google-cloud-credentials-expired-or-invalid">

1616 Kredensial Google Cloud kedaluwarsa atau tidak valid1627 Kredensial Google Cloud kedaluwarsa atau tidak valid

1617</h3>1628</h3>

1618 1629 

1619Kredensial Google Cloud Anda untuk [Platform Agen Google Cloud](/docs/id/google-vertex-ai) kedaluwarsa atau ditolak: permintaan mengembalikan 401, yang merupakan cara Platform Agen melaporkan kedaluwarsa kredensial.1630Kredensial Google Cloud Anda untuk [Agent Platform milik Google Cloud](/docs/id/google-vertex-ai) telah kedaluwarsa atau ditolak: permintaan mengembalikan 401, yang merupakan cara Agent Platform melaporkan kedaluwarsanya kredensial.

1620 1631 

1621Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `Google Cloud credentials expired or invalid` terkemuka:1632Petunjuk tindakan di bagian tengah bervariasi sesuai penyiapan Anda. Bagian yang tetap adalah `Google Cloud credentials expired or invalid` di awal:

1622 1633 

1623```text theme={null}1634```text theme={null}

1624Google Cloud credentials expired or invalid · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · API Error: 401 ...1635Google Cloud credentials expired or invalid · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · API Error: 401 ...


1626 1637 

1627**Yang harus dilakukan:**1638**Yang harus dilakukan:**

1628 1639 

1629* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1640* Jika petunjuk menyebutkan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1630* Jika Anda autentikasi dengan kredensial default aplikasi, jalankan perintah [`gcpAuthRefresh`](/docs/id/google-vertex-ai#advanced-credential-configuration) yang dinamai dalam pesan, atau `gcloud auth application-default login`, dan selesaikan masuk, kemudian coba ulang1641* Jika Anda melakukan autentikasi dengan application default credentials, jalankan perintah [`gcpAuthRefresh`](/docs/id/google-vertex-ai#advanced-credential-configuration) yang disebutkan dalam pesan, atau `gcloud auth application-default login`, dan selesaikan proses masuk, lalu coba lagi

1631* Jika Anda merutekan melalui [gateway LLM](/docs/id/llm-gateway) dengan `CLAUDE_CODE_SKIP_VERTEX_AUTH` diatur, segarkan token gateway dalam `ANTHROPIC_AUTH_TOKEN` atau `ANTHROPIC_CUSTOM_HEADERS`, kemudian coba ulang1642* Jika Anda merutekan melalui [LLM gateway](/docs/id/llm-gateway) dengan `CLAUDE_CODE_SKIP_VERTEX_AUTH` diatur, perbarui token gateway di `ANTHROPIC_AUTH_TOKEN` atau `ANTHROPIC_CUSTOM_HEADERS`, lalu coba lagi

1632* Jika Anda autentikasi dengan file kunci akun layanan, konfirmkan `GOOGLE_APPLICATION_CREDENTIALS` menunjuk ke kunci yang valid. Lihat [Konfigurasi kredensial GCP](/docs/id/google-vertex-ai#3-configure-gcp-credentials)1643* Jika Anda melakukan autentikasi dengan file kunci service account, pastikan `GOOGLE_APPLICATION_CREDENTIALS` mengarah ke kunci yang valid. Lihat [Mengonfigurasi kredensial GCP](/docs/id/google-vertex-ai#3-configure-gcp-credentials)

1633* Jika kesalahan berulang setelah penyegaran, konfirmkan identitas bekerja di luar Claude Code dengan `gcloud auth application-default print-access-token` di shell yang sama1644* Jika kesalahan berulang setelah pembaruan, pastikan identitas berfungsi di luar Claude Code dengan `gcloud auth application-default print-access-token` di shell yang sama

1634 1645 

1635Sebelum v2.1.273, 401 dari Platform Agen menampilkan pesan `Please run /login` atau `Failed to authenticate` generik sebagai gantinya, yang tidak dapat menyegarkan kredensial Google Cloud.1646Sebelum v2.1.273, 401 dari Agent Platform menampilkan pesan generik `Please run /login` atau `Failed to authenticate`, yang tidak dapat memperbarui kredensial Google Cloud.

1636 1647 

1637<h3 id="google-cloud-authentication-failed">1648<h3 id="google-cloud-authentication-failed">

1638 Autentikasi Google Cloud gagal1649 Autentikasi Google Cloud gagal

1639</h3>1650</h3>

1640 1651 

1641[Platform Agen Google Cloud](/docs/id/google-vertex-ai) mengembalikan 403, yang digunakan untuk penolakan otorisasi daripada kredensial yang kedaluwarsa. Biasanya identitas yang Anda autentikasi dengan hilang izin IAM, atau model tidak diaktifkan untuk proyek Anda.1652[Agent Platform milik Google Cloud](/docs/id/google-vertex-ai) mengembalikan 403, yang digunakannya untuk penolakan otorisasi, bukan untuk kredensial yang kedaluwarsa. Biasanya identitas yang Anda gunakan untuk autentikasi tidak memiliki izin IAM, atau model tidak diaktifkan untuk proyek Anda.

1642 1653 

1643Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `Google Cloud authentication failed` terkemuka:1654Petunjuk tindakan di bagian tengah bervariasi sesuai penyiapan Anda. Bagian yang tetap adalah `Google Cloud authentication failed` di awal:

1644 1655 

1645```text theme={null}1656```text theme={null}

1646Google Cloud authentication failed · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · if credentials are current, check GCP IAM permissions and Vertex AI model access · API Error: 403 ...1657Google Cloud authentication failed · refresh your Google Cloud credentials (application default sign-in, or the key file in GOOGLE_APPLICATION_CREDENTIALS) and retry · if credentials are current, check GCP IAM permissions and Vertex AI model access · API Error: 403 ...


1648 1659 

1649**Yang harus dilakukan:**1660**Yang harus dilakukan:**

1650 1661 

1651* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1662* Jika petunjuk menyebutkan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1652* Konfirmkan peran dalam [Konfigurasi IAM](/docs/id/google-vertex-ai#iam-configuration) diberikan kepada identitas yang Anda autentikasi dengan1663* Pastikan peran di [Konfigurasi IAM](/docs/id/google-vertex-ai#iam-configuration) diberikan kepada identitas yang Anda gunakan untuk autentikasi

1653* Konfirmkan model diaktifkan untuk proyek Anda. Lihat [Minta akses model](/docs/id/google-vertex-ai#2-request-model-access)1664* Pastikan model diaktifkan untuk proyek Anda. Lihat [Meminta akses model](/docs/id/google-vertex-ai#2-request-model-access)

1654 1665 

1655Sebelum v2.1.273, 403 dari Platform Agen menampilkan pesan `Please run /login` atau `Failed to authenticate` generik sebagai gantinya, yang tidak dapat menyegarkan kredensial Google Cloud.1666Sebelum v2.1.273, 403 dari Agent Platform menampilkan pesan generik `Please run /login` atau `Failed to authenticate`, yang tidak dapat memperbarui kredensial Google Cloud.

1656 1667 

1657<h3 id="microsoft-foundry-authentication-failed">1668<h3 id="microsoft-foundry-authentication-failed">

1658 Autentikasi Microsoft Foundry gagal1669 Autentikasi Microsoft Foundry gagal

1659</h3>1670</h3>

1660 1671 

1661[Microsoft Foundry](/docs/id/microsoft-foundry) mengembalikan 401 atau 403: kredensial Azure pada permintaan ditolak, atau identitas di baliknya tidak memiliki akses ke sumber daya Foundry. `/login` tidak dapat mencetak kredensial Azure. Petunjuk tindakan di tengah bervariasi dengan pengaturan Anda. Bagian yang stabil adalah `Microsoft Foundry authentication failed` terkemuka:1672[Microsoft Foundry](/docs/id/microsoft-foundry) mengembalikan 401 atau 403: kredensial Azure pada permintaan ditolak, atau identitas di baliknya tidak memiliki akses ke sumber daya Foundry. `/login` tidak dapat membuat kredensial Azure. Petunjuk tindakan di bagian tengah bervariasi sesuai pengaturan Anda. Bagian yang tetap adalah awalan `Microsoft Foundry authentication failed`:

1662 1673 

1663```text theme={null}1674```text theme={null}

1664Microsoft Foundry authentication failed · refresh your Foundry credential (ANTHROPIC_FOUNDRY_AUTH_TOKEN, ANTHROPIC_FOUNDRY_API_KEY, Azure sign-in for Entra, or your proxy token) and retry · if credentials are current, check access to the Foundry resource · API Error: 401 ...1675Microsoft Foundry authentication failed · refresh your Foundry credential (ANTHROPIC_FOUNDRY_AUTH_TOKEN, ANTHROPIC_FOUNDRY_API_KEY, Azure sign-in for Entra, or your proxy token) and retry · if credentials are current, check access to the Foundry resource · API Error: 401 ...


1666 1677 

1667**Yang harus dilakukan:**1678**Yang harus dilakukan:**

1668 1679 

1669* Jika petunjuk mengatakan kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial dan langkah lain di sini tidak berlaku: coba ulang, atau hubungi administrator Anda1680* Jika petunjuk menyatakan bahwa kredensial dikelola oleh lingkungan ini, aplikasi yang meluncurkan Claude Code memiliki kredensial tersebut dan langkah-langkah lain di sini tidak berlaku: coba lagi, atau hubungi administrator Anda

1670* Segarkan kredensial yang Anda konfigurasikan dalam [Konfigurasi kredensial Azure](/docs/id/microsoft-foundry#2-configure-azure-credentials): putar `ANTHROPIC_FOUNDRY_API_KEY`, cetak `ANTHROPIC_FOUNDRY_AUTH_TOKEN` baru, atau jalankan `az login` sehingga rantai kredensial Microsoft Entra default dapat masuk lagi1681* Perbarui kredensial yang Anda konfigurasikan di [Konfigurasikan kredensial Azure](/docs/id/microsoft-foundry#2-configure-azure-credentials): rotasi `ANTHROPIC_FOUNDRY_API_KEY`, buat `ANTHROPIC_FOUNDRY_AUTH_TOKEN` yang baru, atau jalankan `az login` agar rantai kredensial Microsoft Entra default dapat masuk kembali

1671* Jika kredensial saat ini, konfirmkan identitas memiliki akses ke sumber daya Foundry. Lihat [Konfigurasi Azure RBAC](/docs/id/microsoft-foundry#azure-rbac-configuration)1682* Jika kredensial masih berlaku, pastikan identitas tersebut memiliki akses ke sumber daya Foundry. Lihat [Konfigurasi Azure RBAC](/docs/id/microsoft-foundry#azure-rbac-configuration)

1672 1683 

1673Sebelum v2.1.273, 401 atau 403 dari Microsoft Foundry menampilkan pesan `Please run /login` atau `Failed to authenticate` generik sebagai gantinya, yang tidak dapat menyegarkan kredensial Azure.1684Sebelum v2.1.273, 401 atau 403 dari Microsoft Foundry menampilkan pesan generik `Please run /login` atau `Failed to authenticate`, yang tidak dapat memperbarui kredensial Azure.

1674 1685 

1675<h3 id="could-not-load-aws-or-google-cloud-credentials">1686<h3 id="could-not-load-aws-or-google-cloud-credentials">

1676 Tidak dapat memuat kredensial AWS atau Google Cloud1687 Tidak dapat memuat kredensial AWS atau Google Cloud

1677</h3>1688</h3>

1678 1689 

1679Claude Code tidak dapat memperoleh kredensial yang dapat digunakan dari rantai penyedia kredensial AWS atau dari kredensial default aplikasi Google Anda di mesin tempat itu berjalan, jadi tidak ada permintaan yang mencapai penyedia cloud Anda. Claude Code menghapus kredensial yang disimpan dalam cache dan mencoba ulang dua kali sebelum menampilkan pesan ini. Detail setelah `·` menamai penyebab spesifik, seperti sesi SSO yang kedaluwarsa, kredensial default aplikasi yang hilang dilaporkan sebagai `Could not load the default credentials`, atau masuk yang dicabut dilaporkan sebagai `invalid_grant`:1690Claude Code tidak dapat memperoleh kredensial yang dapat digunakan dari rantai penyedia kredensial AWS atau dari kredensial default aplikasi Google Anda di mesin tempat Claude Code berjalan, sehingga tidak ada permintaan yang mencapai penyedia cloud Anda. Claude Code menghapus kredensial yang di-cache dan mencoba ulang dua kali sebelum menampilkan pesan ini. Detail setelah `·` menyebutkan penyebab spesifiknya, seperti sesi SSO yang kedaluwarsa, kredensial default aplikasi yang tidak ada yang dilaporkan sebagai `Could not load the default credentials`, atau proses masuk yang dicabut yang dilaporkan sebagai `invalid_grant`:

1680 1691 

1681```text theme={null}1692```text theme={null}

1682API Error: Could not load AWS credentials · Could not load credentials from any providers. Check or refresh your AWS credentials and try again.1693API Error: Could not load AWS credentials · Could not load credentials from any providers. Check or refresh your AWS credentials and try again.

1683API Error: Could not load Google Cloud credentials · invalid_grant. Check or refresh your Google Cloud credentials and try again.1694API Error: Could not load Google Cloud credentials · invalid_grant. Check or refresh your Google Cloud credentials and try again.

1684```1695```

1685 1696 

1686Dalam [mode non-interaktif](/docs/id/headless) dengan `-p` dan dalam [Agent SDK](/docs/id/agent-sdk/overview), kode kesalahan terstruktur adalah `cloud_credential_error`. Sebelum v2.1.267, pesan hanya menampilkan teks detail setelah `API Error:`, dan kode terstruktur adalah `server_error` atau `unknown`.1697Dalam [mode non-interaktif](/docs/id/headless) dengan `-p` dan di [Agent SDK](/docs/id/agent-sdk/overview), kode kesalahan terstrukturnya adalah `cloud_credential_error`. Sebelum v2.1.267, pesan hanya menampilkan teks detail setelah `API Error:`, dan kode terstrukturnya adalah `server_error` atau `unknown`.

1687 1698 

1688**Yang harus dilakukan:**1699**Yang harus dilakukan:**

1689 1700 

1690* Jalankan perintah masuk penyedia Anda, seperti `aws sso login --profile myprofile` atau `gcloud auth application-default login`, kemudian coba ulang. [Kredensial Bedrock, Platform Agen, atau Foundry tidak memuat](/docs/id/troubleshoot-install#bedrock-agent-platform-or-foundry-credentials-not-loading) menunjukkan cara mengonfirmasi kredensial di luar Claude Code1701* Jalankan perintah masuk penyedia Anda, seperti `aws sso login --profile myprofile` atau `gcloud auth application-default login`, lalu coba lagi. [Kredensial Bedrock, Agent Platform, atau Foundry tidak termuat](/docs/id/troubleshoot-install#bedrock-agent-platform-or-foundry-credentials-not-loading) menunjukkan cara memverifikasi kredensial di luar Claude Code

1691* Jika detail membaca `AWS default-chain credential resolve timed out`, rantai tergantung daripada gagal, jadi ikuti [Resolusi kredensial rantai default AWS habis waktu](#aws-default-chain-credential-resolve-timed-out) sebagai gantinya1702* Jika detailnya berbunyi `AWS default-chain credential resolve timed out`, rantai tersebut macet alih-alih gagal, jadi ikuti [Resolusi kredensial rantai default AWS mengalami timeout](#aws-default-chain-credential-resolve-timed-out) sebagai gantinya

1692 1703 

1693<h3 id="aws-default-chain-credential-resolve-timed-out">1704<h3 id="aws-default-chain-credential-resolve-timed-out">

1694 Resolusi kredensial rantai default AWS habis waktu1705 Resolusi kredensial rantai default AWS mengalami timeout

1695</h3>1706</h3>

1696 1707 

1697Rantai penyedia kredensial default AWS tidak menghasilkan kredensial dalam 60 detik, jadi Claude Code menghentikan resolusi dan gagal permintaan. Timeout ini adalah satu penyebab [Tidak dapat memuat kredensial AWS atau Google Cloud](#could-not-load-aws-or-google-cloud-credentials). Kegagalan adalah resolusi kredensial lokal: permintaan tidak pernah mencapai [Amazon Bedrock](/docs/id/amazon-bedrock), [Claude Platform di AWS](/docs/id/claude-platform-on-aws), atau [titik akhir Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint). Claude Code menghapus [cache kredensial](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout) dan mencoba ulang sebelum kesalahan ini muncul, jadi pada saat Anda melihatnya rantai telah macet pada upaya berulang.1708Rantai penyedia kredensial default AWS tidak menghasilkan kredensial dalam 60 detik, sehingga Claude Code menghentikan resolusi dan menggagalkan permintaan. Timeout ini adalah salah satu penyebab [Tidak dapat memuat kredensial AWS atau Google Cloud](#could-not-load-aws-or-google-cloud-credentials). Kegagalan ini terjadi pada resolusi kredensial lokal: permintaan tidak pernah mencapai [Amazon Bedrock](/docs/id/amazon-bedrock), [Claude Platform on AWS](/docs/id/claude-platform-on-aws), atau [endpoint Mantle](/docs/id/amazon-bedrock#use-the-mantle-endpoint). Claude Code menghapus [cache kredensial](/docs/id/amazon-bedrock#credential-caching-and-resolution-timeout) dan mencoba ulang sebelum kesalahan ini muncul, sehingga saat Anda melihatnya, rantai tersebut telah macet pada beberapa percobaan berulang.

1698 1709 

1699```text theme={null}1710```text theme={null}

1700API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again.1711API Error: Could not load AWS credentials · AWS default-chain credential resolve timed out. Check or refresh your AWS credentials and try again.

1701```1712```

1702 1713 

1703Penyebab umum adalah perintah `credential_process` dalam profil AWS Anda yang menunggu input yang tidak dapat diterima, dan kontainer atau VM yang instance metadata service (IMDS)-nya tidak pernah menjawab probe rantai.1714Penyebab umumnya adalah perintah `credential_process` di profil AWS Anda yang menunggu input yang tidak dapat diterimanya, serta container atau VM yang layanan metadata instance-nya (IMDS) tidak pernah menjawab probe dari rantai tersebut.

1704 1715 

1705Sebelum v2.1.267, pesan berbunyi `API Error: AWS default-chain credential resolve timed out`.1716Sebelum v2.1.267, pesannya berbunyi `API Error: AWS default-chain credential resolve timed out`.

1706Sebelum v2.1.207, rantai yang macet meninggalkan permintaan menunggu tanpa batas waktu daripada gagal.1717Sebelum v2.1.207, rantai yang macet membuat permintaan menunggu tanpa batas alih-alih gagal.

1707 1718 

1708**Yang harus dilakukan:**1719**Yang harus dilakukan:**

1709 1720 

1710* Jalankan `aws sts get-caller-identity` di shell yang sama dengan `AWS_PROFILE` yang sama. Jika juga tergantung, perbaiki profil; perintah `credential_process` yang meminta secara interaktif adalah penyebab umum.1721* Jalankan `aws sts get-caller-identity` di shell yang sama dengan `AWS_PROFILE` yang sama. Jika perintah itu juga macet, perbaiki profilnya; perintah `credential_process` yang meminta input secara interaktif adalah penyebab umum.

1711* Selesaikan langkah masuk sebelum memulai Claude Code, misalnya `aws sso login --profile myprofile`, sehingga rantai diselesaikan dari cache SSO lokal daripada menunggu alur browser1722* Selesaikan langkah masuk sebelum memulai Claude Code, misalnya `aws sso login --profile myprofile`

1712* Jika rantai Anda menjalankan masuk interaktif yang secara sah memerlukan lebih dari 60 detik, seperti SSO dengan MFA melalui pembungkus seperti `aws-vault`, naikkan batas dalam milidetik dengan [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars)1723* Jika rantai Anda menjalankan proses masuk interaktif yang memang membutuhkan lebih dari 60 detik, seperti SSO dengan MFA melalui wrapper seperti `aws-vault`, naikkan batasnya dalam milidetik dengan [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars)

1713 1724 

1714<h3 id="bedrock-setup-verification-timed-out-waiting-for-aws">1725<h3 id="bedrock-setup-verification-timed-out-waiting-for-aws">

1715 Verifikasi pengaturan Bedrock habis waktu menunggu AWS1726 Verifikasi penyiapan Bedrock mengalami timeout saat menunggu AWS

1716</h3>1727</h3>

1717 1728 

1718Panggilan ke AWS selama [wizard pengaturan Bedrock](/docs/id/amazon-bedrock#sign-in-with-bedrock), seperti pencarian kredensial atau pemeriksaan identitas, tidak selesai dalam batas 60 detik. Wizard berhenti menunggu dan gagal langkah verifikasi:1729Panggilan ke AWS selama verifikasi kredensial di [wizard penyiapan Bedrock](/docs/id/amazon-bedrock#sign-in-with-bedrock), seperti pencarian kredensial atau pemeriksaan identitas, tidak selesai dalam batas 60 detik. Wizard berhenti menunggu dan menggagalkan langkah verifikasi:

1719 1730 

1720```text theme={null}1731```text theme={null}

1721Timed out after 60s waiting for AWS. Check your network and proxy settings; if a credential helper needs longer to prompt you, raise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS.1732Timed out after 60s waiting for AWS. Check your network and proxy settings; if a credential helper needs longer to prompt you, raise CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS.

1722```1733```

1723 1734 

1724Angka mencerminkan batas Anda: 60 detik secara default, atau nilai yang Anda atur dalam [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars).1735Angka tersebut mencerminkan batas Anda: 60 detik secara default, atau nilai yang Anda tetapkan di [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars).

1725 1736 

1726Penyebab umum adalah jaringan atau proxy yang macet permintaan ke AWS, termasuk penyegaran token SSO, dan helper kredensial masih menunggu input yang tidak dapat Anda lihat. Naikkan batas hanya ketika helper secara sah memerlukan lebih banyak waktu.1737Penyebab umumnya adalah jaringan atau proxy yang menahan permintaan ke AWS, termasuk pembaruan token SSO, serta credential helper yang masih menunggu input yang tidak dapat Anda lihat. Naikkan batas hanya jika helper tersebut memang membutuhkan waktu lebih lama.

1727 1738 

1728Permintaan tunggal yang macet ke AWS juga dapat gagal pada timeout per-permintaan-nya sendiri, yang menampilkan pesan yang lebih pendek pada langkah yang sama:1739Satu permintaan ke AWS yang macet juga dapat gagal karena timeout per permintaannya sendiri, yang menampilkan pesan lebih singkat pada langkah yang sama:

1729 1740 

1730```text theme={null}1741```text theme={null}

1731A request to AWS timed out. Check your network and proxy settings, then try again.1742A request to AWS timed out. Check your network and proxy settings, then try again.

1732```1743```

1733 1744 

1734Ketika timeout yang sama terjadi pada langkah pin model, wizard menandai model sebagai `unreachable` daripada menampilkan pesan apa pun.1745Ketika timeout yang sama terjadi pada langkah penyematan model, wizard menandai model sebagai `unreachable` alih-alih menampilkan salah satu pesan tersebut.

1735 1746 

1736**Yang harus dilakukan:**1747**Yang harus dilakukan:**

1737 1748 

1738* Jalankan `aws sts get-caller-identity` di shell yang sama. Jika juga tergantung, macet ada di luar Claude Code, di jaringan Anda, proxy Anda, atau helper kredensial dalam profil AWS Anda; perbaiki itu terlebih dahulu.1749* Jalankan `aws sts get-caller-identity` di shell yang sama. Jika perintah itu juga macet, kemacetan berada di luar Claude Code, yaitu di jaringan Anda, proxy Anda, atau credential helper di profil AWS Anda; perbaiki itu terlebih dahulu.

1739* Selesaikan masuk interaktif apa pun sebelum membuka wizard, misalnya `aws sso login --profile myprofile`1750* Selesaikan proses masuk interaktif apa pun sebelum membuka wizard, misalnya `aws sso login --profile myprofile`

1740* Jika helper kredensial dalam profil AWS Anda secara sah memerlukan lebih lama dari 60 detik untuk meminta Anda, naikkan batas dalam milidetik dengan [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars)1751* Jika credential helper di profil AWS Anda memang membutuhkan lebih dari 60 detik untuk meminta input Anda, naikkan batasnya dalam milidetik dengan [`CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS`](/docs/id/env-vars)

1741 1752 

1742<h3 id="cloud-gateway-session-expired">1753<h3 id="cloud-gateway-session-expired">

1743 Sesi gateway cloud kedaluwarsa1754 Sesi cloud gateway kedaluwarsa

1744</h3>1755</h3>

1745 1756 

1746Anda masuk melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway), dan sesi gateway yang disimpan di mesin ini kedaluwarsa dan tidak dapat diperbarui, atau gateway tidak lagi menerimanya, misalnya setelah [rahasia JWT gateway diganti](/docs/id/claude-apps-gateway-deploy#jwt-secret-rotation). Jika Anda melihat baris ini ketika memulai `claude` secara interaktif, sesi telah dibuka tanpa masuk ke gateway:1757Anda masuk melalui [Claude apps gateway](/docs/id/claude-apps-gateway), dan sesi gateway yang tersimpan di mesin ini telah kedaluwarsa dan tidak dapat diperbarui, atau gateway tidak lagi menerimanya, misalnya setelah [JWT secret gateway diganti](/docs/id/claude-apps-gateway-deploy#jwt-secret-rotation). Jika Anda melihat baris ini saat memulai `claude` secara interaktif, sesi telah dibuka dalam keadaan keluar dari gateway:

1747 1758 

1748```text theme={null}1759```text theme={null}

1749Cloud gateway session expired — run /login to reconnect.1760Cloud gateway session expired — run /login to reconnect.

1750```1761```

1751 1762 

1752Baris yang sama dapat muncul di tengah sesi ketika kredensial gateway kedaluwarsa dan Claude Code tidak dapat memperbarui.1763Baris yang sama dapat muncul di tengah sesi ketika kredensial gateway kedaluwarsa dan Claude Code tidak dapat memperbaruinya.

1753 1764 

1754Dalam jalankan [non-interaktif](/docs/id/headless), sesi latar belakang atau sesi lain yang tidak diawasi, atau subperintah `claude` selain `claude auth`, Claude Code keluar dengan pesan ini sebagai gantinya ketika gateway tidak lagi menerima sesi:1765Dalam eksekusi [non-interaktif](/docs/id/headless), sesi latar belakang atau sesi tanpa pengawasan lainnya, atau subperintah `claude` selain `claude auth`, Claude Code keluar dengan pesan ini sebagai gantinya ketika gateway tidak lagi menerima sesi tersebut:

1755 1766 

1756```text theme={null}1767```text theme={null}

1757Cloud gateway <url> no longer accepts this session. Start `claude` and sign in again with /login.1768Cloud gateway <url> no longer accepts this session. Start `claude` and sign in again with /login.


1759 1770 

1760**Yang harus dilakukan:**1771**Yang harus dilakukan:**

1761 1772 

1762* Jalankan `/login` dalam sesi dan selesaikan masuk browser1773* Jalankan `/login` di sesi tersebut dan selesaikan proses masuk melalui browser

1763* Untuk peluncuran non-interaktif, mulai `claude` di lingkungan yang sama, jalankan `/login`, kemudian jalankan kembali perintah Anda1774* Untuk peluncuran non-interaktif, mulai `claude` di lingkungan yang sama, jalankan `/login`, lalu jalankan ulang perintah Anda

1764 1775 

1765<h3 id="sign-in-timed-out-while-waiting-for-you-to-continue">1776<h3 id="sign-in-timed-out-while-waiting-for-you-to-continue">

1766 Masuk habis waktu saat menunggu Anda untuk melanjutkan1777 Proses masuk mengalami timeout saat menunggu Anda melanjutkan

1767</h3>1778</h3>

1768 1779 

1769Selama masuk [gateway aplikasi Claude](/docs/id/claude-apps-gateway), gateway menamai akun yang masuk, dan Claude Code meminta Anda untuk mengonfirmasinya sebelum menyimpan kredensial. Anda meninggalkan konfirmasi terbuka melampaui kedaluwarsa masuk itu sendiri, dan gateway tidak mengeluarkan token penyegaran yang dapat memperbarui, jadi Claude Code tidak menyimpan apa pun ketika Anda melanjutkan:1780Selama proses masuk [Claude apps gateway](/docs/id/claude-apps-gateway), gateway menyebutkan akun yang masuk, dan Claude Code meminta Anda mengonfirmasinya sebelum menyimpan kredensial. Anda membiarkan konfirmasi terbuka melewati masa berlaku proses masuk itu sendiri, dan gateway tidak menerbitkan refresh token yang dapat memperbaruinya, sehingga Claude Code tidak menyimpan apa pun saat Anda melanjutkan:

1770 1781 

1771```text theme={null}1782```text theme={null}

1772Sign-in timed out while waiting for you to continue. Try again.1783Sign-in timed out while waiting for you to continue. Try again.


1774 1785 

1775**Yang harus dilakukan:**1786**Yang harus dilakukan:**

1776 1787 

1777* Jalankan `/login` lagi dan konfirmkan akun sebelum masuk kedaluwarsa1788* Jalankan `/login` lagi dan konfirmasikan akun sebelum proses masuk kedaluwarsa

1778 1789 

1779<h3 id="gateway-refused-the-request">1790<h3 id="gateway-refused-the-request">

1780 Gateway menolak permintaan1791 Gateway menolak permintaan

1781</h3>1792</h3>

1782 1793 

1783Anda masuk melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway), dan permintaan mengembalikan 403: gateway, atau upstream di baliknya, menolaknya. Masuk lagi tidak mengubah penolakan, jadi pesan menunjuk ke administrator gateway Anda:1794Anda masuk melalui [Claude apps gateway](/docs/id/claude-apps-gateway), dan sebuah permintaan mengembalikan 403: gateway, atau upstream di belakangnya, menolaknya. Masuk kembali tidak mengubah penolakan, sehingga pesan tersebut mengarahkan Anda ke administrator gateway Anda:

1784 1795 

1785```text theme={null}1796```text theme={null}

1786Gateway refused the request · signing in again won't change this — check with your gateway administrator · API Error: 403 ...1797Gateway refused the request · signing in again won't change this — check with your gateway administrator · API Error: 403 ...


1788 1799 

1789**Yang harus dilakukan:**1800**Yang harus dilakukan:**

1790 1801 

1791* Minta administrator gateway Anda untuk mencari permintaan. Ekor `API Error:` membawa penolakan yang dikembalikan gateway1802* Minta administrator gateway Anda untuk menelusuri permintaan tersebut. Bagian akhir `API Error:` memuat penolakan yang dikembalikan gateway

1792* Untuk administrator: aturan [kontrol akses](/docs/id/claude-apps-gateway-config#http-tuning) pada gateway mengembalikan 403 yang dicatat [log audit](/docs/id/claude-apps-gateway-deploy#logs) dengan alasannya, dan penolakan otorisasi upstream melewati per [Pesan kesalahan Upstream](/docs/id/claude-apps-gateway-config#upstream-error-messages)1803* Untuk administrator: [aturan kontrol akses](/docs/id/claude-apps-gateway-config#http-tuning) pada gateway mengembalikan 403 yang dicatat oleh [log audit](/docs/id/claude-apps-gateway-deploy#logs) beserta alasannya, dan penolakan otorisasi dari upstream diteruskan sesuai [Pesan kesalahan upstream](/docs/id/claude-apps-gateway-config#upstream-error-messages)

1793 1804 

1794Sebelum v2.1.273, 403 pada sesi gateway menampilkan pesan `Please run /login` atau `Failed to authenticate` generik sebagai gantinya, dan masuk lagi tidak menghapus penolakan.1805Sebelum v2.1.273, 403 pada sesi gateway menampilkan pesan generik `Please run /login` atau `Failed to authenticate`, dan masuk kembali tidak menghilangkan penolakan tersebut.

1795 1806 

1796<h2 id="network-and-connection-errors">1807<h2 id="network-and-connection-errors">

1797 Kesalahan jaringan dan koneksi1808 Kesalahan jaringan dan koneksi


2849* Jalankan `claude doctor` dari shell Anda untuk diagnostik instalasi2860* Jalankan `claude doctor` dari shell Anda untuk diagnostik instalasi

2850 2861 

2851<h2 id="command-line-errors">2862<h2 id="command-line-errors">

2852 Kesalahan command-line2863 Error baris perintah

2853</h2>2864</h2>

2854 2865 

2855Kesalahan ini berasal dari command line `claude` dan subcommand-nya, dari nama command yang Anda kirimkan di prompt, dan dari command seperti `/security-review` yang mengumpulkan konteks dengan menjalankan shell command sebelum prompt mereka berjalan. Mereka juga berasal dari `/tui`, yang meluncurkan kembali CLI.2866Error ini berasal dari baris perintah `claude` dan subperintahnya, dari nama perintah yang Anda kirimkan di prompt, dan dari perintah seperti `/security-review` yang mengumpulkan konteks dengan menjalankan perintah shell sebelum prompt-nya berjalan. Error ini juga berasal dari `/tui`, yang meluncurkan ulang CLI.

2856 2867 

2857<h3 id="conflict-between-bg-and-print">2868<h3 id="conflict-between-bg-and-print">

2858 Konflik antara `--bg` dan `--print`2869 Konflik antara `--bg` dan `--print`

2859</h3>2870</h3>

2860 2871 

2861Pesan ini memerlukan Claude Code v2.1.198 atau lebih baru. Anda menggabungkan `--bg` dengan `-p` atau `--print` dalam invokasi `claude` yang sama. `--bg` memulai [sesi background](/docs/id/agent-view#from-your-shell) yang kemudian Anda lampirkan dengan `claude agents`, sementara `--print` berjalan [non-interaktif](/docs/id/headless) dan tidak pernah memulai sesi interaktif yang `claude agents` lampirkan. Sebelum v2.1.198, kombinasi ini secara diam-diam membuat pekerjaan background yang tidak pernah bisa dilampirkan.2872Pesan ini memerlukan Claude Code v2.1.198 atau yang lebih baru. Anda menggabungkan `--bg` dengan `-p` atau `--print` dalam pemanggilan `claude` yang sama. `--bg` memulai [sesi latar belakang](/docs/id/agent-view#from-your-shell) yang nantinya Anda sambungkan dengan `claude agents`, sedangkan `--print` berjalan secara [non-interaktif](/docs/id/headless) dan tidak pernah memulai sesi interaktif yang disambungkan oleh `claude agents`. Sebelum v2.1.198, kombinasi ini secara diam-diam membuat pekerjaan latar belakang yang tidak pernah dapat disambungkan.

2873 

2874```text theme={null}

2875--bg and --print conflict: --print never starts the interactive session that `claude agents` attaches to, so the job would be unattachable. The prompt is the positional — drop --print: `claude --bg '<task>'`.

2876```

2877 

2878**Yang harus dilakukan:**

2879 

2880* Hapus `-p` atau `--print`. `--bg` menerima prompt sebagai argumen posisionalnya, sehingga `claude --bg "<task>"` adalah perintah yang lengkap. Lihat [Mengirim agent baru dari shell Anda](/docs/id/agent-view#from-your-shell).

2881* Untuk menjalankan prompt secara non-interaktif dan mencetak hasilnya alih-alih membuat sesi latar belakang, hapus `--bg` dan jalankan `claude -p "<task>"`

2882 

2883<h3 id="conflict-between-a-system-prompt-flag-and-its-file-form">

2884 Konflik antara flag system prompt dan bentuk file-nya

2885</h3>

2886 

2887Anda meneruskan [`--append-subagent-system-prompt`](/docs/id/cli-reference#cli-flags) bersama dengan `--append-subagent-system-prompt-file` dalam satu pemanggilan `claude`, sehingga `claude` keluar dengan kode 1 alih-alih memulai sesi:

2862 2888 

2863```text theme={null}2889```text theme={null}

2890Error: Cannot use both --append-subagent-system-prompt and --append-subagent-system-prompt-file. Please use only one.

2864```2891```

2865 2892 

2893Sebelum v2.1.283, `claude` keluar dengan cara yang sama ketika Anda meneruskan `--system-prompt` dengan `--system-prompt-file`, atau `--append-system-prompt` dengan `--append-system-prompt-file`, karena pasangan tersebut berkonflik alih-alih [digabungkan](/docs/id/cli-reference#system-prompt-flags). Pada versi tersebut, pesan menyebutkan pasangan yang Anda gabungkan.

2894 

2866**Yang harus dilakukan:**2895**Yang harus dilakukan:**

2867 2896 

2868* Hilangkan `-p` atau `--print`. `--bg` mengambil prompt sebagai argumen positional-nya, jadi `claude --bg "<task>"` adalah command lengkapnya. Lihat [Dispatch new agents from your shell](/docs/id/agent-view#from-your-shell).2897* Pertahankan satu bentuk flag dan hapus yang lainnya. Untuk menggabungkan file prompt tetap dengan teks per-run, gabungkan teks tersebut ke dalam file sebelum meluncurkan alih-alih meneruskan kedua flag

2869* Untuk menjalankan prompt non-interaktif dan mencetak hasilnya alih-alih membuat sesi background, hilangkan `--bg` dan jalankan `claude -p "<task>"`

2870 2898 

2871<h3 id="invalid-agents-configuration">2899<h3 id="invalid-agents-configuration">

2872 Konfigurasi `--agents` tidak valid2900 Konfigurasi `--agents` tidak valid

2873</h3>2901</h3>

2874 2902 

2875Nilai yang Anda berikan ke `--agents` tidak valid, jadi `claude` keluar dengan kode 1 alih-alih memulai sesi. Ketika Anda memberikan `--safe-mode` atau mengatur [`CLAUDE_CODE_SAFE_MODE`](/docs/id/env-vars#variables), Claude Code mengabaikan `--agents` sepenuhnya. Dengan `--resume` atau `--continue`, nilai JSON inline tidak diperiksa dan sesi dimulai; nilai yang dibaca dari file diperiksa pada setiap peluncuran. Sebelum v2.1.242, Claude Code memulai sesi bagaimanapun.2903Nilai yang Anda teruskan ke `--agents` tidak valid, sehingga `claude` keluar dengan kode 1 alih-alih memulai sesi. Ketika Anda meneruskan `--safe-mode` atau mengatur [`CLAUDE_CODE_SAFE_MODE`](/docs/id/env-vars#variables), Claude Code mengabaikan `--agents` sepenuhnya. Dengan `--resume` atau `--continue`, nilai JSON inline tidak diperiksa dan sesi dimulai; nilai yang dibaca dari file diperiksa pada setiap peluncuran. Sebelum v2.1.242, Claude Code tetap memulai sesi.

2876 2904 

2877```text theme={null}2905```text theme={null}

2878Error: Invalid --agents configuration:2906Error: Invalid --agents configuration:

2879<what failed>2907<what failed>

2880```2908```

2881 2909 

2882Apa yang mengikuti baris pertama tergantung pada bagaimana nilai gagal. Claude Code menjalankan pemeriksaan ini secara berurutan dan berhenti di yang pertama gagal. Jika nilai Anda memiliki dua jenis masalah, Anda hanya melihat yang kedua setelah Anda memperbaiki yang pertama:2910Apa yang mengikuti baris pertama bergantung pada bagaimana nilai tersebut gagal. Claude Code menjalankan pemeriksaan ini secara berurutan dan berhenti pada pemeriksaan pertama yang gagal. Jika nilai Anda memiliki dua jenis masalah, Anda baru melihat yang kedua setelah memperbaiki yang pertama:

2883 2911 

28841. Ketika nilai dimulai dengan `{` tetapi tidak diuraikan sebagai JSON, atau isi file `--agents` tidak diuraikan, Claude Code mencetak satu baris `invalid JSON:` yang membawa pesan parser JSON sendiri29121. Ketika nilai diawali dengan `{` tetapi tidak dapat di-parse sebagai JSON, atau isi file `--agents` tidak dapat di-parse, Claude Code mencetak satu baris `invalid JSON:` yang memuat pesan dari parser JSON itu sendiri

28852. Ketika diuraikan tetapi definisi agent tidak cocok dengan skema untuk [subagent yang ditentukan CLI](/docs/id/sub-agents#choose-the-subagent-scope), Claude Code mencetak satu baris per masalah29132. Ketika nilai dapat di-parse tetapi definisi agent tidak cocok dengan skema untuk [subagent yang didefinisikan melalui CLI](/docs/id/sub-agents#choose-the-subagent-scope), Claude Code mencetak satu baris per masalah

28863. Ketika nama agent dimulai dengan `-`, Claude Code mencetak `<name>: agent names must not start with '-'`29143. Ketika nama agent diawali dengan `-`, Claude Code mencetak `<name>: agent names must not start with '-'`

2887 2915 

2888Ketika ada lebih dari 20 baris masalah, Claude Code mencetak 20 yang pertama dan mengganti sisanya dengan `…and N more`.2916Ketika ada lebih dari 20 baris masalah, Claude Code mencetak 20 baris pertama dan mengganti sisanya dengan `…and N more`.

2889 2917 

2890Dengan `--print`, `--agents` juga menerima [path ke file JSON](/docs/id/sub-agents#choose-the-subagent-scope) sebagai pengganti objek inline. Sebelum v2.1.281, `--agents` hanya menerima JSON inline dan memperlakukan path file sebagai JSON tidak valid. Bentuk file memiliki penolakan sendiri, dicetak sebagai pengganti pesan ini, termasuk yang berikut:2918Dengan `--print`, `--agents` juga menerima [path ke file JSON](/docs/id/sub-agents#choose-the-subagent-scope) sebagai pengganti objek inline. Sebelum v2.1.281, `--agents` hanya menerima JSON inline dan memperlakukan path file sebagai JSON yang tidak valid. Bentuk file memiliki penolakannya sendiri, yang dicetak sebagai pengganti pesan ini, termasuk yang berikut:

2891 2919 

2892* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code membaca nilai sebagai path file dalam sesi interaktif. Berikan definisi sebagai JSON inline, atau tambahkan `-p` untuk membacanya dari file.2920* **`Error: --agents takes a JSON object, or a file path only with --print (-p)`**: Claude Code membaca nilai tersebut sebagai path file dalam sesi interaktif. Teruskan definisi sebagai JSON inline, atau tambahkan `-p` untuk membacanya dari file.

2893* **`Error: --agents file not found: <path>`**: tidak ada file yang ada di path tersebut. Nilai yang tidak dimulai dengan `{` dan bukan JSON valid dibaca sebagai path, jadi JSON inline yang shell Anda rusak dapat gagal dengan cara ini juga. Periksa path atau kutipan dan jalankan command lagi.2921* **`Error: --agents file not found: <path>`**: tidak ada file di path tersebut. Nilai yang tidak diawali dengan `{` dan bukan JSON yang valid dibaca sebagai path, sehingga JSON inline yang dirusak oleh shell Anda juga dapat gagal dengan cara ini. Periksa path atau tanda kutipnya dan jalankan perintah lagi.

2894 2922 

2895**Yang harus dilakukan:**2923**Yang harus dilakukan:**

2896 2924 

2897* Perbaiki setiap masalah yang pesan daftarkan, kemudian jalankan command lagi. Lihat [field yang diambil subagent yang ditentukan CLI](/docs/id/sub-agents#choose-the-subagent-scope).2925* Perbaiki setiap masalah yang dicantumkan dalam pesan, lalu jalankan perintah lagi. Lihat [field yang diterima oleh subagent yang didefinisikan melalui CLI](/docs/id/sub-agents#choose-the-subagent-scope).

2898 2926 

2899<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">2927<h3 id="cloud-sessions-cannot-be-created-from-a-restricted-session">

2900 Sesi cloud tidak dapat dibuat dari sesi `--restricted`2928 Sesi cloud tidak dapat dibuat dari sesi `--restricted`

2901</h3>2929</h3>

2902 2930 

2903Ketika Anda memulai sesi dengan [`--restricted`](/docs/id/cli-reference#cli-flags), Claude Code menolak untuk membuat [sesi cloud](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) darinya, karena sesi baru akan berjalan di luar proses terbatas dan tidak akan memberlakukan mode terbatas. Claude Code menolak di klien, sebelum menghubungi server, jadi tidak ada sesi cloud yang dibuat:2931Ketika Anda memulai sesi dengan [`--restricted`](/docs/id/cli-reference#cli-flags), Claude Code menolak membuat [sesi cloud](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) dari sesi tersebut, karena sesi baru akan berjalan di luar proses yang dibatasi dan tidak akan menerapkan mode terbatas. Claude Code menolak di sisi klien, sebelum menghubungi server, sehingga tidak ada sesi cloud yang dibuat:

2904 2932 

2905```text theme={null}2933```text theme={null}

2906Cloud sessions cannot be created from a --restricted session: they would not enforce it.2934Cloud sessions cannot be created from a --restricted session: they would not enforce it.


2909 2936 

2910**Yang harus dilakukan:**2937**Yang harus dilakukan:**

2911 2938 

2912* Jalankan tugas secara lokal dalam sesi terbatas2939* Jalankan tugas secara lokal di sesi yang dibatasi

2913* Jika Anda mengontrol bagaimana sesi diluncurkan, mulai sesi `claude` baru tanpa `--restricted` dan buat sesi cloud dari sana2940* Jika Anda mengontrol cara sesi diluncurkan, mulai sesi `claude` baru tanpa `--restricted` dan buat sesi cloud dari sana

2914 2941 

2915Sebelum v2.1.248, Claude Code tidak memiliki flag `--restricted`; versi sebelumnya menolak flag itu sendiri dengan kesalahan unknown-option.2942Sebelum v2.1.248, Claude Code tidak memiliki flag `--restricted`; versi sebelumnya menolak flag itu sendiri dengan error opsi tidak dikenal.

2916 2943 

2917<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">2944<h3 id="cloud-sessions-are-disabled-by-your-organizations-policy">

2918 Sesi cloud dinonaktifkan oleh kebijakan organisasi Anda2945 Sesi cloud dinonaktifkan oleh kebijakan organisasi Anda

2919</h3>2946</h3>

2920 2947 

2921Kebijakan `allow_remote_sessions` organisasi Anda mati, jadi [sesi cloud](/docs/id/claude-code-on-the-web) dan command yang menggunakannya tidak tersedia:2948Kebijakan `allow_remote_sessions` organisasi Anda dinonaktifkan, sehingga [sesi cloud](/docs/id/claude-code-on-the-web) dan perintah yang menggunakannya tidak tersedia:

2922 2949 

2923```text theme={null}2950```text theme={null}

2924Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.2951Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.

2925```2952```

2926 2953 

2927Pesan muncul ketika Anda [membuat sesi cloud dari terminal](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) dan ketika Anda mengirimkan command yang memerlukan sesi cloud, seperti `/teleport`, `/remote-env`, atau `/web-setup`. Sebelum v2.1.268, mengirimkan salah satu command tersebut mengembalikan [`Unknown command`](#unknown-command) sebagai gantinya.2954Pesan ini muncul ketika Anda [membuat sesi cloud dari terminal](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) dan ketika Anda mengirimkan perintah yang memerlukan sesi cloud, seperti `/teleport`, `/remote-env`, atau `/web-setup`. Sebelum v2.1.268, mengirimkan salah satu perintah tersebut menghasilkan [`Unknown command`](#unknown-command) sebagai gantinya.

2928 2955 

2929Ini adalah kebijakan organisasi sisi server, jadi tidak dapat ditimpa dari pengaturan lokal, variabel lingkungan, atau flag CLI.2956Ini adalah kebijakan organisasi di sisi server, sehingga tidak dapat ditimpa dari pengaturan lokal, environment variable, atau flag CLI.

2930 2957 

2931Jika Claude Code belum memuat kebijakan organisasi Anda atau tidak dapat mengambilnya, command tersebut menjawab `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` sebagai gantinya.2958Jika Claude Code belum memuat kebijakan organisasi Anda atau tidak dapat mengambilnya, perintah tersebut menjawab `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.` sebagai gantinya.

2932 2959 

2933**Yang harus dilakukan:**2960**Yang harus dilakukan:**

2934 2961 

2935* Minta [Owner](/docs/id/server-managed-settings#access-control) di organisasi Anda untuk mengaktifkan sesi cloud dalam pengaturan admin Claude Code di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)2962* Minta [Owner](/docs/id/server-managed-settings#access-control) di organisasi Anda untuk mengaktifkan sesi cloud di pengaturan admin Claude Code di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

2936* Jika pesan mengatakan tidak dapat memverifikasi kebijakan, periksa koneksi jaringan Anda, kemudian restart Claude Code dan coba lagi2963* Jika pesan menyatakan bahwa kebijakan tidak dapat diverifikasi, periksa koneksi jaringan Anda, lalu mulai ulang Claude Code dan coba lagi

2937 2964 

2938<h3 id="the-json-schema-value-is-not-a-valid-json-schema">2965<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

2939 Nilai `--json-schema` bukan JSON Schema yang valid2966 Nilai `--json-schema` bukan JSON Schema yang valid

2940</h3>2967</h3>

2941 2968 

2942Skema yang Anda berikan ke [`--json-schema`](/docs/id/cli-reference#cli-flags) dalam [mode non-interaktif](/docs/id/headless#get-structured-output) gagal kompilasi JSON Schema, jadi `claude` keluar dengan kode 1 alih-alih menjalankan prompt. Sebelum v2.1.205, skema tidak valid menghasilkan output tidak terstruktur tanpa kesalahan, dan skema apa pun yang menggunakan keyword `format` diperlakukan sebagai tidak valid.2969Skema yang Anda teruskan ke [`--json-schema`](/docs/id/cli-reference#cli-flags) dalam [mode non-interaktif](/docs/id/headless#get-structured-output) gagal dalam kompilasi JSON Schema, sehingga `claude` keluar dengan kode 1 alih-alih menjalankan prompt. Sebelum v2.1.205, skema yang tidak valid menghasilkan output tidak terstruktur tanpa error, dan skema apa pun yang menggunakan kata kunci `format` diperlakukan sebagai tidak valid.

2943 2970 

2944```text theme={null}2971```text theme={null}

2945Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values2972Error: --json-schema is not a valid JSON Schema: data/type must be equal to one of the allowed values

2946```2973```

2947 2974 

2948Teks setelah titik dua kedua adalah diagnostik validator dan menamai keyword atau lokasi yang gagal. Skema yang menggunakan keyword `format`, seperti `"format": "email"`, valid: Claude Code menerima `format` sebagai anotasi dan tidak memberlakukannya.2975Teks setelah titik dua kedua adalah diagnostik dari validator dan menyebutkan kata kunci atau lokasi yang gagal. Skema yang menggunakan kata kunci `format`, seperti `"format": "email"`, adalah valid: Claude Code menerima `format` sebagai anotasi dan tidak menerapkannya.

2949 2976 

2950Claude Code menjalankan dua pemeriksaan sebelum kompilasi skema: menolak nilai yang tidak dapat diuraikan JSON dengan `Error: --json-schema is not valid JSON`, dan JSON valid yang bukan objek dengan `Error: --json-schema must be a JSON object`.2977Claude Code menjalankan dua pemeriksaan sebelum kompilasi skema: Claude Code menolak nilai yang bukan JSON yang dapat di-parse dengan `Error: --json-schema is not valid JSON`, dan JSON valid yang bukan objek dengan `Error: --json-schema must be a JSON object`.

2951 2978 

2952**Yang harus dilakukan:**2979**Yang harus dilakukan:**

2953 2980 

2954* Perbaiki bagian skema yang diagnostik namakan, kemudian jalankan kembali command2981* Perbaiki bagian skema yang disebutkan oleh diagnostik, lalu jalankan ulang perintah

2955* Lihat [Get structured output](/docs/id/headless#get-structured-output) untuk skema kerja dan command2982* Lihat [Mendapatkan output terstruktur](/docs/id/headless#get-structured-output) untuk skema dan perintah yang berfungsi

2956 2983 

2957<h3 id="settings-file-exceeds-the-2mib-limit">2984<h3 id="settings-file-exceeds-the-2mib-limit">

2958 File pengaturan melebihi batas 2MiB2985 File pengaturan melebihi batas 2MiB

2959</h3>2986</h3>

2960 2987 

2961File yang Anda berikan ke [`--settings`](/docs/id/cli-reference#cli-flags) lebih besar dari 2 MiB, jadi `claude` keluar dengan kode 1 saat startup alih-alih memuatnya. Sebelum v2.1.214, Claude Code membaca file tanpa pemeriksaan ukuran, dan file multi-gigabyte atau file perangkat seperti `/dev/zero` menumbuhkan memori tanpa batas.2988File yang Anda teruskan ke [`--settings`](/docs/id/cli-reference#cli-flags) lebih besar dari 2 MiB, sehingga `claude` keluar dengan kode 1 saat startup alih-alih memuatnya. Sebelum v2.1.214, Claude Code membaca file tanpa pemeriksaan ukuran, dan file berukuran beberapa gigabyte atau file perangkat seperti `/dev/zero` membuat memori bertambah tanpa batas.

2962 2989 

2963```text theme={null}2990```text theme={null}

2964Error: Settings file exceeds the 2MiB limit: /path/to/settings.json2991Error: Settings file exceeds the 2MiB limit: /path/to/settings.json

2965```2992```

2966 2993 

2967Claude Code menolak path `--settings` yang bukan file reguler dengan cara yang sama: perangkat, FIFO, atau socket melaporkan `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))` diikuti oleh path, dan direktori melaporkan alasan `EISDIR`.2994Claude Code menolak path `--settings` yang bukan file biasa dengan cara yang sama: perangkat, FIFO, atau socket melaporkan `Error: Cannot use settings file (Not a regular file (device, FIFO, or socket))` diikuti oleh path-nya, dan direktori melaporkan alasan `EISDIR`.

2968 2995 

2969**Yang harus dilakukan:**2996**Yang harus dilakukan:**

2970 2997 

2971* Arahkan `--settings` ke file pengaturan JSON reguler di bawah 2 MiB. Lihat [Settings](/docs/id/settings) untuk formatnya.2998* Arahkan `--settings` ke file pengaturan JSON biasa yang berukuran di bawah 2 MiB. Lihat [Pengaturan](/docs/id/settings) untuk formatnya.

2972 2999 

2973<h3 id="the-current-directory-no-longer-exists">3000<h3 id="the-current-directory-no-longer-exists">

2974 Direktori saat ini tidak lagi ada3001 Direktori saat ini sudah tidak ada

2975</h3>3002</h3>

2976 3003 

2977Anda memulai `claude` dari direktori yang dihapus atau dipindahkan setelah shell Anda memasukkannya, misalnya worktree atau direktori temp yang shell lain hapus. Claude Code tidak dapat membaca direktori kerjanya, jadi keluar dengan kode 1 sebelum memulai sesi, dalam mode interaktif dan [non-interaktif](/docs/id/headless) sama-sama. Sebelum v2.1.239, Claude Code mogok dengan sumber bundle minified dan `ENOENT ... uv_cwd` stack mentah di stderr alih-alih pesan ini.3004Anda memulai `claude` dari direktori yang dihapus atau dipindahkan setelah shell Anda memasukinya, misalnya worktree atau direktori sementara yang dihapus oleh shell lain. Claude Code tidak dapat membaca direktori kerjanya, sehingga keluar dengan kode 1 sebelum memulai sesi, baik dalam mode interaktif maupun [non-interaktif](/docs/id/headless). Sebelum v2.1.239, Claude Code crash dengan sumber bundle yang di-minify dan stack `ENOENT ... uv_cwd` mentah di stderr alih-alih pesan ini.

2978 3005 

2979```text theme={null}3006```text theme={null}

2980The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.3007The current directory no longer exists (it was deleted or moved). Start Claude Code from an existing directory.


2983 3010 

2984Penyebab dan perbaikannya sama untuk kedua bentuk.3011Penyebab dan perbaikannya sama untuk kedua bentuk.

2985 3012 

2986Ketika Claude Code tidak dapat membaca direktori kerja karena alasan berbeda, seperti perubahan izin, pesan menamai kode kesalahan sebagai gantinya: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`3013Ketika Claude Code tidak dapat membaca direktori kerja karena alasan lain, seperti perubahan permission, pesan menyebutkan kode error sebagai gantinya: `Can't read the current directory (EACCES). Start Claude Code from a different directory.`

2987 3014 

2988Di macOS, `EPERM` untuk direktori di `~/Desktop`, `~/Documents`, `~/Downloads`, atau iCloud Drive biasanya berarti macOS memblokir aplikasi terminal Anda dari folder tersebut. Command lain yang membaca folder itu gagal dengan cara yang sama: `ls` di sana melaporkan `Operation not permitted`, bahkan dengan `sudo`.3015Di macOS, `EPERM` untuk direktori di `~/Desktop`, `~/Documents`, `~/Downloads`, atau iCloud Drive biasanya berarti macOS memblokir aplikasi terminal Anda dari folder tersebut. Perintah lain yang membaca folder tersebut gagal dengan cara yang sama: `ls` di sana melaporkan `Operation not permitted`, bahkan dengan `sudo`.

2989 3016 

2990**Yang harus dilakukan:**3017**Yang harus dilakukan:**

2991 3018 

2992* Ubah ke direktori yang ada, seperti direktori home atau project Anda, kemudian jalankan `claude` lagi3019* Pindah ke direktori yang ada, seperti direktori home atau direktori proyek Anda, lalu jalankan `claude` lagi

2993* Jika direktori dibuat kembali di path yang sama, shell Anda masih memegang yang dihapus. Jalankan `cd "$PWD"` atau tinggalkan dan masuki kembali direktori, kemudian jalankan `claude` lagi3020* Jika direktori dibuat ulang di path yang sama, shell Anda masih memegang direktori yang telah dihapus. Jalankan `cd "$PWD"` atau keluar lalu masuk kembali ke direktori tersebut, lalu jalankan `claude` lagi

2994* Untuk `EPERM` di macOS, keluar dari aplikasi terminal Anda dengan Cmd+Q, buka lagi, kembali ke folder itu, dan jalankan `claude`. Jika `ls` di folder itu masih gagal, buka **System Settings > Privacy & Security > Files and Folders**, aktifkan folder untuk aplikasi terminal Anda, kemudian buka kembali terminal3021* Untuk `EPERM` di macOS, tutup aplikasi terminal Anda dengan Cmd+Q, buka kembali, kembali ke folder tersebut, dan jalankan `claude`. Jika `ls` di folder tersebut masih gagal, buka **System Settings > Privacy & Security > Files and Folders**, aktifkan folder tersebut untuk aplikasi terminal Anda, lalu buka kembali terminal

2995 3022 

2996<h3 id="temp-directory-refused-or-cannot-be-created">3023<h3 id="temp-directory-refused-or-cannot-be-created">

2997 Direktori temp ditolak atau tidak dapat dibuat3024 Direktori sementara ditolak atau tidak dapat dibuat

2998</h3>3025</h3>

2999 3026 

3000Di macOS dan Linux, Claude Code membuat direktori temp pribadi saat startup, `claude-<uid>` di bawah direktori temp sistem atau override [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars). Ketika direktori tidak dapat dibuat, atau entri yang sudah ada di path itu gagal pemeriksaan keamanan, Claude Code mencetak kegagalan ke stderr dan keluar dengan kode 1 alih-alih memulai sesi:3027Di macOS dan Linux, Claude Code membuat direktori sementara pribadi saat startup, yaitu `claude-<uid>` di bawah direktori sementara sistem atau override [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars). Ketika direktori tidak dapat dibuat, atau entri yang sudah ada di path tersebut gagal dalam pemeriksaan keamanan, Claude Code mencetak kegagalan tersebut ke stderr dan keluar dengan kode 1 alih-alih memulai sesi:

3001 3028 

3002```text wrap theme={null}3029```text wrap theme={null}

3003ENOSPC: no space left on device, mkdir '/tmp/claude-501'3030ENOSPC: no space left on device, mkdir '/tmp/claude-501'


3011 3038 

3012**Yang harus dilakukan:**3039**Yang harus dilakukan:**

3013 3040 

3014* Untuk `ENOSPC`, bebaskan ruang disk di volume yang menyimpan direktori temp3041* Untuk `ENOSPC`, kosongkan ruang disk pada volume yang menampung direktori sementara

3015* Untuk bentuk `Refusing to use it`, hapus entri bernama itu sendiri, bukan apa yang link tunjuk, dan mulai Claude Code lagi; untuk bentuk `owned by uid`, hanya administrator atau pengguna itu yang dapat menghapusnya3042* Untuk bentuk `Refusing to use it`, hapus entri yang disebutkan itu sendiri, bukan apa yang ditunjuk oleh link, lalu mulai Claude Code lagi; untuk bentuk `owned by uid`, hanya administrator atau pengguna tersebut yang dapat menghapusnya

3016* Untuk `is not readable`, jalankan `chmod 0700` di direktori bernama, atau hapus dan mulai lagi3043* Untuk `is not readable`, jalankan `chmod 0700` pada direktori yang disebutkan, atau hapus direktori tersebut dan mulai lagi

3017* Dalam kasus apa pun, atur [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars) ke direktori yang Anda kontrol dan mulai Claude Code lagi, meninggalkan path yang ditolak sendirian3044* Dalam kasus mana pun, atur [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars) ke direktori yang Anda kendalikan dan mulai Claude Code lagi, dengan membiarkan path yang ditolak apa adanya

3018 3045 

3019<h3 id="directory-couldnt-be-resolved-to-a-real-location">3046<h3 id="directory-couldnt-be-resolved-to-a-real-location">

3020 Direktori tidak dapat diselesaikan ke lokasi nyata3047 Direktori tidak dapat di-resolve ke lokasi sebenarnya

3021</h3>3048</h3>

3022 3049 

3023Anda menjalankan `/add-dir` untuk subdirektori dari direktori kerja Anda, dan Claude Code tidak dapat menyelesaikan direktori ke lokasi nyatanya.3050Anda menjalankan `/add-dir` untuk subdirektori dari direktori kerja Anda, dan Claude Code tidak dapat me-resolve direktori tersebut ke lokasi sebenarnya.

3024 3051 

3025Anda sudah memiliki akses file ke subdirektori dari direktori kerja, jadi `/add-dir` hanya memuat skill, command, dan agent-nya. Sebelum memuatnya, Claude Code memeriksa bahwa lokasi nyata direktori, dengan symlink apa pun diselesaikan, berada di dalam direktori kerja. Ketika Claude Code tidak dapat menyelesaikan lokasi itu, tidak memuat apa pun dan menampilkan pesan ini:3052Anda sudah memiliki akses file ke subdirektori dari direktori kerja, sehingga `/add-dir` hanya memuat skill, perintah, dan agent-nya. Sebelum memuatnya, Claude Code memeriksa bahwa lokasi sebenarnya dari direktori tersebut, dengan semua symlink telah di-resolve, berada di dalam direktori kerja. Ketika Claude Code tidak dapat me-resolve lokasi tersebut, Claude Code tidak memuat apa pun dan menampilkan pesan ini:

3026 3053 

3027```text theme={null}3054```text theme={null}

3028packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.3055packages/app couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded. Check that it is a directory inside the working directory and try again.


3030 3057 

3031**Yang harus dilakukan:**3058**Yang harus dilakukan:**

3032 3059 

3033* Periksa bahwa path menamai direktori nyata di dalam direktori kerja, kemudian jalankan `/add-dir` lagi3060* Periksa bahwa path tersebut menunjuk ke direktori nyata di dalam direktori kerja, lalu jalankan `/add-dir` lagi

3034* Pesan tidak mengubah akses file Anda; hanya melaporkan bahwa konten `.claude/` direktori tidak dimuat3061* Pesan ini tidak mengubah akses file Anda; pesan ini hanya melaporkan bahwa konten `.claude/` dari direktori tersebut tidak dimuat

3035 3062 

3036Sebelum v2.1.261, pesan ini juga muncul untuk setiap `/add-dir <subdirectory>` ketika direktori kerja berada di automount `/net/<host>`, di mana Claude Code menolak untuk menyelesaikan path dengan desain; direktori baik-baik saja dan mencoba lagi tidak bisa membantu.3063Sebelum v2.1.261, pesan ini juga muncul untuk setiap `/add-dir <subdirectory>` ketika direktori kerja berada di automount `/net/<host>`, di mana Claude Code memang dirancang untuk tidak me-resolve path; direktorinya baik-baik saja dan mencoba ulang tidak membantu.

3037 3064 

3038<h3 id="workspace-not-trusted-when-starting-remote-control">3065<h3 id="workspace-not-trusted-when-starting-remote-control">

3039 Workspace tidak dipercaya saat memulai Remote Control3066 Workspace tidak dipercaya saat memulai Remote Control

3040</h3>3067</h3>

3041 3068 

3042Anda memulai mode server [Remote Control](/docs/id/remote-control) dengan `claude remote-control` atau alias `claude rc` di direktori yang belum Anda percayai, dan command tidak dapat menanyakan apakah akan mempercayainya. Misalnya, input atau output standar command bukan terminal karena salah satunya dialihkan atau dipipa. Command keluar dengan kode 1:3069Anda memulai mode server [Remote Control](/docs/id/remote-control) dengan `claude remote-control` atau alias `claude rc` di direktori yang belum Anda percayai, dan perintah tersebut tidak dapat menanyakan apakah Anda ingin memercayainya. Misalnya, input standar atau output standar perintah bukan terminal karena salah satunya dialihkan atau di-pipe. Perintah keluar dengan kode 1:

3043 3070 

3044```text theme={null}3071```text theme={null}

3045Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.3072Error: Workspace not trusted. Please run `claude` in /Users/you/project first to review and accept the workspace trust dialog.

3046```3073```

3047 3074 

3048Dua varian yang juga dimulai dengan `Error: Workspace not trusted.` muncul di terminal juga terlalu kecil untuk menunjukkan apa yang mempercayai direktori aktifkan, atau yang tidak melaporkan ukurannya. Perbesar jendela atau beralih ke jendela terminal normal, kemudian jalankan `claude rc` lagi.3075Dua varian yang juga diawali dengan `Error: Workspace not trusted.` muncul di terminal yang terlalu kecil untuk menampilkan apa yang diaktifkan dengan memercayai direktori tersebut, atau terminal yang tidak melaporkan ukurannya. Perbesar jendela atau beralih ke jendela terminal normal, lalu jalankan `claude rc` lagi.

3049 3076 

3050Di direktori home Anda pesan berbeda, karena dialog kepercayaan workspace tidak pernah menyimpan kepercayaan untuk direktori home, jadi menerimanya di sana tidak dapat memenuhi pemeriksaan ini. Sebelum v2.1.214, direktori home menunjukkan pesan di atas, yang sarannya tidak dapat berhasil di sana.3077Di direktori home Anda, pesannya berbeda, karena dialog kepercayaan workspace tidak pernah menyimpan kepercayaan untuk direktori home, sehingga menerimanya di sana tidak dapat memenuhi pemeriksaan ini. Sebelum v2.1.214, direktori home menampilkan pesan di atas, yang sarannya tidak dapat berhasil di sana.

3051 3078 

3052```text theme={null}3079```text theme={null}

3053Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).3080Error: Workspace not trusted. /Users/you is your home directory, and for security home-directory trust is never saved, so running `claude` here first won't help. Run `claude rc` from a project directory instead (run `claude` there once to accept the trust dialog).

3054```3081```

3055 3082 

3056Jika Anda menjawab `n` atau tekan Enter di pertanyaan [`Trust <directory>?`](/docs/id/remote-control#requirements), command mencetak pesan `Remote Control did not start` yang menamai direktori dan keluar dengan kode 1. Jalankan `claude rc` lagi untuk menjawab `y`.3083Jika Anda menjawab `n` atau menekan Enter pada [pertanyaan `Trust <directory>?`](/docs/id/remote-control#requirements), perintah mencetak pesan `Remote Control did not start` yang menyebutkan direktori tersebut dan keluar dengan kode 1. Jalankan `claude rc` lagi untuk menjawab `y`.

3057 3084 

3058**Yang harus dilakukan:**3085**Yang harus dilakukan:**

3059 3086 

3060* Percayai direktori dari terminal terlebih dahulu: jalankan `claude rc` di sana dan jawab `y`, atau jalankan `claude` di sana dan terima [dialog kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust), kemudian jalankan command asli Anda lagi3087* Percayai direktori dari terminal terlebih dahulu: jalankan `claude rc` di sana dan jawab `y`, atau jalankan `claude` di sana dan terima [dialog kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust), lalu jalankan perintah asli Anda lagi

3061* Di direktori home Anda, ubah ke direktori project dan mulai Remote Control di sana3088* Di direktori home Anda, pindah ke direktori proyek dan mulai Remote Control di sana

3062 3089 

3063Sebelum v2.1.284, command tidak pernah menanyakan, bahkan di terminal.3090Sebelum v2.1.284, perintah tersebut tidak pernah bertanya, bahkan di terminal.

3064 3091 

3065<h3 id="not-carried-over-to-the-sessions-remote-control-starts">3092<h3 id="not-carried-over-to-the-sessions-remote-control-starts">

3066 Tidak dibawa ke sesi yang Remote Control mulai3093 Tidak diteruskan ke sesi yang dimulai Remote Control

3067</h3>3094</h3>

3068 3095 

3069Anda memulai [Remote Control](/docs/id/remote-control) dengan flag `claude` global sebelum verb `remote-control`, yang akan membatasi atau mengonfigurasi sesi yang Remote Control mulai, seperti `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, atau `--mcp-config`. Flag yang ditempatkan sebelum verb tidak pernah mencapai sesi tersebut. Claude Code menolak untuk memulai sebagai gantinya, menamai flag:3096Anda memulai [Remote Control](/docs/id/remote-control) dengan flag `claude` global sebelum verb `remote-control`, yaitu flag yang akan membatasi atau mengonfigurasi sesi yang dimulai Remote Control, seperti `--settings`, `--setting-sources`, `--permission-mode`, `--disallowed-tools`, atau `--mcp-config`. Flag yang ditempatkan sebelum verb tidak pernah mencapai sesi tersebut. Claude Code menolak untuk memulai, dengan menyebutkan flag tersebut:

3070 3097 

3071```text theme={null}3098```text theme={null}

3072Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).3099Error: `--settings` before `remote-control` is not carried over to the sessions Remote Control starts, so Remote Control refuses to start rather than drop it — remove it, and give Remote Control's own options after the verb (see `claude remote-control --help`).

3073```3100```

3074 3101 

3075Claude Code tidak menolak flag global yang tidak berbahaya untuk dijatuhkan, seperti `--verbose`, `--model`, atau wrapper-injected `--session-id` atau `--plugin-dir`: mengabaikannya dan Remote Control dimulai.3102Claude Code tidak menolak flag global yang aman untuk diabaikan, seperti `--verbose`, `--model`, atau `--session-id` maupun `--plugin-dir` yang disisipkan oleh wrapper: Claude Code mengabaikannya dan Remote Control dimulai.

3076 3103 

3077Claude Code juga menolak untuk memulai untuk flag global yang belum dikenalinya sebagai tidak berbahaya, jadi flag yang ditambahkan dalam rilis lebih baru dapat muncul dalam pesan ini sampai rilis kemudian menandainya tidak berbahaya.3104Claude Code juga menolak untuk memulai untuk flag global yang belum dikenalinya sebagai aman, sehingga flag yang ditambahkan dalam rilis yang lebih baru dapat muncul dalam pesan ini sampai rilis berikutnya menandainya sebagai aman.

3078 3105 

3079**Yang harus dilakukan:**3106**Yang harus dilakukan:**

3080 3107 

3081* Hapus flag dari sebelum verb dan berikan [opsi Remote Control sendiri](/docs/id/remote-control#start-a-remote-control-session) setelahnya; `claude remote-control --help` mencantumnya3108* Hapus flag dari posisi sebelum verb dan teruskan [opsi Remote Control sendiri](/docs/id/remote-control#start-a-remote-control-session) setelahnya; `claude remote-control --help` mencantumkan opsi-opsi tersebut

3082* Ketika flag yang ditolak adalah `--permission-mode`, jalankan `claude remote-control --permission-mode <mode>` untuk mengatur mode izin untuk sesi yang Remote Control mulai3109* Ketika flag yang ditolak adalah `--permission-mode`, jalankan `claude remote-control --permission-mode <mode>` untuk mengatur mode izin bagi sesi yang dimulai Remote Control

3083 3110 

3084Sebelum v2.1.248, `claude remote-control` tidak menerima flag-nya sendiri ketika flag global datang terlebih dahulu, dan command gagal dengan kesalahan unknown option.3111Sebelum v2.1.248, `claude remote-control` tidak menerima flag-nya sendiri ketika flag global diletakkan lebih dulu, dan perintah gagal dengan error `unknown option`.

3085 3112 

3086<h3 id="claude-import-is-not-yet-available-in-this-build">3113<h3 id="claude-import-is-not-yet-available-in-this-build">

3087 claude import belum tersedia dalam build ini3114 claude import belum tersedia dalam build ini

3088</h3>3115</h3>

3089 3116 

3090Anda menjalankan [`claude import`](/docs/id/cli-reference#cli-commands), dan Claude Code menemukan alur impor dimatikan, jadi command keluar dengan kode 1 alih-alih memulai impor. Sebelum v2.1.222, build dengan alur impor mati memperlakukan `import` sebagai prompt dan memulai sesi interaktif alih-alih mencetak pesan ini.3117Anda menjalankan [`claude import`](/docs/id/cli-reference#cli-commands), dan Claude Code mendapati alur impor dalam keadaan nonaktif, sehingga perintah keluar dengan kode 1 alih-alih memulai impor. Sebelum v2.1.222, build dengan alur impor nonaktif memperlakukan `import` sebagai prompt dan memulai sesi interaktif alih-alih mencetak pesan ini.

3091 3118 

3092```text theme={null}3119```text theme={null}

3093`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.3120`claude import` is not yet available in this build. Run `claude` and use /mcp or edit ~/.claude/settings.json directly.

3094```3121```

3095 3122 

3096Claude Code mengaktifkan `claude import` melalui feature flag yang diambilnya dari Anthropic dan disimpan di disk. Pesan ini berarti nilai yang disimpan mati. Penyebabnya biasanya salah satu dari berikut:3123Claude Code mengaktifkan `claude import` melalui feature flag yang diambilnya dari Anthropic dan disimpan dalam cache di disk. Pesan ini berarti nilai yang tersimpan dalam cache dinonaktifkan. Penyebabnya biasanya salah satu dari berikut ini:

3097 3124 

3098* Anda belum memulai sesi sejak instalasi, jadi Claude Code belum mengambil flag. `claude import` pertama dapat mencetak ini bahkan ketika fitur tersedia untuk Anda.3125* Anda belum memulai sesi sejak instalasi, sehingga Claude Code belum mengambil flag tersebut. `claude import` yang pertama dapat mencetak pesan ini meskipun fitur tersebut tersedia untuk Anda.

3099* Anda menggunakan Claude Code melalui Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, atau Claude Platform di AWS, atau melalui [Claude apps gateway](/docs/id/claude-apps-gateway#availability-and-limitations). Claude Code tidak mengambil feature flag dalam sesi ini, jadi `claude import` tetap tidak tersedia.3126* Anda menggunakan Claude Code melalui Amazon Bedrock, Agent Platform dari Google Cloud, Microsoft Foundry, atau Claude Platform di AWS, atau melalui [Claude apps gateway](/docs/id/claude-apps-gateway#availability-and-limitations). Claude Code tidak mengambil feature flag dalam sesi ini, sehingga `claude import` tetap tidak tersedia.

3100* Anda mengatur `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK`, atau [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars), yang mematikan pengambilan feature flag, jadi `claude import` tetap tidak tersedia.3127* Anda mengatur `DISABLE_TELEMETRY`, `DO_NOT_TRACK`, `DISABLE_GROWTHBOOK`, atau [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars), yang menonaktifkan pengambilan feature flag, sehingga `claude import` tetap tidak tersedia.

3101 3128 

3102**Yang harus dilakukan:**3129**Yang harus dilakukan:**

3103 3130 

3104* Pada instalasi segar, mulai `claude`, tunggu sesi dimuat, keluar, dan jalankan `claude import` lagi3131* Pada instalasi baru, mulai `claude`, tunggu hingga sesi dimuat, keluar, lalu jalankan `claude import` lagi

3105* Di mana pengambilan feature flag tetap mati, atur konfigurasi sendiri: tambahkan server MCP dengan [`claude mcp add`](/docs/id/mcp#installing-mcp-servers), dan buat file [`CLAUDE.md`](/docs/id/memory#how-claude-md-files-load), [skill dan command](/docs/id/skills#where-skills-live), dan [subagent](/docs/id/sub-agents#choose-the-subagent-scope) yang ingin Anda bawa. Pesan juga menamai `~/.claude/settings.json`. Dari konfigurasi yang `claude import` bawa, file itu hanya menyimpan [mode izin](/docs/id/settings-reference#permission-settings); Claude Code tidak membaca server MCP darinya.3132* Jika pengambilan feature flag tetap nonaktif, siapkan konfigurasi sendiri: tambahkan server MCP dengan [`claude mcp add`](/docs/id/mcp#installing-mcp-servers), dan buat [file `CLAUDE.md`](/docs/id/memory#how-claude-md-files-load), [skill dan perintah](/docs/id/skills#where-skills-live), serta [subagent](/docs/id/sub-agents#choose-the-subagent-scope) yang ingin Anda bawa. Pesan tersebut juga menyebutkan `~/.claude/settings.json`. Dari konfigurasi yang dibawa oleh `claude import`, file tersebut hanya menyimpan [mode izin](/docs/id/settings-reference#permission-settings); Claude Code tidak membaca server MCP dari file tersebut.

3106 3133 

3107<h3 id="could-not-read-claude-code-config">3134<h3 id="could-not-read-claude-code-config">

3108 Tidak dapat membaca konfigurasi Claude Code3135 Tidak dapat membaca konfigurasi Claude Code

3109</h3>3136</h3>

3110 3137 

3111Anda menjalankan [`claude import`](/docs/id/cli-reference#cli-commands) sementara Claude Code tidak dapat menguraikan `~/.claude.json`, file tempat menyimpan login dan status per-project Anda. Subcommand membaca file itu untuk memeriksa ketersediaan tetapi tidak menampilkan dialog pemulihan yang sesi interaktif tampilkan, jadi keluar dengan kode 1. Sebelum v2.1.222, `claude import` dengan file konfigurasi yang tidak dapat dibaca memulai sesi interaktif, yang dialog pemulihannya menangani file.3138Anda menjalankan [`claude import`](/docs/id/cli-reference#cli-commands) ketika Claude Code tidak dapat mem-parse `~/.claude.json`, file tempat Claude Code menyimpan login dan status per proyek Anda. Subperintah tersebut membaca file itu untuk memeriksa ketersediaan tetapi tidak menampilkan dialog pemulihan yang ditampilkan sesi interaktif, sehingga keluar dengan kode 1. Sebelum v2.1.222, `claude import` dengan file konfigurasi yang tidak dapat dibaca memulai sesi interaktif, yang dialog pemulihannya menangani file tersebut.

3112 3139 

3113```text theme={null}3140```text theme={null}

3114Could not read Claude Code config — run `claude` with no arguments to recover it.3141Could not read Claude Code config — run `claude` with no arguments to recover it.


3116 3143 

3117**Yang harus dilakukan:**3144**Yang harus dilakukan:**

3118 3145 

3119* Jalankan `claude` tanpa argumen. Claude Code mendeteksi file tidak valid dan menawarkan untuk mengatur ulangnya. Kemudian jalankan `claude import` lagi.3146* Jalankan `claude` tanpa argumen. Claude Code mendeteksi file yang tidak valid dan menawarkan untuk mengatur ulangnya. Kemudian jalankan `claude import` lagi.

3120* Untuk menyimpan edit manual yang telah Anda buat, perbaiki sintaks JSON di `~/.claude.json` di editor sebagai gantinya, kemudian jalankan kembali `claude import`3147* Untuk mempertahankan pengeditan manual yang telah Anda buat, perbaiki sintaks JSON di `~/.claude.json` dalam editor, lalu jalankan ulang `claude import`

3121 3148 

3122<h3 id="could-not-import-a-server-from-claude-desktop">3149<h3 id="could-not-import-a-server-from-claude-desktop">

3123 Tidak dapat mengimpor server dari Claude Desktop3150 Tidak dapat mengimpor server dari Claude Desktop

3124</h3>3151</h3>

3125 3152 

3126Claude Code tidak dapat menambahkan salah satu server yang Anda pilih di `claude mcp add-from-claude-desktop`. Command masih mengimpor server yang dipilih lainnya dan mencetak satu baris per server yang tidak dapat ditambahkan. Sebelum v2.1.205, server pertama yang gagal menghentikan impor.3153Claude Code tidak dapat menambahkan salah satu server yang Anda pilih dalam `claude mcp add-from-claude-desktop`. Perintah tersebut tetap mengimpor server lain yang dipilih dan mencetak satu baris per server yang tidak dapat ditambahkan. Sebelum v2.1.205, server pertama yang gagal menghentikan impor.

3127 3154 

3128```text theme={null}3155```text theme={null}

3129Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.3156Could not import my server: Invalid name my server. Names can only contain letters, numbers, hyphens, and underscores.

3130```3157```

3131 3158 

3132Teks setelah nama server adalah alasannya. Yang paling umum adalah pemeriksaan nama: Claude Desktop memungkinkan karakter dalam nama server, seperti spasi dan titik, yang `claude mcp` batasi ke huruf, angka, tanda hubung, dan garis bawah. Alasan lain termasuk konfigurasi server yang gagal validasi dan server yang diblokir oleh [kebijakan MCP](/docs/id/managed-mcp) organisasi Anda.3159Teks setelah nama server adalah alasannya. Yang paling umum adalah pemeriksaan nama: Claude Desktop mengizinkan karakter dalam nama server, seperti spasi dan titik, yang dibatasi oleh `claude mcp` hanya pada huruf, angka, tanda hubung, dan garis bawah. Alasan lainnya termasuk konfigurasi server yang gagal validasi dan server yang diblokir oleh [kebijakan MCP](/docs/id/managed-mcp) organisasi Anda.

3133 3160 

3134**Yang harus dilakukan:**3161**Yang harus dilakukan:**

3135 3162 

3136* Ubah nama server di `claude_desktop_config.json` untuk hanya menggunakan huruf, angka, tanda hubung, dan garis bawah, kemudian jalankan `claude mcp add-from-claude-desktop` lagi3163* Ganti nama server di `claude_desktop_config.json` agar hanya menggunakan huruf, angka, tanda hubung, dan garis bawah, lalu jalankan `claude mcp add-from-claude-desktop` lagi

3137* Tambahkan server itu langsung dengan `claude mcp add` atau `claude mcp add-json` di bawah nama yang valid. Lihat [Import MCP servers from Claude Desktop](/docs/id/mcp#import-mcp-servers-from-claude-desktop).3164* Tambahkan server tersebut secara langsung dengan `claude mcp add` atau `claude mcp add-json` dengan nama yang valid. Lihat [Mengimpor server MCP dari Claude Desktop](/docs/id/mcp#import-mcp-servers-from-claude-desktop).

3138 3165 

3139<h3 id="cannot-add-mcp-server-to-the-managed-scope">3166<h3 id="cannot-add-mcp-server-to-the-managed-scope">

3140 Tidak dapat menambahkan server MCP ke scope yang dikelola3167 Tidak dapat menambahkan server MCP ke cakupan managed

3141</h3>3168</h3>

3142 3169 

3143Anda menjalankan `claude mcp add` atau `claude mcp add-json` dengan `--scope managed`. Scope itu menyimpan server yang organisasi Anda sediakan melalui pengaturan yang dikelola [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers). Claude Code membacanya dari pengaturan yang dikelola saja, jadi command tidak dapat menulis server ke scope itu.3170Anda menjalankan `claude mcp add` atau `claude mcp add-json` dengan `--scope managed`. Cakupan tersebut menampung server yang disediakan organisasi Anda melalui pengaturan terkelola [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers). Claude Code hanya membacanya dari pengaturan terkelola, sehingga perintah tersebut tidak dapat menulis server ke cakupan tersebut.

3144 3171 

3145```text theme={null}3172```text theme={null}

3146Cannot add MCP server to scope: managed3173Cannot add MCP server to scope: managed


3148 3175 

3149**Yang harus dilakukan:**3176**Yang harus dilakukan:**

3150 3177 

3151* Tambahkan server ke scope yang dapat Anda tulis: `local`, `user`, atau `project`. Tanpa `--scope`, command menggunakan `local`. Lihat [MCP installation scopes](/docs/id/mcp#mcp-installation-scopes)3178* Tambahkan server ke cakupan yang dapat Anda tulis: `local`, `user`, atau `project`. Tanpa `--scope`, perintah menggunakan `local`. Lihat [Cakupan instalasi MCP](/docs/id/mcp#mcp-installation-scopes)

3152* Untuk menyediakan server ke setiap pengguna di organisasi Anda, tambahkan ke [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) dalam pengaturan yang dikelola yang Anda deploy3179* Untuk menyediakan server bagi setiap pengguna di organisasi Anda, tambahkan ke [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) dalam pengaturan terkelola yang Anda deploy

3153 3180 

3154<h3 id="cant-read-mcp-json">3181<h3 id="cant-read-mcp-json">

3155 Tidak dapat membaca .mcp.json3182 Tidak dapat membaca .mcp.json

3156</h3>3183</h3>

3157 3184 

3158Command yang membaca [`.mcp.json`](/docs/id/mcp#project-scope) project, seperti `claude mcp add` atau `claude mcp add-json` dengan `--scope project`, atau `claude mcp remove`, menemukan bahwa file di direktori saat ini bukan file reguler atau lebih besar dari 2 MiB, jadi keluar dengan kesalahan ini alih-alih membaca file.3185Perintah yang membaca [`.mcp.json`](/docs/id/mcp#project-scope) proyek, seperti `claude mcp add` atau `claude mcp add-json` dengan `--scope project`, atau `claude mcp remove`, mendapati bahwa file di direktori Anda saat ini bukan file biasa atau lebih besar dari 2 MiB, sehingga perintah keluar dengan error ini alih-alih membaca file tersebut.

3159 3186 

3160```text theme={null}3187```text theme={null}

3161Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.3188Can't read .mcp.json: it isn't a regular file or is larger than 2097152 bytes. Fix or remove it, then run the command again.

3162```3189```

3163 3190 

3164Sebelum v2.1.257, FIFO di `.mcp.json` membiarkan command menunggu selamanya tanpa output, dan symlink ke file perangkat seperti `/dev/zero` menumbuhkan memori sampai proses dibunuh.3191Sebelum v2.1.257, FIFO di `.mcp.json` membuat perintah menunggu selamanya tanpa output, dan symlink ke file perangkat seperti `/dev/zero` membuat memori bertambah hingga proses dihentikan.

3165 3192 

3166**Yang harus dilakukan:**3193**Yang harus dilakukan:**

3167 3194 

3168* Periksa apa yang duduk di `.mcp.json` di direktori saat ini. Ganti dengan file JSON biasa dalam [format project-scope](/docs/id/mcp#project-scope), atau hapus, kemudian jalankan command lagi.3195* Periksa apa yang ada di `.mcp.json` di direktori Anda saat ini. Ganti dengan file JSON biasa dalam [format cakupan proyek](/docs/id/mcp#project-scope), atau hapus, lalu jalankan perintah lagi.

3169 3196 

3170<h3 id="mcp-server-was-not-saved-or-removed">3197<h3 id="mcp-server-was-not-saved-or-removed">

3171 Server MCP tidak disimpan atau dihapus3198 Server MCP tidak disimpan atau dihapus

3172</h3>3199</h3>

3173 3200 

3174Anda menjalankan `claude mcp add`, `claude mcp add-json`, atau `claude mcp remove` untuk server dalam scope `user` atau `local` [scope](/docs/id/mcp#mcp-installation-scopes). Kedua scope disimpan di `~/.claude.json`, dan perubahan tidak ada dalam file itu ketika Claude Code membacanya kembali setelah menulis. Command keluar dengan kesalahan ini alih-alih baris suksesnya.3201Anda menjalankan `claude mcp add`, `claude mcp add-json`, atau `claude mcp remove` untuk server dalam [cakupan](/docs/id/mcp#mcp-installation-scopes) `user` atau `local`. Kedua cakupan disimpan di `~/.claude.json`, dan perubahan tersebut tidak ada di file itu ketika Claude Code membacanya kembali setelah menulis. Perintah keluar dengan error ini alih-alih baris keberhasilannya.

3175 3202 

3176```text theme={null}3203```text theme={null}

3177MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.3204MCP server "example" was not saved to /home/user/.claude.json. If that file is read-only or protected by a sandbox, make it writable or run the command outside the sandbox, then add the server again.

3178```3205```

3179 3206 

3180Setelah remove, pesan membaca `was not removed from` dan berakhir dengan `then remove the server again`. Untuk server scope `local`, path diikuti oleh direktori project yang entri milik, sebagai `(local scope for /path/to/project)`.3207Setelah penghapusan, pesan berbunyi `was not removed from` dan diakhiri dengan `then remove the server again`. Untuk server dengan cakupan `local`, path diikuti oleh direktori proyek tempat entri tersebut berada, sebagai `(local scope for /path/to/project)`.

3181 3208 

3182Sebelum v2.1.283, `claude mcp add`, `claude mcp add-json`, dan `claude mcp remove` melaporkan kesuksesan bahkan ketika perubahan tidak mencapai file.3209Sebelum v2.1.283, `claude mcp add`, `claude mcp add-json`, dan `claude mcp remove` melaporkan keberhasilan bahkan ketika perubahan tidak mencapai file.

3183 3210 

3184**Yang harus dilakukan:**3211**Yang harus dilakukan:**

3185 3212 

3186* Buat file yang pesan namakan dapat ditulis, atau jalankan command di luar sandbox, kemudian jalankan command add atau remove yang sama lagi.3213* Jadikan file yang disebutkan dalam pesan dapat ditulis, atau jalankan perintah di luar sandbox, lalu jalankan perintah add atau remove yang sama lagi.

3187 3214 

3188<h3 id="mcp-server-may-not-have-been-saved-or-removed">3215<h3 id="mcp-server-may-not-have-been-saved-or-removed">

3189 Server MCP mungkin tidak disimpan atau dihapus3216 Server MCP mungkin tidak disimpan atau dihapus

3190</h3>3217</h3>

3191 3218 

3192Anda menjalankan `claude mcp add`, `claude mcp add-json`, atau `claude mcp remove` untuk server dalam scope `user` atau `local` [scope](/docs/id/mcp#mcp-installation-scopes), dan Claude Code tidak dapat membaca `~/.claude.json` kembali untuk mengkonfirmasi perubahan. Perubahan mungkin atau mungkin tidak ada di disk. Teks dalam tanda kurung adalah kesalahan dari pembacaan itu.3219Anda menjalankan `claude mcp add`, `claude mcp add-json`, atau `claude mcp remove` untuk server dalam [cakupan](/docs/id/mcp#mcp-installation-scopes) `user` atau `local`, dan Claude Code tidak dapat membaca kembali `~/.claude.json` untuk mengonfirmasi perubahan. Perubahan tersebut mungkin ada atau mungkin tidak ada di disk. Teks dalam tanda kurung adalah error dari pembacaan tersebut.

3193 3220 

3194```text theme={null}3221```text theme={null}

3195MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.3222MCP server "example" may not have been saved: /home/user/.claude.json could not be read to confirm the change (EACCES: permission denied, open '/home/user/.claude.json'). Run `claude mcp get example` to check, then add the server again if it is missing.

3196```3223```

3197 3224 

3198Setelah remove, pesan membaca `may not have been removed` dan berakhir dengan `then remove the server again if it is still listed`.3225Setelah penghapusan, pesan berbunyi `may not have been removed` dan diakhiri dengan `then remove the server again if it is still listed`.

3199 3226 

3200Sebelum v2.1.283, command melaporkan kesuksesan bahkan ketika perubahan tidak dapat dikonfirmasi.3227Sebelum v2.1.283, perintah-perintah tersebut melaporkan keberhasilan bahkan ketika perubahan tidak dapat dikonfirmasi.

3201 3228 

3202**Yang harus dilakukan:**3229**Yang harus dilakukan:**

3203 3230 

3204* Jalankan `claude mcp get <name>` untuk memeriksa apakah perubahan ada di disk. Untuk server scope `local`, jalankan dari direktori project yang server milik, karena scope lokal per project.3231* Jalankan `claude mcp get <name>` untuk memeriksa apakah perubahan ada di disk. Untuk server dengan cakupan `local`, jalankan dari direktori proyek tempat server tersebut berada, karena cakupan local bersifat per proyek.

3205* Jika server hilang setelah add, atau masih terdaftar setelah remove, jalankan command add atau remove yang sama lagi.3232* Jika server tidak ada setelah penambahan, atau masih tercantum setelah penghapusan, jalankan perintah add atau remove yang sama lagi.

3206 3233 

3207<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">3234<h3 id="anthropic-hosted-and-doesnt-support-local-oauth">

3208 Server adalah Anthropic-hosted dan tidak mendukung OAuth lokal3235 Server di-host oleh Anthropic dan tidak mendukung OAuth lokal

3209</h3>3236</h3>

3210 3237 

3211Anda memulai sign-in untuk server MCP yang URL-nya menunjuk ke host connector yang dihosting Anthropic yang mengautentikasi melalui penyedia identitas pihak ketiga. Host ini termasuk `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com`, dan `gcal.mcp.claude.com`. Claude Code menolak untuk memulai alur OAuth lokal untuk host ini dari panel `/mcp` dan `claude mcp login`, karena [sign-in mereka hanya bekerja melalui claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai).3238Anda memulai proses masuk untuk server MCP yang URL-nya mengarah ke host konektor yang di-host oleh Anthropic yang melakukan autentikasi melalui penyedia identitas pihak ketiga. Host ini termasuk `microsoft365.mcp.claude.com`, `gmail.mcp.claude.com`, dan `gcal.mcp.claude.com`. Claude Code menolak memulai alur OAuth lokalnya untuk host ini, baik dari panel `/mcp` maupun `claude mcp login`, karena [proses masuknya hanya berfungsi melalui claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai).

3212 3239 

3213```text theme={null}3240```text theme={null}

3214"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.3241"gmail" is Anthropic-hosted and doesn't support local OAuth. Connect it via Settings → Connectors on claude.ai (requires `claude login`), then it'll be available here automatically.

3215```3242```

3216 3243 

3217Claude Code mencocokkan host ini dengan URL, jadi pesan muncul ketika server yang Anda tambahkan dengan `claude mcp add` atau di `.mcp.json` menunjuk ke salah satunya.

3218 

3219**Yang harus dilakukan:**3244**Yang harus dilakukan:**

3220 3245 

3221* Hapus entri Anda dengan `claude mcp remove <name>`, jadi tidak dapat menyembunyikan connector claude.ai di URL yang sama3246* Hapus entri Anda dengan `claude mcp remove <name>`, agar entri tersebut tidak menyembunyikan konektor claude.ai di URL yang sama

3222* Setelah menghapusnya, hubungkan layanan di [claude.ai/customize/connectors](https://claude.ai/customize/connectors), saat masuk ke akun yang Anda gunakan di Claude Code. Setelah terhubung, [connector muncul di Claude Code secara otomatis](/docs/id/mcp#use-mcp-servers-from-claude-ai) jika metode autentikasi aktif Anda adalah login langganan claude.ai3247* Setelah menghapusnya, hubungkan layanan di [claude.ai/customize/connectors](https://claude.ai/customize/connectors), dalam keadaan masuk ke akun yang Anda gunakan di Claude Code. Setelah terhubung, [konektor muncul di Claude Code secara otomatis](/docs/id/mcp#use-mcp-servers-from-claude-ai) jika metode autentikasi aktif Anda adalah login langganan claude.ai

3223 3248 

3224<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">3249<h3 id="server-rejected-the-authorization-header-minted-by-the-configured-headershelper">

3225 Server menolak header Authorization yang dicetak oleh headersHelper yang dikonfigurasi3250 Server menolak header Authorization yang dibuat oleh headersHelper yang dikonfigurasi

3226</h3>3251</h3>

3227 3252 

3228Server MCP yang [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication)-nya memasok header `Authorization` menjawab koneksi dengan HTTP 401 atau 403, jadi Claude Code melaporkan koneksi sebagai gagal. Karena helper memasok header `Authorization`, Claude Code [tidak jatuh kembali ke OAuth](/docs/id/mcp#authenticate-with-remote-mcp-servers) untuk server:3253Server MCP yang header `Authorization`-nya disediakan oleh [`headersHelper`](/docs/id/mcp#use-dynamic-headers-for-custom-authentication) menjawab koneksi dengan HTTP 401 atau 403, sehingga Claude Code melaporkan koneksi sebagai gagal. Karena helper menyediakan header `Authorization`, Claude Code [tidak melakukan fallback ke OAuth](/docs/id/mcp#authenticate-with-remote-mcp-servers) untuk server tersebut:

3229 3254 

3230```text theme={null}3255```text theme={null}

3231Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.3256Server rejected the Authorization header minted by the configured headersHelper (HTTP 401). Check that the helper command returns a valid credential for this MCP endpoint — OAuth fallback is disabled when the helper supplies Authorization.

3232```3257```

3233 3258 

3234Claude Code menjalankan kembali helper pada setiap upaya koneksi, jadi retry setelah penolakan sementara, seperti race rotasi token, dapat berhasil dengan kredensial segar.3259Claude Code menjalankan ulang helper pada setiap upaya koneksi, sehingga retry setelah penolakan sementara, seperti race rotasi token, dapat berhasil dengan kredensial baru.

3235 3260 

3236**Yang harus dilakukan:**3261**Yang harus dilakukan:**

3237 3262 

3238* Jalankan command `headersHelper` sendiri dengan cara Claude Code menjalankannya: dari [direktori Claude Code menjalankannya](/docs/id/mcp#where-the-helper-runs), dengan [variabel lingkungan Claude Code menetapkannya](/docs/id/mcp#use-dynamic-headers-for-custom-authentication), dan tanpa [variabel kredensial Claude Code menghapusnya](/docs/id/mcp#which-variables-a-helper-can-read) untuk server dari `.mcp.json` project, plugin, atau file agent project. Periksa bahwa mencetak nilai `Authorization` yang endpoint server terima3263* Jalankan perintah `headersHelper` sendiri dengan cara yang sama seperti Claude Code menjalankannya: dari [direktori tempat Claude Code menjalankannya](/docs/id/mcp#where-the-helper-runs), dengan [environment variable yang diatur Claude Code untuknya](/docs/id/mcp#use-dynamic-headers-for-custom-authentication), dan tanpa [variabel kredensial yang dihapus Claude Code](/docs/id/mcp#which-variables-a-helper-can-read) untuk server dari `.mcp.json` proyek, plugin, atau file agent proyek. Periksa bahwa perintah tersebut mencetak nilai `Authorization` yang diterima oleh endpoint server

3239* Setelah memperbaiki helper atau sumber kredensialnya, pilih server di `/mcp` dan pilih **Reconnect**3264* Setelah memperbaiki helper atau sumber kredensialnya, pilih server di `/mcp` dan pilih **Reconnect**

3240 3265 

3241Sebelum v2.1.248, Claude Code menjalankan penemuan OAuth untuk server yang helper-nya memasok header `Authorization`. Penemuan itu dapat gagal dengan `Incompatible auth server: does not support dynamic client registration` alih-alih melaporkan kredensial yang ditolak.3266Sebelum v2.1.248, Claude Code menjalankan discovery OAuth untuk server yang helper-nya menyediakan header `Authorization`. Discovery tersebut dapat gagal dengan `Incompatible auth server: does not support dynamic client registration` alih-alih melaporkan kredensial yang ditolak.

3242 3267 

3243<h3 id="mcp-permission-prompt-tool-not-found">3268<h3 id="mcp-permission-prompt-tool-not-found">

3244 Tool prompt izin MCP tidak ditemukan3269 Tool permintaan izin MCP tidak ditemukan

3245</h3>3270</h3>

3246 3271 

3247Tool yang Anda berikan ke [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) tidak ada di antara tool MCP yang terhubung ketika run pertama kali memerlukan keputusan izin, baik karena server-nya tidak pernah terhubung atau karena tidak ada server yang terhubung yang mengekspos tool dengan nama itu. Claude Code masih mengirim prompt Anda: run [non-interaktif](/docs/id/headless) keluar dengan kesalahan ini, dan kode keluar 1, pada panggilan tool pertama, jadi menghasilkan tidak ada jawaban meskipun permintaan dibuat. Sebelum prompt pertama, Claude Code menunggu hingga timeout koneksi per-server 30 detik yang ditetapkan oleh [`MCP_TIMEOUT`](/docs/id/env-vars) untuk server itu terhubung. Sebelum v2.1.206, startup tidak menunggu server selesai terhubung, jadi server yang lambat dimulai tetapi sehat menghasilkan kesalahan ini juga.3272Tool yang Anda teruskan ke [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) tidak termasuk di antara tool MCP yang terhubung ketika run pertama kali memerlukan keputusan izin, baik karena server-nya tidak pernah terhubung maupun karena tidak ada server terhubung yang mengekspos tool dengan nama tersebut. Claude Code tetap mengirimkan prompt Anda: run [non-interaktif](/docs/id/headless) keluar dengan error ini, dan exit code 1, pada panggilan tool pertama, sehingga tidak menghasilkan jawaban meskipun permintaan telah dibuat. Sebelum prompt pertama, Claude Code menunggu hingga timeout koneksi per server selama 30 detik yang diatur oleh [`MCP_TIMEOUT`](/docs/id/env-vars) agar server tersebut terhubung. Sebelum v2.1.206, startup tidak menunggu server selesai terhubung, sehingga server yang lambat dimulai tetapi sehat juga menghasilkan error ini.

3248 3273 

3249```text theme={null}3274```text theme={null}

3250Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none3275Error: MCP tool mcp__permissions__approve (passed via --permission-prompt-tool) not found. Available MCP tools: none

3251```3276```

3252 3277 

3253Daftar setelah `Available MCP tools:` menamai tool MCP yang terhubung.3278Daftar setelah `Available MCP tools:` menyebutkan tool MCP yang terhubung.

3254 3279 

3255**Yang harus dilakukan:**3280**Yang harus dilakukan:**

3256 3281 

3257* Periksa bahwa server dimulai dan tetap terhubung: jalankan `claude mcp list` di direktori yang sama dan konfirmasi server terdaftar sebagai terhubung3282* Periksa bahwa server dimulai dan tetap terhubung: jalankan `claude mcp list` di direktori yang sama dan pastikan server tercantum sebagai terhubung

3258* Konfirmkan nama tool cocok dengan nama `mcp__<server>__<tool>` yang server ekspos3283* Pastikan nama tool cocok dengan nama `mcp__<server>__<tool>` yang diekspos server

3259* Jika server memerlukan lebih lama dari 30 detik untuk dimulai, naikkan [`MCP_TIMEOUT`](/docs/id/env-vars)3284* Jika server membutuhkan lebih dari 30 detik untuk dimulai, naikkan [`MCP_TIMEOUT`](/docs/id/env-vars)

3260 3285 

3261<h3 id="oauth-callback-port-is-already-in-use">3286<h3 id="oauth-callback-port-is-already-in-use">

3262 Port callback OAuth sudah digunakan3287 Port callback OAuth sudah digunakan

3263</h3>3288</h3>

3264 3289 

3265Ketika Anda masuk ke server MCP jarak jauh dengan OAuth, Claude Code memulai pendengar lokal untuk menerima callback sign-in. Jika port yang pendengar itu butuhkan dipegang oleh proses lain, sign-in gagal dengan pesan ini. Ini sebagian besar terjadi dengan [port callback tetap](/docs/id/mcp#use-a-fixed-oauth-callback-port) yang ditetapkan melalui variabel [`MCP_OAUTH_CALLBACK_PORT`](/docs/id/env-vars) atau `--callback-port`, karena tanpa satu Claude Code memilih port yang tersedia.3290Ketika Anda masuk ke server MCP jarak jauh dengan OAuth, Claude Code memulai listener lokal untuk menerima callback masuk. Jika port yang dibutuhkan listener tersebut dipegang oleh proses lain, proses masuk gagal dengan pesan ini. Hal ini sebagian besar terjadi dengan [port callback tetap](/docs/id/mcp#use-a-fixed-oauth-callback-port) yang diatur melalui variabel [`MCP_OAUTH_CALLBACK_PORT`](/docs/id/env-vars) atau `--callback-port`, karena tanpanya Claude Code memilih port yang tersedia.

3266 3291 

3267```text theme={null}3292```text theme={null}

3268OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.3293OAuth callback port <port> is already in use — another process may be holding it. Run `lsof -ti:<port> -sTCP:LISTEN` to find it.

3269```3294```

3270 3295 

3271Di Windows, command yang disarankan adalah `netstat -ano | findstr :<port>` sebagai gantinya.3296Di Windows, perintah yang disarankan adalah `netstat -ano | findstr :<port>` sebagai gantinya.

3272 3297 

3273**Yang harus dilakukan:**3298**Yang harus dilakukan:**

3274 3299 

3275* Jalankan command dari pesan untuk menemukan proses yang memegang port, dan hentikan atau tunggu selesai3300* Jalankan perintah dari pesan untuk menemukan proses yang memegang port, lalu hentikan proses tersebut atau tunggu hingga selesai

3276* Jika program lain memerlukan port itu secara permanen, daftarkan URI redirect berbeda dengan server dan atur port-nya dengan `MCP_OAUTH_CALLBACK_PORT` atau `--callback-port`, mana pun yang Anda gunakan3301* Jika program lain membutuhkan port tersebut secara permanen, daftarkan redirect URI yang berbeda pada server dan atur port-nya dengan `MCP_OAUTH_CALLBACK_PORT` atau `--callback-port`, mana pun yang Anda gunakan

3277* Kemudian mulai sign-in lagi, misalnya dengan memilih server di `/mcp`3302* Kemudian mulai proses masuk lagi, misalnya dengan memilih server di `/mcp`

3278 3303 

3279<h3 id="no-available-ports-for-oauth-redirect">3304<h3 id="no-available-ports-for-oauth-redirect">

3280 Tidak ada port yang tersedia untuk redirect OAuth3305 Tidak ada port yang tersedia untuk redirect OAuth

3281</h3>3306</h3>

3282 3307 

3283Ketika Anda masuk ke server MCP jarak jauh dengan [OAuth](/docs/id/mcp#authenticate-with-remote-mcp-servers), Claude Code memulai pendengar lokal untuk menerima callback sign-in. Sign-in gagal dengan pesan ini ketika Claude Code tidak dapat mengikat port lokal untuk itu. Sesuatu di mesin mencegah mendengarkan di `127.0.0.1`, misalnya software keamanan atau kebijakan sandbox yang menolak pendengar lokal.3308Ketika Anda masuk ke server MCP jarak jauh dengan [OAuth](/docs/id/mcp#authenticate-with-remote-mcp-servers), Claude Code memulai listener lokal untuk menerima callback masuk. Proses masuk gagal dengan pesan ini ketika Claude Code tidak dapat mengikat port lokal untuknya. Sesuatu di mesin mencegahnya mendengarkan di `127.0.0.1`, misalnya perangkat lunak keamanan atau kebijakan sandbox yang menolak listener lokal.

3284 3309 

3285```text theme={null}3310```text theme={null}

3286No available ports for OAuth redirect3311No available ports for OAuth redirect

3287```3312```

3288 3313 

3289Sebelum v2.1.268, Claude Code tidak jatuh kembali ke port yang ditugaskan sistem operasi, jadi pesan juga muncul ketika hanya port yang dipilih sendiri tidak dapat diikat. Itu dapat terjadi pada host Windows di mana Hyper-V memesan rentang port yang mencakup port yang Claude Code pilih dari.3314Sebelum v2.1.268, Claude Code tidak melakukan fallback ke port yang ditetapkan oleh sistem operasi, sehingga pesan ini juga muncul ketika hanya port yang dipilihnya sendiri yang tidak dapat diikat. Hal itu dapat terjadi pada host Windows di mana Hyper-V mencadangkan rentang port yang mencakup port yang dipilih oleh Claude Code.

3290 3315 

3291**Yang harus dilakukan:**3316**Yang harus dilakukan:**

3292 3317 

3293* Periksa apakah software keamanan atau kebijakan sandbox memblokir proses dari mendengarkan di `127.0.0.1`, dan izinkan Claude Code mengikat port lokal3318* Periksa apakah perangkat lunak keamanan atau kebijakan sandbox memblokir proses agar tidak mendengarkan di `127.0.0.1`, dan izinkan Claude Code untuk mengikat port lokal

3294* Kemudian mulai sign-in lagi, misalnya dengan memilih server di `/mcp`3319* Kemudian mulai proses masuk lagi, misalnya dengan memilih server di `/mcp`

3295 3320 

3296<h3 id="security-review-fails-without-origin-head">3321<h3 id="security-review-fails-without-origin-head">

3297 /security-review gagal tanpa origin/HEAD3322 /security-review gagal tanpa origin/HEAD

3298</h3>3323</h3>

3299 3324 

3300[`/security-review`](/docs/id/commands#all-commands) membangun konteks review dengan membedakan branch Anda terhadap `origin/HEAD`, ref lokal yang mencatat branch mana yang default di remote `origin` Anda. Ketika ref itu tidak ada, command git yang mengumpulkan diff gagal dan review berhenti sebelum dimulai.3325[`/security-review`](/docs/id/commands#all-commands) membangun konteks tinjauannya dengan membuat diff branch Anda terhadap `origin/HEAD`, ref lokal yang mencatat branch mana yang menjadi default pada remote `origin` Anda. Ketika ref tersebut tidak ada, perintah git yang mengumpulkan diff gagal dan tinjauan berhenti sebelum dimulai.

3301 3326 

3302```text theme={null}3327```text theme={null}

3303Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]3328Error: Shell command failed for pattern "!`git diff --name-only origin/HEAD...`": [stderr]


3306'git <command> [<revision>...] -- [<file>...]'3331'git <command> [<revision>...] -- [<file>...]'

3307```3332```

3308 3333 

3309Pesan dapat mengutip `git log` atau `git diff` berbeda sebagai gantinya. Git membuat `origin/HEAD` hanya ketika remote mengiklankan branch default dan refspec fetch Anda mencakupnya, yang full `git clone` dari remote dengan commit lakukan. Ref hilang dalam setup ini:3334Pesan tersebut mungkin mengutip `git log` atau `git diff` yang berbeda. Git membuat `origin/HEAD` hanya ketika remote mengiklankan branch default dan refspec fetch Anda mencakupnya, yang dilakukan oleh `git clone` penuh dari remote yang memiliki commit. Ref tersebut tidak ada dalam penyiapan berikut:

3310 3335 

3311* Single-branch atau CI checkout, yang mengambil refspec terlalu sempit3336* Checkout single-branch atau CI, yang mengambil refspec terlalu sempit

3312* Remote yang server-side HEAD menunjuk ke branch yang tidak ada yang dorong3337* Remote yang HEAD sisi servernya menunjuk ke branch yang tidak pernah di-push siapa pun

3313* Repository tanpa remote `origin`, atau yang tidak pernah Anda ambil3338* Repositori tanpa remote `origin`, atau yang tidak pernah Anda fetch

3314 3339 

3315Claude Code menunjukkan kesalahan yang sama untuk skill apa pun yang [menyuntikkan konteks dinamis](/docs/id/skills#when-an-injected-command-fails), dan command yang disuntikkan gagal menghentikan invokasi skill itu. Dua string sibling api sebelum command berjalan sama sekali:3340Claude Code menampilkan error yang sama untuk skill apa pun yang [menyisipkan konteks dinamis](/docs/id/skills#when-an-injected-command-fails), dan perintah sisipan yang gagal membatalkan pemanggilan skill tersebut. Dua string serupa muncul sebelum perintah dijalankan sama sekali:

3316 3341 

3317* `Shell command permission check failed for pattern "..."`: pemeriksaan izin command tidak mengizinkannya. [Permission checks on injected commands](/docs/id/skills#permission-checks-on-injected-commands) mencakup hasil mana yang menghentikan dalam setiap mode izin dan cara pre-approve command dengan `allowed-tools`3342* `Shell command permission check failed for pattern "..."`: pemeriksaan izin perintah tidak mengizinkannya. [Pemeriksaan izin pada perintah sisipan](/docs/id/skills#permission-checks-on-injected-commands) membahas hasil mana yang membatalkan di setiap mode izin dan cara menyetujui perintah sebelumnya dengan `allowed-tools`

3318* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter skill menuntut bash di mesin tanpanya. Instal Git untuk Windows atau ubah frontmatter ke `shell: powershell`. Lihat [How injected commands run](/docs/id/skills#how-injected-commands-run)3343* ``Skill <name> requires bash (`shell: bash` in frontmatter) but Git Bash was not found``: frontmatter skill menuntut bash pada mesin yang tidak memilikinya. Instal Git for Windows atau ubah frontmatter menjadi `shell: powershell`. Lihat [Cara perintah sisipan dijalankan](/docs/id/skills#how-injected-commands-run)

3319 3344 

3320**Yang harus dilakukan:**3345**Yang harus dilakukan:**

3321 3346 

3322* Buat ref dengan menamai branch default remote Anda: `git remote set-head origin <default-branch>`. Ini bekerja kapan pun ref tracking lokal `origin/<default-branch>` ada. Jika tidak, seperti dalam clone single-branch, ambil branch terlebih dahulu: jalankan `git remote set-branches --add origin <branch>`, kemudian `git fetch origin`, kemudian jalankan kembali command set-head. Jalankan kembali `/security-review`.3347* Buat ref dengan menyebutkan branch default remote Anda: `git remote set-head origin <default-branch>`. Ini berfungsi setiap kali ref pelacakan lokal `origin/<default-branch>` ada. Jika tidak ada, seperti pada clone single-branch, fetch branch tersebut terlebih dahulu: jalankan `git remote set-branches --add origin <branch>`, lalu `git fetch origin`, lalu jalankan ulang perintah set-head. Jalankan ulang `/security-review`.

3323* Jika Anda lebih suka tidak menamai branch, jalankan `git fetch origin` dan kemudian `git remote set-head origin --auto`, yang menanyakan remote branch mana yang default-nya. Gagal dengan `error: Cannot determine remote HEAD` ketika remote tidak mengiklankan branch default, karena kosong atau HEAD-nya menunjuk ke branch yang tidak ada yang dorong; namai branch secara eksplisit sebagai gantinya. Gagal dengan `error: Not a valid ref` ketika clone Anda tidak mengambil branch itu; perluas refspec seperti di atas terlebih dahulu.3348* Jika Anda lebih suka tidak menyebutkan branch, jalankan `git fetch origin` lalu `git remote set-head origin --auto`, yang menanyakan kepada remote branch mana yang menjadi default-nya. Perintah ini gagal dengan `error: Cannot determine remote HEAD` ketika remote tidak mengiklankan branch default, karena remote kosong atau HEAD-nya menunjuk ke branch yang tidak pernah di-push siapa pun; sebutkan branch secara eksplisit sebagai gantinya. Perintah ini gagal dengan `error: Not a valid ref` ketika clone Anda tidak mengambil branch tersebut; perluas refspec seperti di atas terlebih dahulu.

3324* Jika repository tidak memiliki remote, tambahkan dengan `git remote add origin <url>` dan ambil sebelum membuat ref. Jika remote kosong, dorong branch Anda terlebih dahulu dengan `git push -u origin HEAD` dan namai branch itu dalam command set-head; `origin/HEAD` kemudian menunjuk ke branch yang baru saja Anda dorong, jadi `/security-review` melihat diff kosong sampai branch menyimpang darinya.3349* Jika repositori tidak memiliki remote, tambahkan dengan `git remote add origin <url>` dan lakukan fetch sebelum membuat ref. Jika remote kosong, push branch Anda terlebih dahulu dengan `git push -u origin HEAD` dan sebutkan branch tersebut dalam perintah set-head; `origin/HEAD` kemudian menunjuk ke branch yang baru saja Anda push, sehingga `/security-review` melihat diff kosong sampai branch menyimpang darinya.

3325 3350 

3326<h3 id="input-must-be-provided-when-using-print">3351<h3 id="input-must-be-provided-when-using-print">

3327 Input harus disediakan saat menggunakan `--print`3352 Input harus diberikan saat menggunakan `--print`

3328</h3>3353</h3>

3329 3354 

3330Bare `claude` memerlukan stdout menjadi terminal untuk memulai UI interaktif. Ketika stdout dialihkan, atau konsol bukan terminal nyata, seperti PowerShell ISE dan beberapa pane output IDE, `claude` berjalan [non-interaktif](/docs/id/headless) sebagai gantinya. Itu adalah mode yang sama dengan `claude -p`, yang memerlukan prompt, jadi pesan menamai `--print` bahkan ketika Anda tidak melewatkan flag. Melewatkan `-p`/`--print` tanpa prompt dan tidak ada yang dipipa di stdin menghasilkan kesalahan yang sama di mana pun.3355`claude` tanpa argumen memerlukan stdout berupa terminal untuk memulai UI interaktif. Ketika stdout dialihkan, atau konsol bukan terminal sungguhan, seperti PowerShell ISE dan beberapa panel output IDE, `claude` berjalan secara [non-interaktif](/docs/id/headless) sebagai gantinya. Itu adalah mode yang sama dengan `claude -p`, yang memerlukan prompt, sehingga pesan menyebutkan `--print` meskipun Anda tidak meneruskan flag tersebut. Meneruskan `-p`/`--print` tanpa prompt dan tanpa apa pun yang di-pipe ke stdin menghasilkan error yang sama di mana saja.

3331 3356 

3332```text theme={null}3357```text theme={null}

3333Error: Input must be provided either through stdin or as a prompt argument when using --print3358Error: Input must be provided either through stdin or as a prompt argument when using --print


3335 3360 

3336**Yang harus dilakukan:**3361**Yang harus dilakukan:**

3337 3362 

3338* Untuk penggunaan interaktif, jalankan `claude` di terminal nyata: Windows Terminal atau konsol PowerShell daripada ISE, dan terminal terintegrasi IDE Anda daripada pane output3363* Untuk penggunaan interaktif, jalankan `claude` di terminal sungguhan: Windows Terminal atau konsol PowerShell alih-alih ISE, dan terminal terintegrasi IDE Anda alih-alih panel output

3339* Untuk penggunaan satu kali, berikan prompt: `claude -p "your question"`, atau pipanya dengan `echo "your question" | claude -p`3364* Untuk penggunaan sekali jalan, teruskan prompt: `claude -p "your question"`, atau pipe dengan `echo "your question" | claude -p`

3340 3365 

3341<h3 id="input-contained-only-whitespace">3366<h3 id="input-contained-only-whitespace">

3342 Input hanya berisi whitespace3367 Input hanya berisi spasi kosong

3343</h3>3368</h3>

3344 3369 

3345Dalam [mode non-interaktif](/docs/id/headless), Claude Code menolak prompt yang terdiri sepenuhnya dari spasi, tab, atau newline alih-alih mengirimnya, karena API menolak pesan tanpa teks terlihat. Pesan mana yang Anda lihat tergantung di mana prompt kosong berasal:3370Dalam [mode non-interaktif](/docs/id/headless), Claude Code menolak prompt yang seluruhnya terdiri dari spasi, tab, atau baris baru alih-alih mengirimkannya, karena API menolak pesan tanpa teks yang terlihat. Pesan yang Anda lihat bergantung pada dari mana prompt kosong tersebut berasal:

3346 3371 

3347* **Argumen prompt atau stdin yang dipipa untuk `claude -p`**: `claude` keluar dengan `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`3372* **Argumen prompt atau stdin yang di-pipe untuk `claude -p`**: `claude` keluar dengan `Error: Input contained only whitespace. Provide a prompt with text through stdin or as a prompt argument when using --print`

3348* **Pesan yang dikirimkan ke sesi `--input-format stream-json` atau [Agent SDK](/docs/id/agent-sdk/overview) yang berjalan**: Claude Code mengakhiri giliran tanpa memanggil model dan sesi tetap dapat digunakan. Penolakan tiba sebagai pesan informatif dan sebagai teks hasil giliran: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`3373* **Pesan yang dikirimkan ke sesi `--input-format stream-json` atau [Agent SDK](/docs/id/agent-sdk/overview) yang sedang berjalan**: Claude Code mengakhiri giliran tanpa memanggil model dan sesi tetap dapat digunakan. Penolakan tiba sebagai pesan informasi dan sebagai teks hasil giliran: `Blank prompt — the message was only whitespace, so nothing was sent to the model.`

3349 3374 

3350Sebelum v2.1.229, Claude Code mengirim pesan whitespace-only ke API, yang menolak permintaan dengan kesalahan 400.3375Sebelum v2.1.229, Claude Code mengirimkan pesan yang hanya berisi spasi kosong ke API, yang menolak permintaan dengan error 400.

3351 3376 

3352**Yang harus dilakukan:**3377**Yang harus dilakukan:**

3353 3378 

3354* Sertakan teks terlihat dalam prompt. Jika script membangun prompt dari variabel atau file, periksa bahwa sumber tidak kosong sebelum memanggil Claude Code.3379* Sertakan teks yang terlihat dalam prompt. Jika skrip membangun prompt dari variabel atau file, periksa bahwa sumbernya tidak kosong sebelum memanggil Claude Code.

3355 3380 

3356<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">3381<h3 id="stream-json-input-carried-over-256m-characters-with-no-newline">

3357 stream-json input membawa lebih dari 256M karakter tanpa newline3382 Input stream-json membawa lebih dari 256M karakter tanpa baris baru

3358</h3>3383</h3>

3359 3384 

3360Program Anda mengirim lebih dari 268.435.456 karakter di stdin tanpa newline ke run `claude -p --input-format stream-json`, jadi Claude Code mencetak kesalahan ini ke stderr dan keluar dengan kode 1 alih-alih membuffer lebih banyak input. Pesan menyatakan anggaran itu sebagai `256M`. Sebelum v2.1.257, Claude Code membuffer input seperti itu tanpa batas, menumbuhkan memori sampai proses mogok atau dibunuh.3385Program Anda mengirimkan lebih dari 268.435.456 karakter di stdin tanpa baris baru ke run `claude -p --input-format stream-json`, sehingga Claude Code mencetak error ini ke stderr dan keluar dengan kode 1 alih-alih mem-buffer lebih banyak input. Pesan menyatakan batas tersebut sebagai `256M`. Sebelum v2.1.257, Claude Code mem-buffer input seperti itu tanpa batas, menambah memori hingga proses crash atau dihentikan.

3361 3386 

3362```text theme={null}3387```text theme={null}

3363Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.3388Error: stream-json input carried over 256M characters with no newline. Each stream-json message must be a single newline-terminated JSON line: either the producer is not newline-terminating its messages, or one message exceeded this budget.

3364```3389```

3365 3390 

3366Input sepanjang ini tanpa newline biasanya berarti producer bukan producer stream-json sama sekali, seperti file biner atau output log biasa yang dipipa secara tidak sengaja. Pesan tunggal di atas anggaran gagal pemeriksaan yang sama.3391Input sepanjang ini tanpa baris baru biasanya berarti produsennya sama sekali bukan produsen stream-json, seperti file biner atau output log biasa yang tidak sengaja di-pipe. Satu pesan yang melebihi batas gagal dalam pemeriksaan yang sama.

3367 3392 

3368**Yang harus dilakukan:**3393**Yang harus dilakukan:**

3369 3394 

3370* Periksa apa yang dipipa ke stdin. Dengan [`--input-format stream-json`](/docs/id/cli-reference#cli-flags), setiap pesan harus satu baris JSON yang diakhiri newline3395* Periksa apa yang di-pipe ke stdin. Dengan [`--input-format stream-json`](/docs/id/cli-reference#cli-flags), setiap pesan harus berupa satu baris JSON yang diakhiri baris baru

3371* Untuk mengirim teks biasa sebagai gantinya, hilangkan `--input-format stream-json`; `claude -p` membaca prompt teks biasa dari stdin secara default3396* Untuk mengirim teks biasa, hapus `--input-format stream-json`; `claude -p` membaca prompt teks biasa dari stdin secara default

3372 3397 

3373<h3 id="unknown-command">3398<h3 id="unknown-command">

3374 Perintah tidak dikenal3399 Perintah tidak dikenal

3375</h3>3400</h3>

3376 3401 

3377Dalam sesi terminal interaktif, Anda mengirimkan nama `/` yang tidak cocok dengan command apa pun dalam sesi ini, jadi Claude Code melaporkan nama alih-alih menjalankan apa pun:3402Dalam sesi terminal interaktif, Anda mengirimkan nama `/` yang tidak cocok dengan perintah apa pun dalam sesi ini, sehingga Claude Code melaporkan nama tersebut alih-alih menjalankan apa pun:

3378 3403 

3379```text theme={null}3404```text theme={null}

3380Unknown command: /hepl. Did you mean /help?3405Unknown command: /hepl. Did you mean /help?

3381```3406```

3382 3407 

3383Claude Code menyarankan nama command atau alias terdekat yang menu daftarkan dalam sesi ini. Ketika tidak ada yang dekat, pesan berakhir setelah nama. Penyebabnya biasanya salah satu dari berikut:3408Claude Code menyarankan nama perintah atau alias terdekat yang dicantumkan menu dalam sesi ini. Ketika tidak ada yang mendekati, pesan berakhir setelah nama tersebut. Penyebabnya biasanya salah satu dari berikut ini:

3384 3409 

3385* Typo, seperti `/hepl` untuk `/help`. [How the command menu matches what you type](/docs/id/commands#how-the-command-menu-matches-what-you-type) mencakup memilih kecocokan dekat sebelum Anda kirimkan3410* Salah ketik, seperti `/hepl` untuk `/help`. [Cara menu perintah mencocokkan apa yang Anda ketik](/docs/id/commands#how-the-command-menu-matches-what-you-type) membahas cara memilih kecocokan terdekat sebelum Anda mengirimkan

3386* Command yang ada tetapi tidak tersedia dalam sesi ini karena persyaratan tidak terpenuhi, seperti platform, plan, atau metode autentikasi Anda. Entri troubleshooting untuk [`/web-setup`](/docs/id/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) dan [`/schedule`](/docs/id/routines#schedule-returns-unknown-command) berjalan melalui dua kasus umum. Beberapa command menjawab dengan pesan mereka sendiri ketika kebijakan organisasi Anda menonaktifkannya, seperti [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)3411* Perintah yang ada tetapi tidak tersedia dalam sesi ini karena suatu persyaratan tidak terpenuhi, seperti platform, paket, atau metode autentikasi Anda. Entri pemecahan masalah untuk [`/web-setup`](/docs/id/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) dan [`/schedule`](/docs/id/routines#schedule-returns-unknown-command) menjelaskan dua kasus umum. Beberapa perintah menjawab dengan pesannya sendiri ketika kebijakan organisasi Anda menonaktifkannya, seperti [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)

3387* Command dari [plugin](/docs/id/plugins/overview) atau [server MCP](/docs/id/mcp#use-mcp-prompts-as-commands) yang tidak diinstal atau terhubung dalam sesi ini3412* Perintah dari [plugin](/docs/id/plugins/overview) atau [server MCP](/docs/id/mcp#use-mcp-prompts-as-commands) yang tidak diinstal atau tidak terhubung dalam sesi ini

3388 3413 

3389Claude Code menjawab nama `/` yang tidak cocok dengan cara ini hanya dalam sesi terminal interaktif. Dalam setiap sesi lain, mengirim prompt ke Claude sebagai pesan normal sebagai gantinya, dengan catatan bahwa command tidak berjalan dan daftar command yang Claude dapat jalankan dalam sesi. Sesi tersebut termasuk:3414Claude Code menjawab nama `/` yang tidak cocok dengan cara ini hanya dalam sesi terminal interaktif. Di setiap sesi lain, Claude Code mengirimkan prompt ke Claude sebagai pesan biasa, dengan catatan bahwa perintah tidak dijalankan dan daftar perintah yang dapat dijalankan Claude dalam sesi tersebut. Sesi tersebut meliputi:

3390 3415 

3391* Run `-p`3416* Run `-p`

3392* Aplikasi [Agent SDK](/docs/id/agent-sdk/overview)3417* Aplikasi [Agent SDK](/docs/id/agent-sdk/overview)

3393* Tab Code dari [Desktop app](/docs/id/desktop)3418* Tab Code di [aplikasi Desktop](/docs/id/desktop)

3394* Panel chat dari [VS Code extension](/docs/id/vs-code)3419* Panel obrolan [ekstensi VS Code](/docs/id/vs-code)

3395* [Sesi cloud](/docs/id/claude-code-on-the-web) dan [routine](/docs/id/routines)3420* [Sesi cloud](/docs/id/claude-code-on-the-web) dan [routine](/docs/id/routines)

3396 3421 

3397Untuk command built-in yang tidak dapat berjalan dalam salah satu sesi itu, Claude Code masih menjawab bahwa command tidak tersedia alih-alih mengirimnya ke Claude. Sebelum v2.1.274, hanya sesi cloud dan routine yang mengirim nama yang tidak cocok ke Claude. Sebelum v2.1.273, mereka menjawab `Unknown command` juga.3422Untuk perintah bawaan yang tidak dapat berjalan di salah satu sesi tersebut, Claude Code tetap menjawab bahwa perintah tidak tersedia alih-alih mengirimkannya ke Claude. Sebelum v2.1.274, hanya sesi cloud dan routine yang mengirimkan nama yang tidak cocok ke Claude. Sebelum v2.1.273, sesi tersebut juga menjawab `Unknown command`.

3398 3423 

3399Claude Code tidak memperlakukan setiap prompt yang dimulai dengan `/` sebagai command. Mengirim prompt ke Claude sebagai pesan normal ketika kata pertama setelah `/` dimulai dengan tanda baca, seperti `/--` yang membuka komentar doc Lean, atau adalah path seperti `/var/log/syslog`.3424Claude Code tidak memperlakukan setiap prompt yang diawali dengan `/` sebagai perintah. Claude Code mengirimkan prompt ke Claude sebagai pesan biasa ketika kata pertama setelah `/` diawali dengan tanda baca, seperti `/--` yang membuka komentar dokumentasi Lean, atau berupa path seperti `/var/log/syslog`.

3400 3425 

3401Sebelum v2.1.236, jika Anda menekan `Enter` sementara menu command mencantumkan kecocokan dekat untuk nama yang Anda ketik, Claude Code menjalankan kecocokan itu, jadi typo seperti `/hepl` menjalankan `/help` alih-alih menghasilkan pesan ini.3426Sebelum v2.1.236, jika Anda menekan `Enter` saat menu perintah mencantumkan kecocokan terdekat untuk nama yang Anda ketik, Claude Code menjalankan kecocokan tersebut, sehingga salah ketik seperti `/hepl` menjalankan `/help` alih-alih menghasilkan pesan ini.

3402 3427 

3403**Yang harus dilakukan:**3428**Yang harus dilakukan:**

3404 3429 

3405* Jalankan nama yang disarankan, atau ketik `/` diikuti bagian dari nama untuk melihat apa yang tersedia dalam sesi ini3430* Jalankan nama yang disarankan, atau ketik `/` diikuti sebagian nama untuk melihat apa yang tersedia dalam sesi ini

3406* Jika Claude Code melaporkan command yang didokumentasikan sebagai tidak dikenal, periksa barisnya dalam [referensi command](/docs/id/commands) untuk persyaratan yang dinamainya3431* Jika Claude Code melaporkan perintah yang terdokumentasi sebagai tidak dikenal, periksa barisnya di [referensi perintah](/docs/id/commands) untuk persyaratan yang disebutkannya

3407 3432 

3408<h3 id="diff-is-too-large-for-ultrareview">3433<h3 id="diff-is-too-large-for-ultrareview">

3409 Diff terlalu besar untuk ultrareview3434 Diff terlalu besar untuk ultrareview

3410</h3>3435</h3>

3411 3436 

3412Diff antara branch Anda dan branch base, termasuk perubahan yang tidak berkomit dan staged, melebihi batas ukuran untuk [ultrareview](/docs/id/ultrareview), jadi `/code-review ultra` dan subcommand `claude ultrareview` menolak review sebelum sesi cloud dimulai. Review yang ditolak tidak menggunakan run gratis dan tidak menagih kredit penggunaan. Pesan menamai batas yang berlaku, ukuran diff Anda, dan file yang berkontribusi paling banyak baris yang berubah. Sebelum v2.1.216, pesan menunjukkan hanya statistik diff mentah.3437Diff antara branch Anda dan branch dasar, termasuk perubahan yang belum di-commit dan yang sudah di-stage, melebihi batas ukuran untuk [ultrareview](/docs/id/ultrareview), sehingga `/code-review ultra` dan subperintah `claude ultrareview` menolak tinjauan sebelum sesi cloud dimulai. Tinjauan yang ditolak tidak menggunakan run gratis dan tidak menagih kredit penggunaan. Pesan menyebutkan batas yang berlaku, ukuran diff Anda, dan file yang menyumbang baris perubahan terbanyak. Sebelum v2.1.216, pesan hanya menampilkan statistik diff mentah.

3413 3438 

3414```text theme={null}3439```text theme={null}

3415Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.3440Diff is too large for ultrareview: 812 files, 96,410 lines changed (limits: 500 files, 8,000 lines). Largest files: package-lock.json (41,904 lines), dist/bundle.js (18,210 lines), src/generated/api.ts (9,876 lines). Pass a closer base branch (`/code-review ultra <branch>`) to narrow the scope, or split the change.

3416```3441```

3417 3442 

3418Meninjau pull request menerapkan batas yang sama; bentuk pesan itu dimulai `PR #<N> is too large for ultrareview` dan menamai file dan jumlah baris PR.3443Meninjau pull request menerapkan batas yang sama; bentuk pesan tersebut diawali dengan `PR #<N> is too large for ultrareview` dan menyebutkan jumlah file dan baris PR tersebut.

3419 3444 

3420**Yang harus dilakukan:**3445**Yang harus dilakukan:**

3421 3446 

3422* Berikan branch base yang lebih dekat ke pekerjaan Anda, seperti `/code-review ultra develop`, jadi review mencakup hanya diff terhadap branch itu3447* Teruskan branch dasar yang lebih dekat dengan pekerjaan Anda, seperti `/code-review ultra develop`, sehingga tinjauan hanya mencakup diff terhadap branch tersebut

3423* Pisahkan perubahan menjadi branch yang lebih kecil dan tinjau masing-masing. File yang pesan namakan berkontribusi paling banyak baris yang berubah, jadi mulai dengan memindahkan yang ke branch mereka sendiri.3448* Pecah perubahan menjadi branch yang lebih kecil dan tinjau masing-masing. File yang disebutkan dalam pesan menyumbang baris perubahan terbanyak, jadi mulailah dengan memindahkan file-file tersebut ke branch-nya sendiri.

3424 3449 

3425<h3 id="could-not-find-merge-base-with-the-base-branch">3450<h3 id="could-not-find-merge-base-with-the-base-branch">

3426 Tidak dapat menemukan merge-base dengan branch base3451 Tidak dapat menemukan merge-base dengan branch dasar

3427</h3>3452</h3>

3428 3453 

3429`/code-review ultra` dan subcommand `claude ultrareview` meninjau diff antara branch Anda dan branch base, yang memerlukan commit yang keduanya bagikan. Ketika `git merge-base` tidak menemukan satu pun, Claude Code menolak review sebelum sesi cloud dimulai. Pada clone yang Claude Code dapat verifikasi lengkap, dengan setidaknya satu branch, jatuh kembali ke [meninjau setiap file yang dilacak](/docs/id/ultrareview#diff-limits-and-fallbacks) alih-alih menolak. Anda melihat penolakan ini ketika branch base tidak dapat ditemukan sama sekali, ketika Claude Code tidak dapat memverifikasi bahwa clone Anda lengkap, atau di repository langka di mana diff seluruh pohon tidak mungkin, seperti format objek SHA-256.3454`/code-review ultra` dan subperintah `claude ultrareview` meninjau diff antara branch Anda dan branch dasar, yang memerlukan commit yang dimiliki bersama oleh keduanya. Ketika `git merge-base` tidak menemukannya, Claude Code menolak tinjauan sebelum sesi cloud dimulai. Pada clone yang dapat diverifikasi Claude Code sebagai lengkap, dengan setidaknya satu branch, Claude Code melakukan fallback ke [meninjau setiap file yang dilacak](/docs/id/ultrareview#diff-limits-and-fallbacks) alih-alih menolak. Anda melihat penolakan ini ketika branch dasar sama sekali tidak dapat ditemukan, ketika Claude Code tidak dapat memverifikasi bahwa clone Anda lengkap, atau pada repositori langka di mana diff seluruh pohon tidak memungkinkan, seperti format objek SHA-256.

3430 3455 

3431```text theme={null}3456```text theme={null}

3432Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.3457Could not find merge-base with main. Pass the base branch explicitly (e.g. `/code-review ultra develop`) or make sure you're in a git repo with a main branch.

3433```3458```

3434 3459 

3435Petunjuk setelah kalimat pertama tergantung pada apa yang Claude Code amati:3460Petunjuk setelah kalimat pertama bergantung pada apa yang diamati Claude Code:

3436 3461 

3437* **Anda tidak melewatkan branch base**: Claude Code dibandingkan terhadap branch default repository dan menyarankan melewatkan base Anda secara eksplisit, seperti dalam contoh di atas3462* **Anda tidak meneruskan branch dasar**: Claude Code membandingkan dengan branch default repositori dan menyarankan untuk meneruskan branch dasar Anda secara eksplisit, seperti pada contoh di atas

3438* **Anda melewatkan branch base yang sudah ada di clone Anda**: petunjuk membaca ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``3463* **Anda meneruskan branch dasar yang sudah ada di clone Anda**: petunjuk berbunyi ``Make sure <branch> exists locally or on origin (try `git fetch origin <branch>`)``

3439* **Anda melewatkan branch base yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuk membaca ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; ketika Claude Code tidak dapat mengatakan apakah clone Anda dangkal, menyarankan `git fetch --unshallow origin` sebagai gantinya. Sebelum v2.1.221, petunjuk menyarankan `git fetch --unshallow origin` untuk setiap branch base yang diambil, dan pada clone lengkap command itu gagal dengan `fatal: --unshallow on a complete repository does not make sense`.3464* **Anda meneruskan branch dasar yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuk berbunyi ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; ketika Claude Code tidak dapat mengetahui apakah clone Anda dangkal, Claude Code menyarankan `git fetch --unshallow origin` sebagai gantinya. Sebelum v2.1.221, petunjuk menyarankan `git fetch --unshallow origin` untuk setiap branch dasar yang diambil, dan pada clone yang lengkap perintah tersebut gagal dengan `fatal: --unshallow on a complete repository does not make sense`.

3440 3465 

3441**Yang harus dilakukan:**3466**Yang harus dilakukan:**

3442 3467 

3443* Jika branch lain adalah base nyata Anda, lewatkan secara eksplisit: `/code-review ultra <branch>`3468* Jika branch lain adalah branch dasar Anda yang sebenarnya, teruskan secara eksplisit: `/code-review ultra <branch>`

3444* Jika clone Anda mungkin tidak memiliki riwayat lengkap, jalankan `git fetch --unshallow origin` dan jalankan kembali review3469* Jika clone Anda mungkin tidak memiliki riwayat lengkap, jalankan `git fetch --unshallow origin` dan jalankan ulang tinjauan

3445 3470 

3446<h3 id="your-checkout-has-no-branches">3471<h3 id="your-checkout-has-no-branches">

3447 Checkout Anda tidak memiliki branch3472 Checkout Anda tidak memiliki branch

3448</h3>3473</h3>

3449 3474 

3450Checkout dapat memiliki commit tetapi tidak ada branch: jika Anda menjalankan `git init` diikuti `git fetch <url>` dan `git checkout FETCH_HEAD`, Anda mendapatkan HEAD terlepas dengan tidak ada ref. Claude Code mengemas repository Anda sebagai git bundle untuk mengunggahnya untuk [ultrareview](/docs/id/ultrareview), dan tidak dapat membundle repository yang tidak memiliki branch atau ref lain, jadi `/code-review ultra` dan subcommand `claude ultrareview` menolak review sebelum sesi cloud dimulai.3475Checkout dapat memiliki commit tetapi tidak memiliki branch: jika Anda menjalankan `git init` diikuti dengan `git fetch <url>` dan `git checkout FETCH_HEAD`, Anda mendapatkan HEAD terlepas (detached) tanpa ref. Claude Code mengemas repositori Anda sebagai git bundle untuk mengunggahnya bagi [ultrareview](/docs/id/ultrareview), dan Claude Code tidak dapat membuat bundle dari repositori yang tidak memiliki branch atau ref lain, sehingga `/code-review ultra` dan subperintah `claude ultrareview` menolak tinjauan sebelum sesi cloud dimulai.

3451 3476 

3452```text theme={null}3477```text theme={null}

3453Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.3478Your checkout has no branches (detached HEAD only), which cloud review can't bundle. Create one first — `git checkout -b <name>` — then rerun /code-review ultra.


3457 3482 

3458**Yang harus dilakukan:**3483**Yang harus dilakukan:**

3459 3484 

3460* Buat branch di commit saat ini dengan `git checkout -b <name>`, kemudian jalankan kembali review3485* Buat branch pada commit Anda saat ini dengan `git checkout -b <name>`, lalu jalankan ulang tinjauan

3461 3486 

3462<h3 id="no-github-account-is-connected-to-your-claude-account">3487<h3 id="no-github-account-is-connected-to-your-claude-account">

3463 Tidak ada akun GitHub yang terhubung ke akun Claude Anda3488 Tidak ada akun GitHub yang terhubung ke akun Claude Anda

3464</h3>3489</h3>

3465 3490 

3466Anda menjalankan `/code-review ultra <PR#>` atau `claude ultrareview <PR#>`, dan sebelum membuat sesi cloud Claude Code menanyakan server apakah [akun GitHub yang terhubung ke akun Claude Anda](/docs/id/ultrareview#review-a-pull-request) dapat mencapai repository PR. Tidak ada akun yang terhubung, atau koneksi kedaluwarsa, jadi clone cloud akan gagal dan Claude Code menolak peluncuran. Claude Code tidak menghabiskan run gratis atau menagih kredit penggunaan untuk peluncuran yang ditolak.3491Anda menjalankan `/code-review ultra <PR#>` atau `claude ultrareview <PR#>`, dan sebelum membuat sesi cloud, Claude Code menanyakan kepada server apakah [akun GitHub yang terhubung ke akun Claude Anda](/docs/id/ultrareview#review-a-pull-request) dapat menjangkau repositori PR tersebut. Tidak ada akun yang terhubung, atau koneksinya kedaluwarsa, sehingga clone di cloud akan gagal dan Claude Code menolak peluncuran. Claude Code tidak menggunakan run gratis atau menagih kredit penggunaan untuk peluncuran yang ditolak.

3467 3492 

3468```text theme={null}3493```text theme={null}

3469Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).3494Ultrareview clones <owner>/<repo> in the cloud with the GitHub account connected to your Claude account, and none is connected (or the connection expired). To fix: run /web-setup to reuse your GitHub CLI login, or connect an account at https://claude.ai/connect-github — then re-run /code-review ultra 1234 (allow a minute after connecting).

3470```3495```

3471 3496 

3472Ketika [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) tidak tersedia dalam sesi Anda, pesan hanya menamai link claude.ai.3497Ketika [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) tidak tersedia dalam sesi Anda, pesan hanya menyebutkan link claude.ai.

3473 3498 

3474**Yang harus dilakukan:**3499**Yang harus dilakukan:**

3475 3500 

3476* Jalankan `/web-setup` untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda, atau hubungkan akun di [claude.ai/connect-github](https://claude.ai/connect-github)3501* Jalankan `/web-setup` untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda, atau hubungkan akun di [claude.ai/connect-github](https://claude.ai/connect-github)

3477* Jalankan kembali review semenit setelah terhubung3502* Jalankan ulang tinjauan satu menit setelah terhubung

3478 3503 

3479Sebelum v2.1.248, Claude Code tidak memeriksa ini sebelum peluncuran.3504Sebelum v2.1.248, Claude Code tidak memeriksa hal ini sebelum peluncuran.

3480 3505 

3481<h3 id="your-connected-github-account-cant-see-the-repository">3506<h3 id="your-connected-github-account-cant-see-the-repository">

3482 Akun GitHub yang terhubung Anda tidak dapat melihat repository3507 Akun GitHub yang terhubung tidak dapat melihat repositori

3483</h3>3508</h3>

3484 3509 

3485Anda menjalankan `/code-review ultra <PR#>` atau `claude ultrareview <PR#>`, dan [akun GitHub yang terhubung ke akun Claude Anda](/docs/id/ultrareview#review-a-pull-request) tidak dapat membaca repository PR, jadi clone cloud akan gagal dan Claude Code menolak peluncuran. Claude Code tidak menghabiskan run gratis atau menagih kredit penggunaan untuk peluncuran yang ditolak.3510Anda menjalankan `/code-review ultra <PR#>` atau `claude ultrareview <PR#>`, dan [akun GitHub yang terhubung ke akun Claude Anda](/docs/id/ultrareview#review-a-pull-request) tidak dapat membaca repositori PR tersebut, sehingga clone di cloud akan gagal dan Claude Code menolak peluncuran. Claude Code tidak menggunakan run gratis atau menagih kredit penggunaan untuk peluncuran yang ditolak.

3486 3511 

3487```text theme={null}3512```text theme={null}

3488Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.3513Your connected GitHub account can't see <owner>/<repo> — usually the Claude GitHub app isn't installed on <owner> or wasn't granted this repo (web-connected accounts need it for private repos), or a different GitHub account is connected. To fix: run /web-setup to reuse your GitHub CLI login, or install the app at https://github.com/apps/claude/installations/new — then re-run /code-review ultra 1234.

3489```3514```

3490 3515 

3491Ketika [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) tidak tersedia dalam sesi Anda, pesan hanya menamai instalasi aplikasi.3516Ketika [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) tidak tersedia dalam sesi Anda, pesan hanya menyebutkan instalasi aplikasi.

3492 3517 

3493**Yang harus dilakukan:**3518**Yang harus dilakukan:**

3494 3519 

3495* Jika CLI `gh` lokal Anda dapat membaca repository, jalankan `/web-setup` untuk menghubungkan login itu ke akun Claude Anda3520* Jika CLI `gh` lokal Anda dapat membaca repositori, jalankan `/web-setup` untuk menghubungkan login tersebut ke akun Claude Anda

3496* Jalankan kembali review setelah perubahan3521* Jalankan ulang tinjauan setelah perubahan

3497 3522 

3498Sebelum v2.1.248, Claude Code tidak memeriksa ini sebelum peluncuran.3523Sebelum v2.1.248, Claude Code tidak memeriksa hal ini sebelum peluncuran.

3499 3524 

3500<h3 id="the-github-app-preflight-failed-transiently">3525<h3 id="the-github-app-preflight-failed-transiently">

3501 Preflight GitHub App gagal secara sementara3526 Preflight GitHub App gagal secara sementara

3502</h3>3527</h3>

3503 3528 

3504Anda memulai [sesi cloud](/docs/id/claude-code-on-the-web) dari repository lokal, dan dua langkah gagal bersama-sama. Claude Code tidak dapat membangun atau mengunggah bundle repository Anda. Sebelum unggahan, memeriksa apakah layanan cloud dapat mengkloning repository dari GitHub, dan daripada jawaban pasti, pemeriksaan itu berakhir dalam kesalahan yang retry dapat menghapus, seperti kesalahan jaringan, timeout, atau kesalahan server sementara. Pesan lengkap dimulai dengan apa yang menghentikan bundle, misalnya `Could not upload repo bundle (<error>)`, dan berakhir dengan kalimat preflight:3529Anda memulai [sesi cloud](/docs/id/claude-code-on-the-web) dari repositori lokal, dan dua langkah gagal bersamaan. Claude Code tidak dapat membuat atau mengunggah bundle repositori Anda. Sebelum unggahan, Claude Code memeriksa apakah layanan cloud dapat meng-clone repositori dari GitHub, dan alih-alih jawaban pasti, pemeriksaan tersebut berakhir dengan error yang dapat diatasi dengan retry, seperti error jaringan, timeout, atau error server sementara. Pesan lengkap diawali dengan apa yang menghentikan bundle, misalnya `Could not upload repo bundle (<error>)`, dan diakhiri dengan kalimat preflight:

3505 3530 

3506```text theme={null}3531```text theme={null}

3507Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead3532Could not upload repo bundle (<error>). The GitHub App preflight failed transiently (network or service hiccup) — retry in a moment to start from GitHub instead


3509 3534 

3510**Yang harus dilakukan:**3535**Yang harus dilakukan:**

3511 3536 

3512* Jalankan kembali command setelah sebentar. Ketika pemeriksaan GitHub lulus, Claude Code dapat memulai sesi dari clone GitHub, jadi unggahan yang gagal tidak lagi memblokir peluncuran3537* Jalankan ulang perintah setelah beberapa saat. Ketika pemeriksaan GitHub berhasil, Claude Code dapat memulai sesi dari clone GitHub, sehingga unggahan yang gagal tidak lagi memblokir peluncuran

3513* Jika retry terus gagal, awal pesan menamai apa yang menghentikan unggahan. Ketika penyebab itu sesuatu yang dapat Anda perbaiki, perbaiki sehingga sesi dapat dimulai dari repository lokal Anda sebagai gantinya3538* Jika retry terus gagal, bagian awal pesan menyebutkan apa yang menghentikan unggahan. Jika penyebab tersebut adalah sesuatu yang dapat Anda perbaiki, perbaikilah agar sesi dapat dimulai dari repositori lokal Anda

3514 3539 

3515Sebelum v2.1.251, Claude Code mengakhiri pesan dengan `Please set up GitHub on https://claude.ai/code` bahkan ketika pemeriksaan GitHub hanya gagal secara sementara, dan saran setup tidak dapat menghapus kegagalan sementara.3540Sebelum v2.1.251, Claude Code mengakhiri pesan dengan `Please set up GitHub on https://claude.ai/code` bahkan ketika pemeriksaan GitHub hanya gagal secara sementara, dan saran penyiapan tidak dapat mengatasi kegagalan sementara.

3516 3541 

3517<h3 id="the-repository-upload-cant-follow-a-git-setting">3542<h3 id="the-repository-upload-cant-follow-a-git-setting">

3518 Repository upload tidak dapat mengikuti pengaturan git3543 Unggahan repositori tidak dapat mengikuti pengaturan git

3519</h3>3544</h3>

3520 3545 

3521Anda memulai [sesi cloud yang mengunggah repository lokal Anda](/docs/id/claude-code-on-the-web#send-local-repositories-without-github), atau [ultrareview](/docs/id/ultrareview) dari branch, dan unggahan tidak dapat mengikuti salah satu pengaturan git yang memutuskan aturan atribut mana yang berlaku untuk file Anda. Jika unggahan berlanjut dan melewatkan aturan, file yang git ubah sebelum menyimpannya, seperti yang filter bersih enkripsi, dapat mencapai cloud seperti di disk. Claude Code menolak unggahan sebagai gantinya, dan tidak ada yang diunggah:3546Anda memulai [sesi cloud yang mengunggah repositori lokal Anda](/docs/id/claude-code-on-the-web#send-local-repositories-without-github), atau [ultrareview](/docs/id/ultrareview) dari sebuah branch, dan unggahan tidak dapat mengikuti salah satu pengaturan git yang menentukan aturan atribut mana yang berlaku untuk file Anda. Jika unggahan dilanjutkan dan melewatkan suatu aturan, file yang diubah git sebelum menyimpannya, seperti file yang dienkripsi oleh clean filter, dapat sampai ke cloud dalam keadaan seperti di disk. Claude Code menolak unggahan sebagai gantinya, dan tidak ada yang diunggah:

3522 3547 

3523```text theme={null}3548```text theme={null}

3524Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository's .git/config or directly into your ~/.gitconfig, then retry.3549Not uploading this working tree: core.ignoreCase (which decides whether .gitattributes patterns match file names regardless of letter case) is set in <file>, and the upload cannot follow that setting, so a file git would change before storing it (to encrypt it, for example) could be uploaded as it is on disk. Move the core.ignoreCase line into this repository’s .git/config or directly into your ~/.gitconfig, then retry.

3525```3550```

3526 3551 

3527Pesan menamai pengaturan dan di mana diatur, dan berakhir dengan perbaikan untuk kasus yang Anda tekan. Penolakan yang sama muncul untuk `core.attributesFile` dan `attr.tree`, masing-masing dengan perbaikannya sendiri.3552Pesan menyebutkan pengaturan dan tempat pengaturan tersebut diatur, dan diakhiri dengan perbaikan untuk kasus yang Anda alami. Penolakan yang sama muncul untuk `core.attributesFile` dan `attr.tree`, masing-masing dengan perbaikannya sendiri.

3528 3553 

3529Pesan dapat menamai file konfigurasi yang konfigurasi git Anda tarik melalui direktif `include` atau `includeIf`, bahkan ketika kondisi direktif itu tidak berlaku untuk repository ini.3554Pesan dapat menyebutkan file konfigurasi yang ditarik oleh konfigurasi git Anda melalui direktif `include` atau `includeIf`, bahkan ketika kondisi direktif tersebut tidak berlaku untuk repositori ini.

3530 3555 

3531**Yang harus dilakukan:**3556**Yang harus dilakukan:**

3532 3557 

3533* Terapkan perbaikan dalam kalimat terakhir pesan3558* Terapkan perbaikan yang ada di kalimat terakhir pesan

3534 3559 

3535<h3 id="github-isnt-connected-to-your-claude-account">3560<h3 id="github-isnt-connected-to-your-claude-account">

3536 GitHub tidak terhubung ke akun Claude Anda3561 GitHub tidak terhubung ke akun Claude Anda

3537</h3>3562</h3>

3538 3563 

3539Anda memulai [sesi cloud](/docs/id/claude-code-on-the-web) dari repository lokal Anda, misalnya dengan `/autofix-pr`. Tidak ada akun GitHub yang terhubung ke akun Claude Anda, atau koneksi kedaluwarsa, jadi Claude Code menolak peluncuran:3564Anda memulai [sesi cloud](/docs/id/claude-code-on-the-web) dari repositori lokal Anda, misalnya dengan `/autofix-pr`. Tidak ada akun GitHub yang terhubung ke akun Claude Anda, atau koneksinya kedaluwarsa, sehingga Claude Code menolak peluncuran:

3540 3565 

3541```text theme={null}3566```text theme={null}

3542GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github3567GitHub isn't connected to your Claude account, so this repository can't be cloned in the cloud. Run /web-setup to connect with your GitHub CLI login, or connect on the web at https://claude.ai/connect-github

3543```3568```

3544 3569 

3545Ketika Anda membuat routine dengan [`/schedule`](/docs/id/routines), pesan yang sama muncul sebagai catatan setup yang menamai repository; catatan tidak memblokir pembuatan routine.3570Ketika Anda membuat routine dengan [`/schedule`](/docs/id/routines), pesan yang sama muncul sebagai catatan penyiapan yang menyebutkan repositori; catatan tersebut tidak memblokir pembuatan routine.

3546 3571 

3547**Yang harus dilakukan:**3572**Yang harus dilakukan:**

3548 3573 

3549* Jalankan `/web-setup` untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda, atau hubungkan akun di [claude.ai/connect-github](https://claude.ai/connect-github). Lihat [GitHub authentication options](/docs/id/claude-code-on-the-web#github-authentication-options) untuk bagaimana keduanya berbeda.3574* Jalankan `/web-setup` untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda, atau hubungkan akun di [claude.ai/connect-github](https://claude.ai/connect-github). Lihat [Opsi autentikasi GitHub](/docs/id/claude-code-on-the-web#github-authentication-options) untuk perbedaan keduanya.

3550* Jalankan kembali command semenit setelah terhubung3575* Jalankan ulang perintah satu menit setelah terhubung

3551 3576 

3552Sebelum v2.1.268, Claude Code melaporkan ini sebagai kegagalan sementara pemeriksaan Claude GitHub App dan menyarankan retry atau menginstal aplikasi; tidak satupun menghubungkan akun GitHub.3577Sebelum v2.1.268, Claude Code melaporkan hal ini sebagai kegagalan sementara pemeriksaan Claude GitHub App dan menyarankan untuk mencoba ulang atau menginstal aplikasi; tidak satu pun yang menghubungkan akun GitHub.

3553 3578 

3554<h3 id="single-sign-on-authorization-needed">3579<h3 id="single-sign-on-authorization-needed">

3555 Otorisasi single sign-on diperlukan3580 Otorisasi single sign-on diperlukan

3556</h3>3581</h3>

3557 3582 

3558Anda menjalankan [`/install-github-app`](/docs/id/github-actions#quick-setup) dan memilih repository yang organisasinya memberlakukan SAML single sign-on. Sebelum setup, Claude Code memeriksa akses Anda ke repository dengan CLI GitHub, dan GitHub menolak pemeriksaan itu karena token `gh` Anda belum diotorisasi untuk organisasi itu. Wizard menampilkan peringatan dengan langkah-langkah untuk mengotorisasi:3583Anda menjalankan [`/install-github-app`](/docs/id/github-actions#quick-setup) dan memilih repositori yang organisasinya menerapkan SAML single sign-on. Sebelum penyiapan, Claude Code memeriksa akses Anda ke repositori dengan GitHub CLI, dan GitHub menolak pemeriksaan tersebut karena token `gh` Anda belum diotorisasi untuk organisasi tersebut. Wizard menampilkan peringatan beserta langkah-langkah untuk melakukan otorisasi:

3559 3584 

3560```text theme={null}3585```text theme={null}

3561Single sign-on authorization needed3586Single sign-on authorization needed


3564 3589 

3565**Yang harus dilakukan:**3590**Yang harus dilakukan:**

3566 3591 

3567* Otorisasi kembali login GitHub CLI Anda dengan scope `repo` dan `workflow` dengan menjalankan `gh auth refresh -h github.com -s repo,workflow`, dan otorisasi organisasi ketika GitHub meminta single sign-on3592* Otorisasi ulang login GitHub CLI Anda dengan scope `repo` dan `workflow` dengan menjalankan `gh auth refresh -h github.com -s repo,workflow`, dan otorisasi organisasi ketika GitHub meminta single sign-on

3568* Jika Anda mengautentikasi dengan personal access token di `GH_TOKEN`, buka [github.com/settings/tokens](https://github.com/settings/tokens), pilih **Configure SSO** pada token, dan otorisasi organisasi3593* Jika Anda melakukan autentikasi dengan personal access token di `GH_TOKEN`, buka [github.com/settings/tokens](https://github.com/settings/tokens), pilih **Configure SSO** pada token tersebut, dan otorisasi organisasi

3569* Jalankan `/install-github-app` lagi3594* Jalankan `/install-github-app` lagi

3570 3595 

3571Sebelum v2.1.273, Claude Code menampilkan peringatan `Admin permissions required` untuk kondisi ini sebagai gantinya.3596Sebelum v2.1.273, Claude Code menampilkan peringatan `Admin permissions required` untuk kondisi ini sebagai gantinya.


3574 Gagal melanjutkan percakapan3599 Gagal melanjutkan percakapan

3575</h3>3600</h3>

3576 3601 

3577Claude Code tidak dapat membaca atau memproses transkrip yang disimpan untuk sesi yang Anda pilih dari [picker `claude --resume`](/docs/id/sessions#use-the-session-picker), jadi mengakhiri proses daripada melanjutkan dalam keadaan sebagian dimuat. Pesan mencakup command untuk retry:3602Claude Code tidak dapat membaca atau memproses transkrip tersimpan untuk sesi yang Anda pilih dari [pemilih `claude --resume`](/docs/id/sessions#use-the-session-picker), sehingga Claude Code mengakhiri proses alih-alih melanjutkan dalam keadaan termuat sebagian. Pesan menyertakan perintah untuk mencoba ulang:

3578 3603 

3579```text theme={null}3604```text theme={null}

3580Failed to resume the conversation.3605Failed to resume the conversation.

3581Run claude --resume <session-id> to retry, or claude to start a new session.3606Run claude --resume <session-id> to retry, or claude to start a new session.

3582```3607```

3583 3608 

3584Claude Code keluar dengan kode 1 setelah menampilkan pesan. Picker `/resume` di dalam sesi yang berjalan melaporkan `Failed to resume conversation` dalam percakapan sebagai gantinya, dan sesi saat ini Anda tetap berjalan. Sebelum v2.1.216, resume yang gagal dari picker `claude --resume` tetap di spinner `Resuming conversation…` tanpa batas waktu alih-alih menampilkan pesan ini.3609Claude Code keluar dengan kode 1 setelah menampilkan pesan. Pemilih `/resume` di dalam sesi yang sedang berjalan melaporkan `Failed to resume conversation` dalam percakapan sebagai gantinya, dan sesi Anda saat ini tetap berjalan. Sebelum v2.1.216, resume yang gagal dari pemilih `claude --resume` tetap berada pada spinner `Resuming conversation…` tanpa batas waktu alih-alih menampilkan pesan ini.

3585 3610 

3586**Yang harus dilakukan:**3611**Yang harus dilakukan:**

3587 3612 

3588* Jalankan `claude --resume <session-id>` dengan ID sesi dari pesan untuk retry3613* Jalankan `claude --resume <session-id>` dengan ID sesi dari pesan untuk mencoba ulang

3589* Jika setiap retry gagal dengan cara yang sama, jalankan `claude update` dan resume lagi. Versi sebelum v2.1.275 gagal resume ketika transkrip yang disimpan berisi entri yang tidak dapat dibaca.3614* Jika setiap retry gagal dengan cara yang sama, jalankan `claude update` dan lanjutkan lagi. Versi sebelum v2.1.275 menggagalkan resume ketika transkrip tersimpan berisi entri yang tidak dapat dibacanya.

3590* Jika retry gagal lagi, jalankan `claude` untuk memulai sesi baru3615* Jika retry gagal lagi, jalankan `claude` untuk memulai sesi baru

3591 3616 

3592<h3 id="no-conversation-found-with-the-session-id">3617<h3 id="no-conversation-found-with-the-session-id">

3593 Tidak ada percakapan yang ditemukan dengan ID sesi3618 Tidak ditemukan percakapan dengan ID sesi tersebut

3594</h3>3619</h3>

3595 3620 

3596Anda melewatkan ID sesi ke `claude --resume <session-id>` dan tidak ada transkrip yang disimpan cocok:3621Anda meneruskan ID sesi ke `claude --resume <session-id>` dan tidak ada transkrip tersimpan yang cocok dengannya:

3597 3622 

3598```text theme={null}3623```text theme={null}

3599No conversation found with session ID: <session-id>3624No conversation found with session ID: <session-id>

3600```3625```

3601 3626 

3602Claude Code keluar dengan kode 1 setelah menampilkan pesan. Claude Code [mencari project saat ini terlebih dahulu, kemudian setiap project lain di mesin ini](/docs/id/sessions#resume-a-session) untuk ID. Sebelum v2.1.223, pencarian berhenti di direktori project saat ini dan git worktree-nya, jadi resume dari direktori tempat sesi terakhir bekerja.3627Claude Code keluar dengan kode 1 setelah menampilkan pesan. Claude Code [mencari di proyek saat ini terlebih dahulu, lalu di setiap proyek lain di mesin ini](/docs/id/sessions#resume-a-session) untuk ID tersebut. Sebelum v2.1.223, pencarian berhenti di direktori proyek saat ini dan git worktree-nya, jadi lanjutkan dari direktori tempat sesi terakhir bekerja.

3603 3628 

3604Penyebab umum:3629Penyebab umum:

3605 3630 

3606* **ID yang salah ketik**: untuk run non-interaktif, ID adalah field `session_id` dari output [`--output-format json`](/docs/id/headless#get-structured-output)3631* **ID salah ketik**: untuk run non-interaktif, ID adalah field `session_id` dari [output `--output-format json`](/docs/id/headless#get-structured-output)

3607* **Transkrip yang dihapus**: Claude Code menghapus transkrip setelah [periode retensi](/docs/id/sessions#where-transcripts-are-stored), 30 hari secara default, mengikuti [aturan sweep retensi](/docs/id/claude-directory#cleaned-up-automatically)3632* **Transkrip terhapus**: Claude Code menghapus transkrip setelah [periode retensi](/docs/id/sessions#where-transcripts-are-stored), 30 hari secara default, mengikuti [aturan pembersihan retensi](/docs/id/claude-directory#cleaned-up-automatically)

3608* **Mesin berbeda**: Claude Code menyimpan transkrip secara lokal, jadi resume sesi di mesin tempat dijalankan3633* **Mesin berbeda**: Claude Code menyimpan transkrip secara lokal, jadi lanjutkan sesi di mesin tempat sesi tersebut dijalankan

3609* **Duplikat salinan**: jika Anda menyalin direktori project di bawah `~/.claude/projects` jadi dua transkrip membawa ID yang sama, Claude Code melaporkan pesan ini daripada resume satu salinan secara sewenang-wenang3634* **Salinan duplikat**: jika Anda menyalin direktori proyek di bawah `~/.claude/projects` sehingga dua transkrip membawa ID yang sama, Claude Code melaporkan pesan ini alih-alih melanjutkan salah satu salinan secara acak

3610 3635 

3611**Yang harus dilakukan:**3636**Yang harus dilakukan:**

3612 3637 

3613* Untuk sesi interaktif, buka [session picker](/docs/id/sessions#use-the-session-picker) dengan `claude --resume` dan tekan `Ctrl+A` untuk memperluas ke setiap project di mesin ini, kemudian pilih sesi3638* Untuk sesi interaktif, buka [pemilih sesi](/docs/id/sessions#use-the-session-picker) dengan `claude --resume` dan tekan `Ctrl+A` untuk memperluasnya ke setiap proyek di mesin ini, lalu pilih sesi

3614* Sesi yang dibuat dengan `claude -p` atau [Agent SDK](/docs/id/agent-sdk/overview) tidak muncul di picker, jadi periksa kembali ID terhadap `session_id` yang run asli Anda cetak3639* Sesi yang dibuat dengan `claude -p` atau [Agent SDK](/docs/id/agent-sdk/overview) tidak muncul di pemilih, jadi periksa ulang ID terhadap `session_id` yang dicetak oleh run asli Anda

3615 3640 

3616<h3 id="windows-reported-an-error-ebadf">3641<h3 id="windows-reported-an-error-ebadf">

3617 Windows melaporkan kesalahan (EBADF) ketika Claude Code membaca file transkrip sesi ini3642 Windows melaporkan kesalahan (EBADF) saat Claude Code membaca file transkrip sesi ini

3618</h3>3643</h3>

3619 3644 

3620Anda melanjutkan sesi di Windows, file [transkrip](/docs/id/sessions#where-transcripts-are-stored) yang disimpan dibuka secara normal, dan membacanya kemudian gagal dengan kesalahan sistem EBADF. Kesalahan sistem tidak mengatakan mengapa pembacaan gagal, jadi pesan menyarankan penyebab kemungkinan dan apa yang dicoba:3645Anda melanjutkan sesi di Windows, [file transkrip](/docs/id/sessions#where-transcripts-are-stored) yang tersimpan untuk sesi tersebut terbuka dengan normal, lalu pembacaannya gagal dengan kesalahan sistem EBADF. Kesalahan sistem tidak menyebutkan mengapa pembacaan gagal, sehingga pesan tersebut menyarankan kemungkinan penyebab dan hal yang dapat dicoba:

3621 3646 

3622```text theme={null}3647```text theme={null}

3623Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.3648Windows reported an error (EBADF) when Claude Code read this session's transcript file, although the file had opened normally. This can happen when other software intercepts file reads — security, encryption or endpoint-management tools, for example. If it keeps happening for this conversation, try excluding the folder that holds Claude Code's session transcripts from such software (the .claude folder in your user profile, unless the app or CLAUDE_CONFIG_DIR points Claude Code elsewhere), or adding Claude Code to its allowed applications, then resume again.

3624```3649```

3625 3650 

3626Pesan mengikuti baris kegagalan command sendiri, seperti `Failed to resume session <session-id>`. Command `claude --resume` atau [`claude -p`](/docs/id/headless) keluar dengan kode 1 setelah menampilkannya. Setelah `/resume` di dalam sesi, sesi saat ini Anda tetap berjalan.3651Pesan tersebut muncul setelah baris kegagalan perintah itu sendiri, seperti `Failed to resume session <session-id>`. Perintah `claude --resume` atau [`claude -p`](/docs/id/headless) keluar dengan kode 1 setelah menampilkannya. Setelah `/resume` di dalam sesi, sesi Anda saat ini tetap berjalan.

3627 3652 

3628**Yang harus dilakukan:**3653**Yang harus dilakukan:**

3629 3654 

3630* Kecualikan folder yang menyimpan transkrip sesi Anda dari software yang memindai atau mengintersepsi pembacaan file, seperti keamanan, enkripsi, atau alat manajemen endpoint. Transkrip tinggal di bawah `%USERPROFILE%\.claude\projects` secara default, atau di bawah direktori yang [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars) namakan3655* Kecualikan folder yang menyimpan transkrip sesi Anda dari perangkat lunak yang memindai atau mencegat pembacaan file, seperti alat keamanan, enkripsi, atau manajemen endpoint. Secara default, transkrip berada di bawah `%USERPROFILE%\.claude\projects`, atau di bawah direktori yang ditunjuk oleh [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars)

3631* Jika Anda tidak dapat menambahkan pengecualian, tambahkan Claude Code ke aplikasi yang diizinkan software itu sebagai gantinya3656* Jika Anda tidak dapat menambahkan pengecualian, tambahkan Claude Code ke daftar aplikasi yang diizinkan oleh perangkat lunak tersebut

3632* Resume sesi lagi3657* Lanjutkan sesi kembali

3633 3658 

3634Sebelum v2.1.282, kegagalan datang tanpa penjelasan: `claude --resume <session-id>` berakhir di `Failed to resume session <session-id>`, dan run `-p` mencetak hanya teks kesalahan sistem, seperti `Failed to resume session: EBADF: bad file descriptor, read`.3659Sebelum v2.1.282, kegagalan ini muncul tanpa penjelasan: `claude --resume <session-id>` berakhir pada `Failed to resume session <session-id>`, dan proses `-p` hanya mencetak teks kesalahan sistem, seperti `Failed to resume session: EBADF: bad file descriptor, read`.

3635 3660 

3636<h3 id="cannot-switch-renderers-in-this-session">3661<h3 id="cannot-switch-renderers-in-this-session">

3637 Tidak dapat mengganti renderer dalam sesi ini3662 Tidak dapat beralih renderer dalam sesi ini

3638</h3>3663</h3>

3639 3664 

3640Ketika Anda mengganti renderer, Claude Code memulai ulang prosesnya. Anda menjalankan [`/tui`](/docs/id/fullscreen#enable-fullscreen-rendering) dalam sesi Claude Code menolak untuk memulai ulang, jadi tidak mengganti dan menyimpan apa pun. Pesan mana yang Anda lihat memberi tahu Anda penyebabnya:3665Saat Anda beralih renderer, Claude Code memulai ulang prosesnya. Anda menjalankan [`/tui`](/docs/id/fullscreen#enable-fullscreen-rendering) dalam sesi yang tidak mau dimulai ulang oleh Claude Code, sehingga Claude Code tidak beralih dan tidak menyimpan apa pun. Pesan yang Anda lihat menunjukkan penyebabnya:

3641 3666 

3642* `Cannot switch renderers while work is running in the background`: Anda memiliki pekerjaan background yang berjalan yang restart akan mengorbankan, seperti shell background atau subagent. Tunggu pekerjaan selesai atau hentikan dengan [`/tasks`](/docs/id/commands), kemudian jalankan `/tui fullscreen` atau `/tui default` lagi3667* `Cannot switch renderers while work is running in the background`: Anda memiliki pekerjaan latar belakang yang sedang berjalan dan akan ditinggalkan oleh proses mulai ulang, seperti shell latar belakang atau subagent. Tunggu hingga pekerjaan selesai atau hentikan dengan [`/tasks`](/docs/id/commands), lalu jalankan `/tui fullscreen` atau `/tui default` lagi

3643* `Cannot switch renderers in this session`: sesi memiliki pembatasan Claude Code tidak dapat lewatkan ke proses yang dimulai ulang. Sebelum v2.1.234, Claude Code dimulai ulang bagaimanapun dan sesi yang diluncurkan ulang berjalan tanpanya3668* `Cannot switch renderers in this session`: sesi memiliki pembatasan yang tidak dapat diteruskan Claude Code ke proses yang dimulai ulang. Sebelum v2.1.234, Claude Code tetap memulai ulang dan sesi yang diluncurkan kembali berjalan tanpa pembatasan tersebut

3644 3669 

3645Dalam pesan pembatasan, bagian dalam tanda kurung menamai pembatasan Claude Code temukan:3670Dalam pesan pembatasan, bagian di dalam tanda kurung menyebutkan pembatasan yang ditemukan Claude Code:

3646 3671 

3647```text theme={null}3672```text theme={null}

3648Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.3673Cannot switch renderers in this session — it has restrictions a restart can't carry over (permission rules set for this session only). Nothing was changed. Running /tui fullscreen in a session started without them switches every later session too.

3649```3674```

3650 3675 

3651Setiap alasan pesan dapat menunjukkan dalam tanda kurung:3676Setiap alasan yang dapat ditampilkan pesan di dalam tanda kurung:

3652 3677 

3653* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: Anda memulai sesi dengan flag Claude Code tidak lewatkan kembali ke proses yang dimulai ulang. Flag ini termasuk [`--system-prompt`](/docs/id/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, [`--tools`](/docs/id/cli-reference#cli-flags) allowlist, [`--setting-sources`](/docs/id/cli-reference#cli-flags), dan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags)3678* `launch flags: a custom system prompt, a tool allowlist, or restricted settings`: Anda memulai sesi dengan flag yang tidak diteruskan kembali oleh Claude Code ke proses yang dimulai ulang. Flag ini mencakup [`--system-prompt`](/docs/id/cli-reference#cli-flags), `--system-prompt-file`, `--append-system-prompt-file`, allowlist [`--tools`](/docs/id/cli-reference#cli-flags), [`--setting-sources`](/docs/id/cli-reference#cli-flags), dan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags)

3654* `permission rules set for this session only`: [permission update](/docs/id/hooks#permission-update-entries) dari hook atau SDK caller menambahkan aturan deny atau ask dengan destinasi `session`. Aturan allow yang scoped sesi tidak memicu penolakan. Restart menjatuhkannya, dan Claude Code meminta lagi sebagai gantinya3679* `permission rules set for this session only`: sebuah [pembaruan izin](/docs/id/hooks#permission-update-entries) dari hook atau pemanggil SDK menambahkan aturan deny atau ask dengan tujuan `session`. Aturan allow yang berlingkup sesi tidak memicu penolakan ini. Proses mulai ulang akan menghapusnya, dan Claude Code akan meminta izin lagi sebagai gantinya

3655* `ask-before-running rules with no command-line form`: permission update dari hook atau SDK caller menambahkan aturan ask bersama aturan Claude Code lewatkan kembali sebagai `--allowed-tools` dan `--disallowed-tools`. Tidak ada flag untuk aturan ask3680* `ask-before-running rules with no command-line form`: pembaruan izin dari hook atau pemanggil SDK menambahkan aturan ask di samping aturan yang diteruskan kembali oleh Claude Code sebagai `--allowed-tools` dan `--disallowed-tools`. Tidak ada flag untuk aturan ask

3656* `permission rules a command line cannot carry intact` dan `added directories a command line cannot carry intact`: permission update menambahkan aturan atau path direktori mid-session. Baris perintah proses yang dimulai ulang tidak dapat membawa teksnya sebagai nilai yang sama3681* `permission rules a command line cannot carry intact` dan `added directories a command line cannot carry intact`: pembaruan izin menambahkan aturan atau jalur direktori di tengah sesi. Baris perintah proses yang dimulai ulang tidak dapat membawa teksnya sebagai nilai yang sama

3657 3682 

3658**Yang harus dilakukan:**3683**Yang harus dilakukan:**

3659 3684 

3660* Dalam sesi yang dimulai tanpa pembatasan itu, jalankan `/tui fullscreen`, atau `/tui default` untuk beralih kembali. Claude Code menyimpan pengaturan [`tui`](/docs/id/settings-reference#tui) di sana3685* Dalam sesi yang dimulai tanpa pembatasan tersebut, jalankan `/tui fullscreen`, atau `/tui default` untuk beralih kembali. Claude Code menyimpan [pengaturan `tui`](/docs/id/settings-reference#tui) di sana

3661 3686 

3662<h3 id="couldnt-open-claude-desktop">3687<h3 id="couldnt-open-claude-desktop">

3663 Tidak dapat membuka Claude Desktop3688 Tidak dapat membuka Claude Desktop

3664</h3>3689</h3>

3665 3690 

3666Anda menjalankan [`/desktop`](/docs/id/desktop#coming-from-the-cli) atau alias `/app` dalam sesi, atau [`claude --desktop`](/docs/id/cli-reference#cli-flags) di shell Anda, dan command sistem yang Claude Code gunakan untuk membuka Claude Desktop gagal. Setelah `/desktop`, sesi tetap di terminal; `claude --desktop` mencetak pesan tanpa awalan `Error:` dan keluar dengan status 1.3691Anda menjalankan [`/desktop`](/docs/id/desktop#coming-from-the-cli) atau aliasnya `/app` dalam sesi, atau [`claude --desktop`](/docs/id/cli-reference#cli-flags) di shell Anda, dan perintah sistem yang digunakan Claude Code untuk membuka Claude Desktop gagal. Setelah `/desktop`, sesi tetap berada di terminal; `claude --desktop` mencetak pesan tanpa awalan `Error:` dan keluar dengan status 1.

3667 3692 

3668Teks dalam tanda kurung menamai command yang gagal, dengan status keluar dan baris pertama output kesalahannya ketika menghasilkannya. Di macOS command itu adalah `open`, seperti dalam contoh ini; di Windows itu adalah `rundll32`:3693Teks di dalam tanda kurung menyebutkan perintah yang gagal, beserta status keluarnya dan baris pertama output kesalahannya jika perintah tersebut menghasilkannya. Di macOS perintah tersebut adalah `open`, seperti dalam contoh ini; di Windows perintahnya adalah `rundll32`:

3669 3694 

3670```text theme={null}3695```text theme={null}

3671Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.3696Error: Couldn't open Claude Desktop (`open` exited 1: LSOpenURLsWithRole() failed for the URL claude://resume?session=<session-id> with error -10814). Open Claude Desktop and try again.


3673 3698 

3674**Yang harus dilakukan:**3699**Yang harus dilakukan:**

3675 3700 

3676* Buka Claude Desktop sendiri, kemudian jalankan `/desktop` atau `claude --desktop` lagi3701* Buka Claude Desktop sendiri, lalu jalankan `/desktop` atau `claude --desktop` lagi

3677* Untuk membaca output kesalahan lengkap command itu, aktifkan debug logging dengan `/debug` dan jalankan `/desktop` lagi, atau jalankan `claude --desktop --debug-file <path>`, kemudian periksa log debug3702* Untuk membaca output kesalahan lengkap dari perintah yang gagal, aktifkan logging debug dengan `/debug` dan jalankan `/desktop` lagi, atau jalankan `claude --desktop --debug-file <path>`, lalu periksa log debug

3678 3703 

3679Sebelum v2.1.285, pesan berakhir `Open Claude Desktop and run /desktop again.` Sebelum v2.1.275, itu adalah `Failed to open Claude Desktop. Please try opening it manually.` dan tidak mengatakan apa yang gagal.3704Sebelum v2.1.285, pesan tersebut diakhiri dengan `Open Claude Desktop and run /desktop again.` Sebelum v2.1.275, pesannya adalah `Failed to open Claude Desktop. Please try opening it manually.` dan tidak menyebutkan apa yang gagal.

3680 3705 

3681<h3 id="terminal-setup-left-your-zed-keymap-unchanged">3706<h3 id="terminal-setup-left-your-zed-keymap-unchanged">

3682 /terminal-setup meninggalkan keymap Zed Anda tidak berubah3707 /terminal-setup membiarkan keymap Zed Anda tidak berubah

3683</h3>3708</h3>

3684 3709 

3685Anda menjalankan [`/terminal-setup`](/docs/id/terminal-config#enter-multiline-prompts) di Zed, dan Claude Code tidak dapat menyelesaikan pembaruan ke `keymap.json` Zed Anda, jadi meninggalkannya seperti apa adanya.3710Anda menjalankan [`/terminal-setup`](/docs/id/terminal-config#enter-multiline-prompts) di Zed, dan Claude Code tidak dapat menyelesaikan pembaruan pada `keymap.json` Zed Anda, sehingga file tersebut dibiarkan seperti semula.

3686 3711 

3687Setiap pesan menamai path ke keymap Anda dan berakhir dengan blok keybinding untuk ditambahkan sendiri:3712Setiap pesan menyebutkan jalur ke keymap Anda dan diakhiri dengan blok pintasan keyboard yang dapat Anda tambahkan sendiri:

3688 3713 

3689```text theme={null}3714```text theme={null}

3690Couldn't update your Zed keymap, so it was left unchanged.3715Couldn't update your Zed keymap, so it was left unchanged.


3692{ "context": "Terminal", "bindings": { "shift-enter": ["terminal::SendText", "\u001b\r"] } }3717{ "context": "Terminal", "bindings": { "shift-enter": ["terminal::SendText", "\u001b\r"] } }

3693```3718```

3694 3719 

3695Baris pertama pesan menamai penyebabnya:3720Baris pertama pesan menyebutkan penyebabnya:

3696 3721 

3697* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code tidak dapat membaca file, misalnya karena izin file3722* `Couldn't read your Zed keymap, so it was left unchanged.`: Claude Code tidak dapat membaca file tersebut, misalnya karena hak akses file

3698* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: file dibaca dengan baik tetapi tidak diuraikan sebagai array blok keybinding, bahkan dengan komentar `//` dan trailing comma yang diizinkan3723* `Your Zed keymap isn't a readable list of keybindings, so it was left unchanged.`: file berhasil dibaca tetapi tidak dapat di-parse sebagai array blok pintasan keyboard, bahkan dengan komentar `//` dan koma di akhir yang diizinkan

3699* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code tidak dapat menyalin file ke backup `.bak` di sebelahnya, jadi tidak mengubah apa pun3724* `Couldn't back up your Zed keymap; not modifying it.`: Claude Code tidak dapat menyalin file ke cadangan `.bak` di sebelahnya, sehingga tidak mengubah apa pun

3700* `Couldn't update your Zed keymap, so it was left unchanged.`: hasil yang digabung tidak memverifikasi sebagai keymap valid yang membawa keybinding, jadi Claude Code membuangnya alih-alih menulis. Blok keybinding dengan kunci yang diduplikasi dapat menyebabkan ini3725* `Couldn't update your Zed keymap, so it was left unchanged.`: hasil penggabungan tidak terverifikasi sebagai keymap valid yang berisi pintasan tersebut, sehingga Claude Code membuangnya alih-alih menulisnya. Blok pintasan keyboard dengan kunci duplikat dapat menyebabkan hal ini

3701 3726 

3702**Yang harus dilakukan:**3727**Yang harus dilakukan:**

3703 3728 

3704* Salin blok dari pesan ke array tingkat atas di `keymap.json` Anda di path yang pesan namakan3729* Salin blok dari pesan ke dalam array tingkat atas di `keymap.json` Anda pada jalur yang disebutkan pesan

3705* Untuk `isn't a readable list of keybindings`, perbaiki kesalahan sintaks, atau buat nilai tingkat atas file menjadi array, kemudian jalankan `/terminal-setup` lagi3730* Untuk `isn't a readable list of keybindings`, perbaiki kesalahan sintaks, atau jadikan nilai tingkat atas file sebagai array, lalu jalankan `/terminal-setup` lagi

3706 3731 

3707Sebelum v2.1.247, `/terminal-setup` tidak dapat menguraikan keymap Zed yang menggunakan komentar `//` atau trailing comma, dan mengganti seluruh file dengan hanya keybinding-nya sendiri sambil melaporkan keybinding sebagai diinstal. Untuk mengembalikan keymap yang versi sebelumnya ganti, gunakan file backup `.bak` yang dijelaskan di bawah [Enter multiline prompts](/docs/id/terminal-config#enter-multiline-prompts).3732Sebelum v2.1.247, `/terminal-setup` tidak dapat mem-parse keymap Zed yang menggunakan komentar `//` atau koma di akhir, dan mengganti seluruh file hanya dengan pintasannya sendiri sambil melaporkan bahwa pintasan tersebut telah terpasang. Untuk memulihkan keymap yang telah diganti oleh versi sebelumnya, gunakan file cadangan `.bak` yang dijelaskan di [Memasukkan prompt multibaris](/docs/id/terminal-config#enter-multiline-prompts).

3708 3733 

3709<h3 id="skill-usage-reports-are-not-available-on-this-connection">3734<h3 id="skill-usage-reports-are-not-available-on-this-connection">

3710 Laporan penggunaan skill tidak tersedia di koneksi ini3735 Laporan penggunaan skill tidak tersedia pada koneksi ini

3711</h3>3736</h3>

3712 3737 

3713Anda menjalankan [`/skill-doctor`](/docs/id/skills#find-unused-skills) melalui [Remote Control](/docs/id/remote-control), dari ponsel atau browser Anda. Claude Code tidak mengirim laporan penggunaan skill melalui Remote Control dan menjawab dengan pesan ini sebagai gantinya:3738Anda menjalankan [`/skill-doctor`](/docs/id/skills#find-unused-skills) melalui [Remote Control](/docs/id/remote-control), dari ponsel atau browser Anda. Claude Code tidak mengirim laporan penggunaan skill melalui Remote Control dan membalas dengan pesan ini sebagai gantinya:

3714 3739 

3715```text theme={null}3740```text theme={null}

3716Skill usage reports are not available on this connection.3741Skill usage reports are not available on this connection.


3718 3743 

3719**Yang harus dilakukan:**3744**Yang harus dilakukan:**

3720 3745 

3721* Jalankan `/skill-doctor` di terminal di mesin tempat sesi berjalan, atau jalankan `claude -p "/skill-doctor"` di sana3746* Jalankan `/skill-doctor` di terminal pada mesin tempat sesi berjalan, atau jalankan `claude -p "/skill-doctor"` di sana

3722 3747 

3723<h3 id="custom-output-styles-cant-be-selected-over-remote-control">3748<h3 id="custom-output-styles-cant-be-selected-over-remote-control">

3724 Gaya output kustom tidak dapat dipilih melalui Remote Control3749 Gaya output kustom tidak dapat dipilih melalui Remote Control

3725</h3>3750</h3>

3726 3751 

3727Anda menjalankan [`/output-style`](/docs/id/output-styles#change-your-output-style) dari aplikasi mobile atau web melalui [Remote Control](/docs/id/remote-control), atau command tiba dalam pesan yang dialihkan ke sesi. Karena giliran seperti itu mungkin tidak berasal dari pemilik akun, Claude Code mencantumkan dan memilih hanya [gaya built-in](/docs/id/output-styles#built-in-output-styles) di atasnya, dan menambahkan pemberitahuan ini kapan pun command mencantumkan gaya atau tidak mengenali nama yang Anda berikan. Nama [gaya kustom](/docs/id/output-styles#create-a-custom-output-style) mendapat jawaban yang sama dengan nama yang tidak ada:3752Anda menjalankan [`/output-style`](/docs/id/output-styles#change-your-output-style) dari aplikasi seluler atau web melalui [Remote Control](/docs/id/remote-control), atau perintah tersebut datang dalam pesan yang diteruskan ke dalam sesi. Karena giliran seperti itu mungkin tidak berasal dari pemilik akun, Claude Code hanya menampilkan dan memilih [gaya bawaan](/docs/id/output-styles#built-in-output-styles) pada giliran tersebut, dan menambahkan pemberitahuan ini setiap kali perintah menampilkan daftar gaya atau tidak mengenali nama yang Anda berikan. Nama [gaya kustom](/docs/id/output-styles#create-a-custom-output-style) mendapatkan balasan yang sama seperti nama yang tidak ada:

3728 3753 

3729```text theme={null}3754```text theme={null}

3730Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.3755Custom output styles can't be selected over Remote Control or from a relayed message. Select one in the session itself, or pick a built-in style here.


3732 3757 

3733**Yang harus dilakukan:**3758**Yang harus dilakukan:**

3734 3759 

3735* Pilih gaya built-in, misalnya `/output-style concise`3760* Pilih gaya bawaan, misalnya `/output-style concise`

3736* Untuk menggunakan gaya kustom, atur [`outputStyle`](/docs/id/settings-reference#outputstyle) di `.claude/settings.local.json` project, atau jalankan `/output-style <style>` di terminal sesi sendiri jika memilikinya3761* Untuk menggunakan gaya kustom, atur [`outputStyle`](/docs/id/settings-reference#outputstyle) di `.claude/settings.local.json` proyek, atau jalankan `/output-style <style>` di terminal sesi itu sendiri jika ada

3737 3762 

3738<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">3763<h3 id="output-styles-are-saved-to-local-settings-which-this-session-doesnt-load">

3739 Gaya output disimpan ke pengaturan lokal yang sesi ini tidak muat3764 Gaya output disimpan ke pengaturan lokal yang tidak dimuat oleh sesi ini

3740</h3>3765</h3>

3741 3766 

3742Anda mencoba mengganti [gaya output](/docs/id/output-styles) dengan `/output-style <style>` atau `/config outputStyle=<style>` dalam sesi yang sumber pengaturannya mengecualikan `local`. Contohnya adalah sesi [Agent SDK](/docs/id/agent-sdk/typescript) yang [`settingSources`](/docs/id/agent-sdk/typescript#options)-nya meninggalkan `"local"` dan sesi CLI yang dimulai dengan nilai [`--setting-sources`](/docs/id/cli-reference#cli-flags) yang meninggalkan `local`. Kedua command menyimpan gaya ke `.claude/settings.local.json`, file yang sesi seperti itu tidak pernah membaca kembali, jadi Claude Code menolak alih-alih menulis pengaturan yang tidak akan berpengaruh:3767Anda mencoba beralih [gaya output](/docs/id/output-styles) dengan `/output-style <style>` atau `/config outputStyle=<style>` dalam sesi yang sumber pengaturannya tidak menyertakan `local`. Contohnya adalah sesi [Agent SDK](/docs/id/agent-sdk/typescript) yang [`settingSources`](/docs/id/agent-sdk/typescript#options)-nya tidak menyertakan `"local"` dan sesi CLI yang dimulai dengan nilai [`--setting-sources`](/docs/id/cli-reference#cli-flags) yang tidak menyertakan `local`. Kedua perintah menyimpan gaya ke `.claude/settings.local.json`, file yang tidak pernah dibaca kembali oleh sesi seperti itu, sehingga Claude Code menolak alih-alih menulis pengaturan yang tidak akan berpengaruh:

3743 3768 

3744```text theme={null}3769```text theme={null}

3745Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.3770Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load, so the style can't be changed here.


3748**Yang harus dilakukan:**3773**Yang harus dilakukan:**

3749 3774 

3750* Tambahkan `local` ke sumber pengaturan sesi dan beralih lagi3775* Tambahkan `local` ke sumber pengaturan sesi dan beralih lagi

3751* Atur kunci [`outputStyle`](/docs/id/settings-reference#outputstyle) dalam file pengaturan yang sesi muat, seperti `.claude/settings.json` di project atau `~/.claude/settings.json`. Dalam SDK TypeScript, atur `outputStyle` di dalam objek `settings` inline sebagai gantinya; lihat [Activate an output style](/docs/id/agent-sdk/modifying-system-prompts#activate-an-output-style)3776* Atur kunci [`outputStyle`](/docs/id/settings-reference#outputstyle) di file pengaturan yang dimuat oleh sesi, seperti `.claude/settings.json` di proyek atau `~/.claude/settings.json`. Di TypeScript SDK, atur `outputStyle` di dalam objek `settings` inline sebagai gantinya; lihat [Mengaktifkan gaya output](/docs/id/agent-sdk/modifying-system-prompts#activate-an-output-style)

3752 3777 

3753<h2 id="plugin-errors">3778<h2 id="plugin-errors">

3754 Kesalahan plugin3779 Kesalahan plugin


4476 Kesalahan sesi latar belakang4501 Kesalahan sesi latar belakang

4477</h2>4502</h2>

4478 4503 

4479[Sesi latar belakang](/docs/id/agent-view) berjalan tanpa terminal interaktif mereka sendiri, jadi perintah yang membutuhkan satu berperilaku berbeda di sana. Pesan-pesan ini muncul dalam transkrip sesi latar belakang, di terminal yang terhubung ke satu, di sesi atau shell tempat Anda mengirim, atau, untuk [entri worktree-guard](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) di bawah, di sesi apa pun yang terisolasi dalam worktree atau menjalankan subagent yang terisolasi worktree; di mana pesan spesifik untuk satu permukaan, entrinya mengatakan demikian.4504[Sesi latar belakang](/docs/id/agent-view) berjalan tanpa terminal interaktif mereka sendiri, jadi perintah yang membutuhkan satu berperilaku berbeda di sana. Pesan-pesan ini muncul dalam transkrip sesi latar belakang, di terminal yang terhubung ke satu, di sesi atau shell tempat Anda mengirim, atau, untuk [entri worktree-guard](#write-or-command-blocked-because-the-path-cannot-be-safely-resolved) di bawah, di sesi apa pun yang terisolasi dalam worktree atau menjalankan subagent yang terisolasi worktree; di mana pesan spesifik untuk satu surface, entrinya mengatakan demikian.

4480 4505 

4481<h3 id="commands-refused-in-a-background-session">4506<h3 id="commands-refused-in-a-background-session">

4482 Perintah ditolak dalam sesi latar belakang4507 Perintah ditolak dalam sesi latar belakang

4483</h3>4508</h3>

4484 4509 

4485Perintah yang membuka dialog interaktif tidak dapat melakukannya saat tidak ada terminal yang terhubung ke sesi latar belakang. `/install-github-app`, daftar pengaturan `/mcp`, dan tindakan autentikasi dalam menu server MCP merespons dengan pesan. Untuk `/install-github-app` dan daftar pengaturan `/mcp`, sesi juga muncul di bawah **Needs input** dalam [tampilan agen](/docs/id/agent-view) sehingga Anda dapat menemukannya, melampirkan, dan menjalankan perintah lagi. Saat terminal terhubung, perintah-perintah ini berfungsi secara normal.4510Perintah yang membuka dialog interaktif tidak dapat melakukannya saat tidak ada terminal yang terhubung ke sesi latar belakang. `/install-github-app`, daftar pengaturan `/mcp`, dan tindakan autentikasi dalam menu server MCP merespons dengan pesan. Untuk `/install-github-app` dan daftar pengaturan `/mcp`, sesi juga muncul di bawah **Needs input** dalam [tampilan agent](/docs/id/agent-view) sehingga Anda dapat menemukannya, melampirkan, dan menjalankan perintah lagi. Saat terminal terhubung, perintah-perintah ini berfungsi secara normal.

4486 4511 

4487Sebelum v2.1.216, sesi tidak muncul di bawah **Needs input** setelah `/install-github-app` atau daftar pengaturan `/mcp` ditolak. Di v2.1.213 hingga v2.1.215, perintah masih berfungsi saat terminal terhubung, dan pesan penolakan memberi tahu Anda untuk melampirkan dan menjalankan perintah lagi. Dari v2.1.208 hingga v2.1.212, Claude Code menolaknya bahkan saat terminal terhubung, dengan pesan seperti `Can't open MCP settings in a background session`; pada versi tersebut, jalankan perintah dari sesi `claude` biasa sebagai gantinya, atau tingkatkan. Sebelum v2.1.208, mereka membuka dialog mereka di dalam sesi latar belakang. Di v2.1.208 saja, Claude Code juga menolak pemilih `/model` dalam sesi latar belakang, dan `/upgrade` mencetak URL upgrade alih-alih membuka browser.4512Sebelum v2.1.216, sesi tidak muncul di bawah **Needs input** setelah `/install-github-app` atau daftar pengaturan `/mcp` ditolak. Di v2.1.213 hingga v2.1.215, perintah masih berfungsi saat terminal terhubung, dan pesan penolakan memberi tahu Anda untuk melampirkan dan menjalankan perintah lagi. Dari v2.1.208 hingga v2.1.212, Claude Code menolaknya bahkan saat terminal terhubung, dengan pesan seperti `Can't open MCP settings in a background session`; pada versi tersebut, jalankan perintah dari sesi `claude` biasa sebagai gantinya, atau tingkatkan. Sebelum v2.1.208, mereka membuka dialog mereka di dalam sesi latar belakang. Di v2.1.208 saja, Claude Code juga menolak pemilih `/model` dalam sesi latar belakang, dan `/upgrade` mencetak URL upgrade alih-alih membuka browser.

4488 4513 


4494 4519 

4495**Yang harus dilakukan:**4520**Yang harus dilakukan:**

4496 4521 

4497* Lampirkan ke sesi dari tampilan agen dan jalankan perintah lagi4522* Lampirkan ke sesi dari tampilan agent dan jalankan perintah lagi

4498* Atau gunakan formulir yang dinamai pesan, seperti `/mcp reconnect <server>`, `/mcp enable`, atau `/mcp disable`, yang berfungsi tanpa melampirkan4523* Atau gunakan formulir yang dinamai pesan, seperti `/mcp reconnect <server>`, `/mcp enable`, atau `/mcp disable`, yang berfungsi tanpa melampirkan

4499 4524 

4500<h3 id="write-or-command-blocked-because-the-path-cannot-be-safely-resolved">4525<h3 id="write-or-command-blocked-because-the-path-cannot-be-safely-resolved">


4511 4536 

4512**Yang harus dilakukan:**4537**Yang harus dilakukan:**

4513 4538 

4514* Biasanya tidak ada: pesan lengkap masuk ke Claude sebagai kesalahan alat, dan Claude mencoba lagi dengan jalur langsung yang dinamainya. Untuk pengeditan file yang diblokir, tampilan percakapan menampilkan hanya baris `Error editing file` pendek; pesan lengkap muncul dalam tampilan transkrip, yang Anda buka dengan `Ctrl+O`. Perintah yang diblokir mencetaknya dalam output perintahnya.4539* Biasanya tidak ada: pesan lengkap masuk ke Claude sebagai kesalahan tool, dan Claude mencoba lagi dengan jalur langsung yang dinamainya. Untuk pengeditan file yang diblokir, tampilan percakapan menampilkan hanya baris `Error editing file` pendek; pesan lengkap muncul dalam tampilan transkrip, yang Anda buka dengan `Ctrl+O`. Perintah yang diblokir mencetaknya dalam output perintahnya.

4515* Jika blokir berulang pada file yang sama, jalur kemungkinan besar berjalan melalui symlink yang berkomitmen yang targetnya berisi `..`, seperti `docs/current -> ../README.md`; minta Claude untuk mengedit file target dengan jalur sebenarnya alih-alih melalui tautan4540* Jika blokir berulang pada file yang sama, jalur kemungkinan besar berjalan melalui symlink yang di-commit yang targetnya berisi `..`, seperti `docs/current -> ../README.md`; minta Claude untuk mengedit file target dengan jalur sebenarnya alih-alih melalui tautan

4516 4541 

4517<h3 id="write-or-command-blocked-because-the-path-names-a-network-location">4542<h3 id="write-or-command-blocked-because-the-path-names-a-network-location">

4518 Penulisan atau perintah diblokir karena jalur menamai lokasi jaringan4543 Penulisan atau perintah diblokir karena jalur menamai lokasi jaringan


4561This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.4586This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.

4562```4587```

4563 4588 

4564Membuka baris sesi yang sama dalam [tampilan agen](/docs/id/agent-view) menampilkan `Press enter again to restart this session fresh` di bawah daftar sebagai gantinya, dan `Enter` kedua pada baris memulai ulang sesi dengan percakapan kosong. Sebelum v2.1.212, membuka baris yang dihentikan menampilkan pesan penolakan tanpa cara untuk memulai ulang dari tampilan agen. Sebelum v2.1.211, membuka sesi yang dihentikan secara diam-diam memulai percakapan kosong itu dan dapat menjalankan kembali prompt asli sesi.4589Membuka baris sesi yang sama dalam [tampilan agent](/docs/id/agent-view) menampilkan `Press enter again to restart this session fresh` di bawah daftar sebagai gantinya, dan `Enter` kedua pada baris memulai ulang sesi dengan percakapan kosong. Sebelum v2.1.212, membuka baris yang dihentikan menampilkan pesan penolakan tanpa cara untuk memulai ulang dari tampilan agent. Sebelum v2.1.211, membuka sesi yang dihentikan secara diam-diam memulai percakapan kosong itu dan dapat menjalankan kembali prompt asli sesi.

4565 4590 

4566**Yang harus dilakukan:**4591**Yang harus dilakukan:**

4567 4592 

4568* Percakapan yang Anda latarbelakangkan masih utuh: lanjutkan dengan [`claude --resume`](/docs/id/sessions) atau terus bekerja di dalamnya4593* Percakapan yang Anda latarbelakangkan masih utuh: lanjutkan dengan [`claude --resume`](/docs/id/sessions) atau terus bekerja di dalamnya

4569* Untuk memulai sesi yang dihentikan segar bagaimanapun, jalankan `claude respawn <id>` dengan ID dari pesan, atau tekan `Enter` dua kali pada barisnya dalam tampilan agen4594* Untuk memulai sesi yang dihentikan segar bagaimanapun, jalankan `claude respawn <id>` dengan ID dari pesan, atau tekan `Enter` dua kali pada barisnya dalam tampilan agent

4570* Jika sesi memang menyelesaikan respons dan Anda masih melihat penolakan ini pada versi sebelum v2.1.214, folder yang tidak dapat dibaca di `~/.claude/projects` dapat membuat pemindaian transkrip melewatkan percakapan yang disimpan; perbarui ke v2.1.214 atau lebih baru, yang mentoleransi folder yang tidak dapat dibaca selama pemindaian4595* Jika sesi memang menyelesaikan respons dan Anda masih melihat penolakan ini pada versi sebelum v2.1.214, folder yang tidak dapat dibaca di `~/.claude/projects` dapat membuat pemindaian transkrip melewatkan percakapan yang disimpan; perbarui ke v2.1.214 atau lebih baru, yang mentoleransi folder yang tidak dapat dibaca selama pemindaian

4571 4596 

4572<h3 id="this-session-is-running-in-another-terminal">4597<h3 id="this-session-is-running-in-another-terminal">

4573 Sesi ini berjalan di terminal lain4598 Sesi ini berjalan di terminal lain

4574</h3>4599</h3>

4575 4600 

4576Anda membuka baris sesi yang dihentikan dalam [tampilan agen](/docs/id/agent-view), dan percakapan yang disimpannya sudah terbuka dalam proses Claude Code langsung lain di mesin ini, jadi Claude Code menolak untuk memulai proses kedua yang akan menulis ke transkrip yang sama. Pesan mana yang Anda lihat tergantung pada [apa yang memegang percakapan](/docs/id/agent-view#opening-a-session-says-the-conversation-is-already-open):4601Anda membuka baris sesi yang dihentikan dalam [tampilan agent](/docs/id/agent-view), dan percakapan yang disimpannya sudah terbuka dalam proses Claude Code langsung lain di mesin ini, jadi Claude Code menolak untuk memulai proses kedua yang akan menulis ke transkrip yang sama. Pesan mana yang Anda lihat tergantung pada [apa yang memegang percakapan](/docs/id/agent-view#opening-a-session-says-the-conversation-is-already-open):

4577 4602 

4578```text theme={null}4603```text theme={null}

4579Can't open — this session is running in another terminal4604Can't open — this session is running in another terminal


4601This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.4626This session's saved conversation is no longer on disk (it ended while the background service was off, and old transcripts are cleaned up), so there is nothing to resume. `claude rm 7c5dcf5d` deletes the row; `claude respawn 7c5dcf5d` runs its original prompt again instead.

4602```4627```

4603 4628 

4604`claude attach <id>` mencetak teks ini. Dalam tampilan agen, footer lebih pendek dan berakhir dengan `ctrl+x deletes the row`.4629`claude attach <id>` mencetak teks ini. Dalam tampilan agent, footer lebih pendek dan berakhir dengan `ctrl+x deletes the row`.

4605 4630 

4606**Yang harus dilakukan:**4631**Yang harus dilakukan:**

4607 4632 


4611Sebelum v2.1.248, membuka baris seperti itu menjalankan kembali prompt asli sesi alih-alih menolak, menarik tugas yang berusia berminggu-minggu kembali ke latar depan.4636Sebelum v2.1.248, membuka baris seperti itu menjalankan kembali prompt asli sesi alih-alih menolak, menarik tugas yang berusia berminggu-minggu kembali ke latar depan.

4612 4637 

4613<h3 id="worktree-has-commits-that-are-not-pushed-anywhere">4638<h3 id="worktree-has-commits-that-are-not-pushed-anywhere">

4614 Worktree memiliki komitmen yang tidak didorong ke mana pun4639 Worktree memiliki commit yang tidak didorong ke mana pun

4615</h3>4640</h3>

4616 4641 

4617Anda mencoba menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang worktree-nya menyimpan komitmen yang Claude Code tidak dapat memastikan disimpan di tempat lain. Claude Code menyimpan worktree dan baris sesi daripada menghancurkan komitmen yang tidak terlihat. `claude rm` menamai cabang dan komitmen yang tidak didorong, dan mengatakan cara melanjutkan:4642Anda mencoba menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang worktree-nya menyimpan commit yang Claude Code tidak dapat memastikan disimpan di tempat lain. Claude Code menyimpan worktree dan baris sesi daripada menghancurkan commit yang tidak terlihat. `claude rm` menamai branch dan commit yang tidak didorong, dan mengatakan cara melanjutkan:

4618 4643 

4619```text theme={null}4644```text theme={null}

4620kept 7c5dcf5d — its worktree is still at "/home/you/project/.claude/worktrees/fix-login"4645kept 7c5dcf5d — its worktree is still at “/home/you/project/.claude/worktrees/fix-login”

4621 2 unpushed commits on "claude/fix-login": a1b2c3d "Fix login flow" and 1 more. They exist on no remote, so deleting the worktree would lose them.4646 2 unpushed commits on “claude/fix-login”: a1b2c3d “Fix login flow” and 1 more. They exist on no remote, so deleting the worktree would lose them.

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

4623```4648```

4624 4649 

4625Ketika Claude Code tidak dapat merangkum komitmen, baris detail berbunyi `The worktree has unpushed commits` sebagai gantinya. Dalam [tampilan agen](/docs/id/agent-view), baris sesi menampilkan `not deleted` dengan alasan yang sama.4650Ketika Claude Code tidak dapat merangkum commit, baris detail berbunyi `The worktree has unpushed commits` sebagai gantinya. Dalam [tampilan agent](/docs/id/agent-view), baris sesi menampilkan `not deleted` dengan alasan yang sama.

4626 4651 

4627Komitmen pada remote tidak memblokir penghapusan. Begitu juga komitmen pada salinan lokal cabang default remote `origin` Anda, selama cabang itu diperiksa dalam checkout utama Anda, direktori repositori itu sendiri daripada worktree.4652Commit pada remote tidak memblokir penghapusan. Begitu juga commit pada salinan lokal branch default remote `origin` Anda, selama branch itu diperiksa dalam checkout utama Anda, direktori repositori itu sendiri daripada worktree.

4628 4653 

4629**Yang harus dilakukan:**4654**Yang harus dilakukan:**

4630 4655 

4631* Untuk menyimpan komitmen, dorong cabang worktree, atau gabungkan ke dalam cabang default yang diperiksa dalam checkout utama Anda, kemudian hapus sesi lagi4656* Untuk menyimpan commit, dorong branch worktree, atau gabungkan ke dalam branch default yang diperiksa dalam checkout utama Anda, kemudian hapus sesi lagi

4632* Untuk membuang komitmen, jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak pesan, atau tekan `Ctrl+X` dua kali pada baris sesi dalam tampilan agen lagi. Ini menghapus sesi dan worktree bersama dengan cabangnya, komitmen yang tidak didorong, dan perubahan yang tidak berkomitmen. Jika worktree telah mendapatkan komitmen sejak penolakan, Claude Code menyimpannya lagi dan menampilkan status yang diperbarui4657* Untuk membuang commit, jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak pesan, atau tekan `Ctrl+X` dua kali pada baris sesi dalam tampilan agent lagi. Ini menghapus sesi dan worktree bersama dengan branch-nya, commit yang tidak didorong, dan perubahan yang belum di-commit. Jika worktree telah mendapatkan commit sejak penolakan, Claude Code menyimpannya lagi dan menampilkan status yang diperbarui

4633* Ketika pesan mengatakan worktree juga dicatat oleh sesi selesai lain, menghapus lagi tidak membuangnya: dorong komitmen, kemudian hapus sesi lagi4658* Ketika pesan mengatakan worktree juga dicatat oleh sesi selesai lain, menghapus lagi tidak membuangnya: dorong commit, kemudian hapus sesi lagi

4634 4659 

4635Sebelum v2.1.268, `claude rm` menempatkan ringkasan komitmen pada baris `kept` itu sendiri. Ketika `claude rm` tidak dapat merangkum komitmen, baris `kept` berbunyi `worktree has commits that are not pushed anywhere` sebagai pengganti ringkasan.4660Sebelum v2.1.268, `claude rm` menempatkan ringkasan commit pada baris `kept` itu sendiri. Ketika `claude rm` tidak dapat merangkum commit, baris `kept` berbunyi `worktree has commits that are not pushed anywhere` sebagai pengganti ringkasan.

4636 4661 

4637Sebelum v2.1.260, pesan tidak menamai cabang atau komitmen, dan menghapus lagi ditolak dengan cara yang sama: menghapus sesi tanpa mendorong berarti menghapus worktree sendiri dengan `git worktree remove --force <path>`, kemudian menjalankan `claude rm <id>` lagi.4662Sebelum v2.1.260, pesan tidak menamai branch atau commit, dan menghapus lagi ditolak dengan cara yang sama: menghapus sesi tanpa mendorong berarti menghapus worktree sendiri dengan `git worktree remove --force <path>`, kemudian menjalankan `claude rm <id>` lagi.

4638 4663 

4639Sebelum v2.1.248, cabang default yang diperiksa dalam checkout utama Anda tidak dihitung: cabang yang sudah Anda gabungkan di sana masih memicu penolakan ini sampai komitmennya mencapai remote.4664Sebelum v2.1.248, branch default yang diperiksa dalam checkout utama Anda tidak dihitung: branch yang sudah Anda gabungkan di sana masih memicu penolakan ini sampai commit-nya mencapai remote.

4640 4665 

4641<h3 id="terminal-host-process-died">4666<h3 id="terminal-host-process-died">

4642 Proses host terminal mati4667 Proses host terminal mati


4644 4669 

4645Setiap terminal [sesi latar belakang](/docs/id/agent-view) berjalan dalam proses host di bawah layanan latar belakang, dan proses itu mati saat layanan masih menyimpan koneksinya, jadi sesi tidak dapat dijangkau.4670Setiap terminal [sesi latar belakang](/docs/id/agent-view) berjalan dalam proses host di bawah layanan latar belakang, dan proses itu mati saat layanan masih menyimpan koneksinya, jadi sesi tidak dapat dijangkau.

4646 4671 

4647Di Linux dan WSL, layanan latar belakang memeriksa setiap proses host setiap beberapa detik, menandai sesi gagal ketika proses telah keluar tetapi koneksinya ke layanan tidak pernah ditutup, dan menampilkan alasannya pada barisnya dalam [tampilan agen](/docs/id/agent-view#read-session-state):4672Di Linux dan WSL, layanan latar belakang memeriksa setiap proses host setiap beberapa detik, menandai sesi gagal ketika proses telah keluar tetapi koneksinya ke layanan tidak pernah ditutup, dan menampilkan alasannya pada barisnya dalam [tampilan agent](/docs/id/agent-view#read-session-state):

4648 4673 

4649```text theme={null}4674```text theme={null}

4650terminal host process died — press Enter to restart4675terminal host process died — press Enter to restart


4662 4687 

4663**Yang harus dilakukan:**4688**Yang harus dilakukan:**

4664 4689 

4665* Dalam tampilan agen, tekan `Enter` pada baris yang gagal; sesi dimulai ulang pada proses host segar dan percakapan dilanjutkan4690* Dalam tampilan agent, tekan `Enter` pada baris yang gagal; sesi dimulai ulang pada proses host segar dan percakapan dilanjutkan

4666* Dari shell, jalankan `claude attach <id>` lagi. Claude Code mencetak `Session <id>'s terminal host died — restarting it on a fresh one…` dan membuka kembali sesi4691* Dari shell, jalankan `claude attach <id>` lagi. Claude Code mencetak `Session <id>'s terminal host died — restarting it on a fresh one…` dan membuka kembali sesi

4667* Anda tidak dapat memulai ulang baris perintah shell dengan cara ini; kirim perintah lagi untuk menjalankannya kembali4692* Anda tidak dapat memulai ulang baris perintah shell dengan cara ini; kirim perintah lagi untuk menjalankannya kembali

4668 4693 


4674 4699 

4675Anda membuka [sesi latar belakang](/docs/id/agent-view) dan layanan latar belakang menerima pembukaan, tetapi tidak ada output yang tiba selama sekitar sepuluh detik, jadi Claude Code menyimpulkan bahwa proses yang menyampaikan terminal sesi tidak dapat memberikan output, dan mengakhiri upaya alih-alih menunggu.4700Anda membuka [sesi latar belakang](/docs/id/agent-view) dan layanan latar belakang menerima pembukaan, tetapi tidak ada output yang tiba selama sekitar sepuluh detik, jadi Claude Code menyimpulkan bahwa proses yang menyampaikan terminal sesi tidak dapat memberikan output, dan mengakhiri upaya alih-alih menunggu.

4676 4701 

4677Dalam tampilan agen, Claude Code menawarkan restart dalam footer:4702Dalam tampilan agent, Claude Code menawarkan restart dalam footer:

4678 4703 

4679```text theme={null}4704```text theme={null}

4680Press enter again to restart this session — it isn't responding (its conversation is saved and resumes).4705Press enter again to restart this session — it isn't responding (its conversation is saved and resumes).


4690 4715 

4691**Yang harus dilakukan:**4716**Yang harus dilakukan:**

4692 4717 

4693* Dalam tampilan agen, tekan `Enter` pada baris yang sama lagi. Claude Code menghentikan proses yang tidak responsif dan memulai ulang sesi, dan percakapan dilanjutkan. Tidak ada yang dihentikan tanpa tekan kedua itu4718* Dalam tampilan agent, tekan `Enter` pada baris yang sama lagi. Claude Code menghentikan proses yang tidak responsif dan memulai ulang sesi, dan percakapan dilanjutkan. Tidak ada yang dihentikan tanpa tekan kedua itu

4694* Dari shell, jalankan `claude stop <id>`, kemudian `claude attach <id>`4719* Dari shell, jalankan `claude stop <id>`, kemudian `claude attach <id>`

4695* Untuk baris perintah shell, tekan `Ctrl+X` dalam tampilan agen atau jalankan `claude stop <id>` untuk menghentikannya; kirim perintah lagi untuk menjalankannya kembali4720* Untuk baris perintah shell, tekan `Ctrl+X` dalam tampilan agent atau jalankan `claude stop <id>` untuk menghentikannya; kirim perintah lagi untuk menjalankannya kembali

4696 4721 

4697<h3 id="session-was-stopped-while-the-respawn-was-in-flight">4722<h3 id="session-was-stopped-while-the-respawn-was-in-flight">

4698 Sesi dihentikan saat respawn sedang dalam perjalanan4723 Sesi dihentikan saat respawn sedang dalam perjalanan


4708 4733 

4709**Yang harus dilakukan:**4734**Yang harus dilakukan:**

4710 4735 

4711* Jika Anda tidak menghentikan sesi, buka barisnya lagi dalam tampilan agen atau jalankan `claude respawn <id>` untuk memulainya kembali4736* Jika Anda tidak menghentikan sesi, buka barisnya lagi dalam tampilan agent atau jalankan `claude respawn <id>` untuk memulainya kembali

4712* Jika Anda menghentikannya sendiri, tidak ada yang tersisa untuk dilakukan: sesi tetap dihentikan4737* Jika Anda menghentikannya sendiri, tidak ada yang tersisa untuk dilakukan: sesi tetap dihentikan

4713 4738 

4714<h3 id="session-agent-no-longer-available">4739<h3 id="session-agent-no-longer-available">

4715 Agen sesi tidak lagi tersedia4740 Agent sesi tidak lagi tersedia

4716</h3>4741</h3>

4717 4742 

4718Anda melanjutkan sesi yang menjalankan [agen khusus](/docs/id/sub-agents#invoke-subagents-explicitly), dimulai dengan `--agent` atau pengaturan `agent`, dan Claude Code tidak menemukan agen dengan nama itu. Ini mencari direktori asli sesi terlebih dahulu, ketika Anda telah [mempercayai ruang kerja itu](/docs/id/permissions#project-allow-rules-and-workspace-trust), kemudian direktori tempat Anda melanjutkan. Sesi masih dilanjutkan, tetapi dengan alat default, jadi pembatasan alat agen tidak lagi berlaku:4743Anda melanjutkan sesi yang menjalankan [agent khusus](/docs/id/sub-agents#invoke-subagents-explicitly), dimulai dengan `--agent` atau pengaturan `agent`, dan Claude Code tidak menemukan agent dengan nama itu. Ini mencari direktori asli sesi terlebih dahulu, ketika Anda telah [mempercayai workspace itu](/docs/id/permissions#project-allow-rules-and-workspace-trust), kemudian direktori tempat Anda melanjutkan. Sesi masih dilanjutkan, tetapi dengan tool default, jadi pembatasan tool agent tidak lagi berlaku:

4719 4744 

4720```text theme={null}4745```text theme={null}

4721This session was running agent 'code-reviewer', which is no longer available (no agent by that name in /home/you/project). Continuing with the default tools and system prompt — the agent's tool restrictions no longer apply. To restore it, re-create the agent, or resume with an explicit --agent <name>.4746This session was running agent 'code-reviewer', which is no longer available (no agent by that name in /home/you/project). Continuing with the default tools and system prompt — the agent's tool restrictions no longer apply. To restore it, re-create the agent, or resume with an explicit --agent <name>.

4722```4747```

4723 4748 

4724Peringatan hanya menamai direktori yang Claude Code cari, dan muncul dalam percakapan yang dilanjutkan apakah Anda membangunkan [sesi latar belakang](/docs/id/agent-view), menjalankan `/resume` atau `claude --resume`, atau melanjutkan dalam [mode non-interaktif](/docs/id/headless), di mana ia juga masuk ke stderr. Sesi menggunakan `--input-format stream-json` tidak menampilkannya, karena Agent SDK menyediakan agen setelah startup.4749Peringatan hanya menamai direktori yang Claude Code cari, dan muncul dalam percakapan yang dilanjutkan apakah Anda membangunkan [sesi latar belakang](/docs/id/agent-view), menjalankan `/resume` atau `claude --resume`, atau melanjutkan dalam [mode non-interaktif](/docs/id/headless), di mana ia juga masuk ke stderr. Sesi menggunakan `--input-format stream-json` tidak menampilkannya, karena Agent SDK menyediakan agent setelah startup.

4725 4750 

4726Claude Code tidak menyimpan fallback ke sesi, jadi peringatan berulang pada setiap resume sampai Anda bertindak. Agen `claude` bawaan tidak memicu peringatan, karena jatuh kembali ke set alat default tidak mengubah apa pun untuk itu. Sebelum v2.1.216, Claude Code secara diam-diam melanjutkan sebagai agen default, dan pencarian mencakup hanya direktori tempat Anda melanjutkan, jadi agen yang bersifat proyek hilang pada resume apa pun dari direktori lain.4751Claude Code tidak menyimpan fallback ke sesi, jadi peringatan berulang pada setiap resume sampai Anda bertindak. Agent `claude` bawaan tidak memicu peringatan, karena jatuh kembali ke set tool default tidak mengubah apa pun untuk itu. Sebelum v2.1.216, Claude Code secara diam-diam melanjutkan sebagai agent default, dan pencarian mencakup hanya direktori tempat Anda melanjutkan, jadi agent yang bersifat proyek hilang pada resume apa pun dari direktori lain.

4727 4752 

4728**Yang harus dilakukan:**4753**Yang harus dilakukan:**

4729 4754 

4730* Buat ulang file agen di `.claude/agents/<name>.md` dalam proyek sesi, atau di `~/.claude/agents/<name>.md` untuk agen pribadi, kemudian lanjutkan lagi4755* Buat ulang file agent di `.claude/agents/<name>.md` dalam proyek sesi, atau di `~/.claude/agents/<name>.md` untuk agent pribadi, kemudian lanjutkan lagi

4731* Atau lanjutkan dengan `--agent <name>` yang menamai agen yang memang ada, untuk menjalankan sesi sebagai agen itu sebagai gantinya4756* Atau lanjutkan dengan `--agent <name>` yang menamai agent yang memang ada, untuk menjalankan sesi sebagai agent itu sebagai gantinya

4732* Jika agen bersifat proyek dan Anda belum mempercayai direktori asli sesi, jalankan Claude Code di sana sekali, terima dialog kepercayaan, kemudian lanjutkan lagi4757* Jika agent bersifat proyek dan Anda belum mempercayai direktori asli sesi, jalankan Claude Code di sana sekali, terima dialog kepercayaan, kemudian lanjutkan lagi

4733 4758 

4734<h3 id="claude_code_process_wrapper-launcher-errors">4759<h3 id="claude_code_process_wrapper-launcher-errors">

4735 Kesalahan peluncur CLAUDE\_CODE\_PROCESS\_WRAPPER4760 Kesalahan peluncur CLAUDE\_CODE\_PROCESS\_WRAPPER


4741CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file4766CLAUDE_CODE_PROCESS_WRAPPER: launcher `/opt/corp/launcher` is not an executable regular file

4742```4767```

4743 4768 

4744Peluncur yang dimulai tetapi keluar tanpa mengganti dirinya dengan Claude Code gagal sesi yang dimulainya, dan baris sesi dalam tampilan agen melaporkan bahwa peluncur `must exec, not daemonize`, diikuti oleh apa pun yang dicetak peluncur. Sesi yang tidak dapat dimulai atau menjangkau layanan latar belakang karena peluncur melaporkan masalah peluncur sebagai alasan di dalam `Couldn't reach the background service (...)`.4769Peluncur yang dimulai tetapi keluar tanpa mengganti dirinya dengan Claude Code gagal sesi yang dimulainya, dan baris sesi dalam tampilan agent melaporkan bahwa peluncur `must exec, not daemonize`, diikuti oleh apa pun yang dicetak peluncur. Sesi yang tidak dapat dimulai atau menjangkau layanan latar belakang karena peluncur melaporkan masalah peluncur sebagai alasan di dalam `Couldn't reach the background service (...)`.

4745 4770 

4746**Yang harus dilakukan:**4771**Yang harus dilakukan:**

4747 4772 


4778 EACCES saat memulai sesi latar belakang4803 EACCES saat memulai sesi latar belakang

4779</h3>4804</h3>

4780 4805 

4781Claude Code tidak dapat menjalankan binernya sendiri untuk memulai [layanan latar belakang](/docs/id/agent-view#the-supervisor-process) yang menyelenggarakan sesi latar belakang. Pada instalasi npm, ini biasanya berarti `npm install -g @anthropic-ai/claude-code` mengganti biner pada saat itu, apakah Anda menjalankannya atau [auto-updater](/docs/id/setup#auto-updates) melakukannya. Kesalahan muncul ketika Anda membuka sesi dari [tampilan agen](/docs/id/agent-view):4806Claude Code tidak dapat menjalankan binernya sendiri untuk memulai [layanan latar belakang](/docs/id/agent-view#the-supervisor-process) yang menyelenggarakan sesi latar belakang. Pada instalasi npm, ini biasanya berarti `npm install -g @anthropic-ai/claude-code` mengganti biner pada saat itu, apakah Anda menjalankannya atau [auto-updater](/docs/id/setup#auto-updates) melakukannya. Kesalahan muncul ketika Anda membuka sesi dari [tampilan agent](/docs/id/agent-view):

4782 4807 

4783```text theme={null}4808```text theme={null}

4784Couldn't start the background service — spawn background service: EACCES: permission denied, posix_spawn '/usr/local/lib/node_modules/@anthropic-ai/claude-code/bin/claude'4809Couldn't start the background service — spawn background service: EACCES: permission denied, posix_spawn '/usr/local/lib/node_modules/@anthropic-ai/claude-code/bin/claude'


4797**Yang harus dilakukan:**4822**Yang harus dilakukan:**

4798 4823 

4799* Tunggu beberapa detik, kemudian buka sesi atau kirim lagi. Ketika pesan mengatakan Claude Code sedang diperbarui, coba lagi setelah pembaruan selesai.4824* Tunggu beberapa detik, kemudian buka sesi atau kirim lagi. Ketika pesan mengatakan Claude Code sedang diperbarui, coba lagi setelah pembaruan selesai.

4800* Jika kesalahan bertahan saat tidak ada instalasi npm yang berjalan, pengguna Anda tidak dapat menjalankan biner yang diinstal. Periksa izinnya dan direktorinya, atau instal ulang Claude Code.4825* Jika kesalahan bertahan saat tidak ada instalasi npm yang berjalan, pengguna Anda tidak dapat menjalankan biner yang diinstal. Periksa hak aksesnya dan direktorinya, atau instal ulang Claude Code.

4801 4826 

4802<h3 id="background-service-exited-before-it-became-reachable">4827<h3 id="background-service-exited-before-it-became-reachable">

4803 Layanan latar belakang keluar sebelum dapat dijangkau4828 Layanan latar belakang keluar sebelum dapat dijangkau

4804</h3>4829</h3>

4805 4830 

4806Proses yang Claude Code mulai sebagai [layanan latar belakang](/docs/id/agent-view#the-supervisor-process) keluar sebelum menerima koneksi, jadi Claude Code tidak dapat membuka sesi Anda. Ketika layanan mencetak kesalahan sebelum keluar, alasan dalam tanda kurung memberikan kode keluar atau sinyal dan baris pertama yang dicetak layanan, yang menamai apa yang menghentikannya:4831Proses yang Claude Code mulai sebagai [layanan latar belakang](/docs/id/agent-view#the-supervisor-process) keluar sebelum menerima koneksi, jadi Claude Code tidak dapat membuka sesi Anda. Ketika layanan mencetak kesalahan sebelum keluar, alasan dalam tanda kurung memberikan exit code atau sinyal dan baris pertama yang dicetak layanan, yang menamai apa yang menghentikannya:

4807 4832 

4808```text theme={null}4833```text theme={null}

4809Couldn't reach the background service (background service exited before it became reachable (exit code N): <the service's first error line>) — run 'claude daemon status'4834Couldn't reach the background service (background service exited before it became reachable (exit code N): <the service's first error line>) — run 'claude daemon status'

4810```4835```

4811 4836 

4812Ketika Anda membuka sesi dari [tampilan agen](/docs/id/agent-view), alasan yang sama mengikuti `Couldn't start the background service —`. Ketika layanan tidak mencetak apa pun sebelum keluar, pesan mengatakan `nothing on stderr` sebagai gantinya.4837Ketika Anda membuka sesi dari [tampilan agent](/docs/id/agent-view), alasan yang sama mengikuti `Couldn't start the background service —`. Ketika layanan tidak mencetak apa pun sebelum keluar, pesan mengatakan `nothing on stderr` sebagai gantinya.

4813 4838 

4814Claude Code melaporkan kegagalan dengan baris kesalahan layanan. Sebelum v2.1.246, kegagalan muncul hanya setelah menunggu 45 detik, sebagai `background service did not become reachable within 45s`, tanpa baris kesalahan layanan.4839Claude Code melaporkan kegagalan dengan baris kesalahan layanan. Sebelum v2.1.246, kegagalan muncul hanya setelah menunggu 45 detik, sebagai `background service did not become reachable within 45s`, tanpa baris kesalahan layanan.

4815 4840 

4816Dua alasan yang dikutip memiliki penyebab yang diketahui:4841Dua alasan yang dikutip memiliki penyebab yang diketahui:

4817 4842 

4818* `Error: claude native binary not installed.`: instalasi npm mengganti biner Claude Code pada saat itu, jadi layanan menjalankan placeholder npm sebagai gantinya. Coba lagi setelah instalasi selesai; jika baris bertahan tanpa instalasi yang berjalan, [selesaikan instalasi npm](/docs/id/troubleshoot-install#native-binary-not-found-after-npm-install). Sebelum v2.1.257, pembaruan diri npm macOS menghasilkan kegagalan ini pada setiap awal selama jendela instalasi.4843* `Error: claude native binary not installed.`: instalasi npm mengganti biner Claude Code pada saat itu, jadi layanan menjalankan placeholder npm sebagai gantinya. Coba lagi setelah instalasi selesai; jika baris bertahan tanpa instalasi yang berjalan, [selesaikan instalasi npm](/docs/id/troubleshoot-install#native-binary-not-found-after-npm-install). Sebelum v2.1.257, pembaruan diri npm macOS menghasilkan kegagalan ini pada setiap awal selama jendela instalasi.

4819* `nothing on stderr` dengan kode keluar 1, pada setiap awal, di Windows: `daemon.lock` menamai proses yang Claude Code tidak dapat menandai atau membuktikan hilang, jadi setiap layanan baru menyimpulkan yang lain menyimpan kunci dan keluar. Kunci yang penulis Claude Code dapat membuktikan hilang diganti sendiri dan tidak menghasilkan kegagalan ini. Ketika kegagalan berulang pada setiap awal, hapus `~/.claude/daemon.lock`, kemudian buka sesi atau kirim lagi. Sebelum v2.1.257, kunci seperti itu memblokir setiap awal sampai Anda menghapus file.4844* `nothing on stderr` dengan exit code 1, pada setiap awal, di Windows: `daemon.lock` menamai proses yang Claude Code tidak dapat menandai atau membuktikan hilang, jadi setiap layanan baru menyimpulkan yang lain menyimpan kunci dan keluar. Kunci yang penulis Claude Code dapat membuktikan hilang diganti sendiri dan tidak menghasilkan kegagalan ini. Ketika kegagalan berulang pada setiap awal, hapus `~/.claude/daemon.lock`, kemudian buka sesi atau kirim lagi. Sebelum v2.1.257, kunci seperti itu memblokir setiap awal sampai Anda menghapus file.

4820 4845 

4821**Yang harus dilakukan:**4846**Yang harus dilakukan:**

4822 4847 


4833Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)4858Couldn't start a background session (working directory no longer exists or is not accessible: /tmp/demo)

4834```4859```

4835 4860 

4836Sebelum v2.1.257, sesi tampak dimulai dan kemudian ditampilkan dalam tampilan agen sebagai baris yang gagal dengan alasan yang sama.4861Sebelum v2.1.257, sesi tampak dimulai dan kemudian ditampilkan dalam tampilan agent sebagai baris yang gagal dengan alasan yang sama.

4837 4862 

4838Sebelum v2.1.281, pesan ini juga muncul ketika direktori sudah hilang sebelum Anda memulai sesi. Kasus itu melaporkan [`could not be resolved on disk`](#workspace-not-trusted-when-dispatching-a-background-session).4863Sebelum v2.1.281, pesan ini juga muncul ketika direktori sudah hilang sebelum Anda memulai sesi. Kasus itu melaporkan [`could not be resolved on disk`](#workspace-not-trusted-when-dispatching-a-background-session).

4839 4864 


4842* Buat ulang direktori yang dinamai pesan, atau kirim dari direktori yang ada, kemudian coba lagi4867* Buat ulang direktori yang dinamai pesan, atau kirim dari direktori yang ada, kemudian coba lagi

4843 4868 

4844<h3 id="workspace-not-trusted-when-dispatching-a-background-session">4869<h3 id="workspace-not-trusted-when-dispatching-a-background-session">

4845 Ruang kerja tidak dipercaya saat mengirim sesi latar belakang4870 Workspace tidak dipercaya saat mengirim sesi latar belakang

4846</h3>4871</h3>

4847 4872 

4848Anda memulai atau memulai ulang [sesi latar belakang](/docs/id/agent-view) dalam direktori yang belum Anda [percayai](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan dialog kepercayaan ruang kerja tidak dapat muncul untuk bertanya. Claude Code tidak memulai sesi:4873Anda memulai atau memulai ulang [sesi latar belakang](/docs/id/agent-view) dalam direktori yang belum Anda [percayai](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan dialog kepercayaan workspace tidak dapat muncul untuk bertanya. Claude Code tidak memulai sesi:

4849 4874 

4850```text theme={null}4875```text theme={null}

4851Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.4876Workspace not trusted. Run `claude` in /path/to/project once and accept the trust prompt, then retry.


4858* **`The home directory is trusted one session at a time`**: direktori sesi adalah direktori home Anda. Claude Code tidak pernah menyimpan kepercayaan untuk direktori home, jadi menerima dialog di sana dalam sesi sebelumnya tidak dihitung.4883* **`The home directory is trusted one session at a time`**: direktori sesi adalah direktori home Anda. Claude Code tidak pernah menyimpan kepercayaan untuk direktori home, jadi menerima dialog di sana dalam sesi sebelumnya tidak dihitung.

4859* **`<path> could not be resolved on disk`**: Claude Code tidak dapat menemukan direktori sesi di disk.4884* **`<path> could not be resolved on disk`**: Claude Code tidak dapat menemukan direktori sesi di disk.

4860 4885 

4886Sebelum v2.1.286, di Windows, pesan ini juga dapat muncul di direktori yang sudah Anda percayai, jika catatan kepercayaannya disimpan dengan jalur dalam huruf besar/kecil yang berbeda. Perbarui ke v2.1.286 atau lebih baru.

4887 

4861**Yang harus dilakukan:**4888**Yang harus dilakukan:**

4862 4889 

4863* Jalankan `claude` di direktori yang dinamai pesan dan terima dialog kepercayaan, kemudian jalankan perintah lagi4890* Jalankan `claude` di direktori yang dinamai pesan dan terima dialog kepercayaan, kemudian jalankan perintah lagi

fullscreen.md +2 −0

Details

105* **Klik nilai pengaturan di panel `/config`** untuk mengubahnya, dan gulir daftar pengaturan dengan roda mouse. Memerlukan Claude Code v2.1.271 atau lebih baru.105* **Klik nilai pengaturan di panel `/config`** untuk mengubahnya, dan gulir daftar pengaturan dengan roda mouse. Memerlukan Claude Code v2.1.271 atau lebih baru.

106* **Gulir menu pilih atau multi-pilih dengan roda mouse** ketika memiliki lebih banyak opsi daripada yang ditampilkan sekaligus, seperti daftar `/model` di jendela terminal pendek. Roda menggulir daftar saat pointer berada di atas opsinya. Memerlukan Claude Code v2.1.280 atau lebih baru.106* **Gulir menu pilih atau multi-pilih dengan roda mouse** ketika memiliki lebih banyak opsi daripada yang ditampilkan sekaligus, seperti daftar `/model` di jendela terminal pendek. Roda menggulir daftar saat pointer berada di atas opsinya. Memerlukan Claude Code v2.1.280 atau lebih baru.

107* **Gulir daftar yang meluap dengan scrollbar-nya.** Dalam panel daftar seperti `/skills`, `/mcp`, dan daftar Installed `/plugin`, scrollbar muncul di samping daftar dengan lebih banyak baris daripada yang muat saat pointer berada di atasnya. Klik trek untuk melompat ke titik itu, atau seret ibu jari. Memerlukan Claude Code v2.1.281 atau lebih baru.107* **Gulir daftar yang meluap dengan scrollbar-nya.** Dalam panel daftar seperti `/skills`, `/mcp`, dan daftar Installed `/plugin`, scrollbar muncul di samping daftar dengan lebih banyak baris daripada yang muat saat pointer berada di atasnya. Klik trek untuk melompat ke titik itu, atau seret ibu jari. Memerlukan Claude Code v2.1.281 atau lebih baru.

108 * Jika bilah memiliki panah `↑` dan `↓` di ujungnya, klik panah untuk menggulir satu baris, atau tahan untuk terus menggulir. Panah memerlukan Claude Code v2.1.286 atau lebih baru.

109* **Klik baris `↑ N more` atau `↓ N more` di tepi daftar** untuk melompat ke ujung daftar tersebut tanpa memilih opsi. Memerlukan Claude Code v2.1.286 atau lebih baru.

108* **Klik hasil tool yang diciutkan** untuk memerluasnya dan melihat output lengkap. Klik lagi untuk menciutkan. Panggilan tool dan hasilnya berkembang bersama. Hanya pesan yang memiliki lebih banyak untuk ditampilkan yang dapat diklik.110* **Klik hasil tool yang diciutkan** untuk memerluasnya dan melihat output lengkap. Klik lagi untuk menciutkan. Panggilan tool dan hasilnya berkembang bersama. Hanya pesan yang memiliki lebih banyak untuk ditampilkan yang dapat diklik.

109 * Mengklik juga memerluaskan output dari perintah shell `!`, baik hasil yang dipotong lebih lama atau baris kemajuan langsung saat perintah berjalan. Memerlukan Claude Code v2.1.257 atau lebih baru.111 * Mengklik juga memerluaskan output dari perintah shell `!`, baik hasil yang dipotong lebih lama atau baris kemajuan langsung saat perintah berjalan. Memerlukan Claude Code v2.1.257 atau lebih baru.

110 * Mengklik juga memerluaskan baris `Message from @<sender>` yang redup ketika pengirim adalah [rekan tim](/docs/id/agent-teams) atau agen lain yang berjalan dalam sesi Anda. Baris untuk pesan dari [salah satu sesi Anda yang lain](/docs/id/cross-session-messaging#what-a-message-looks-like) juga menampilkan baris pertama pesan dan tidak dapat diklik, jadi tekan `Ctrl+o` untuk membaca yang itu.112 * Mengklik juga memerluaskan baris `Message from @<sender>` yang redup ketika pengirim adalah [rekan tim](/docs/id/agent-teams) atau agen lain yang berjalan dalam sesi Anda. Baris untuk pesan dari [salah satu sesi Anda yang lain](/docs/id/cross-session-messaging#what-a-message-looks-like) juga menampilkan baris pertama pesan dan tidak dapat diklik, jadi tekan `Ctrl+o` untuk membaca yang itu.

headless.md +8 −0

Details

62| Agen kustom | `--agents <json>` |62| Agen kustom | `--agents <json>` |

63| Plugin | `--plugin-dir <path>`, `--plugin-url <url>` |63| Plugin | `--plugin-dir <path>`, `--plugin-url <url>` |

64 64 

65Bare mode juga membatasi apa yang terjadi selama sesi berjalan:

66 

67* **Server MCP**: hanya server yang diberikan di baris perintah yang terhubung, misalnya dengan `--mcp-config`. Dalam sesi interaktif, Claude Code juga melewati koneksi IDE otomatis kecuali Anda meneruskan `--ide`.

68* **System reminder**: Claude menerima prompt Anda dan hasil tool tanpa [system reminder](/docs/id/glossary#system-reminder) yang biasanya ditambahkan Claude Code bersamanya. Misalnya, Claude tidak diberi tahu ketika file yang dibacanya sebelumnya berubah di disk, dan Claude tidak mendapatkan daftar skill yang tersedia, termasuk skill dari folder `--add-dir`.

69* **Tugas latar belakang**: tidak ada yang berjalan. Perintah yang mencapai [timeout](/docs/id/tools-reference#timeout-and-output-limits) berhenti alih-alih [berpindah ke latar belakang](/docs/id/tools-reference#background-commands).

70 

71Sebelum v2.1.286, batasan ini hanya berlaku sebagian: sesi `--bare` interaktif menghubungkan server MCP yang akan dihubungkan oleh sesi normal, setiap sesi `--bare` mengirim system reminder, dan tugas latar belakang tetap tersedia.

72 

65<Note>73<Note>

66 `--bare` adalah mode yang direkomendasikan untuk panggilan skrip dan SDK, dan akan menjadi default untuk `-p` di rilis mendatang.74 `--bare` adalah mode yang direkomendasikan untuk panggilan skrip dan SDK, dan akan menjadi default untuk `-p` di rilis mendatang.

67</Note>75</Note>

hooks.md +884 −873

Details

12 12 

13Hooks adalah perintah shell yang ditentukan pengguna, endpoint HTTP, panggilan MCP tool, prompt LLM, atau subagent yang dijalankan secara otomatis pada titik-titik tertentu dalam siklus hidup Claude Code. Claude Code memicu event hook yang sama di mana pun ia berjalan: sesi di terminal, ekstensi IDE, [aplikasi Desktop](/docs/id/desktop-quickstart), dan [Claude Code di web](/docs/id/claude-code-on-the-web). Gunakan referensi ini untuk mencari skema event, opsi konfigurasi, format JSON input/output, dan fitur lanjutan seperti async hooks, HTTP hooks, dan MCP tool hooks.13Hooks adalah perintah shell yang ditentukan pengguna, endpoint HTTP, panggilan MCP tool, prompt LLM, atau subagent yang dijalankan secara otomatis pada titik-titik tertentu dalam siklus hidup Claude Code. Claude Code memicu event hook yang sama di mana pun ia berjalan: sesi di terminal, ekstensi IDE, [aplikasi Desktop](/docs/id/desktop-quickstart), dan [Claude Code di web](/docs/id/claude-code-on-the-web). Gunakan referensi ini untuk mencari skema event, opsi konfigurasi, format JSON input/output, dan fitur lanjutan seperti async hooks, HTTP hooks, dan MCP tool hooks.

14 14 

15Plugin juga dapat mendaftarkan hook sebagai fungsi JavaScript yang dipanggil oleh Claude Code di dalam prosesnya sendiri, yang dapat menggambar di antarmuka sekaligus bertindak atas event. Plugin yang melakukan hal tersebut adalah sebuah [mod](/docs/id/plugins/mods/overview), dan hook fungsi tersebut dibahas di [Bereaksi terhadap event](/docs/id/plugins/mods/events), bukan di sini. Hook di halaman ini tetap berfungsi berdampingan dengan mod.

16 

15<h2 id="hook-lifecycle">17<h2 id="hook-lifecycle">

16 Siklus hidup hook18 Siklus hidup hook

17</h2>19</h2>


274 276 

275Hooks dari file pengaturan, pengaturan kebijakan terkelola, dan plugin juga berjalan di dalam [subagents](/docs/id/sub-agents). Ketika subagent memanggil tool, tool events seperti `PreToolUse` dan `PostToolUse` menjalankan hooks yang dikonfigurasi sama seperti dalam percakapan utama, dan input membawa bidang input umum `agent_id` dan `agent_type` [](#common-input-fields) yang mengidentifikasi subagent.277Hooks dari file pengaturan, pengaturan kebijakan terkelola, dan plugin juga berjalan di dalam [subagents](/docs/id/sub-agents). Ketika subagent memanggil tool, tool events seperti `PreToolUse` dan `PostToolUse` menjalankan hooks yang dikonfigurasi sama seperti dalam percakapan utama, dan input membawa bidang input umum `agent_id` dan `agent_type` [](#common-input-fields) yang mengidentifikasi subagent.

276 278 

277Administrator enterprise dapat menggunakan `allowManagedHooksOnly` untuk membatasi hooks mana yang berjalan:279Administrator dapat menggunakan [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) dalam [pengaturan terkelola](/docs/id/managed-settings) untuk membatasi hooks mana yang berjalan:

278 280 

279* Hooks pengguna, proyek, lokal, dan plugin Anda diblokir. Hooks dari plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins` dikecualikan281* Hooks pengguna, proyek, lokal, dan plugin Anda diblokir. Hooks dari plugins yang dipaksa-aktifkan dalam pengaturan terkelola `enabledPlugins` dikecualikan

280* Claude Code juga mempersempit pengaturan [`statusLine`](/docs/id/statusline), [`fileSuggestion`](/docs/id/settings-reference#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) Anda ke pengaturan terkelola282* Claude Code juga mempersempit pengaturan [`statusLine`](/docs/id/statusline), [`fileSuggestion`](/docs/id/settings-reference#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) Anda ke pengaturan terkelola


304 306 

305Matcher pada jalur ekspresi reguler diuji dengan `RegExp.prototype.test` JavaScript, yang berhasil pada kecocokan di mana pun dalam nilai. `Edit.*` cocok dengan `Edit` dan `NotebookEdit`; bungkus pola dalam `^` dan `$`, seperti `^Edit$`, ketika Anda memerlukan kecocokan seluruh string.307Matcher pada jalur ekspresi reguler diuji dengan `RegExp.prototype.test` JavaScript, yang berhasil pada kecocokan di mana pun dalam nilai. `Edit.*` cocok dengan `Edit` dan `NotebookEdit`; bungkus pola dalam `^` dan `$`, seperti `^Edit$`, ketika Anda memerlukan kecocokan seluruh string.

306 308 

307Tanda hubung dalam set exact-match memerlukan Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya, nama dengan tanda hubung seperti `code-reviewer` dievaluasi sebagai ekspresi reguler yang tidak berlabuh, jadi juga dijalankan untuk `senior-code-reviewer`; labuhnya sebagai `^code-reviewer$` pada versi tersebut untuk mencocokkan hanya nama itu.

308 

309`FileChanged` dan `StopFailure` menggunakan set exact-match yang lebih sempit dari huruf, digit, `_`, dan `|` saja. Tanda hubung, spasi, atau koma dalam matcher untuk dua event itu membuat tetap pada jalur ekspresi reguler, dan hanya `|` yang memisahkan alternatif. Setiap event lain dengan dukungan matcher dalam tabel yang mengikuti menerima `|` atau `,`.309`FileChanged` dan `StopFailure` menggunakan set exact-match yang lebih sempit dari huruf, digit, `_`, dan `|` saja. Tanda hubung, spasi, atau koma dalam matcher untuk dua event itu membuat tetap pada jalur ekspresi reguler, dan hanya `|` yang memisahkan alternatif. Setiap event lain dengan dukungan matcher dalam tabel yang mengikuti menerima `|` atau `,`.

310 310 

311Event `FileChanged` tidak mengikuti aturan ini saat membangun daftar watch-nya. Lihat [FileChanged](#filechanged).311Event `FileChanged` tidak mengikuti aturan ini saat membangun daftar watch-nya. Lihat [FileChanged](#filechanged).


380* `mcp__brave-search__.*` cocok dengan semua tools dari server yang namanya berisi tanda hubung380* `mcp__brave-search__.*` cocok dengan semua tools dari server yang namanya berisi tanda hubung

381* `mcp__.*__write.*` cocok dengan tool apa pun yang namanya dimulai dengan `write` dari server apa pun381* `mcp__.*__write.*` cocok dengan tool apa pun yang namanya dimulai dengan `write` dari server apa pun

382 382 

383Tanda hubung dalam set exact-match memerlukan Claude Code v2.1.195 atau lebih baru. Pada versi sebelumnya, awalan bare dengan tanda hubung seperti `mcp__brave-search` dievaluasi sebagai ekspresi reguler yang tidak berlabuh dan cocok dengan setiap tool dari server itu. Bentuk `mcp__brave-search__.*` bekerja pada setiap versi.

384 

385Tools dari [plugin-bundled MCP server](/docs/id/mcp#plugin-provided-mcp-servers) menggunakan segmen server yang dibatasi yang mencakup nama plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Matcher yang ditulis terhadap kunci server bare tidak pernah dijalankan untuk tools ini. Untuk plugin bernama `my-plugin` yang membundel server di bawah kunci `db`, tool `query` muncul sebagai `mcp__plugin_my-plugin_db__query`, jadi matcher untuk setiap tool dari server itu adalah `mcp__plugin_my-plugin_db__.*`. Gunakan nama tool yang dibatasi yang sama dalam bidang [`if`](#common-fields) handler. Lihat [Plugin-provided MCP servers](/docs/id/mcp#plugin-provided-mcp-servers) untuk bagaimana nama yang dibatasi dibangun.383Tools dari [plugin-bundled MCP server](/docs/id/mcp#plugin-provided-mcp-servers) menggunakan segmen server yang dibatasi yang mencakup nama plugin: `mcp__plugin_<plugin-name>_<server-name>__<tool>`. Matcher yang ditulis terhadap kunci server bare tidak pernah dijalankan untuk tools ini. Untuk plugin bernama `my-plugin` yang membundel server di bawah kunci `db`, tool `query` muncul sebagai `mcp__plugin_my-plugin_db__query`, jadi matcher untuk setiap tool dari server itu adalah `mcp__plugin_my-plugin_db__.*`. Gunakan nama tool yang dibatasi yang sama dalam bidang [`if`](#common-fields) handler. Lihat [Plugin-provided MCP servers](/docs/id/mcp#plugin-provided-mcp-servers) untuk bagaimana nama yang dibatasi dibangun.

386 384 

387Contoh ini mencatat semua operasi memory server dan memvalidasi operasi write dari server MCP apa pun:385Contoh ini mencatat semua operasi memory server dan memvalidasi operasi write dari server MCP apa pun:


421 419 

422* **[Command hooks](#command-hook-fields)** (`type: "command"`): jalankan perintah shell. Skrip Anda menerima [JSON input](#hook-input-and-output) event di stdin dan mengkomunikasikan hasil kembali melalui kode keluar dan stdout.420* **[Command hooks](#command-hook-fields)** (`type: "command"`): jalankan perintah shell. Skrip Anda menerima [JSON input](#hook-input-and-output) event di stdin dan mengkomunikasikan hasil kembali melalui kode keluar dan stdout.

423* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): kirimkan JSON input event sebagai permintaan HTTP POST ke URL. Endpoint mengkomunikasikan hasil kembali melalui badan respons menggunakan [format JSON output](#json-output) yang sama seperti command hooks.421* **[HTTP hooks](#http-hook-fields)** (`type: "http"`): kirimkan JSON input event sebagai permintaan HTTP POST ke URL. Endpoint mengkomunikasikan hasil kembali melalui badan respons menggunakan [format JSON output](#json-output) yang sama seperti command hooks.

424* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): panggil tool pada [MCP server](/docs/id/mcp) yang sudah terhubung. Output teks tool diperlakukan seperti command-hook stdout.422* **[MCP tool hooks](#mcp-tool-hook-fields)** (`type: "mcp_tool"`): panggil tool pada [server MCP](/docs/id/mcp) yang dikonfigurasi. Output teks tool diperlakukan seperti command-hook stdout.

425* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): kirimkan prompt ke model Claude untuk evaluasi single-turn. Model mengembalikan keputusannya sebagai JSON. Lihat [Prompt-based hooks](#prompt-based-hooks).423* **[Prompt hooks](#prompt-and-agent-hook-fields)** (`type: "prompt"`): kirimkan prompt ke model Claude untuk evaluasi single-turn. Model mengembalikan keputusannya sebagai JSON. Lihat [Prompt-based hooks](#prompt-based-hooks).

426* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): spawn subagent yang dapat menggunakan tools seperti Read, Grep, dan Glob untuk memverifikasi kondisi sebelum mengembalikan keputusan. Agent hooks adalah eksperimental dan mungkin berubah. Lihat [Agent-based hooks](#agent-based-hooks).424* **[Agent hooks](#prompt-and-agent-hook-fields)** (`type: "agent"`): spawn subagent yang dapat menggunakan tools seperti Read, Grep, dan Glob untuk memverifikasi kondisi sebelum mengembalikan keputusan. Agent hooks adalah eksperimental dan mungkin berubah. Lihat [Agent-based hooks](#agent-based-hooks).

427 425 


457| `Bash(git *)` | `npm test && git push` | ya | setiap subperintah diperiksa; `git push` cocok |455| `Bash(git *)` | `npm test && git push` | ya | setiap subperintah diperiksa; `git push` cocok |

458| `Bash(rm *)` | `echo $(rm -rf /)` | ya | perintah di dalam `$()` dan backticks diperiksa; `rm -rf /` cocok |456| `Bash(rm *)` | `echo $(rm -rf /)` | ya | perintah di dalam `$()` dan backticks diperiksa; `rm -rf /` cocok |

459| `Bash(rm *)` | `echo $(date)` | tidak | tidak ada subperintah yang cocok dengan `rm *` |457| `Bash(rm *)` | `echo $(date)` | tidak | tidak ada subperintah yang cocok dengan `rm *` |

460| `Bash(cat *)` | `echo before $(date) after` | tidak | substitusi dapat duduk di posisi argumen apa pun, jadi perintah lengkap dan `date` keduanya diperiksa; tidak ada yang cocok dengan `cat *` |

461| `Bash(git *)` | `$TOOL git push` | ya | Claude Code tidak dapat mengatakan apa nama perintah berkembang menjadi, jadi menjalankan hook |

462| `Bash(git push *)` | `echo $(date)` | ya | pola yang menentukan lebih dari nama perintah menjalankan hook bagaimanapun pada `$()`, backticks, atau `$VAR` |458| `Bash(git push *)` | `echo $(date)` | ya | pola yang menentukan lebih dari nama perintah menjalankan hook bagaimanapun pada `$()`, backticks, atau `$VAR` |

463 459 

464Ketika Claude Code tidak dapat menentukan perintah mana yang dijalankan input Bash, itu menjalankan hook Anda terlepas dari pola. Karena filter `if` adalah best-effort, gunakan [sistem izin](/docs/id/permissions) daripada hook untuk memberlakukan allow atau deny yang keras.460Ketika Claude Code tidak dapat menentukan perintah mana yang dijalankan input Bash, itu menjalankan hook Anda terlepas dari pola. Karena filter `if` adalah best-effort, gunakan [sistem izin](/docs/id/permissions) daripada hook untuk memberlakukan allow atau deny yang keras.


474| `command` | ya | Perintah shell untuk dijalankan. Dengan `args`, executable untuk spawn secara langsung. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |470| `command` | ya | Perintah shell untuk dijalankan. Dengan `args`, executable untuk spawn secara langsung. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |

475| `args` | tidak | Daftar argumen. Ketika ada, `command` diselesaikan sebagai executable dan di-spawn secara langsung dengan `args` sebagai vektor argumen, tanpa shell yang terlibat. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |471| `args` | tidak | Daftar argumen. Ketika ada, `command` diselesaikan sebagai executable dan di-spawn secara langsung dengan `args` sebagai vektor argumen, tanpa shell yang terlibat. Lihat [Exec form dan shell form](#exec-form-and-shell-form) |

476| `async` | tidak | Jika `true`, dijalankan di latar belakang tanpa memblokir. Lihat [Run hooks in the background](#run-hooks-in-the-background) |472| `async` | tidak | Jika `true`, dijalankan di latar belakang tanpa memblokir. Lihat [Run hooks in the background](#run-hooks-in-the-background) |

477| `asyncRewake` | tidak | Jika `true`, dijalankan di latar belakang dan membangunkan Claude pada kode keluar 2. Hook stderr, atau stdout jika stderr kosong, ditampilkan ke Claude sebagai pengingat sistem sehingga dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |473| `asyncRewake` | tidak | Jika `true`, dijalankan di latar belakang dan membangunkan Claude pada kode keluar 2. Hook stderr, atau stdout jika stderr kosong, ditampilkan ke Claude sebagai [system reminder](/docs/id/glossary#system-reminder) sehingga dapat bereaksi terhadap kegagalan latar belakang yang berjalan lama |

478| `shell` | tidak | Shell untuk digunakan untuk hook ini. Menerima `"bash"` atau `"powershell"`. Default ke `"bash"`, atau ke `"powershell"` di Windows ketika Git Bash tidak diinstal. Menetapkan `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hooks spawn PowerShell secara langsung. Diabaikan ketika `args` diatur |474| `shell` | tidak | Shell untuk digunakan untuk hook ini. Menerima `"bash"` atau `"powershell"`. Default ke `"bash"`, atau ke `"powershell"` di Windows ketika Git Bash tidak diinstal. Menetapkan `"powershell"` menjalankan perintah melalui PowerShell di Windows. Tidak memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL` karena hooks spawn PowerShell secara langsung. Diabaikan ketika `args` diatur |

479 475 

480<a id="exec-form-and-shell-form" />476<a id="exec-form-and-shell-form" />


571 567 

572| Bidang | Diperlukan | Deskripsi |568| Bidang | Diperlukan | Deskripsi |

573| :- | :- | :- |569| :- | :- | :- |

574| `server` | ya | Nama server MCP yang dikonfigurasi. Untuk [plugin-bundled server](/docs/id/mcp#plugin-provided-mcp-servers), ini adalah nama yang dibatasi `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:db`, bukan kunci server bare. Server harus sudah terhubung; hook tidak pernah memicu alur OAuth atau koneksi |570| `server` | ya | Nama server MCP yang dikonfigurasi. Untuk [plugin-bundled server](/docs/id/mcp#plugin-provided-mcp-servers), ini adalah nama yang dibatasi `plugin:<plugin-name>:<server-name>`, seperti `plugin:my-plugin:db`, bukan kunci server bare |

575| `tool` | ya | Nama tool untuk dipanggil di server itu |571| `tool` | ya | Nama tool untuk dipanggil di server itu |

576| `input` | tidak | Argumen yang dilewatkan ke tool. Nilai string mendukung substitusi `${path}` dari [JSON input](#hook-input-and-output) hook, seperti `"${tool_input.file_path}"` |572| `input` | tidak | Argumen yang dilewatkan ke tool. Nilai string mendukung substitusi `${path}` dari [JSON input](#hook-input-and-output) hook, seperti `"${tool_input.file_path}"` |

577 573 

578Claude Code membaca konten teks tool dengan cara yang sama seperti membaca command-hook stdout, mengikuti [parsing rule di bawah exit code 0](#exit-code-0). Jika server bernama tidak terhubung, atau tool mengembalikan `isError: true`, hook menghasilkan kesalahan non-blocking dan eksekusi berlanjut.

579 

580Contoh ini memanggil tool `security_scan` pada server MCP `my_server` setelah setiap `Write` atau `Edit`, melewatkan path file yang diedit:574Contoh ini memanggil tool `security_scan` pada server MCP `my_server` setelah setiap `Write` atau `Edit`, melewatkan path file yang diedit:

581 575 

582```json theme={null}576```json theme={null}


599}593}

600```594```

601 595 

602Hook `mcp_tool` dapat berjalan hanya setelah Claude Code membuat server MCP sesi tersedia untuk hooks. `SessionStart` dan `Setup` dapat dijalankan sebelum titik itu:596<h5 id="how-the-tool’s-result-is-read">

597 Bagaimana hasil tool dibaca

598</h5>

603 599 

604* **Saat peluncuran**: `SessionStart` dijalankan sebelum server tersedia, termasuk ketika Anda meluncurkan dengan `--continue` atau `--resume`. Claude Code melewatkan hook `mcp_tool` event tanpa memanggil tools mereka, dan [debug log](#debug-hooks) mencatat `mcp_tool hooks are not available for the 'SessionStart' hook event (no MCP client context)`.600Claude Code membaca konten teks tool dengan cara yang sama seperti membaca command-hook stdout, mengikuti [aturan parsing di bawah exit code 0](#exit-code-0). Jika tool mengembalikan `isError: true`, hook menghasilkan kesalahan non-blocking dan eksekusi berlanjut.

605* **Nanti dalam sesi yang berjalan**: setelah `/clear` atau compaction, `SessionStart` dijalankan lagi dengan server sudah tersedia, dan hook `mcp_tool` berjalan.

606* **Pada `Setup`**: `Setup` selalu dijalankan sebelum server tersedia, jadi Claude Code melewatkan hook `mcp_tool` setiap kali dan mencatat pesan yang sama yang menamai `Setup`.

607 601 

608Misalnya, konfigurasi ini memanggil tool `load_context` pada server MCP `my_server` dari hook `SessionStart` tanpa matcher, jadi berlaku untuk setiap sumber `SessionStart`:602<h5 id="when-the-server-is-still-connecting">

603 Ketika server masih dalam proses terhubung

604</h5>

609 605 

610```json theme={null}606Pada event di mana hook dapat memblokir atau mengubah hasil, seperti `PreToolUse` atau `Stop`, Claude Code menunggu server yang sedang terhubung sebelum memanggil tool, paling lama [`MCP_TIMEOUT`](/docs/id/env-vars) dan dalam batas [`timeout`](#common-fields) milik hook itu sendiri. Pada event observasional, seperti `Notification` atau `SessionEnd`, Claude Code tidak menunggu.

611{

612 "hooks": {

613 "SessionStart": [

614 {

615 "hooks": [

616 {

617 "type": "mcp_tool",

618 "server": "my_server",

619 "tool": "load_context"

620 }

621 ]

622 }

623 ]

624 }

625}

626```

627 607 

628Ketika Anda menjalankan `claude`, Claude Code melewatkan hook ini, tidak pernah memanggil `load_context`, dan menulis pesan `no MCP client context` ke debug log. Jalankan `/clear` dalam sesi yang sama dan hook berjalan dan memanggil `load_context`. Hook `type: "command"` pada `SessionStart` berjalan saat peluncuran, jadi gunakan satu untuk apa pun yang sesi butuhkan dari turn pertamanya.608Server yang menampilkan [status `cached`](/docs/id/mcp#server-status-detail) terhubung ketika hook memanggil tool-nya. Jika server belum terhubung pada saat itu, hook menghasilkan kesalahan non-blocking dan eksekusi berlanjut. Hook tidak pernah memulai alur OAuth, jadi [autentikasi server dari `/mcp`](/docs/id/mcp#authenticate-with-remote-mcp-servers) terlebih dahulu.

609 

610<h5 id="events-that-fire-before-mcp-servers-are-available">

611 Event yang dijalankan sebelum server MCP tersedia

612</h5>

613 

614`SessionStart` saat peluncuran, termasuk dengan `--continue` atau `--resume`, dan setiap event `Setup` dijalankan sebelum server MCP sesi tersedia untuk hook. Claude Code melewatkan hook `mcp_tool` mereka tanpa memanggil tool, dan [debug log](#debug-hooks) mencatat `mcp_tool hooks are not available for the 'SessionStart' hook event (no MCP client context)`, atau pesan yang sama yang menyebut `Setup`. Ketika `SessionStart` dijalankan lagi nanti dalam sesi, setelah `/clear` atau compaction, hook `mcp_tool`-nya berjalan. Untuk apa pun yang dibutuhkan sesi saat peluncuran, gunakan hook `type: "command"` pada `SessionStart` sebagai gantinya.

629 615 

630<h4 id="prompt-and-agent-hook-fields">616<h4 id="prompt-and-agent-hook-fields">

631 Bidang prompt dan agent hook617 Bidang prompt dan agent hook


636| Bidang | Diperlukan | Deskripsi |622| Bidang | Diperlukan | Deskripsi |

637| :- | :- | :- |623| :- | :- | :- |

638| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Escape dengan backslash untuk menyertakan teks literal: `\$1.00` dirender sebagai `$1.00` |624| `prompt` | ya | Teks prompt untuk dikirim ke model. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Escape dengan backslash untuk menyertakan teks literal: `\$1.00` dirender sebagai `$1.00` |

639| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |625| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model yang digunakan Claude Code untuk [fungsionalitas latar belakang](/docs/id/costs#background-token-usage) |

640 626 

641<h3 id="reference-scripts-by-path">627<h3 id="reference-scripts-by-path">

642 Referensi skrip berdasarkan path628 Referensi skrip berdasarkan path


745 Menu `/hooks`731 Menu `/hooks`

746</h3>732</h3>

747 733 

748Ketik `/hooks` di Claude Code untuk membuka browser hooks read-only. Menu menampilkan setiap hook event dengan jumlah hooks yang dikonfigurasi, memungkinkan Anda menggali ke dalam matchers, dan menampilkan detail lengkap setiap hook handler. Gunakan untuk memverifikasi konfigurasi, memeriksa file pengaturan mana hook berasal, atau memeriksa perintah, prompt, atau URL hook.734Ketik `/hooks` di Claude Code untuk membuka browser read-only untuk hooks yang telah Anda konfigurasi. Daftar memberi label pada setiap hook dengan asalnya, seperti pengaturan pengguna, pengaturan proyek, pengaturan lokal, plugin, atau sesi saat ini.

749 

750Menu menampilkan semua lima tipe hook: `command`, `prompt`, `agent`, `http`, dan `mcp_tool`. Setiap hook diberi label dengan awalan `[type]` dan sumber menunjukkan di mana itu didefinisikan:

751 735 

752* `User Settings`: dari `~/.claude/settings.json`736Pilih hook untuk melihat teks lengkap dari apa yang dijalankannya dan di mana hook itu didefinisikan, seperti path file pengaturannya atau nama plugin-nya.

753* `Project Settings`: dari `.claude/settings.json`

754* `Local Settings`: dari `.claude/settings.local.json`

755* `Plugin Hooks`: dari `hooks/hooks.json` plugin

756* `Session Hooks`: terdaftar dalam memori untuk sesi saat ini

757 737 

758Memilih hook membuka tampilan detail menampilkan event, matcher, tipe, file sumber, dan perintah lengkap, prompt, atau URL. Menu adalah read-only: untuk menambah, memodifikasi, atau menghapus hooks, edit JSON pengaturan secara langsung atau minta Claude membuat perubahan.738Untuk menelusuri semua hook event, termasuk yang tidak memiliki hooks yang dikonfigurasi, pilih `All events` di akhir daftar.

759 739 

760<h3 id="disable-or-remove-hooks">740<h3 id="disable-or-remove-hooks">

761 Nonaktifkan atau hapus hooks741 Nonaktifkan atau hapus hooks

762</h3>742</h3>

763 743 

764Untuk menghapus hook, hapus entrinya dari file JSON pengaturan.744Untuk menghapus hook yang didefinisikan dalam file pengaturan, hapus entrinya dari file tersebut.

765 745 

766Untuk menonaktifkan semua hooks sementara tanpa menghapusnya, atur `"disableAllHooks": true` dalam file pengaturan Anda. Claude Code membaca nilai yang tersisa setelah [settings precedence](/docs/id/settings#settings-precedence) diterapkan, jadi `"disableAllHooks": false` dalam `.claude/settings.json` proyek menimpa `true` dalam pengaturan pengguna Anda. Untuk mematikan hooks untuk satu run apa pun yang dikatakan pengaturan proyek, lewatkan `--settings '{"disableAllHooks": true}'`, yang mengambil prioritas atas pengaturan proyek dan lokal. Tidak ada cara untuk menonaktifkan hook individual sambil menyimpannya dalam konfigurasi.746Untuk menonaktifkan semua hooks sementara tanpa menghapusnya, atur `"disableAllHooks": true` dalam file pengaturan Anda. Claude Code membaca nilai yang tersisa setelah [settings precedence](/docs/id/settings#settings-precedence) diterapkan, jadi `"disableAllHooks": false` dalam `.claude/settings.json` proyek menimpa `true` dalam pengaturan pengguna Anda. Untuk mematikan hooks untuk satu run apa pun yang dikatakan pengaturan proyek, lewatkan `--settings '{"disableAllHooks": true}'`, yang mengambil prioritas atas pengaturan proyek dan lokal. Tidak ada cara untuk menonaktifkan hook individual sambil menyimpannya dalam konfigurasi.

767 747 


773 Input dan output hook753 Input dan output hook

774</h2>754</h2>

775 755 

776Command hooks menerima data JSON melalui stdin dan mengkomunikasikan hasil melalui kode keluar, stdout, dan stderr. HTTP hooks menerima JSON yang sama sebagai badan permintaan POST dan mengkomunikasikan hasil melalui badan respons HTTP. Bagian ini mencakup bidang dan perilaku yang umum untuk semua events. Setiap bagian event di bawah [Hook events](#hook-events) mencakup skema input spesifiknya dan opsi kontrol keputusan.756Hook perintah menerima data JSON melalui stdin dan menyampaikan hasil melalui exit code, stdout, dan stderr. Hook HTTP menerima JSON yang sama sebagai body permintaan POST dan menyampaikan hasil melalui body respons HTTP. Bagian ini membahas field dan perilaku yang umum untuk semua event. Bagian setiap event di bawah [Event hook](#hook-events) mencakup skema input spesifik dan opsi kontrol keputusannya.

777 757 

778Pada macOS dan Linux, command hooks berjalan dalam sesi mereka sendiri tanpa terminal pengontrol. Proses hook dan proses anak apa pun tidak dapat membuka `/dev/tty` atau mengirim urutan escape langsung ke antarmuka Claude Code. Windows tidak memiliki `/dev/tty`.758Di macOS dan Linux, hook perintah berjalan dalam sesinya sendiri tanpa terminal pengendali. Proses hook dan proses turunannya tidak dapat membuka `/dev/tty` atau mengirim escape sequence secara langsung ke antarmuka Claude Code. Windows tidak memiliki `/dev/tty`.

779 759 

780Untuk menampilkan pesan kepada pengguna di platform apa pun, kembalikan [`systemMessage`](#json-output) dalam output JSON. Beberapa events membuangnya atau mengirimkannya ke tempat lain, dan setiap [bagian event](#hook-events) mengatakan demikian. Untuk memicu notifikasi desktop, atur judul jendela, atau bunyikan bel, kembalikan [`terminalSequence`](#emit-terminal-notifications) sebagai gantinya.760Untuk menampilkan pesan kepada pengguna di platform apa pun, kembalikan [`systemMessage`](#json-output) dalam output JSON. Beberapa event membuangnya atau mengirimkannya ke tempat lain, dan [bagian setiap event](#hook-events) menyebutkannya. Untuk memicu notifikasi desktop, mengatur judul jendela, atau membunyikan bel, kembalikan [`terminalSequence`](#emit-terminal-notifications) sebagai gantinya.

781 761 

782<h3 id="common-input-fields">762<h3 id="common-input-fields">

783 Bidang input umum763 Field input umum

784</h3>764</h3>

785 765 

786Hook events menerima bidang-bidang ini sebagai JSON, selain bidang spesifik event yang didokumentasikan dalam setiap bagian [hook event](#hook-events). Untuk command hooks, JSON ini tiba melalui stdin. Untuk HTTP hooks, itu tiba sebagai badan permintaan POST.766Event hook menerima field berikut sebagai JSON, selain field khusus event yang didokumentasikan di setiap bagian [event hook](#hook-events). Untuk hook perintah, JSON ini tiba melalui stdin. Untuk hook HTTP, JSON ini tiba sebagai body permintaan POST.

787 767 

788| Bidang | Deskripsi |768| Field | Deskripsi |

789| :- | :- |769| :- | :- |

790| `session_id` | Pengenal sesi saat ini |770| `session_id` | Pengidentifikasi sesi saat ini |

791| `prompt_id` | UUID yang mengidentifikasi prompt pengguna yang sedang diproses. Cocok dengan atribut [`prompt.id` pada events OpenTelemetry](/docs/id/monitoring-usage#event-correlation-attributes), sehingga Anda dapat menghubungkan output hook dengan telemetri untuk satu prompt. Tidak ada sampai input pengguna pertama. Memerlukan Claude Code v2.1.196 atau lebih baru |771| `prompt_id` | UUID yang mengidentifikasi prompt pengguna yang sedang diproses. Cocok dengan [atribut `prompt.id` pada event OpenTelemetry](/docs/id/monitoring-usage#event-correlation-attributes), sehingga Anda dapat mengorelasikan output hook dengan telemetri untuk satu prompt. Tidak ada sampai input pengguna pertama. Memerlukan Claude Code v2.1.196 atau lebih baru |

792| `transcript_path` | Path ke JSON percakapan. File transkrip ditulis secara asinkron dan mungkin tertinggal dari percakapan dalam memori, jadi mungkin belum menyertakan pesan terbaru giliran saat ini ketika hook dijalankan. Hooks yang memerlukan teks asisten akhir dari giliran saat ini harus menggunakan `last_assistant_message` pada [Stop](#stop) dan [SubagentStop](#subagentstop) alih-alih membaca transkrip |772| `transcript_path` | Path ke JSON percakapan. File transkrip ditulis secara asinkron dan mungkin tertinggal dari percakapan di memori, sehingga mungkin belum menyertakan pesan terbaru dari giliran saat ini ketika hook dijalankan. Hook yang memerlukan teks akhir asisten dari giliran saat ini sebaiknya menggunakan `last_assistant_message` pada [Stop](#stop) dan [SubagentStop](#subagentstop) alih-alih membaca transkrip |

793| `cwd` | Direktori kerja saat hook dipanggil |773| `cwd` | Direktori kerja saat ini ketika hook dipanggil |

794| `scratchpad_dir` | Path ke direktori scratchpad sesi, tempat Claude menyimpan file kerja sementara. Tidak ada ketika sesi tidak memiliki scratchpad atau direktori temp tidak tersedia. Memerlukan Claude Code v2.1.257 atau lebih baru |774| `scratchpad_dir` | Path ke [direktori scratchpad](/docs/id/claude-directory#session-scratchpad-directory) sesi, tempat Claude menyimpan file kerja sementara. Tidak ada ketika sesi tidak memiliki scratchpad atau direktori temp tidak tersedia. Memerlukan Claude Code v2.1.257 atau lebih baru |

795| `permission_mode` | [Mode izin](/docs/id/permissions#permission-modes) saat ini: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"`, atau `"bypassPermissions"`. Mode yang diberi label **Manual** tiba sebagai `"default"`, tidak pernah sebagai `"manual"`, jadi skrip yang cocok dengan `"default"` terus bekerja. Tidak semua events menerima bidang ini. Periksa contoh JSON di setiap bagian [hook event](#hook-events) |775| `permission_mode` | [Mode izin](/docs/id/permissions#permission-modes) saat ini: `"default"`, `"plan"`, `"acceptEdits"`, `"auto"`, `"dontAsk"`, atau `"bypassPermissions"`. Mode berlabel **Manual** tiba sebagai `"default"`, tidak pernah sebagai `"manual"`, sehingga skrip yang mencocokkan `"default"` tetap berfungsi. Tidak semua event menerima field ini. Periksa contoh JSON di setiap bagian [event hook](#hook-events) |

796| `effort` | Objek dengan bidang `level` yang menyimpan [tingkat effort](/docs/id/model-config#adjust-effort-level) yang berlaku saat hook berjalan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Jika Anda menetapkan tingkat yang tidak didukung model aktif, `level` melaporkan tingkat yang sebenarnya dijalankan Claude Code; [Adjust effort level](/docs/id/model-config#adjust-effort-level) mengatakan bagaimana ia memilih tingkat itu. Ultracode bukan tingkat yang berbeda dan dilaporkan sebagai `"xhigh"`. Objek cocok dengan bidang `effort` [status line](/docs/id/statusline#available-data). Hadir untuk events yang dijalankan dalam konteks penggunaan tool, seperti `PreToolUse`, `PostToolUse`, `Stop`, dan `SubagentStop`, ketika model saat ini mendukung parameter effort. Tingkat juga tersedia untuk perintah hook dan tool Bash sebagai variabel lingkungan `$CLAUDE_EFFORT`. |776| `effort` | Objek dengan field `level` yang berisi [tingkat effort](/docs/id/model-config#adjust-effort-level) yang berlaku saat hook berjalan: `"low"`, `"medium"`, `"high"`, `"xhigh"`, atau `"max"`. Jika Anda mengatur tingkat yang tidak didukung model aktif, `level` melaporkan tingkat yang sebenarnya dijalankan Claude Code; [Menyesuaikan tingkat effort](/docs/id/model-config#adjust-effort-level) menjelaskan cara tingkat tersebut dipilih. Objek ini cocok dengan field `effort` pada [baris status](/docs/id/statusline#available-data). Ada untuk event yang dijalankan dalam konteks penggunaan tool, seperti `PreToolUse`, `PostToolUse`, `Stop`, dan `SubagentStop`, ketika model saat ini mendukung parameter effort. Tingkat ini juga tersedia untuk perintah hook dan tool Bash sebagai environment variable `$CLAUDE_EFFORT`. |

797| `hook_event_name` | Nama event yang dijalankan |777| `hook_event_name` | Nama event yang dijalankan |

798 778 

799Saat berjalan dengan `--agent` atau di dalam subagent, dua bidang tambahan disertakan:779Saat berjalan dengan `--agent` atau di dalam subagent, dua field tambahan disertakan:

800 780 

801| Bidang | Deskripsi |781| Field | Deskripsi |

802| :- | :- |782| :- | :- |

803| `agent_id` | Pengenal unik untuk subagent. Hadir hanya ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |783| `agent_id` | Pengidentifikasi unik untuk subagent. Hanya ada ketika hook dijalankan di dalam pemanggilan subagent. Gunakan ini untuk membedakan pemanggilan hook subagent dari pemanggilan thread utama. |

804| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Hadir ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagents, tipe subagent mengambil alih nilai `--agent` sesi. Lihat [SubagentStart](#subagentstart) untuk nilai yang dilaporkan custom dan plugin subagents dan cara menulis matcher terhadap nama yang dibatasi plugin. |784| `agent_type` | Nama agent (misalnya, `"Explore"` atau `"security-reviewer"`). Ada ketika sesi menggunakan `--agent` atau hook dijalankan di dalam subagent. Untuk subagent, tipe subagent diutamakan daripada nilai `--agent` sesi. Lihat [SubagentStart](#subagentstart) untuk nilai yang dilaporkan subagent kustom dan plugin serta cara menulis matcher untuk nama yang dibatasi pada plugin. |

805 785 

806Hanya hooks [`SessionStart`](#sessionstart) yang dapat menerima bidang `model`, dan Claude Code tidak selalu menyertakannya. Hooks [`PreModelSwitch`](#premodelswitch) dan [`PostModelSwitch`](#postmodelswitch) menerima `from_model` dan `to_model` sebagai gantinya, jadi gunakan hook PostModelSwitch untuk mengikuti model saat berubah selama sesi.786Hanya hook [`SessionStart`](#sessionstart) yang dapat menerima field `model`, dan Claude Code tidak selalu menyertakannya. Hook [`PreModelSwitch`](#premodelswitch) dan [`PostModelSwitch`](#postmodelswitch) menerima `from_model` dan `to_model` sebagai gantinya, jadi gunakan hook PostModelSwitch untuk mengikuti model saat model berubah selama sesi.

807 787 

808Tidak ada variabel lingkungan `$CLAUDE_MODEL`. Hook dapat membaca `$ANTHROPIC_MODEL` jika Anda menetapkannya di shell Anda, tetapi nilai itu tidak berubah ketika Anda beralih model dengan `/model` selama sesi.788Tidak ada environment variable `$CLAUDE_MODEL`. Hook dapat membaca `$ANTHROPIC_MODEL` jika Anda mengaturnya di shell Anda, tetapi nilai tersebut tidak berubah ketika Anda mengganti model dengan `/model` selama sesi.

809 789 

810Proses hook mewarisi lingkungan induk, terlepas dari variabel exporter `OTEL_*` yang Claude Code [menghapus dari setiap subprocess yang dijalankannya](/docs/id/monitoring-usage#administrator-configuration) dan, ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars#variables) diatur ke `1`, variabel yang dihapusnya.790Proses hook mewarisi environment induk, kecuali variabel exporter `OTEL_*` yang [dihapus Claude Code dari setiap subproses yang dijalankannya](/docs/id/monitoring-usage#administrator-configuration) dan, ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars#variables) diatur ke `1`, variabel-variabel yang dihapusnya.

811 791 

812Misalnya, hook `PreToolUse` untuk perintah Bash menerima ini di stdin:792Misalnya, hook `PreToolUse` untuk perintah Bash menerima ini di stdin:

813 793 


831}811}

832```812```

833 813 

834Bidang `tool_name`, `tool_input`, dan `tool_use_id` spesifik untuk event. Setiap bagian [hook event](#hook-events) mendokumentasikan bidang tambahan untuk event itu.814Field `tool_name`, `tool_input`, dan `tool_use_id` bersifat khusus event. Setiap bagian [event hook](#hook-events) mendokumentasikan field tambahan untuk event tersebut.

835 815 

836<h3 id="exit-code-output">816<h3 id="exit-code-output">

837 Output kode keluar817 Output exit code

838</h3>818</h3>

839 819 

840Kode keluar dari perintah hook Anda memberitahu Claude Code apakah tindakan harus dilanjutkan, diblokir, atau diabaikan. Kode keluar tidak bertindak sendiri. Claude Code membaca bidang [JSON output](#json-output) dari stdout pada setiap kode keluar, bukan hanya 0, dan untuk events yang menggunakan model keputusan standar, objek yang diurai yang lulus validasi skema berlaku bersama kode. Blokir exit 2 adalah satu-satunya hasil yang tidak dapat ditimpa JSON.820Exit code dari perintah hook Anda memberi tahu Claude Code apakah tindakan harus dilanjutkan, diblokir, atau diabaikan. Exit code tidak bekerja sendiri. Claude Code membaca [field output JSON](#json-output) dari stdout pada setiap exit code, bukan hanya 0, dan untuk event yang menggunakan model keputusan standar, objek yang berhasil di-parse dan lolos validasi skema berlaku bersamaan dengan kode tersebut. Pemblokiran oleh exit 2 adalah satu-satunya hasil yang tidak dapat ditimpa oleh JSON.

841 821 

842Dua tabel memiliki pengecualian per-event: [Exit code 2 behavior per event](#exit-code-2-behavior-per-event) mengatakan apa yang dilakukan kode keluar untuk setiap event, dan [Decision control](#decision-control) mengatakan bidang keputusan mana yang dihormati setiap event. Bidang universal seperti `systemMessage` bekerja di sebagian besar events dan tercantum dalam tabel [JSON output](#json-output).822Dua tabel memuat pengecualian per event: [Perilaku exit code 2 per event](#exit-code-2-behavior-per-event) menjelaskan apa yang dilakukan exit code untuk setiap event, dan [Kontrol keputusan](#decision-control) menjelaskan field keputusan mana yang dihormati setiap event. Field universal seperti `systemMessage` berfungsi di sebagian besar event dan tercantum dalam tabel [output JSON](#json-output).

843 823 

844<h4 id="exit-code-0">824<h4 id="exit-code-0">

845 Exit code 0825 Exit code 0

846</h4>826</h4>

847 827 

848Exit 0 berarti sukses, dan merupakan kode keluar yang dimaksudkan ketika Anda mencetak JSON untuk kontrol terstruktur.828Exit 0 berarti berhasil, dan merupakan exit code yang dimaksudkan ketika Anda mencetak JSON untuk kontrol terstruktur.

849 829 

850Untuk sebagian besar events, Claude Code menulis stdout ke debug log dan tidak menampilkannya dalam transkrip. Pengecualiannya adalah `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart`, dan `PostModelSwitch`, di mana Claude Code menambahkan stdout teks biasa sebagai konteks yang dapat dilihat dan ditindaklanjuti Claude.830Untuk sebagian besar event, Claude Code menulis stdout ke log debug dan tidak menampilkannya di transkrip. Pengecualiannya adalah `UserPromptSubmit`, `UserPromptExpansion`, `SessionStart`, dan `PostModelSwitch`, di mana Claude Code menambahkan stdout teks biasa sebagai konteks yang dapat dilihat dan ditindaklanjuti oleh Claude.

851 831 

852Apakah Claude Code membaca stdout Anda sebagai [JSON output](#json-output) atau sebagai teks biasa tergantung pada cara dimulai dan diakhiri, mengabaikan whitespace di sekitarnya:832Apakah Claude Code membaca stdout Anda sebagai [output JSON](#json-output) atau sebagai teks biasa bergantung pada bagaimana stdout diawali dan diakhiri, dengan mengabaikan whitespace di sekitarnya:

853 833 

854* **Dimulai dengan `{` dan diakhiri dengan `}`**: Claude Code menguraikannya sebagai JSON. Ketika output adalah dua atau lebih baris yang masing-masing diurai sebagai JSON sendiri, dan tidak ada baris yang merupakan objek [JSON output](#json-output) yang menetapkan bidang, Claude Code memperlakukan seluruh output sebagai teks biasa. Ketika salah satu baris itu menetapkan bidang, seluruh output adalah kegagalan parsing, dijelaskan di bawah.834* **Diawali dengan `{` dan diakhiri dengan `}`**: Claude Code mem-parse-nya sebagai JSON. Ketika output terdiri dari dua baris atau lebih yang masing-masing dapat di-parse sebagai JSON secara terpisah, dan tidak ada baris yang merupakan objek [output JSON](#json-output) yang mengatur suatu field, Claude Code memperlakukan seluruh output sebagai teks biasa. Ketika salah satu baris tersebut mengatur suatu field, seluruh output dianggap gagal di-parse, seperti dijelaskan di bawah.

855* **Dimulai dengan `{` tetapi tidak diakhiri dengan `}`**: Claude Code memperlakukannya sebagai teks biasa.835* **Diawali dengan `{` tetapi tidak diakhiri dengan `}`**: Claude Code memperlakukannya sebagai teks biasa.

856* **Dimulai dengan apa pun yang lain**: Claude Code memperlakukannya sebagai teks biasa, array JSON atau string JSON yang dikutip disertakan.836* **Diawali dengan hal lain**: Claude Code memperlakukannya sebagai teks biasa, termasuk array JSON atau string JSON yang diberi tanda kutip.

857 837 

858Untuk events yang menggunakan model keputusan standar, exit 0 dengan objek yang diurai yang gagal validasi skema adalah kesalahan non-blocking: tindakan dilanjutkan, dan transkrip menampilkan pemberitahuan `<hook name> hook error` dengan pesan validasi. Hal yang sama terjadi pada kode keluar apa pun selain 2, sementara [exit 2 masih memblokir](#exit-code-2).838Untuk event yang menggunakan model keputusan standar, exit 0 dengan objek yang berhasil di-parse tetapi gagal validasi skema adalah error non-blocking: tindakan dilanjutkan, dan transkrip menampilkan pemberitahuan `<hook name> hook error` dengan pesan validasi. Hal yang sama terjadi pada exit code apa pun selain 2, sementara [exit 2 tetap memblokir](#exit-code-2).

859 839 

860Untuk events yang menggunakan model keputusan standar, ketika Claude Code mencoba mengurai stdout Anda sebagai JSON dan tidak bisa, itu melaporkan kesalahan non-blocking pada setiap kode keluar selain 2. Transkrip menampilkan pemberitahuan `<hook name> hook error` dengan pesan parsing. Pada events yang menambahkan stdout teks biasa sebagai konteks, Claude Code tidak menambahkan teks. Sebelum v2.1.248, Claude Code memperlakukan stdout itu sebagai teks biasa.840Untuk event yang menggunakan model keputusan standar, ketika Claude Code mencoba mem-parse stdout Anda sebagai JSON dan gagal, Claude Code melaporkan error non-blocking pada setiap exit code selain 2. Transkrip menampilkan pemberitahuan `<hook name> hook error` dengan pesan parse. Pada event yang menambahkan stdout teks biasa sebagai konteks, Claude Code tidak menambahkan teks tersebut. Sebelum v2.1.248, Claude Code memperlakukan stdout tersebut sebagai teks biasa.

861 841 

862Stderr dari hook yang keluar 0 hanya masuk ke debug log, tidak pernah transkrip, dan Claude tidak pernah melihatnya. Untuk membacanya sendiri, aktifkan [debug logging](#debug-hooks). Untuk menampilkan peringatan ke Claude dari hook `PostToolUse` atau `PostToolUseFailure`, keluar 2 sebagai gantinya sehingga [Claude melihat stderr](#exit-code-2-behavior-per-event) meskipun tool sudah berjalan.842Stderr dari hook yang keluar dengan 0 hanya masuk ke log debug, tidak pernah ke transkrip, dan Claude tidak pernah melihatnya. Untuk membacanya sendiri, aktifkan [logging debug](#debug-hooks). Untuk menyampaikan peringatan kepada Claude dari hook `PostToolUse` atau `PostToolUseFailure`, gunakan exit 2 sehingga [Claude melihat stderr](#exit-code-2-behavior-per-event) meskipun tool sudah berjalan.

863 843 

864<h4 id="exit-code-2">844<h4 id="exit-code-2">

865 Exit code 2845 Exit code 2

866</h4>846</h4>

867 847 

868Exit 2 berarti kesalahan blocking. Pada [events yang dapat memblokir](#exit-code-2-behavior-per-event), exit 2 memblokir apakah atau tidak Anda mencetak JSON: bahkan JSON `permissionDecision` dari `"allow"` tidak dapat menimpanya. Claude Code masih membaca [JSON output](#json-output) yang valid di stdout. Pada `Elicitation` dan `ElicitationResult`, `hookSpecificOutput` hook exit-2 diabaikan.848Exit 2 berarti error blocking. Pada [event yang dapat memblokir](#exit-code-2-behavior-per-event), exit 2 memblokir terlepas dari apakah Anda mencetak JSON atau tidak: bahkan `permissionDecision` JSON bernilai `"allow"` tidak dapat menimpanya. Claude Code tetap membaca [output JSON](#json-output) yang valid di stdout. Pada `Elicitation` dan `ElicitationResult`, `hookSpecificOutput` dari hook yang keluar dengan exit 2 diabaikan.

869 849 

870Pesan blocking adalah alasan dari keputusan blocking JSON Anda ketika membuat satu, dan teks stderr Anda sebaliknya. Apa yang dilakukan blokir bervariasi menurut event: `PreToolUse` memblokir pemanggilan tool, `UserPromptSubmit` menolak prompt, dan sebagainya. [Exit code 2 behavior per event](#exit-code-2-behavior-per-event) mencantumkan efek untuk setiap event, dan setiap bagian event mengatakan ke mana pesan pergi.850Pesan pemblokiran adalah alasan dari keputusan pemblokiran dalam JSON Anda jika ada, dan teks stderr Anda jika tidak. Apa yang dilakukan pemblokiran bervariasi menurut event: `PreToolUse` memblokir panggilan tool, `UserPromptSubmit` menolak prompt, dan seterusnya. [Perilaku exit code 2 per event](#exit-code-2-behavior-per-event) mencantumkan efek untuk setiap event, dan bagian setiap event menjelaskan ke mana pesan tersebut dikirim.

871 851 

872Hook yang keluar 2 sambil mencetak JSON yang gagal validasi skema [JSON output](#json-output) masih memblokir: Claude Code menggunakan stderr sebagai alasan blocking dan mencatat kegagalan validasi dalam debug log. Sebelum v2.1.214, Claude Code memperlakukan kombinasi itu sebagai kesalahan non-blocking dan tindakan dilanjutkan.852Hook yang keluar dengan 2 sambil mencetak JSON yang gagal validasi skema [output JSON](#json-output) tetap memblokir: Claude Code menggunakan stderr sebagai alasan pemblokiran dan mencatat kegagalan validasi di log debug. Sebelum v2.1.214, Claude Code memperlakukan kombinasi tersebut sebagai error non-blocking dan tindakan dilanjutkan.

873 853 

874Skrip ini memblokir perintah `rm` dengan keluar 2 dan meninggalkan setiap perintah lain untuk aliran izin normal:854Skrip ini memblokir perintah `rm` dengan keluar menggunakan 2 dan menyerahkan setiap perintah lain ke alur izin normal:

875 855 

876```bash theme={null}856```bash theme={null}

877#!/bin/bash857#!/bin/bash

878# Membaca input JSON dari stdin, memeriksa perintah858# Reads JSON input from stdin, checks the command

879input=$(cat)859input=$(cat)

880command=$(jq -r '.tool_input.command' <<<"$input")860command=$(jq -r '.tool_input.command' <<<"$input")

881 861 


888```868```

889 869 

890<h4 id="other-exit-codes">870<h4 id="other-exit-codes">

891 Kode keluar lainnya871 Exit code lainnya

892</h4>872</h4>

893 873 

894Kode keluar apa pun yang lain tidak memblokir sendiri untuk sebagian besar hook events. Apa yang terjadi tergantung pada stdout Anda:874Exit code lainnya tidak memblokir dengan sendirinya untuk sebagian besar event hook. Apa yang terjadi bergantung pada stdout Anda:

895 875 

896* Dengan objek yang diurai yang lulus validasi skema, untuk events yang menggunakan model keputusan standar, Claude Code mengabaikan kode keluar dan JSON saja memutuskan hasil:876* Dengan objek yang berhasil di-parse dan lolos validasi skema, untuk event yang menggunakan model keputusan standar, Claude Code mengabaikan exit code dan hanya JSON yang menentukan hasilnya:

897 * Setiap bidang yang didukung event dihormati, termasuk `permissionDecision`, `additionalContext`, `updatedInput`, dan `systemMessage`, dan hook tidak dilaporkan sebagai kesalahan.877 * Setiap field yang didukung event dihormati, termasuk `permissionDecision`, `additionalContext`, `updatedInput`, dan `systemMessage`, dan hook tidak dilaporkan sebagai error.

898 * [Decision control](#decision-control) mencantumkan bidang keputusan per event; bidang universal seperti `systemMessage` mengikuti tabel [JSON output](#json-output).878 * [Kontrol keputusan](#decision-control) mencantumkan field keputusan per event; field universal seperti `systemMessage` mengikuti tabel [output JSON](#json-output).

899* Dengan objek yang diurai yang gagal validasi skema, untuk events yang menggunakan model keputusan standar, itu adalah kesalahan non-blocking yang sama seperti [pada exit 0](#exit-code-0): tindakan dilanjutkan, dan pemberitahuan `<hook name> hook error` membawa pesan validasi.879* Dengan objek yang berhasil di-parse tetapi gagal validasi skema, untuk event yang menggunakan model keputusan standar, hasilnya adalah error non-blocking yang sama seperti [pada exit 0](#exit-code-0): tindakan dilanjutkan, dan pemberitahuan `<hook name> hook error` memuat pesan validasi.

900* Dengan stdout yang Claude Code [coba parsing sebagai JSON](#exit-code-0) dan tidak bisa, Claude Code melaporkan kesalahan non-blocking yang sama seperti pada exit 0 untuk events yang menggunakan model keputusan standar. Tindakan dilanjutkan, dan pemberitahuan membawa pesan parsing.880* Dengan stdout yang [dicoba di-parse sebagai JSON](#exit-code-0) oleh Claude Code tetapi gagal, Claude Code melaporkan error non-blocking yang sama seperti pada exit 0 untuk event yang menggunakan model keputusan standar. Tindakan dilanjutkan, dan pemberitahuan memuat pesan parse.

901* Dengan stdout yang Claude Code [perlakukan sebagai teks biasa](#exit-code-0), atau dengan stdout kosong, itu adalah kesalahan non-blocking untuk sebagian besar hook events: tindakan dilanjutkan, dan transkrip menampilkan pemberitahuan `<hook name> hook error` diikuti oleh baris pertama stderr, diawali dengan `Failed with non-blocking status code:`. Untuk menangkap stderr lengkap, aktifkan [debug logging](#debug-hooks).881* Dengan stdout yang [diperlakukan sebagai teks biasa](#exit-code-0) oleh Claude Code, atau dengan stdout kosong, hasilnya adalah error non-blocking untuk sebagian besar event hook: tindakan dilanjutkan, dan transkrip menampilkan pemberitahuan `<hook name> hook error` diikuti baris pertama stderr, dengan awalan `Failed with non-blocking status code:`. Untuk menangkap stderr lengkap, aktifkan [logging debug](#debug-hooks).

902 882 

903Events di luar model keputusan standar menyimpan baris mereka sendiri dalam [tabel per-event](#exit-code-2-behavior-per-event): `WorktreeCreate` gagal membuat pada kode keluar non-zero apa pun tidak peduli apa yang dikatakan JSON Anda, dan events yang membuang output hook sepenuhnya, seperti `StopFailure`, mengabaikan JSON Anda pada setiap kode keluar, terlepas dari bidang efek samping seperti `terminalSequence`, yang masih dijalankan.883Event di luar model keputusan standar memiliki barisnya sendiri dalam [tabel per event](#exit-code-2-behavior-per-event): `WorktreeCreate` menggagalkan pembuatan pada exit bukan nol apa pun, apa pun isi JSON Anda, dan event yang membuang output hook sepenuhnya, seperti `StopFailure`, mengabaikan JSON Anda pada setiap exit code, kecuali field efek samping seperti `terminalSequence`, yang tetap dijalankan.

904 884 

905Hook yang tidak dapat dimulai mendarat di bucket non-blocking yang sama. Ketika path skrip tidak ada atau tidak dapat dieksekusi, shell keluar dengan kode seperti 127 dan Anda melihat pemberitahuan yang sama dengan pesan interpreter, misalnya `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`. Untuk sebagian besar hook events, tindakan dilanjutkan. Ketika Anda menyiapkan policy hook, perhatikan pemberitahuan ini pada run pertamanya: path yang salah ketik dalam `settings.json` meninggalkan gate yang diam-diam dinonaktifkan.885Hook yang tidak dapat dimulai masuk ke kategori non-blocking yang sama. Ketika path skrip tidak ada atau tidak dapat dieksekusi, shell keluar dengan kode seperti 127 dan Anda melihat pemberitahuan yang sama dengan pesan interpreter, misalnya `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`. Untuk sebagian besar event hook, tindakan dilanjutkan. Saat Anda menyiapkan hook kebijakan, perhatikan pemberitahuan ini pada eksekusi pertamanya: path yang salah ketik di `settings.json` membuat gerbang tersebut nonaktif tanpa pemberitahuan.

906 886 

907<Warning>887<Warning>

908 Untuk sebagian besar hook events, exit code 2 adalah satu-satunya kode keluar yang memblokir melalui kode saja. Tanpa JSON yang valid di stdout, Claude Code memperlakukan exit code 1 sebagai kesalahan non-blocking dan melanjutkan dengan tindakan, meskipun 1 adalah kode kegagalan Unix konvensional. Jika hook Anda dimaksudkan untuk menegakkan kebijakan, gunakan `exit 2`. Events worktree berbeda: kode keluar non-zero apa pun dari `WorktreeCreate` membatalkan pembuatan worktree, dan kode keluar non-zero apa pun dari `WorktreeRemove` membuat penghapusan worktree gagal jika direktori masih ada setelahnya.888 Untuk sebagian besar event hook, exit code 2 adalah satu-satunya exit code yang memblokir hanya melalui kode tersebut. Tanpa JSON yang valid di stdout, Claude Code memperlakukan exit code 1 sebagai error non-blocking dan melanjutkan tindakan, meskipun 1 adalah kode kegagalan Unix yang konvensional. Jika hook Anda dimaksudkan untuk menegakkan kebijakan, gunakan `exit 2`. Event worktree berbeda: exit code bukan nol apa pun dari `WorktreeCreate` membatalkan pembuatan worktree, dan exit code bukan nol apa pun dari `WorktreeRemove` membuat penghapusan worktree gagal jika direktori masih ada setelahnya.

909</Warning>889</Warning>

910 890 

911<h4 id="timeouts">891<h4 id="timeouts">

912 Timeouts892 Timeout

913</h4>893</h4>

914 894 

915Terlepas dari command hook yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), Claude Code membatalkan hook `command`, `http`, atau `mcp_tool` yang mencapai [`timeout`](#common-fields)-nya, membuang output hook, jadi pada sebagian besar events hook yang timed-out tidak menghasilkan keputusan.895Selain hook perintah yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), Claude Code membatalkan hook `command`, `http`, atau `mcp_tool` yang mencapai [`timeout`](#common-fields)-nya, membuang output hook, sehingga pada sebagian besar event hook yang mengalami timeout tidak memberikan keputusan.

916 896 

917Pada [`PreModelSwitch`](#premodelswitch), hook yang dibatalkan pada timeout-nya memblokir switch model. Pada `PreToolUse`, dua keluarga hook berbeda:897Pada [`PreModelSwitch`](#premodelswitch), hook yang dibatalkan karena timeout memblokir pergantian model. Pada `PreToolUse`, kedua keluarga hook berbeda:

918 898 

919* Hook `command`, `http`, atau `mcp_tool` yang timed-out tidak memblokir pemanggilan tool. Panggilan berlanjut melalui [aliran izin](/docs/id/permissions) normal, jadi jangan mengandalkan hook yang terhenti untuk bertindak sebagai gate.899* Hook `command`, `http`, atau `mcp_tool` yang mengalami timeout tidak memblokir panggilan tool. Panggilan berlanjut melalui [alur izin](/docs/id/permissions) normal, jadi jangan mengandalkan hook yang macet untuk berfungsi sebagai gerbang.

920* Hook callback [Agent SDK](/docs/id/agent-sdk/hooks) yang melampaui timeout-nya [memblokir pemanggilan tool](#pretooluse).900* [Callback hook Agent SDK](/docs/id/agent-sdk/hooks) yang melebihi timeout-nya [memblokir panggilan tool](#pretooluse).

921 901 

922<h4 id="exit-code-2-behavior-per-event">902<h4 id="exit-code-2-behavior-per-event">

923 Exit code 2 behavior per event903 Perilaku exit code 2 per event

924</h4>904</h4>

925 905 

926Exit code 2 adalah cara hook menandakan "berhenti, jangan lakukan ini." Efeknya tergantung pada event, karena beberapa event mewakili tindakan yang dapat diblokir (seperti pemanggilan tool yang belum terjadi) dan yang lain mewakili hal-hal yang sudah terjadi atau tidak dapat dicegah.906Exit code 2 adalah cara hook memberi sinyal "berhenti, jangan lakukan ini." Efeknya bergantung pada event, karena beberapa event mewakili tindakan yang dapat diblokir (seperti panggilan tool yang belum terjadi) dan yang lain mewakili hal-hal yang sudah terjadi atau tidak dapat dicegah.

927 907 

928| Hook event | Dapat diblokir? | Apa yang terjadi pada exit 2 |908| Event hook | Dapat memblokir? | Apa yang terjadi pada exit 2 |

929| :- | :- | :- |909| :- | :- | :- |

930| `PreToolUse` | Ya | Memblokir pemanggilan tool |910| `PreToolUse` | Ya | Memblokir panggilan tool |

931| `PermissionRequest` | Tidak | Exit code 2 tidak dihormati untuk event ini dan aliran izin berlanjut tidak berubah. Tolak melalui objek [`decision`](#permissionrequest-decision-control) sebagai gantinya |911| `PermissionRequest` | Tidak | Exit code 2 tidak dihormati untuk event ini dan alur izin berlanjut tanpa perubahan. Tolak melalui [objek `decision`](#permissionrequest-decision-control) sebagai gantinya |

932| `UserPromptSubmit` | Ya | Memblokir pemrosesan prompt dan menghapus prompt |912| `UserPromptSubmit` | Ya | Memblokir prompt, sehingga prompt tidak pernah sampai ke Claude. Lihat [Apa yang ditinggalkan prompt yang diblokir](#what-a-blocked-prompt-leaves-behind) |

933| `UserPromptExpansion` | Ya | Memblokir ekspansi |913| `UserPromptExpansion` | Ya | Memblokir ekspansi |

934| `Stop` | Ya | Mencegah Claude berhenti, melanjutkan percakapan |914| `Stop` | Ya | Mencegah Claude berhenti, melanjutkan percakapan |

935| `SubagentStop` | Ya | Mencegah subagent berhenti |915| `SubagentStop` | Ya | Mencegah subagent berhenti |

936| `TeammateIdle` | Ya | Mencegah teammate menjadi idle, jadi terus bekerja |916| `TeammateIdle` | Ya | Mencegah rekan tim menjadi idle, sehingga tetap bekerja |

937| `TaskCreated` | Ya | Membatalkan pembuatan tugas |917| `TaskCreated` | Ya | Membatalkan pembuatan tugas |

938| `TaskCompleted` | Ya | Mencegah tugas ditandai sebagai selesai |918| `TaskCompleted` | Ya | Mencegah tugas ditandai sebagai selesai |

939| `ConfigChange` | Ya | Memblokir perubahan konfigurasi dari berlaku (kecuali `policy_settings`) |919| `ConfigChange` | Ya | Memblokir perubahan konfigurasi agar tidak berlaku (kecuali `policy_settings`) |

940| `StopFailure` | Tidak | Output dan kode keluar diabaikan, kecuali `terminalSequence` |920| `StopFailure` | Tidak | Output dan exit code diabaikan, kecuali `terminalSequence` |

941| `PostToolUse` | Tidak | Menampilkan stderr ke Claude; tool sudah dijalankan |921| `PostToolUse` | Tidak | Menampilkan stderr kepada Claude; tool sudah berjalan |

942| `PostToolUseFailure` | Tidak | Menampilkan stderr ke Claude; tool sudah gagal |922| `PostToolUseFailure` | Tidak | Menampilkan stderr kepada Claude; tool sudah gagal |

943| `PostToolBatch` | Ya | Menghentikan loop agentic sebelum pemanggilan model berikutnya |923| `PostToolBatch` | Ya | Menghentikan agentic loop sebelum panggilan model berikutnya |

944| `PermissionDenied` | Tidak | Kode keluar dan stderr diabaikan karena penolakan sudah terjadi. Gunakan JSON `hookSpecificOutput.retry: true` untuk memberitahu model itu dapat mencoba lagi; Claude Code mengabaikan `retry: true` untuk [penolakan tanpa-verdict](#permissiondenied-decision-control) |924| `PermissionDenied` | Tidak | Exit code dan stderr diabaikan karena penolakan sudah terjadi. Gunakan JSON `hookSpecificOutput.retry: true` untuk memberi tahu model bahwa model boleh mencoba ulang; Claude Code mengabaikan `retry: true` untuk [penolakan tanpa putusan](#permissiondenied-decision-control) |

945| `Notification` | Tidak | Kode keluar dan stderr diabaikan |925| `Notification` | Tidak | Exit code dan stderr diabaikan |

946| `SubagentStart` | Tidak | Menampilkan stderr ke pengguna saja |926| `SubagentStart` | Tidak | Menampilkan stderr hanya kepada pengguna |

947| `SessionStart` | Tidak | Menampilkan stderr ke pengguna saja |927| `SessionStart` | Tidak | Menampilkan stderr hanya kepada pengguna |

948| `Setup` | Tidak | Kode keluar dan stderr diabaikan |928| `Setup` | Tidak | Exit code dan stderr diabaikan |

949| `SessionEnd` | Tidak | Menampilkan stderr ke pengguna saja |929| `SessionEnd` | Tidak | Menampilkan stderr hanya kepada pengguna |

950| `CwdChanged` | Tidak | Menampilkan stderr ke pengguna saja |930| `CwdChanged` | Tidak | Menampilkan stderr hanya kepada pengguna |

951| `DirectoryAdded` | Tidak | Stderr masuk ke debug log; direktori sudah ditambahkan |931| `DirectoryAdded` | Tidak | Stderr masuk ke log debug; direktori sudah ditambahkan |

952| `FileChanged` | Tidak | Menampilkan stderr ke pengguna saja |932| `FileChanged` | Tidak | Menampilkan stderr hanya kepada pengguna |

953| `PreCompact` | Ya | Memblokir compaction |933| `PreCompact` | Ya | Memblokir compaction |

954| `PostCompact` | Tidak | Menampilkan stderr ke pengguna saja |934| `PostCompact` | Tidak | Menampilkan stderr hanya kepada pengguna |

955| `PreModelSwitch` | Ya | Memblokir switch model dan menampilkan stderr ke pengguna |935| `PreModelSwitch` | Ya | Memblokir pergantian model dan menampilkan stderr kepada pengguna |

956| `PostModelSwitch` | Tidak | Menampilkan stderr ke pengguna saja; model sudah beralih |936| `PostModelSwitch` | Tidak | Menampilkan stderr hanya kepada pengguna; model sudah berganti |

957| `Elicitation` | Ya | Menolak elicitation |937| `Elicitation` | Ya | Menolak elicitation |

958| `ElicitationResult` | Ya | Memblokir respons (tindakan menjadi decline) |938| `ElicitationResult` | Ya | Memblokir respons (tindakan menjadi decline) |

959| `WorktreeCreate` | Ya | Kode keluar non-zero apa pun menyebabkan pembuatan worktree gagal |939| `WorktreeCreate` | Ya | Exit code bukan nol apa pun menyebabkan pembuatan worktree gagal |

960| `WorktreeRemove` | Ya | Kode keluar non-zero apa pun menyebabkan penghapusan worktree gagal jika direktori masih ada setelahnya. Lihat [WorktreeRemove](#worktreeremove) untuk apa yang terjadi pada direktori |940| `WorktreeRemove` | Ya | Exit code bukan nol apa pun menyebabkan penghapusan worktree gagal jika direktori masih ada setelahnya. Lihat [WorktreeRemove](#worktreeremove) untuk apa yang terjadi pada direktori |

961| `InstructionsLoaded` | Tidak | Kode keluar diabaikan |941| `InstructionsLoaded` | Tidak | Exit code diabaikan |

962| `MessageDisplay` | Tidak | Teks asli ditampilkan |942| `MessageDisplay` | Tidak | Teks asli ditampilkan |

963 943 

964Untuk `SessionStart`, `SubagentStart`, dan `PostModelSwitch`, Claude Code merender stderr exit code 2 dalam transkrip sebagai pemberitahuan `<hook name> hook error`, dengan cara yang sama seperti [kesalahan non-blocking](#exit-code-output). Claude tidak melihatnya, dan sesi atau subagent berlanjut. Untuk `SubagentStart`, pemberitahuan muncul dalam transkrip subagent itu sendiri, bukan dalam percakapan induk.944Untuk `SessionStart`, `SubagentStart`, dan `PostModelSwitch`, Claude Code menampilkan stderr exit code 2 di transkrip sebagai pemberitahuan `<hook name> hook error`, dengan cara yang sama seperti menampilkan [error non-blocking](#exit-code-output). Claude tidak melihatnya, dan sesi atau subagent berlanjut. Untuk `SubagentStart`, pemberitahuan muncul di transkrip subagent itu sendiri, bukan di percakapan induk.

965 945 

966<h3 id="http-response-handling">946<h3 id="http-response-handling">

967 Penanganan respons HTTP947 Penanganan respons HTTP

968</h3>948</h3>

969 949 

970HTTP hooks menggunakan kode status HTTP dan badan respons sebagai pengganti kode keluar dan stdout. Hasil di bawah berlaku untuk sebagian besar events; event dengan kontrak kegagalan sendiri dalam [tabel per-event](#exit-code-2-behavior-per-event), seperti `WorktreeCreate`, menerapkan kontrak itu ke hook HTTP yang gagal juga:950Hook HTTP menggunakan kode status HTTP dan body respons alih-alih exit code dan stdout. Hasil di bawah ini berlaku untuk sebagian besar event; event dengan kontrak kegagalannya sendiri dalam [tabel per event](#exit-code-2-behavior-per-event), seperti `WorktreeCreate`, juga menerapkan kontrak tersebut pada hook HTTP yang gagal:

971 951 

972* **2xx dengan badan kosong**: sukses, setara dengan kode keluar 0 tanpa output952* **2xx dengan body kosong**: berhasil, setara dengan exit code 0 tanpa output

973* **2xx dengan badan objek JSON**: diurai menggunakan skema [JSON output](#json-output) yang sama seperti command hooks. Badan yang gagal validasi skema adalah kesalahan non-blocking953* **2xx dengan body objek JSON**: di-parse menggunakan skema [output JSON](#json-output) yang sama seperti hook perintah. Body yang gagal validasi skema adalah error non-blocking

974* **2xx dengan badan apa pun yang lain, seperti teks biasa**: kesalahan non-blocking, ditangani sama seperti status non-2xx. Claude Code tidak menambahkan teks ke konteks Claude954* **2xx dengan body lain, seperti teks biasa**: error non-blocking, ditangani sama seperti status non-2xx. Claude Code tidak menambahkan teks tersebut ke konteks Claude

975* **Status non-2xx**: kesalahan non-blocking, eksekusi berlanjut955* **Status non-2xx**: error non-blocking, eksekusi berlanjut

976* **Kegagalan koneksi**: kesalahan non-blocking, eksekusi berlanjut956* **Kegagalan koneksi**: error non-blocking, eksekusi berlanjut

977* **Timeout**: hook dibatalkan, seperti dijelaskan di bawah [Timeouts](#timeouts)957* **Timeout**: hook dibatalkan, seperti dijelaskan di bagian [Timeout](#timeouts)

978 958 

979Tidak seperti command hooks, HTTP hooks tidak dapat menandakan kesalahan blocking hanya melalui kode status. Untuk memblokir pemanggilan tool atau menolak izin, kembalikan respons 2xx dengan badan JSON yang berisi bidang keputusan yang sesuai.959Tidak seperti hook perintah, hook HTTP tidak dapat memberi sinyal error blocking hanya melalui kode status. Untuk memblokir panggilan tool atau menolak izin, kembalikan respons 2xx dengan body JSON yang berisi field keputusan yang sesuai.

980 960 

981<h3 id="json-output">961<h3 id="json-output">

982 Output JSON962 Output JSON

983</h3>963</h3>

984 964 

985Kode keluar hanya membiarkan Anda memblokir atau tetap diam, tetapi output JSON memberikan kontrol yang lebih halus. Alih-alih keluar dengan kode 2 untuk memblokir, keluar 0 dan cetak objek JSON ke stdout. Claude Code membaca bidang tertentu dari JSON itu untuk mengontrol perilaku, termasuk [decision control](#decision-control) untuk memblokir, mengizinkan, atau meningkatkan ke pengguna.965Exit code hanya memungkinkan Anda memblokir atau tetap diam, tetapi output JSON memberi Anda kontrol yang lebih terperinci. Alih-alih keluar dengan kode 2 untuk memblokir, keluar dengan 0 dan cetak objek JSON ke stdout. Claude Code membaca field tertentu dari JSON tersebut untuk mengontrol perilaku, termasuk [kontrol keputusan](#decision-control) untuk memblokir, mengizinkan, atau mengeskalasi ke pengguna.

986 966 

987<Note>967<Note>

988 Pilih satu pendekatan per hook: gunakan kode keluar saja untuk signaling, atau keluar 0 dan cetak JSON untuk kontrol terstruktur. Jika Anda mencampurnya, exit 2 mempertahankan [efek blocking](#exit-code-2-behavior-per-event)-nya, dan Claude Code masih membaca bidang JSON, dengan satu pengecualian elicitation yang dicatat di bawah [Exit code 2](#exit-code-2).968 Pilih satu pendekatan per hook: gunakan exit code saja untuk memberi sinyal, atau keluar dengan 0 dan cetak JSON untuk kontrol terstruktur. Jika Anda mencampurnya, exit 2 tetap mempertahankan [efek pemblokirannya](#exit-code-2-behavior-per-event), dan Claude Code tetap membaca field JSON, dengan satu pengecualian elicitation yang dicatat di bagian [Exit code 2](#exit-code-2).

989</Note>969</Note>

990 970 

991Stdout hook Anda harus berisi hanya objek JSON. Jika profil shell Anda mencetak teks saat startup, itu dapat mengganggu parsing JSON. Lihat [Hook JSON has no effect](/docs/id/hooks-guide#hook-json-has-no-effect) dalam panduan troubleshooting.971Stdout hook Anda hanya boleh berisi objek JSON. Jika profil shell Anda mencetak teks saat startup, hal itu dapat mengganggu parsing JSON. Lihat [JSON hook tidak berpengaruh](/docs/id/hooks-guide#hook-json-has-no-effect) dalam panduan pemecahan masalah.

992 972 

993String `additionalContext`, `systemMessage`, dan `initialUserMessage` hook, dan stdout biasanya, dibatasi pada 10.000 karakter:973String `additionalContext`, `systemMessage`, dan `initialUserMessage` dari hook, serta stdout biasanya, dibatasi hingga 10.000 karakter:

994 974 

995* **Scope**: Claude Code mengukur setiap string sendiri, bahkan ketika beberapa hooks berjalan untuk event yang sama. Untuk output JSON, setiap bidang diukur secara terpisah; stdout biasa diukur secara keseluruhan.975* **Cakupan**: Claude Code mengukur setiap string secara terpisah, bahkan ketika beberapa hook berjalan untuk event yang sama. Untuk output JSON, setiap field diukur secara terpisah; stdout biasa diukur secara keseluruhan.

996* **Melebihi batas**: Claude Code menyimpan output ke file di direktori sesi dan menggantinya dengan path file dan pratinjau hingga 2.000 karakter pertama. Hasil Bash yang besar yang valid ditangani dengan cara yang sama, dijelaskan di bawah [Output limits](/docs/id/tools-reference#output-limits). Tidak seperti batas Bash itu, cap ini tidak memiliki pengaturan atau variabel lingkungan untuk menaikkannya.976* **Melebihi batas**: Claude Code menyimpan output ke file di direktori sesi dan menggantinya dengan path file serta pratinjau hingga 2.000 karakter pertama. Hasil Bash valid yang besar ditangani dengan cara yang sama, seperti dijelaskan di bagian [Batas output](/docs/id/tools-reference#output-limits). Tidak seperti batas atas Bash tersebut, batas ini tidak memiliki pengaturan atau environment variable untuk menaikkannya.

997* **Membaca file**: Claude Code tidak meminta Claude untuk membaca file, jadi simpan apa pun yang harus selalu dilihat Claude dalam cap.977* **Membaca file**: Claude Code tidak meminta Claude untuk membaca file tersebut, jadi pastikan apa pun yang harus selalu dilihat Claude tetap berada dalam batas.

998 978 

999Objek JSON mendukung tiga jenis bidang:979Objek JSON mendukung tiga jenis field:

1000 980 

1001* **Bidang universal** seperti `continue` tercantum dalam tabel di bawah. Setiap event menerimanya, tetapi beberapa events membuangnya atau mengirimkan `systemMessage` ke tempat lain selain transkrip. Setiap bagian event mengatakan demikian. `terminalSequence` bekerja pada events itu juga, dengan pengecualian yang tercantum di bawah [Emit terminal notifications](#emit-terminal-notifications).981* **Field universal** seperti `continue` tercantum dalam tabel di bawah. Setiap event menerimanya, tetapi beberapa event membuangnya atau mengirimkan `systemMessage` ke tempat selain transkrip. Bagian setiap event menyebutkannya. `terminalSequence` juga berfungsi pada event tersebut, dengan pengecualian yang tercantum di bagian [Memancarkan notifikasi terminal](#emit-terminal-notifications).

1002* **Top-level `decision` dan `reason`** digunakan oleh beberapa events untuk memblokir atau memberikan umpan balik.982* **`decision` dan `reason` tingkat atas** digunakan oleh beberapa event untuk memblokir atau memberikan umpan balik.

1003* **`hookSpecificOutput`** adalah objek bersarang untuk events yang memerlukan kontrol yang lebih kaya. Ini memerlukan bidang `hookEventName` yang diatur ke nama event.983* **`hookSpecificOutput`** adalah objek bersarang untuk event yang memerlukan kontrol lebih kaya. Objek ini memerlukan field `hookEventName` yang diatur ke nama event.

1004 984 

1005| Bidang | Default | Deskripsi |985| Field | Default | Deskripsi |

1006| :- | :- | :- |986| :- | :- | :- |

1007| `continue` | `true` | Jika `false`, Claude berhenti memproses sepenuhnya setelah hook dijalankan. Mengambil alih bidang keputusan spesifik event apa pun |987| `continue` | `true` | Jika `false`, Claude berhenti memproses sepenuhnya setelah hook berjalan. Diutamakan daripada field keputusan khusus event mana pun |

1008| `stopReason` | tidak ada | Pesan ditampilkan ke pengguna saat `continue` adalah `false`. Itu tetap dalam percakapan, jadi Claude melihatnya jika percakapan berlanjut |988| `stopReason` | tidak ada | Pesan yang ditampilkan kepada pengguna ketika `continue` bernilai `false`. Pesan ini tetap berada di percakapan, sehingga Claude melihatnya jika percakapan berlanjut |

1009| `suppressOutput` | `false` | Tidak memiliki efek: Claude Code menerima bidang tetapi tidak bertindak. Stdout hook yang berhasil tidak pernah ditampilkan dalam transkrip dan dicatat dalam debug log |989| `suppressOutput` | `false` | Tidak berpengaruh: Claude Code menerima field ini tetapi tidak menindaklanjutinya. Stdout hook yang berhasil tidak pernah ditampilkan di transkrip dan dicatat di log debug |

1010| `systemMessage` | tidak ada | Pesan peringatan ditampilkan ke pengguna. Dalam output [Agent SDK](/docs/id/agent-sdk/overview) dan [`--output-format stream-json`](/docs/id/headless), itu dapat tiba sebagai [`SDKInformationalMessage`](/docs/id/agent-sdk/typescript#sdkinformationalmessage) |990| `systemMessage` | tidak ada | Pesan peringatan yang ditampilkan kepada pengguna. Dalam output [Agent SDK](/docs/id/agent-sdk/overview) dan [`--output-format stream-json`](/docs/id/headless), pesan ini dapat tiba sebagai [`SDKInformationalMessage`](/docs/id/agent-sdk/typescript#sdkinformationalmessage) |

1011| `terminalSequence` | tidak ada | Urutan escape terminal untuk Claude Code yang akan dipancarkan atas nama Anda, seperti notifikasi desktop, judul jendela, atau bel. Dibatasi pada OSC `0`/`1`/`2`/`9`/`99`/`777` dan BEL. Jika nilai berisi apa pun di luar daftar putih, bidang diabaikan. Gunakan ini alih-alih menulis ke `/dev/tty`, yang tidak tersedia untuk hooks |991| `terminalSequence` | tidak ada | Escape sequence terminal yang akan dipancarkan Claude Code atas nama Anda, seperti notifikasi desktop, judul jendela, atau bel. Dibatasi pada OSC `0`/`1`/`2`/`9`/`99`/`777` dan BEL. Jika nilai berisi apa pun di luar allowlist, field diabaikan. Gunakan ini alih-alih menulis ke `/dev/tty`, yang tidak tersedia untuk hook |

1012 992 

1013Untuk menghentikan Claude sepenuhnya:993Untuk menghentikan Claude sepenuhnya:

1014 994 


1016{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }996{ "continue": false, "stopReason": "Build failed, fix errors before continuing" }

1017```997```

1018 998 

1019Untuk hooks `PreToolUse` dan `PostToolUse`, stop berlaku bahkan ketika pemanggilan tool gagal atau selesai saat Claude masih streaming respons.999Untuk hook `PreToolUse` dan `PostToolUse`, penghentian berlaku bahkan ketika panggilan tool gagal atau selesai saat Claude masih melakukan streaming respons.

1020 1000 

1021<h4 id="emit-terminal-notifications">1001<h4 id="emit-terminal-notifications">

1022 Emit terminal notifications1002 Memancarkan notifikasi terminal

1023</h4>1003</h4>

1024 1004 

1025Hooks berjalan tanpa terminal pengontrol, jadi menulis urutan escape langsung ke `/dev/tty` gagal. Sebagai gantinya, kembalikan urutan escape dalam bidang `terminalSequence` dan Claude Code memancarkannya untuk Anda melalui jalur penulisan terminal miliknya sendiri. Ini bebas race, bekerja di dalam tmux dan GNU screen, dan bekerja di Windows di mana tidak ada `/dev/tty`.1005Hook berjalan tanpa terminal pengendali, sehingga menulis escape sequence langsung ke `/dev/tty` akan gagal. Sebagai gantinya, kembalikan escape sequence di field `terminalSequence` dan Claude Code memancarkannya untuk Anda melalui jalur penulisan terminalnya sendiri. Cara ini bebas race condition, berfungsi di dalam tmux dan GNU screen, dan berfungsi di Windows yang tidak memiliki `/dev/tty`.

1026 1006 

1027Bidang menerima string dari satu atau lebih urutan escape yang diizinkan:1007Field ini menerima string berisi satu atau lebih escape sequence yang ada di allowlist:

1028 1008 

1029* OSC `0`, `1`, `2`: judul jendela dan ikon1009* OSC `0`, `1`, `2`: judul jendela dan ikon

1030* OSC `9`: notifikasi iTerm2, ConEmu, Windows Terminal, dan WezTerm, termasuk `9;4` kemajuan taskbar1010* OSC `9`: notifikasi iTerm2, ConEmu, Windows Terminal, dan WezTerm, termasuk progres taskbar `9;4`

1031* OSC `99`: notifikasi Kitty1011* OSC `99`: notifikasi Kitty

1032* OSC `777`: notifikasi urxvt, Ghostty, dan Warp1012* OSC `777`: notifikasi urxvt, Ghostty, dan Warp

1033* BEL telanjang1013* BEL tunggal

1034 1014 

1035Urutan dapat diakhiri dengan BEL atau dengan ST. Apa pun di luar daftar putih, termasuk urutan kursor dan warna CSI, urutan palet OSC, hyperlink OSC 8, penulisan clipboard OSC 52, dan OSC 1337, ditolak dan bidang diabaikan.1015Sequence dapat diakhiri dengan BEL atau dengan ST. Apa pun di luar allowlist, termasuk sequence kursor dan warna CSI, sequence palet OSC, hyperlink OSC 8, penulisan clipboard OSC 52, dan OSC 1337, ditolak dan field diabaikan.

1036 1016 

1037Claude Code menulis urutan itu sendiri ketika memproses output hook Anda, jadi bidang bekerja pada events yang membuang `systemMessage` dan `continue`, seperti `Notification` dan `StopFailure`. Itu memiliki dua batas:1017Claude Code menulis sequence tersebut sendiri ketika memproses output hook Anda, sehingga field ini berfungsi pada event yang membuang `systemMessage` dan `continue`, seperti `Notification` dan `StopFailure`. Field ini memiliki dua batasan:

1038 1018 

1039* Claude Code menulis urutan hanya dalam sesi interaktif, dan hanya saat antarmukanya berada di layar. Dalam mode non-interaktif dengan flag `-p` dan dalam Agent SDK, itu mengabaikan bidang.1019* Claude Code menulis sequence hanya dalam sesi interaktif, dan hanya selama antarmukanya ada di layar. Dalam mode non-interaktif dengan flag `-p` dan di Agent SDK, Claude Code mengabaikan field ini.

1040* Hook `WorktreeCreate` command tidak dapat mengembalikan JSON, karena Claude Code membaca stdout-nya sebagai path worktree. Hook `WorktreeCreate` HTTP mengembalikan JSON dan dapat menyertakan bidang.1020* Hook perintah `WorktreeCreate` tidak dapat mengembalikan JSON, karena Claude Code membaca stdout-nya sebagai path worktree. Hook HTTP `WorktreeCreate` mengembalikan JSON dan dapat menyertakan field ini.

1041 1021 

1042Contoh di bawah menjalankan notifikasi desktop dari hook `Notification`. Urutan escape dibangun dengan `printf` octal escapes sehingga byte kontrol tidak pernah muncul di baris perintah shell, dan `jq -n --arg` membangun output JSON sehingga tanda kutip, backslash, dan newline dalam pesan notifikasi diloloskan dengan benar:1022Contoh di bawah memicu notifikasi desktop dari hook `Notification`. Escape sequence dibuat dengan escape oktal `printf` sehingga byte kontrol tidak pernah muncul di baris perintah shell, dan `jq -n --arg` membuat output JSON sehingga tanda kutip, backslash, dan baris baru dalam pesan notifikasi di-escape dengan benar:

1043 1023 

1044```bash theme={null}1024```bash theme={null}

1045#!/bin/bash1025#!/bin/bash

1046# Notification hook: ping desktop ketika Claude Code membutuhkan perhatian.1026# Notification hook: ping the desktop when Claude Code needs attention.

1047input=$(cat)1027input=$(cat)

1048title="Claude Code"1028title="Claude Code"

1049body=$(jq -r '.message // "Needs your attention"' <<<"$input")1029body=$(jq -r '.message // "Needs your attention"' <<<"$input")


1054Bentuk `{ "terminalSequence": "..." }` sama dari shell atau bahasa apa pun.1034Bentuk `{ "terminalSequence": "..." }` sama dari shell atau bahasa apa pun.

1055 1035 

1056<h4 id="add-context-for-claude">1036<h4 id="add-context-for-claude">

1057 Tambahkan konteks untuk Claude1037 Menambahkan konteks untuk Claude

1058</h4>1038</h4>

1059 1039 

1060Bidang `additionalContext` meneruskan string dari hook Anda ke jendela konteks Claude. Claude Code membungkus string dalam pengingat sistem dan menyisipkannya ke dalam percakapan pada titik di mana hook dijalankan. Claude membaca pengingat pada permintaan model berikutnya, tetapi itu tidak muncul sebagai pesan chat dalam antarmuka.1040Field `additionalContext` meneruskan string dari hook Anda ke context window Claude. Claude Code membungkus string tersebut dalam [system reminder](/docs/id/glossary#system-reminder) dan menyisipkannya ke dalam percakapan pada titik di mana hook dijalankan. Claude membaca reminder tersebut pada permintaan model berikutnya, tetapi reminder tidak muncul sebagai pesan chat di antarmuka.

1061 1041 

1062Kembalikan `additionalContext` di dalam `hookSpecificOutput` bersama nama event:1042Kembalikan `additionalContext` di dalam `hookSpecificOutput` bersama nama event:

1063 1043 


1070}1050}

1071```1051```

1072 1052 

1073Di mana pengingat muncul tergantung pada event:1053Di mana reminder muncul bergantung pada event:

1074 1054 

1075* [SessionStart](#sessionstart) dan [SubagentStart](#subagentstart): di awal percakapan, sebelum prompt pertama1055* [SessionStart](#sessionstart) dan [SubagentStart](#subagentstart): di awal percakapan, sebelum prompt pertama

1076* [UserPromptSubmit](#userpromptsubmit) dan [UserPromptExpansion](#userpromptexpansion): bersama prompt yang dikirimkan1056* [UserPromptSubmit](#userpromptsubmit) dan [UserPromptExpansion](#userpromptexpansion): bersama prompt yang dikirim

1077* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure), dan [PostToolBatch](#posttoolbatch): di sebelah hasil tool1057* [PreToolUse](#pretooluse), [PostToolUse](#posttooluse), [PostToolUseFailure](#posttoolusefailure), dan [PostToolBatch](#posttoolbatch): di samping hasil tool

1078* [Stop](#stop) dan [SubagentStop](#subagentstop): di akhir giliran. Percakapan berlanjut sehingga Claude dapat bertindak atas umpan balik. Lihat [Stop decision control](#stop-decision-control)1058* [Stop](#stop) dan [SubagentStop](#subagentstop): di akhir giliran. Percakapan berlanjut sehingga Claude dapat menindaklanjuti umpan balik. Lihat [Kontrol keputusan Stop](#stop-decision-control)

1079* [PostModelSwitch](#postmodelswitch): dengan permintaan berikutnya setelah switch. Lihat [PostModelSwitch decision control](#postmodelswitch-decision-control) untuk timing1059* [PostModelSwitch](#postmodelswitch): bersama permintaan berikutnya setelah pergantian. Lihat [Kontrol keputusan PostModelSwitch](#postmodelswitch-decision-control) untuk waktunya

1080 1060 

1081Ketika beberapa hooks mengembalikan `additionalContext` untuk event yang sama, Claude menerima semua nilai.1061Ketika beberapa hook mengembalikan `additionalContext` untuk event yang sama, Claude menerima semua nilainya.

1082 1062 

1083Jika nilai melebihi 10.000 karakter, Claude Code menulis teks ke file di direktori sesi dan meneruskan Claude path file dengan pratinjau singkat sebagai gantinya.1063Jika suatu nilai melebihi 10.000 karakter, Claude Code menulis teks tersebut ke file di direktori sesi dan sebagai gantinya meneruskan path file kepada Claude beserta pratinjau hingga 2.000 karakter pertama. Claude dapat membaca file tersebut, tetapi Claude Code tidak memintanya untuk melakukannya.

1084 1064 

1085Gunakan `additionalContext` untuk informasi yang harus diketahui Claude tentang keadaan saat ini lingkungan Anda atau operasi yang baru saja dijalankan:1065Gunakan `additionalContext` untuk informasi yang perlu diketahui Claude tentang status environment Anda saat ini atau operasi yang baru saja dijalankan:

1086 1066 

1087* **Keadaan lingkungan**: branch saat ini, target deployment, atau flag fitur aktif1067* **Status environment**: branch saat ini, target deployment, atau feature flag yang aktif

1088* **Aturan proyek bersyarat**: perintah test mana yang berlaku untuk file yang baru diedit, direktori mana yang read-only di worktree ini1068* **Aturan proyek bersyarat**: perintah pengujian mana yang berlaku untuk file yang baru saja diedit, direktori mana yang read-only di worktree ini

1089* **Data eksternal**: masalah terbuka yang ditugaskan kepada Anda, hasil CI terbaru, konten yang diambil dari layanan internal1069* **Data eksternal**: issue terbuka yang ditugaskan kepada Anda, hasil CI terbaru, konten yang diambil dari layanan internal

1090 1070 

1091Untuk instruksi yang tidak pernah berubah, lebih suka [CLAUDE.md](/docs/id/memory). Itu dimuat tanpa menjalankan skrip dan merupakan tempat standar untuk konvensi proyek statis.1071Untuk instruksi yang tidak pernah berubah, utamakan [CLAUDE.md](/docs/id/memory). File ini dimuat tanpa menjalankan skrip dan merupakan tempat standar untuk konvensi proyek yang statis.

1092 1072 

1093Tulis teks sebagai pernyataan faktual daripada instruksi sistem imperatif. Frasa seperti "Target deployment adalah production" atau "Repo ini menggunakan `bun test`" dibaca sebagai informasi proyek. Teks yang dibingkai sebagai perintah sistem out-of-band dapat memicu pertahanan injeksi prompt Claude, yang menyebabkan Claude menampilkan teks kepada Anda alih-alih memperlakukannya sebagai konteks.1073Tulis teks sebagai pernyataan faktual, bukan instruksi sistem yang bersifat imperatif. Frasa seperti "The deployment target is production" atau "This repo uses `bun test`" dibaca sebagai informasi proyek. Teks yang dibingkai sebagai perintah sistem di luar jalur dapat memicu pertahanan prompt injection Claude, yang menyebabkan Claude menampilkan teks tersebut kepada Anda alih-alih memperlakukannya sebagai konteks.

1094 1074 

1095Claude Code menyimpan teks yang disuntikkan dalam transkrip sesi. Untuk events mid-session seperti `PostToolUse` atau `UserPromptSubmit`, ketika Anda melanjutkan dengan `--continue` atau `--resume`, Claude Code memutar ulang teks yang disimpan daripada menjalankan kembali hook untuk giliran masa lalu, jadi nilai seperti timestamp atau commit SHA menjadi usang. Hook `SessionStart` dijalankan lagi pada resume dengan `source` diatur ke `"resume"`, atau `"fork"` jika Anda menambahkan `--fork-session`, jadi mereka dapat menyegarkan konteks mereka.1075Claude Code menyimpan teks yang disisipkan di transkrip sesi. Untuk event di tengah sesi seperti `PostToolUse` atau `UserPromptSubmit`, ketika Anda melanjutkan dengan `--continue` atau `--resume`, Claude Code memutar ulang teks yang tersimpan alih-alih menjalankan ulang hook untuk giliran sebelumnya, sehingga nilai seperti timestamp atau SHA commit menjadi usang. Hook `SessionStart` berjalan lagi saat dilanjutkan dengan `source` diatur ke `"resume"`, atau `"fork"` jika Anda menambahkan `--fork-session`, sehingga hook tersebut dapat memperbarui konteksnya.

1096 1076 

1097<h4 id="decision-control">1077<h4 id="decision-control">

1098 Decision control1078 Kontrol keputusan

1099</h4>1079</h4>

1100 1080 

1101Tidak setiap event mendukung pemblokiran atau kontrol perilaku melalui JSON. Events yang melakukannya masing-masing menggunakan set bidang yang berbeda untuk mengekspresikan keputusan itu. Gunakan tabel ini sebagai referensi cepat sebelum menulis hook:1081Tidak setiap event mendukung pemblokiran atau pengendalian perilaku melalui JSON. Event yang mendukungnya masing-masing menggunakan kumpulan field yang berbeda untuk menyatakan keputusan tersebut. Gunakan tabel ini sebagai referensi cepat sebelum menulis hook:

1102 1082 

1103| Events | Pola keputusan | Bidang kunci |1083| Event | Pola keputusan | Field utama |

1104| :- | :- | :- |1084| :- | :- | :- |

1105| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | Top-level `decision` | `decision: "block"`, `reason`. Stop dan SubagentStop juga menerima `hookSpecificOutput.additionalContext` untuk [umpan balik non-error yang melanjutkan percakapan](#stop-decision-control) |1085| UserPromptSubmit, UserPromptExpansion, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop, ConfigChange, PreCompact | `decision` tingkat atas | `decision: "block"`, `reason`. Stop dan SubagentStop juga menerima `hookSpecificOutput.additionalContext` untuk [umpan balik non-error yang melanjutkan percakapan](#stop-decision-control) |

1106| TeammateIdle, TaskCompleted | Kode keluar atau `continue: false` | Kode keluar 2 memblokir tindakan dengan umpan balik stderr. JSON `{"continue": false, "stopReason": "..."}` juga menghentikan teammate sepenuhnya, mencocokkan perilaku hook `Stop`; [TaskCompleted mengabaikannya ketika tool `TaskUpdate` memicu event](#taskcompleted-decision-control) |1086| TeammateIdle, TaskCompleted | Exit code atau `continue: false` | Exit code 2 memblokir tindakan dengan umpan balik stderr. JSON `{"continue": false, "stopReason": "..."}` juga menghentikan rekan tim sepenuhnya, sesuai dengan perilaku hook `Stop`; [TaskCompleted mengabaikannya ketika tool `TaskUpdate` memicu event tersebut](#taskcompleted-decision-control) |

1107| TaskCreated | Kode keluar atau top-level `decision` | Kode keluar 2 atau `decision: "block"` [membatalkan tugas](#taskcreated-decision-control) dan mengembalikan pesan ke Claude. `continue: false` diabaikan |1087| TaskCreated | Exit code atau `decision` tingkat atas | Exit code 2 atau `decision: "block"` [membatalkan tugas](#taskcreated-decision-control) dan mengembalikan pesan kepada Claude. `continue: false` diabaikan |

1108| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |1088| PreToolUse | `hookSpecificOutput` | `permissionDecision` (allow/deny/ask/defer), `permissionDecisionReason` |

1109| PreModelSwitch | `hookSpecificOutput` atau top-level `decision` | `permissionDecision` (allow/deny/ask), `permissionDecisionReason`. `decision: "block"` juga [membatalkan switch](#premodelswitch-decision-control) |1089| PreModelSwitch | `hookSpecificOutput` atau `decision` tingkat atas | `permissionDecision` (allow/deny/ask), `permissionDecisionReason`. `decision: "block"` juga [membatalkan pergantian](#premodelswitch-decision-control) |

1110| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |1090| PermissionRequest | `hookSpecificOutput` | `decision.behavior` (allow/deny) |

1111| PermissionDenied | `hookSpecificOutput` | `retry: true` memberitahu model itu dapat mencoba lagi pemanggilan tool yang ditolak; Claude Code mengabaikannya untuk [penolakan tanpa-verdict](#permissiondenied-decision-control) |1091| PermissionDenied | `hookSpecificOutput` | `retry: true` memberi tahu model bahwa model boleh mencoba ulang panggilan tool yang ditolak; Claude Code mengabaikannya untuk [penolakan tanpa putusan](#permissiondenied-decision-control) |

1112| WorktreeCreate | path return | Command hook mencetak path di stdout; HTTP hook mengembalikan `hookSpecificOutput.worktreePath`. Kegagalan hook atau path yang hilang gagal membuat |1092| WorktreeCreate | pengembalian path | Hook perintah mencetak path di stdout; hook HTTP mengembalikan `hookSpecificOutput.worktreePath`. Kegagalan hook atau path yang tidak ada menggagalkan pembuatan |

1113| WorktreeRemove | Kode keluar | Kode keluar non-zero apa pun membuat penghapusan gagal jika direktori masih ada setelahnya. Output JSON diabaikan |1093| WorktreeRemove | Exit code | Exit code bukan nol apa pun membuat penghapusan gagal jika direktori masih ada setelahnya. Output JSON dibuang |

1114| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (nilai field form untuk accept) |1094| Elicitation | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (nilai field formulir untuk accept) |

1115| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (nilai field form override) |1095| ElicitationResult | `hookSpecificOutput` | `action` (accept/decline/cancel), `content` (override nilai field formulir) |

1116| MessageDisplay | `hookSpecificOutput` | `displayContent` menggantikan teks yang ditampilkan di layar. Display-only: transkrip dan apa yang Claude lihat tetap mempertahankan asli |1096| MessageDisplay | `hookSpecificOutput` | `displayContent` menggantikan teks yang ditampilkan di layar. Hanya tampilan: transkrip dan apa yang dilihat Claude tetap mempertahankan teks asli |

1117| SessionStart, SubagentStart, PostModelSwitch | Context only | `hookSpecificOutput.additionalContext` menambahkan konteks untuk Claude. SessionStart juga menerima [`initialUserMessage`, `watchPaths`, `sessionTitle`, dan `reloadSkills`](#sessionstart-decision-control). Tidak ada kontrol blocking atau decision |1097| SessionStart, SubagentStart, PostModelSwitch | Hanya konteks | `hookSpecificOutput.additionalContext` menambahkan konteks untuk Claude. SessionStart juga menerima [`initialUserMessage`, `watchPaths`, `sessionTitle`, dan `reloadSkills`](#sessionstart-decision-control). Tidak ada pemblokiran atau kontrol keputusan |

1118| Setup, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, DirectoryAdded, FileChanged | Tidak ada | Tidak ada kontrol keputusan. Digunakan untuk efek samping seperti logging atau cleanup |1098| Setup, Notification, SessionEnd, PostCompact, InstructionsLoaded, StopFailure, CwdChanged, DirectoryAdded, FileChanged | Tidak ada | Tidak ada kontrol keputusan. Digunakan untuk efek samping seperti logging atau pembersihan |

1119 1099 

1120Beberapa events juga dapat menulis ulang konten daripada hanya mengizinkan atau memblokir:1100Beberapa event juga dapat menulis ulang konten alih-alih hanya mengizinkan atau memblokirnya:

1121 1101 

1122* `PreToolUse`: `updatedInput` langsung di bawah `hookSpecificOutput` menggantikan argumen tool sebelum dijalankan. Lihat [PreToolUse decision control](#pretooluse-decision-control)1102* `PreToolUse`: `updatedInput` langsung di bawah `hookSpecificOutput` menggantikan argumen tool sebelum tool berjalan. Lihat [Kontrol keputusan PreToolUse](#pretooluse-decision-control)

1123* `PermissionRequest`: `updatedInput` di dalam objek `decision`. Lihat [PermissionRequest decision control](#permissionrequest-decision-control)1103* `PermissionRequest`: `updatedInput` di dalam objek `decision`. Lihat [Kontrol keputusan PermissionRequest](#permissionrequest-decision-control)

1124* `PostToolUse`: `updatedToolOutput` menggantikan hasil tool. Lihat [PostToolUse decision control](#posttooluse-decision-control)1104* `PostToolUse`: `updatedToolOutput` menggantikan hasil tool. Lihat [Kontrol keputusan PostToolUse](#posttooluse-decision-control)

1125* `UserPromptSubmit`: tidak dapat mengganti prompt; hanya menyuntikkan `additionalContext` di sampingnya1105* `UserPromptSubmit`: tidak dapat menggantikan prompt; hanya menyisipkan `additionalContext` bersamanya

1126 1106 

1127Untuk kasus penggunaan redaksi atau transformasi, intersep di `PreToolUse` untuk input tool keluar dan `PostToolUse` untuk hasil tool masuk.1107Untuk kasus penggunaan redaksi atau transformasi, lakukan intersepsi di `PreToolUse` untuk input tool keluar dan di `PostToolUse` untuk hasil tool masuk.

1128 1108 

1129Berikut adalah contoh setiap pola dalam aksi:1109Berikut contoh setiap pola dalam praktik:

1130 1110 

1131<Tabs>1111<Tabs>

1132 <Tab title="Top-level decision">1112 <Tab title="Keputusan tingkat atas">

1133 Satu-satunya nilai untuk `decision` adalah `"block"`. Untuk mengizinkan tindakan dilanjutkan, hilangkan `decision` dari JSON Anda, atau keluar 0 tanpa JSON apa pun:1113 Satu-satunya nilai untuk `decision` adalah `"block"`. Untuk mengizinkan tindakan dilanjutkan, hilangkan `decision` dari JSON Anda, atau keluar dengan 0 tanpa JSON sama sekali:

1134 1114 

1135 ```json theme={null}1115 ```json theme={null}

1136 {1116 {


1141 </Tab>1121 </Tab>

1142 1122 

1143 <Tab title="PreToolUse">1123 <Tab title="PreToolUse">

1144 Menggunakan `hookSpecificOutput` untuk kontrol yang lebih kaya: izinkan, tolak, atau eskalasi ke pengguna. Anda juga dapat memodifikasi input tool sebelum dijalankan atau menyuntikkan konteks tambahan untuk Claude. Lihat [PreToolUse decision control](#pretooluse-decision-control) untuk set lengkap opsi.1124 Menggunakan `hookSpecificOutput` untuk kontrol yang lebih kaya: mengizinkan, menolak, atau mengeskalasi ke pengguna. Anda juga dapat memodifikasi input tool sebelum tool berjalan atau menyisipkan konteks tambahan untuk Claude. Lihat [Kontrol keputusan PreToolUse](#pretooluse-decision-control) untuk kumpulan opsi lengkap.

1145 1125 

1146 ```json theme={null}1126 ```json theme={null}

1147 {1127 {


1155 </Tab>1135 </Tab>

1156 1136 

1157 <Tab title="PermissionRequest">1137 <Tab title="PermissionRequest">

1158 Menggunakan `hookSpecificOutput` untuk mengizinkan atau menolak permintaan izin atas nama pengguna. Saat mengizinkan, Anda juga dapat memodifikasi input tool atau menerapkan aturan izin sehingga pengguna tidak diminta lagi. Lihat [PermissionRequest decision control](#permissionrequest-decision-control) untuk set lengkap opsi.1138 Menggunakan `hookSpecificOutput` untuk mengizinkan atau menolak permintaan izin atas nama pengguna. Saat mengizinkan, Anda juga dapat memodifikasi input tool atau menerapkan aturan izin sehingga pengguna tidak ditanya lagi. Lihat [Kontrol keputusan PermissionRequest](#permissionrequest-decision-control) untuk kumpulan opsi lengkap.

1159 1139 

1160 ```json theme={null}1140 ```json theme={null}

1161 {1141 {


1173 </Tab>1153 </Tab>

1174</Tabs>1154</Tabs>

1175 1155 

1176Untuk contoh yang diperluas termasuk validasi perintah Bash, pemfilteran prompt, dan skrip persetujuan otomatis, lihat [What you can automate](/docs/id/hooks-guide#what-you-can-automate) dalam panduan dan [Bash command validator reference implementation](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).1156Untuk contoh lanjutan termasuk validasi perintah Bash, pemfilteran prompt, dan skrip persetujuan otomatis, lihat [Apa yang dapat Anda otomatisasi](/docs/id/hooks-guide#what-you-can-automate) dalam panduan dan [implementasi referensi validator perintah Bash](https://github.com/anthropics/claude-code/blob/main/examples/hooks/bash_command_validator_example.py).

1177 1157 

1178<h2 id="hook-events">1158<h2 id="hook-events">

1179 Hook events1159 Event hook

1180</h2>1160</h2>

1181 1161 

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

1183 1163 

1184<h3 id="sessionstart">1164<h3 id="sessionstart">

1185 SessionStart1165 SessionStart

1186</h3>1166</h3>

1187 1167 

1188Dijalankan ketika Claude Code memulai sesi baru atau melanjutkan sesi yang ada. Berguna untuk memuat konteks pengembangan seperti masalah yang ada atau perubahan terbaru pada codebase Anda, atau menyiapkan variabel lingkungan. Untuk konteks statis yang tidak memerlukan skrip, gunakan [CLAUDE.md](/docs/id/memory) sebagai gantinya.1168Berjalan saat Claude Code memulai sesi baru atau melanjutkan sesi yang sudah ada. Berguna untuk memuat konteks pengembangan seperti issue yang ada atau perubahan terbaru pada codebase Anda, atau untuk menyiapkan environment variable. Untuk konteks statis yang tidak memerlukan skrip, gunakan [CLAUDE.md](/docs/id/memory) sebagai gantinya.

1189 1169 

1190SessionStart dijalankan pada setiap sesi, jadi jaga hooks ini tetap cepat. Hanya hooks `type: "command"` dan `type: "mcp_tool"` yang didukung. Lihat [MCP tool hook fields](#mcp-tool-hook-fields) untuk kapan hooks `mcp_tool` dijalankan.1170SessionStart berjalan pada setiap sesi, jadi pastikan hook ini tetap cepat. Hanya hook `type: "command"` dan `type: "mcp_tool"` yang didukung. Lihat [kolom hook tool MCP](#mcp-tool-hook-fields) untuk mengetahui kapan hook `mcp_tool` berjalan.

1191 1171 

1192Nilai matcher sesuai dengan cara sesi dimulai:1172Nilai matcher berkaitan dengan cara sesi dimulai:

1193 1173 

1194| Matcher | Kapan dijalankan |1174| Matcher | Kapan dipicu |

1195| :- | :- |1175| :- | :- |

1196| `startup` | Sesi baru |1176| `startup` | Sesi baru |

1197| `resume` | `--resume`, `--continue`, atau `/resume` |1177| `resume` | `--resume`, `--continue`, atau `/resume` |

1198| `clear` | `/clear` |1178| `clear` | `/clear` |

1199| `compact` | Auto atau manual compaction |1179| `compact` | Compaction otomatis atau manual |

1200| `fork` | Sesi baru yang di-fork dari sesi yang ada: `--fork-session` dengan `--resume` atau `--continue`, salinan latar belakang `/fork`, atau `/branch` |1180| `fork` | Sesi baru yang di-fork dari sesi yang sudah ada: `--fork-session` dengan `--resume` atau `--continue`, salinan latar belakang `/fork`, `/branch`, atau percakapan yang Anda [pindahkan ke latar belakang](/docs/id/agent-view#from-inside-a-session) |

1201 1181 

1202Sebelum v2.1.214, sesi yang di-fork melaporkan sumber `"resume"`.1182Sebelum v2.1.214, sesi hasil fork melaporkan source `"resume"`.

1203 1183 

1204Ketika Anda menjalankan sesi interaktif, melanjutkan percakapan saat peluncuran dengan `--continue` atau `--resume`, atau menjalankan `/clear`, SessionStart hooks dijalankan di latar belakang. Anda dapat mengetik segera, dan percakapan yang Anda lanjutkan muncul tanpa menunggu hooks. Respons pertama Claude masih menunggu hooks selesai, jadi konteks mereka mencapai Claude.1184Saat Anda memulai sesi interaktif, melanjutkan percakapan saat peluncuran dengan `--continue` atau `--resume`, atau menjalankan `/clear`, hook SessionStart berjalan di latar belakang. Anda dapat langsung mengetik, dan percakapan yang Anda lanjutkan muncul tanpa menunggu hook. Respons pertama Claude tetap menunggu hook selesai, sehingga konteksnya sampai ke Claude.

1205 1185 

1206Ketika Anda beralih percakapan dengan `/resume` di dalam sesi, switch menunggu hooks selesai sebagai gantinya. Jika Anda menjalankan `/clear` atau beralih ke percakapan lain sementara background hooks masih berjalan, tidak ada yang mereka kembalikan berlaku untuk sesi.1186Saat Anda berpindah percakapan dengan `/resume` di dalam sesi, perpindahan tersebut justru menunggu hook selesai. Jika Anda menjalankan `/clear` atau berpindah ke percakapan lain saat hook latar belakang masih berjalan, apa pun yang dikembalikannya tidak diterapkan ke sesi.

1207 1187 

1208Penantian yang sama berlaku saat peluncuran, termasuk sesi yang dilanjutkan: prompt yang Anda kirimkan sementara SessionStart hooks masih berjalan tidak mencapai Claude sampai mereka selesai.1188Penantian yang sama berlaku saat peluncuran, termasuk sesi yang dilanjutkan: prompt yang Anda kirim saat hook SessionStart masih berjalan tidak sampai ke Claude hingga hook tersebut selesai.

1209 1189 

1210Selama penantian apa pun, tekan `Esc` untuk mengambil kembali prompt ke input tanpa mengirimkannya. Hooks terus berjalan.1190Selama salah satu penantian tersebut, tekan `Esc` untuk mengambil kembali prompt ke input tanpa mengirimkannya. Hook tetap berjalan.

1211 1191 

1212<h4 id="sessionstart-input">1192<h4 id="sessionstart-input">

1213 SessionStart input1193 Input SessionStart

1214</h4>1194</h4>

1215 1195 

1216Selain [bidang input umum](#common-input-fields), SessionStart hooks menerima `source` dan secara opsional `model`, `agent_type`, dan `session_title`:1196Selain [kolom input umum](#common-input-fields), hook SessionStart menerima `source` dan secara opsional `model`, `agent_type`, dan `session_title`:

1217 1197 

1218| Bidang | Deskripsi |1198| Kolom | Deskripsi |

1219| :- | :- |1199| :- | :- |

1220| `source` | Bagaimana sesi dimulai: `"startup"` untuk sesi baru, `"resume"` untuk sesi yang dilanjutkan, `"clear"` setelah `/clear`, `"compact"` setelah compaction, atau `"fork"` untuk sesi baru yang di-fork dari sesi yang ada |1200| `source` | Cara sesi dimulai: `"startup"` untuk sesi baru, `"resume"` untuk sesi yang dilanjutkan, `"clear"` setelah `/clear`, `"compact"` setelah compaction, atau `"fork"` untuk sesi baru yang di-fork dari sesi yang sudah ada |

1221| `model` | Pengenal model aktif. Itu dapat dihilangkan, misalnya setelah `/clear` atau ketika sesi dipulihkan melalui conversation recovery, jadi periksa bidang sebelum membacanya |1201| `model` | Pengidentifikasi model yang aktif. Kolom ini dapat dihilangkan, misalnya setelah `/clear` atau saat sesi dipulihkan melalui pemulihan percakapan, jadi periksa keberadaan kolom ini sebelum membacanya |

1222| `agent_type` | Nama agent, hadir ketika Anda memulai Claude Code dengan `claude --agent <name>` |1202| `agent_type` | Nama agent, ada saat Anda memulai Claude Code dengan `claude --agent <name>` |

1223| `session_title` | Judul sesi saat ini jika sudah ditetapkan, misalnya melalui `--name` atau `/rename`. Hook yang memancarkan `sessionTitle` dapat memeriksa `session_title` terlebih dahulu untuk menghindari menimpa judul yang ditetapkan pengguna secara eksplisit |1203| `session_title` | Judul kustom sesi, ada saat judul tersebut diatur, misalnya dengan `--name`, `/rename`, output `sessionTitle` dari hook, atau `renameSession()` dari Agent SDK. Hook yang mengeluarkan `sessionTitle` dapat memeriksa kolom ini terlebih dahulu agar tidak menimpa judul kustom yang sudah ada |

1224 1204 

1225Ketika `source` adalah `"resume"` atau `"fork"` dan transkrip berisi setidaknya satu respons dari Claude, SessionStart hooks juga menerima empat bidang di bawah. Hook Anda dapat menggunakannya untuk melaporkan apa yang dilanjutkan percakapan basi biaya sebelum permintaan pertama, misalnya dalam [`systemMessage`](#json-output). Bidang-bidang ini memerlukan Claude Code v2.1.251 atau lebih baru.1205Sesi yang belum Anda beri nama tetap dapat memiliki [judul yang dihasilkan](/docs/id/sessions#name-your-sessions). Judul tersebut bukan judul kustom dan tidak muncul di `session_title`.

1226 1206 

1227| Bidang | Deskripsi |1207Saat `source` bernilai `"resume"` atau `"fork"` dan transkrip berisi setidaknya satu respons dari Claude, hook SessionStart juga menerima empat kolom di bawah ini. Hook Anda dapat menggunakannya untuk melaporkan biaya melanjutkan percakapan yang sudah basi sebelum permintaan pertama, misalnya dalam [`systemMessage`](#json-output). Kolom-kolom ini memerlukan Claude Code v2.1.251 atau yang lebih baru.

1208 

1209| Kolom | Deskripsi |

1228| :- | :- |1210| :- | :- |

1229| `seconds_since_last_response` | Detik wall-clock sejak respons terakhir dalam transkrip yang dilanjutkan |1211| `seconds_since_last_response` | Detik waktu nyata sejak respons terakhir dalam transkrip yang dilanjutkan |

1230| `context_tokens` | Tokens yang diminta pertama dari sesi yang dilanjutkan mengirim ulang sebagai promptnya |1212| `context_tokens` | Token yang dikirim ulang oleh permintaan pertama sesi yang dilanjutkan sebagai prompt-nya |

1231| `prompt_cache_likely_expired` | `true` ketika respons terakhir lebih lama dari [lifetime prompt cache](/docs/id/prompt-caching#cache-lifetime) sesi atau compaction yang lebih baru menggantikan percakapan yang di-cache |1213| `prompt_cache_likely_expired` | `true` saat respons terakhir lebih lama dari [masa hidup prompt cache](/docs/id/prompt-caching#cache-lifetime) sesi atau compaction setelahnya menggantikan percakapan yang di-cache |

1232| `estimated_cache_write_usd` | Biaya perkiraan dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada model sesi, tidak termasuk respons |1214| `estimated_cache_write_usd` | Perkiraan biaya dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada model sesi, tidak termasuk respons |

1233 1215 

1234Contoh ini menunjukkan input untuk sesi yang dilanjutkan 90 menit setelah respons terakhirnya:1216Contoh ini menunjukkan input untuk sesi yang dilanjutkan 90 menit setelah respons terakhirnya:

1235 1217 


1249```1231```

1250 1232 

1251<h4 id="sessionstart-decision-control">1233<h4 id="sessionstart-decision-control">

1252 SessionStart decision control1234 Kontrol keputusan SessionStart

1253</h4>1235</h4>

1254 1236 

1255Claude Code menambahkan stdout yang [diperlakukan sebagai teks biasa](#exit-code-0) ke konteks Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan bidang spesifik event ini:1237Claude Code menambahkan stdout yang [diperlakukannya sebagai teks biasa](#exit-code-0) ke konteks Claude. Selain [kolom output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan kolom khusus event berikut:

1256 1238 

1257| Bidang | Deskripsi |1239| Kolom | Deskripsi |

1258| :- | :- |1240| :- | :- |

1259| `additionalContext` | String ditambahkan ke konteks Claude pada awal percakapan, sebelum prompt pertama. Lihat [Add context for Claude](#add-context-for-claude) untuk cara teks disampaikan dan apa yang harus dimasukkan |1241| `additionalContext` | String yang ditambahkan ke konteks Claude di awal percakapan, sebelum prompt pertama. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) untuk cara teks dikirimkan dan apa yang perlu dimasukkan ke dalamnya |

1260| `initialUserMessage` | String digunakan sebagai pesan pengguna pertama sesi. Berlaku dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, di mana itu menjadi giliran pertama bahkan jika tidak ada prompt yang disediakan. Jika prompt disediakan, itu mengikuti sebagai giliran berikutnya. Tidak seperti `additionalContext`, yang menempel pada giliran yang ada, ini membuat giliran |1242| `initialUserMessage` | String yang digunakan sebagai pesan pengguna pertama dalam sesi. Berlaku dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, tempat string ini menjadi giliran pertama meskipun tidak ada prompt yang diberikan. Jika prompt diberikan, prompt tersebut menyusul sebagai giliran berikutnya. Tidak seperti `additionalContext`, yang dilampirkan ke giliran yang sudah ada, kolom ini membuat giliran tersebut |

1261| `sessionTitle` | Menetapkan judul sesi, dengan efek yang sama seperti `/rename`. Gunakan untuk memberi nama sesi secara otomatis dari folder peluncuran, cabang git, atau nama worktree. Berlaku ketika `source` adalah `"startup"`, `"resume"`, atau `"fork"`; diabaikan pada `"clear"` dan `"compact"` |1243| `sessionTitle` | Mengatur judul sesi, dengan efek yang sama seperti `/rename`. Gunakan untuk memberi nama sesi secara otomatis dari folder peluncuran, branch git, atau nama worktree. Berlaku saat `source` bernilai `"startup"`, `"resume"`, atau `"fork"`; diabaikan pada `"clear"` dan `"compact"` |

1262| `watchPaths` | Array path absolut untuk menonton untuk event [FileChanged](#filechanged) selama sesi ini |1244| `watchPaths` | Array path absolut yang dipantau untuk event [FileChanged](#filechanged) selama sesi ini |

1263| `reloadSkills` | Boolean. Ketika `true`, Claude Code memindai ulang direktori [skill](/docs/id/skills) dan command setelah SessionStart hooks selesai, jadi skills yang diinstal hook tersedia dalam sesi yang sama, dimulai dengan prompt pertama |1245| `reloadSkills` | Boolean. Saat `true`, Claude Code memindai ulang direktori [skill](/docs/id/skills) dan perintah setelah hook SessionStart selesai, sehingga skill yang diinstal oleh hook tersedia dalam sesi yang sama, mulai dari prompt pertama |

1264 1246 

1265```json theme={null}1247```json theme={null}

1266{1248{


1272}1254}

1273```1255```

1274 1256 

1275Karena plain stdout sudah mencapai Claude untuk event ini, hook yang hanya memuat konteks dapat mencetak ke stdout secara langsung tanpa membangun JSON. Gunakan bentuk JSON ketika Anda perlu menggabungkan konteks dengan bidang lain seperti `sessionTitle`.1257Karena stdout biasa sudah sampai ke Claude untuk event ini, hook yang hanya memuat konteks dapat langsung mencetak ke stdout tanpa membangun JSON. Gunakan bentuk JSON saat Anda perlu menggabungkan konteks dengan kolom lain seperti `sessionTitle`.

1276 1258 

1277Gunakan `reloadSkills` ketika SessionStart hook menginstal atau memperbarui skills. Penemuan skill biasanya berjalan sebelum SessionStart hooks selesai, jadi file yang ditulis hook ke `~/.claude/skills/` atau `.claude/skills/` tidak akan muncul sampai sesi berikutnya. Contoh ini menyinkronkan repositori skills bersama dan meminta pemindaian ulang:1259Gunakan `reloadSkills` saat hook SessionStart menginstal atau memperbarui skill. Penemuan skill biasanya berjalan sebelum hook SessionStart selesai, sehingga file yang ditulis hook ke `~/.claude/skills/` atau `.claude/skills/` jika tidak demikian hanya akan muncul di sesi berikutnya. Contoh ini menyinkronkan repositori skill bersama dan meminta pemindaian ulang:

1278 1260 

1279```bash theme={null}1261```bash theme={null}

1280#!/bin/bash1262#!/bin/bash


1285echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1267echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1286```1268```

1287 1269 

1288URL repositori adalah placeholder; gantikan dengan repositori skills Anda sendiri. Dengan placeholder, clone gagal dan mencetak pesan `fatal:` ke stderr. Stderr dari SessionStart hook yang keluar 0 hanya informatif, jadi permintaan `reloadSkills` masih berlaku.1270URL repositori tersebut adalah placeholder; ganti dengan repositori skill Anda sendiri. Dengan placeholder tersebut, clone gagal dan mencetak pesan `fatal:` ke stderr. Stderr dari hook SessionStart yang keluar dengan 0 hanya bersifat informasional, sehingga permintaan `reloadSkills` tetap berlaku.

1289 1271 

1290<h4 id="persist-environment-variables">1272<h4 id="persist-environment-variables">

1291 Persist environment variables1273 Mempertahankan environment variable

1292</h4>1274</h4>

1293 1275 

1294SessionStart hooks memiliki akses ke variabel lingkungan `CLAUDE_ENV_FILE`, yang menyediakan path file di mana Anda dapat mempertahankan variabel lingkungan untuk perintah Bash berikutnya.1276Hook SessionStart memiliki akses ke environment variable `CLAUDE_ENV_FILE`, yang menyediakan path file tempat Anda dapat mempertahankan environment variable untuk perintah Bash berikutnya.

1295 1277 

1296Untuk menetapkan variabel lingkungan individual, tulis pernyataan `export` ke `CLAUDE_ENV_FILE`. Gunakan append (`>>`) untuk mempertahankan variabel yang ditetapkan oleh hooks lain:1278Untuk mengatur environment variable satu per satu, tulis pernyataan `export` ke `CLAUDE_ENV_FILE`. Gunakan append (`>>`) untuk mempertahankan variabel yang diatur oleh hook lain:

1297 1279 

1298```bash theme={null}1280```bash theme={null}

1299#!/bin/bash1281#!/bin/bash


1307exit 01289exit 0

1308```1290```

1309 1291 

1310Untuk menangkap semua perubahan lingkungan dari perintah setup, bandingkan variabel yang diekspor sebelum dan sesudah:1292Untuk menangkap semua perubahan lingkungan dari perintah penyiapan, bandingkan variabel yang diekspor sebelum dan sesudahnya:

1311 1293 

1312```bash theme={null}1294```bash theme={null}

1313#!/bin/bash1295#!/bin/bash

1314 1296 

1315ENV_BEFORE=$(export -p | sort)1297ENV_BEFORE=$(export -p | sort)

1316 1298 

1317# Jalankan perintah setup Anda yang memodifikasi lingkungan1299# Run your setup commands that modify the environment

1318source ~/.nvm/nvm.sh1300source ~/.nvm/nvm.sh

1319nvm use 201301nvm use 20

1320 1302 


1327```1309```

1328 1310 

1329<Note>1311<Note>

1330 `CLAUDE_ENV_FILE` tersedia untuk SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged), dan [FileChanged](#filechanged) hooks. Tipe hook lainnya tidak memiliki akses ke variabel ini.1312 `CLAUDE_ENV_FILE` tersedia untuk hook SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged), dan [FileChanged](#filechanged). Jenis hook lain tidak memiliki akses ke variabel ini.

1331</Note>1313</Note>

1332 1314 

1333<h3 id="setup">1315<h3 id="setup">

1334 Setup1316 Setup

1335</h3>1317</h3>

1336 1318 

1337Dijalankan hanya ketika Anda meluncurkan Claude Code dengan `--init-only`, atau dengan `--init` atau `--maintenance` dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Itu tidak dijalankan pada startup normal. Gunakan untuk instalasi dependensi satu kali atau pembersihan terjadwal yang Anda picu secara eksplisit dari CI atau skrip, terpisah dari startup sesi normal. Untuk inisialisasi per-sesi, gunakan [SessionStart](#sessionstart) sebagai gantinya.1319Hanya dipicu saat Anda meluncurkan Claude Code dengan `--init-only`, atau dengan `--init` atau `--maintenance` dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Event ini tidak dipicu pada startup normal. Gunakan untuk instalasi dependensi satu kali atau pembersihan terjadwal yang Anda picu secara eksplisit dari CI atau skrip, terpisah dari startup sesi normal. Untuk inisialisasi per sesi, gunakan [SessionStart](#sessionstart) sebagai gantinya.

1338 1320 

1339Nilai matcher sesuai dengan flag CLI yang memicu hook:1321Nilai matcher berkaitan dengan flag CLI yang memicu hook:

1340 1322 

1341| Matcher | Kapan dijalankan |1323| Matcher | Kapan dipicu |

1342| :- | :- |1324| :- | :- |

1343| `init` | `claude --init-only` atau `claude -p --init` |1325| `init` | `claude --init-only` atau `claude -p --init` |

1344| `maintenance` | `claude -p --maintenance` |1326| `maintenance` | `claude -p --maintenance` |

1345 1327 

1346Ketika Anda menjalankan `claude --init-only`, Claude Code menjalankan Setup hooks dan SessionStart hooks dengan matcher `startup`, kemudian keluar tanpa memulai percakapan.1328Saat Anda menjalankan `claude --init-only`, Claude Code menjalankan hook Setup dan hook `SessionStart` dengan matcher `startup`, lalu keluar tanpa memulai percakapan.

1347 1329 

1348Ketika Anda memulai atau melanjutkan percakapan dengan `-p`, Anda juga perlu menyediakan prompt, sebagai argumen atau piped di stdin. Anda dapat melewati prompt ketika hook `SessionStart` menyediakan [`initialUserMessage`](#sessionstart-decision-control) atau ketika Anda melanjutkan sesi dengan [deferred tool call](#defer-a-tool-call-for-later).1330Saat Anda memulai atau melanjutkan percakapan dengan `-p`, Anda juga perlu memberikan prompt, sebagai argumen atau melalui pipe ke stdin. Anda dapat melewatkan prompt saat hook `SessionStart` menyediakan [`initialUserMessage`](#sessionstart-decision-control) atau saat Anda melanjutkan sesi dengan [panggilan tool yang ditunda](#defer-a-tool-call-for-later).

1349 1331 

1350Pada kesuksesan, `--init-only` tidak mencetak apa pun ke terminal. Untuk mengkonfirmasi hooks dijalankan, mulai dengan `claude --debug-file <path> --init-only`, gantikan `<path>` dengan lokasi file log, dan periksa log untuk entri Setup dan SessionStart hook.1332Jika berhasil, `--init-only` tidak mencetak apa pun ke terminal. Untuk memastikan hook berjalan, mulai dengan `claude --debug-file <path> --init-only`, ganti `<path>` dengan lokasi file log, lalu periksa log untuk entri hook Setup dan SessionStart.

1351 1333 

1352Karena Setup tidak dijalankan pada setiap peluncuran, plugin yang memerlukan dependensi yang diinstal tidak dapat mengandalkan Setup saja. Pola praktis adalah memeriksa dependensi pada penggunaan pertama dan menginstal jika tidak ada, misalnya hook atau skill yang menguji `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/docs/id/plugins/components#path-variables-and-persistent-data) untuk tempat menyimpan dependensi yang diinstal. Jika Anda mendistribusikan plugin Anda melalui marketplace, Anda mungkin tidak memerlukan pola ini: Claude Code [menginstal dependensi paket Node.js yang memenuhi syarat secara otomatis](/docs/id/plugins/loading#node-js-package-dependencies) ketika itu cache plugin.1334Karena Setup tidak dipicu pada setiap peluncuran, plugin yang memerlukan dependensi terinstal tidak dapat hanya mengandalkan Setup. Pola praktisnya adalah memeriksa dependensi saat penggunaan pertama dan menginstalnya jika tidak ada, misalnya hook atau skill yang memeriksa `${CLAUDE_PLUGIN_DATA}/node_modules` dan menjalankan `npm install` jika tidak ada. Lihat [direktori data persisten](/docs/id/plugins/components#path-variables-and-persistent-data) untuk lokasi menyimpan dependensi yang diinstal. Jika Anda mendistribusikan plugin melalui marketplace, Anda mungkin tidak memerlukan pola ini: Claude Code [menginstal dependensi paket Node.js yang memenuhi syarat secara otomatis](/docs/id/plugins/loading#node-js-package-dependencies) saat melakukan cache pada plugin.

1353 1335 

1354<h4 id="setup-input">1336<h4 id="setup-input">

1355 Setup input1337 Input Setup

1356</h4>1338</h4>

1357 1339 

1358Selain [bidang input umum](#common-input-fields), Setup hooks menerima bidang `trigger` yang diatur ke `"init"` atau `"maintenance"`:1340Selain [kolom input umum](#common-input-fields), hook Setup menerima kolom `trigger` yang bernilai `"init"` atau `"maintenance"`:

1359 1341 

1360```json theme={null}1342```json theme={null}

1361{1343{


1368```1350```

1369 1351 

1370<h4 id="setup-decision-control">1352<h4 id="setup-decision-control">

1371 Setup decision control1353 Kontrol keputusan Setup

1372</h4>1354</h4>

1373 1355 

1374Setup hooks tidak dapat memblokir; eksekusi berlanjut pada kode keluar apa pun. Pada setiap kode keluar, Claude Code membuang [bidang output JSON](#json-output) dari Setup hook, seperti `systemMessage`, `continue`, dan `hookSpecificOutput.additionalContext`. Dengan `-p`, stdout, stderr, dan kode keluar Setup hook muncul dalam output run hanya sebagai [`hook_response` events](/docs/id/headless#read-session-metadata) ketika Anda meluncurkan dengan `--output-format stream-json --verbose`.1356Hook Setup tidak dapat memblokir; eksekusi berlanjut pada exit code apa pun. Pada setiap exit code, Claude Code membuang [kolom output JSON](#json-output) hook Setup, seperti `systemMessage`, `continue`, dan `hookSpecificOutput.additionalContext`. Dengan `-p`, stdout, stderr, dan exit code hook Setup muncul dalam output run hanya sebagai [event `hook_response`](/docs/id/headless#read-session-metadata) saat Anda meluncurkan dengan `--output-format stream-json --verbose`.

1375 1357 

1376Setup hooks memiliki akses ke `CLAUDE_ENV_FILE`. Variabel yang ditulis ke file itu bertahan ke perintah Bash berikutnya untuk sesi, sama seperti dalam [SessionStart hooks](#persist-environment-variables). Hanya hooks `type: "command"` yang dijalankan pada `Setup`. Hook `type: "mcp_tool"` pada `Setup` selalu dilewati, seperti dijelaskan di bawah [MCP tool hook fields](#mcp-tool-hook-fields).1358Hook Setup memiliki akses ke `CLAUDE_ENV_FILE`. Variabel yang ditulis ke file tersebut dipertahankan untuk perintah Bash berikutnya dalam sesi, sama seperti pada [hook SessionStart](#persist-environment-variables). Hanya hook `type: "command"` yang berjalan pada `Setup`. Hook `type: "mcp_tool"` pada `Setup` selalu dilewati, seperti dijelaskan di [kolom hook tool MCP](#mcp-tool-hook-fields).

1377 1359 

1378<h3 id="instructionsloaded">1360<h3 id="instructionsloaded">

1379 InstructionsLoaded1361 InstructionsLoaded

1380</h3>1362</h3>

1381 1363 

1382Dijalankan ketika file `CLAUDE.md` atau `.claude/rules/*.md` dimuat ke dalam konteks. Event ini dijalankan saat startup sesi untuk file yang dimuat dengan eager dan lagi nanti ketika file dimuat dengan lazy, misalnya ketika Claude mengakses subdirektori yang berisi `CLAUDE.md` bersarang atau ketika aturan bersyarat dengan frontmatter `paths:` cocok. Hook tidak mendukung pemblokiran atau kontrol keputusan. Itu dijalankan secara asinkron untuk tujuan observabilitas.1364Dipicu saat file `CLAUDE.md` atau `.claude/rules/*.md` dimuat ke dalam konteks. Event ini dipicu di awal sesi untuk file yang dimuat secara eager dan dipicu lagi nanti saat file dimuat secara lazy, misalnya saat Claude mengakses subdirektori yang berisi `CLAUDE.md` bersarang atau saat aturan kondisional dengan frontmatter `paths:` cocok. Hook ini tidak mendukung pemblokiran atau kontrol keputusan. Hook ini berjalan secara asinkron untuk tujuan observabilitas.

1383 1365 

1384Event ini tidak dijalankan ketika Claude [membaca `AGENTS.md` secara langsung](/docs/id/memory#agents-md) melalui pengaturan **Project instructions**. Itu dijalankan ketika `CLAUDE.md` mengimpor `AGENTS.md` Anda, dengan `load_reason` diatur ke `include` seperti untuk file yang diimpor lainnya, dan ketika `CLAUDE.md` adalah symlink ke itu, sebagai load `CLAUDE.md` normal.1366Event ini tidak dipicu saat Claude [membaca `AGENTS.md` secara langsung](/docs/id/memory#agents-md) melalui pengaturan **Project instructions**. Event ini dipicu saat `CLAUDE.md` mengimpor `AGENTS.md` Anda, dengan `load_reason` diatur ke `include` seperti untuk file impor lainnya, dan saat `CLAUDE.md` adalah symlink ke file tersebut, sebagai pemuatan `CLAUDE.md` biasa.

1385 1367 

1386Matcher dijalankan terhadap `load_reason`. Misalnya, gunakan `"matcher": "session_start"` untuk dijalankan hanya untuk file yang dimuat saat startup sesi, atau `"matcher": "path_glob_match|nested_traversal"` untuk dijalankan hanya untuk lazy loads.1368Matcher dijalankan terhadap `load_reason`. Misalnya, gunakan `"matcher": "session_start"` agar hanya dipicu untuk file yang dimuat di awal sesi, atau `"matcher": "path_glob_match|nested_traversal"` agar hanya dipicu untuk pemuatan lazy.

1387 1369 

1388<h4 id="instructionsloaded-input">1370<h4 id="instructionsloaded-input">

1389 InstructionsLoaded input1371 Input InstructionsLoaded

1390</h4>1372</h4>

1391 1373 

1392Selain [bidang input umum](#common-input-fields), InstructionsLoaded hooks menerima bidang-bidang ini:1374Selain [kolom input umum](#common-input-fields), hook InstructionsLoaded menerima kolom-kolom berikut:

1393 1375 

1394| Bidang | Deskripsi |1376| Kolom | Deskripsi |

1395| :- | :- |1377| :- | :- |

1396| `file_path` | Path absolut ke file instruksi yang dimuat |1378| `file_path` | Path absolut ke file instruksi yang dimuat |

1397| `memory_type` | Cakupan file: `"User"`, `"Project"`, `"Local"`, atau `"Managed"` |1379| `memory_type` | Cakupan file: `"User"`, `"Project"`, `"Local"`, atau `"Managed"` |

1398| `load_reason` | Mengapa file dimuat: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"`, atau `"compact"`. Nilai `"compact"` dijalankan ketika file instruksi dimuat ulang setelah event compaction |1380| `load_reason` | Alasan file dimuat: `"session_start"`, `"nested_traversal"`, `"path_glob_match"`, `"include"`, atau `"compact"`. Nilai `"compact"` dipicu saat file instruksi dimuat ulang setelah event compaction |

1399| `globs` | Pola glob path dari frontmatter `paths:` file, jika ada. Hadir hanya untuk load `path_glob_match` |1381| `globs` | Pola glob path dari frontmatter `paths:` file, jika ada. Hanya ada untuk pemuatan `path_glob_match` |

1400| `trigger_file_path` | Path ke file yang akses memicu load ini, untuk lazy loads |1382| `trigger_file_path` | Path ke file yang aksesnya memicu pemuatan ini, untuk pemuatan lazy |

1401| `parent_file_path` | Path ke file instruksi induk yang menyertakan ini, untuk load `include` |1383| `parent_file_path` | Path ke file instruksi induk yang menyertakan file ini, untuk pemuatan `include` |

1402 1384 

1403```json theme={null}1385```json theme={null}

1404{1386{


1413```1395```

1414 1396 

1415<h4 id="instructionsloaded-decision-control">1397<h4 id="instructionsloaded-decision-control">

1416 InstructionsLoaded decision control1398 Kontrol keputusan InstructionsLoaded

1417</h4>1399</h4>

1418 1400 

1419InstructionsLoaded hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir atau memodifikasi pemuatan instruksi. Claude Code membuang [bidang output JSON](#json-output) mereka, seperti `systemMessage` dan `continue`. Gunakan event ini untuk audit logging, compliance tracking, atau observabilitas.1401Hook InstructionsLoaded tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir atau memodifikasi pemuatan instruksi. Claude Code membuang [kolom output JSON](#json-output) hook ini, seperti `systemMessage` dan `continue`. Gunakan event ini untuk log audit, pelacakan kepatuhan, atau observabilitas.

1420 1402 

1421<h3 id="userpromptsubmit">1403<h3 id="userpromptsubmit">

1422 UserPromptSubmit1404 UserPromptSubmit

1423</h3>1405</h3>

1424 1406 

1425Dijalankan ketika pengguna mengirimkan prompt, sebelum Claude memproses. Ini memungkinkan Anda menambahkan konteks tambahan berdasarkan prompt/percakapan, memvalidasi prompts, atau memblokir jenis prompts tertentu.1407Berjalan saat pengguna mengirimkan prompt, sebelum Claude memprosesnya. Ini memungkinkan Anda

1408menambahkan konteks tambahan berdasarkan prompt/percakapan, memvalidasi prompt, atau

1409memblokir jenis prompt tertentu.

1426 1410 

1427Hooks `UserPromptSubmit` memiliki timeout default 30 detik untuk tipe `command`, `http`, dan `mcp_tool`, lebih pendek dari default 600 detik untuk tipe tersebut pada event lain. Karena hook ini dijalankan sebelum setiap prompt dan memblokir pemrosesan model sampai selesai, hook yang macet menghentikan sesi. Jika hook Anda memerlukan lebih banyak waktu, atur bidang `timeout` dalam entri hook.1411Hook `UserPromptSubmit` memiliki timeout default 30 detik untuk jenis `command`, `http`, dan `mcp_tool`, lebih singkat daripada default 600 detik untuk jenis-jenis tersebut pada sebagian besar event lain. Karena hook ini berjalan sebelum setiap prompt dan memblokir pemrosesan model hingga selesai, hook yang macet akan menghentikan sesi. Jika hook Anda memerlukan waktu lebih lama, atur kolom `timeout` dalam entri hook.

1428 1412 

1429Hook callback [Agent SDK](/docs/id/agent-sdk/hooks) pada `UserPromptSubmit` yang mencapai timeout-nya memblokir prompt dengan pesan yang menamai hook dan timeout, karena callback di sana dapat bertindak sebagai policy gate yang tidak boleh gagal terbuka. Sesi berlanjut. Sebelum v2.1.208, timeout callback pada event itu mengakhiri giliran dengan kesalahan eksekusi.1413Selain hook perintah yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), hook perintah, HTTP, atau tool MCP `UserPromptSubmit` yang mencapai timeout-nya akan dibatalkan dan output-nya, termasuk `additionalContext` apa pun, dibuang. Prompt tetap sampai ke Claude tanpa konteks tersebut. Transkrip menampilkan pemberitahuan yang menyebutkan nama hook, timeout yang terpicu, dan bahwa output-nya dibuang.

1430 1414 

1431Selain command hook yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), hook command, HTTP, atau MCP tool `UserPromptSubmit` yang mencapai timeout-nya dibatalkan dan output-nya, termasuk `additionalContext` apa pun, dibuang. Prompt masih mencapai Claude tanpa konteks itu. Transkrip menampilkan pemberitahuan yang menamai hook, timeout yang dijalankan, dan bahwa output dibuang.1415[Hook callback Agent SDK](/docs/id/agent-sdk/hooks) pada `UserPromptSubmit` yang mencapai timeout-nya memblokir prompt dengan pesan yang menyebutkan nama hook dan timeout-nya, karena callback di sana dapat berfungsi sebagai gerbang kebijakan yang tidak boleh gagal secara terbuka. Sesi tetap berlanjut. Sebelum v2.1.208, timeout callback pada event tersebut mengakhiri giliran dengan error eksekusi.

1432 1416 

1433<h4 id="userpromptsubmit-input">1417<h4 id="userpromptsubmit-input">

1434 UserPromptSubmit input1418 Input UserPromptSubmit

1435</h4>1419</h4>

1436 1420 

1437Selain [bidang input umum](#common-input-fields), UserPromptSubmit hooks menerima bidang `prompt` yang berisi teks yang dikirimkan pengguna. Konten yang ditempel yang diciutkan menjadi placeholder `[Pasted text #N]` tiba dalam keadaan diperluas di tempatnya. Dalam sesi di mana Claude Code [menandai teks yang ditempel untuk Claude](/docs/id/terminal-config#how-claude-treats-pasted-text), konten yang diperluas itu berada di antara baris `<pasted_content id="…">` dan baris `</pasted_content id="…">`, jadi perhitungkan baris-baris tersebut jika hook Anda mengurai prompt.1421Selain [kolom input umum](#common-input-fields), hook UserPromptSubmit menerima kolom `prompt` yang berisi teks yang dikirimkan pengguna. Konten tempelan yang diciutkan menjadi placeholder `[Pasted text #N]` tiba dalam keadaan diperluas di tempatnya. Dalam sesi tempat Claude Code [menandai teks tempelan untuk Claude](/docs/id/terminal-config#how-claude-treats-pasted-text), konten yang diperluas tersebut berada di antara baris `<pasted_content id="…">` dan baris `</pasted_content id="…">`, jadi perhitungkan baris-baris tersebut jika hook Anda mengurai prompt.

1422 

1423Hook UserPromptSubmit juga menerima `session_title` saat sesi memiliki judul kustom, dengan arti yang sama seperti [kolom `session_title` SessionStart](#sessionstart-input).

1438 1424 

1439```json theme={null}1425```json theme={null}

1440{1426{


1448```1434```

1449 1435 

1450<h4 id="userpromptsubmit-decision-control">1436<h4 id="userpromptsubmit-decision-control">

1451 UserPromptSubmit decision control1437 Kontrol keputusan UserPromptSubmit

1452</h4>1438</h4>

1453 1439 

1454Hooks `UserPromptSubmit` dapat mengontrol apakah prompt pengguna diproses dan menambahkan konteks. Semua [bidang output JSON](#json-output) tersedia.1440Hook `UserPromptSubmit` dapat mengontrol apakah prompt pengguna diproses dan menambahkan konteks. Semua [kolom output JSON](#json-output) tersedia.

1455 1441 

1456Ada dua cara untuk menambahkan konteks ke percakapan pada kode keluar 0:1442Ada dua cara untuk menambahkan konteks ke percakapan pada exit code 0:

1457 1443 

1458* **Plain text stdout**: Claude Code menambahkan stdout yang [diperlakukan sebagai teks biasa](#exit-code-0) ke konteks Claude1444* **Stdout teks biasa**: Claude Code menambahkan stdout yang [diperlakukannya sebagai teks biasa](#exit-code-0) ke konteks Claude

1459* **JSON dengan `additionalContext`**: gunakan format JSON di bawah untuk kontrol lebih. Bidang `additionalContext` ditambahkan sebagai konteks1445* **JSON dengan `additionalContext`**: gunakan format JSON di bawah ini untuk kontrol lebih. Kolom `additionalContext` ditambahkan sebagai konteks

1460 1446 

1461Tidak ada channel yang menghasilkan entri transkrip yang terlihat. Plain stdout dan nilai `additionalContext` masing-masing disuntikkan sebagai pengingat sistem yang dimulai dengan nama hook; Claude membaca keduanya. Untuk mengkonfirmasi pengiriman, periksa [debug log](#debug-hooks).1447Kedua saluran tersebut tidak menghasilkan entri transkrip yang terlihat. Stdout biasa dan nilai `additionalContext` masing-masing disisipkan sebagai system reminder yang diawali dengan nama hook; Claude membaca keduanya. Untuk memastikan pengirimannya, periksa [log debug](#debug-hooks).

1462 1448 

1463Untuk memblokir prompt, kembalikan objek JSON dengan `decision` diatur ke `"block"`:1449Untuk memblokir prompt, kembalikan objek JSON dengan `decision` diatur ke `"block"`:

1464 1450 

1465| Bidang | Deskripsi |1451| Kolom | Deskripsi |

1466| :- | :- |1452| :- | :- |

1467| `decision` | `"block"` mencegah prompt diproses dan menghapusnya dari konteks. Hilangkan untuk mengizinkan prompt dilanjutkan |1453| `decision` | `"block"` menghentikan prompt sebelum sampai ke Claude. Hilangkan agar prompt dapat berlanjut |

1468| `reason` | Ditampilkan ke pengguna saat `decision` adalah `"block"`. Tidak ditambahkan ke konteks |1454| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"`. Tidak ditambahkan ke konteks |

1469| `additionalContext` | String ditambahkan ke konteks Claude bersama prompt yang dikirimkan. Lihat [Add context for Claude](#add-context-for-claude) |1455| `additionalContext` | String yang ditambahkan ke konteks Claude bersama prompt yang dikirimkan. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

1470| `sessionTitle` | Menetapkan judul sesi. Gunakan untuk memberi nama sesi secara otomatis berdasarkan konten prompt |1456| `sessionTitle` | Mengatur judul sesi. Gunakan untuk memberi nama sesi secara otomatis berdasarkan konten prompt |

1471| `suppressOriginalPrompt` | Jika `true` saat `decision` adalah `"block"`, menghilangkan teks prompt asli dari pesan blok yang ditampilkan ke pengguna |1457| `suppressOriginalPrompt` | Jika `true` saat hook memblokir prompt, teks prompt tidak disertakan dalam pesan blokir. Lihat [Apa yang ditinggalkan oleh prompt yang diblokir](#what-a-blocked-prompt-leaves-behind) |

1472 1458 

1473Hook yang memblokir dengan keluar 2 merutekan dengan cara yang sama seperti `reason`: pesan blok menampilkan teks stderr ke pengguna, dan itu tidak ditambahkan ke konteks.1459Hook yang memblokir dengan keluar dengan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan blokir menampilkan teks stderr kepada pengguna, dan teks tersebut tidak ditambahkan ke konteks.

1474 1460 

1475```json theme={null}1461```json theme={null}

1476{1462{


1479 "hookSpecificOutput": {1465 "hookSpecificOutput": {

1480 "hookEventName": "UserPromptSubmit",1466 "hookEventName": "UserPromptSubmit",

1481 "additionalContext": "My additional context here",1467 "additionalContext": "My additional context here",

1482 "sessionTitle": "My session title"1468 "sessionTitle": "My session title",

1469 "suppressOriginalPrompt": true

1483 }1470 }

1484}1471}

1485```1472```

1486 1473 

1474<h4 id="what-a-blocked-prompt-leaves-behind">

1475 Apa yang ditinggalkan oleh prompt yang diblokir

1476</h4>

1477 

1478Prompt yang diblokir tidak pernah sampai ke Claude, tetapi teksnya tidak dihapus dari semua tempat. Secara default, pesan blokir yang ditampilkan kepada pengguna diakhiri dengan `Original prompt:` diikuti teks yang dikirimkan, dan Claude Code menulis pesan tersebut ke file transkrip sesi di disk. Agar teks tidak disertakan dalam pesan, cetak JSON dengan `"suppressOriginalPrompt": true` di dalam `hookSpecificOutput`. Ini berfungsi baik saat hook memblokir dengan `decision: "block"` maupun dengan keluar dengan kode 2. Hook exit-2 yang tidak mencetak JSON selalu menyertakan teks prompt dalam pesan blokirnya.

1479 

1480`suppressOriginalPrompt` hanya mengubah pesan blokir. Teks yang dikirimkan masih dapat muncul di file lokal seperti transkrip sesi dan riwayat prompt Anda, jadi hook pemblokiran bukan cara untuk menjauhkan rahasia dari disk. Untuk membatasi atau menghapus file-file tersebut, lihat [Penyimpanan plaintext](/docs/id/claude-directory#plaintext-storage) dan [Menghapus data lokal](/docs/id/claude-directory#clear-local-data).

1481 

1487<h3 id="userpromptexpansion">1482<h3 id="userpromptexpansion">

1488 UserPromptExpansion1483 UserPromptExpansion

1489</h3>1484</h3>

1490 1485 

1491Dijalankan ketika perintah slash yang diketik pengguna berkembang menjadi prompt sebelum mencapai Claude. Gunakan ini untuk memblokir perintah tertentu dari invokasi langsung, menyuntikkan konteks untuk skill tertentu, atau mencatat perintah mana yang diinvokasi pengguna. Misalnya, hook yang cocok dengan `deploy` dapat memblokir `/deploy` kecuali file persetujuan ada, atau hook yang cocok dengan skill review dapat menambahkan checklist review tim sebagai `additionalContext`.1486Berjalan saat perintah yang diketik pengguna diperluas menjadi prompt sebelum sampai ke Claude. Gunakan ini untuk memblokir perintah tertentu agar tidak dipanggil secara langsung, menyisipkan konteks untuk skill tertentu, atau mencatat perintah mana yang dipanggil pengguna. Misalnya, hook yang cocok dengan `deploy` dapat memblokir `/deploy` kecuali ada file persetujuan, atau hook yang cocok dengan skill review dapat menambahkan daftar periksa review tim sebagai `additionalContext`.

1492 1487 

1493Event ini mencakup path yang `PreToolUse` tidak: hook `PreToolUse` yang cocok dengan tool `Skill` hanya dijalankan ketika Claude memanggil tool, tetapi mengetik `/skillname` secara langsung melewati `PreToolUse`. `UserPromptExpansion` dijalankan pada path langsung itu.1488Event ini mencakup jalur yang tidak dicakup `PreToolUse`: hook `PreToolUse` yang cocok dengan tool `Skill` hanya dipicu saat Claude memanggil tool tersebut, tetapi mengetik `/skillname` secara langsung melewati `PreToolUse`. `UserPromptExpansion` dipicu pada jalur langsung tersebut.

1494 1489 

1495Cocok pada `command_name`. Biarkan matcher kosong untuk dijalankan pada setiap slash command prompt-type.1490Dicocokkan dengan `command_name`. Biarkan matcher kosong agar dipicu pada setiap perintah bertipe prompt.

1496 1491 

1497<h4 id="userpromptexpansion-input">1492<h4 id="userpromptexpansion-input">

1498 UserPromptExpansion input1493 Input UserPromptExpansion

1499</h4>1494</h4>

1500 1495 

1501Selain [bidang input umum](#common-input-fields), UserPromptExpansion hooks menerima `expansion_type`, `command_name`, `command_args`, `command_source`, dan string `prompt` asli. Bidang `expansion_type` adalah `slash_command` untuk skill dan custom commands, atau `mcp_prompt` untuk MCP server prompts.1496Selain [kolom input umum](#common-input-fields), hook UserPromptExpansion menerima `expansion_type`, `command_name`, `command_args`, `command_source`, dan string `prompt` asli. Kolom `expansion_type` bernilai `slash_command` untuk skill dan perintah kustom, atau `mcp_prompt` untuk prompt server MCP.

1502 1497 

1503```json theme={null}1498```json theme={null}

1504{1499{


1516```1511```

1517 1512 

1518<h4 id="userpromptexpansion-decision-control">1513<h4 id="userpromptexpansion-decision-control">

1519 UserPromptExpansion decision control1514 Kontrol keputusan UserPromptExpansion

1520</h4>1515</h4>

1521 1516 

1522Hooks `UserPromptExpansion` dapat memblokir ekspansi atau menambahkan konteks. Semua [bidang output JSON](#json-output) tersedia.1517Hook `UserPromptExpansion` dapat memblokir perluasan atau menambahkan konteks. Semua [kolom output JSON](#json-output) tersedia.

1523 1518 

1524| Bidang | Deskripsi |1519| Kolom | Deskripsi |

1525| :- | :- |1520| :- | :- |

1526| `decision` | `"block"` mencegah slash command berkembang. Hilangkan untuk mengizinkannya dilanjutkan |1521| `decision` | `"block"` mencegah perintah diperluas. Hilangkan agar dapat berlanjut |

1527| `reason` | Ditampilkan ke pengguna saat `decision` adalah `"block"` |1522| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"` |

1528| `additionalContext` | String ditambahkan ke konteks Claude bersama prompt yang berkembang. Lihat [Add context for Claude](#add-context-for-claude) |1523| `additionalContext` | String yang ditambahkan ke konteks Claude bersama prompt yang diperluas. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

1529 1524 

1530Hook yang memblokir dengan keluar 2 merutekan dengan cara yang sama seperti `reason`: pesan blok menampilkan teks stderr ke pengguna.1525Hook yang memblokir dengan keluar dengan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan blokir menampilkan teks stderr kepada pengguna.

1531 1526 

1532```json theme={null}1527```json theme={null}

1533{1528{


1544 MessageDisplay1539 MessageDisplay

1545</h3>1540</h3>

1546 1541 

1547Dijalankan saat pesan asisten mengalir ke layar. Claude Code menampilkan pesan dalam kenaikan: setiap kali batch baris yang baru selesai siap untuk dirender, hook dijalankan sekali dengan baris-baris itu dan Claude Code merender teks pengganti hook di tempatnya. Pesan panjang menghasilkan beberapa panggilan; pesan pendek mungkin hanya menghasilkan satu.1542Berjalan saat pesan asisten di-stream ke layar. Claude Code menampilkan pesan secara bertahap: setiap kali sekelompok baris yang baru selesai siap dirender, hook berjalan sekali dengan baris-baris tersebut dan Claude Code merender teks pengganti dari hook di tempatnya. Pesan yang panjang menghasilkan beberapa panggilan; pesan yang pendek mungkin hanya menghasilkan satu.

1548 1543 

1549Gunakan MessageDisplay untuk:1544Gunakan MessageDisplay untuk:

1550 1545 

1551* menghapus markdown untuk tampilan minimal1546* menghapus markdown untuk tampilan minimal

1552* mengubah teks yang ditampilkan aplikasi Agent SDK kepada penggunanya1547* mengubah teks yang ditampilkan aplikasi Agent SDK kepada penggunanya

1553* menyensor API keys atau hostname internal dari respons Claude1548* menyamarkan kunci API atau hostname internal dari respons Claude

1554 1549 

1555Claude Code menahan setiap batch sampai hook Anda kembali, jadi jaga hook tetap cepat. Jika hook gagal atau timeout, Claude Code menampilkan teks asli. Timeout default untuk event ini adalah 10 detik; jika hook Anda memerlukan lebih banyak waktu, atur bidang `timeout` dalam entri hook.1550Claude Code menahan setiap kelompok hingga hook Anda mengembalikan hasil, jadi pastikan hook tetap cepat. Jika hook gagal atau mengalami timeout, Claude Code menampilkan teks asli. Timeout default untuk event ini adalah 10 detik; jika hook Anda memerlukan waktu lebih lama, atur kolom `timeout` dalam entri hook.

1556 1551 

1557MessageDisplay hanya untuk tampilan: teks pengganti hanya mengubah apa yang dirender di layar. Transkrip dan apa yang dilihat Claude menyimpan teks asli, jadi Claude tidak pernah melihat pengganti, dan mode verbose menampilkan asli. Hook menerima teks pesan asisten saja, jadi hasil tool dan teks yang Anda ketik dirender tanpa perubahan.1552MessageDisplay hanya untuk tampilan: teks pengganti hanya mengubah apa yang dirender di layar. Transkrip dan apa yang dilihat Claude tetap menggunakan teks asli, sehingga Claude tidak pernah melihat teks pengganti, dan mode verbose menampilkan teks asli. Hook hanya menerima teks pesan asisten, sehingga hasil tool dan teks yang Anda ketik dirender tanpa perubahan.

1558 1553 

1559MessageDisplay tidak mendukung matchers dan dijalankan untuk setiap pesan asisten yang mengalir teks; pesan tanpa teks, seperti respons hanya pemanggilan tool, tidak memicunya.1554MessageDisplay tidak mendukung matcher dan dipicu untuk setiap pesan asisten yang men-stream teks; pesan tanpa teks, seperti respons yang hanya berisi panggilan tool, tidak memicunya.

1560 1555 

1561Dalam run non-interaktif, termasuk kueri Agent SDK dan `claude -p`, MessageDisplay dijalankan sekali per pesan asisten alih-alih sekali per batch baris. Panggilan tunggal tiba setelah pesan selesai dan membawa teks pesan lengkap: `index` adalah `0`, `final` adalah `true`, dan `delta` menyimpan seluruh pesan. Hook yang mengumpulkan teks `delta` untuk setiap pesan menerima teks total yang sama dalam kedua mode.1556Dalam run non-interaktif, termasuk kueri Agent SDK dan `claude -p`, MessageDisplay berjalan sekali per pesan asisten, bukan sekali per kelompok baris. Panggilan tunggal tersebut tiba setelah pesan selesai dan membawa teks pesan lengkap: `index` bernilai `0`, `final` bernilai `true`, dan `delta` berisi seluruh pesan. Hook yang mengumpulkan teks `delta` untuk setiap pesan menerima total teks yang sama dalam kedua mode.

1562 1557 

1563<h4 id="messagedisplay-input">1558<h4 id="messagedisplay-input">

1564 MessageDisplay input1559 Input MessageDisplay

1565</h4>1560</h4>

1566 1561 

1567Selain [bidang input umum](#common-input-fields), MessageDisplay hooks menerima pengenal untuk giliran dan pesan, posisi panggilan ini dalam pesan, dan teks baru dalam `delta`. Batas batch tergantung pada bagaimana teks mengalir, jadi gunakan `index` dan `final` untuk melacak kemajuan melalui pesan daripada mengharapkan baris dikelompokkan dengan cara tertentu.1562Selain [kolom input umum](#common-input-fields), hook MessageDisplay menerima pengidentifikasi untuk giliran dan pesan, posisi panggilan ini dalam pesan, dan teks baru dalam `delta`. Batas kelompok bergantung pada cara teks di-stream, jadi gunakan `index` dan `final` untuk melacak kemajuan dalam sebuah pesan alih-alih mengharapkan baris dikelompokkan dengan cara tertentu.

1568 1563 

1569| Bidang | Deskripsi |1564| Kolom | Deskripsi |

1570| :- | :- |1565| :- | :- |

1571| `turn_id` | UUID dari giliran saat ini |1566| `turn_id` | UUID giliran saat ini |

1572| `message_id` | UUID dari pesan asisten yang ditampilkan. Stabil di setiap batch dari pesan yang sama. Ini bukan API `msg_…` id, jadi tidak dapat dikorelasikan dengan id pesan transkrip |1567| `message_id` | UUID pesan asisten yang sedang ditampilkan. Stabil di setiap kelompok dari pesan yang sama. Ini bukan id API `msg_…`, sehingga tidak dapat dikorelasikan dengan id pesan transkrip |

1573| `index` | Indeks berbasis nol dari batch ini dalam pesan |1568| `index` | Indeks berbasis nol dari kelompok ini dalam pesan |

1574| `final` | `true` pada batch terakhir pesan. Setiap pesan memiliki tepat satu batch final |1569| `final` | `true` pada kelompok terakhir pesan. Setiap pesan memiliki tepat satu kelompok terakhir |

1575| `delta` | Baris yang baru selesai sejak batch sebelumnya, termasuk newline yang mengakhiri. Selalu baris utuh, kecuali batch final yang mungkin berakhir di tengah baris. Dalam run interaktif, delta batch final kosong ketika pesan berakhir pada newline, jadi perlakukan `final`, bukan delta non-kosong, sebagai sinyal akhir pesan. Dalam run Agent SDK dan `claude -p`, panggilan tunggal membawa seluruh pesan |1570| `delta` | Baris-baris yang baru selesai sejak kelompok sebelumnya, termasuk baris baru penutup. Selalu berupa baris utuh, kecuali kelompok terakhir yang dapat berakhir di tengah baris. Dalam run interaktif, delta kelompok terakhir kosong saat pesan berakhir dengan baris baru, jadi perlakukan `final`, bukan delta yang tidak kosong, sebagai sinyal akhir pesan. Dalam run Agent SDK dan `claude -p`, panggilan tunggal membawa seluruh pesan |

1576 1571 

1577```json theme={null}1572```json theme={null}

1578{1573{


1589```1584```

1590 1585 

1591<h4 id="messagedisplay-output">1586<h4 id="messagedisplay-output">

1592 MessageDisplay output1587 Output MessageDisplay

1593</h4>1588</h4>

1594 1589 

1595Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, MessageDisplay hooks dapat mengembalikan `displayContent` untuk mengganti delta di layar:1590Selain [kolom output JSON](#json-output) yang tersedia untuk semua hook, hook MessageDisplay dapat mengembalikan `displayContent` untuk menggantikan delta di layar:

1596 1591 

1597| Bidang | Deskripsi |1592| Kolom | Deskripsi |

1598| :- | :- |1593| :- | :- |

1599| `displayContent` | Teks ditampilkan sebagai pengganti delta. Hilangkan untuk menampilkan asli |1594| `displayContent` | Teks yang ditampilkan sebagai pengganti delta. Hilangkan untuk menampilkan teks asli |

1600 1595 

1601MessageDisplay hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir pesan atau mengubah apa yang disimpan dalam transkrip atau dikirim ke Claude. Claude Code bertindak atas `displayContent` dari output JSON mereka dan membuang `systemMessage` dan `continue`.1596Hook MessageDisplay tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir pesan atau mengubah apa yang disimpan dalam transkrip atau dikirim ke Claude. Claude Code menindaklanjuti `displayContent` dari output JSON-nya dan membuang `systemMessage` dan `continue`.

1602 1597 

1603Contoh ini menghapus pemformatan markdown dari respons Claude untuk tampilan teks biasa. Skrip membaca setiap batch dari stdin, menghapus penanda bold dan backtick kode inline dari `delta`, dan mengembalikan hasilnya sebagai `displayContent`.1598Contoh ini menghapus format markdown dari respons Claude untuk tampilan teks biasa. Skrip membaca setiap kelompok dari stdin, menghapus penanda tebal dan backtick kode inline dari `delta`, lalu mengembalikan hasilnya sebagai `displayContent`.

1604 1599 

1605<Tabs>1600<Tabs>

1606 <Tab title="macOS/Linux">1601 <Tab title="macOS/Linux">

1607 Daftarkan command hook untuk event dalam file pengaturan Anda:1602 Daftarkan hook perintah untuk event ini di file pengaturan Anda:

1608 1603 

1609 ```json theme={null}1604 ```json theme={null}

1610 {1605 {


1624 }1619 }

1625 ```1620 ```

1626 1621 

1627 Simpan skrip ini ke `.claude/hooks/plain-display.sh` dalam proyek Anda dan buat dapat dieksekusi dengan `chmod +x`:1622 Simpan skrip ini ke `.claude/hooks/plain-display.sh` di proyek Anda dan jadikan dapat dieksekusi dengan `chmod +x`:

1628 1623 

1629 ```bash theme={null}1624 ```bash theme={null}

1630 #!/bin/bash1625 #!/bin/bash


1633 </Tab>1628 </Tab>

1634 1629 

1635 <Tab title="Windows (PowerShell)">1630 <Tab title="Windows (PowerShell)">

1636 Daftarkan command hook yang menjalankan skrip melalui PowerShell:1631 Daftarkan hook perintah yang menjalankan skrip melalui PowerShell:

1637 1632 

1638 ```json theme={null}1633 ```json theme={null}

1639 {1634 {


1659 }1654 }

1660 ```1655 ```

1661 1656 

1662 Flag `-NoProfile` melewati pemuatan profil PowerShell Anda sehingga hook dimulai cepat, dan `-ExecutionPolicy Bypass` memungkinkan PowerShell menjalankan file skrip lokal.1657 Flag `-NoProfile` melewatkan pemuatan profil PowerShell Anda sehingga hook dimulai dengan cepat, dan `-ExecutionPolicy Bypass` memungkinkan PowerShell menjalankan file skrip lokal.

1663 1658 

1664 Simpan skrip ini ke `.claude/hooks/plain-display.ps1` dalam proyek Anda:1659 Simpan skrip ini ke `.claude/hooks/plain-display.ps1` di proyek Anda:

1665 1660 

1666 ```powershell theme={null}1661 ```powershell theme={null}

1667 $batch = [Console]::In.ReadToEnd() | ConvertFrom-Json1662 $batch = [Console]::In.ReadToEnd() | ConvertFrom-Json


1676 </Tab>1671 </Tab>

1677</Tabs>1672</Tabs>

1678 1673 

1679Batch tanpa markdown melewati tanpa perubahan. Jika skrip gagal, misalnya karena `jq` hilang, Claude Code menampilkan teks asli dan mencatat kegagalan hanya dalam [output debug](#debug-hooks), bukan dalam sesi.1674Kelompok tanpa markdown diteruskan tanpa perubahan. Jika skrip gagal, misalnya karena `jq` tidak ada, Claude Code menampilkan teks asli dan mencatat kegagalan tersebut hanya di [output debug](#debug-hooks), bukan di sesi.

1680 1675 

1681<h3 id="pretooluse">1676<h3 id="pretooluse">

1682 PreToolUse1677 PreToolUse

1683</h3>1678</h3>

1684 1679 

1685Dijalankan setelah Claude membuat parameter tool dan sebelum memproses pemanggilan tool. Cocok pada nama tool apa pun kecuali `EndConversation`: tools bawaan seperti `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion`, dan `ExitPlanMode`, dan nama [MCP tool](#match-mcp-tools) apa pun.1680Berjalan setelah Claude membuat parameter tool dan sebelum memproses panggilan tool. Dicocokkan dengan nama tool apa pun kecuali `EndConversation`: tool bawaan seperti `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion`, dan `ExitPlanMode`, serta [nama tool MCP](#match-mcp-tools) apa pun.

1686 1681 

1687Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged) alih-alih mencocokkan file-editing tools berdasarkan nama. Tidak seperti PreToolUse, Claude Code menjalankan FileChanged hooks setelah perubahan, dan mereka tidak memiliki kontrol keputusan, jadi mereka tidak dapat memblokir penulisan.1682Untuk menjalankan hook saat file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged) alih-alih mencocokkan tool pengeditan file berdasarkan nama. Tidak seperti PreToolUse, Claude Code menjalankan hook FileChanged setelah perubahan terjadi, dan hook tersebut tidak memiliki kontrol keputusan, sehingga tidak dapat memblokir penulisan.

1688 1683 

1689<Warning>1684<Warning>

1690 PreToolUse hanya dijalankan ketika Claude memanggil tool. File yang Anda [referensikan dengan `@` dalam prompt Anda](/docs/id/common-workflows#reference-files-and-directories) ditambahkan tanpa pemanggilan tool apa pun: Claude Code menyisipkan konten mereka saat membangun prompt, jadi tidak ada hook PreToolUse yang dijalankan untuk mereka, termasuk hooks yang cocok dengan `Read`. Untuk memblokir path tertentu dari referensi `@`, gunakan [aturan deny `Read`](/docs/id/permissions#read-and-edit) sebagai gantinya.1685 PreToolUse hanya berjalan saat Claude memanggil tool. File yang Anda [referensikan dengan `@` dalam prompt](/docs/id/common-workflows#reference-files-and-directories) ditambahkan tanpa panggilan tool apa pun: Claude Code menyisipkan isinya saat membangun prompt, sehingga tidak ada hook PreToolUse yang dipicu untuk file tersebut, termasuk hook yang cocok dengan `Read`. Untuk memblokir path tertentu dari referensi `@`, gunakan [aturan deny `Read`](/docs/id/permissions#read-and-edit) sebagai gantinya.

1691 1686 

1692 PreToolUse juga tidak dijalankan untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).1687 PreToolUse juga tidak dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).

1693</Warning>1688</Warning>

1694 1689 

1695Gunakan [PreToolUse decision control](#pretooluse-decision-control) untuk mengizinkan, menolak, menanyakan, atau menunda pemanggilan tool.1690Gunakan [kontrol keputusan PreToolUse](#pretooluse-decision-control) untuk mengizinkan, menolak, meminta konfirmasi, atau menunda panggilan tool.

1696 1691 

1697Hook callback [Agent SDK](/docs/id/agent-sdk/hooks) pada `PreToolUse` yang melampaui timeout-nya memblokir pemanggilan tool, dan Claude menerima hasil kesalahan yang menamai timeout. Penolakan eksplisit yang dikembalikan oleh hook lain masih mengambil prioritas.1692[Hook callback Agent SDK](/docs/id/agent-sdk/hooks) pada `PreToolUse` yang melebihi timeout-nya memblokir panggilan tool, dan Claude menerima hasil error yang menyebutkan timeout tersebut. Deny eksplisit yang dikembalikan oleh hook lain tetap diutamakan.

1698 1693 

1699<h4 id="pretooluse-input">1694<h4 id="pretooluse-input">

1700 PreToolUse input1695 Input PreToolUse

1701</h4>1696</h4>

1702 1697 

1703Selain [bidang input umum](#common-input-fields), PreToolUse hooks menerima `tool_name`, `tool_input`, dan `tool_use_id`.1698Selain [kolom input umum](#common-input-fields), hook PreToolUse menerima `tool_name`, `tool_input`, dan `tool_use_id`.

1704 1699 

1705Untuk [MCP tool](#match-mcp-tools), input juga membawa `mcp_server`, objek dengan `name` server dan `source` yang mengatakan dari mana definisi server berasal. Nilai `source` mencakup `plugin`, `sdk`, dan cakupan konfigurasi seperti `user` dan `project`. [`McpServerProvenance`](/docs/id/agent-sdk/typescript#mcpserverprovenance) dalam referensi Agent SDK mencantumkan semuanya dan mengatakan cara memperlakukan yang tidak Anda kenal. Dasarkan keputusan kepercayaan pada `source` daripada pada `name` atau awalan nama tool `mcp__<server>__`. Bidang `mcp_server` memerlukan Claude Code v2.1.274 atau lebih baru.1700Untuk [tool MCP](#match-mcp-tools), input juga membawa `mcp_server`, sebuah objek dengan `name` server dan `source` yang menyatakan dari mana definisi server berasal. Nilai `source` mencakup `plugin`, `sdk`, dan cakupan konfigurasi seperti `user` dan `project`. [`McpServerProvenance`](/docs/id/agent-sdk/typescript#mcpserverprovenance) dalam referensi Agent SDK mencantumkan semuanya dan menjelaskan cara memperlakukan nilai yang tidak Anda kenali. Dasarkan keputusan kepercayaan pada `source`, bukan pada `name` atau prefiks nama tool `mcp__<server>__`. Kolom `mcp_server` memerlukan Claude Code v2.1.274 atau yang lebih baru.

1706 1701 

1707Untuk file tools `Write`, `Edit`, dan `Read`, `tool_input.file_path` selalu absolut:1702Untuk tool file `Write`, `Edit`, dan `Read`, `tool_input.file_path` selalu absolut:

1708 1703 

1709* Claude Code memperluas `~` dan path relatif sebelum hooks dijalankan, jadi hook yang cocok pada path tidak dapat dilewati melalui `~` atau ejaan relatif dari path yang sama1704* Claude Code memperluas `~` dan path relatif sebelum hook berjalan, sehingga hook yang mencocokkan path tidak dapat dilewati melalui `~` atau penulisan relatif dari path yang sama

1710* Di Windows, path tiba dengan pemisah backslash, bahkan ketika hook Anda berjalan di bawah Git Bash di mana `$PWD` terlihat seperti `/c/project`1705* Di Windows, path tiba dengan pemisah backslash, bahkan saat hook Anda berjalan di Git Bash tempat `$PWD` terlihat seperti `/c/project`

1711* Perbandingan yang ditulis dengan forward slashes, seperti pemeriksaan `/src/`, tidak pernah cocok dengan path backslash, dan pemanggilan tool dilanjutkan seolah-olah hook tidak memiliki apa pun untuk memblokir1706* Perbandingan yang ditulis dengan garis miring maju, seperti pemeriksaan `/src/`, tidak pernah cocok dengan path backslash, dan panggilan tool berlanjut seolah-olah hook tidak memiliki apa pun untuk diblokir

1712* Normalkan pemisah sebelum membandingkan: `FILE_PATH="${FILE_PATH//\\//}"` dalam Bash, atau `file_path.replace("\\", "/")` dalam Python, kemudian cocokkan segmen path seperti `/src/` daripada jangkar dengan `^`, karena path adalah absolut1707* Normalkan pemisah sebelum membandingkan: `FILE_PATH="${FILE_PATH//\\//}"` di Bash, atau `file_path.replace("\\", "/")` di Python, lalu cocokkan segmen path seperti `/src/` alih-alih menambatkan dengan `^`, karena path bersifat absolut

1713 1708 

1714Panggilan `Write` di Windows memberikan:1709Panggilan `Write` di Windows mengirimkan:

1715 1710 

1716```json theme={null}1711```json theme={null}

1717{1712{


1725}1720}

1726```1721```

1727 1722 

1728Bidang `tool_input` tergantung pada tool:1723Kolom `tool_input` bergantung pada tool-nya:

1729 1724 

1730<a id="bash" />1725<a id="bash" />

1731 1726 


1733 Bash1728 Bash

1734</h5>1729</h5>

1735 1730 

1736Menjalankan perintah shell.1731Mengeksekusi perintah shell.

1737 1732 

1738| Bidang | Tipe | Contoh | Deskripsi |1733| Kolom | Tipe | Contoh | Deskripsi |

1739| :- | :- | :- | :- |1734| :- | :- | :- | :- |

1740| `command` | string | `"npm test"` | Perintah shell untuk dijalankan |1735| `command` | string | `"npm test"` | Perintah shell yang akan dieksekusi |

1741| `description` | string | `"Run test suite"` | Deskripsi opsional tentang apa yang dilakukan perintah |1736| `description` | string | `"Run test suite"` | Deskripsi opsional tentang apa yang dilakukan perintah |

1742| `timeout` | number | `120000` | Timeout opsional dalam milidetik. Nilai di atas [maksimum](/docs/id/tools-reference#bash-tool-behavior) dikurangi ke maksimum daripada ditolak |1737| `timeout` | number | `120000` | Timeout opsional dalam milidetik. Nilai di atas [maksimum](/docs/id/tools-reference#bash-tool-behavior) dikurangi ke nilai maksimum alih-alih ditolak |

1743| `run_in_background` | boolean | `false` | Apakah menjalankan perintah di latar belakang |1738| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |

1744 1739 

1745Ketika perintah Bash mengubah file dalam repositori Git, Claude Code dapat mencatat apa yang berubah. Itu mencatat perubahan dalam setiap mode izin ketika pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled) mengaktifkan perekaman; entri pengaturan itu mengatakan file mana yang dapat mengaturnya. Jika tidak, itu mencatat mereka hanya dalam mode auto dan mode `bypassPermissions`, dan hanya ketika Claude Code mengarahkan Claude untuk mengedit file melalui Bash. Atur `bashEditDiffEnabled` ke `false` untuk mematikan perekaman. Perintah latar belakang dan perintah read-only tidak membawa diff.1740Saat perintah Bash mengubah file di repositori Git, Claude Code dapat merekam apa yang berubah. Claude Code merekam perubahan di setiap mode izin saat pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled) mengaktifkan perekaman; entri pengaturan tersebut menyebutkan file mana yang dapat mengaturnya. Jika tidak, Claude Code hanya merekamnya dalam auto mode dan mode `bypassPermissions`, dan hanya saat Claude Code mengarahkan Claude untuk mengedit file melalui Bash. Atur `bashEditDiffEnabled` ke `false` untuk mematikan perekaman. Perintah latar belakang dan perintah read-only tidak membawa diff.

1746 1741 

1747Hook [PostToolUse](#posttooluse) Anda kemudian menerima file yang berubah dalam `tool_response.bashEditDiff`. Daftar mencakup apa yang berubah di bawah repositori sementara perintah berjalan. File yang Git abaikan dan file dalam submodules tidak terdaftar. Memerlukan Claude Code v2.1.269 atau lebih baru.1742[Hook PostToolUse](#posttooluse) Anda kemudian menerima file yang berubah dalam `tool_response.bashEditDiff`. Daftar tersebut mencakup apa yang berubah di bawah repositori selama perintah berjalan. File yang diabaikan Git dan file di submodule tidak dicantumkan. Memerlukan Claude Code v2.1.269 atau yang lebih baru.

1748 1743 

1749<Note>1744<Note>

1750 Daftar adalah best effort dan dalam beta publik. Claude Code dapat melewatkan perubahan, menyertakan file yang proses lain ubah pada waktu yang sama, atau berhenti di batas ukurannya. Bentuk bidang mungkin berubah. Gunakan daftar untuk menemukan apa yang harus ditinjau, bukan untuk menegakkan kebijakan.1745 Daftar ini bersifat upaya terbaik dan dalam beta publik. Claude Code dapat melewatkan perubahan, menyertakan file yang diubah oleh proses lain pada saat yang sama, atau berhenti pada batas ukurannya. Bentuk kolom dapat berubah. Gunakan daftar ini untuk menemukan apa yang perlu ditinjau, bukan untuk menegakkan kebijakan.

1751</Note>1746</Note>

1752 1747 

1753`changedFiles` dan `files` mencantumkan apa yang diubah perintah; bidang yang tersisa mengatakan seberapa lengkap dan seberapa andal daftar itu.1748`changedFiles` dan `files` mencantumkan apa yang diubah oleh perintah; kolom-kolom lainnya menyatakan seberapa lengkap dan seberapa andal daftar tersebut.

1754 1749 

1755| Bidang | Tipe | Contoh | Deskripsi |1750| Kolom | Tipe | Contoh | Deskripsi |

1756| :- | :- | :- | :- |1751| :- | :- | :- | :- |

1757| `changedFiles` | array | `["/path/to/src/app.ts"]` | Path absolut dari file yang diubah perintah, paling banyak 200. Hadir setiap kali `files` menyimpan diff atau `moreFiles` di atas nol |1752| `changedFiles` | array | `["/path/to/src/app.ts"]` | Path absolut file-file yang diubah oleh perintah, paling banyak 200. Ada setiap kali `files` berisi diff atau `moreFiles` di atas nol |

1758| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diffs dari hingga 5 file yang berubah, untuk tampilan. `created` atau `deleted` adalah `true` untuk file yang ditambahkan atau dihapus perintah |1753| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diff dari hingga 5 file yang berubah, untuk ditampilkan. `created` atau `deleted` bernilai `true` untuk file yang ditambahkan atau dihapus oleh perintah |

1759| `moreFiles` | number | `2` | Jumlah file yang berubah tanpa diff dalam `files` |1754| `moreFiles` | number | `2` | Jumlah file yang berubah tanpa diff di `files` |

1760| `unavailable` | boolean | `true` | Diatur ketika diff tidak lengkap atau tidak dapat diambil |1755| `unavailable` | boolean | `true` | Diatur saat diff tidak lengkap atau tidak dapat diambil |

1761| `skipped` | boolean | `true` | Diatur untuk perintah Git yang memindahkan pohon kerja, seperti `git checkout` atau `git stash`, jadi Claude Code tidak mengambil diff |1756| `skipped` | boolean | `true` | Diatur untuk perintah Git yang memindahkan working tree, seperti `git checkout` atau `git stash`, sehingga Claude Code tidak mengambil diff |

1762| `shared` | boolean | `true` | Diatur ketika pemanggilan tool Bash lain, seperti subagent, berjalan di repositori yang sama pada waktu yang sama, jadi beberapa perubahan yang terdaftar mungkin dari perintah itu |1757| `shared` | boolean | `true` | Diatur saat panggilan tool Bash lain, seperti milik subagent, berjalan di repositori yang sama pada saat yang sama, sehingga beberapa perubahan yang tercantum mungkin berasal dari perintah tersebut |

1763 1758 

1764<a id="powershell" />1759<a id="powershell" />

1765 1760 


1767 PowerShell1762 PowerShell

1768</h5>1763</h5>

1769 1764 

1770Menjalankan perintah PowerShell. Lihat [PowerShell tool](/docs/id/tools-reference#powershell-tool) untuk ketersediaan berdasarkan platform.1765Mengeksekusi perintah PowerShell. Lihat [tool PowerShell](/docs/id/tools-reference#powershell-tool) untuk ketersediaan berdasarkan platform.

1771 1766 

1772Bidang-bidang cocok dengan tool Bash, dengan string perintah dalam `command`:1767Kolom-kolomnya sama dengan tool Bash, dengan string perintah di `command`:

1773 1768 

1774| Bidang | Tipe | Contoh | Deskripsi |1769| Kolom | Tipe | Contoh | Deskripsi |

1775| :- | :- | :- | :- |1770| :- | :- | :- | :- |

1776| `command` | string | `"Get-ChildItem -Recurse"` | Perintah PowerShell untuk dijalankan |1771| `command` | string | `"Get-ChildItem -Recurse"` | Perintah PowerShell yang akan dieksekusi |

1777| `description` | string | `"List files recursively"` | Deskripsi opsional tentang apa yang dilakukan perintah |1772| `description` | string | `"List files recursively"` | Deskripsi opsional tentang apa yang dilakukan perintah |

1778| `timeout` | number | `120000` | Timeout opsional dalam milidetik |1773| `timeout` | number | `120000` | Timeout opsional dalam milidetik |

1779| `run_in_background` | boolean | `false` | Apakah menjalankan perintah di latar belakang |1774| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |

1780 1775 

1781Cocok pada `Bash|PowerShell` dalam hooks yang memeriksa perintah shell, jadi mereka mencakup kedua tools:1776Cocokkan `Bash|PowerShell` dalam hook yang memeriksa perintah shell, sehingga hook tersebut mencakup kedua tool:

1782 1777 

1783* Di Windows, di mana pun PowerShell tool diaktifkan, Claude memperlakukan PowerShell sebagai shell utama dan merutekan perintah shell melaluinya.1778* Di Windows, di mana pun tool PowerShell diaktifkan, Claude memperlakukan PowerShell sebagai shell utama dan mengarahkan perintah shell melaluinya.

1784* Di Windows tanpa Git Bash, tool diaktifkan secara otomatis dan Claude Code tidak mendaftarkan tool Bash sama sekali.1779* Di Windows tanpa Git Bash, tool ini diaktifkan secara otomatis dan Claude Code sama sekali tidak mendaftarkan tool Bash.

1785* Hook yang hanya cocok dengan `Bash` tidak pernah dijalankan di sana.1780* Hook yang hanya mencocokkan `Bash` tidak pernah dipicu di sana.

1786 1781 

1787<h5 id="write">1782<h5 id="write">

1788 Write1783 Write


1790 1785 

1791Membuat atau menimpa file.1786Membuat atau menimpa file.

1792 1787 

1793| Bidang | Tipe | Contoh | Deskripsi |1788| Kolom | Tipe | Contoh | Deskripsi |

1794| :- | :- | :- | :- |1789| :- | :- | :- | :- |

1795| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file untuk ditulis |1790| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan ditulis |

1796| `content` | string | `"file content"` | Konten untuk ditulis ke file |1791| `content` | string | `"file content"` | Konten yang akan ditulis ke file |

1797 1792 

1798<h5 id="edit">1793<h5 id="edit">

1799 Edit1794 Edit

1800</h5>1795</h5>

1801 1796 

1802Mengganti string dalam file yang ada.1797Mengganti string dalam file yang sudah ada.

1803 1798 

1804| Bidang | Tipe | Contoh | Deskripsi |1799| Kolom | Tipe | Contoh | Deskripsi |

1805| :- | :- | :- | :- |1800| :- | :- | :- | :- |

1806| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file untuk diedit |1801| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan diedit |

1807| `old_string` | string | `"original text"` | Teks untuk dicari dan diganti |1802| `old_string` | string | `"original text"` | Teks yang akan dicari dan diganti |

1808| `new_string` | string | `"replacement text"` | Teks pengganti |1803| `new_string` | string | `"replacement text"` | Teks pengganti |

1809| `replace_all` | boolean | `false` | Apakah mengganti semua kemunculan |1804| `replace_all` | boolean | `false` | Apakah semua kemunculan diganti |

1810 1805 

1811<h5 id="read">1806<h5 id="read">

1812 Read1807 Read

1813</h5>1808</h5>

1814 1809 

1815Membaca konten file.1810Membaca isi file.

1816 1811 

1817| Bidang | Tipe | Contoh | Deskripsi |1812| Kolom | Tipe | Contoh | Deskripsi |

1818| :- | :- | :- | :- |1813| :- | :- | :- | :- |

1819| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file untuk dibaca |1814| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan dibaca |

1820| `offset` | number | `10` | Nomor baris opsional untuk mulai membaca dari |1815| `offset` | number | `10` | Nomor baris opsional untuk mulai membaca |

1821| `limit` | number | `50` | Jumlah baris opsional untuk dibaca |1816| `limit` | number | `50` | Jumlah baris opsional yang akan dibaca |

1822 1817 

1823<h5 id="glob">1818<h5 id="glob">

1824 Glob1819 Glob


1826 1821 

1827Menemukan file yang cocok dengan pola glob.1822Menemukan file yang cocok dengan pola glob.

1828 1823 

1829| Bidang | Tipe | Contoh | Deskripsi |1824| Kolom | Tipe | Contoh | Deskripsi |

1830| :- | :- | :- | :- |1825| :- | :- | :- | :- |

1831| `pattern` | string | `"**/*.ts"` | Pola glob untuk mencocokkan file terhadap |1826| `pattern` | string | `"**/*.ts"` | Pola glob untuk mencocokkan file |

1832| `path` | string | `"/path/to/dir"` | Direktori opsional untuk dicari. Default ke direktori kerja saat ini |1827| `path` | string | `"/path/to/dir"` | Direktori opsional untuk pencarian. Default-nya adalah direktori kerja saat ini |

1833 1828 

1834<h5 id="grep">1829<h5 id="grep">

1835 Grep1830 Grep

1836</h5>1831</h5>

1837 1832 

1838Mencari konten file dengan ekspresi reguler.1833Mencari isi file dengan ekspresi reguler.

1839 1834 

1840| Bidang | Tipe | Contoh | Deskripsi |1835| Kolom | Tipe | Contoh | Deskripsi |

1841| :- | :- | :- | :- |1836| :- | :- | :- | :- |

1842| `pattern` | string | `"TODO.*fix"` | Pola ekspresi reguler untuk dicari |1837| `pattern` | string | `"TODO.*fix"` | Pola ekspresi reguler yang akan dicari |

1843| `path` | string | `"/path/to/dir"` | File atau direktori opsional untuk dicari |1838| `path` | string | `"/path/to/dir"` | File atau direktori opsional untuk pencarian |

1844| `glob` | string | `"*.ts"` | Pola glob opsional untuk memfilter file |1839| `glob` | string | `"*.ts"` | Pola glob opsional untuk memfilter file |

1845| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, atau `"count"`. Default ke `"files_with_matches"` |1840| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, atau `"count"`. Default-nya adalah `"files_with_matches"` |

1846| `-i` | boolean | `true` | Pencarian case insensitive |1841| `-i` | boolean | `true` | Pencarian tanpa membedakan huruf besar/kecil |

1847| `multiline` | boolean | `false` | Aktifkan pencocokan multiline |1842| `multiline` | boolean | `false` | Mengaktifkan pencocokan multibaris |

1848 1843 

1849<h5 id="webfetch">1844<h5 id="webfetch">

1850 WebFetch1845 WebFetch


1852 1847 

1853Mengambil dan memproses konten web.1848Mengambil dan memproses konten web.

1854 1849 

1855| Bidang | Tipe | Contoh | Deskripsi |1850| Kolom | Tipe | Contoh | Deskripsi |

1856| :- | :- | :- | :- |1851| :- | :- | :- | :- |

1857| `url` | string | `"https://example.com/api"` | URL untuk mengambil konten dari |1852| `url` | string | `"https://example.com/api"` | URL untuk mengambil konten |

1858| `prompt` | string | `"Extract the API endpoints"` | Prompt untuk dijalankan pada konten yang diambil |1853| `prompt` | string | `"Extract the API endpoints"` | Prompt yang dijalankan pada konten yang diambil |

1859 1854 

1860<h5 id="websearch">1855<h5 id="websearch">

1861 WebSearch1856 WebSearch

1862</h5>1857</h5>

1863 1858 

1864Mencari web.1859Mencari di web.

1865 1860 

1866| Bidang | Tipe | Contoh | Deskripsi |1861| Kolom | Tipe | Contoh | Deskripsi |

1867| :- | :- | :- | :- |1862| :- | :- | :- | :- |

1868| `query` | string | `"react hooks best practices"` | Query pencarian |1863| `query` | string | `"react hooks best practices"` | Kueri pencarian |

1869| `allowed_domains` | array | `["docs.example.com"]` | Opsional: hanya sertakan hasil dari domain ini |1864| `allowed_domains` | array | `["docs.example.com"]` | Opsional: hanya sertakan hasil dari domain-domain ini |

1870| `blocked_domains` | array | `["spam.example.com"]` | Opsional: kecualikan hasil dari domain ini |1865| `blocked_domains` | array | `["spam.example.com"]` | Opsional: kecualikan hasil dari domain-domain ini |

1871 1866 

1872<h5 id="agent">1867<h5 id="agent">

1873 Agent1868 Agent

1874</h5>1869</h5>

1875 1870 

1876Spawn [subagent](/docs/id/sub-agents).1871Membuat [subagent](/docs/id/sub-agents).

1877 1872 

1878| Bidang | Tipe | Contoh | Deskripsi |1873| Kolom | Tipe | Contoh | Deskripsi |

1879| :- | :- | :- | :- |1874| :- | :- | :- | :- |

1880| `prompt` | string | `"Find all API endpoints"` | Tugas untuk agent lakukan |1875| `prompt` | string | `"Find all API endpoints"` | Tugas yang akan dilakukan agent |

1881| `description` | string | `"Find API endpoints"` | Deskripsi singkat tugas |1876| `description` | string | `"Find API endpoints"` | Deskripsi singkat tugas |

1882| `subagent_type` | string | `"Explore"` | Tipe agent khusus untuk digunakan |1877| `subagent_type` | string | `"Explore"` | Jenis agent khusus yang akan digunakan |

1883| `model` | string | `"sonnet"` | Alias model opsional untuk menimpa default |1878| `model` | string | `"sonnet"` | Alias model opsional untuk menimpa default |

1884 1879 

1885Ketika panggilan Agent foreground selesai, hook [PostToolUse](#posttooluse) Anda menerima teks akhir subagent dan telemetri run dalam `tool_response`. Baca bidang-bidang ini untuk memeriksa run; untuk rollup token dan biaya di seluruh subagents, gunakan [token dan cost counters](/docs/id/monitoring-usage#token-counter) yang difilter ke `query_source` `"subagent"`, karena `totalTokens` dan `usage` mencakup permintaan akhir saja:1880Saat panggilan Agent di latar depan selesai, [hook PostToolUse](#posttooluse) Anda menerima hasil dan telemetri run subagent dalam `tool_response`. Baca kolom-kolom ini untuk memeriksa run; untuk rekapitulasi token dan biaya di seluruh subagent, gunakan [penghitung token dan biaya](/docs/id/monitoring-usage#token-counter) yang difilter ke `query_source` `"subagent"`, karena `totalTokens` dan `usage` hanya mencakup permintaan terakhir:

1886 1881 

1887| Bidang | Tipe | Contoh | Deskripsi |1882| Kolom | Tipe | Contoh | Deskripsi |

1888| :- | :- | :- | :- |1883| :- | :- | :- | :- |

1889| `status` | string | `"completed"` | `"completed"` untuk subagents foreground, `"async_launched"` untuk subagents background. Mulai dari v2.1.198, subagents berjalan di latar belakang secara default, jadi `run_in_background` yang dihilangkan juga menghasilkan `"async_launched"` |1884| `status` | string | `"completed"` | `"completed"` untuk subagent latar depan, `"async_launched"` untuk subagent latar belakang. Mulai v2.1.198, subagent berjalan di latar belakang secara default, sehingga `run_in_background` yang dihilangkan juga menghasilkan `"async_launched"` |

1890| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengenal untuk run subagent |1885| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengidentifikasi untuk run subagent |

1891| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks akhir subagent, atau, untuk subagent yang laporannya melewati `SubagentHandback`, catatan singkat tentang hand-back itu di tempatnya |1886| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks terakhir subagent, atau, untuk subagent yang laporannya melalui `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai gantinya |

1892| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang dijalankan subagent, yang mungkin berbeda dari model yang diminta |1887| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang digunakan subagent saat memulai, yang dapat berbeda dari model yang diminta |

1893| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Model yang digunakan secara berurutan, dengan pengulangan berturut-turut yang runtuh; diatur hanya ketika model ditukar mid-run. Memerlukan Claude Code v2.1.212 atau lebih baru |1888| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Model yang digunakan secara berurutan, dengan pengulangan berturut-turut diciutkan; diatur hanya saat model ditukar di tengah run. Memerlukan Claude Code v2.1.212 atau yang lebih baru |

1894| `totalTokens` | number | `12450` | Jumlah token dari permintaan API akhir subagent: input, output, dan cache tokens digabungkan. Ini bukan total di seluruh run |1889| `totalTokens` | number | `12450` | Jumlah token dari permintaan API terakhir subagent: token input, output, dan cache digabungkan. Ini bukan total untuk seluruh run |

1895| `totalDurationMs` | number | `48211` | Durasi wall-clock dari run subagent |1890| `totalDurationMs` | number | `48211` | Durasi waktu nyata run subagent |

1896| `totalToolUseCount` | number | `7` | Jumlah pemanggilan tool yang dibuat subagent |1891| `totalToolUseCount` | number | `7` | Jumlah panggilan tool yang dilakukan subagent |

1897| `usage` | object | `{"input_tokens": 8320, ...}` | Breakdown token per-tipe dari permintaan API akhir: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |1892| `usage` | object | `{"input_tokens": 8320, ...}` | Rincian token per jenis dari permintaan API terakhir: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

1898 1893 

1899Pada Claude Code v2.1.271 atau lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference), yang Claude Code sediakan dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), mengirimkan laporannya melalui tool itu daripada mengembalikannya sebagai teks. Bidang `content` dari hasil `completed`-nya kemudian membawa catatan singkat tentang hand-back itu daripada laporan itu sendiri. Untuk membaca laporan, cocokkan hook `PreToolUse` atau `PostToolUse` pada `SubagentHandback` dan baca `tool_input.message`.1894Pada Claude Code v2.1.271 atau yang lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference), yang disediakan Claude Code dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), mengirimkan laporannya melalui tool tersebut alih-alih mengembalikannya sebagai teks. Kolom `content` dari hasil `completed`-nya kemudian membawa catatan singkat tentang penyerahan tersebut, bukan laporan itu sendiri. Untuk membaca laporan, cocokkan hook `PreToolUse` atau `PostToolUse` pada `SubagentHandback` dan baca `tool_input.message`.

1900 1895 

1901Untuk subagents background, tool mengembalikan ketika tugas bergerak ke latar belakang, jadi `tool_response` tidak membawa bidang penggunaan: peluncuran background mengembalikan segera, dan tugas foreground yang Claude Code latar belakang mid-run mengembalikan pada transisi itu. Itu memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.1896Untuk subagent latar belakang, tool mengembalikan hasil saat tugas berpindah ke latar belakang, sehingga `tool_response` tidak membawa kolom penggunaan: peluncuran latar belakang langsung mengembalikan hasil, dan tugas latar depan yang dipindahkan Claude Code ke latar belakang di tengah run mengembalikan hasil pada transisi tersebut. Respons ini memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.

1902 1897 

1903Pada respons `completed`, `resolvedModel` menamai model yang dijalankan subagent, yang dapat berbeda dari nilai `model` dalam `tool_input`, seperti ketika `availableModels` atau override lain berlaku. Pada respons `async_launched`, `resolvedModel` menamai model yang digunakan ketika agent bergerak ke latar belakang, jadi swap yang terjadi sebelum backgrounding tercermin di sana. `modelsUsed` dan perilaku `resolvedModel` saat backgrounding memerlukan Claude Code v2.1.212 atau lebih baru.1898Pada respons `completed`, `resolvedModel` menyebutkan model yang digunakan subagent saat memulai, yang dapat berbeda dari nilai `model` di `tool_input`, misalnya saat `availableModels` atau override lain berlaku. Pada respons `async_launched`, `resolvedModel` menyebutkan model yang digunakan saat agent berpindah ke latar belakang, sehingga pertukaran yang terjadi sebelum pemindahan ke latar belakang tercermin di sana. `modelsUsed` dan perilaku `resolvedModel` pada saat pemindahan ke latar belakang memerlukan Claude Code v2.1.212 atau yang lebih baru.

1904 1899 

1905<a id="askuserquestion" />1900<a id="askuserquestion" />

1906 1901 


1908 AskUserQuestion1903 AskUserQuestion

1909</h5>1904</h5>

1910 1905 

1911Mengajukan pertanyaan multiple-choice satu hingga empat kepada pengguna.1906Mengajukan satu hingga empat pertanyaan pilihan ganda kepada pengguna.

1912 1907 

1913| Bidang | Tipe | Contoh | Deskripsi |1908| Kolom | Tipe | Contoh | Deskripsi |

1914| :- | :- | :- | :- |1909| :- | :- | :- | :- |

1915| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Pertanyaan untuk disajikan, masing-masing dengan string `question`, `header` pendek, array `options`, dan flag `multiSelect` opsional |1910| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React"}], "multiSelect": false}]` | Pertanyaan yang akan ditampilkan, masing-masing dengan string `question`, `header` singkat, array `options`, dan flag `multiSelect` opsional |

1916| `answers` | object | `{"Which framework?": "React"}` | Opsional. Memetakan teks pertanyaan ke label opsi yang dipilih. Jawaban multi-select menggabungkan label dengan koma. Claude tidak menetapkan bidang ini; sediakan melalui `updatedInput` untuk menjawab secara programatis |1911| `answers` | object | `{"Which framework?": "React"}` | Opsional. Memetakan teks pertanyaan ke label opsi yang dipilih. Jawaban pilihan ganda menggabungkan label dengan koma. Claude tidak mengatur kolom ini; berikan melalui `updatedInput` untuk menjawab secara terprogram |

1917 1912 

1918<h5 id="exitplanmode">1913<h5 id="exitplanmode">

1919 ExitPlanMode1914 ExitPlanMode

1920</h5>1915</h5>

1921 1916 

1922Menyajikan rencana dan meminta pengguna untuk menyetujuinya sebelum Claude meninggalkan [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode). Claude menulis rencana ke file di disk sebelum memanggil tool, jadi `tool_input` literal dari model biasanya kosong. Claude Code menyuntikkan konten rencana dan path file sebelum meneruskan input ke hooks.1917Menyajikan rencana dan meminta pengguna menyetujuinya sebelum Claude meninggalkan [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode). Claude menulis rencana ke file di disk sebelum memanggil tool, sehingga `tool_input` literal dari model biasanya kosong. Claude Code menyisipkan konten rencana dan path file sebelum meneruskan input ke hook.

1923 1918 

1924| Bidang | Tipe | Contoh | Deskripsi |1919| Kolom | Tipe | Contoh | Deskripsi |

1925| :- | :- | :- | :- |1920| :- | :- | :- | :- |

1926| `plan` | string | `"## Refactor auth\n1. Extract..."` | Konten rencana dalam Markdown. Disuntikkan dari file rencana di disk |1921| `plan` | string | `"## Refactor auth\n1. Extract..."` | Konten rencana dalam Markdown. Disisipkan dari file rencana di disk |

1927| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Path ke file rencana. Disuntikkan |1922| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Path ke file rencana. Disisipkan |

1928| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Usang. Claude Code menerima bidang tetapi mengabaikannya. Sebelum v2.1.205, itu membawa izin berbasis prompt yang diminta Claude untuk mengimplementasikan rencana |1923| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecated. Claude Code menerima kolom ini tetapi mengabaikannya. Sebelum v2.1.205, kolom ini membawa izin berbasis prompt yang diminta Claude untuk mengimplementasikan rencana |

1929 1924 

1930Dalam `PostToolUse`, `tool_response` adalah objek dengan bidang `plan` dan `filePath` yang menyimpan rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk konten rencana daripada membaca ulang file dari disk.1925Di `PostToolUse`, `tool_response` adalah objek dengan kolom `plan` dan `filePath` yang berisi rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk konten rencana alih-alih membaca ulang file dari disk.

1931 1926 

1932<h4 id="pretooluse-decision-control">1927<h4 id="pretooluse-decision-control">

1933 PreToolUse decision control1928 Kontrol keputusan PreToolUse

1934</h4>1929</h4>

1935 1930 

1936Hooks `PreToolUse` dapat mengontrol apakah pemanggilan tool dilanjutkan. Tidak seperti hooks lain yang menggunakan bidang `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikannya kontrol yang lebih kaya: empat hasil (izinkan, tolak, tanya, atau tunda) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.1931Hook `PreToolUse` dapat mengontrol apakah panggilan tool berlanjut. Tidak seperti hook lain yang menggunakan kolom `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberikan kontrol yang lebih kaya: empat hasil (allow, deny, ask, atau defer) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.

1937 1932 

1938| Bidang | Deskripsi |1933| Kolom | Deskripsi |

1939| :- | :- |1934| :- | :- |

1940| `permissionDecision` | `"allow"` melewati prompt izin, kecuali untuk [actions yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves) dan untuk `AskUserQuestion` dan `ExitPlanMode`, yang memerlukan [`updatedInput` dipasangkan dengannya](#allow-with-updatedinput). `"deny"` mencegah pemanggilan tool. `"ask"` meminta pengguna untuk mengkonfirmasi. `"defer"` keluar dengan baik sehingga tool dapat dilanjutkan nanti. [Deny and ask rules](/docs/id/permissions#manage-permissions) masih dievaluasi terlepas dari apa yang dikembalikan hook |1935| `permissionDecision` | `"allow"` melewati permintaan izin, kecuali untuk [tindakan yang tidak disetujui otomatis oleh mode apa pun](/docs/id/permission-modes#actions-no-mode-auto-approves) dan untuk `AskUserQuestion` dan `ExitPlanMode`, yang memerlukan [`updatedInput` yang dipasangkan dengannya](#allow-with-updatedinput). `"deny"` mencegah panggilan tool. `"ask"` meminta pengguna untuk mengonfirmasi. `"defer"` keluar dengan baik sehingga tool dapat dilanjutkan nanti. [Aturan deny dan ask](/docs/id/permissions#manage-permissions) tetap dievaluasi apa pun yang dikembalikan hook |

1941| `permissionDecisionReason` | Untuk `"allow"` dan `"ask"`, ditampilkan ke pengguna tetapi bukan Claude. Untuk `"deny"`, ditampilkan ke Claude. Untuk `"defer"`, diabaikan |1936| `permissionDecisionReason` | Untuk `"ask"`, ditampilkan kepada pengguna tetapi tidak kepada Claude. Untuk `"deny"`, ditampilkan kepada Claude. Untuk `"allow"` dan `"defer"`, hanya ditulis ke [log debug](#debug-hooks) |

1942| `updatedInput` | Memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan bidang yang tidak berubah bersama yang dimodifikasi. Claude Code mengevaluasi aturan izin dan kelayakan [auto-background](/docs/id/tools-reference#background-commands) perintah Bash terhadap input yang dikembalikan hook Anda, bukan input yang dikirim Claude. Gabungkan dengan `"allow"` untuk persetujuan otomatis, atau `"ask"` untuk menampilkan input yang dimodifikasi ke pengguna. Untuk `"defer"`, diabaikan |1937| `updatedInput` | Memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan kolom yang tidak berubah bersama kolom yang dimodifikasi. Claude Code mengevaluasi aturan izin dan [kelayakan auto-background](/docs/id/tools-reference#foreground-commands-that-move-to-the-background) perintah Bash terhadap input yang dikembalikan hook Anda, bukan input yang dikirim Claude. Gabungkan dengan `"allow"` untuk menyetujui otomatis, atau `"ask"` untuk menampilkan input yang dimodifikasi kepada pengguna. Untuk `"defer"`, diabaikan |

1943| `additionalContext` | String ditambahkan ke konteks Claude bersama hasil tool. Diabaikan ketika `permissionDecision` adalah `"defer"`. Lihat [Add context for Claude](#add-context-for-claude) |1938| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Diabaikan saat `permissionDecision` bernilai `"defer"`. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

1944 1939 

1945Ketika beberapa PreToolUse hooks mengembalikan keputusan berbeda, prioritas adalah `deny` > `defer` > `ask` > `allow`.1940Saat beberapa hook PreToolUse mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `defer` > `ask` > `allow`.

1946 1941 

1947Hook yang memblokir dengan keluar 2 merutekan dengan cara yang sama seperti `"deny"`: Claude melihat pesan stderr sebagai alasan penolakan.1942Hook yang memblokir dengan keluar dengan kode 2 diarahkan dengan cara yang sama seperti `"deny"`: Claude melihat pesan stderr sebagai alasan penolakan.

1948 1943 

1949Ketika hook mengembalikan `"ask"`, dialog izin yang ditampilkan kepada pengguna mencakup label yang mengidentifikasi dari mana hook berasal: `[settings]` untuk hook dari file pengaturan apa pun atau dari frontmatter agent, `[plugin:<name>]` untuk hook plugin, atau `[skill]` untuk hook dari frontmatter skill. Ini membantu pengguna memahami sumber konfigurasi mana yang meminta konfirmasi.1944Saat hook mengembalikan `"ask"`, permintaan izin yang ditampilkan kepada pengguna menyertakan label yang mengidentifikasi asal hook: `[settings]` untuk hook dari file pengaturan mana pun atau dari frontmatter agent, `[plugin:<name>]` untuk hook plugin, atau `[skill]` untuk hook dari frontmatter skill. Ini membantu pengguna memahami sumber konfigurasi mana yang meminta konfirmasi.

1950 1945 

1951Hook `"ask"` juga memaksa prompt izin dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode): pengklasifikasi masih dapat menolak pemanggilan tool, tetapi tidak dapat menyetujui panggilan secara diam-diam. Sebelum v2.1.211, pengklasifikasi dapat menyetujui perintah Bash yang berjalan di luar [sandbox](/docs/id/sandboxing) tanpa menampilkan prompt yang diminta hook; pengklasifikasi masih menerapkan aturan keamanannya sendiri ke perintah itu, dan penolakan hook `"deny"` selalu dihormati.1946`"ask"` dari hook juga memaksa permintaan izin dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode): pengklasifikasi tetap dapat menolak panggilan tool, tetapi tidak dapat menyetujui panggilan tersebut secara diam-diam. Sebelum v2.1.211, pengklasifikasi dapat menyetujui perintah Bash yang berjalan di luar [sandbox](/docs/id/sandboxing) tanpa menampilkan permintaan yang diminta hook; pengklasifikasi tetap menerapkan aturan keamanannya sendiri pada perintah tersebut, dan `"deny"` dari hook selalu dihormati.

1952 1947 

1953```json theme={null}1948```json theme={null}

1954{1949{


1966 1961 

1967<span id="allow-with-updatedinput" />1962<span id="allow-with-updatedinput" />

1968 1963 

1969Dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, Claude Code menawarkan `AskUserQuestion` dan `ExitPlanMode` hanya ketika run memiliki [permission host](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) untuk menerima prompt, seperti callback `canUseTool` Agent SDK. Tools ini memerlukan interaksi pengguna. Mengembalikan `permissionDecision: "allow"` bersama dengan `updatedInput` memenuhi persyaratan itu: hook membaca input tool dari stdin, mengumpulkan jawaban melalui UI Anda sendiri, dan mengembalikannya dalam `updatedInput` sehingga tool dijalankan tanpa meminta. Mengembalikan `"allow"` saja tidak cukup untuk tools ini. Untuk `AskUserQuestion`, kembalikan array `questions` asli dan tambahkan objek [`answers`](#askuserquestion) yang memetakan teks setiap pertanyaan ke jawaban yang dipilih.1964Dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, Claude Code menawarkan `AskUserQuestion` dan `ExitPlanMode` hanya saat run memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) untuk menerima permintaan, seperti callback `canUseTool` Agent SDK. Tool-tool ini memerlukan interaksi pengguna. Mengembalikan `permissionDecision: "allow"` bersama dengan `updatedInput` memenuhi persyaratan tersebut: hook membaca input tool dari stdin, mengumpulkan jawaban melalui UI Anda sendiri, dan mengembalikannya dalam `updatedInput` sehingga tool berjalan tanpa meminta konfirmasi. Mengembalikan `"allow"` saja tidak cukup untuk tool-tool ini. Untuk `AskUserQuestion`, kembalikan array `questions` asli dan tambahkan objek [`answers`](#askuserquestion) yang memetakan teks setiap pertanyaan ke jawaban yang dipilih.

1970 1965 

1971Mulai dari v2.1.199, tool MCP yang server-nya menandainya dengan [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) lebih ketat: hook tidak dapat melewati prompt persetujuannya dengan `"allow"`, dengan atau tanpa `updatedInput`, karena Claude Code tidak dapat mengkonfirmasi hook mengumpulkan interaksi yang dibutuhkan tool.1966Mulai v2.1.199, tool MCP yang ditandai server-nya dengan [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) lebih ketat: hook tidak dapat melewati permintaan persetujuannya dengan `"allow"`, dengan atau tanpa `updatedInput`, karena Claude Code tidak dapat memastikan bahwa hook telah mengumpulkan interaksi yang dibutuhkan tool tersebut.

1972 1967 

1973<Note>1968<Note>

1974 PreToolUse sebelumnya menggunakan bidang `decision` dan `reason` tingkat atas, tetapi ini sudah usang untuk event ini. Gunakan `hookSpecificOutput.permissionDecision` dan `hookSpecificOutput.permissionDecisionReason` sebagai gantinya. Nilai usang `"approve"` dan `"block"` memetakan ke `"allow"` dan `"deny"` masing-masing. Events lain seperti PostToolUse dan Stop terus menggunakan `decision` dan `reason` tingkat atas sebagai format saat ini mereka.1969 PreToolUse sebelumnya menggunakan kolom `decision` dan `reason` tingkat atas, tetapi kolom-kolom ini sudah deprecated untuk event ini. Gunakan `hookSpecificOutput.permissionDecision` dan `hookSpecificOutput.permissionDecisionReason` sebagai gantinya. Nilai deprecated `"approve"` dan `"block"` masing-masing dipetakan ke `"allow"` dan `"deny"`. Event lain seperti PostToolUse dan Stop tetap menggunakan `decision` dan `reason` tingkat atas sebagai format saat ini.

1975</Note>1970</Note>

1976 1971 

1977<h4 id="defer-a-tool-call-for-later">1972<h4 id="defer-a-tool-call-for-later">

1978 Defer a tool call for later1973 Menunda panggilan tool untuk nanti

1979</h4>1974</h4>

1980 1975 

1981`"defer"` adalah untuk integrasi yang menjalankan `claude -p` sebagai subprocess dan membaca output JSON-nya, seperti aplikasi Agent SDK atau UI kustom yang dibangun di atas Claude Code. Ini memungkinkan proses pemanggil itu menjeda Claude pada pemanggilan tool, mengumpulkan input melalui antarmuka miliknya sendiri, dan melanjutkan di mana ia berhenti. Claude Code menghormati nilai ini hanya dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Dalam sesi interaktif itu mencatat peringatan dan mengabaikan hasil hook.1976`"defer"` ditujukan untuk integrasi yang menjalankan `claude -p` sebagai subproses dan membaca output JSON-nya, seperti aplikasi Agent SDK atau UI kustom yang dibangun di atas Claude Code. Nilai ini memungkinkan proses pemanggil menjeda Claude pada panggilan tool, mengumpulkan input melalui antarmukanya sendiri, dan melanjutkan dari titik terakhir. Claude Code hanya menghormati nilai ini dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Dalam sesi interaktif, Claude Code mencatat peringatan ke log dan mengabaikan hasil hook.

1982 1977 

1983Tool `AskUserQuestion` adalah kasus tipikal: Claude ingin menanyakan sesuatu kepada pengguna, tetapi tidak ada terminal untuk menjawab. Run `-p` menawarkan `AskUserQuestion` hanya ketika memiliki [permission host](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs), seperti tool MCP yang Anda berikan dengan `--permission-prompt-tool`, jadi mulai run dengan salah satunya. Perjalanan bolak-balik bekerja seperti ini:1978Tool `AskUserQuestion` adalah kasus yang umum: Claude ingin menanyakan sesuatu kepada pengguna, tetapi tidak ada terminal untuk menjawabnya. Run `-p` menawarkan `AskUserQuestion` hanya saat memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs), seperti tool MCP yang Anda berikan dengan `--permission-prompt-tool`, jadi mulai run dengan salah satunya. Alur bolak-baliknya bekerja seperti ini:

1984 1979 

19851. Claude memanggil `AskUserQuestion`. Hook `PreToolUse` dijalankan.19801. Claude memanggil `AskUserQuestion`. Hook `PreToolUse` dipicu.

19862. Hook mengembalikan `permissionDecision: "defer"`. Tool tidak dijalankan. Proses keluar dengan `stop_reason: "tool_deferred"` dan pemanggilan tool yang tertunda dipertahankan dalam transkrip.19812. Hook mengembalikan `permissionDecision: "defer"`. Tool tidak dieksekusi. Proses keluar dengan `stop_reason: "tool_deferred"` dan panggilan tool yang tertunda dipertahankan dalam transkrip.

19873. Proses pemanggil membaca `deferred_tool_use` dari hasil SDK, menampilkan pertanyaan di UI miliknya sendiri, dan menunggu jawaban.19823. Proses pemanggil membaca `deferred_tool_use` dari hasil SDK, menampilkan pertanyaan di UI-nya sendiri, dan menunggu jawaban.

19884. Proses pemanggil menjalankan `claude -p --resume <session-id>` dengan permission host yang sama. Pemanggilan tool yang sama menjalankan `PreToolUse` lagi.19834. Proses pemanggil menjalankan `claude -p --resume <session-id>` dengan host izin yang sama. Panggilan tool yang sama memicu `PreToolUse` lagi.

19895. Hook mengembalikan `permissionDecision: "allow"` dengan jawaban dalam `updatedInput`. Tool dijalankan dan Claude melanjutkan.19845. Hook mengembalikan `permissionDecision: "allow"` dengan jawaban di `updatedInput`. Tool dieksekusi dan Claude melanjutkan.

1990 1985 

1991Bidang `deferred_tool_use` membawa `id`, `name`, dan `input` tool. `input` adalah parameter yang Claude hasilkan untuk pemanggilan tool, ditangkap sebelum eksekusi:1986Kolom `deferred_tool_use` membawa `id`, `name`, dan `input` tool. `input` adalah parameter yang dihasilkan Claude untuk panggilan tool, ditangkap sebelum eksekusi:

1992 1987 

1993```json theme={null}1988```json theme={null}

1994{1989{


2004}1999}

2005```2000```

2006 2001 

2007Tidak ada timeout atau batas retry. Sesi tetap di disk sampai Anda melanjutkannya, tunduk pada penyapuan retensi [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays) yang menghapus file sesi setelah 30 hari secara default, mengikuti [aturan penyapuan retensi](/docs/id/claude-directory#cleaned-up-automatically). Jika jawaban tidak siap saat Anda melanjutkan, hook dapat mengembalikan `"defer"` lagi dan proses keluar dengan cara yang sama. Proses pemanggil mengontrol kapan harus memecah loop dengan akhirnya mengembalikan `"allow"` atau `"deny"` dari hook.2002Tidak ada timeout atau batas retry. Sesi tetap ada di disk hingga Anda melanjutkannya, tunduk pada pembersihan retensi [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays), yang menghapus file sesi setelah 30 hari secara default, mengikuti [aturan pembersihan retensi](/docs/id/claude-directory#cleaned-up-automatically). Jika jawaban belum siap saat Anda melanjutkan, hook dapat mengembalikan `"defer"` lagi dan proses keluar dengan cara yang sama. Proses pemanggil mengontrol kapan loop dihentikan dengan akhirnya mengembalikan `"allow"` atau `"deny"` dari hook.

2008 2003 

2009`"defer"` hanya bekerja ketika Claude membuat satu pemanggilan tool dalam giliran. Jika Claude membuat beberapa pemanggilan tool sekaligus, `"defer"` diabaikan dengan peringatan dan tool melanjutkan melalui alur izin normal. Batasan ada karena resume hanya dapat menjalankan kembali satu tool: tidak ada cara untuk menunda satu pemanggilan dari batch tanpa meninggalkan yang lain tidak terselesaikan.2004`"defer"` hanya berfungsi saat Claude melakukan satu panggilan tool dalam giliran tersebut. Jika Claude melakukan beberapa panggilan tool sekaligus, `"defer"` diabaikan dengan peringatan dan tool berlanjut melalui alur izin normal. Batasan ini ada karena resume hanya dapat menjalankan ulang satu tool: tidak ada cara untuk menunda satu panggilan dari sekelompok panggilan tanpa membiarkan panggilan lainnya tidak terselesaikan.

2010 2005 

2011Jika tool yang ditunda tidak lagi tersedia saat Anda melanjutkan, proses keluar dengan `stop_reason: "tool_deferred_unavailable"` dan `is_error: true` sebelum hook dijalankan. Ini terjadi ketika server MCP yang menyediakan tool tidak terhubung untuk sesi yang dilanjutkan. Payload `deferred_tool_use` masih disertakan sehingga Anda dapat mengidentifikasi tool mana yang hilang.2006Jika tool yang ditunda tidak lagi tersedia saat Anda melanjutkan, proses keluar dengan `stop_reason: "tool_deferred_unavailable"` dan `is_error: true` sebelum hook dipicu. Ini terjadi saat server MCP yang menyediakan tool tersebut tidak terhubung untuk sesi yang dilanjutkan. Payload `deferred_tool_use` tetap disertakan sehingga Anda dapat mengidentifikasi tool mana yang hilang.

2012 2007 

2013<Note>2008<Note>

2014 Untuk melanjutkan sesi yang ditunda dalam plan mode, teruskan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) bersama dengan `--resume` sehingga Claude Code dapat menyajikan rencana untuk persetujuan. Tanpanya, Claude Code tidak memulihkan plan mode. Memerlukan Claude Code v2.1.246 atau lebih baru.2009 Untuk melanjutkan sesi yang ditunda dalam plan mode, berikan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) bersama `--resume` agar Claude Code dapat menyajikan rencana untuk persetujuan. Jika Anda memberikan flag peluncuran tertentu lainnya, run yang dilanjutkan tidak kembali ke plan mode; lihat [Melanjutkan dalam plan mode dengan `-p`](/docs/id/sessions#resume-in-plan-mode-with-p). Memerlukan Claude Code v2.1.246 atau yang lebih baru.

2015 2010 

2016 Ketika Anda melanjutkan dengan `-p`, Claude Code tidak memulihkan mode izin yang disimpan lainnya. Itu memulai run dalam mode izin yang akan dimulai oleh run `claude -p` baru, jadi teruskan `--permission-mode` atau `--dangerously-skip-permissions` lagi jika sesi yang ditunda menggunakan satu. Ketika Anda melanjutkan dengan `claude --resume <session-id>` tanpa `-p`, Claude Code memulihkan mode izin yang disimpan, dengan pengecualian yang tercantum dalam [permission mode on resume](/docs/id/sessions#permission-mode-on-resume).2011 Saat Anda melanjutkan dengan `-p`, Claude Code tidak memulihkan mode izin tersimpan lainnya. Claude Code memulai run dalam mode izin yang akan digunakan oleh run `claude -p` baru, jadi berikan `--permission-mode` atau `--dangerously-skip-permissions` lagi jika sesi yang ditunda menggunakan salah satunya. Saat Anda melanjutkan dengan `claude --resume <session-id>` tanpa `-p`, Claude Code memulihkan mode izin yang tersimpan, dengan pengecualian yang tercantum di [mode izin saat melanjutkan](/docs/id/sessions#permission-mode-on-resume).

2017</Note>2012</Note>

2018 2013 

2019<h3 id="permissionrequest">2014<h3 id="permissionrequest">

2020 PermissionRequest2015 PermissionRequest

2021</h3>2016</h3>

2022 2017 

2023Dijalankan ketika Claude Code akan menanyakan Anda untuk izin menggunakan tool. Dalam sesi yang tidak dapat menampilkan prompt, seperti subagents latar belakang dalam [mode non-interaktif](/docs/id/headless), Claude Code masih menjalankan hooks ini, dan jika tidak ada hook yang mengembalikan keputusan, itu menolak pemanggilan tool.2018Berjalan saat Claude Code akan meminta izin Anda untuk menggunakan tool. Dalam sesi yang tidak dapat menampilkan permintaan izin, seperti subagent latar belakang dalam [mode non-interaktif](/docs/id/headless), Claude Code tetap menjalankan hook ini, dan jika tidak ada hook yang mengembalikan keputusan, Claude Code menolak panggilan tool tersebut.

2024Gunakan [PermissionRequest decision control](#permissionrequest-decision-control) untuk mengizinkan atau menolak atas nama pengguna.2019Gunakan [kontrol keputusan PermissionRequest](#permissionrequest-decision-control) untuk mengizinkan atau menolak atas nama pengguna.

2025 2020 

2026Gunakan event ini ketika Anda memerlukan sinyal saat Claude meminta izin menggunakan tool. Claude Code menjalankan hook [Notification](#notification) dengan tipe `permission_prompt` hanya setelah prompt menunggu sekitar enam detik.2021Gunakan event ini saat Anda memerlukan sinyal tepat pada saat Claude meminta izin untuk menggunakan tool. Claude Code menjalankan hook [Notification](#notification) dengan jenis `permission_prompt` hanya setelah permintaan izin menunggu sekitar enam detik.

2027 2022 

2028Claude Code tidak menjalankan PermissionRequest hooks untuk [network request](/docs/id/sandboxing#network-isolation) perintah sandboxed. Untuk mendapatkan sinyal untuk prompt itu, gunakan tipe notifikasi `permission_prompt`.2023Claude Code tidak menjalankan hook PermissionRequest untuk [permintaan jaringan](/docs/id/sandboxing#network-isolation) dari perintah yang berjalan dalam sandbox. Untuk mendapatkan sinyal untuk permintaan izin tersebut, gunakan jenis notifikasi `permission_prompt`.

2029 2024 

2030Cocok pada nama tool, nilai yang sama seperti PreToolUse.2025Dicocokkan dengan nama tool, nilai yang sama seperti PreToolUse.

2031 2026 

2032<h4 id="permissionrequest-input">2027<h4 id="permissionrequest-input">

2033 PermissionRequest input2028 Input PermissionRequest

2034</h4>2029</h4>

2035 2030 

2036PermissionRequest hooks menerima bidang `tool_name` dan `tool_input` seperti PreToolUse hooks, tetapi tanpa `tool_use_id`. Untuk MCP tool, mereka juga menerima objek [`mcp_server`](#pretooluse-input). Array `permission_suggestions` opsional berisi [permission updates](#permission-update-entries) yang Claude Code sarankan untuk permintaan ini, seperti menambahkan aturan allow atau mengubah mode izin.2031Hook PermissionRequest menerima kolom `tool_name` dan `tool_input` seperti hook PreToolUse, tetapi tanpa `tool_use_id`. Untuk tool MCP, hook ini juga menerima objek [`mcp_server`](#pretooluse-input). Array `permission_suggestions` opsional berisi [pembaruan izin](#permission-update-entries) yang disarankan Claude Code untuk permintaan ini, seperti menambahkan aturan allow atau mengubah mode izin.

2037 2032 

2038Array `permission_suggestions` bukan daftar opsi yang tepat yang Anda lihat, karena setiap dialog izin membangun opsi miliknya sendiri. Beberapa dialog, seperti yang untuk edit file, tidak membaca array sama sekali dan menurunkan opsi mereka dari permintaan itu sendiri. Dialog yang membacanya masih dapat menahan opsi yang sarannya tetap dalam array, misalnya ketika [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) menyembunyikan opsi penyimpanan aturan. Itu juga dapat menawarkan opsi yang tidak memiliki entri saran, seperti [**Yes, and switch to auto mode**](/docs/id/permission-modes#switch-permission-modes), yang mengubah mode izin secara langsung daripada melalui pembaruan izin.2033Array `permission_suggestions` bukan daftar persis dari opsi yang Anda lihat, karena setiap dialog izin membangun opsinya sendiri. Beberapa dialog, seperti dialog untuk pengeditan file, sama sekali tidak membaca array tersebut dan menurunkan opsinya dari permintaan itu sendiri. Dialog yang membacanya tetap dapat menahan opsi yang sarannya tetap ada di array, misalnya saat [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) menyembunyikan opsi penyimpanan aturan. Dialog juga dapat menawarkan opsi yang tidak memiliki entri saran, seperti [**Yes, and switch to auto mode**](/docs/id/permission-modes#switch-permission-modes), yang mengubah mode izin secara langsung alih-alih melalui pembaruan izin.

2039 2034 

2040PreToolUse hooks dijalankan sebelum setiap pemanggilan tool, terlepas dari apakah itu memerlukan izin. PermissionRequest hooks dijalankan hanya ketika Claude Code akan menanyakan Anda untuk izin, atau ketika itu akan sebaliknya auto-deny panggilan yang tidak dapat meminta. Tidak ada event yang dijalankan untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).2035Hook PreToolUse berjalan sebelum setiap panggilan tool, baik memerlukan izin maupun tidak. Hook PermissionRequest hanya berjalan saat Claude Code akan meminta izin Anda, atau saat Claude Code akan menolak secara otomatis panggilan yang tidak dapat menampilkan permintaan izin. Kedua event tersebut tidak dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).

2041 2036 

2042```json theme={null}2037```json theme={null}

2043{2038{


2063```2058```

2064 2059 

2065<h4 id="permissionrequest-decision-control">2060<h4 id="permissionrequest-decision-control">

2066 PermissionRequest decision control2061 Kontrol keputusan PermissionRequest

2067</h4>2062</h4>

2068 2063 

2069Hooks `PermissionRequest` dapat mengizinkan atau menolak permintaan izin. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan objek `decision` dengan bidang spesifik event ini:2064Hook `PermissionRequest` dapat mengizinkan atau menolak permintaan izin. Selain [kolom output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan objek `decision` dengan kolom khusus event berikut:

2070 2065 

2071| Bidang | Deskripsi |2066| Kolom | Deskripsi |

2072| :- | :- |2067| :- | :- |

2073| `behavior` | `"allow"` memberikan izin, `"deny"` menolaknya. [Deny and ask rules](/docs/id/permissions#manage-permissions) masih dievaluasi, jadi hook yang mengembalikan `"allow"` tidak menimpa aturan deny yang cocok |2068| `behavior` | `"allow"` memberikan izin, `"deny"` menolaknya. [Aturan deny dan ask](/docs/id/permissions#manage-permissions) tetap dievaluasi, sehingga hook yang mengembalikan `"allow"` tidak menimpa aturan deny yang cocok |

2074| `updatedInput` | Untuk `"allow"` saja: memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan bidang yang tidak berubah bersama yang dimodifikasi. Input yang dimodifikasi dievaluasi ulang terhadap aturan deny dan ask |2069| `updatedInput` | Hanya untuk `"allow"`: memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan kolom yang tidak berubah bersama kolom yang dimodifikasi. Input yang dimodifikasi dievaluasi ulang terhadap aturan deny dan ask |

2075| `updatedPermissions` | Untuk `"allow"` saja: array dari [permission update entries](#permission-update-entries) untuk diterapkan, seperti menambahkan aturan allow atau mengubah mode izin sesi |2070| `updatedPermissions` | Hanya untuk `"allow"`: array [entri pembaruan izin](#permission-update-entries) yang akan diterapkan, seperti menambahkan aturan allow atau mengubah mode izin sesi |

2076| `message` | Untuk `"deny"` saja: memberitahu Claude mengapa izin ditolak |2071| `message` | Hanya untuk `"deny"`: memberi tahu Claude mengapa izin ditolak |

2077| `interrupt` | Untuk `"deny"` saja: jika `true`, menghentikan Claude |2072| `interrupt` | Hanya untuk `"deny"`: jika `true`, menghentikan Claude |

2078 2073 

2079Hook yang keluar 2 tanpa objek `decision` meninggalkan alur izin tidak berubah, dan stderr-nya dibuang. Hanya objek `decision` yang dapat memberikan atau menolak permintaan.2074Hook yang keluar dengan kode 2 tanpa objek `decision` membiarkan alur izin tidak berubah, dan stderr-nya dibuang. Hanya objek `decision` yang dapat memberikan atau menolak permintaan.

2080 2075 

2081```json theme={null}2076```json theme={null}

2082{2077{


2093```2088```

2094 2089 

2095<h4 id="permission-update-entries">2090<h4 id="permission-update-entries">

2096 Permission update entries2091 Entri pembaruan izin

2097</h4>2092</h4>

2098 2093 

2099Bidang output `updatedPermissions` dan bidang input [`permission_suggestions`](#permissionrequest-input) keduanya menggunakan array objek entry yang sama. Setiap entry memiliki `type` yang menentukan bidang lainnya, dan `destination` yang mengontrol di mana perubahan ditulis.2094Kolom output `updatedPermissions` dan [kolom input `permission_suggestions`](#permissionrequest-input) sama-sama menggunakan array objek entri yang sama. Setiap entri memiliki `type` yang menentukan kolom-kolom lainnya, dan `destination` yang mengontrol tempat perubahan ditulis.

2100 2095 

2101| `type` | Bidang | Efek |2096| `type` | Kolom | Efek |

2102| :- | :- | :- |2097| :- | :- | :- |

2103| `addRules` | `rules`, `behavior`, `destination` | Menambahkan aturan izin. `rules` adalah array dari objek `{toolName, ruleContent?}`. Hilangkan `ruleContent` untuk mencocokkan seluruh tool. `behavior` adalah `"allow"`, `"deny"`, atau `"ask"` |2098| `addRules` | `rules`, `behavior`, `destination` | Menambahkan aturan izin. `rules` adalah array objek `{toolName, ruleContent?}`. Hilangkan `ruleContent` untuk mencocokkan seluruh tool. `behavior` bernilai `"allow"`, `"deny"`, atau `"ask"` |

2104| `replaceRules` | `rules`, `behavior`, `destination` | Mengganti semua aturan dari `behavior` yang diberikan di `destination` dengan `rules` yang disediakan |2099| `replaceRules` | `rules`, `behavior`, `destination` | Mengganti semua aturan dengan `behavior` yang diberikan di `destination` dengan `rules` yang disediakan |

2105| `removeRules` | `rules`, `behavior`, `destination` | Menghapus aturan yang cocok dari `behavior` yang diberikan |2100| `removeRules` | `rules`, `behavior`, `destination` | Menghapus aturan yang cocok dengan `behavior` yang diberikan |

2106| `setMode` | `mode`, `destination` | Mengubah mode izin. Mode yang valid adalah `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, dan `manual` sebagai alias untuk `default`. Alias `manual` memerlukan Claude Code v2.1.200 atau lebih baru |2101| `setMode` | `mode`, `destination` | Mengubah mode izin. Mode yang valid adalah `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, dan `manual` sebagai alias untuk `default`. Alias `manual` memerlukan Claude Code v2.1.200 atau yang lebih baru |

2107| `addDirectories` | `directories`, `destination` | Menambahkan direktori kerja. `directories` adalah array dari string path |2102| `addDirectories` | `directories`, `destination` | Menambahkan direktori kerja. `directories` adalah array string path |

2108| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |2103| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |

2109 2104 

2110<Note>2105<Note>

2111 `setMode` dengan `bypassPermissions` hanya berlaku jika sesi diluncurkan dengan mode bypass sudah tersedia: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, atau `permissions.defaultMode: "bypassPermissions"` dalam [user, `--settings`, atau managed settings](/docs/id/settings-reference#permissions-defaultmode). Jika tidak, update adalah no-op. Update juga adalah no-op ketika [`permissions.disableBypassPermissionsMode`](/docs/id/permissions#managed-settings) menonaktifkan mode, atau ketika sesi dimulai dalam [restricted mode](/docs/id/cli-reference#cli-flags).2106 `setMode` dengan `bypassPermissions` hanya berlaku jika Anda meluncurkan sesi dengan mode bypass yang sudah tersedia: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, atau `permissions.defaultMode: "bypassPermissions"` di [pengaturan pengguna, `--settings`, atau pengaturan terkelola](/docs/id/settings-reference#permissions-defaultmode). Jika tidak, pembaruan tersebut tidak berpengaruh apa pun. Pembaruan juga tidak berpengaruh apa pun ketika [`permissions.disableBypassPermissionsMode`](/docs/id/permissions#managed-settings) menonaktifkan mode tersebut, atau ketika sesi dimulai dalam [mode terbatas](/docs/id/cli-reference#cli-flags).

2112 2107 

2113 `bypassPermissions` tidak pernah dipertahankan sebagai `defaultMode` terlepas dari `destination`.2108 `bypassPermissions` tidak pernah disimpan sebagai `defaultMode` terlepas dari nilai `destination`.

2114</Note>2109</Note>

2115 2110 

2116Bidang `destination` pada setiap entry menentukan apakah perubahan tetap dalam memori atau persisten ke file pengaturan.2111Field `destination` pada setiap entri menentukan apakah perubahan tetap berada di memori atau disimpan ke file pengaturan.

2117 2112 

2118| `destination` | Menulis ke |2113| `destination` | Menulis ke |

2119| :- | :- |2114| :- | :- |

2120| `session` | hanya dalam memori, dibuang ketika sesi berakhir |2115| `session` | hanya di memori, dibuang ketika sesi berakhir |

2121| `localSettings` | `.claude/settings.local.json` |2116| `localSettings` | `.claude/settings.local.json` |

2122| `projectSettings` | `.claude/settings.json` |2117| `projectSettings` | `.claude/settings.json` |

2123| `userSettings` | `~/.claude/settings.json` |2118| `userSettings` | `~/.claude/settings.json` |

2124 2119 

2125Hook dapat mengembalikan salah satu dari `permission_suggestions` yang diterima sebagai output `updatedPermissions` miliknya sendiri.2120Sebuah hook dapat mengembalikan salah satu `permission_suggestions` yang diterimanya sebagai output `updatedPermissions` miliknya sendiri.

2126 2121 

2127<h3 id="posttooluse">2122<h3 id="posttooluse">

2128 PostToolUse2123 PostToolUse

2129</h3>2124</h3>

2130 2125 

2131Dijalankan segera setelah tool selesai dengan sukses.2126Berjalan segera setelah sebuah tool berhasil diselesaikan.

2132 2127 

2133Cocok pada nama tool, nilai yang sama seperti PreToolUse.2128Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2134 2129 

2135Cocok lebih luas ketika nama tool bukan filter yang tepat:2130Lakukan pencocokan yang lebih luas ketika nama tool bukan filter yang tepat:

2136 2131 

2137* Untuk menjalankan hook setelah tool apa pun selesai dengan sukses, hilangkan `matcher` atau atur ke `"*"`. Hook Anda kemudian dapat menemukan apa yang berubah sendiri, misalnya dengan menjalankan `git status --porcelain`, yang juga mencantumkan file yang tidak dilacak yang `git diff` lewatkan. Untuk pemanggilan tool yang gagal, tambahkan hook yang sama di bawah [PostToolUseFailure](#posttoolusefailure).2132* Untuk menjalankan hook setelah tool apa pun berhasil diselesaikan, hilangkan `matcher` atau atur ke `"*"`. Hook Anda kemudian dapat mengetahui sendiri apa yang berubah, misalnya dengan menjalankan `git status --porcelain`, yang juga mencantumkan file yang tidak dilacak yang terlewat oleh `git diff`. Untuk panggilan tool yang gagal, tambahkan hook yang sama di bawah [PostToolUseFailure](#posttoolusefailure).

2138* Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged). Claude Code tidak menjalankan hook `PostToolUse` yang cocok dengan `Edit|Write` ketika perintah `Bash` atau proses di luar Claude Code menulis ulang file yang sama.2133* Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged). Claude Code tidak menjalankan hook `PostToolUse` yang mencocokkan `Edit|Write` ketika perintah `Bash` atau proses di luar Claude Code menulis ulang file yang sama.

2139 2134 

2140<h4 id="posttooluse-input">2135<h4 id="posttooluse-input">

2141 PostToolUse input2136 Input PostToolUse

2142</h4>2137</h4>

2143 2138 

2144Hooks `PostToolUse` dijalankan setelah tool sudah dijalankan dengan sukses. Input mencakup `tool_input`, argumen yang dikirim ke tool, dan `tool_response`, hasil yang dikembalikan. Skema yang tepat untuk keduanya tergantung pada tool. Path `tool_input` file-tool tiba dalam format yang sama seperti untuk [PreToolUse](#pretooluse-input): selalu absolut, dengan pemisah asli platform, jadi backslashes di Windows. Untuk MCP tool, input juga membawa objek [`mcp_server`](#pretooluse-input).2139Hook `PostToolUse` dipicu setelah sebuah tool berhasil dieksekusi. Input mencakup `tool_input`, yaitu argumen yang dikirim ke tool, dan `tool_response`, yaitu hasil yang dikembalikannya. Skema persis untuk keduanya bergantung pada tool. Path `tool_input` pada tool file datang dalam format yang sama seperti untuk [PreToolUse](#pretooluse-input): selalu absolut, dengan pemisah native platform, sehingga menggunakan backslash di Windows. Untuk tool MCP, input juga membawa objek [`mcp_server`](#pretooluse-input).

2145 2140 

2146```json theme={null}2141```json theme={null}

2147{2142{


2164}2159}

2165```2160```

2166 2161 

2167| Bidang | Deskripsi |2162| Field | Deskripsi |

2168| :- | :- |2163| :- | :- |

2169| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Mengecualikan waktu yang dihabiskan dalam prompt izin dan PreToolUse hooks |2164| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Tidak termasuk waktu yang dihabiskan dalam permintaan izin dan hook PreToolUse |

2170 2165 

2171<h4 id="posttooluse-decision-control">2166<h4 id="posttooluse-decision-control">

2172 PostToolUse decision control2167 Kontrol keputusan PostToolUse

2173</h4>2168</h4>

2174 2169 

2175Hooks `PostToolUse` dapat memberikan umpan balik ke Claude setelah eksekusi tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:2170Hook `PostToolUse` dapat memberikan umpan balik kepada Claude setelah eksekusi tool. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:

2176 2171 

2177| Bidang | Deskripsi |2172| Field | Deskripsi |

2178| :- | :- |2173| :- | :- |

2179| `decision` | `"block"` menambahkan `reason` di sebelah hasil tool. Claude masih melihat output asli; untuk menggantinya, gunakan `updatedToolOutput` |2174| `decision` | `"block"` menambahkan `reason` di samping hasil tool. Claude tetap melihat output asli; untuk menggantinya, gunakan `updatedToolOutput` |

2180| `reason` | Penjelasan ditampilkan ke Claude saat `decision` adalah `"block"` |2175| `reason` | Penjelasan yang ditampilkan kepada Claude ketika `decision` adalah `"block"` |

2181| `additionalContext` | String ditambahkan ke konteks Claude bersama hasil tool. Lihat [Add context for Claude](#add-context-for-claude) |2176| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

2182| `classifierContext` | Catatan singkat tentang hasil panggilan ini untuk pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) daripada untuk Claude. Lihat [Annotate a result for the auto mode classifier](#annotate-a-result-for-the-auto-mode-classifier). Memerlukan Claude Code v2.1.236 atau lebih baru |2177| `classifierContext` | Catatan singkat tentang hasil panggilan ini untuk pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan untuk Claude. Lihat [Memberi anotasi pada hasil untuk pengklasifikasi auto mode](#annotate-a-result-for-the-auto-mode-classifier). Memerlukan Claude Code v2.1.236 atau lebih baru |

2183| `updatedToolOutput` | Mengganti output tool dengan nilai yang disediakan sebelum dikirim ke Claude. Nilai harus cocok dengan bentuk output tool |2178| `updatedToolOutput` | Mengganti output tool dengan nilai yang diberikan sebelum dikirim ke Claude. Nilai harus sesuai dengan bentuk output tool |

2184| `updatedMCPToolOutput` | Mengganti output untuk [MCP tools](#match-mcp-tools) saja. Lebih suka `updatedToolOutput`, yang bekerja untuk semua tools |2179| `updatedMCPToolOutput` | Mengganti output hanya untuk [tool MCP](#match-mcp-tools). Sebaiknya gunakan `updatedToolOutput`, yang berfungsi untuk semua tool |

2185 2180 

2186Contoh di bawah mengganti output pemanggilan `Bash`. Nilai pengganti cocok dengan bentuk output tool `Bash`:2181Contoh di bawah ini mengganti output dari panggilan `Bash`. Nilai pengganti sesuai dengan bentuk output tool `Bash`:

2187 2182 

2188```json theme={null}2183```json theme={null}

2189{2184{


2201```2196```

2202 2197 

2203<Warning>2198<Warning>

2204 `updatedToolOutput` hanya mengubah apa yang dilihat Claude. Tool sudah dijalankan pada saat hook dijalankan, jadi file apa pun yang ditulis, perintah yang dijalankan, atau permintaan jaringan yang dikirim sudah berlaku. Telemetri seperti span tool OpenTelemetry dan acara analitik juga menangkap output asli sebelum hook dijalankan. Untuk mencegah atau memodifikasi pemanggilan tool sebelum dijalankan, gunakan hook [PreToolUse](#pretooluse) sebagai gantinya.2199 `updatedToolOutput` hanya mengubah apa yang dilihat Claude. Tool sudah berjalan saat hook dipicu, sehingga setiap file yang ditulis, perintah yang dieksekusi, atau permintaan jaringan yang dikirim sudah berlaku. Telemetri seperti span tool OpenTelemetry dan event analitik juga menangkap output asli sebelum hook berjalan. Untuk mencegah atau memodifikasi panggilan tool sebelum berjalan, gunakan hook [PreToolUse](#pretooluse) sebagai gantinya.

2205 2200 

2206 Nilai pengganti harus cocok dengan bentuk output tool. Tools bawaan mengembalikan objek terstruktur daripada string biasa. Misalnya, `Bash` mengembalikan objek dengan bidang `stdout`, `stderr`, `interrupted`, dan `isImage`. Untuk tools bawaan, nilai yang tidak cocok dengan skema output tool diabaikan dan output asli digunakan. Output tool MCP dilewatkan tanpa validasi skema. Menghapus detail kesalahan yang Claude butuhkan dapat menyebabkannya melanjutkan dengan asumsi yang salah.2201 Nilai pengganti harus sesuai dengan bentuk output tool. Tool bawaan mengembalikan objek terstruktur, bukan string biasa. Misalnya, `Bash` mengembalikan objek dengan field `stdout`, `stderr`, `interrupted`, dan `isImage`. Untuk tool bawaan, nilai yang tidak sesuai dengan skema output tool akan diabaikan dan output asli yang digunakan. Output tool MCP diteruskan tanpa validasi skema. Menghapus detail error yang dibutuhkan Claude dapat menyebabkannya melanjutkan berdasarkan asumsi yang salah.

2207</Warning>2202</Warning>

2208 2203 

2209<h4 id="annotate-a-result-for-the-auto-mode-classifier">2204<h4 id="annotate-a-result-for-the-auto-mode-classifier">

2210 Annotate a result for the auto mode classifier2205 Memberi anotasi pada hasil untuk pengklasifikasi auto mode

2211</h4>2206</h4>

2212 2207 

2213Kembalikan `classifierContext` untuk mengirimkan catatan singkat tentang hasil pemanggilan tool ke pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) daripada ke Claude. Pengklasifikasi [tidak pernah menerima hasil tool sendiri](/docs/id/permission-modes#how-the-classifier-evaluates-actions), jadi bidang ini adalah cara yang didukung untuk memberitahunya sesuatu tentang apa yang dikembalikan panggilan sebelum itu meninjau tindakan yang lebih baru. Bidang memerlukan Claude Code v2.1.236 atau lebih baru.2208Kembalikan `classifierContext` untuk mengirim catatan singkat tentang hasil panggilan tool ke pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan ke Claude. Pengklasifikasi [tidak pernah menerima hasil tool itu sendiri](/docs/id/permission-modes#how-the-classifier-evaluates-actions), sehingga field ini adalah cara yang didukung untuk memberitahunya sesuatu tentang apa yang dikembalikan suatu panggilan sebelum ia meninjau tindakan berikutnya. Field ini memerlukan Claude Code v2.1.236 atau lebih baru.

2214 2209 

2215Contoh di bawah memberitahu pengklasifikasi dari mana output query berasal:2210Contoh di bawah ini memberi tahu pengklasifikasi dari mana output sebuah query berasal:

2216 2211 

2217```json theme={null}2212```json theme={null}

2218{2213{


2223}2218}

2224```2219```

2225 2220 

2226Berapa banyak bobot yang diberikan pengklasifikasi pada catatan tergantung pada di mana Anda mengonfigurasi hook:2221Seberapa besar bobot yang diberikan pengklasifikasi pada catatan tersebut bergantung pada tempat Anda mengonfigurasi hook:

2227 2222 

2228* **Hooks yang dikonfigurasi dalam Claude Code**: untuk hooks dari file pengaturan, plugins, skills, dan frontmatter agent, pengklasifikasi memperlakukan catatan sebagai konteks yang tidak diverifikasi yang disediakan aplikasi. Catatan tidak pernah menetapkan niat pengguna, dan jika itu mengklaim Anda menyetujui atau meminta sesuatu, pengklasifikasi memeriksa klaim itu terhadap pesan Anda sendiri dalam percakapan2223* **Hook yang dikonfigurasi di Claude Code**: untuk hook dari file pengaturan, plugin, skill, dan frontmatter agent, pengklasifikasi memperlakukan catatan tersebut sebagai konteks yang belum diverifikasi dan disediakan oleh aplikasi. Catatan tersebut tidak pernah menetapkan niat pengguna, dan jika catatan itu mengklaim bahwa Anda menyetujui atau meminta sesuatu, pengklasifikasi memeriksa klaim tersebut terhadap pesan Anda sendiri dalam percakapan

2229* **Callback in-process Agent SDK**: ketika aplikasi yang menyematkan Claude Code mendaftarkan hook sebagai callback [TypeScript SDK](/docs/id/agent-sdk/hooks) dan mengembalikan catatan selama sesi langsung, pengklasifikasi dapat menimbang pernyataan pengguna yang disampaikan dalam catatan sebagai niat pengguna. Pernyataan seperti itu dapat memenuhi persyaratan persetujuan yang akan diterima pengklasifikasi dari pesan yang Anda kirim, tetapi tidak pernah mengangkat blok yang pesan Anda sendiri tidak bisa angkat juga. Setelah sesi dilanjutkan, Claude Code memperlakukan catatan yang dipulihkan sebagai konteks yang tidak diverifikasi. Ketika hooks dari kedua grup menganotasi panggilan yang sama, pengklasifikasi memperlakukan catatan gabungan sebagai konteks yang tidak diverifikasi2224* **Callback Agent SDK dalam proses**: ketika aplikasi yang menyematkan Claude Code mendaftarkan hook sebagai [callback TypeScript SDK](/docs/id/agent-sdk/hooks) dan mengembalikan catatan selama sesi aktif, pengklasifikasi dapat menimbang pernyataan pengguna yang diteruskan dalam catatan sebagai niat pengguna. Pernyataan seperti itu dapat memenuhi persyaratan persetujuan yang akan diterima pengklasifikasi dari pesan yang Anda kirim, tetapi tidak pernah mencabut blokir yang juga tidak dapat dicabut oleh pesan Anda sendiri. Setelah sesi dilanjutkan, Claude Code memperlakukan catatan yang dipulihkan sebagai konteks yang belum diverifikasi. Ketika hook dari kedua kelompok memberi anotasi pada panggilan yang sama, pengklasifikasi memperlakukan catatan gabungan sebagai belum diverifikasi

2230 2225 

2231Claude Code menerapkan batas-batas ini ketika mengirimkan catatan:2226Claude Code menerapkan batasan berikut saat mengirimkan catatan:

2232 2227 

2233* **Panjang**: Claude Code membatasi catatan untuk satu pemanggilan tool pada 2.000 karakter dan memotong sisanya. Batas dibagikan di seluruh setiap hook yang merespons panggilan itu2228* **Panjang**: Claude Code membatasi catatan untuk satu panggilan tool hingga 2.000 karakter dan memotong sisanya. Batas ini dibagi di antara setiap hook yang merespons panggilan tersebut

2234* **Respons sinkron saja**: Claude Code mengabaikan bidang dalam respons hook yang [berjalan di latar belakang](#run-hooks-in-the-background), karena respons itu tiba setelah Claude Code mencatat hasil tool2229* **Hanya respons sinkron**: Claude Code mengabaikan field ini dalam respons hook yang [berjalan di latar belakang](#run-hooks-in-the-background), karena respons tersebut tiba setelah Claude Code mencatat hasil tool

2235* **Panggilan yang tidak dicatat pengklasifikasi**: transkrip pengklasifikasi menghilangkan pencarian read-only seperti pembacaan file dan pencarian. Claude Code membuang catatan yang dilampirkan pada salah satu panggilan itu2230* **Panggilan yang tidak dicatat oleh pengklasifikasi**: transkrip pengklasifikasi menghilangkan pencarian read-only seperti pembacaan file dan pencarian. Claude Code membuang catatan yang dilampirkan ke salah satu panggilan tersebut

2236* **Interaksi dengan penulisan ulang**: ketika catatan menjelaskan output yang Anda ganti dengan `updatedToolOutput`, kembalikan kedua bidang dalam respons hook yang sama. Claude Code menjatuhkan catatan jika penulisan ulang itu ditolak atau penulisan ulang hook lain menggantinya. Claude Code mengirimkan catatan yang Anda kembalikan tanpa penulisan ulang bahkan ketika hook lain menulis ulang output2231* **Interaksi dengan penulisan ulang**: ketika catatan menjelaskan output yang Anda ganti dengan `updatedToolOutput`, kembalikan kedua field dalam respons hook yang sama. Claude Code membuang catatan tersebut jika penulisan ulang itu ditolak atau penulisan ulang hook lain menggantikannya. Claude Code mengirimkan catatan yang Anda kembalikan tanpa penulisan ulang bahkan ketika hook lain menulis ulang output

2237 2232 

2238<Warning>2233<Warning>

2239 Pengklasifikasi membaca konten yang Anda tempatkan dalam `classifierContext` sebagai informasi dari aplikasi yang menyelenggarakan sesi, jadi jangan salin output tool yang tidak dipercaya atau teks pihak ketiga ke dalamnya. Jaga catatan ke pernyataan singkat tentang panggilan satu ini, seperti fakta tentang asalnya atau pernyataan pengguna tentangnya; jangan gunakan bidang untuk mengirimkan pesan yang tidak terkait atau aliran acara.2234 Pengklasifikasi membaca konten yang Anda tempatkan di `classifierContext` sebagai informasi dari aplikasi yang menghosting sesi, jadi jangan menyalin output tool yang tidak tepercaya atau teks pihak ketiga ke dalamnya. Buat catatan tetap berupa pernyataan singkat tentang satu panggilan ini, seperti fakta tentang asal-usulnya atau pernyataan pengguna tentangnya; jangan gunakan field ini untuk menyampaikan pesan yang tidak terkait atau aliran event.

2240</Warning>2235</Warning>

2241 2236 

2242<h3 id="posttoolusefailure">2237<h3 id="posttoolusefailure">

2243 PostToolUseFailure2238 PostToolUseFailure

2244</h3>2239</h3>

2245 2240 

2246Dijalankan ketika tool yang mulai dijalankan gagal: tool melempar kesalahan, atau tool MCP mengembalikan hasil kesalahan. Gunakan ini untuk mencatat kegagalan, mengirim alert, atau memberikan umpan balik korektif ke Claude.2241Berjalan ketika sebuah tool yang sudah mulai dieksekusi gagal: tool melempar error, atau tool MCP mengembalikan hasil error. Gunakan ini untuk mencatat kegagalan, mengirim peringatan, atau memberikan umpan balik korektif kepada Claude.

2247 2242 

2248Cocok pada nama tool, nilai yang sama seperti PreToolUse.2243Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2249 2244 

2250<Note>2245<Note>

2251 Event ini tidak dijalankan untuk pemanggilan tool yang ditolak sebelum eksekusi: nama tool yang tidak dikenal, input yang gagal validasi skema atau tool-spesifik, atau penolakan izin. Penolakan validasi dikembalikan sebagai hasil `tool_use_error` dan terjadi sebelum hooks dijalankan, jadi mereka tidak menjalankan `PreToolUse` atau event ini. Penolakan izin menjalankan `PreToolUse` tetapi bukan event ini; lihat [PermissionDenied](#permissiondenied).2246 Event ini tidak dipicu untuk panggilan tool yang ditolak sebelum eksekusi: nama tool yang tidak dikenal, input yang gagal dalam validasi skema atau validasi khusus tool, atau penolakan izin. Penolakan validasi dikembalikan sebagai hasil `tool_use_error` dan terjadi sebelum hook berjalan, sehingga tidak memicu `PreToolUse` maupun `PostToolUseFailure`. Penolakan izin memicu `PreToolUse` tetapi tidak memicu event ini; lihat [PermissionDenied](#permissiondenied).

2252</Note>2247</Note>

2253 2248 

2254<h4 id="posttoolusefailure-input">2249<h4 id="posttoolusefailure-input">

2255 PostToolUseFailure input2250 Input PostToolUseFailure

2256</h4>2251</h4>

2257 2252 

2258PostToolUseFailure hooks menerima bidang `tool_name` dan `tool_input` yang sama seperti PostToolUse, bersama dengan informasi kesalahan sebagai bidang tingkat atas. Untuk MCP tool, mereka juga menerima objek [`mcp_server`](#pretooluse-input). Misalnya, perintah `npm test` yang gagal mungkin memberikan:2253Hook PostToolUseFailure menerima field `tool_name` dan `tool_input` yang sama seperti PostToolUse, bersama dengan informasi error sebagai field tingkat atas. Untuk tool MCP, hook juga menerima objek [`mcp_server`](#pretooluse-input). Misalnya, perintah `npm test` yang gagal mungkin mengirimkan:

2259 2254 

2260```json theme={null}2255```json theme={null}

2261{2256{


2276}2271}

2277```2272```

2278 2273 

2279| Bidang | Deskripsi |2274| Field | Deskripsi |

2280| :- | :- |2275| :- | :- |

2281| `error` | String menjelaskan apa yang salah. Format tergantung pada tool yang gagal |2276| `error` | String yang menjelaskan apa yang salah. Formatnya bergantung pada tool yang gagal |

2282| `is_interrupt` | Boolean opsional. True ketika kegagalan mencapai Claude Code sebagai abort daripada sebagai kesalahan yang dilaporkan tool. Membatalkan tool yang berjalan tidak menjalankan hook ini; hasil tool membawa pesan interupsi sebagai gantinya |2277| `is_interrupt` | Boolean opsional. True ketika kegagalan mencapai Claude Code sebagai pembatalan, bukan sebagai error yang dilaporkan oleh tool. Membatalkan tool yang sedang berjalan tidak memicu hook ini; hasil tool membawa pesan interupsi sebagai gantinya |

2283| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Mengecualikan waktu yang dihabiskan dalam prompt izin dan PreToolUse hooks |2278| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Tidak termasuk waktu yang dihabiskan dalam permintaan izin dan hook PreToolUse |

2284 2279 

2285String `error` umumnya teks yang sama yang diterima Claude sebagai hasil tool yang gagal. Format-nya bervariasi menurut tool dan kegagalan. Kunci hook Anda pada `tool_name`, `is_interrupt`, dan baris pertama `Exit code N`; perlakukan sisa string sebagai teks tampilan, bukan format yang stabil.2280String `error` umumnya merupakan teks yang sama yang diterima Claude sebagai hasil tool yang gagal. Formatnya bervariasi menurut tool dan jenis kegagalan. Dasarkan hook Anda pada `tool_name`, `is_interrupt`, dan baris pertama `Exit code N`; perlakukan sisa string sebagai teks tampilan, bukan format yang stabil.

2286 2281 

2287* Untuk Bash dan PowerShell, perintah yang dijalankan dan keluar menghasilkan baris pertama `Exit code N`, kemudian output apa pun yang dihasilkan perintah sebagai satu blok dengan stdout dan stderr yang diinterleave2282* Untuk Bash dan PowerShell, perintah yang berjalan dan keluar menghasilkan baris pertama `Exit code N`, lalu output apa pun yang dihasilkan perintah sebagai satu blok dengan stdout dan stderr yang saling berselang-seling

2288* Payload juga dapat membawa pesan kegagalan telanjang tanpa baris kode keluar, ketika Claude Code tidak dapat memulai proses shell itu sendiri2283* Sebuah payload juga dapat membawa pesan kegagalan polos tanpa baris exit code, ketika Claude Code tidak dapat memulai proses shell itu sendiri

2289* Claude Code middle-truncates string panjang di sekitar penanda `... [N characters truncated] ...`, dan dapat menyisipkan baris miliknya sendiri, seperti `Command timed out after 2m 0s`2284* Claude Code memotong bagian tengah string panjang di sekitar penanda `... [N characters truncated] ...`, dan dapat menyisipkan baris miliknya sendiri, seperti `Command timed out after 2m 0s`

2290 2285 

2291<h4 id="posttoolusefailure-decision-control">2286<h4 id="posttoolusefailure-decision-control">

2292 PostToolUseFailure decision control2287 Kontrol keputusan PostToolUseFailure

2293</h4>2288</h4>

2294 2289 

2295Hooks `PostToolUseFailure` dapat memberikan konteks ke Claude setelah kegagalan tool. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:2290Hook `PostToolUseFailure` dapat memberikan konteks kepada Claude setelah kegagalan tool. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:

2296 2291 

2297| Bidang | Deskripsi |2292| Field | Deskripsi |

2298| :- | :- |2293| :- | :- |

2299| `additionalContext` | String ditambahkan ke konteks Claude bersama kesalahan. Lihat [Add context for Claude](#add-context-for-claude) |2294| `additionalContext` | String yang ditambahkan ke konteks Claude bersama error. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

2300 2295 

2301```json theme={null}2296```json theme={null}

2302{2297{


2311 PostToolBatch2306 PostToolBatch

2312</h3>2307</h3>

2313 2308 

2314Dijalankan sekali setelah setiap tool call dalam batch telah terselesaikan, sebelum Claude Code mengirimkan permintaan berikutnya ke model. `PostToolUse` dijalankan sekali per tool, yang berarti dijalankan secara bersamaan ketika Claude membuat pemanggilan tool paralel. `PostToolBatch` dijalankan tepat sekali dengan batch lengkap, jadi ini adalah tempat yang tepat untuk menyuntikkan konteks yang bergantung pada set tools yang dijalankan daripada pada tool tunggal. Tidak ada matcher untuk event ini.2309Berjalan sekali setelah setiap panggilan tool dalam satu batch selesai diproses, sebelum Claude Code mengirim permintaan berikutnya ke model. `PostToolUse` dipicu sekali per tool, yang berarti ia dipicu secara bersamaan ketika Claude melakukan panggilan tool paralel. `PostToolBatch` dipicu tepat sekali dengan batch lengkap, sehingga merupakan tempat yang tepat untuk menyuntikkan konteks yang bergantung pada kumpulan tool yang berjalan, bukan pada satu tool tertentu. Tidak ada matcher untuk event ini.

2315 2310 

2316<h4 id="posttoolbatch-input">2311<h4 id="posttoolbatch-input">

2317 PostToolBatch input2312 Input PostToolBatch

2318</h4>2313</h4>

2319 2314 

2320Selain [bidang input umum](#common-input-fields), PostToolBatch hooks menerima `tool_calls`, array yang menjelaskan setiap pemanggilan tool dalam batch:2315Selain [field input umum](#common-input-fields), hook PostToolBatch menerima `tool_calls`, sebuah array yang menjelaskan setiap panggilan tool dalam batch:

2321 2316 

2322```json theme={null}2317```json theme={null}

2323{2318{


2331 "tool_name": "Read",2326 "tool_name": "Read",

2332 "tool_input": {"file_path": "/.../ledger/accounts.py"},2327 "tool_input": {"file_path": "/.../ledger/accounts.py"},

2333 "tool_use_id": "toolu_01...",2328 "tool_use_id": "toolu_01...",

2334 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."2329 "tool_response": "1\tfrom __future__ import annotations\n2\t..."

2335 },2330 },

2336 {2331 {

2337 "tool_name": "Read",2332 "tool_name": "Read",

2338 "tool_input": {"file_path": "/.../ledger/transactions.py"},2333 "tool_input": {"file_path": "/.../ledger/transactions.py"},

2339 "tool_use_id": "toolu_02...",2334 "tool_use_id": "toolu_02...",

2340 "tool_response": " 1\tfrom __future__ import annotations\n 2\t..."2335 "tool_response": "1\tfrom __future__ import annotations\n2\t..."

2341 }2336 }

2342 ]2337 ]

2343}2338}

2344```2339```

2345 2340 

2346`tool_response` berisi konten yang sama yang diterima model dalam blok `tool_result` yang sesuai. Nilainya adalah string yang diserialisasi atau array blok konten, persis seperti yang dikeluarkan tool. Untuk `Read`, itu berarti teks dengan awalan nomor baris daripada konten file mentah. Respons dapat besar, jadi hanya parse bidang yang Anda butuhkan.2341`tool_response` berisi konten yang sama yang diterima model dalam blok `tool_result` yang sesuai. Nilainya adalah string terserialisasi atau array content-block, persis seperti yang dikeluarkan tool. Untuk `Read`, itu berarti teks dengan awalan nomor baris, bukan konten file mentah. Respons bisa berukuran besar, jadi parse hanya field yang Anda butuhkan.

2347 2342 

2348<Note>2343<Note>

2349 Bentuk `tool_response` berbeda dari `PostToolUse`. `PostToolUse` meneruskan objek `Output` terstruktur tool, seperti `{filePath: "...", type: "create"}` untuk `Write`; `PostToolBatch` meneruskan konten `tool_result` yang diserialisasi yang dilihat model.2344 Bentuk `tool_response` berbeda dengan milik `PostToolUse`. `PostToolUse` meneruskan objek `Output` terstruktur milik tool, seperti `{filePath: "...", type: "create"}` untuk `Write`; `PostToolBatch` meneruskan konten `tool_result` terserialisasi yang dilihat model.

2350</Note>2345</Note>

2351 2346 

2352<h4 id="posttoolbatch-decision-control">2347<h4 id="posttoolbatch-decision-control">

2353 PostToolBatch decision control2348 Kontrol keputusan PostToolBatch

2354</h4>2349</h4>

2355 2350 

2356Hooks `PostToolBatch` dapat menyuntikkan konteks untuk Claude. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:2351Hook `PostToolBatch` dapat menyuntikkan konteks untuk Claude. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:

2357 2352 

2358| Bidang | Deskripsi |2353| Field | Deskripsi |

2359| :- | :- |2354| :- | :- |

2360| `additionalContext` | String konteks yang disuntikkan sekali sebelum panggilan model berikutnya. Lihat [Add context for Claude](#add-context-for-claude) untuk detail pengiriman, apa yang harus dimasukkan, dan cara sesi yang dilanjutkan menangani nilai masa lalu |2355| `additionalContext` | String konteks yang disuntikkan sekali sebelum panggilan model berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) untuk detail pengiriman, apa yang perlu dimasukkan, dan bagaimana sesi yang dilanjutkan menangani nilai sebelumnya |

2361 2356 

2362```json theme={null}2357```json theme={null}

2363{2358{


2368}2363}

2369```2364```

2370 2365 

2371Mengembalikan `decision: "block"` atau `continue: false` menghentikan loop agentic sebelum panggilan model berikutnya. Pesan pemblokiran berasal dari JSON `reason` atau `stopReason`, atau dari stderr pada keluar 2. Anda melihatnya sebagai peringatan dalam transkrip, dan itu tetap dalam percakapan, jadi Claude melihatnya ketika percakapan berlanjut.2366Mengembalikan `decision: "block"` atau `continue: false` menghentikan agentic loop sebelum panggilan model berikutnya. Pesan pemblokiran berasal dari `reason` atau `stopReason` JSON, atau dari stderr pada exit 2. Anda melihatnya sebagai peringatan di transkrip, dan pesan itu tetap ada dalam percakapan, sehingga Claude melihatnya ketika percakapan berlanjut.

2372 2367 

2373<h3 id="permissiondenied">2368<h3 id="permissiondenied">

2374 PermissionDenied2369 PermissionDenied

2375</h3>2370</h3>

2376 2371 

2377Dijalankan ketika [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) menolak pemanggilan tool, termasuk ketika itu menolak tanpa putusan pengklasifikasi karena [pemeriksaan keamanan terpisah dari auto mode menolak permintaan pengklasifikasi sendiri](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action) atau respons-nya tidak diparse. Hook ini hanya dijalankan dalam auto mode: itu tidak dijalankan ketika Anda secara manual menolak dialog izin, ketika hook `PreToolUse` memblokir panggilan, atau ketika aturan `deny` cocok. Gunakan untuk mencatat penolakan, menyesuaikan konfigurasi, atau memberitahu model itu dapat mencoba lagi pemanggilan tool.2372Berjalan ketika [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) menolak panggilan tool, termasuk ketika ia menolak tanpa putusan pengklasifikasi karena [pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action) atau responsnya tidak dapat di-parse. Hook ini hanya dipicu dalam auto mode: hook ini tidak berjalan ketika Anda menolak dialog izin secara manual, ketika hook `PreToolUse` memblokir panggilan, atau ketika aturan `deny` cocok. Gunakan ini untuk mencatat penolakan, menyesuaikan konfigurasi, atau memberi tahu model bahwa ia boleh mencoba ulang panggilan tool.

2378 2373 

2379Cocok pada nama tool, nilai yang sama seperti PreToolUse.2374Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2380 2375 

2381<h4 id="permissiondenied-input">2376<h4 id="permissiondenied-input">

2382 PermissionDenied input2377 Input PermissionDenied

2383</h4>2378</h4>

2384 2379 

2385Selain [bidang input umum](#common-input-fields), PermissionDenied hooks menerima `tool_name`, `tool_input`, `tool_use_id`, dan `reason`. Untuk MCP tool, mereka juga menerima objek [`mcp_server`](#pretooluse-input).2380Selain [field input umum](#common-input-fields), hook PermissionDenied menerima `tool_name`, `tool_input`, `tool_use_id`, dan `reason`. Untuk tool MCP, hook juga menerima objek [`mcp_server`](#pretooluse-input).

2386 2381 

2387```json theme={null}2382```json theme={null}

2388{2383{


2401}2396}

2402```2397```

2403 2398 

2404| Bidang | Deskripsi |2399| Field | Deskripsi |

2405| :- | :- |2400| :- | :- |

2406| `reason` | Alasan penolakan. Untuk putusan pengklasifikasi, dalam sebagian besar sesi itu menamai aturan yang cocok dalam tanda kurung siku, seperti `[Data Exfiltration]`; lihat [Review denials](/docs/id/auto-mode-config#review-denials) untuk bentuk lainnya. Untuk [penolakan tanpa putusan](#permissiondenied-decision-control), itu dimulai dengan `Auto mode could not evaluate this action and is blocking it for safety`. Untuk penolakan karena model pengklasifikasi tidak tersedia, itu adalah teks tetap `Classifier unavailable` |2401| `reason` | Alasan penolakan. Untuk putusan pengklasifikasi, di sebagian besar sesi alasan ini menyebutkan aturan yang cocok dalam kurung siku, seperti `[Data Exfiltration]`; lihat [Meninjau penolakan](/docs/id/auto-mode-config#review-denials) untuk bentuk lainnya. Untuk [penolakan tanpa putusan](#permissiondenied-decision-control), alasan dimulai dengan `Auto mode could not evaluate this action and is blocking it for safety`. Untuk penolakan karena model pengklasifikasi tidak tersedia, alasannya adalah teks tetap `Classifier unavailable` |

2407 2402 

2408<h4 id="permissiondenied-decision-control">2403<h4 id="permissiondenied-decision-control">

2409 PermissionDenied decision control2404 Kontrol keputusan PermissionDenied

2410</h4>2405</h4>

2411 2406 

2412PermissionDenied hooks dapat memberitahu model itu dapat mencoba lagi pemanggilan tool yang ditolak. Kembalikan objek JSON dengan `hookSpecificOutput.retry` diatur ke `true`:2407Hook PermissionDenied dapat memberi tahu model bahwa ia boleh mencoba ulang panggilan tool yang ditolak. Kembalikan objek JSON dengan `hookSpecificOutput.retry` diatur ke `true`:

2413 2408 

2414```json theme={null}2409```json theme={null}

2415{2410{


2420}2415}

2421```2416```

2422 2417 

2423Ketika `retry` adalah `true`, Claude Code menambahkan pesan ke percakapan memberitahu model itu dapat mencoba lagi pemanggilan tool. Penolakan itu sendiri tidak dibatalkan. Jika hook Anda tidak mengembalikan JSON, atau mengembalikan `retry: false`, penolakan tetap dan model menerima pesan penolakan asli.2418Ketika `retry` bernilai `true`, Claude Code menambahkan pesan ke percakapan yang memberi tahu model bahwa ia boleh mencoba ulang panggilan tool. Claude Code tidak membatalkan penolakan itu sendiri. Jika hook Anda tidak mengembalikan JSON, atau mengembalikan `retry: false`, penolakan tetap berlaku dan model menerima pesan penolakan asli.

2424 2419 

2425Claude Code mengabaikan `retry: true` ketika pengklasifikasi menghasilkan [tidak ada putusan pada tindakan](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action): respons-nya tidak diparse, atau pemeriksaan keamanan terpisah dari auto mode menolak permintaan pengklasifikasi sendiri. Untuk penolakan itu, Claude Code sudah memberitahu model dalam pesan penolakan apakah harus mencoba lagi nanti atau melanjutkan.2420Claude Code mengabaikan `retry: true` ketika pengklasifikasi tidak menghasilkan [putusan atas tindakan tersebut](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action): responsnya tidak dapat di-parse, atau pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri. Untuk penolakan tersebut, Claude Code sudah memberi tahu model dalam pesan penolakan apakah harus mencoba ulang nanti atau melanjutkan.

2426 2421 

2427<h3 id="notification">2422<h3 id="notification">

2428 Notification2423 Notification

2429</h3>2424</h3>

2430 2425 

2431Dijalankan ketika Claude Code mengirimkan notifikasi. Cocok pada tipe notifikasi. Hilangkan matcher untuk menjalankan hooks untuk semua tipe notifikasi.2426Berjalan ketika Claude Code mengirim notifikasi. Mencocokkan berdasarkan jenis notifikasi. Hilangkan matcher untuk menjalankan hook untuk semua jenis notifikasi.

2432 2427 

2433Anda menerima hook events ini bahkan dengan notifikasi desktop dimatikan: pengaturan `preferredNotifChannel`, termasuk `notifications_disabled`, hanya mengubah cara Anda diperingatkan, bukan apakah hook Anda dijalankan.2428Anda menerima event hook ini bahkan ketika notifikasi desktop dimatikan: pengaturan `preferredNotifChannel`, termasuk `notifications_disabled`, hanya mengubah cara Anda diberi peringatan, bukan apakah hook Anda berjalan.

2434 2429 

2435| Matcher | Kapan dijalankan |2430| Matcher | Kapan dipicu |

2436| :- | :- |2431| :- | :- |

2437| `permission_prompt` | Claude memerlukan Anda untuk menyetujui penggunaan tool atau [network request](/docs/id/sandboxing#network-isolation) perintah sandboxed, dan prompt telah menunggu sekitar enam detik |2432| `permission_prompt` | Claude memerlukan Anda untuk menyetujui penggunaan tool atau [permintaan jaringan](/docs/id/sandboxing#network-isolation) dari perintah yang di-sandbox, dan permintaan izin telah menunggu sekitar enam detik |

2438| `idle_prompt` | Claude selesai merespons sekitar 60 detik yang lalu dan Anda belum mengetik sejak itu |2433| `idle_prompt` | Claude selesai merespons sekitar 60 detik yang lalu dan Anda belum mengetik sejak itu |

2439| `auth_success` | Autentikasi selesai |2434| `auth_success` | Autentikasi selesai |

2440| `elicitation_dialog` | Server MCP membuka formulir elicitation dan Anda belum mengetik selama sekitar enam detik |2435| `elicitation_dialog` | Server MCP membuka formulir elicitation dan Anda belum mengetik selama sekitar enam detik |

2441| `elicitation_url_dialog` | Server MCP meminta Anda untuk membuka URL browser dan Anda belum mengetik selama sekitar enam detik |2436| `elicitation_url_dialog` | Server MCP meminta Anda membuka URL browser dan Anda belum mengetik selama sekitar enam detik |

2442| `elicitation_complete` | Server MCP melaporkan bahwa [URL-mode elicitation](#elicitation-input) selesai |2437| `elicitation_complete` | Server MCP melaporkan bahwa [elicitation mode URL](#elicitation-input) telah selesai |

2443| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |2438| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |

2444| `agent_needs_input` | Sesi latar belakang mulai menunggu input Anda sementara [agent view](/docs/id/agent-view) terbuka di terminal, atau sesi saat ini menanyakan [pertanyaan setup terminal teammate agent team](/docs/id/agent-teams#choose-a-display-mode) dan Anda belum mengetik selama sekitar enam detik |2439| `agent_needs_input` | Sesi latar belakang mulai menunggu input Anda saat [agent view](/docs/id/agent-view) terbuka di terminal. Juga dipicu ketika sesi terminal menampilkan kepada Anda [pertanyaan penyiapan terminal dari rekan tim agent](/docs/id/agent-teams#choose-a-display-mode) atau pemberitahuan auto mode tentang [biaya permintaan pengklasifikasi](/docs/id/auto-mode-classifier-billing) dan Anda belum mengetik selama sekitar enam detik |

2445| `agent_completed` | Sesi latar belakang selesai atau gagal. Dijalankan hanya saat [agent view](/docs/id/agent-view) terbuka di terminal |2440| `agent_completed` | Sesi latar belakang selesai atau gagal. Hanya dipicu saat [agent view](/docs/id/agent-view) terbuka di terminal |

2446| `quota_auto_resume_fired` | Claude Code melanjutkan tugas Anda setelah batas penggunaan claude.ai menjeda itu: pada reset, atau lebih cepat ketika sesuatu yang Anda lakukan dalam Claude Code selama menunggu, seperti menambahkan kredit penggunaan, meningkatkan rencana, atau beralih model, membuat penggunaan tersedia lagi, dengan [pengecualian pengaturan model](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset) |2441| `quota_auto_resume_fired` | Claude Code melanjutkan tugas Anda setelah batas penggunaan claude.ai menjedanya: pada saat reset, atau lebih cepat ketika sesuatu yang Anda lakukan di Claude Code selama menunggu, seperti menambahkan kredit penggunaan, meningkatkan paket Anda, atau beralih model, membuat penggunaan tersedia kembali, dengan [pengecualian pengaturan model](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset) |

2447| `quota_auto_resume_stale` | Batas penggunaan claude.ai reset sementara komputer Anda tidur selama lebih dari sekitar 30 menit. Claude Code menunggu Anda menekan `Enter` alih-alih melanjutkan. Setelah tidur yang lebih pendek itu melanjutkan dan menjalankan `quota_auto_resume_fired` sebagai gantinya |2442| `quota_auto_resume_stale` | Batas penggunaan claude.ai direset saat komputer Anda dalam mode tidur selama lebih dari sekitar 30 menit. Claude Code menunggu Anda menekan `Enter` alih-alih melanjutkan. Setelah tidur yang lebih singkat, Claude Code melanjutkan dan memicu `quota_auto_resume_fired` sebagai gantinya |

2448| `quota_auto_resume_disabled` | Claude Code mengakhiri penantiannya untuk batas penggunaan claude.ai tanpa melanjutkan tugas Anda: [`autoContinueAtUsageLimit`](/docs/id/settings-reference#autocontinueatusagelimit) dimatikan atau reset bergerak lebih dari 24 jam jauh selama penantian yang dimulai Claude Code sendiri, tugas yang dilanjutkan terus mencapai batas, atau kelanjutan diblokir sebelum mencapai model. Tidak dijalankan ketika Anda menekan `Esc` atau `Ctrl+C`, atau memilih **Don't continue automatically** |2443| `quota_auto_resume_disabled` | Claude Code mengakhiri penantiannya untuk batas penggunaan claude.ai tanpa melanjutkan tugas Anda: [`autoContinueAtUsageLimit`](/docs/id/settings-reference#autocontinueatusagelimit) dimatikan atau waktu reset bergeser lebih dari 24 jam selama penantian yang dimulai Claude Code sendiri, tugas yang dilanjutkan terus mencapai batas, atau kelanjutan diblokir sebelum mencapai model. Tidak dipicu ketika Anda menekan `Esc` atau `Ctrl+C`, atau memilih **Don't continue automatically** |

2449 2444 

2450Tipe `agent_needs_input` dan `agent_completed` memerlukan Claude Code v2.1.198 atau lebih baru.2445Jenis `agent_needs_input` dan `agent_completed` memerlukan Claude Code v2.1.198 atau lebih baru.

2451 2446 

2452Tipe `quota_auto_resume_fired`, `quota_auto_resume_stale`, dan `quota_auto_resume_disabled` memerlukan Claude Code v2.1.234 atau lebih baru.2447Jenis `quota_auto_resume_fired`, `quota_auto_resume_stale`, dan `quota_auto_resume_disabled` memerlukan Claude Code v2.1.234 atau lebih baru.

2453 2448 

2454Dalam sesi terminal, `permission_prompt` untuk network request perintah sandboxed memerlukan Claude Code v2.1.246 atau lebih baru.2449Dalam sesi terminal, `permission_prompt` untuk permintaan jaringan dari perintah yang di-sandbox memerlukan Claude Code v2.1.246 atau lebih baru.

2455 2450 

2456`agent_needs_input` untuk pertanyaan setup terminal teammate memerlukan Claude Code v2.1.248 atau lebih baru.2451`agent_needs_input` untuk pertanyaan penyiapan terminal dari rekan tim memerlukan Claude Code v2.1.248 atau lebih baru.

2457 2452 

2458<Note>2453<Note>

2459 Tipe `permission_prompt`, `idle_prompt`, `elicitation_dialog`, dan `elicitation_url_dialog` berbagi waktu mereka dengan notifikasi desktop, jadi dalam sesi terminal Anda hanya melihat mereka ketika Anda tampak jauh dari terminal:2454 Jenis `permission_prompt`, `idle_prompt`, `elicitation_dialog`, dan `elicitation_url_dialog` berbagi waktu yang sama dengan notifikasi desktop, sehingga dalam sesi terminal Anda hanya melihatnya ketika Anda tampak sedang jauh dari terminal:

2460 2455 

2461 * Harapkan `permission_prompt` sekali Anda belum mengetik selama sekitar enam detik. Timer dimulai ketika prompt izin muncul, dan setiap keystroke menundanya. Untuk menjalankan hook segera ketika Claude meminta izin menggunakan tool, gunakan [PermissionRequest](#permissionrequest) sebagai gantinya.2456 * `permission_prompt` akan muncul setelah Anda tidak mengetik selama sekitar enam detik. Timer dimulai ketika permintaan izin muncul, dan setiap ketukan tombol menundanya. Untuk menjalankan hook segera ketika Claude meminta izin untuk menggunakan tool, gunakan [PermissionRequest](#permissionrequest) sebagai gantinya.

2462 * Harapkan `idle_prompt` sekitar 60 detik setelah Claude selesai merespons, dan hanya jika Anda belum mengetik sejak itu. Claude Code tidak mengirimkan `idle_prompt` sementara itu menunggu batas penggunaan claude.ai untuk reset. Ketika penantian berakhir sendiri, salah satu tipe `quota_auto_resume_*` dijalankan sebagai gantinya.2457 * `idle_prompt` akan muncul sekitar 60 detik setelah Claude selesai merespons, dan hanya jika Anda belum mengetik sejak itu. Claude Code tidak mengirim `idle_prompt` saat menunggu batas penggunaan claude.ai direset. Ketika penantian berakhir dengan sendirinya, salah satu jenis `quota_auto_resume_*` akan dipicu sebagai gantinya.

2463 * Harapkan `elicitation_dialog` untuk formulir elicitation, atau `elicitation_url_dialog` untuk permintaan URL browser, sekali Anda belum mengetik selama sekitar enam detik. Keduanya berbagi gerbang enam detik yang sama seperti `permission_prompt`: timer dimulai ketika dialog muncul, dan setiap keystroke menundanya.2458 * `elicitation_dialog` untuk formulir elicitation, atau `elicitation_url_dialog` untuk permintaan URL browser, akan muncul setelah Anda tidak mengetik selama sekitar enam detik. Keduanya berbagi batas enam detik yang sama dengan `permission_prompt`: timer dimulai ketika dialog muncul, dan setiap ketukan tombol menundanya.

2464 2459 

2465 Permintaan izin atau elicitation yang tiba sementara dialog lain di layar menyimpan gerbang enam detik yang sama, timed dari ketika permintaan tiba. Notifikasi-nya dapat mencapai Anda sementara permintaan masih menunggu di belakang dialog terbuka.2460 Permintaan izin atau elicitation yang tiba saat dialog lain sedang ditampilkan tetap menggunakan batas enam detik yang sama, dihitung sejak permintaan tiba. Notifikasinya dapat sampai kepada Anda saat permintaan masih menunggu di balik dialog yang terbuka.

2466</Note>2461</Note>

2467 2462 

2468Claude Code waktu `permission_prompt` berbeda dalam sesi di mana itu mengirimkan permintaan izin ke callback [`canUseTool`](/docs/id/agent-sdk/user-input) Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code menyelenggarakan Claude Code:2463Claude Code mengatur waktu `permission_prompt` secara berbeda dalam sesi di mana ia mengirim permintaan izin ke [callback `canUseTool`](/docs/id/agent-sdk/user-input) milik Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code menghosting Claude Code:

2469 2464 

2470* Harapkan `permission_prompt` sekitar enam detik setelah Claude meminta izin. Claude Code tidak menundanya sementara Anda mengetik.2465* `permission_prompt` akan muncul sekitar enam detik setelah Claude meminta izin. Claude Code tidak menundanya saat Anda mengetik.

2471* Jika Anda atau hook [PermissionRequest](#permissionrequest) menjawab lebih cepat, Claude Code tidak menjalankan `permission_prompt`.2466* Jika Anda atau hook [PermissionRequest](#permissionrequest) menjawab lebih cepat, Claude Code tidak menjalankan `permission_prompt`.

2472* Atur [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/id/env-vars) ke `1` untuk mematikan `permission_prompt` dalam sesi ini.2467* Atur [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/id/env-vars) ke `1` untuk mematikan `permission_prompt` dalam sesi ini.

2473 2468 

2474Sebelum v2.1.233, `permission_prompt` tidak dijalankan dalam sesi ini.2469Sebelum v2.1.233, `permission_prompt` tidak dipicu dalam sesi ini.

2475 2470 

2476Gunakan matchers terpisah untuk menjalankan handler berbeda tergantung pada tipe notifikasi. Konfigurasi ini memicu skrip alert khusus izin ketika Claude memerlukan persetujuan izin dan notifikasi berbeda ketika Claude telah idle:2471Gunakan matcher terpisah untuk menjalankan handler yang berbeda bergantung pada jenis notifikasi. Konfigurasi ini memicu skrip peringatan khusus izin ketika Claude memerlukan persetujuan izin dan notifikasi yang berbeda ketika Claude dalam keadaan idle:

2477 2472 

2478```json theme={null}2473```json theme={null}

2479{2474{


2503```2498```

2504 2499 

2505<h4 id="notification-input">2500<h4 id="notification-input">

2506 Notification input2501 Input Notification

2507</h4>2502</h4>

2508 2503 

2509Selain [bidang input umum](#common-input-fields), Notification hooks menerima `message` dengan teks notifikasi, `title` opsional, dan `notification_type` menunjukkan tipe mana yang dijalankan.2504Selain [field input umum](#common-input-fields), hook Notification menerima `message` dengan teks notifikasi, `title` opsional, dan `notification_type` yang menunjukkan jenis mana yang dipicu.

2510 2505 

2511```json theme={null}2506```json theme={null}

2512{2507{


2520}2515}

2521```2516```

2522 2517 

2523Notification hooks tidak dapat memblokir atau memodifikasi notifikasi. Claude Code membuang `systemMessage` dan `continue` mereka tetapi masih memancarkan [`terminalSequence`](#emit-terminal-notifications), yang merupakan apa yang contoh notifikasi desktop andalkan. Notification hooks dimaksudkan untuk efek samping seperti meneruskan notifikasi ke layanan eksternal.2518Hook Notification tidak dapat memblokir atau memodifikasi notifikasi. Claude Code membuang field `systemMessage` dan `continue` miliknya tetapi tetap mengeluarkan [`terminalSequence`](#emit-terminal-notifications), yang menjadi andalan contoh notifikasi desktop. Hook Notification ditujukan untuk efek samping seperti meneruskan notifikasi ke layanan eksternal.

2524 2519 

2525<h3 id="subagentstart">2520<h3 id="subagentstart">

2526 SubagentStart2521 SubagentStart

2527</h3>2522</h3>

2528 2523 

2529Dijalankan ketika Claude spawn subagent dengan tool Agent, ketika Claude [melanjutkan subagent](/docs/id/sub-agents#resume-subagents), dan setiap kali [agent team](/docs/id/agent-teams) in-process teammate menangani pesan baru. Mendukung matchers untuk memfilter berdasarkan nama tipe agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [custom subagents](/docs/id/sub-agents), ini adalah bidang `name` dari frontmatter agent, bukan nama file.2524Berjalan ketika Claude memunculkan subagent dengan tool Agent, ketika Claude [melanjutkan subagent](/docs/id/sub-agents#resume-subagents), dan setiap kali rekan tim [tim agent](/docs/id/agent-teams) dalam proses menangani pesan baru. Mendukung matcher untuk memfilter berdasarkan nama jenis agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [subagent kustom](/docs/id/sub-agents), ini adalah field `name` dari frontmatter agent, bukan nama file.

2530 2525 

2531Untuk subagents yang dikirim oleh [plugin](/docs/id/plugins), tipe agent adalah pengenal bersifat plugin seperti `my-plugin:reviewer`, bukan nama frontmatter biasa. Titik dua menempatkan nama bersifat plugin pada jalur ekspresi reguler, jadi jangkar matcher dengan `^` dan `$` untuk kecocokan yang tepat: `^my-plugin:reviewer$`.2526Untuk subagent yang disertakan oleh [plugin](/docs/id/plugins/overview), jenis agent adalah pengidentifikasi dengan cakupan plugin seperti `my-plugin:reviewer`, bukan nama frontmatter polos. Titik dua menempatkan nama dengan cakupan plugin pada jalur regular expression, jadi jangkarkan matcher dengan `^` dan `$` untuk kecocokan persis: `^my-plugin:reviewer$`.

2532 2527 

2533<h4 id="subagentstart-input">2528<h4 id="subagentstart-input">

2534 SubagentStart input2529 Input SubagentStart

2535</h4>2530</h4>

2536 2531 

2537Selain [bidang input umum](#common-input-fields), SubagentStart hooks menerima `agent_id` dengan pengenal unik untuk subagent dan `agent_type` dengan nama agent yang matcher filter.2532Selain [field input umum](#common-input-fields), hook SubagentStart menerima `agent_id` dengan pengidentifikasi unik untuk subagent dan `agent_type` dengan nama agent yang difilter oleh matcher.

2538 2533 

2539```json theme={null}2534```json theme={null}

2540{2535{


2547}2542}

2548```2543```

2549 2544 

2550SubagentStart hooks tidak dapat memblokir pembuatan subagent, tetapi mereka dapat menyuntikkan konteks ke subagent. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan:2545Hook SubagentStart tidak dapat memblokir pembuatan subagent, tetapi dapat menyuntikkan konteks ke dalam subagent. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan:

2551 2546 

2552| Bidang | Deskripsi |2547| Field | Deskripsi |

2553| :- | :- |2548| :- | :- |

2554| `additionalContext` | String ditambahkan ke konteks subagent pada awal percakapannya, sebelum prompt pertamanya. Lihat [Add context for Claude](#add-context-for-claude) |2549| `additionalContext` | String yang ditambahkan ke konteks subagent di awal percakapannya, sebelum prompt pertamanya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

2555 2550 

2556```json theme={null}2551```json theme={null}

2557{2552{


2562}2557}

2563```2558```

2564 2559 

2565Ketika hook dijalankan lagi untuk subagent yang sama, Claude Code menyuntikkan konteks yang dikembalikan hanya ketika konteks subagent tidak sudah menyimpan salinan dari run yang lebih awal. Salinan yang disuntikkan saat peluncuran tetap di tempat, meninggalkan [prompt cache](/docs/id/prompt-caching#subagents-and-the-cache) subagent utuh. Setelah [auto-compaction](/docs/id/sub-agents#auto-compaction) membuang salinan itu, Claude Code menyuntikkan konteks run berikutnya lagi.2560Ketika hook berjalan lagi untuk subagent yang sama, Claude Code menyuntikkan konteks yang dikembalikan hanya jika konteks subagent belum menyimpan salinan dari eksekusi sebelumnya. Salinan yang disuntikkan saat peluncuran tetap di tempatnya, sehingga [prompt cache](/docs/id/prompt-caching#subagents-and-the-cache) subagent tetap utuh. Setelah [auto-compaction](/docs/id/sub-agents#auto-compaction) membuang salinan tersebut, Claude Code menyuntikkan konteks dari eksekusi berikutnya lagi.

2566 2561 

2567<h3 id="subagentstop">2562<h3 id="subagentstop">

2568 SubagentStop2563 SubagentStop

2569</h3>2564</h3>

2570 2565 

2571Dijalankan ketika subagent Claude Code telah selesai merespons. Cocok pada tipe agent, nilai yang sama seperti SubagentStart.2566Berjalan ketika subagent Claude Code telah selesai merespons. Mencocokkan berdasarkan jenis agent, dengan nilai yang sama seperti SubagentStart.

2572 2567 

2573<h4 id="subagentstop-input">2568<h4 id="subagentstop-input">

2574 SubagentStop input2569 Input SubagentStop

2575</h4>2570</h4>

2576 2571 

2577Selain [bidang input umum](#common-input-fields), SubagentStop hooks menerima `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, dan `last_assistant_message`. Bidang `agent_type` adalah nilai yang digunakan untuk pemfilteran matcher. `transcript_path` adalah transkrip sesi utama, sementara `agent_transcript_path` adalah transkrip subagent sendiri yang disimpan dalam folder `subagents/` bersarang. Bidang `last_assistant_message` berisi konten teks respons akhir subagent, jadi hooks dapat mengaksesnya tanpa mengurai file transkrip.2572Selain [field input umum](#common-input-fields), hook SubagentStop menerima `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, dan `last_assistant_message`. Field `agent_type` adalah nilai yang digunakan untuk pemfilteran matcher. `transcript_path` adalah transkrip sesi utama, sedangkan `agent_transcript_path` adalah transkrip milik subagent sendiri yang disimpan dalam folder `subagents/` bersarang. Field `last_assistant_message` berisi konten teks dari respons akhir subagent, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip.

2578 2573 

2579Tidak setiap event SubagentStop berasal dari subagent yang di-spawn Claude. Claude Code juga menjalankan agent internal untuk beberapa fiturnya sendiri, seperti [saran prompt](/docs/id/interactive-mode#prompt-suggestions) dan [pertanyaan sampingan `/btw`](/docs/id/interactive-mode#side-questions-with-%2Fbtw), dan SubagentStop juga dijalankan ketika salah satunya selesai. Untuk events tersebut, `agent_type` adalah nama agent yang dijalankan sebagai sesi itu sendiri, seperti yang diatur dengan [`--agent`](/docs/id/cli-reference#cli-flags) atau [pengaturan `agent`](/docs/id/settings-reference#agent), dan string kosong ketika sesi berjalan tanpa agent.2574Tidak setiap event SubagentStop berasal dari subagent yang dimunculkan Claude. Claude Code juga menjalankan agent internal untuk beberapa fiturnya sendiri, seperti [saran prompt](/docs/id/interactive-mode#prompt-suggestions) dan [pertanyaan sampingan `/btw`](/docs/id/interactive-mode#side-questions-with-%2Fbtw), dan SubagentStop juga dipicu ketika salah satunya selesai. Untuk event tersebut, `agent_type` adalah nama agent yang dijalankan oleh sesi itu sendiri, seperti yang diatur dengan [`--agent`](/docs/id/cli-reference#cli-flags) atau [pengaturan `agent`](/docs/id/settings-reference#agent), dan berupa string kosong ketika sesi berjalan tanpa agent tersebut.

2580 2575 

2581`matcher` yang menyebutkan tipe agent tidak cocok dengan `agent_type` kosong. Hook yang matcher-nya dihilangkan, `""`, atau `"*"`, atau berupa ekspresi reguler yang cocok dengan string kosong, juga dijalankan untuk events dengan `agent_type` kosong.2576`matcher` yang menyebutkan jenis agent tidak cocok dengan `agent_type` yang kosong. Hook yang matcher-nya dihilangkan, `""`, atau `"*"`, atau berupa regular expression yang cocok dengan string kosong, juga berjalan untuk event dengan `agent_type` kosong.

2582 2577 

2583Pada Claude Code v2.1.271 atau lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference) mengirimkan laporannya melalui tool itu sebelum berhenti. Bidang `last_assistant_message` kemudian menyimpan teks penutup subagent, jika ada, yang bukan laporan yang disampaikan. Laporan adalah input `message` panggilan itu, yang hook `PreToolUse` atau `PostToolUse` yang cocok pada `SubagentHandback` menerima sebagai `tool_input.message`.2578Pada Claude Code v2.1.271 atau lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference) mengirimkan laporannya melalui tool tersebut sebelum berhenti. Field `last_assistant_message` kemudian berisi teks penutup subagent, jika ada, yang bukan laporan yang dikirimkan. Laporan tersebut adalah input `message` dari panggilan itu, yang diterima oleh hook `PreToolUse` atau `PostToolUse` yang mencocokkan `SubagentHandback` sebagai `tool_input.message`.

2584 2579 

2585SubagentStop hooks juga menerima array `background_tasks` dan `session_crons` yang dijelaskan di bawah [Stop input](#stop-input). Kedua array bersifat scoped ke sesi induk, bukan subagent.2580Hook SubagentStop juga menerima array `background_tasks` dan `session_crons` yang dijelaskan di bawah [Input Stop](#stop-input). Kedua array tersebut dicakup ke sesi induk, bukan subagent.

2586 2581 

2587```json theme={null}2582```json theme={null}

2588{2583{


2601}2596}

2602```2597```

2603 2598 

2604SubagentStop hooks menggunakan format kontrol keputusan yang sama seperti [Stop hooks](#stop-decision-control), termasuk `hookSpecificOutput.additionalContext` dengan `hookEventName` diatur ke `"SubagentStop"`, untuk umpan balik non-error yang membuat subagent tetap berjalan. Mengembalikan `decision: "block"` dengan `reason` membuat subagent tetap berjalan dan mengirimkan `reason` ke subagent sebagai instruksi berikutnya. Untuk menyuntikkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.2599Hook SubagentStop menggunakan format kontrol keputusan yang sama seperti [hook Stop](#stop-decision-control), termasuk `hookSpecificOutput.additionalContext` dengan `hookEventName` diatur ke `"SubagentStop"`, untuk umpan balik non-error yang membuat subagent tetap berjalan. Mengembalikan `decision: "block"` dengan `reason` membuat subagent tetap berjalan dan mengirimkan `reason` ke subagent sebagai instruksi berikutnya. Hook yang memblokir dengan keluar menggunakan kode 2 mengirimkan pesan stderr-nya dengan cara yang sama. Untuk menyuntikkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.

2605 2600 

2606<h3 id="taskcreated">2601<h3 id="taskcreated">

2607 TaskCreated2602 TaskCreated

2608</h3>2603</h3>

2609 2604 

2610Dijalankan ketika tugas sedang dibuat melalui tool `TaskCreate`. Gunakan ini untuk menegakkan konvensi penamaan, memerlukan deskripsi tugas, atau mencegah tugas tertentu dari dibuat. Dalam [sesi tanpa Task tools](/docs/id/tools-reference#task-tool-availability), event ini tidak dijalankan.2605Berjalan ketika sebuah tugas sedang dibuat melalui tool `TaskCreate`. Gunakan ini untuk menegakkan konvensi penamaan, mewajibkan deskripsi tugas, atau mencegah tugas tertentu dibuat. Dalam [sesi tanpa tool Task](/docs/id/tools-reference#task-tool-availability), event ini tidak dipicu.

2611 2606 

2612TaskCreated hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.2607Hook TaskCreated tidak mendukung matcher dan dipicu pada setiap kejadian.

2613 2608 

2614<h4 id="taskcreated-input">2609<h4 id="taskcreated-input">

2615 TaskCreated input2610 Input TaskCreated

2616</h4>2611</h4>

2617 2612 

2618Selain [bidang input umum](#common-input-fields), TaskCreated hooks menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.2613Selain [field input umum](#common-input-fields), hook TaskCreated menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.

2619 2614 

2620```json theme={null}2615```json theme={null}

2621{2616{


2631}2626}

2632```2627```

2633 2628 

2634| Bidang | Deskripsi |2629| Field | Deskripsi |

2635| :- | :- |2630| :- | :- |

2636| `task_id` | Pengenal tugas yang sedang dibuat |2631| `task_id` | Pengidentifikasi tugas yang sedang dibuat |

2637| `task_subject` | Judul tugas |2632| `task_subject` | Judul tugas |

2638| `task_description` | Deskripsi detail tugas. Mungkin tidak ada |2633| `task_description` | Deskripsi terperinci tugas. Mungkin tidak ada |

2639| `teammate_name` | Nama teammate yang membuat tugas. Mungkin tidak ada |2634| `teammate_name` | Nama rekan tim yang membuat tugas. Mungkin tidak ada |

2640| `team_name` | Nama team yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2635| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2641 2636 

2642<h4 id="taskcreated-decision-control">2637<h4 id="taskcreated-decision-control">

2643 TaskCreated decision control2638 Kontrol keputusan TaskCreated

2644</h4>2639</h4>

2645 2640 

2646Hook TaskCreated dapat memblokir pembuatan dengan dua cara. Baik cara, Claude Code menghapus tugas dan mengembalikan pesan Anda ke Claude sebagai kesalahan tool. Claude Code mengabaikan `continue: false` dari event ini dan Claude terus bekerja.2641Hook TaskCreated dapat memblokir pembuatan dengan dua cara. Dengan cara mana pun, Claude Code menghapus tugas dan mengembalikan pesan Anda kepada Claude sebagai error tool. Claude Code mengabaikan `continue: false` dari event ini dan Claude tetap bekerja.

2647 2642 

2648* **Kode keluar 2**: Claude Code mengembalikan teks stderr sebagai pesan.2643* **Exit code 2**: Claude Code mengembalikan teks stderr sebagai pesan.

2649* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code mengembalikan `reason` sebagai pesan.2644* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code mengembalikan `reason` sebagai pesan.

2650 2645 

2651Contoh ini memblokir tugas yang subjeknya tidak mengikuti format yang diperlukan:2646Contoh ini memblokir tugas yang subjeknya tidak mengikuti format yang diwajibkan:

2652 2647 

2653```bash theme={null}2648```bash theme={null}

2654#!/bin/bash2649#!/bin/bash


2667 TaskCompleted2662 TaskCompleted

2668</h3>2663</h3>

2669 2664 

2670Dijalankan ketika tugas sedang ditandai sebagai selesai. Ini dijalankan dalam dua situasi: ketika agent apa pun secara eksplisit menandai tugas sebagai selesai melalui tool TaskUpdate, atau ketika [agent team](/docs/id/agent-teams) teammate menyelesaikan giliran dengan tugas yang sedang berlangsung. Gunakan ini untuk menegakkan kriteria penyelesaian seperti passing tests atau lint checks sebelum tugas dapat ditutup.2665Berjalan ketika sebuah tugas sedang ditandai sebagai selesai. Ini dipicu dalam dua situasi: ketika agent mana pun secara eksplisit menandai tugas sebagai selesai melalui tool TaskUpdate, atau ketika rekan tim [tim agent](/docs/id/agent-teams) menyelesaikan gilirannya dengan tugas yang sedang berlangsung. Gunakan ini untuk menegakkan kriteria penyelesaian seperti lolos pengujian atau pemeriksaan lint sebelum tugas dapat ditutup.

2671 2666 

2672TaskCompleted hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.2667Hook TaskCompleted tidak mendukung matcher dan dipicu pada setiap kejadian.

2673 2668 

2674<h4 id="taskcompleted-input">2669<h4 id="taskcompleted-input">

2675 TaskCompleted input2670 Input TaskCompleted

2676</h4>2671</h4>

2677 2672 

2678Selain [bidang input umum](#common-input-fields), TaskCompleted hooks menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.2673Selain [field input umum](#common-input-fields), hook TaskCompleted menerima `task_id`, `task_subject`, dan secara opsional `task_description`, `teammate_name`, dan `team_name`.

2679 2674 

2680```json theme={null}2675```json theme={null}

2681{2676{


2692}2687}

2693```2688```

2694 2689 

2695| Bidang | Deskripsi |2690| Field | Deskripsi |

2696| :- | :- |2691| :- | :- |

2697| `task_id` | Pengenal tugas yang sedang diselesaikan |2692| `task_id` | Pengidentifikasi tugas yang sedang diselesaikan |

2698| `task_subject` | Judul tugas |2693| `task_subject` | Judul tugas |

2699| `task_description` | Deskripsi detail tugas. Mungkin tidak ada |2694| `task_description` | Deskripsi terperinci tugas. Mungkin tidak ada |

2700| `teammate_name` | Nama teammate yang menyelesaikan tugas. Mungkin tidak ada |2695| `teammate_name` | Nama rekan tim yang menyelesaikan tugas. Mungkin tidak ada |

2701| `team_name` | Nama team yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2696| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2702 2697 

2703<h4 id="taskcompleted-decision-control">2698<h4 id="taskcompleted-decision-control">

2704 TaskCompleted decision control2699 Kontrol keputusan TaskCompleted

2705</h4>2700</h4>

2706 2701 

2707TaskCompleted hooks mendukung dua cara untuk mengontrol penyelesaian tugas:2702Hook TaskCompleted mendukung dua cara untuk mengontrol penyelesaian tugas:

2708 2703 

2709* **Kode keluar 2**: tugas tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik.2704* **Exit code 2**: tugas tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik.

2710* **JSON `{"continue": false, "stopReason": "..."}`**: ketika teammate yang menyelesaikan gilirannya memicu event, menghentikan teammate sepenuhnya, mencocokkan perilaku hook `Stop`. `stopReason` ditampilkan ke pengguna. Ketika tool `TaskUpdate` memicu event, Claude Code mengabaikan `continue: false`; kode keluar 2 masih memblokir penyelesaian.2705* **JSON `{"continue": false, "stopReason": "..."}`**: ketika rekan tim yang menyelesaikan gilirannya memicu event, rekan tim dihentikan sepenuhnya, sesuai dengan perilaku hook `Stop`. `stopReason` ditampilkan kepada pengguna. Ketika tool `TaskUpdate` memicu event, Claude Code mengabaikan `continue: false`; exit code 2 tetap memblokir penyelesaian.

2711 2706 

2712Contoh ini menjalankan tests dan memblokir penyelesaian tugas jika gagal:2707Contoh ini menjalankan pengujian dan memblokir penyelesaian tugas jika pengujian gagal:

2713 2708 

2714```bash theme={null}2709```bash theme={null}

2715#!/bin/bash2710#!/bin/bash

2716INPUT=$(cat)2711INPUT=$(cat)

2717TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')2712TASK_SUBJECT=$(echo "$INPUT" | jq -r '.task_subject')

2718 2713 

2719# Jalankan test suite2714# Run the test suite

2720if ! npm test 2>&1; then2715if ! npm test 2>&1; then

2721 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&22716 echo "Tests not passing. Fix failing tests before completing: $TASK_SUBJECT" >&2

2722 exit 22717 exit 2


2729 Stop2724 Stop

2730</h3>2725</h3>

2731 2726 

2732Dijalankan ketika agent Claude Code utama telah selesai merespons. Tidak dijalankan jika penghentian terjadi karena interupsi pengguna. Kesalahan API menjalankan [StopFailure](#stopfailure) sebagai gantinya.2727Berjalan ketika agent utama Claude Code telah selesai merespons. Tidak berjalan jika

2728penghentian terjadi karena interupsi pengguna. Error API memicu

2729[StopFailure](#stopfailure) sebagai gantinya.

2733 2730 

2734<Tip>2731<Tip>

2735 Perintah [`/goal`](/docs/id/goal) adalah pintasan bawaan untuk hook Stop berbasis prompt yang bersifat sesi. Gunakan ketika Anda ingin Claude terus bekerja sampai kondisi terpenuhi tanpa menulis konfigurasi hook.2732 Perintah [`/goal`](/docs/id/goal) adalah pintasan bawaan untuk hook Stop berbasis prompt dengan cakupan sesi. Gunakan ini ketika Anda ingin Claude terus bekerja menuju suatu kondisi tanpa menulis konfigurasi hook.

2736</Tip>2733</Tip>

2737 2734 

2738<h4 id="stop-input">2735<h4 id="stop-input">

2739 Stop input2736 Input Stop

2740</h4>2737</h4>

2741 2738 

2742Selain [bidang input umum](#common-input-fields), Stop hooks menerima `stop_hook_active`, `last_assistant_message`, `background_tasks`, dan `session_crons`. Bidang `stop_hook_active` adalah `true` ketika Claude Code sudah melanjutkan sebagai hasil dari stop hook. Periksa nilai ini atau proses transkrip untuk menghindari memblokir pada kondisi yang tidak akan pernah terselesaikan. Claude Code menimpa hook dan mengakhiri giliran setelah 8 blok berturut-turut.2739Selain [field input umum](#common-input-fields), hook Stop menerima `stop_hook_active`, `last_assistant_message`, `background_tasks`, dan `session_crons`. Field `stop_hook_active` bernilai `true` ketika Claude Code sudah melanjutkan sebagai akibat dari hook stop. Periksa nilai ini atau proses transkrip untuk menghindari pemblokiran pada kondisi yang tidak akan pernah terselesaikan. Claude Code menerapkan batas 8 kelanjutan berturut-turut: setelah hook stop melanjutkan giliran delapan kali berturut-turut, Claude Code menimpa blokir berikutnya dan mengakhiri giliran. Untuk menaikkan batas, atur [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/id/env-vars).

2743 2740 

2744Bidang `last_assistant_message` berisi konten teks respons akhir Claude, jadi hooks dapat mengaksesnya tanpa mengurai file transkrip. Untuk hooks yang bertindak pada giliran yang baru selesai, seperti hooks read-aloud atau notifikasi, gunakan bidang ini daripada membaca `transcript_path`: file transkrip tidak dijamin menyertakan pesan akhir pada Stop time di semua versi.2741Field `last_assistant_message` berisi konten teks dari respons akhir Claude, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip. Untuk hook yang bertindak pada giliran yang baru saja selesai, seperti hook pembacaan dengan suara keras atau notifikasi, gunakan field ini alih-alih membaca `transcript_path`: file transkrip tidak dijamin menyertakan pesan akhir pada saat Stop di semua versi.

2745 2742 

2746Array `background_tasks` dan `session_crons` memungkinkan hooks membedakan "sesi selesai" dari "sesi dijeda menunggu pekerjaan latar belakang untuk membangunkannya kembali". Kedua array hadir ketika registri tugas dapat dijangkau dan kosong ketika tidak ada yang sedang berlangsung atau dijadwalkan.2743Array `background_tasks` dan `session_crons` memungkinkan hook membedakan "sesi sudah selesai" dari "sesi dijeda menunggu pekerjaan latar belakang untuk membangunkannya kembali". Kedua array hadir ketika registri tugas dapat dijangkau dan kosong ketika tidak ada yang sedang berjalan atau dijadwalkan.

2747 2744 

2748Setiap entry dalam `background_tasks` menjelaskan satu tugas yang sedang berlangsung dan menggunakan bidang-bidang ini:2745Setiap entri dalam `background_tasks` menjelaskan satu tugas yang sedang berjalan dan menggunakan field berikut:

2749 2746 

2750| Bidang | Deskripsi |2747| Field | Deskripsi |

2751| :- | :- |2748| :- | :- |

2752| `id` | Pengenal tugas |2749| `id` | Pengidentifikasi tugas |

2753| `type` | Label tipe tugas yang ramah seperti `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, atau `MCP task`. Setiap label mengidentifikasi fitur Claude Code mana yang membuat tugas. Kembali ke diskriminan mentah untuk tipe yang tidak dikenali |2750| `type` | Label jenis tugas yang mudah dibaca seperti `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, atau `MCP task`. Setiap label mengidentifikasi fitur Claude Code mana yang membuat tugas tersebut. Menggunakan diskriminan mentah sebagai cadangan untuk jenis yang tidak dikenali |

2754| `status` | Status tugas saat ini |2751| `status` | Status tugas saat ini |

2755| `description` | Deskripsi teks bebas, dibatasi 1000 karakter dengan penanda `… [+N chars]` dalam string ketika dipotong |2752| `description` | Deskripsi teks bebas, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` di dalam string ketika dipotong |

2756| `command` | Baris perintah shell, dibatasi 1000 karakter. Hadir hanya untuk tugas `shell` |2753| `command` | Baris perintah shell, dibatasi hingga 1000 karakter. Hanya ada untuk tugas `shell` |

2757| `agent_type` | Nama tipe subagent. Hadir hanya untuk tugas `subagent` |2754| `agent_type` | Nama jenis subagent. Hanya ada untuk tugas `subagent` |

2758| `server` | Nama server MCP. Hadir hanya untuk tugas `monitor` dan `MCP task` |2755| `server` | Nama server MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |

2759| `tool` | Nama tool MCP. Hadir hanya untuk tugas `monitor` dan `MCP task` |2756| `tool` | Nama tool MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |

2760| `name` | Nama workflow. Hadir hanya untuk tugas `workflow` |2757| `name` | Nama workflow. Hanya ada untuk tugas `workflow` |

2761 2758 

2762Setiap entry dalam `session_crons` menjelaskan satu wakeup terjadwal yang bersifat sesi, bersumber dari `CronCreate`, `ScheduleWakeup`, dan `/loop`:2759Setiap entri dalam `session_crons` menjelaskan satu wakeup terjadwal dengan cakupan sesi, yang bersumber dari `CronCreate`, `ScheduleWakeup`, dan `/loop`:

2763 2760 

2764| Bidang | Deskripsi |2761| Field | Deskripsi |

2765| :- | :- |2762| :- | :- |

2766| `id` | Pengenal tugas cron |2763| `id` | Pengidentifikasi tugas cron |

2767| `schedule` | Ekspresi cron, misalnya `0 9 * * 1-5` |2764| `schedule` | Ekspresi cron, misalnya `0 9 * * 1-5` |

2768| `recurring` | `false` untuk wakeup satu kali yang jadwalnya mengkodekan waktu api tunggal, `true` untuk tugas yang api ulang pada setiap kecocokan |2765| `recurring` | `false` untuk wakeup sekali jalan yang jadwalnya mengodekan satu waktu pemicu, `true` untuk tugas yang dipicu ulang pada setiap kecocokan |

2769| `prompt` | Prompt yang dikirimkan ketika cron api, dibatasi 1000 karakter dengan penanda `… [+N chars]` yang sama |2766| `prompt` | Prompt yang dikirim ketika cron dipicu, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` yang sama |

2770 2767 

2771Contoh ini menunjukkan input Stop dengan satu tugas shell yang sedang berlangsung dan satu cron berulang:2768Contoh ini menunjukkan input Stop dengan satu tugas shell yang sedang berjalan dan satu cron berulang:

2772 2769 

2773```json theme={null}2770```json theme={null}

2774{2771{


2800```2797```

2801 2798 

2802<h4 id="stop-decision-control">2799<h4 id="stop-decision-control">

2803 Stop decision control2800 Kontrol keputusan Stop

2804</h4>2801</h4>

2805 2802 

2806Hooks `Stop` dan `SubagentStop` dapat mengontrol apakah Claude melanjutkan. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, skrip hook Anda dapat mengembalikan bidang spesifik event ini:2803Hook `Stop` dan `SubagentStop` dapat mengontrol apakah Claude melanjutkan. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:

2807 2804 

2808| Bidang | Deskripsi |2805| Field | Deskripsi |

2809| :- | :- |2806| :- | :- |

2810| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |2807| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |

2811| `reason` | Diperlukan saat `decision` adalah `"block"`. Memberitahu Claude mengapa itu harus melanjutkan |2808| `reason` | Wajib ketika `decision` adalah `"block"`. Memberi tahu Claude mengapa ia harus melanjutkan |

2812| `hookSpecificOutput.additionalContext` | Umpan balik non-error untuk Claude. Percakapan berlanjut sehingga Claude dapat bertindak atas itu, tetapi tidak seperti `decision: "block"` itu ditampilkan dalam transkrip sebagai umpan balik hook daripada kesalahan hook |2809| `hookSpecificOutput.additionalContext` | Umpan balik non-error untuk Claude. Percakapan berlanjut sehingga Claude dapat menindaklanjutinya, tetapi tidak seperti `decision: "block"`, umpan balik ini ditampilkan di transkrip sebagai umpan balik hook, bukan error hook |

2813 2810 

2814Hook yang memblokir dengan keluar 2 merutekan dengan cara yang sama seperti `reason`: Claude menerima pesan stderr sebagai penjelasan mengapa itu harus melanjutkan.2811Hook yang memblokir dengan keluar menggunakan kode 2 dirutekan dengan cara yang sama seperti `reason`: Claude menerima pesan stderr sebagai penjelasan mengapa ia harus melanjutkan.

2815 2812 

2816```json theme={null}2813```json theme={null}

2817{2814{


2820}2817}

2821```2818```

2822 2819 

2823Gunakan `additionalContext` ketika hook bekerja seperti yang dirancang dan memberikan panduan Claude, seperti "jalankan test suite sebelum selesai". Ini membuat percakapan terus berlanjut melalui proteksi loop yang sama seperti `decision: "block"`, yaitu input `stop_hook_active` dan batas 8-kontinuasi berturut-turut, tetapi transkrip memberi label `Stop hook feedback` dan tidak ada notifikasi kesalahan hook yang ditampilkan:2820Gunakan `additionalContext` ketika hook berfungsi sesuai rancangan dan memberikan panduan kepada Claude, seperti "jalankan test suite sebelum selesai". Ini menjaga percakapan tetap berjalan melalui perlindungan loop yang sama seperti `decision: "block"`, yaitu input `stop_hook_active` dan batas 8 kelanjutan berturut-turut, tetapi transkrip melabelinya `Stop hook feedback` dan tidak ada notifikasi error hook yang ditampilkan:

2824 2821 

2825```json theme={null}2822```json theme={null}

2826{2823{


2835 StopFailure2832 StopFailure

2836</h3>2833</h3>

2837 2834 

2838Dijalankan alih-alih [Stop](#stop) ketika giliran berakhir karena kesalahan API. Claude Code mengabaikan output hook dan kode keluar, selain dari [`terminalSequence`](#emit-terminal-notifications). Gunakan ini untuk mencatat kegagalan, mengirim alert, atau mengambil tindakan pemulihan ketika Claude tidak dapat menyelesaikan respons karena rate limits, masalah autentikasi, atau kesalahan API lainnya.2835Berjalan sebagai pengganti [Stop](#stop) ketika giliran berakhir karena error API. Claude Code mengabaikan output dan exit code hook, kecuali [`terminalSequence`](#emit-terminal-notifications). Gunakan ini untuk mencatat kegagalan, mengirim peringatan, atau mengambil tindakan pemulihan ketika Claude tidak dapat menyelesaikan respons karena rate limit, masalah autentikasi, atau error API lainnya.

2839 2836 

2840<h4 id="stopfailure-input">2837<h4 id="stopfailure-input">

2841 StopFailure input2838 Input StopFailure

2842</h4>2839</h4>

2843 2840 

2844Selain [bidang input umum](#common-input-fields), StopFailure hooks menerima `error`, `error_details` opsional, dan `last_assistant_message` opsional. Bidang `error` mengidentifikasi tipe kesalahan dan digunakan untuk pemfilteran matcher.2841Selain [field input umum](#common-input-fields), hook StopFailure menerima `error`, `error_details` opsional, dan `last_assistant_message` opsional. Field `error` mengidentifikasi jenis error dan digunakan untuk pemfilteran matcher.

2845 2842 

2846| Bidang | Deskripsi |2843| Field | Deskripsi |

2847| :- | :- |2844| :- | :- |

2848| `error` | Tipe kesalahan: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |2845| `error` | Jenis error: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |

2849| `error_details` | Detail tambahan tentang kesalahan, ketika tersedia |2846| `error_details` | Detail tambahan tentang error, jika tersedia |

2850| `last_assistant_message` | Teks kesalahan yang dirender ditampilkan dalam percakapan. Tidak seperti `Stop` dan `SubagentStop`, di mana bidang ini menyimpan output percakapan Claude, untuk `StopFailure` itu berisi string kesalahan API itu sendiri, seperti `"API Error: Rate limit reached"` |2847| `last_assistant_message` | Teks error yang dirender dan ditampilkan dalam percakapan. Tidak seperti `Stop` dan `SubagentStop`, di mana field ini berisi output percakapan Claude, untuk `StopFailure` field ini berisi string error API itu sendiri, seperti `"API Error: Rate limit reached"` |

2851 2848 

2852```json theme={null}2849```json theme={null}

2853{2850{


2861}2858}

2862```2859```

2863 2860 

2864StopFailure hooks tidak memiliki kontrol keputusan. Mereka dijalankan untuk tujuan notifikasi dan logging saja.2861Hook StopFailure tidak memiliki kontrol keputusan. Hook ini hanya berjalan untuk tujuan notifikasi dan pencatatan log.

2865 2862 

2866<h3 id="teammateidle">2863<h3 id="teammateidle">

2867 TeammateIdle2864 TeammateIdle

2868</h3>2865</h3>

2869 2866 

2870Dijalankan ketika [agent team](/docs/id/agent-teams) teammate akan menjadi idle setelah menyelesaikan giliran. Gunakan ini untuk menegakkan quality gates sebelum teammate berhenti bekerja, seperti memerlukan passing lint checks atau memverifikasi bahwa file output ada.2867Berjalan ketika rekan tim [tim agent](/docs/id/agent-teams) akan menjadi idle setelah menyelesaikan gilirannya. Gunakan ini untuk menegakkan gerbang kualitas sebelum rekan tim berhenti bekerja, seperti mewajibkan lolos pemeriksaan lint atau memverifikasi bahwa file output ada.

2871 2868 

2872TeammateIdle hooks tidak mendukung matchers dan dijalankan pada setiap kemunculan.2869Hook TeammateIdle tidak mendukung matcher dan dipicu pada setiap kejadian.

2873 2870 

2874<h4 id="teammateidle-input">2871<h4 id="teammateidle-input">

2875 TeammateIdle input2872 Input TeammateIdle

2876</h4>2873</h4>

2877 2874 

2878Selain [bidang input umum](#common-input-fields), TeammateIdle hooks menerima `teammate_name` dan `team_name`.2875Selain [field input umum](#common-input-fields), hook TeammateIdle menerima `teammate_name` dan `team_name`.

2879 2876 

2880```json theme={null}2877```json theme={null}

2881{2878{


2889}2886}

2890```2887```

2891 2888 

2892| Bidang | Deskripsi |2889| Field | Deskripsi |

2893| :- | :- |2890| :- | :- |

2894| `teammate_name` | Nama teammate yang akan menjadi idle |2891| `teammate_name` | Nama rekan tim yang akan menjadi idle |

2895| `team_name` | Nama team yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2892| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2896 2893 

2897<h4 id="teammateidle-decision-control">2894<h4 id="teammateidle-decision-control">

2898 TeammateIdle decision control2895 Kontrol keputusan TeammateIdle

2899</h4>2896</h4>

2900 2897 

2901TeammateIdle hooks mendukung dua cara untuk mengontrol perilaku teammate:2898Hook TeammateIdle mendukung dua cara untuk mengontrol perilaku rekan tim:

2902 2899 

2903* **Kode keluar 2**: teammate menerima pesan stderr sebagai umpan balik dan terus bekerja alih-alih menjadi idle.2900* **Exit code 2**: rekan tim menerima pesan stderr sebagai umpan balik dan terus bekerja alih-alih menjadi idle.

2904* **JSON `{"continue": false, "stopReason": "..."}`**: menghentikan teammate sepenuhnya, mencocokkan perilaku hook `Stop`. `stopReason` ditampilkan ke pengguna.2901* **JSON `{"continue": false, "stopReason": "..."}`**: menghentikan rekan tim sepenuhnya, sesuai dengan perilaku hook `Stop`. `stopReason` ditampilkan kepada pengguna.

2905 2902 

2906Contoh ini memeriksa bahwa artefak build ada sebelum mengizinkan teammate menjadi idle:2903Contoh ini memeriksa bahwa artefak build ada sebelum mengizinkan rekan tim menjadi idle:

2907 2904 

2908```bash theme={null}2905```bash theme={null}

2909#!/bin/bash2906#!/bin/bash


2920 ConfigChange2917 ConfigChange

2921</h3>2918</h3>

2922 2919 

2923Dijalankan ketika file konfigurasi berubah selama sesi. Gunakan ini untuk mengaudit perubahan pengaturan, menegakkan kebijakan keamanan, atau memblokir modifikasi tidak sah ke file konfigurasi.2920Berjalan ketika file konfigurasi berubah selama sesi. Gunakan ini untuk mengaudit perubahan pengaturan, menegakkan kebijakan keamanan, atau memblokir modifikasi yang tidak sah pada file konfigurasi.

2924 2921 

2925Claude Code menjalankan ConfigChange hooks ketika file pengaturan, file kebijakan terkelola, atau file skill berubah. Untuk kebijakan terkelola, itu menjalankan mereka hanya ketika `managed-settings.json` atau file dalam `managed-settings.d/` berubah. Itu menerapkan [server-managed settings](/docs/id/server-managed-settings) dan perubahan ke preferensi terkelola macOS atau kebijakan registri Windows tanpa menjalankan mereka. Di WSL dengan [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings), itu juga menerapkan file pengaturan terkelola Windows-side yang berubah pada polling kebijakan-nya tanpa menjalankan mereka.2922Claude Code menjalankan hook ConfigChange ketika file pengaturan, file kebijakan terkelola, atau file skill berubah. Untuk kebijakan terkelola, Claude Code menjalankannya hanya ketika `managed-settings.json` atau file di `managed-settings.d/` berubah. Claude Code menerapkan [pengaturan yang dikelola server](/docs/id/server-managed-settings) dan perubahan pada preferensi terkelola macOS atau kebijakan registri Windows tanpa menjalankannya. Di WSL dengan [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings), Claude Code juga menerapkan file pengaturan terkelola sisi Windows yang berubah pada polling kebijakannya tanpa menjalankannya.

2926 2923 

2927Matcher memfilter pada sumber konfigurasi:2924Matcher memfilter berdasarkan sumber konfigurasi:

2928 2925 

2929| Matcher | Kapan dijalankan |2926| Matcher | Kapan dipicu |

2930| :- | :- |2927| :- | :- |

2931| `user_settings` | `~/.claude/settings.json` berubah |2928| `user_settings` | `~/.claude/settings.json` berubah |

2932| `project_settings` | `.claude/settings.json` berubah |2929| `project_settings` | `.claude/settings.json` berubah |

2933| `local_settings` | `.claude/settings.local.json` berubah |2930| `local_settings` | `.claude/settings.local.json` berubah |

2934| `policy_settings` | `managed-settings.json` atau file dalam `managed-settings.d/` berubah |2931| `policy_settings` | `managed-settings.json` atau file di `managed-settings.d/` berubah |

2935| `skills` | File skill dalam `.claude/skills/` berubah |2932| `skills` | File skill di `.claude/skills/` berubah |

2936 2933 

2937Contoh ini mencatat semua perubahan konfigurasi untuk audit keamanan:2934Contoh ini mencatat semua perubahan konfigurasi untuk audit keamanan:

2938 2935 


2955```2952```

2956 2953 

2957<h4 id="configchange-input">2954<h4 id="configchange-input">

2958 ConfigChange input2955 Input ConfigChange

2959</h4>2956</h4>

2960 2957 

2961Selain [bidang input umum](#common-input-fields), ConfigChange hooks menerima `source` dan secara opsional `file_path`. Bidang `source` menunjukkan tipe konfigurasi mana yang berubah, dan `file_path` menyediakan path ke file spesifik yang dimodifikasi.2958Selain [field input umum](#common-input-fields), hook ConfigChange menerima `source` dan secara opsional `file_path`. Field `source` menunjukkan jenis konfigurasi mana yang berubah, dan `file_path` menyediakan path ke file spesifik yang dimodifikasi.

2962 2959 

2963```json theme={null}2960```json theme={null}

2964{2961{


2972```2969```

2973 2970 

2974<h4 id="configchange-decision-control">2971<h4 id="configchange-decision-control">

2975 ConfigChange decision control2972 Kontrol keputusan ConfigChange

2976</h4>2973</h4>

2977 2974 

2978ConfigChange hooks dapat memblokir perubahan konfigurasi dari berlaku. Gunakan kode keluar 2 atau JSON `decision` untuk mencegah perubahan. Ketika diblokir, pengaturan baru tidak diterapkan ke sesi yang berjalan.2975Hook ConfigChange dapat memblokir perubahan konfigurasi agar tidak berlaku. Gunakan exit code 2 atau `decision` JSON untuk mencegah perubahan. Ketika diblokir, pengaturan baru tidak diterapkan ke sesi yang sedang berjalan.

2979 2976 

2980| Bidang | Deskripsi |2977| Field | Deskripsi |

2981| :- | :- |2978| :- | :- |

2982| `decision` | `"block"` mencegah perubahan konfigurasi diterapkan. Hilangkan untuk mengizinkan perubahan |2979| `decision` | `"block"` mencegah perubahan konfigurasi diterapkan. Hilangkan untuk mengizinkan perubahan |

2983| `reason` | Diterima tetapi tidak pernah ditampilkan |2980| `reason` | Diterima tetapi tidak pernah ditampilkan |


2989}2986}

2990```2987```

2991 2988 

2992Perubahan `policy_settings` tidak dapat diblokir. Hooks masih dijalankan untuk sumber `policy_settings` ketika file pengaturan terkelola pada mesin berubah, jadi Anda dapat menggunakannya untuk mencatat edit itu, tetapi keputusan blocking apa pun diabaikan. Ini memastikan pengaturan yang dikelola enterprise selalu berlaku. Claude Code tidak menjalankan ConfigChange hooks ketika [server-managed settings](/docs/id/server-managed-settings) tiba atau refresh.2989Perubahan `policy_settings` tidak dapat diblokir. Hook tetap dipicu untuk sumber `policy_settings` ketika file pengaturan terkelola di mesin berubah, sehingga Anda dapat menggunakannya untuk mencatat pengeditan tersebut, tetapi keputusan pemblokiran apa pun akan diabaikan. Ini memastikan pengaturan yang dikelola perusahaan selalu berlaku. Claude Code tidak menjalankan hook `ConfigChange` ketika [pengaturan yang dikelola server](/docs/id/server-managed-settings) tiba atau diperbarui.

2993 2990 

2994Claude Code bertindak atas keputusan pemblokiran dari output JSON ConfigChange hook dan membuang `systemMessage` dan `continue`. Perubahan yang diblokir tidak menampilkan pesan kepada Anda atau Claude, baik Anda memblokir dengan `reason` atau dengan stderr pada keluar 2. Claude Code hanya menulis baris ke debug log.2991Claude Code menindaklanjuti keputusan pemblokiran dari output JSON hook ConfigChange dan membuang `systemMessage` dan `continue`. Perubahan yang diblokir tidak memunculkan pesan apa pun kepada Anda atau kepada Claude, baik Anda memblokir dengan `reason` maupun dengan stderr pada exit 2. Claude Code hanya menulis satu baris ke log debug.

2995 2992 

2996<h3 id="cwdchanged">2993<h3 id="cwdchanged">

2997 CwdChanged2994 CwdChanged

2998</h3>2995</h3>

2999 2996 

3000Dijalankan ketika perintah shell dalam percakapan utama mengubah direktori kerja, misalnya ketika Claude menjalankan perintah `cd`. Gunakan ini untuk bereaksi terhadap perubahan direktori: muat ulang variabel lingkungan, aktifkan toolchains khusus proyek, atau jalankan skrip setup secara otomatis. Berpasangan dengan [FileChanged](#filechanged) untuk tools seperti [direnv](https://direnv.net/) yang mengelola lingkungan per-direktori.2997Berjalan ketika perintah shell dalam percakapan utama mengubah direktori kerja, misalnya ketika Claude mengeksekusi perintah `cd`. Gunakan ini untuk bereaksi terhadap perubahan direktori: memuat ulang environment variable, mengaktifkan toolchain khusus proyek, atau menjalankan skrip penyiapan secara otomatis. Berpasangan dengan [FileChanged](#filechanged) untuk tool seperti [direnv](https://direnv.net/) yang mengelola environment per direktori.

3001 2998 

3002CwdChanged hooks memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file itu bertahan ke perintah Bash berikutnya sampai event CwdChanged berikutnya, ketika Claude Code menghapusnya.2999Hook CwdChanged memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya hingga event CwdChanged berikutnya, ketika Claude Code menghapusnya.

3003 3000 

3004CwdChanged tidak mendukung matchers dan dijalankan pada setiap perubahan direktori.3001CwdChanged tidak mendukung matcher dan dipicu pada setiap kejadian.

3005 3002 

3006<h4 id="cwdchanged-input">3003<h4 id="cwdchanged-input">

3007 CwdChanged input3004 Input CwdChanged

3008</h4>3005</h4>

3009 3006 

3010Selain [bidang input umum](#common-input-fields), CwdChanged hooks menerima `old_cwd` dan `new_cwd`.3007Selain [field input umum](#common-input-fields), hook CwdChanged menerima `old_cwd` dan `new_cwd`.

3011 3008 

3012```json theme={null}3009```json theme={null}

3013{3010{


3021```3018```

3022 3019 

3023<h4 id="cwdchanged-output">3020<h4 id="cwdchanged-output">

3024 CwdChanged output3021 Output CwdChanged

3025</h4>3022</h4>

3026 3023 

3027Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, CwdChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis menetapkan path file mana yang [FileChanged](#filechanged) pantau:3024Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook CwdChanged dapat mengembalikan `watchPaths` untuk secara dinamis mengatur path file mana yang dipantau oleh [FileChanged](#filechanged):

3028 3025 

3029| Bidang | Deskripsi |3026| Field | Deskripsi |

3030| :- | :- |3027| :- | :- |

3031| `watchPaths` | Array path absolut. Menggantikan daftar watch dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Mengembalikan array kosong menghapus daftar dinamis, yang khas saat memasuki direktori baru |3028| `watchPaths` | Array path absolut. Menggantikan daftar pantauan dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Mengembalikan array kosong akan mengosongkan daftar dinamis, yang umum dilakukan saat memasuki direktori baru |

3032 3029 

3033CwdChanged hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir perubahan direktori.3030Hook CwdChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir perubahan direktori.

3034 3031 

3035Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON mereka dan membuang `continue`. Dalam sesi interaktif, itu menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tidak mencapai aliran pesan SDK.3032Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON-nya dan membuang `continue`. Dalam sesi interaktif, Claude Code menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tersebut tidak mencapai aliran pesan SDK.

3036 3033 

3037<h3 id="directoryadded">3034<h3 id="directoryadded">

3038 DirectoryAdded3035 DirectoryAdded

3039</h3>3036</h3>

3040 3037 

3041Dijalankan setelah Anda menambahkan direktori kerja mid-session dengan perintah `/add-dir`, atau setelah klien SDK menambahkan satu dengan permintaan kontrol `register_repo_root`. Gunakan ini untuk menyiapkan repositori yang baru ditambahkan, misalnya dengan menginstal dependensinya.3038Berjalan setelah Anda menambahkan direktori kerja di tengah sesi dengan perintah `/add-dir`, atau setelah klien SDK menambahkannya dengan permintaan kontrol `register_repo_root`. Gunakan ini untuk menyiapkan repositori yang baru ditambahkan, misalnya dengan menginstal dependensinya.

3042 3039 

3043Claude Code tidak menjalankan event ini ketika:3040Claude Code tidak memicu event ini ketika:

3044 3041 

3045* Anda meneruskan direktori dengan flag startup `--add-dir`; [SessionStart](#sessionstart) mencakup direktori itu3042* Anda meneruskan direktori dengan flag startup `--add-dir`; [SessionStart](#sessionstart) mencakup direktori tersebut

3046* Anda menambahkan direktori di tab `/permissions` Workspace3043* Anda menambahkan direktori pada tab Workspace di `/permissions`

3047* Anda menambahkan direktori yang sudah merupakan direktori kerja atau di dalam satu3044* Anda menambahkan direktori yang sudah merupakan direktori kerja atau berada di dalamnya

3048 3045 

3049Claude Code menjalankan DirectoryAdded setelah menyegarkan status sandbox dan izin, jadi tools sandboxed sudah melihat direktori baru ketika hook Anda dijalankan. Perintah hook itu sendiri berjalan tanpa sandbox.3046Claude Code memicu DirectoryAdded setelah menyegarkan status sandbox dan izin, sehingga tool yang di-sandbox sudah melihat direktori baru ketika hook Anda berjalan. Perintah hook itu sendiri berjalan tanpa sandbox.

3050 3047 

3051Claude Code tidak menunggu hook: penambahan selesai segera, dan hook dijalankan di latar belakang dengan timeout default 600 detik.3048Claude Code tidak menunggu hook: penambahan selesai segera, dan hook berjalan di latar belakang dengan timeout default 600 detik.

3052 3049 

3053Matcher memfilter pada cara direktori ditambahkan:3050Matcher memfilter berdasarkan cara direktori ditambahkan:

3054 3051 

3055| Matcher | Kapan dijalankan |3052| Matcher | Kapan dipicu |

3056| :- | :- |3053| :- | :- |

3057| `slash_command` | Anda menambahkan direktori dengan `/add-dir` |3054| `slash_command` | Anda menambahkan direktori dengan `/add-dir` |

3058| `register_repo_root` | Klien SDK menambahkan direktori dengan permintaan kontrol `register_repo_root` |3055| `register_repo_root` | Klien SDK menambahkan direktori dengan permintaan kontrol `register_repo_root` |

3059 3056 

3060<h4 id="directoryadded-input">3057<h4 id="directoryadded-input">

3061 DirectoryAdded input3058 Input DirectoryAdded

3062</h4>3059</h4>

3063 3060 

3064Selain [bidang input umum](#common-input-fields), DirectoryAdded hooks menerima `directory` dan `source`.3061Selain [field input umum](#common-input-fields), hook DirectoryAdded menerima `directory` dan `source`.

3065 3062 

3066| Bidang | Deskripsi |3063| Field | Deskripsi |

3067| :- | :- |3064| :- | :- |

3068| `directory` | Path absolut dari direktori yang ditambahkan |3065| `directory` | Path absolut dari direktori yang ditambahkan |

3069| `source` | Bagaimana direktori ditambahkan, `"slash_command"` untuk `/add-dir` atau `"register_repo_root"` untuk permintaan kontrol SDK |3066| `source` | Cara direktori ditambahkan, `"slash_command"` untuk `/add-dir` atau `"register_repo_root"` untuk permintaan kontrol SDK |

3070 3067 

3071```json theme={null}3068```json theme={null}

3072{3069{


3079}3076}

3080```3077```

3081 3078 

3082DirectoryAdded hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir penambahan, yang sudah selesai ketika hook dijalankan. Claude Code membuang bidang `continue` dari output JSON mereka dan menampilkan sisanya berbeda per sumber:3079Hook DirectoryAdded tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir penambahan, yang sudah selesai saat hook berjalan. Claude Code membuang field `continue` dari output JSON-nya dan memunculkan sisanya secara berbeda per sumber:

3083 3080 

3084* `slash_command`: Claude Code mengirimkan output `systemMessage` hook ke Claude sebagai konteks pada giliran percakapan berikutnya, daripada menampilkannya kepada Anda. Jumlah hook yang gagal muncul dalam transkrip. Output kegagalan lengkap masuk ke debug log3081* `slash_command`: Claude Code mengirimkan `systemMessage` hook kepada Claude sebagai konteks pada giliran percakapan berikutnya, alih-alih menampilkannya kepada Anda. Jumlah hook yang gagal muncul di transkrip. Output kegagalan lengkap masuk ke log debug

3085* `register_repo_root`: Claude Code menulis output `systemMessage` dan output kegagalan ke debug log saja3082* `register_repo_root`: Claude Code menulis output `systemMessage` dan output kegagalan hanya ke log debug

3086 3083 

3087<h3 id="filechanged">3084<h3 id="filechanged">

3088 FileChanged3085 FileChanged

3089</h3>3086</h3>

3090 3087 

3091Dijalankan ketika file yang dipantau berubah di disk. Claude Code mendeteksi perubahan dengan filesystem watcher, bukan dengan memeriksa pemanggilan tool, jadi itu menjalankan hook tidak peduli apa yang mengubah file: pemanggilan tool `Edit` atau `Write`, skrip yang dijalankan Claude dengan `Bash`, atau proses di luar Claude Code sepenuhnya. Penggunaan umum adalah memuat ulang variabel lingkungan ketika file konfigurasi proyek berubah.3088Berjalan ketika file yang dipantau berubah di disk. Claude Code mendeteksi perubahan dengan pemantau filesystem, bukan dengan memeriksa panggilan tool, sehingga ia menjalankan hook apa pun yang mengubah file tersebut: panggilan tool `Edit` atau `Write`, skrip yang dijalankan Claude dengan `Bash`, atau proses yang sepenuhnya berada di luar Claude Code. Penggunaan umum adalah memuat ulang environment variable ketika file konfigurasi proyek berubah.

3092 3089 

3093Bidang `matcher` untuk event ini melayani dua peran:3090`matcher` untuk event ini memiliki dua peran:

3094 3091 

3095* **Bangun daftar watch**: nilai dibagi pada `|` dan setiap segmen terdaftar sebagai nama file literal di direktori kerja, jadi `".envrc|.env"` menonton tepat dua file itu. Pola regex tidak berguna di sini: nilai seperti `^\.env` akan menonton file yang secara harfiah bernama `^\.env`.3092* **Membangun daftar pantauan**: nilainya dipisah berdasarkan `|` dan setiap segmen didaftarkan sebagai nama file literal di direktori kerja, sehingga `".envrc|.env"` memantau tepat kedua file tersebut. Pola regex tidak berguna di sini: nilai seperti `^\.env` akan memantau file yang secara literal bernama `^\.env`.

3096* **Filter hooks mana yang dijalankan**: ketika file yang dipantau berubah, nilai yang sama memfilter grup hook mana yang dijalankan menggunakan [aturan matcher](#matcher-patterns) standar terhadap basename file yang berubah.3093* **Memfilter hook mana yang berjalan**: ketika file yang dipantau berubah, nilai yang sama memfilter grup hook mana yang berjalan menggunakan [aturan matcher](#matcher-patterns) standar terhadap basename file yang berubah.

3097 3094 

3098Contoh ini menormalkan line endings dalam `data.csv` setelah perubahan apa pun, termasuk pemanggilan tool `Bash` atau skrip eksternal yang menulis ulang file:3095Contoh ini menormalkan akhir baris di `data.csv` setelah perubahan apa pun, termasuk perintah `Bash` atau skrip eksternal yang menulis ulang file:

3099 3096 

3100```json theme={null}3097```json theme={null}

3101{3098{


3115}3112}

3116```3113```

3117 3114 

3118Hook membaca path file yang berubah dari bidang `file_path` dari [JSON input](#filechanged-input) di stdin. Guard `grep`-nya menguji hal yang sama yang `perl` hapus, CR di akhir baris, jadi run setelah normalisasi keluar tanpa menyentuh file. Guard yang lebih longgar loop selamanya, karena `perl -i` menulis ulang file bahkan ketika itu mengganti tidak ada dan Claude Code menjalankan hook lagi setelah setiap penulisan ulang. Simpan skrip ini di `/path/to/normalize-line-endings.sh` dan buat dapat dieksekusi:3115Hook membaca path absolut file yang berubah dari field `file_path` pada [input JSON](#filechanged-input) di stdin. Penjaga `grep`-nya menguji hal yang sama yang dihapus oleh `perl`, yaitu CR di akhir baris, sehingga eksekusi setelah normalisasi keluar tanpa menyentuh file. Penjaga yang lebih longgar akan berulang tanpa henti, karena `perl -i` menulis ulang file bahkan ketika tidak mengganti apa pun dan Claude Code menjalankan hook lagi setelah setiap penulisan ulang. Simpan skrip ini di `/path/to/normalize-line-endings.sh` dan jadikan dapat dieksekusi:

3119 3116 

3120```bash theme={null}3117```bash theme={null}

3121#!/bin/bash3118#!/bin/bash


3125fi3122fi

3126```3123```

3127 3124 

3128Untuk mengkonfirmasi hook bekerja, minta Claude untuk menambahkan baris CRLF ke `data.csv` dengan perintah `Bash`. Claude Code menjalankan hook dan file berakhir dengan line endings LF.3125Untuk memastikan hook berfungsi, minta Claude menambahkan baris CRLF ke `data.csv` dengan perintah `Bash`. Claude Code menjalankan hook dan file akhirnya memiliki akhir baris LF.

3129 3126 

3130Untuk menonton file yang tidak dapat Anda beri nama di muka, kembalikan [`watchPaths`](#filechanged-output) dari hook untuk memperbarui daftar watch secara dinamis. Claude Code memulai watcher hanya ketika sesuatu memberi nama file untuk ditonton, jadi seed daftar dengan grup FileChanged yang matcher-nya memberi nama setidaknya satu file, atau dengan hook [SessionStart](#sessionstart-decision-control) atau [CwdChanged](#cwdchanged) yang mengembalikan `watchPaths`. Matcher masih memfilter grup hook mana yang dijalankan ketika file yang dipantau berubah, jadi berikan grup yang menangani path dinamis matcher yang dihilangkan, yang cocok dengan setiap file yang dipantau dan tidak menambahkan apa pun ke daftar watch. Matcher `"*"` juga cocok dengan setiap file, tetapi Claude Code mendaftarkannya dalam daftar watch seperti nilai lainnya, sebagai file literal bernama `*`.3127Untuk memantau file yang tidak dapat Anda sebutkan di awal, kembalikan [`watchPaths`](#filechanged-output) dari hook untuk memperbarui daftar pantauan secara dinamis. Claude Code memulai pemantau hanya ketika sesuatu menyebutkan file untuk dipantau, jadi isi awal daftar dengan grup FileChanged yang matcher-nya menyebutkan setidaknya satu file, atau dengan hook [SessionStart](#sessionstart-decision-control) atau [CwdChanged](#cwdchanged) yang mengembalikan `watchPaths`. Matcher tetap memfilter grup hook mana yang berjalan ketika file yang dipantau berubah, jadi berikan grup yang menangani path dinamis matcher yang dihilangkan, yang cocok dengan setiap file yang dipantau dan tidak menambahkan apa pun ke daftar pantauan. Matcher `"*"` juga cocok dengan setiap file, tetapi Claude Code mendaftarkannya dalam daftar pantauan seperti nilai lainnya, sebagai file literal bernama `*`.

3131 3128 

3132FileChanged hooks memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file itu bertahan ke perintah Bash berikutnya sampai event [CwdChanged](#cwdchanged) berikutnya, ketika Claude Code menghapusnya.3129Hook FileChanged memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya hingga event [CwdChanged](#cwdchanged) berikutnya, ketika Claude Code menghapusnya.

3133 3130 

3134<h4 id="filechanged-input">3131<h4 id="filechanged-input">

3135 FileChanged input3132 Input FileChanged

3136</h4>3133</h4>

3137 3134 

3138Selain [bidang input umum](#common-input-fields), FileChanged hooks menerima `file_path` dan `event`.3135Selain [field input umum](#common-input-fields), hook FileChanged menerima `file_path` dan `event`.

3139 3136 

3140| Bidang | Deskripsi |3137| Field | Deskripsi |

3141| :- | :- |3138| :- | :- |

3142| `file_path` | Path absolut ke file yang berubah |3139| `file_path` | Path absolut ke file yang berubah |

3143| `event` | Apa yang terjadi: `"change"` untuk file yang dimodifikasi, `"add"` untuk file yang dibuat, atau `"unlink"` untuk file yang dihapus |3140| `event` | Apa yang terjadi: `"change"` untuk file yang dimodifikasi, `"add"` untuk file yang dibuat, atau `"unlink"` untuk file yang dihapus |


3154```3151```

3155 3152 

3156<h4 id="filechanged-output">3153<h4 id="filechanged-output">

3157 FileChanged output3154 Output FileChanged

3158</h4>3155</h4>

3159 3156 

3160Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, FileChanged hooks dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:3157Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook FileChanged dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:

3161 3158 

3162| Bidang | Deskripsi |3159| Field | Deskripsi |

3163| :- | :- |3160| :- | :- |

3164| `watchPaths` | Array path absolut. Menggantikan daftar watch dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Gunakan ini ketika skrip hook Anda menemukan file tambahan untuk dipantau berdasarkan file yang berubah |3161| `watchPaths` | Array path absolut. Menggantikan daftar pantauan dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Gunakan ini ketika skrip hook Anda menemukan file tambahan untuk dipantau berdasarkan file yang berubah |

3165 3162 

3166FileChanged hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir perubahan file dari terjadi.3163Hook FileChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir terjadinya perubahan file.

3167 3164 

3168Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON mereka dan membuang `continue`. Dalam sesi interaktif, itu menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tidak mencapai aliran pesan SDK.3165Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON-nya dan membuang `continue`. Dalam sesi interaktif, Claude Code menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tersebut tidak mencapai aliran pesan SDK.

3169 3166 

3170<h3 id="worktreecreate">3167<h3 id="worktreecreate">

3171 WorktreeCreate3168 WorktreeCreate

3172</h3>3169</h3>

3173 3170 

3174Dijalankan ketika worktree sedang dibuat, baik dari `claude --worktree`, dari [subagent menggunakan `isolation: "worktree"`](/docs/id/sub-agents#choose-the-subagent-scope), atau untuk [sesi latar belakang](/docs/id/agent-view#how-file-edits-are-isolated) yang Claude Code isolasi dalam worktree-nya sendiri. Secara default Claude Code membuat salinan kerja terisolasi dengan `git worktree`. Mengonfigurasi hook WorktreeCreate menggantikan perilaku git default itu, memungkinkan Anda menggunakan sistem kontrol versi berbeda seperti SVN, Perforce, atau Mercurial.3171Berjalan ketika worktree sedang dibuat, baik dari `claude --worktree`, dari [subagent yang menggunakan `isolation: "worktree"`](/docs/id/sub-agents#choose-the-subagent-scope), atau untuk [sesi latar belakang](/docs/id/agent-view#how-file-edits-are-isolated) yang diisolasi Claude Code dalam worktree-nya sendiri. Secara default, Claude Code membuat salinan kerja terisolasi dengan `git worktree`. Mengonfigurasi hook WorktreeCreate akan menggantikan perilaku git default tersebut, memungkinkan Anda menggunakan sistem kontrol versi yang berbeda seperti SVN, Perforce, atau Mercurial.

3172 

3173Karena hook sepenuhnya menggantikan perilaku default, [`.worktreeinclude`](/docs/id/worktrees#copy-gitignored-files-into-worktrees) tidak diproses. Jika Anda perlu menyalin file konfigurasi lokal seperti `.env` ke worktree baru, lakukan di dalam skrip hook Anda.

3175 3174 

3176Karena hook menggantikan perilaku default sepenuhnya, [`.worktreeinclude`](/docs/id/worktrees#copy-gitignored-files-into-worktrees) tidak diproses. Jika Anda perlu menyalin file konfigurasi lokal seperti `.env` ke worktree baru, lakukan di dalam skrip hook Anda.3175Hook harus mengembalikan path ke direktori worktree yang dibuat. Claude Code menggunakan path ini sebagai direktori kerja untuk sesi terisolasi. Lihat [Output WorktreeCreate](#worktreecreate-output) untuk cara setiap jenis hook mengembalikan path.

3177 3176 

3178Hook harus mengembalikan path ke direktori worktree yang dibuat. Claude Code menggunakan path ini sebagai direktori kerja untuk sesi terisolasi. Lihat [WorktreeCreate output](#worktreecreate-output) untuk cara setiap tipe hook mengembalikan path.3177Claude Code menindaklanjuti keberhasilan hook dan path yang dikembalikan, serta membuang `systemMessage` dan `continue`.

3179 3178 

3180Contoh ini membuat salinan kerja SVN dan mencetak path untuk Claude Code gunakan. Ganti URL repositori dengan milik Anda sendiri:3179Contoh ini membuat salinan kerja SVN dan mencetak path untuk digunakan Claude Code. Ganti URL repositori dengan milik Anda sendiri:

3181 3180 

3182```json theme={null}3181```json theme={null}

3183{3182{


3196}3195}

3197```3196```

3198 3197 

3199Hook membaca `name` worktree dari input JSON di stdin, melakukan checkout salinan segar ke direktori baru, dan mencetak path direktori. `echo` pada baris terakhir adalah apa yang Claude Code baca sebagai path worktree. Alihkan output lainnya ke stderr sehingga tidak mengganggu path.3198Hook membaca `name` worktree dari input JSON di stdin, melakukan checkout salinan baru ke direktori baru, dan mencetak path direktori. `echo` pada baris terakhir adalah apa yang dibaca Claude Code sebagai path worktree. Alihkan output lainnya ke stderr agar tidak mengganggu path.

3200 3199 

3201<h4 id="worktreecreate-input">3200<h4 id="worktreecreate-input">

3202 WorktreeCreate input3201 Input WorktreeCreate

3203</h4>3202</h4>

3204 3203 

3205Selain [bidang input umum](#common-input-fields), WorktreeCreate hooks menerima bidang `name`. Ini adalah pengenal slug untuk worktree baru, baik ditentukan oleh pengguna atau auto-generated, misalnya `bold-oak-a3f2`.3204Selain [field input umum](#common-input-fields), hook WorktreeCreate menerima field `name`. Ini adalah pengidentifikasi slug untuk worktree baru, baik yang ditentukan oleh pengguna maupun yang dibuat secara otomatis, misalnya `bold-oak-a3f2`.

3206 3205 

3207```json theme={null}3206```json theme={null}

3208{3207{


3215```3214```

3216 3215 

3217<h4 id="worktreecreate-output">3216<h4 id="worktreecreate-output">

3218 WorktreeCreate output3217 Output WorktreeCreate

3219</h4>3218</h4>

3220 3219 

3221WorktreeCreate hooks tidak menggunakan model keputusan allow/block standar. Sebaliknya, kesuksesan atau kegagalan hook menentukan hasil. Hook harus mengembalikan path ke direktori worktree yang dibuat:3220Hook WorktreeCreate tidak menggunakan model keputusan allow/block standar. Sebaliknya, keberhasilan atau kegagalan hook menentukan hasilnya. Hook harus mengembalikan path ke direktori worktree yang dibuat:

3222 3221 

3223* **Command hooks** (`type: "command"`): cetak path sebagai baris non-kosong terakhir dari stdout. Claude Code menghapus kode escape ANSI sebelum membaca baris itu, jadi banner startup shell yang dicetak sebelum `echo` Anda diabaikan. Alihkan output hook lainnya ke stderr.3222* **Hook command** (`type: "command"`): cetak path sebagai baris tidak kosong terakhir dari stdout. Claude Code menghapus kode escape ANSI sebelum membaca baris tersebut, sehingga banner startup shell yang dicetak sebelum `echo` Anda diabaikan. Alihkan output hook lainnya ke stderr.

3224* **HTTP hooks** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` dalam badan respons.3223* **Hook HTTP** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` di body respons.

3225 3224 

3226Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan kesalahan.3225Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan error.

3227 3226 

3228Claude Code menyelesaikan path relatif terhadap direktori tempat hook dijalankan, meruntuhkan segmen `.` atau `..` apa pun di dalamnya. Jika path yang dihasilkan bukan direktori yang dapat dimasuki Claude Code, sesi mencetak kesalahan yang menamai path dan keluar dengan kode 1.3227Claude Code menyelesaikan path relatif terhadap direktori tempat hook dijalankan, sambil menyederhanakan segmen `.` atau `..` di dalamnya. Jika path yang dihasilkan bukan direktori yang dapat dimasuki Claude Code, sesi mencetak error yang menyebutkan path tersebut dan keluar dengan kode 1.

3229 3228 

3230Claude Code menolak path absolut yang berisi segmen `.` atau `..`, dan path apa pun yang melewati symlink di bawah akar repositori, karena symlink yang berkomitmen ke repositori dapat mengarahkan worktree di luarnya. Kesalahan menamai komponen yang ditolak. Kembalikan path yang dinormalisasi yang tidak melewati symlink di dalam repositori. Sebelum v2.1.216, pembuatan worktree mengikuti path hook tanpa screening ini.3229Claude Code menolak path absolut yang berisi segmen `.` atau `..`, serta path apa pun yang melewati symlink di bawah root repositori, karena symlink yang di-commit ke repositori dapat mengalihkan worktree ke luar repositori. Error tersebut menyebutkan komponen yang ditolak. Kembalikan path yang dinormalisasi yang tidak melewati symlink di dalam repositori. Sebelum v2.1.216, pembuatan worktree mengikuti path dari hook tanpa penyaringan ini.

3231 3230 

3232<h3 id="worktreeremove">3231<h3 id="worktreeremove">

3233 WorktreeRemove3232 WorktreeRemove

3234</h3>3233</h3>

3235 3234 

3236Dijalankan ketika worktree sedang dihapus. Ini adalah pasangan cleanup untuk [WorktreeCreate](#worktreecreate). Event dijalankan ketika:3235Berjalan saat worktree sedang dihapus. Ini adalah pasangan pembersihan dari [WorktreeCreate](#worktreecreate). Event ini dipicu saat:

3237 3236 

3238* Anda keluar dari sesi `--worktree` dan memilih untuk menghapusnya3237* Anda keluar dari sesi `--worktree` dan memilih untuk menghapusnya

3239* Subagent dengan `isolation: "worktree"` selesai3238* subagent dengan `isolation: "worktree"` selesai

3240* Anda menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang worktree-nya dibuat hook3239* Anda menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang worktree-nya dibuat oleh hook

3240 

3241Untuk worktree berbasis git, Claude Code menangani pembersihan secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate, pasangkan dengan hook WorktreeRemove untuk mengontrol pembersihan worktree yang dibuatnya:

3242 

3243* **Tanpa hook WorktreeRemove**: saat Anda keluar dari sesi `--worktree` dan memilih penghapusan, Claude Code melakukan fallback ke `git worktree remove --force` pada path yang dikembalikan hook WorktreeCreate Anda, sehingga worktree yang dikenali git akan dihapus. Worktree yang tidak dikenali git, misalnya yang dibuat hook Anda dengan sistem kontrol versi non-git, tetap ada di disk. Untuk apa yang dilakukan penghapusan [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) terhadap worktree yang dibuat hook, lihat aturan penghapusan di agent view.

3244* **Hook keluar dengan 0**: worktree dianggap telah dihapus. Claude Code tidak membaca apa pun lagi dari hook, jadi pastikan hook Anda telah menghapus direktori tersebut.

3245* **Hook keluar dengan non-zero**: penghapusan gagal jika direktori di `worktree_path` masih ada setelahnya, dan worktree tetap ada di disk tanpa fallback git. Hook yang menghapus direktori sebelum keluar dengan non-zero dianggap telah dihapus. Untuk cara kegagalan dilaporkan, lihat [Input WorktreeRemove](#worktreeremove-input).

3241 3246 

3242Untuk git-based worktrees, Claude Code menangani cleanup secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate untuk sistem kontrol versi non-git, pasangkan dengan hook WorktreeRemove untuk menangani cleanup. Tanpanya, direktori worktree ditinggalkan di disk.3247Claude Code tidak pernah menghapus branch milik worktree yang dibuat hook, karena Claude Code hanya mengetahui path yang dikembalikan hook WorktreeCreate Anda. Jika hook WorktreeCreate Anda membuat branch, hapus branch tersebut di hook WorktreeRemove Anda.

3243 3248 

3244Claude Code membuang [bidang output JSON](#json-output) dari hook WorktreeRemove, seperti `systemMessage` dan `continue`.3249Claude Code membuang [field output JSON](#json-output) dari hook WorktreeRemove, seperti `systemMessage` dan `continue`.

3245 3250 

3246Untuk penghapusan sesi latar belakang, Claude Code memverifikasi path worktree yang disimpan sebelum menjalankan hook dan menolak path yang merupakan symlink atau melewati satu di bawah akar repositori. Hook dijalankan untuk worktree yang masih berisi file hanya ketika Anda mengkonfirmasi penghapusan dalam [agent view](/docs/id/agent-view#what-deleting-a-session-removes); untuk worktree seperti itu, [`claude rm`](/docs/id/agent-view#manage-sessions-from-the-shell) menyimpan sesi dan worktree sebagai gantinya. Sebelum v2.1.216, hook dijalankan pada path yang disimpan tanpa pemeriksaan ini.3251Untuk penghapusan sesi latar belakang, Claude Code memverifikasi path worktree yang tersimpan sebelum menjalankan hook dan menolak path yang merupakan symlink atau melewati symlink di bawah root repositori. Hook berjalan untuk worktree yang masih berisi file hanya ketika Anda mengonfirmasi penghapusan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes); untuk worktree seperti itu, [`claude rm`](/docs/id/agent-view#manage-sessions-from-the-shell) justru mempertahankan sesi dan worktree. Sebelum v2.1.216, hook berjalan pada path yang tersimpan tanpa pemeriksaan ini.

3247 3252 

3248Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` dalam input hook. Contoh ini membaca path itu dan menghapus direktori:3253Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` di input hook. Contoh ini membaca path tersebut dan menghapus direktorinya:

3249 3254 

3250```json theme={null}3255```json theme={null}

3251{3256{


3265```3270```

3266 3271 

3267<h4 id="worktreeremove-input">3272<h4 id="worktreeremove-input">

3268 WorktreeRemove input3273 Input WorktreeRemove

3269</h4>3274</h4>

3270 3275 

3271Selain [bidang input umum](#common-input-fields), WorktreeRemove hooks menerima bidang `worktree_path`, yang merupakan path absolut ke worktree yang sedang dihapus.3276Selain [field input umum](#common-input-fields), hook WorktreeRemove menerima field `worktree_path`, yaitu path absolut ke worktree yang sedang dihapus.

3272 3277 

3273```json theme={null}3278```json theme={null}

3274{3279{


3280}3285}

3281```3286```

3282 3287 

3283Kode keluar hook WorktreeRemove menentukan hasil. Ketika hook keluar non-zero dan direktori di `worktree_path` masih ada setelahnya, penghapusan gagal:3288Exit code hook WorktreeRemove menentukan hasilnya. Ketika hook keluar dengan non-zero dan direktori di `worktree_path` masih ada setelahnya, penghapusan gagal:

3284 3289 

3285* Worktree tetap di disk, dan perintah hook dan stderr masuk ke [debug log](#debug-hooks).3290* Worktree tetap ada di disk, dan perintah serta stderr hook masuk ke [log debug](#debug-hooks).

3286* Jika Anda menghapus sesi latar belakang, sesi tetap juga. Pesan penolakan dalam [agent view](/docs/id/agent-view#what-deleting-a-session-removes) melaporkan bagaimana hook berakhir, seperti `exited 1`, mengutip awal stderr-nya, dan mengatakan apakah menghapus sesi lagi menghapus direktori bagaimanapun.3291* Jika Anda sedang menghapus sesi latar belakang, sesi tersebut juga tetap ada. Pesan penolakan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes) melaporkan bagaimana hook berakhir, seperti `exited 1`, mengutip bagian awal stderr-nya, dan menyebutkan apakah menghapus sesi lagi akan tetap menghapus direktori tersebut.

3287 3292 

3288<h3 id="precompact">3293<h3 id="precompact">

3289 PreCompact3294 PreCompact

3290</h3>3295</h3>

3291 3296 

3292Dijalankan sebelum Claude Code akan menjalankan operasi compact.3297Berjalan sebelum Claude Code akan menjalankan operasi compact.

3293 3298 

3294Nilai matcher menunjukkan apakah compaction dipicu secara manual atau otomatis:3299Nilai matcher menunjukkan apakah compaction dipicu secara manual atau otomatis:

3295 3300 

3296| Matcher | Kapan dijalankan |3301| Matcher | Kapan dipicu |

3297| :- | :- |3302| :- | :- |

3298| `manual` | `/compact` |3303| `manual` | `/compact` |

3299| `auto` | Auto-compact ketika percakapan mencapai [auto-compact window](/docs/id/model-config#set-the-auto-compact-window) |3304| `auto` | Auto-compact saat percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |

3300 3305 

3301Keluar dengan kode 2 untuk memblokir compaction. Untuk manual `/compact`, pesan stderr ditampilkan ke pengguna. Anda juga dapat memblokir dengan mengembalikan JSON dengan `"decision": "block"`.3306Keluar dengan kode 2 untuk memblokir compaction. Untuk `/compact` manual, pesan stderr ditampilkan kepada pengguna. Anda juga dapat memblokir dengan mengembalikan JSON dengan `"decision": "block"`.

3302 3307 

3303Memblokir automatic compaction memiliki efek berbeda tergantung pada kapan dijalankan. Jika compaction dipicu secara proaktif sebelum batas konteks, Claude Code melewatinya dan percakapan berlanjut tanpa compaction. Jika compaction dipicu untuk pulih dari kesalahan batas konteks yang sudah dikembalikan oleh API, kesalahan yang mendasar muncul dan permintaan saat ini gagal.3308Memblokir compaction otomatis memiliki efek berbeda tergantung kapan dipicu. Jika compaction dipicu secara proaktif sebelum batas konteks, Claude Code melewatinya dan percakapan berlanjut tanpa dipadatkan. Jika compaction dipicu untuk memulihkan dari error batas konteks yang sudah dikembalikan oleh API, error yang mendasarinya muncul dan permintaan saat ini gagal.

3304 3309 

3305Claude Code membuang bidang `systemMessage` dan `continue` dari hook PreCompact.3310Claude Code membuang field `systemMessage` dan `continue` dari hook PreCompact.

3306 3311 

3307<h4 id="precompact-input">3312<h4 id="precompact-input">

3308 PreCompact input3313 Input PreCompact

3309</h4>3314</h4>

3310 3315 

3311Selain [bidang input umum](#common-input-fields), PreCompact hooks menerima `trigger` dan `custom_instructions`. Untuk `manual`, `custom_instructions` berisi apa yang diteruskan pengguna ke `/compact` dan `null` ketika mereka tidak meneruskan apa pun. Untuk `auto`, `custom_instructions` adalah `null`.3316Selain [field input umum](#common-input-fields), hook PreCompact menerima `trigger` dan `custom_instructions`. Untuk `manual`, `custom_instructions` berisi apa yang diteruskan pengguna ke `/compact` dan bernilai `null` jika pengguna tidak meneruskan apa pun. Untuk `auto`, `custom_instructions` bernilai `null`.

3312 3317 

3313```json theme={null}3318```json theme={null}

3314{3319{


3325 PostCompact3330 PostCompact

3326</h3>3331</h3>

3327 3332 

3328Dijalankan setelah Claude Code menyelesaikan operasi compact. Gunakan event ini untuk bereaksi terhadap status compacted baru, misalnya untuk mencatat ringkasan yang dihasilkan atau memperbarui status eksternal. Claude Code membuang bidang `systemMessage` dan `continue` dari hook PostCompact.3333Berjalan setelah Claude Code menyelesaikan operasi compact. Gunakan event ini untuk bereaksi terhadap status baru yang telah dipadatkan, misalnya untuk mencatat ringkasan yang dihasilkan atau memperbarui status eksternal. Claude Code membuang field `systemMessage` dan `continue` dari hook PostCompact.

3329 3334 

3330Nilai matcher yang sama berlaku seperti untuk `PreCompact`:3335Nilai matcher yang sama berlaku seperti untuk `PreCompact`:

3331 3336 

3332| Matcher | Kapan dijalankan |3337| Matcher | Kapan dipicu |

3333| :- | :- |3338| :- | :- |

3334| `manual` | Setelah `/compact` |3339| `manual` | Setelah `/compact` |

3335| `auto` | Setelah auto-compact ketika percakapan mencapai [auto-compact window](/docs/id/model-config#set-the-auto-compact-window) |3340| `auto` | Setelah auto-compact saat percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |

3336 3341 

3337<h4 id="postcompact-input">3342<h4 id="postcompact-input">

3338 PostCompact input3343 Input PostCompact

3339</h4>3344</h4>

3340 3345 

3341Selain [bidang input umum](#common-input-fields), PostCompact hooks menerima `trigger` dan `compact_summary`. Bidang `compact_summary` berisi ringkasan percakapan yang dihasilkan oleh operasi compact.3346Selain [field input umum](#common-input-fields), hook PostCompact menerima `trigger` dan `compact_summary`. Field `compact_summary` berisi ringkasan percakapan yang dihasilkan oleh operasi compact.

3342 3347 

3343```json theme={null}3348```json theme={null}

3344{3349{


3351}3356}

3352```3357```

3353 3358 

3354PostCompact hooks tidak memiliki kontrol keputusan. Mereka tidak dapat mempengaruhi hasil compaction tetapi dapat melakukan tugas follow-up.3359Hook PostCompact tidak memiliki kontrol keputusan. Hook ini tidak dapat memengaruhi hasil compaction tetapi dapat melakukan tugas lanjutan.

3355 3360 

3356<h3 id="premodelswitch">3361<h3 id="premodelswitch">

3357 PreModelSwitch3362 PreModelSwitch

3358</h3>3363</h3>

3359 3364 

3360Dijalankan sebelum Claude Code menerapkan perubahan model yang Anda atau klien minta. Gunakan untuk memblokir switch, memerlukan konfirmasi, atau menampilkan apa yang akan dibiayai switch sebelum terjadi.3365Berjalan sebelum Claude Code menerapkan peralihan model yang diminta oleh Anda atau klien. Gunakan untuk memblokir peralihan, meminta konfirmasi, atau menampilkan biaya peralihan sebelum terjadi.

3361 3366 

3362PreModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Claude Code menjalankannya untuk permintaan ini:3367PreModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Claude Code menjalankannya untuk permintaan berikut:

3363 3368 

3364* `/model <name>` dan picker `/model`3369* `/model <name>` dan pemilih `/model`

3365* Picker model `Option+P` atau `Alt+P`3370* Pemilih model `Option+P` atau `Alt+P`

3366* Pengaturan Model dalam `/config`3371* Pengaturan Model di `/config`

3367* Mengaktifkan [fast mode](/docs/id/fast-mode) ketika itu mengubah model sesi3372* Mengaktifkan [fast mode](/docs/id/fast-mode) ketika hal itu mengubah model sesi

3368* Permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host [Agent SDK](/docs/id/agent-sdk/typescript#query-object) atau [Remote Control](/docs/id/remote-control)3373* Permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host [Agent SDK](/docs/id/agent-sdk/typescript#query-object) atau [Remote Control](/docs/id/remote-control)

3369 3374 

3370Claude Code tidak menjalankan PreModelSwitch hooks untuk switch yang dibuat sendiri, seperti [automatic model fallback](/docs/id/model-config#automatic-model-fallback) atau memulihkan model ketika Anda melanjutkan sesi. Perubahan itu mencapai [PostModelSwitch](#postmodelswitch) saja.3375Claude Code tidak menjalankan hook PreModelSwitch untuk peralihan yang dilakukannya sendiri, seperti [fallback model otomatis](/docs/id/model-config#automatic-model-fallback) atau memulihkan model saat Anda melanjutkan sesi. Perubahan tersebut hanya mencapai [PostModelSwitch](#postmodelswitch).

3371 3376 

3372Claude Code membandingkan matcher terhadap nama kanonik model yang sesi beralih ke, mengabaikan apa pun `[1m]` suffix. Alias seperti `opus`, ID model yang tertanggal, dan ID khusus penyedia seperti ID model Amazon Bedrock semuanya cocok dengan satu nama kanonik yang mereka selesaikan, jadi `claude-opus-5` mencakup setiap ejaan Opus 5.3377Claude Code membandingkan matcher dengan nama kanonis model tujuan peralihan sesi, dengan mengabaikan sufiks `[1m]`. Alias seperti `opus`, ID model bertanggal, dan ID khusus penyedia seperti ID model Amazon Bedrock semuanya cocok dengan satu nama kanonis yang menjadi hasil resolusinya, sehingga `claude-opus-5` mencakup setiap penulisan Opus 5.

3373 3378 

3374Ketika Claude Code tidak dapat menentukan nama kanonik untuk target, misalnya ID model kustom yang hanya [LLM gateway](/docs/id/llm-gateway) Anda tahu, itu menjalankan setiap hook PreModelSwitch terlepas dari matcher. Hook yang memblokir harus memeriksa `to_model` dari input-nya daripada mengandalkan matcher saja.3379Ketika Claude Code tidak dapat menentukan nama kanonis untuk target, misalnya ID model kustom yang hanya dikenal oleh [LLM gateway](/docs/id/llm-gateway) Anda, Claude Code menjalankan setiap hook PreModelSwitch terlepas dari matcher. Oleh karena itu, hook yang memblokir sebaiknya memeriksa `to_model` dari inputnya alih-alih hanya mengandalkan matcher.

3375 3380 

3376Tulis matcher sebagai nama yang tepat, daftar `|`-separated seperti `claude-opus-4-6|claude-opus-5`, atau ekspresi reguler seperti `.*opus.*`. Contoh ini menggunakan matcher nama yang tepat dan juga memeriksa `to_model` dari input hook, jadi itu menolak switch ke Opus 4.6 dengan keluar dengan kode 2 dan membiarkan target lainnya melewati:3381Tulis matcher sebagai nama persis, daftar yang dipisahkan `|` seperti `claude-opus-4-6|claude-opus-5`, atau regular expression seperti `.*opus.*`. Contoh ini menggunakan matcher nama persis dan juga memeriksa `to_model` dari input hook, sehingga menolak peralihan ke Opus 4.6 dengan keluar menggunakan kode 2 dan membiarkan target lain lolos:

3377 3382 

3378<Tabs>3383<Tabs>

3379 <Tab title="macOS/Linux">3384 <Tab title="macOS/Linux">

3380 Perintah memeriksa `to_model` dengan `jq`:3385 Perintah ini memeriksa `to_model` dengan `jq`:

3381 3386 

3382 ```json theme={null}3387 ```json theme={null}

3383 {3388 {


3399 </Tab>3404 </Tab>

3400 3405 

3401 <Tab title="Windows (PowerShell)">3406 <Tab title="Windows (PowerShell)">

3402 Daftarkan command hook yang menjalankan skrip melalui PowerShell:3407 Daftarkan hook command yang menjalankan skrip melalui PowerShell:

3403 3408 

3404 ```json theme={null}3409 ```json theme={null}

3405 {3410 {


3426 }3431 }

3427 ```3432 ```

3428 3433 

3429 Simpan skrip ini ke `.claude/hooks/block-opus-46.ps1` dalam proyek Anda:3434 Simpan skrip ini ke `.claude/hooks/block-opus-46.ps1` di proyek Anda:

3430 3435 

3431 ```powershell theme={null}3436 ```powershell theme={null}

3432 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json3437 $hookInput = [Console]::In.ReadToEnd() | ConvertFrom-Json


3439 </Tab>3444 </Tab>

3440</Tabs>3445</Tabs>

3441 3446 

3442Untuk mengkonfirmasi hook bekerja, jalankan `/model claude-opus-4-6` dari sesi yang menjalankan model berbeda. Claude Code menyimpan model saat ini dan melaporkan bahwa hook PreModelSwitch memblokir switch, dengan pesan Anda sebagai alasan.3447Untuk memastikan hook berfungsi, jalankan `/model claude-opus-4-6` dari sesi yang menjalankan model lain. Claude Code mempertahankan model saat ini dan melaporkan bahwa hook PreModelSwitch memblokir peralihan, dengan pesan Anda sebagai alasannya.

3443 3448 

3444<h4 id="premodelswitch-input">3449<h4 id="premodelswitch-input">

3445 PreModelSwitch input3450 Input PreModelSwitch

3446</h4>3451</h4>

3447 3452 

3448Selain [bidang input umum](#common-input-fields), PreModelSwitch hooks menerima bidang dalam tabel ini. Lima terakhir menjelaskan apa yang mengirim ulang percakapan ke model baru biaya, jadi hook dapat menampilkan angka itu sebelum switch terjadi.3453Selain [field input umum](#common-input-fields), hook PreModelSwitch menerima field dalam tabel ini. Lima field terakhir menjelaskan biaya pengiriman ulang percakapan ke model baru, sehingga hook dapat menampilkan angka tersebut sebelum peralihan terjadi.

3449 3454 

3450| Bidang | Tipe | Deskripsi |3455| Field | Tipe | Deskripsi |

3451| :- | :- | :- |3456| :- | :- | :- |

3452| `from_model` | string | ID model yang switch ubah dari |3457| `from_model` | string | ID model asal peralihan |

3453| `to_model` | string | ID model yang switch ubah ke. Matcher membandingkan terhadap nama kanonik model ini |3458| `to_model` | string | ID model tujuan peralihan. Matcher dibandingkan dengan nama kanonis model ini |

3454| `requested_model` | string atau `null` | Model yang permintaan beri nama: alias seperti `opus`, ID model lengkap, atau `null` ketika permintaan adalah untuk model default |3459| `requested_model` | string atau `null` | Model yang disebutkan dalam permintaan: alias seperti `opus`, ID model lengkap, atau `null` jika permintaan ditujukan untuk model default |

3455| `source` | string | Di mana permintaan berasal: `"command"` untuk `/model <name>`, Pengaturan Model dalam `/config`, atau mengaktifkan fast mode; `"picker"` untuk picker model; `"sdk"` untuk permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host Agent SDK atau Remote Control |3460| `source` | string | Asal permintaan: `"command"` untuk `/model <name>`, pengaturan Model di `/config`, atau mengaktifkan fast mode; `"picker"` untuk pemilih model; `"sdk"` untuk permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host Agent SDK atau Remote Control |

3456| `context_tokens` | number | Tokens yang permintaan berikutnya mengirim ulang sebagai prompt-nya: input, cache read, cache creation, dan output tokens dari respons terakhir dalam percakapan utama, digabungkan. `0` sebelum respons pertama |3461| `context_tokens` | number | Token yang dikirim ulang oleh permintaan berikutnya sebagai prompt-nya: token input, cache read, cache creation, dan output dari respons terakhir dalam percakapan utama, digabungkan. `0` sebelum respons pertama |

3457| `prompt_cache_warm` | boolean | Apakah prompt cache model saat ini mungkin masih hangat, berarti switch melepaskan itu |3462| `prompt_cache_warm` | boolean | Apakah prompt cache model saat ini kemungkinan masih hangat, yang berarti peralihan akan mengorbankannya |

3458| `cache_ttl` | string | [Prompt cache lifetime](/docs/id/prompt-caching#cache-lifetime) Claude Code minta untuk sesi ini: `"5m"` atau `"1h"` |3463| `cache_ttl` | string | [Masa berlaku prompt cache](/docs/id/prompt-caching#cache-lifetime) yang diminta Claude Code untuk sesi ini: `"5m"` atau `"1h"` |

3459| `estimated_cache_write_usd` | number | Biaya perkiraan dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada `to_model` pada tingkat `cache_ttl`, tidak termasuk respons berikutnya. Server mungkin tidak perlu re-cache seluruh konteks, jadi perlakukan sebagai perkiraan |3464| `estimated_cache_write_usd` | number | Estimasi biaya dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada `to_model` dengan tarif `cache_ttl`, tidak termasuk respons berikutnya. Server mungkin tidak perlu melakukan cache ulang seluruh konteks, jadi perlakukan ini sebagai estimasi |

3460| `pricing` | string | Bagaimana Claude Code menghargai `estimated_cache_write_usd`: `"configured"` pada tarif organisasi Anda sendiri ketika itu mengonfigurasinya, `"catalog"` pada harga list, atau `"default"` ketika `to_model` tidak memiliki harga yang dikenal dan Claude Code mengasumsikan tingkat default |3465| `pricing` | string | Cara Claude Code menghitung harga `estimated_cache_write_usd`: `"configured"` dengan tarif organisasi Anda sendiri jika organisasi telah mengonfigurasinya, `"catalog"` dengan harga daftar, atau `"default"` jika `to_model` tidak memiliki harga yang diketahui dan Claude Code mengasumsikan tarif default |

3461 3466 

3462Contoh ini menunjukkan input untuk `/model opus` dalam sesi yang menjalankan Sonnet 5:3467Contoh ini menunjukkan input untuk `/model opus` dalam sesi yang menjalankan Sonnet 5:

3463 3468 


3480```3485```

3481 3486 

3482<h4 id="premodelswitch-decision-control">3487<h4 id="premodelswitch-decision-control">

3483 PreModelSwitch decision control3488 Kontrol keputusan PreModelSwitch

3484</h4>3489</h4>

3485 3490 

3486Hooks `PreModelSwitch` dapat membatalkan switch, meminta pengguna untuk mengkonfirmasinya, atau membiarkannya melanjutkan. Kode keluar 2 atau `decision: "block"` tingkat atas membatalkan switch.3491Hook `PreModelSwitch` dapat membatalkan peralihan, meminta pengguna untuk mengonfirmasinya, atau membiarkannya berlanjut. Exit code 2 atau `decision: "block"` tingkat atas membatalkan peralihan.

3487 3492 

3488Untuk kontrol yang lebih halus, kembalikan `permissionDecision` dan `permissionDecisionReason` dalam objek `hookSpecificOutput`, seperti pada [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` menerima `"allow"`, `"deny"`, dan `"ask"`. Itu tidak menerima `"defer"`, `updatedInput`, atau `additionalContext`. Tabel di bawah menjelaskan kedua bidang:3493Untuk kontrol yang lebih rinci, kembalikan `permissionDecision` dan `permissionDecisionReason` dalam objek `hookSpecificOutput`, seperti pada [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` menerima `"allow"`, `"deny"`, dan `"ask"`. Hook ini tidak menerima `"defer"`, `updatedInput`, atau `additionalContext`. Tabel di bawah menjelaskan kedua field:

3489 3494 

3490| Bidang | Deskripsi |3495| Field | Deskripsi |

3491| :- | :- |3496| :- | :- |

3492| `permissionDecision` | `"allow"` melanjutkan dan melewati [konfirmasi Claude Code menampilkan sementara prompt cache hangat](/docs/id/prompt-caching#switching-models). `"deny"` membatalkan switch. `"ask"` meminta pengguna untuk mengkonfirmasinya |3497| `permissionDecision` | `"allow"` melanjutkan dan melewati [konfirmasi yang ditampilkan Claude Code saat prompt cache masih hangat](/docs/id/prompt-caching#switching-models). `"deny"` membatalkan peralihan. `"ask"` meminta pengguna untuk mengonfirmasinya |

3493| `permissionDecisionReason` | Untuk `"deny"`, ditampilkan ke pengguna sebagai alasan switch diblokir, atau dikembalikan sebagai kesalahan untuk permintaan `set_model`. Untuk `"ask"`, ditampilkan dalam prompt konfirmasi. Diabaikan untuk `"allow"` |3498| `permissionDecisionReason` | Untuk `"deny"`, ditampilkan kepada pengguna sebagai alasan peralihan diblokir, atau dikembalikan sebagai error untuk permintaan `set_model`. Untuk `"ask"`, ditampilkan dalam dialog konfirmasi. Diabaikan untuk `"allow"` |

3494 3499 

3495Hanya `/model` dalam sesi interaktif dapat menampilkan prompt `"ask"`. Di setiap permukaan lain, termasuk mode non-interaktif dengan flag `-p`, `/config`, dan permintaan `set_model`, Claude Code memperlakukan `"ask"` sebagai penolakan.3500Hanya `/model` dalam sesi interaktif yang dapat menampilkan dialog `"ask"`. Di setiap surface lainnya, termasuk mode non-interaktif dengan flag `-p`, `/config`, dan permintaan `set_model`, Claude Code memperlakukan `"ask"` sebagai penolakan.

3496 3501 

3497Contoh ini meminta pengguna untuk mengkonfirmasi dan mengutip jumlah token dari `context_tokens`:3502Contoh ini meminta pengguna untuk mengonfirmasi dan mengutip jumlah token dari `context_tokens`:

3498 3503 

3499```json theme={null}3504```json theme={null}

3500{3505{


3506}3511}

3507```3512```

3508 3513 

3509Ketika beberapa PreModelSwitch hooks mengembalikan keputusan berbeda, prioritas adalah `deny` > `ask` > `allow`.3514Ketika beberapa hook PreModelSwitch mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `ask` > `allow`.

3510 3515 

3511Claude Code menampilkan `systemMessage` apa pun yang dikembalikan hook Anda terlepas dari keputusan, jadi hook pelaporan biaya dapat mengembalikan `{"systemMessage": "..."}` dan keluar 0.3516Claude Code menampilkan kepada pengguna setiap `systemMessage` yang dikembalikan hook Anda terlepas dari keputusannya, sehingga hook pelaporan biaya dapat mengembalikan `{"systemMessage": "..."}` dan keluar dengan 0.

3512 3517 

3513Hook PreModelSwitch yang tidak merespons sebelum timeout-nya memblokir switch. Pada [PreToolUse](#timeouts), sebaliknya, hook command yang timed out membiarkan pemanggilan tool melanjutkan. Timeout default untuk event ini adalah 30 detik. `PreModelSwitch` menjalankan hooks `command`, `http`, dan `mcp_tool` saja, jadi default `prompt` dan `agent` tidak berlaku.3518Hook PreModelSwitch yang tidak merespons sebelum timeout-nya akan memblokir peralihan. Sebaliknya, pada [PreToolUse](#timeouts), hook command yang mengalami timeout membiarkan panggilan tool berlanjut. Timeout default untuk event ini adalah 30 detik. `PreModelSwitch` hanya menjalankan hook `command`, `http`, dan `mcp_tool`, sehingga default `prompt` dan `agent` tidak berlaku.

3514 3519 

3515Hook yang keluar dengan kode selain 0 atau 2 dan tidak mencetak keputusan JSON tidak memblokir: Claude Code menampilkan stderr-nya dan menerapkan switch, seperti dijelaskan di bawah [Other exit codes](#other-exit-codes).3520Hook yang keluar dengan kode selain 0 atau 2 dan tidak mencetak keputusan JSON tidak memblokir: Claude Code menampilkan stderr-nya dan menerapkan peralihan, seperti dijelaskan di [Exit code lainnya](#other-exit-codes).

3516 3521 

3517<h3 id="postmodelswitch">3522<h3 id="postmodelswitch">

3518 PostModelSwitch3523 PostModelSwitch

3519</h3>3524</h3>

3520 3525 

3521Dijalankan setelah model sesi berubah. Gunakan untuk memberikan panduan khusus model kepada Claude tanpa mengedit setiap CLAUDE.md, misalnya instruksi organisasi-lebar yang berlaku pada model tertentu.3526Berjalan setelah model sesi berubah. Gunakan untuk memberi Claude panduan khusus model tanpa mengedit setiap CLAUDE.md, misalnya instruksi tingkat organisasi yang berlaku pada model tertentu.

3522 3527 

3523PostModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Itu tidak dapat memblokir, karena model sudah berubah. Claude Code menjalankan PostModelSwitch hooks setelah perubahan apa pun:3528PostModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Hook ini tidak dapat memblokir, karena model sudah berubah. Claude Code menjalankan hook PostModelSwitch setelah salah satu perubahan berikut:

3524 3529 

3525* Switch yang Anda atau klien minta3530* Peralihan yang diminta oleh Anda atau klien

3526* [Automatic model fallback](/docs/id/model-config#automatic-model-fallback), yang mengubah model sesi3531* [Fallback model otomatis](/docs/id/model-config#automatic-model-fallback), yang mengubah model sesi

3527* Pengaturan seperti [`opusplan`](/docs/id/model-config#opusplan-model-setting) memasuki atau meninggalkan plan mode3532* Pengaturan seperti [`opusplan`](/docs/id/model-config#opusplan-model-setting) yang masuk atau keluar dari plan mode

3528* Claude Code memulihkan model ketika Anda melanjutkan sesi3533* Claude Code memulihkan model saat Anda melanjutkan sesi

3529 3534 

3530Claude Code tidak menjalankan PostModelSwitch hooks ketika model dari [fallback model chain](/docs/id/model-config#fallback-model-chains) melayani giliran, karena substitusi itu berlangsung satu giliran dan meninggalkan model sesi tidak berubah.3535Claude Code tidak menjalankan hook PostModelSwitch ketika model dari [rantai model fallback](/docs/id/model-config#fallback-model-chains) melayani sebuah giliran, karena substitusi tersebut hanya berlangsung satu giliran dan tidak mengubah model sesi.

3531 3536 

3532Matcher mengikuti aturan yang sama seperti [PreModelSwitch](#premodelswitch): Claude Code membandingkannya terhadap nama kanonik model yang sesi beralih ke.3537Matcher mengikuti aturan yang sama seperti [PreModelSwitch](#premodelswitch): Claude Code membandingkannya dengan nama kanonis model tujuan peralihan sesi.

3533 3538 

3534Contoh ini menambahkan panduan setiap kali model sesi berubah ke model Opus apa pun:3539Contoh ini menambahkan panduan setiap kali model sesi berubah ke model Opus mana pun:

3535 3540 

3536```json theme={null}3541```json theme={null}

3537{3542{


3551}3556}

3552```3557```

3553 3558 

3554Untuk mengkonfirmasi hook bekerja, beralih ke model Opus dari sesi yang menjalankan model berbeda, misalnya jalankan `/model opus` dari sesi Sonnet, kemudian tanyakan Claude apa panduan yang dimilikinya tentang model saat ini.3559Untuk memastikan hook berfungsi, beralihlah ke model Opus dari sesi yang menjalankan model lain, misalnya jalankan `/model opus` dari sesi Sonnet, lalu tanyakan kepada Claude panduan apa yang dimilikinya tentang model saat ini.

3555 3560 

3556<h4 id="postmodelswitch-input">3561<h4 id="postmodelswitch-input">

3557 PostModelSwitch input3562 Input PostModelSwitch

3558</h4>3563</h4>

3559 3564 

3560PostModelSwitch hooks menerima bidang yang sama seperti [PreModelSwitch](#premodelswitch-input), dengan `hook_event_name` diatur ke `"PostModelSwitch"` dan dua nilai `source` lebih: `"auto"` untuk fallback otomatis atau perubahan lain yang dibuat Claude Code sendiri, dan `"resume"` untuk model yang dipulihkan ketika Anda melanjutkan sesi.3565Hook PostModelSwitch menerima field yang sama seperti [PreModelSwitch](#premodelswitch-input), dengan `hook_event_name` diatur ke `"PostModelSwitch"` dan dua nilai `source` tambahan: `"auto"` untuk fallback otomatis atau perubahan lain yang dilakukan Claude Code sendiri, dan `"resume"` untuk model yang dipulihkan saat Anda melanjutkan sesi.

3561 3566 

3562`requested_model` adalah `null` ketika `source` adalah `"auto"`. Ketika `source` adalah `"resume"`, itu adalah pengaturan model yang disimpan Claude Code pulihkan.3567`requested_model` bernilai `null` ketika `source` adalah `"auto"`. Ketika `source` adalah `"resume"`, nilainya adalah pengaturan model tersimpan yang dipulihkan Claude Code.

3563 3568 

3564<h4 id="postmodelswitch-decision-control">3569<h4 id="postmodelswitch-decision-control">

3565 PostModelSwitch decision control3570 Kontrol keputusan PostModelSwitch

3566</h4>3571</h4>

3567 3572 

3568Claude Code mengambil stdout [plain-text](#exit-code-0) hook Anda pada keluar 0, atau `additionalContext` dari output JSON, dan mengirimkannya ke Claude dengan permintaan setelah switch. Selain [bidang output JSON](#json-output) yang tersedia untuk semua hooks, Anda dapat mengembalikan:3573Claude Code mengambil [stdout teks biasa](#exit-code-0) hook Anda saat keluar dengan 0, atau `additionalContext` dari output JSON, dan mengirimkannya ke Claude bersama permintaan berikutnya setelah peralihan. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan:

3569 3574 

3570| Bidang | Deskripsi |3575| Field | Deskripsi |

3571| :- | :- |3576| :- | :- |

3572| `additionalContext` | String ditambahkan ke konteks Claude dengan permintaan berikutnya. Lihat [Add context for Claude](#add-context-for-claude) |3577| `additionalContext` | String yang ditambahkan ke konteks Claude bersama permintaan berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

3573 3578 

3574Jika hook belum selesai dalam lima detik setelah Anda mengirimkan permintaan berikutnya, Claude Code mengirimkan permintaan itu tanpa output dan melampirkannya ke permintaan berikutnya sebagai gantinya. Jika model berubah beberapa kali sebelum permintaan berikutnya, Claude Code mengirimkan hanya output untuk switch terakhir ke model target.3579Jika hook belum selesai dalam lima detik setelah Anda mengirim prompt berikutnya, Claude Code mengirim permintaan tersebut tanpa output dan melampirkannya ke permintaan setelahnya. Jika model berubah beberapa kali sebelum permintaan berikutnya, Claude Code hanya mengirimkan output untuk model target dari peralihan terakhir.

3575 3580 

3576<h3 id="sessionend">3581<h3 id="sessionend">

3577 SessionEnd3582 SessionEnd

3578</h3>3583</h3>

3579 3584 

3580Dijalankan ketika sesi Claude Code berakhir. Berguna untuk tugas cleanup, logging statistik sesi, atau menyimpan status sesi. Mendukung matchers untuk memfilter berdasarkan alasan keluar.3585Berjalan saat sesi Claude Code berakhir. Berguna untuk tugas pembersihan, mencatat statistik

3586sesi, atau menyimpan status sesi. Mendukung matcher untuk memfilter berdasarkan alasan keluar.

3581 3587 

3582Bidang `reason` dalam input hook menunjukkan mengapa sesi berakhir:3588Field `reason` dalam input hook menunjukkan mengapa sesi berakhir:

3583 3589 

3584| Alasan | Deskripsi |3590| Alasan | Deskripsi |

3585| :- | :- |3591| :- | :- |

3586| `clear` | Sesi dihapus dengan perintah `/clear` |3592| `clear` | Sesi dibersihkan dengan perintah `/clear` |

3587| `resume` | Sesi beralih melalui `/resume` interaktif |3593| `resume` | Sesi dialihkan melalui `/resume` interaktif |

3588| `logout` | Pengguna logout |3594| `logout` | Pengguna keluar (log out) |

3589| `prompt_input_exit` | Pengguna keluar saat input prompt terlihat |3595| `prompt_input_exit` | Pengguna keluar saat input prompt terlihat |

3590| `other` | Alasan keluar lainnya |3596| `other` | Alasan keluar lainnya |

3591| `bypass_permissions_disabled` | Dihapus dalam v2.1.234; Claude Code tidak mengirimkannya. Lepaskan dari matcher `SessionEnd` Anda |3597| `bypass_permissions_disabled` | Dihapus di v2.1.234; Claude Code tidak mengirimkannya. Hapus dari matcher `SessionEnd` Anda |

3592 3598 

3593<h4 id="sessionend-input">3599<h4 id="sessionend-input">

3594 SessionEnd input3600 Input SessionEnd

3595</h4>3601</h4>

3596 3602 

3597Selain [bidang input umum](#common-input-fields), SessionEnd hooks menerima bidang `reason` menunjukkan mengapa sesi berakhir. Lihat [tabel reason](#sessionend) di atas untuk semua nilai.3603Selain [field input umum](#common-input-fields), hook SessionEnd menerima field `reason` yang menunjukkan mengapa sesi berakhir. Lihat [tabel alasan](#sessionend) di atas untuk semua nilai.

3598 3604 

3599```json theme={null}3605```json theme={null}

3600{3606{


3606}3612}

3607```3613```

3608 3614 

3609SessionEnd hooks tidak memiliki kontrol keputusan. Mereka tidak dapat memblokir penghentian sesi tetapi dapat melakukan tugas cleanup. Claude Code membuang [bidang output JSON](#json-output) mereka, seperti `systemMessage`.3615Hook SessionEnd tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir penghentian sesi tetapi dapat melakukan tugas pembersihan. Claude Code membuang [field output JSON](#json-output) hook ini, seperti `systemMessage`.

3616 

3617Hook SessionEnd memiliki timeout default 1,5 detik. Timeout ini berlaku saat Anda keluar, menjalankan `/clear`, atau beralih sesi dengan `/resume` interaktif. Anda dapat memberi hook lebih banyak waktu dengan dua cara:

3618 

3619* **`timeout` per hook**: atur `timeout` di konfigurasi hook tersebut. Anggaran keseluruhan naik secara otomatis untuk menyesuaikan dengan `timeout` per hook tertinggi di file pengaturan Anda, hingga 60 detik. Jika Anda menaikkan anggaran dengan cara ini, hook tanpa `timeout` sendiri tetap menggunakan default. Timeout yang diatur pada hook yang disediakan plugin tidak menaikkan anggaran.

3620* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: atur environment variable ini dalam milidetik untuk menimpa anggaran secara eksplisit. Nilai yang Anda atur juga menjadi timeout untuk setiap hook tanpa `timeout` sendiri.

3610 3621 

3611SessionEnd hooks memiliki timeout default 1.5 detik. Ini berlaku untuk keluar sesi, `/clear`, dan beralih sesi melalui `/resume` interaktif. Jika hook memerlukan lebih banyak waktu, atur per-hook `timeout` dalam konfigurasi hook. Anggaran keseluruhan secara otomatis dinaikkan ke timeout per-hook tertinggi yang dikonfigurasi dalam file pengaturan, hingga 60 detik. Timeout yang ditetapkan pada hooks yang disediakan plugin tidak menaikkan anggaran. Untuk menimpa anggaran secara eksplisit, atur variabel lingkungan `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` dalam milidetik.3622Contoh ini mengatur anggaran menjadi 5 detik:

3612 3623 

3613```bash theme={null}3624```bash theme={null}

3614CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude3625CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

3615```3626```

3616 3627 

3617Sebelum v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` menaikkan hanya anggaran keseluruhan, dan hook tanpa `timeout` sendiri masih dibatalkan setelah 1.5 detik.3628Sebelum v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` hanya menaikkan anggaran keseluruhan, dan hook tanpa `timeout` sendiri tetap dibatalkan setelah 1,5 detik.

3618 3629 

3619<h3 id="elicitation">3630<h3 id="elicitation">

3620 Elicitation3631 Elicitation

3621</h3>3632</h3>

3622 3633 

3623Dijalankan ketika server MCP meminta input pengguna mid-task. Secara default, Claude Code menampilkan dialog interaktif untuk pengguna merespons. Hooks dapat mengintersepsi permintaan ini dan merespons secara programatis, melewati dialog sepenuhnya.3634Berjalan saat server MCP meminta input pengguna di tengah tugas. Secara default, Claude Code menampilkan dialog interaktif agar pengguna merespons. Hook dapat mencegat permintaan ini dan merespons secara terprogram, melewati dialog sepenuhnya.

3624 3635 

3625Bidang matcher mencocokkan nama server MCP.3636Field matcher dicocokkan dengan nama server MCP.

3626 3637 

3627<h4 id="elicitation-input">3638<h4 id="elicitation-input">

3628 Elicitation input3639 Input Elicitation

3629</h4>3640</h4>

3630 3641 

3631Selain [bidang input umum](#common-input-fields), Elicitation hooks menerima `mcp_server_name`, `message`, dan bidang opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.3642Selain [field input umum](#common-input-fields), hook Elicitation menerima field `mcp_server_name`, `message`, serta field opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.

3632 3643 

3633Untuk form-mode elicitation, kasus paling umum:3644Untuk elicitation mode formulir, kasus yang paling umum:

3634 3645 

3635```json theme={null}3646```json theme={null}

3636{3647{


3650}3661}

3651```3662```

3652 3663 

3653Untuk URL-mode elicitation, digunakan untuk autentikasi berbasis browser:3664Untuk elicitation mode URL, yang digunakan untuk autentikasi berbasis browser:

3654 3665 

3655```json theme={null}3666```json theme={null}

3656{3667{


3666```3677```

3667 3678 

3668<h4 id="elicitation-output">3679<h4 id="elicitation-output">

3669 Elicitation output3680 Output Elicitation

3670</h4>3681</h4>

3671 3682 

3672Untuk merespons secara programatis tanpa menampilkan dialog, kembalikan objek JSON dengan `hookSpecificOutput`:3683Untuk merespons secara terprogram tanpa menampilkan dialog, kembalikan objek JSON dengan `hookSpecificOutput`:

3673 3684 

3674```json theme={null}3685```json theme={null}

3675{3686{


3683}3694}

3684```3695```

3685 3696 

3686| Bidang | Nilai | Deskripsi |3697| Field | Nilai | Deskripsi |

3687| :- | :- | :- |3698| :- | :- | :- |

3688| `action` | `accept`, `decline`, `cancel` | Apakah menerima, menolak, atau membatalkan permintaan |3699| `action` | `accept`, `decline`, `cancel` | Apakah akan menerima, menolak, atau membatalkan permintaan |

3689| `content` | object | Nilai field form untuk dikirimkan. Hanya digunakan saat `action` adalah `accept` |3700| `content` | object | Nilai field formulir yang akan dikirim. Hanya digunakan ketika `action` adalah `accept` |

3690 3701 

3691Kode keluar 2 menolak elicitation. Claude Code tidak menampilkan pesan stderr Anda di mana pun.3702Exit code 2 menolak elicitation. Claude Code tidak menampilkan pesan stderr Anda di mana pun.

3692 3703 

3693Claude Code bertindak atas `hookSpecificOutput` dari output JSON hook Elicitation dan membuang `systemMessage` dan `continue`.3704Claude Code menindaklanjuti `hookSpecificOutput` dari output JSON hook Elicitation dan membuang `systemMessage` serta `continue`.

3694 3705 

3695<h3 id="elicitationresult">3706<h3 id="elicitationresult">

3696 ElicitationResult3707 ElicitationResult

3697</h3>3708</h3>

3698 3709 

3699Dijalankan setelah pengguna merespons elicitation MCP. Hooks dapat mengamati, memodifikasi, atau memblokir respons sebelum dikirim kembali ke server MCP.3710Berjalan setelah pengguna merespons elicitation MCP. Hook dapat mengamati, memodifikasi, atau memblokir respons sebelum dikirim kembali ke server MCP.

3700 3711 

3701Bidang matcher mencocokkan nama server MCP.3712Field matcher dicocokkan dengan nama server MCP.

3702 3713 

3703<h4 id="elicitationresult-input">3714<h4 id="elicitationresult-input">

3704 ElicitationResult input3715 Input ElicitationResult

3705</h4>3716</h4>

3706 3717 

3707Selain [bidang input umum](#common-input-fields), ElicitationResult hooks menerima `mcp_server_name`, `action`, dan bidang opsional `mode`, `elicitation_id`, dan `content`.3718Selain [field input umum](#common-input-fields), hook ElicitationResult menerima field `mcp_server_name`, `action`, serta field opsional `mode`, `elicitation_id`, dan `content`.

3708 3719 

3709```json theme={null}3720```json theme={null}

3710{3721{


3721```3732```

3722 3733 

3723<h4 id="elicitationresult-output">3734<h4 id="elicitationresult-output">

3724 ElicitationResult output3735 Output ElicitationResult

3725</h4>3736</h4>

3726 3737 

3727Untuk menimpa respons pengguna, kembalikan objek JSON dengan `hookSpecificOutput`:3738Untuk menimpa respons pengguna, kembalikan objek JSON dengan `hookSpecificOutput`:


3736}3747}

3737```3748```

3738 3749 

3739| Bidang | Nilai | Deskripsi |3750| Field | Nilai | Deskripsi |

3740| :- | :- | :- |3751| :- | :- | :- |

3741| `action` | `accept`, `decline`, `cancel` | Menimpa tindakan pengguna |3752| `action` | `accept`, `decline`, `cancel` | Menimpa tindakan pengguna |

3742| `content` | object | Menimpa nilai field form. Hanya bermakna saat `action` adalah `accept` |3753| `content` | object | Menimpa nilai field formulir. Hanya bermakna ketika `action` adalah `accept` |

3743 3754 

3744Kode keluar 2 memblokir respons, mengubah tindakan efektif menjadi `decline`. Claude Code tidak menampilkan pesan stderr Anda di mana pun.3755Exit code 2 memblokir respons, mengubah tindakan efektif menjadi `decline`. Claude Code tidak menampilkan pesan stderr Anda di mana pun.

3745 3756 

3746Claude Code bertindak atas `hookSpecificOutput` dari output JSON hook ElicitationResult dan membuang `systemMessage` dan `continue`.3757Claude Code menindaklanjuti `hookSpecificOutput` dari output JSON hook ElicitationResult dan membuang `systemMessage` serta `continue`.

3747 3758 

3748<h2 id="prompt-based-hooks">3759<h2 id="prompt-based-hooks">

3749 Prompt-based hooks3760 Prompt-based hooks


3797 3808 

3798Alih-alih menjalankan perintah Bash, prompt-based hooks:3809Alih-alih menjalankan perintah Bash, prompt-based hooks:

3799 3810 

38001. Mengirimkan input hook dan prompt Anda ke model Claude, Haiku secara default38111. Mengirimkan input hook dan prompt Anda ke model Claude, secara default model yang digunakan Claude Code untuk [fungsionalitas latar belakang](/docs/id/costs#background-token-usage)

38012. LLM merespons dengan JSON terstruktur yang berisi keputusan38122. LLM merespons dengan JSON terstruktur yang berisi keputusan

38023. Claude Code memproses keputusan secara otomatis38133. Claude Code memproses keputusan secara otomatis

3803 3814 


3830| :- | :- | :- |3841| :- | :- | :- |

3831| `type` | ya | Harus `"prompt"` |3842| `type` | ya | Harus `"prompt"` |

3832| `prompt` | ya | Teks prompt untuk dikirim ke LLM. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Jika `$ARGUMENTS` tidak ada, JSON input ditambahkan ke prompt |3843| `prompt` | ya | Teks prompt untuk dikirim ke LLM. Gunakan `$ARGUMENTS` sebagai placeholder untuk JSON input hook. Jika `$ARGUMENTS` tidak ada, JSON input ditambahkan ke prompt |

3833| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model cepat |3844| `model` | tidak | Model untuk digunakan untuk evaluasi. Default ke model yang digunakan Claude Code untuk [fungsionalitas latar belakang](/docs/id/costs#background-token-usage) |

3834| `timeout` | tidak | Timeout dalam detik. Default: 30 |3845| `timeout` | tidak | Timeout dalam detik. Default: 30 |

3835| `continueOnBlock` | tidak | Pada events yang berlaku, `true` mengirimkan alasan `ok: false` kembali ke Claude dan melanjutkan alih-alih mengakhiri giliran. Default: `false`. Lihat [Response schema](#response-schema) untuk perilaku per-event |3846| `continueOnBlock` | tidak | Pada events yang berlaku, `true` mengirimkan alasan `ok: false` kembali ke Claude dan melanjutkan alih-alih mengakhiri giliran. Default: `false`. Lihat [Response schema](#response-schema) untuk perilaku per-event |

3836 3847 

hooks-guide.md +12 −9

Details

69 </Step>69 </Step>

70 70 

71 <Step title="Verifikasi konfigurasi">71 <Step title="Verifikasi konfigurasi">

72 Ketik `/hooks` untuk membuka browser hooks. Anda akan melihat daftar semua acara hook yang tersedia, dengan hitungan di sebelah setiap acara yang memiliki hooks yang dikonfigurasi. Pilih `Notification` untuk mengonfirmasi hook baru Anda muncul dalam daftar. Memilih hook menampilkan detailnya: acara, matcher, jenis, file sumber, dan perintah.72 Ketik `/hooks` di prompt Claude Code untuk membuka browser hooks. Hook baru Anda muncul dalam daftar di bawah `Notification`.

73 </Step>73 </Step>

74 74 

75 <Step title="Uji hook">75 <Step title="Uji hook">


77 </Step>77 </Step>

78</Steps>78</Steps>

79 79 

80<Tip>

81 Menu `/hooks` bersifat read-only. Untuk menambah, memodifikasi, atau menghapus hooks, edit JSON pengaturan Anda secara langsung atau minta Claude untuk membuat perubahan.

82</Tip>

83 

84<h2 id="what-you-can-automate">80<h2 id="what-you-can-automate">

85 Apa yang dapat Anda otomatisasi81 Apa yang dapat Anda otomatisasi

86</h2>82</h2>


97 93 

98Dapatkan notifikasi desktop kapan pun Claude selesai bekerja dan memerlukan input Anda, sehingga Anda dapat beralih ke tugas lain tanpa memeriksa terminal.94Dapatkan notifikasi desktop kapan pun Claude selesai bekerja dan memerlukan input Anda, sehingga Anda dapat beralih ke tugas lain tanpa memeriksa terminal.

99 95 

100Hook ini menggunakan acara `Notification`, yang Claude Code aktifkan ketika Claude menunggu input atau izin. Lihat [kapan setiap jenis notifikasi aktif](/docs/id/hooks#notification) untuk waktu yang tepat. Setiap tab di bawah menggunakan perintah notifikasi asli platform. Tambahkan ini ke `~/.claude/settings.json`:96Hook ini menggunakan acara `Notification`, yang Claude Code aktifkan ketika Claude menunggu input atau izin. Lihat [kapan setiap jenis notifikasi aktif](/docs/id/hooks#notification) untuk waktu yang tepat.

97 

98Setiap tab di bawah menggunakan perintah notifikasi asli platform. Tambahkan ini ke `~/.claude/settings.json`:

101 99 

102<Tabs>100<Tabs>

103 <Tab title="macOS">101 <Tab title="macOS">


120 ```118 ```

121 119 

122 <Accordion title="Jika tidak ada notifikasi yang muncul">120 <Accordion title="Jika tidak ada notifikasi yang muncul">

123 `osascript` merutekan notifikasi melalui aplikasi Script Editor bawaan. Jika Script Editor tidak memiliki izin notifikasi, perintah gagal diam-diam, dan macOS tidak akan meminta Anda untuk memberikannya. Jalankan ini di Terminal sekali untuk membuat Script Editor muncul di pengaturan notifikasi Anda:121 `osascript` merutekan notifikasi melalui aplikasi Script Editor bawaan. Jika Script Editor tidak memiliki izin notifikasi, perintah gagal diam-diam, dan macOS tidak akan meminta Anda untuk memberikannya.

122 

123 Jalankan ini di Terminal sekali untuk membuat Script Editor muncul di pengaturan notifikasi Anda:

124 124 

125 ```bash theme={null}125 ```bash theme={null}

126 osascript -e 'display notification "test"'126 osascript -e 'display notification "test"'


180 ```180 ```

181 181 

182 <Accordion title="Jika tidak ada dialog yang muncul">182 <Accordion title="Jika tidak ada dialog yang muncul">

183 Perintah ini membuka kotak dialog daripada notifikasi di sudut layar Anda, sehingga dialog dapat terbuka di belakang jendela terminal Anda. Uji perintah secara langsung di PowerShell terlebih dahulu. Jika Anda menjalankan Claude Code di dalam WSL, `powershell.exe` harus tersedia di `PATH` Anda melalui interop Windows.183 Perintah ini membuka kotak dialog daripada notifikasi di sudut layar Anda, sehingga dialog dapat terbuka di belakang jendela terminal Anda. Uji perintah secara langsung di PowerShell terlebih dahulu.

184 

185 Jika Anda menjalankan Claude Code di dalam WSL, `powershell.exe` harus tersedia di `PATH` Anda melalui interop Windows.

184 </Accordion>186 </Accordion>

185 </Tab>187 </Tab>

186</Tabs>188</Tabs>


212 214 

213`agent_needs_input` untuk pertanyaan terminal setup teammate memerlukan Claude Code v2.1.248 atau lebih baru.215`agent_needs_input` untuk pertanyaan terminal setup teammate memerlukan Claude Code v2.1.248 atau lebih baru.

214 216 

215Ketik `/hooks` dan pilih `Notification` untuk mengonfirmasi hook terdaftar. Untuk skema acara lengkap, lihat [Notification reference](/docs/id/hooks#notification).217Ketik `/hooks` di prompt Claude Code dan konfirmasi bahwa hook muncul di bawah `Notification`.

216 218 

217<h3 id="auto-format-code-after-edits">219<h3 id="auto-format-code-after-edits">

218 Auto-format kode setelah edit220 Auto-format kode setelah edit


1055* Edit file biasanya diambil secara otomatis. Jika belum muncul setelah beberapa detik, file watcher mungkin melewatkan perubahan: mulai ulang sesi Anda untuk memaksa reload.1057* Edit file biasanya diambil secara otomatis. Jika belum muncul setelah beberapa detik, file watcher mungkin melewatkan perubahan: mulai ulang sesi Anda untuk memaksa reload.

1056* Verifikasi JSON Anda valid: trailing commas dan comments tidak diizinkan1058* Verifikasi JSON Anda valid: trailing commas dan comments tidak diizinkan

1057* Konfirmkan file pengaturan berada di lokasi yang benar: `.claude/settings.json` untuk hook proyek, `~/.claude/settings.json` untuk hook global1059* Konfirmkan file pengaturan berada di lokasi yang benar: `.claude/settings.json` untuk hook proyek, `~/.claude/settings.json` untuk hook global

1060* Jika menu menampilkan `Only hooks from managed settings run here`, organisasi Anda telah menetapkan [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly). Hook dalam file pengaturan pengguna, proyek, dan lokal Anda tidak berjalan dan tidak dicantumkan

1058 1061 

1059<h3 id="stop-hook-hits-the-block-cap">1062<h3 id="stop-hook-hits-the-block-cap">

1060 Stop hook mencapai batas blokir1063 Stop hook mencapai batas blokir

Details

394* Keluar dengan `Escape`, `Backspace`, atau `Ctrl+U` pada prompt kosong394* Keluar dengan `Escape`, `Backspace`, atau `Ctrl+U` pada prompt kosong

395* Menempel teks yang dimulai dengan `!` ke prompt kosong secara otomatis memasuki mode shell, cocok dengan perilaku `!` yang diketik395* Menempel teks yang dimulai dengan `!` ke prompt kosong secara otomatis memasuki mode shell, cocok dengan perilaku `!` yang diketik

396 396 

397Kecuali sesi Anda adalah salah satu yang tercantum di bawah [mode sandbox ketat](/docs/id/sandboxing#the-unsandboxed-retry-escape-hatch), perintah yang Anda ketik dalam mode shell berjalan di luar [sandbox](/docs/id/sandboxing) bahkan ketika Anda telah mengaktifkan sandboxing, karena sandbox berlaku untuk perintah yang Claude jalankan.397Kecuali sesi Anda adalah salah satu yang tercantum di bawah [mode sandbox ketat](/docs/id/sandboxing#turn-off-the-retry-with-strict-sandbox-mode), perintah yang Anda ketik dalam mode shell berjalan di luar [sandbox](/docs/id/sandboxing) bahkan ketika Anda telah mengaktifkan sandboxing, karena sandbox berlaku untuk perintah yang Claude jalankan.

398 398 

399Claude merespons output perintah secara otomatis setelah mendarat di transkrip, sehingga Anda dapat menjalankan `! npm test` dan mendapatkan penjelasan tentang kegagalan tanpa prompt kedua. Respons memiliki biaya yang sama dengan mengirim prompt normal. Untuk mengembalikan perilaku sebelumnya di mana output ditambahkan ke konteks tanpa respons, atur [`respondToBashCommands`](/docs/id/settings-reference#respondtobashcommands) ke `false` dalam `settings.json`. Sebelum v2.1.186, mode shell selalu menambahkan output ke konteks tanpa respons.399Claude merespons output perintah secara otomatis setelah mendarat di transkrip, sehingga Anda dapat menjalankan `! npm test` dan mendapatkan penjelasan tentang kegagalan tanpa prompt kedua. Respons memiliki biaya yang sama dengan mengirim prompt normal. Untuk mengembalikan perilaku sebelumnya di mana output ditambahkan ke konteks tanpa respons, atur [`respondToBashCommands`](/docs/id/settings-reference#respondtobashcommands) ke `false` dalam `settings.json`. Sebelum v2.1.186, mode shell selalu menambahkan output ke konteks tanpa respons.

400 400 

Details

73 73 

74Alirkan respons inferensi. Claude Code membaca aliran saat tiba, jadi jika gateway Anda membuffer respons lengkap sebelum meneruskannya, Claude Code macet.74Alirkan respons inferensi. Claude Code membaca aliran saat tiba, jadi jika gateway Anda membuffer respons lengkap sebelum meneruskannya, Claude Code macet.

75 75 

76Kirimkan urutan event lengkap setiap respons tanpa menghilangkan, menduplikasi, atau mengubah urutan event. Ketika event mereferensikan blok konten yang `content_block_start` tidak pernah tiba, atau blok yang `content_block_stop` sudah tiba, Claude Code berhenti membaca aliran pada event tersebut daripada menerapkannya, jadi `content_block_stop` yang diduplikasi tidak dapat menjalankan panggilan alat yang sama dua kali. [Respons di atas mungkin tidak lengkap](/docs/id/errors#the-response-above-may-be-incomplete) menjelaskan apa yang dilihat pengguna, di bawah varian `Part of the response never arrived` dan `The response stream was malformed`.76Kirimkan urutan event lengkap setiap respons tanpa menghilangkan, menduplikasi, atau mengubah urutan event. Ketika guardrail Amazon Bedrock memblokir balasan, teruskan event yang dikirimnya tanpa perubahan, bahkan ketika event tersebut mereferensikan blok konten yang `content_block_stop`-nya sudah tiba. [AWS Guardrails](/docs/id/amazon-bedrock#aws-guardrails) menjelaskan bagaimana balasan tersebut berakhir. Ketika event lain mana pun mereferensikan blok konten yang `content_block_start`-nya tidak pernah tiba, atau blok yang `content_block_stop`-nya sudah tiba, Claude Code berhenti membaca aliran pada event tersebut daripada menerapkannya, jadi `content_block_stop` yang diduplikasi tidak dapat menjalankan panggilan tool yang sama dua kali. [Respons di atas mungkin tidak lengkap](/docs/id/errors#the-response-above-may-be-incomplete) menjelaskan apa yang dilihat pengguna, di bawah varian `Part of the response never arrived` dan `The response stream was malformed`.

77 77 

78Teruskan setiap respons melalui event `message_delta` dan `message_stop` finalnya sebelum mengakhiri body. Body yang berakhir setelah `message_delta` yang membawa `stop_reason`, tanpa blok konten yang masih terbuka dan tidak ada event blok konten setelah frame tersebut, dihitung sebagai lengkap bahkan ketika `message_stop` hilang. Body yang gateway Anda akhiri dengan bersih lebih awal, setelah blok konten telah dimulai, diperlakukan sama dengan koneksi yang terputus: [Automatic retries](/docs/id/errors#automatic-retries) mengatakan kapan Claude Code mengeluarkan kembali permintaan, dan [Respons di atas mungkin tidak lengkap](/docs/id/errors#the-response-above-may-be-incomplete) mencakup apa yang disimpannya setelah konten yang terlihat tiba. Claude Code menyimpan `stop_reason` yang `message_delta` berikan, jadi `message_delta` penggunaan-saja yang kemudian yang `delta` memiliki `stop_reason: null` atau tidak ada kunci `stop_reason` tidak menghapusnya.78Teruskan setiap respons melalui event `message_delta` dan `message_stop` finalnya sebelum mengakhiri body. Body yang berakhir setelah `message_delta` yang membawa `stop_reason`, tanpa blok konten yang masih terbuka dan tidak ada event blok konten setelah frame tersebut, dihitung sebagai lengkap bahkan ketika `message_stop` hilang. Body yang gateway Anda akhiri dengan bersih lebih awal, setelah blok konten telah dimulai, diperlakukan sama dengan koneksi yang terputus: [Automatic retries](/docs/id/errors#automatic-retries) mengatakan kapan Claude Code mengeluarkan kembali permintaan, dan [Respons di atas mungkin tidak lengkap](/docs/id/errors#the-response-above-may-be-incomplete) mencakup apa yang disimpannya setelah konten yang terlihat tiba. Claude Code menyimpan `stop_reason` yang `message_delta` berikan, jadi `message_delta` penggunaan-saja yang kemudian yang `delta` memiliki `stop_reason: null` atau tidak ada kunci `stop_reason` tidak menghapusnya.

79 79 

Details

470| [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings) | Ketika diatur dalam registry HKLM atau file di bawah `C:\Program Files\ClaudeCode`, biarkan WSL membaca rantai kebijakan Windows, dan baca `/etc/claude-code` hanya ketika [tidak ada dokumen admin Windows yang ada](#present-admin-documents); entri memberikan urutan |470| [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings) | Ketika diatur dalam registry HKLM atau file di bawah `C:\Program Files\ClaudeCode`, biarkan WSL membaca rantai kebijakan Windows, dan baca `/etc/claude-code` hanya ketika [tidak ada dokumen admin Windows yang ada](#present-admin-documents); entri memberikan urutan |

471 471 

472<Note>472<Note>

473 Pada paket Team dan Enterprise, Owner mengaktifkan atau menonaktifkan [Remote Control](/docs/id/remote-control) dan [sesi cloud](/docs/id/claude-code-on-the-web) di seluruh organisasi dalam [pengaturan admin Claude Code](https://claude.ai/admin-settings/claude-code). Remote Control dapat juga dinonaktifkan per perangkat dengan pengaturan [`disableRemoteControl`](/docs/id/settings-reference#disableremotecontrol). Sesi cloud tidak memiliki kunci pengaturan terkelola per perangkat.473 Pada paket Team dan Enterprise, Owner mengaktifkan atau menonaktifkan [Remote Control](/docs/id/remote-control) dan [sesi cloud](/docs/id/claude-code-on-the-web) di seluruh organisasi dalam [pengaturan admin Claude Code](https://claude.ai/admin-settings/claude-code). Ketika Owner mematikan Remote Control, sesi yang sudah terhubung yang menjalankan Claude Code v2.1.286 atau lebih baru juga terputus. Setiap sesi terputus saat berikutnya sesi tersebut menyegarkan kebijakan organisasi Anda, sekitar sekali per jam. Untuk apa yang terjadi dalam sesi tersebut, lihat [`Remote Control was turned off by your organization's policy`](/docs/id/remote-control#remote-control-was-turned-off-by-your-organizations-policy).

474 

475 Remote Control dapat juga dinonaktifkan per perangkat dengan pengaturan [`disableRemoteControl`](/docs/id/settings-reference#disableremotecontrol). Sesi cloud tidak memiliki kunci pengaturan terkelola per perangkat.

474 476 

475 Untuk memeriksa apakah pengaturan organisasi ini mencapai mesin tertentu, jalankan `claude doctor` di sana dan baca baris `Organization policy`, yang mengatakan di mana Claude Code memuat kebijakan atau mengapa tidak memuat. Memerlukan Claude Code v2.1.261 atau lebih baru. Dalam sesi yang berjalan, `/status` menunjukkan baris yang sama ketika kebijakan tidak memuat.477 Untuk memeriksa apakah pengaturan organisasi ini mencapai mesin tertentu, jalankan `claude doctor` di sana dan baca baris `Organization policy`, yang mengatakan di mana Claude Code memuat kebijakan atau mengapa tidak memuat. Memerlukan Claude Code v2.1.261 atau lebih baru. Dalam sesi yang berjalan, `/status` menunjukkan baris yang sama ketika kebijakan tidak memuat.

476</Note>478</Note>

memory.md +21 −19

Details

50Perlakukan CLAUDE.md sebagai tempat Anda menuliskan apa yang sebaliknya akan Anda jelaskan kembali. Tambahkan ke dalamnya ketika:50Perlakukan CLAUDE.md sebagai tempat Anda menuliskan apa yang sebaliknya akan Anda jelaskan kembali. Tambahkan ke dalamnya ketika:

51 51 

52* Claude membuat kesalahan yang sama untuk kedua kalinya52* Claude membuat kesalahan yang sama untuk kedua kalinya

53* Tinjauan kode menangkap sesuatu yang seharusnya Claude ketahui tentang basis kode ini53* Code review menangkap sesuatu yang seharusnya Claude ketahui tentang codebase ini

54* Anda mengetik koreksi atau klarifikasi yang sama ke dalam chat yang Anda ketik di sesi terakhir54* Anda mengetik koreksi atau klarifikasi yang sama ke dalam chat yang Anda ketik di sesi terakhir

55* Anggota tim baru akan membutuhkan konteks yang sama untuk produktif55* Anggota tim baru akan membutuhkan konteks yang sama untuk produktif

56 56 

57Pertahankan itu untuk fakta yang harus Claude pegang di setiap sesi: perintah build, konvensi, tata letak proyek, aturan "selalu lakukan X". Jika entri adalah prosedur multi-langkah atau hanya penting untuk satu bagian dari basis kode, pindahkan ke [skill](/docs/id/skills) atau [aturan dengan cakupan path](#organize-rules-with-claude/rules/) sebagai gantinya. [Ringkasan ekstensi](/docs/id/features-overview#build-your-setup-over-time) mencakup kapan menggunakan setiap mekanisme.57Pertahankan itu untuk fakta yang harus Claude pegang di setiap sesi: perintah build, konvensi, tata letak proyek, aturan "selalu lakukan X". Jika entri adalah prosedur multi-langkah atau hanya penting untuk satu bagian dari codebase, pindahkan ke [skill](/docs/id/skills) atau [aturan dengan cakupan path](#organize-rules-with-claude/rules/) sebagai gantinya. [Ringkasan ekstensi](/docs/id/features-overview#build-your-setup-over-time) mencakup kapan menggunakan setiap mekanisme.

58 58 

59<h3 id="choose-where-to-put-claude-md-files">59<h3 id="choose-where-to-put-claude-md-files">

60 Pilih di mana menempatkan file CLAUDE.md60 Pilih di mana menempatkan file CLAUDE.md


80CLAUDE.md proyek dapat disimpan di `./CLAUDE.md` atau `./.claude/CLAUDE.md`. Buat file ini dan tambahkan instruksi yang berlaku untuk siapa pun yang bekerja pada proyek: perintah build dan test, standar pengkodean, keputusan arsitektur, konvensi penamaan, dan alur kerja umum. Instruksi ini dibagikan dengan tim Anda melalui kontrol versi, jadi fokus pada standar tingkat proyek daripada preferensi pribadi. Untuk mengonfirmasi file dimuat, jalankan `/context` dalam sesi dan periksa daftar di bawah **Memory files**.80CLAUDE.md proyek dapat disimpan di `./CLAUDE.md` atau `./.claude/CLAUDE.md`. Buat file ini dan tambahkan instruksi yang berlaku untuk siapa pun yang bekerja pada proyek: perintah build dan test, standar pengkodean, keputusan arsitektur, konvensi penamaan, dan alur kerja umum. Instruksi ini dibagikan dengan tim Anda melalui kontrol versi, jadi fokus pada standar tingkat proyek daripada preferensi pribadi. Untuk mengonfirmasi file dimuat, jalankan `/context` dalam sesi dan periksa daftar di bawah **Memory files**.

81 81 

82<Tip>82<Tip>

83 Jalankan `/init` untuk menghasilkan CLAUDE.md awal secara otomatis. Claude menganalisis basis kode Anda dan membuat file dengan perintah build, instruksi test, dan konvensi proyek yang ditemukannya. Jika CLAUDE.md sudah ada, `/init` menyarankan perbaikan daripada menimpanya. Perbaiki dari sana dengan instruksi yang Claude tidak akan temukan sendiri.83 Jalankan `/init` untuk menghasilkan CLAUDE.md awal secara otomatis. Claude menganalisis codebase Anda dan membuat file dengan perintah build, instruksi test, dan konvensi proyek yang ditemukannya. Jika CLAUDE.md sudah ada, `/init` menyarankan perbaikan daripada menimpanya. Perbaiki dari sana dengan instruksi yang Claude tidak akan temukan sendiri.

84 84 

85 Untuk alur multi-fase interaktif sebagai gantinya, atur variabel lingkungan `CLAUDE_CODE_NEW_INIT` ke `1` sebelum Anda menjalankan `/init`. Atur di shell Anda atau di blok `env` file pengaturan, seperti yang ditunjukkan dalam [Atur variabel lingkungan](/docs/id/env-vars#set-environment-variables). Dengan itu diatur, `/init` menanyakan artefak mana yang akan diatur: file CLAUDE.md, skills, dan hooks. Kemudian mengeksplorasi basis kode Anda dengan subagent, mengisi celah melalui pertanyaan lanjutan, dan menyajikan proposal yang dapat ditinjau sebelum menulis file apa pun. Variabel hanya mengubah cara `/init` berjalan, jadi Anda dapat membiarkannya diatur.85 Untuk alur multi-fase interaktif sebagai gantinya, atur environment variable `CLAUDE_CODE_NEW_INIT` ke `1` sebelum Anda menjalankan `/init`. Atur di shell Anda atau di blok `env` file pengaturan, seperti yang ditunjukkan dalam [Atur environment variable](/docs/id/env-vars#set-environment-variables). Dengan itu diatur, `/init` menanyakan artifact mana yang akan diatur: file CLAUDE.md, skills, dan hooks. Kemudian mengeksplorasi codebase Anda dengan subagent, mengisi celah melalui pertanyaan lanjutan, dan menyajikan proposal yang dapat ditinjau sebelum menulis file apa pun. Variabel hanya mengubah cara `/init` berjalan, jadi Anda dapat membiarkannya diatur.

86</Tip>86</Tip>

87 87 

88<h3 id="write-effective-instructions">88<h3 id="write-effective-instructions">


97 97 

98Jaga file Anda tetap pendek, terorganisir, dan konsisten:98Jaga file Anda tetap pendek, terorganisir, dan konsisten:

99 99 

100* **Ukuran**: targetkan di bawah 200 baris per file CLAUDE.md. File yang lebih panjang mengonsumsi lebih banyak konteks dan mengurangi kepatuhan. Pindahkan instruksi yang penting hanya untuk bagian dari basis kode ke [aturan dengan cakupan path](#path-specific-rules), yang dimuat hanya ketika Claude bekerja dengan file yang cocok. [Impor](#import-additional-files) membantu Anda mengatur file yang panjang tetapi tidak mengurangi biaya konteksnya, karena file yang diimpor juga dimuat saat peluncuran.100* **Ukuran**: targetkan di bawah 200 baris per file CLAUDE.md. File yang lebih panjang mengonsumsi lebih banyak konteks dan mengurangi kepatuhan. Pindahkan instruksi yang penting hanya untuk bagian dari codebase ke [aturan dengan cakupan path](#path-specific-rules), yang dimuat hanya ketika Claude bekerja dengan file yang cocok. [Impor](#import-additional-files) membantu Anda mengatur file yang panjang tetapi tidak mengurangi biaya konteksnya, karena file yang diimpor juga dimuat saat peluncuran.

101* **Struktur**: kelompokkan instruksi terkait di bawah header markdown dan bullet. Bagian yang terorganisir lebih mudah diikuti Claude daripada paragraf padat.101* **Struktur**: kelompokkan instruksi terkait di bawah header markdown dan bullet. Bagian yang terorganisir lebih mudah diikuti Claude daripada paragraf padat.

102* **Konsistensi**: jika dua instruksi saling bertentangan, Claude mungkin memilih satu secara sewenang-wenang. Tinjau file CLAUDE.md Anda, file CLAUDE.md bersarang di subdirektori, dan [`.claude/rules/`](#organize-rules-with-claude/rules/) secara berkala untuk menghapus instruksi yang ketinggalan zaman atau bertentangan. Untuk membuat Claude menemukannya untuk Anda, [jalankan audit prompt](#audit-your-instruction-files).102* **Konsistensi**: jika dua instruksi saling bertentangan, Claude mungkin memilih satu secara sewenang-wenang. Tinjau file CLAUDE.md Anda, file CLAUDE.md bersarang di subdirektori, dan [`.claude/rules/`](#organize-rules-with-claude/rules/) secara berkala untuk menghapus instruksi yang ketinggalan zaman atau bertentangan. Untuk membuat Claude menemukannya untuk Anda, [jalankan audit prompt](#audit-your-instruction-files).

103 103 


136- alur kerja git @docs/git-instructions.md136- alur kerja git @docs/git-instructions.md

137```137```

138 138 

139Untuk preferensi pribadi per-proyek yang tidak boleh diperiksa ke kontrol versi, buat `CLAUDE.local.md` di akar proyek. Ini dimuat bersama `CLAUDE.md` dan diperlakukan dengan cara yang sama. Tambahkan `CLAUDE.local.md` ke `.gitignore` Anda sehingga tidak dikomit. Dengan `CLAUDE_CODE_NEW_INIT=1` diatur, menjalankan `/init` dan memilih opsi pribadi melakukan ini untuk Anda.139Untuk preferensi pribadi per-proyek yang tidak boleh diperiksa ke kontrol versi, buat `CLAUDE.local.md` di akar proyek. Ini dimuat bersama `CLAUDE.md` dan diperlakukan dengan cara yang sama. Tambahkan `CLAUDE.local.md` ke `.gitignore` Anda sehingga tidak di-commit. Dengan `CLAUDE_CODE_NEW_INIT=1` diatur, menjalankan `/init` dan memilih opsi pribadi melakukan ini untuk Anda.

140 140 

141Jika Anda bekerja di beberapa git worktrees dari repositori yang sama, `CLAUDE.local.md` yang diabaikan git hanya ada di worktree tempat Anda membuatnya. Untuk berbagi instruksi pribadi di seluruh worktrees, impor file dari direktori home Anda sebagai gantinya:141Jika Anda bekerja di beberapa git worktree dari repositori yang sama, `CLAUDE.local.md` yang diabaikan git hanya ada di worktree tempat Anda membuatnya. Untuk berbagi instruksi pribadi di seluruh worktree, impor file dari direktori home Anda sebagai gantinya:

142 142 

143```text theme={null}143```text theme={null}

144# Preferensi Individu144# Preferensi Individu


148<Warning>148<Warning>

149 Impor dalam file memori tingkat proyek bersifat eksternal ketika jalurnya diselesaikan di luar direktori kerja Anda, seperti impor direktori home di atas. Pertama kali Claude Code menemukan impor eksternal dalam proyek, ia menampilkan dialog persetujuan yang mencantumkan file. Jika Anda menolak, impor tetap dinonaktifkan dan dialog tidak muncul lagi.149 Impor dalam file memori tingkat proyek bersifat eksternal ketika jalurnya diselesaikan di luar direktori kerja Anda, seperti impor direktori home di atas. Pertama kali Claude Code menemukan impor eksternal dalam proyek, ia menampilkan dialog persetujuan yang mencantumkan file. Jika Anda menolak, impor tetap dinonaktifkan dan dialog tidak muncul lagi.

150 150 

151 Claude Code menampilkan dialog untuk melindungi Anda dari file yang orang lain komit ke proyek bersama. File memori tingkat pengguna, seperti `~/.claude/CLAUDE.md` dan `~/.claude/rules/`, adalah file yang Anda tulis sendiri. Kecuali dalam sesi [Cowork](https://claude.com/product/cowork) di desktop Anda, Claude Code memuat impor mereka tanpa dialog dan mempercayai mereka seperti sisa konfigurasi pribadi Anda.151 Claude Code menampilkan dialog untuk melindungi Anda dari file yang di-commit orang lain ke proyek bersama. File memori tingkat pengguna, seperti `~/.claude/CLAUDE.md` dan `~/.claude/rules/`, adalah file yang Anda tulis sendiri. Kecuali dalam sesi [Cowork](https://claude.com/product/cowork) di desktop Anda, Claude Code memuat impor mereka tanpa dialog dan mempercayai mereka seperti sisa konfigurasi pribadi Anda.

152 152 

153 Dalam sesi Cowork di desktop Anda, Claude Code melewati impor apa pun dalam file tingkat pengguna yang diselesaikan ke jalur di luar direktori kerja sesi dan memuat sisa file. Dalam sesi tersebut juga melewati `~/.claude/CLAUDE.md` yang merupakan symlink atau hard link, dan direktori `~/.claude/rules/` atau file aturan yang disymlink yang menunjuk di luar direktori kerja.153 Dalam sesi Cowork di desktop Anda, Claude Code melewati impor apa pun dalam file tingkat pengguna yang diselesaikan ke jalur di luar direktori kerja sesi dan memuat sisa file. Dalam sesi tersebut juga melewati `~/.claude/CLAUDE.md` yang merupakan symlink atau hard link, dan direktori `~/.claude/rules/` atau file aturan yang disymlink yang menunjuk di luar direktori kerja.

154</Warning>154</Warning>


161 161 

162Semua file yang ditemukan digabungkan ke dalam konteks daripada menimpa satu sama lain. Di seluruh pohon direktori, konten diurutkan dari akar sistem file ke bawah ke direktori kerja Anda. Untuk contoh `foo/bar/`, `foo/CLAUDE.md` muncul dalam konteks sebelum `foo/bar/CLAUDE.md`, jadi instruksi lebih dekat ke tempat Anda meluncurkan Claude dibaca terakhir. Dalam setiap direktori, `CLAUDE.local.md` ditambahkan setelah `CLAUDE.md`, jadi catatan pribadi Anda adalah hal terakhir yang Claude baca di tingkat itu.162Semua file yang ditemukan digabungkan ke dalam konteks daripada menimpa satu sama lain. Di seluruh pohon direktori, konten diurutkan dari akar sistem file ke bawah ke direktori kerja Anda. Untuk contoh `foo/bar/`, `foo/CLAUDE.md` muncul dalam konteks sebelum `foo/bar/CLAUDE.md`, jadi instruksi lebih dekat ke tempat Anda meluncurkan Claude dibaca terakhir. Dalam setiap direktori, `CLAUDE.local.md` ditambahkan setelah `CLAUDE.md`, jadi catatan pribadi Anda adalah hal terakhir yang Claude baca di tingkat itu.

163 163 

164Claude juga menemukan file `CLAUDE.md` dan `CLAUDE.local.md` di subdirektori di bawah direktori kerja saat ini. Daripada memuat mereka saat peluncuran, mereka disertakan ketika Claude membaca file di subdirektori tersebut.164Claude juga menemukan file `CLAUDE.md` dan `CLAUDE.local.md` di subdirektori di bawah direktori kerja saat ini. Daripada memuat mereka saat peluncuran, mereka disertakan ketika Claude membaca file di subdirektori tersebut. Untuk file di dalam worktree di bawah `.claude/worktrees/`, lihat [Isolasi subagent dengan worktree](/docs/id/worktrees#isolate-subagents-with-worktrees).

165 165 

166Jika Anda bekerja di monorepo besar di mana file CLAUDE.md tim lain diambil, gunakan [`claudeMdExcludes`](#exclude-specific-claude-md-files) untuk melewatinya. Untuk tata letak lengkap file CLAUDE.md akar dan per-direktori serta aturan, lihat [Monorepo dan repositori besar](/docs/id/large-codebases).166Jika Anda bekerja di monorepo besar di mana file CLAUDE.md tim lain diambil, gunakan [`claudeMdExcludes`](#exclude-specific-claude-md-files) untuk melewatinya. Untuk tata letak lengkap file CLAUDE.md akar dan per-direktori serta aturan, lihat [Monorepo dan repositori besar](/docs/id/large-codebases).

167 167 

168Komentar HTML tingkat blok (`<!-- maintainer notes -->`) dalam file CLAUDE.md dilepas sebelum konten disuntikkan ke konteks Claude. Gunakan mereka untuk meninggalkan catatan untuk pengelola manusia tanpa menghabiskan token konteks pada mereka. Komentar di dalam blok kode dipertahankan. Ketika Anda membuka file CLAUDE.md langsung dengan alat Read, komentar tetap terlihat.168Komentar HTML tingkat blok (`<!-- maintainer notes -->`) dalam file CLAUDE.md dilepas sebelum konten disuntikkan ke konteks Claude. Gunakan mereka untuk meninggalkan catatan untuk pengelola manusia tanpa menghabiskan token konteks pada mereka. Komentar di dalam blok kode dipertahankan. Ketika Anda membuka file CLAUDE.md langsung dengan tool Read, komentar tetap terlihat.

169 169 

170<h4 id="load-from-additional-directories">170<h4 id="load-from-additional-directories">

171 Muat dari direktori tambahan171 Muat dari direktori tambahan

172</h4>172</h4>

173 173 

174Bendera `--add-dir` memberikan Claude akses ke direktori tambahan di luar direktori kerja utama Anda. Secara default, file CLAUDE.md dari direktori ini tidak dimuat.174Flag `--add-dir` memberikan Claude akses ke direktori tambahan di luar direktori kerja utama Anda. Secara default, file CLAUDE.md dari direktori ini tidak dimuat.

175 175 

176Untuk juga memuat file memori dari direktori tambahan, atur variabel lingkungan `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:176Untuk juga memuat file memori dari direktori tambahan, atur environment variable `CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD`:

177 177 

178```bash theme={null}178```bash theme={null}

179CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config179CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

180```180```

181 181 

182Bentuk inline menetapkan variabel untuk peluncuran itu saja di Bash atau Zsh. Untuk menjaganya tetap aktif untuk setiap sesi, tambahkan ke blok `env` di `~/.claude/settings.json` seperti yang ditunjukkan dalam [Atur variabel lingkungan](/docs/id/env-vars#set-environment-variables).182Bentuk inline menetapkan variabel untuk peluncuran itu saja di Bash atau Zsh. Untuk menjaganya tetap aktif untuk setiap sesi, tambahkan ke blok `env` di `~/.claude/settings.json` seperti yang ditunjukkan dalam [Atur environment variable](/docs/id/env-vars#set-environment-variables).

183 183 

184Ini memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md` dari direktori tambahan. `CLAUDE.local.md` dilewati jika Anda mengecualikan `local` dari [`--setting-sources`](/docs/id/cli-reference).184Ini memuat `CLAUDE.md`, `.claude/CLAUDE.md`, `.claude/rules/*.md`, dan `CLAUDE.local.md` dari direktori tambahan. `CLAUDE.local.md` dilewati jika Anda mengecualikan `local` dari [`--setting-sources`](/docs/id/cli-reference).

185 185 


232- Sertakan komentar dokumentasi OpenAPI232- Sertakan komentar dokumentasi OpenAPI

233```233```

234 234 

235Aturan tanpa bidang `paths` dimuat tanpa syarat dan berlaku untuk semua file. Aturan dengan cakupan path dipicu ketika Claude membaca file yang cocok dengan pola, bukan pada setiap penggunaan alat. Mulai dari v2.1.198, pencocokan juga berfungsi ketika Claude mencapai file melalui jalur symlink ke direktori proyek, misalnya dalam checkout yang disymlink.235Aturan tanpa bidang `paths` dimuat tanpa syarat dan berlaku untuk semua file. Aturan dengan cakupan path dipicu ketika Claude membaca file yang cocok dengan pola, bukan pada setiap penggunaan tool. Pencocokan juga berfungsi ketika Claude mencapai file melalui jalur symlink ke direktori proyek, misalnya dalam checkout yang disymlink.

236 236 

237Gunakan pola glob dalam bidang `paths` untuk mencocokkan file berdasarkan ekstensi, direktori, atau kombinasi apa pun:237Gunakan pola glob dalam bidang `paths` untuk mencocokkan file berdasarkan ekstensi, direktori, atau kombinasi apa pun:

238 238 


258 258 

259Claude Code menggunakan pola apa pun yang akan melampaui anggaran yang tidak diperluas, dan brace literal mereka tidak cocok dengan file apa pun. Sebelum v2.1.217, nilai `paths` dengan banyak grup brace menghentikan atau menghancurkan CLI saat startup.259Claude Code menggunakan pola apa pun yang akan melampaui anggaran yang tidak diperluas, dan brace literal mereka tidak cocok dengan file apa pun. Sebelum v2.1.217, nilai `paths` dengan banyak grup brace menghentikan atau menghancurkan CLI saat startup.

260 260 

261Sintaks Glob memperlakukan `[` sebagai awal ekspresi bracket seperti `[abc]`. Pola dengan `[` yang tidak dapat dibaca sebagai ekspresi bracket, seperti `photos [2024/**`, tidak valid: itu tidak cocok dengan file apa pun, dan pola lain aturan terus bekerja. Untuk mencocokkan `[` literal dalam nama file, lepaskan sebagai `photos \[2024/**`. Sebelum v2.1.207, satu pola tidak valid membuat alat Read gagal untuk setiap file aturan dievaluasi terhadap, daripada tidak cocok dengan apa pun.261Sintaks Glob memperlakukan `[` sebagai awal ekspresi bracket seperti `[abc]`. Pola dengan `[` yang tidak dapat dibaca sebagai ekspresi bracket, seperti `photos [2024/**`, tidak valid: itu tidak cocok dengan file apa pun, dan pola lain aturan terus bekerja. Untuk mencocokkan `[` literal dalam nama file, lepaskan sebagai `photos \[2024/**`. Sebelum v2.1.207, satu pola tidak valid membuat tool Read gagal untuk setiap file yang dievaluasi oleh aturan tersebut, daripada tidak cocok dengan apa pun.

262 262 

263<h4 id="rules-frontmatter-reference">263<h4 id="rules-frontmatter-reference">

264 Referensi frontmatter aturan264 Referensi frontmatter aturan


329 329 

330Kunci `claudeMd` memungkinkan Anda menempatkan konten CLAUDE.md terkelola langsung di dalam `managed-settings.json` daripada menerapkan file terpisah.330Kunci `claudeMd` memungkinkan Anda menempatkan konten CLAUDE.md terkelola langsung di dalam `managed-settings.json` daripada menerapkan file terpisah.

331 331 

332**Cakupan**: setiap sesi Claude Code di mesin, di setiap repositori. Untuk panduan khusus repositori, komit CLAUDE.md proyek sebagai gantinya.332**Cakupan**: setiap sesi Claude Code di mesin, di setiap repositori. Untuk panduan khusus repositori, lakukan commit CLAUDE.md proyek sebagai gantinya.

333 333 

334**Prioritas**: sama dengan file CLAUDE.md terkelola. Dimuat sebelum CLAUDE.md pengguna dan proyek.334**Prioritas**: sama dengan file CLAUDE.md terkelola. Dimuat sebelum CLAUDE.md pengguna dan proyek.

335 335 


347 347 

348| Kekhawatiran | Konfigurasi di |348| Kekhawatiran | Konfigurasi di |

349| :- | :- |349| :- | :- |

350| Blokir alat, perintah, atau jalur file tertentu | Pengaturan terkelola: `permissions.deny` |350| Blokir tool, perintah, atau jalur file tertentu | Pengaturan terkelola: `permissions.deny` |

351| Terapkan isolasi sandbox | Pengaturan terkelola: `sandbox.enabled` |351| Terapkan isolasi sandbox | Pengaturan terkelola: `sandbox.enabled` |

352| Variabel lingkungan dan perutean penyedia API | Pengaturan terkelola: `env` |352| Environment variable dan perutean penyedia API | Pengaturan terkelola: `env` |

353| Metode login dan pembatasan organisasi | Pengaturan terkelola: `forceLoginMethod`, `forceLoginOrgUUID` |353| Metode login dan pembatasan organisasi | Pengaturan terkelola: `forceLoginMethod`, `forceLoginOrgUUID` |

354| Pedoman gaya kode dan kualitas | CLAUDE.md terkelola |354| Pedoman gaya kode dan kualitas | CLAUDE.md terkelola |

355| Pengingat penanganan data dan kepatuhan | CLAUDE.md terkelola |355| Pengingat penanganan data dan kepatuhan | CLAUDE.md terkelola |


538 Aktifkan atau nonaktifkan auto memory538 Aktifkan atau nonaktifkan auto memory

539</h3>539</h3>

540 540 

541Auto memory aktif secara default. Untuk mengalihkannya, buka `/memory` dalam sesi dan gunakan toggle auto memory, yang menyimpan `autoMemoryEnabled` ke pengaturan pengguna Anda di `~/.claude/settings.json`. Untuk mematikannya untuk satu proyek, atur `autoMemoryEnabled` dalam pengaturan proyek itu:541Auto memory aktif secara default dalam sesi lokal. Di luar sesi [Claude Tag](https://claude.com/docs/claude-tag/overview), sesi dalam [lingkungan self-hosted](/docs/id/self-hosted-environments-configuration#how-each-session’s-config-is-assembled) berjalan dengan auto memory nonaktif secara default.

542 

543Untuk mengalihkannya, buka `/memory` dalam sesi dan gunakan toggle auto memory, yang menyimpan `autoMemoryEnabled` ke pengaturan pengguna Anda di `~/.claude/settings.json`. Untuk mematikannya untuk satu proyek, atur `autoMemoryEnabled` dalam pengaturan proyek itu:

542 544 

543```json theme={null}545```json theme={null}

544{546{

model-config.md +16 −2

Details

280* **[Rantai model fallback](#fallback-model-chains)**: entri di luar daftar putih dijatuhkan280* **[Rantai model fallback](#fallback-model-chains)**: entri di luar daftar putih dijatuhkan

281* **Upgrade mode rencana**: pada API Anthropic dan Claude Platform on AWS, upgrade seperti [`opusplan`](#opusplan-model-setting) ke model yang dikecualikan menggunakan versi terbaru keluarga upgrade yang diizinkan. Pada penyedia dengan ID model khusus penyedia, dan ketika tidak ada versi yang diizinkan, upgrade dilewati dan perencanaan berlanjut pada model sesi.281* **Upgrade mode rencana**: pada API Anthropic dan Claude Platform on AWS, upgrade seperti [`opusplan`](#opusplan-model-setting) ke model yang dikecualikan menggunakan versi terbaru keluarga upgrade yang diizinkan. Pada penyedia dengan ID model khusus penyedia, dan ketika tidak ada versi yang diizinkan, upgrade dilewati dan perencanaan berlanjut pada model sesi.

282* **[Fallback model otomatis](#automatic-model-fallback)**: fallback yang targetnya dikecualikan tidak berjalan, jadi permintaan yang ditandai berakhir dengan penolakan sebagai gantinya282* **[Fallback model otomatis](#automatic-model-fallback)**: fallback yang targetnya dikecualikan tidak berjalan, jadi permintaan yang ditandai berakhir dengan penolakan sebagai gantinya

283* **[Pengklasifikasi mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode)**: default Claude Sonnet 5 pengklasifikasi hanya berlaku ketika daftar putih memungkinkan Sonnet 5. Ketika dikecualikan, pengklasifikasi berjalan pada model sesi, yang sudah diatur daftar putih, atau pada model Opus ketika sesi berjalan pada [model Fable](#work-with-fable). Pada penyedia selain API Anthropic, fallback Opus itu berjalan pada model Opus default penyedia tanpa berkonsultasi dengan daftar putih. Memerlukan Claude Code v2.1.210 atau lebih baru283* **[Pengklasifikasi auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode)**: default Claude Sonnet 5 pengklasifikasi hanya berlaku ketika allowlist memungkinkan Sonnet 5. Ketika dikecualikan, pengklasifikasi berjalan pada model sesi, yang sudah diatur allowlist, atau pada model Opus ketika sesi berjalan pada [model Fable](#work-with-fable). Pada penyedia selain API Anthropic, fallback Opus itu berjalan pada model yang Anda tetapkan dalam `ANTHROPIC_DEFAULT_OPUS_MODEL` atau, jika tidak, pada Opus 5, tanpa berkonsultasi dengan allowlist. Memerlukan Claude Code v2.1.210 atau lebih baru

284* **[Mode cepat](/docs/id/fast-mode)**: mengaktifkan mode cepat ditolak ketika model yang akan dijalankan sesi setelahnya berada di luar daftar putih284* **[Mode cepat](/docs/id/fast-mode)**: mengaktifkan mode cepat ditolak ketika model yang akan dijalankan sesi setelahnya berada di luar daftar putih

285 285 

286```json theme={null}286```json theme={null}


570 570 

571Model fallback diperiksa terhadap [`availableModels`](#restrict-model-selection). Ketika diblokir, tidak ada fallback yang terjadi. Penolakan ditampilkan sebagai error normal dan model sesi tidak berubah.571Model fallback diperiksa terhadap [`availableModels`](#restrict-model-selection). Ketika diblokir, tidak ada fallback yang terjadi. Penolakan ditampilkan sebagai error normal dan model sesi tidak berubah.

572 572 

573<h4 id="effort-level-after-a-fallback">

574 Tingkat effort setelah fallback

575</h4>

576 

577Ketika Claude Code mengalihkan sesi Anda ke model fallback, Claude Code mempertahankan tingkat effort yang digunakan permintaan yang ditandai sebagai pengganti effort default model tersebut. Misalnya, sesi pada Opus 5.5 dengan default `medium` yang fallback ke Opus 4.8 tetap pada `medium`, meskipun Opus 4.8 default ke `high`.

578 

579Tingkat yang berbeda berlaku dalam kasus seperti berikut:

580 

581* **Pengaturan atau default organisasi**: tingkat dalam pengaturan Anda yang berlaku untuk model fallback, atau effort default yang ditetapkan organisasi Anda untuknya, berlaku sebagai gantinya.

582* **Perubahan Anda sendiri**: setelah Anda memilih tingkat effort, memilih model di `/model`, atau melanjutkan sesi nanti, tingkat permintaan yang ditandai tidak lagi terbawa.

583* **Effort skill**: tingkat yang ditetapkan oleh frontmatter `effort` sebuah skill untuk permintaan yang ditandai berlaku untuk giliran tersebut, dan giliran berikutnya berjalan pada tingkat yang diberikan [urutan resolusi effort](#adjust-effort-level) untuk model fallback.

584 

585Header sesi menampilkan tingkat yang berlaku di sebelah nama model. Untuk mengubahnya, jalankan `/effort` dalam sesi.

586 

573<h4 id="check-what-triggered-fallback">587<h4 id="check-what-triggered-fallback">

574 Periksa apa yang memicu fallback588 Periksa apa yang memicu fallback

575</h4>589</h4>


636 650 

6371. Pilihan eksplisit: variabel lingkungan [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/id/env-vars#variables), peluncuran dengan `--effort`, atau `/effort` dalam sesi ([`/effort` non-interaktif memiliki efek lebih sempit](#non-interactive-effort))6511. Pilihan eksplisit: variabel lingkungan [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/id/env-vars#variables), peluncuran dengan `--effort`, atau `/effort` dalam sesi ([`/effort` non-interaktif memiliki efek lebih sempit](#non-interactive-effort))

6382. Pengaturan Anda: tingkat yang Anda simpan untuk model atau kunci [`effortLevel`](/docs/id/settings-reference#effortlevel), dengan prioritas di antara mereka dan di seluruh file pengaturan yang dinyatakan pada [`modelSettings`](/docs/id/settings-reference#modelsettings)6522. Pengaturan Anda: tingkat yang Anda simpan untuk model atau kunci [`effortLevel`](/docs/id/settings-reference#effortlevel), dengan prioritas di antara mereka dan di seluruh file pengaturan yang dinyatakan pada [`modelSettings`](/docs/id/settings-reference#modelsettings)

6393. Tingkat usaha default model: `high` pada setiap model yang mendukung usaha, kecuali Opus 5.5 dan Sonnet 5.5 default ke `medium`, Opus 4.7 default ke `xhigh`, dan, ketika organisasi Anda menetapkan tingkat usaha default untuk [model default organisasinya](#organization-default-model), tingkat itu adalah default ketika Anda menjalankan model tersebut6533. Effort default model: `high` pada setiap model yang mendukung effort, kecuali Opus 5.5 dan Sonnet 5.5 default ke `medium`, Opus 4.7 default ke `xhigh`, dan, ketika organisasi Anda menetapkan tingkat effort default untuk [model default organisasinya](#organization-default-model), tingkat itu adalah default ketika Anda menjalankan model tersebut. Setelah fallback model otomatis, lihat [Tingkat effort setelah fallback](#effort-level-after-a-fallback) untuk tingkat yang berlaku.

640 654 

641Opus 5.5 dimulai pada `medium` kecuali salah satu sumber di atas menetapkan tingkat untuk itu, dan `effortLevel` tingkat atas dalam file pengaturan pengguna Anda tidak dihitung untuk Opus 5.5. Kunci itu adalah bentuk yang lebih lama `/effort` ditulis sebelum Claude Code menyimpan tingkat per model: itu terus berlaku di mana itu berlaku sebelumnya, pada Opus 5, Fable 5.1, dan model sebelumnya, sementara Opus 5.5 dan model yang dirilis setelahnya dimulai pada default mereka sendiri sampai Anda memilih tingkat untuk mereka dengan `/effort` atau pengambil `/model`. `effortLevel` tingkat atas dalam pengaturan proyek, lokal, atau terkelola, atau yang dilewatkan dengan `--settings`, berlaku untuk setiap model.655Opus 5.5 dimulai pada `medium` kecuali salah satu sumber di atas menetapkan tingkat untuk itu, dan `effortLevel` tingkat atas dalam file pengaturan pengguna Anda tidak dihitung untuk Opus 5.5. Kunci itu adalah bentuk yang lebih lama `/effort` ditulis sebelum Claude Code menyimpan tingkat per model: itu terus berlaku di mana itu berlaku sebelumnya, pada Opus 5, Fable 5.1, dan model sebelumnya, sementara Opus 5.5 dan model yang dirilis setelahnya dimulai pada default mereka sendiri sampai Anda memilih tingkat untuk mereka dengan `/effort` atau pengambil `/model`. `effortLevel` tingkat atas dalam pengaturan proyek, lokal, atau terkelola, atau yang dilewatkan dengan `--settings`, berlaku untuk setiap model.

642 656 

Details

511 <Accordion title="Bagaimana pengklasifikasi mengevaluasi tindakan">511 <Accordion title="Bagaimana pengklasifikasi mengevaluasi tindakan">

512 Setiap tindakan melalui urutan keputusan tetap. Langkah pertama yang cocok menang:512 Setiap tindakan melalui urutan keputusan tetap. Langkah pertama yang cocok menang:

513 513 

514 1. Tindakan yang cocok dengan [aturan allow, ask, atau deny](/docs/id/permissions#manage-permissions) Anda diselesaikan segera, dengan pengecualian ini:514 1. Tindakan yang cocok dengan [aturan allow, ask, atau deny](/docs/id/permissions#manage-permissions) Anda diselesaikan segera, dengan pengecualian berikut:

515 * Menulis ke [jalur yang dilindungi](#protected-paths) rute ke pengklasifikasi bahkan ketika aturan allow cocok515 * Penulisan ke [jalur yang dilindungi](#protected-paths) diarahkan ke pengklasifikasi bahkan ketika aturan allow cocok

516 * Tidak ada aturan allow yang menyetujui penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](#critical-paths)516 * Tidak ada aturan allow yang menyetujui penghapusan `rm` dan `rmdir` yang menargetkan [jalur kritis](#critical-paths)

517 * Alat MCP yang ditandai [`requiresUserInteraction`](/docs/id/mcp#require-approval-for-a-specific-tool) memberi Anda prompt langsung bahkan ketika aturan allow cocok, dan begitu juga alat konektor [organisasi Anda atur ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan itu mencapai Claude Code517 * Tool MCP yang ditandai [`requiresUserInteraction`](/docs/id/mcp#require-approval-for-a-specific-tool) memberi Anda prompt langsung bahkan ketika aturan allow cocok, demikian juga tool konektor yang [diatur organisasi Anda ke `ask`](/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan itu mencapai Claude Code

518 * Perintah shell yang membawa [domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) juga rute ke pengklasifikasi bahkan ketika aturan allow cocok, karena aturan menyetujui perintah, bukan hostnya518 * Perintah shell yang membawa [domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) juga diarahkan ke pengklasifikasi bahkan ketika aturan allow cocok, karena aturan menyetujui perintah, bukan host-nya

519 * Aturan ask yang cocok pada konten perintah, seperti `Bash(git push *)`, kembali ke prompt izin519 * Aturan ask yang mencocokkan konten perintah, seperti `Bash(git push *)`, beralih ke prompt izin

520 * Penulisan yang [pemeriksaan symlink](/docs/id/permissions#symlinks) selesaikan ke jalur yang dilindungi memberi Anda prompt ketika jalur yang diminta Claude bukan itu sendiri dilindungi520 * Penulisan yang di-resolve oleh [pemeriksaan symlink](/docs/id/permissions#symlinks) ke jalur yang dilindungi memberi Anda prompt ketika jalur yang diminta Claude sendiri tidak dilindungi

521 2. Tindakan hanya-baca dan pengeditan file di direktori kerja Anda disetujui otomatis, kecuali penulisan ke [jalur yang dilindungi](#protected-paths) dan [pembacaan pertama di luar direktori kerja](#first-read-outside-the-working-directories), yang memberi Anda prompt521 2. Tindakan read-only dan pengeditan file di direktori kerja Anda disetujui otomatis, kecuali penulisan ke [jalur yang dilindungi](#protected-paths) dan [pembacaan pertama di luar direktori kerja](#first-read-outside-the-working-directories), yang memberi Anda prompt

522 * Dalam sesi dengan [tinjauan pengklasifikasi sisi server](#server-side-classifier-review), perintah hanya-baca dan [sandboxed](/docs/id/sandboxing#sandbox-modes) shell menunggu tinjauan itu dan diblokir jika itu menandainya522 * Dalam sesi dengan [tinjauan pengklasifikasi sisi server](#server-side-classifier-review), perintah shell read-only dan yang [di-sandbox](/docs/id/sandboxing#sandbox-modes) menunggu tinjauan itu dan diblokir jika tinjauan menandainya

523 * Penulisan di dalam direktori kerja Anda yang [pemeriksaan symlink](/docs/id/permissions#symlinks) selesaikan ke lokasi di luar itu memberi Anda prompt523 * Penulisan di dalam direktori kerja Anda yang di-resolve oleh [pemeriksaan symlink](/docs/id/permissions#symlinks) ke lokasi di luarnya memberi Anda prompt

524 3. Semuanya yang lain pergi ke pengklasifikasi, terlepas dari [penghapusan jalur kritis](#critical-paths) di bawah penanganan default mereka. Alat konektor dan `requiresUserInteraction` alat MCP yang memberi Anda prompt langsung dalam langkah 1 tidak pernah mencapai pengklasifikasi juga, jadi baik persetujuan yang diperlukan org maupun langkah persetujuan tidak disetujui otomatis524 * Ketika Claude membaca [artifact yang dibuat orang lain](/docs/id/artifacts#read-an-artifact-shared-with-you), kasus persetujuan yang tercantum di bagian tersebut berlaku

525 4. Jika pengklasifikasi memblokir, Claude menerima alasannya. Dalam sebagian besar sesi alasan menyebutkan aturan yang cocok pengklasifikasi, seperti `[Data Exfiltration]`, daripada memberikan penjelasan tertulis; lihat [Tinjauan penolakan](/docs/id/auto-mode-config#review-denials)525 3. Semua hal lain diteruskan ke pengklasifikasi, kecuali [penghapusan jalur kritis](#critical-paths) dalam penanganan default-nya. Tool konektor dan tool MCP `requiresUserInteraction` yang memberi Anda prompt langsung di langkah 1 juga tidak pernah mencapai pengklasifikasi, sehingga baik persetujuan yang diwajibkan organisasi maupun langkah persetujuan pengguna tidak disetujui otomatis

526 4. Jika pengklasifikasi memblokir, Claude menerima alasannya. Dalam sebagian besar sesi, alasan tersebut menyebutkan aturan yang dicocokkan pengklasifikasi, seperti `[Data Exfiltration]`, alih-alih memberikan penjelasan tertulis; lihat [Tinjau penolakan](/docs/id/auto-mode-config#review-denials)

526 527 

527 [Mod](/docs/id/plugins/mods/overview) yang Anda instal yang hook `tool.check` dapat menyetujui tindakan sebelum langkah 3, dan pengklasifikasi tidak memeriksa tindakan yang mod setujui. Lihat [Perluas izin dengan hook](/docs/id/permissions#extend-permissions-with-hooks).528 [Mod](/docs/id/plugins/mods/overview) yang Anda instal yang hook `tool.check` dapat menyetujui tindakan sebelum langkah 3, dan pengklasifikasi tidak memeriksa tindakan yang mod setujui. Lihat [Perluas izin dengan hook](/docs/id/permissions#extend-permissions-with-hooks).

528 529 


548 <Accordion title="Bagaimana mode otomatis menangani subagen">549 <Accordion title="Bagaimana mode otomatis menangani subagen">

549 Pengklasifikasi memeriksa pekerjaan [subagen](/docs/id/sub-agents) di tiga titik:550 Pengklasifikasi memeriksa pekerjaan [subagen](/docs/id/sub-agents) di tiga titik:

550 551 

551 1. Sebelum subagen dimulai, deskripsi tugas yang didelegasikan dievaluasi, jadi tugas yang terlihat berbahaya diblokir pada waktu spawn.552 1. Sebelum subagent dimulai, deskripsi tugas yang didelegasikan dievaluasi, sehingga tugas yang tampak berbahaya diblokir saat spawn.

552 2. Saat subagen berjalan, setiap tindakannya melalui [urutan keputusan](#how-the-classifier-evaluates-actions) yang sama seperti dalam sesi induk, dengan aturan blok dan allow yang sama. Setiap `permissionMode` dalam frontmatter subagen diabaikan.553 2. Saat subagent berjalan, setiap tindakannya melalui [urutan keputusan](#how-the-classifier-evaluates-actions) yang sama seperti dalam sesi induk, dengan aturan blok dan allow yang sama. Setiap `permissionMode` dalam frontmatter subagent diabaikan.

553 3. Ketika subagen selesai, pengklasifikasi meninjau pekerjaannya dan laporan akhirnya sebelum induk membaca laporan. Ketika pengklasifikasi menandai pekerjaan atau laporan subagen, atau pemeriksaan keamanan API terpisah menolak tinjauan, laporan masih disampaikan, diawali dengan peringatan keamanan. Ketika pengklasifikasi tidak tersedia untuk tinjauan, laporan tiba dengan catatan untuk memverifikasi pekerjaan subagen sebelum bertindak atas itu.554 3. Ketika subagent selesai, pengklasifikasi meninjau pekerjaannya dan laporan akhirnya sebelum induk membaca laporan. Ketika pengklasifikasi menandai pekerjaan atau laporan subagent, atau pemeriksaan keamanan API terpisah menolak tinjauan, laporan tetap disampaikan, diawali dengan peringatan keamanan. Ketika pengklasifikasi tidak tersedia untuk tinjauan, laporan tiba dengan catatan untuk memverifikasi pekerjaan subagent sebelum menindaklanjutinya.

554 </Accordion>555 </Accordion>

555 556 

556 <Accordion title="Biaya dan latensi">557 <Accordion title="Biaya dan latensi">

557 Pengklasifikasi berjalan pada Claude Sonnet 5 secara default daripada pada pilihan `/model` Anda. Model pengklasifikasi yang dikonfigurasi Anthropic sisi server mengambil preseden atas default itu. Ketika model sesi Anda adalah Claude Sonnet 4.6, atau ketika [`availableModels`](/docs/id/model-config#restrict-model-selection) mengecualikan Sonnet 5, pengklasifikasi berjalan pada model sesi sebagai gantinya, atau pada model Opus ketika sesi berjalan pada [model Fable](/docs/id/model-config#work-with-fable); pada penyedia selain Anthropic API, fallback Opus itu adalah model Opus default penyedia.558 Pengklasifikasi berjalan pada Claude Sonnet 5 secara default, bukan pada pilihan `/model` Anda. Model pengklasifikasi yang dikonfigurasi Anthropic di sisi server diutamakan daripada default itu. Ketika model sesi Anda adalah Claude Sonnet 4.6, atau ketika [`availableModels`](/docs/id/model-config#restrict-model-selection) mengecualikan Sonnet 5, pengklasifikasi berjalan pada model sesi sebagai gantinya, atau pada model Opus ketika sesi berjalan pada [model Fable](/docs/id/model-config#work-with-fable). Pada penyedia selain Anthropic API, fallback Opus itu adalah model yang Anda tetapkan dalam [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/id/model-config#environment-variables), atau Opus 5 jika Anda belum menetapkannya.

558 559 

559 Permintaan mode otomatis pertama sesi memvalidasi default Sonnet 5: jika permintaan berhasil, Sonnet 5 tetap model pengklasifikasi sesi, dan jika gagal karena model tidak tersedia, sesi menggunakan fallback sebagai gantinya.560 Permintaan mode otomatis pertama sesi memvalidasi default Sonnet 5: jika permintaan berhasil, Sonnet 5 tetap model pengklasifikasi sesi, dan jika gagal karena model tidak tersedia, sesi menggunakan fallback sebagai gantinya.

560 561 


588 589 

589Mode `bypassPermissions` menonaktifkan prompt izin dan pemeriksaan keamanan sehingga panggilan alat dijalankan segera, termasuk penulisan ke [jalur yang dilindungi](#protected-paths).590Mode `bypassPermissions` menonaktifkan prompt izin dan pemeriksaan keamanan sehingga panggilan alat dijalankan segera, termasuk penulisan ke [jalur yang dilindungi](#protected-paths).

590 591 

591[Tindakan yang tidak ada mode auto-approve](#actions-no-mode-auto-approves) masih meminta dalam mode ini. [Remove-Item di PowerShell](#remove-item-in-powershell) penolakan juga berlaku dalam mode ini.592[Tindakan yang tidak ada mode auto-approve](#actions-no-mode-auto-approves) masih meminta dalam mode ini. Membaca [artifact publik milik organisasi lain](/docs/id/artifacts#read-an-artifact-shared-with-you) memerlukan persetujuan Anda, dan mode ini tidak memintanya, sehingga Claude tidak dapat membacanya. [Remove-Item di PowerShell](#remove-item-in-powershell) penolakan juga berlaku dalam mode ini.

592 593 

593Dua perlindungan [pesan lintas sesi](/docs/id/cross-session-messaging) masih berlaku dalam mode ini, dan dalam sesi mode rencana terminal interaktif di mana bypass permissions tersedia:594Dua perlindungan [pesan lintas sesi](/docs/id/cross-session-messaging) masih berlaku dalam mode ini, dan dalam sesi mode rencana terminal interaktif di mana bypass permissions tersedia:

594 595 

permissions.md +128 −127

Details

223Label yang ditampilkan untuk alat dalam transkrip dan dialog izin dapat berbeda dari nama kanoniknya. Misalnya, alat berlabel `Stop Task` dalam transkrip memiliki nama kanonik `TaskStop`. Aturan izin dan [pencocokan hook](/docs/id/hooks) tidak mencocokkan label, jadi aturan yang ditulis sebagai `Stop Task` tidak cocok. Untuk aturan deny dan ask, peringatan startup di atas menangkap ketidaksesuaian. Gunakan nama kanonik yang tercantum dalam [referensi alat](/docs/id/tools-reference).223Label yang ditampilkan untuk alat dalam transkrip dan dialog izin dapat berbeda dari nama kanoniknya. Misalnya, alat berlabel `Stop Task` dalam transkrip memiliki nama kanonik `TaskStop`. Aturan izin dan [pencocokan hook](/docs/id/hooks) tidak mencocokkan label, jadi aturan yang ditulis sebagai `Stop Task` tidak cocok. Untuk aturan deny dan ask, peringatan startup di atas menangkap ketidaksesuaian. Gunakan nama kanonik yang tercantum dalam [referensi alat](/docs/id/tools-reference).

224 224 

225<h2 id="tool-specific-permission-rules">225<h2 id="tool-specific-permission-rules">

226 Aturan izin khusus alat226 Aturan izin khusus tool

227</h2>227</h2>

228 228 

229<h3 id="bash">229<h3 id="bash">

230 Bash230 Bash

231</h3>231</h3>

232 232 

233Aturan Bash cocok dengan seluruh teks perintah, dengan `*` mewakili teks apa pun. [Pola wildcard](#wildcard-patterns) menunjukkan perintah mana yang cocok dengan setiap bentuk aturan dan di mana menempatkan `*`. Bagian lainnya mencakup cara Claude Code mencocokkan perintah gabungan dan pembungkus, apa yang tidak cocok dengan aturan, perintah baca-saja, dan pengalihan.233Aturan Bash mencocokkan seluruh teks perintah, dengan `*` mewakili teks apa pun. [Pola wildcard](#wildcard-patterns) menunjukkan perintah mana yang dicocokkan oleh setiap bentuk aturan dan di mana harus meletakkan `*`. Bagian selanjutnya dari bagian ini membahas cara Claude Code mencocokkan perintah gabungan dan wrapper, apa yang tidak dicocokkan oleh sebuah aturan, perintah read-only, dan pengalihan.

234 234 

235<h4 id="compound-commands">235<h4 id="compound-commands">

236 Perintah gabungan236 Perintah gabungan

237</h4>237</h4>

238 238 

239<Tip>239<Tip>

240 Claude Code menyadari operator shell, jadi aturan seperti `Bash(safe-cmd *)` tidak akan memberinya izin untuk menjalankan perintah `safe-cmd && other-cmd`. Pemisah perintah yang dikenali adalah `&&`, `||`, `;`, `|`, `|&`, `&`, dan baris baru. Aturan harus cocok dengan setiap subperintah secara independen.240 Claude Code memahami operator shell, sehingga aturan seperti `Bash(safe-cmd *)` tidak akan memberinya izin untuk menjalankan perintah `safe-cmd && other-cmd`. Pemisah perintah yang dikenali adalah `&&`, `||`, `;`, `|`, `|&`, `&`, dan baris baru. Sebuah aturan harus cocok dengan setiap subperintah secara independen.

241</Tip>241</Tip>

242 242 

243Aturan tolak dan tanya berlaku ketika subperintah apa pun cocok dengan mereka, termasuk perintah yang bersarang di dalam subshell, substitusi perintah, atau badan alur kontrol seperti loop `for`. Aturan tanya seperti `Bash(git clean *)` masih meminta Anda untuk `cd /tmp && git clean -f` atau `echo "$(git clean -f)"`, bahkan dalam [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode).243Aturan deny dan ask berlaku ketika subperintah mana pun cocok dengannya, termasuk perintah yang bersarang di dalam subshell, substitusi perintah, atau badan alur kontrol seperti loop `for`. Aturan ask seperti `Bash(git clean *)` tetap meminta persetujuan Anda untuk `cd /tmp && git clean -f` atau `echo "$(git clean -f)"`, bahkan dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode).

244 244 

245Ketika `&&` atau `||` tidak memiliki apa pun setelahnya, seperti dalam `npm test &&`, Claude Code memperlakukan perintah sebagai tidak dapat diurai dan tidak membaginya menjadi subperintah untuk pencocokan aturan izin, jadi aturan seperti `Bash(npm *)` tidak menyetujuinya.245Ketika `&&` atau `||` tidak diikuti apa pun, seperti pada `npm test &&`, Claude Code memperlakukan perintah tersebut sebagai tidak dapat di-parse dan tidak memecahnya menjadi subperintah untuk pencocokan aturan allow, sehingga aturan allow seperti `Bash(npm *)` tidak menyetujuinya.

246 246 

247Ketika Anda menyetujui perintah gabungan dengan "Ya, dan jangan tanya lagi", Claude Code menyimpan aturan terpisah untuk setiap subperintah yang memerlukan persetujuan, bukan aturan tunggal untuk string gabungan lengkap. Misalnya, menyetujui `git status && npm test` menyimpan aturan untuk `npm test`, jadi invokasi `npm test` di masa depan dikenali terlepas dari apa yang mendahului `&&`. Subperintah seperti `cd` ke direktori di luar direktori kerja Anda menghasilkan aturan Read mereka sendiri untuk jalur itu. Hingga 5 aturan dapat disimpan untuk satu perintah gabungan.247Ketika Anda menyetujui perintah gabungan dengan "Yes, and don't ask again", Claude Code menyimpan aturan terpisah untuk setiap subperintah yang memerlukan persetujuan, alih-alih satu aturan untuk seluruh string gabungan. Misalnya, menyetujui `git status && npm test` menyimpan aturan untuk `npm test`, sehingga pemanggilan `npm test` di masa mendatang dikenali terlepas dari apa yang mendahului `&&`. Subperintah seperti `cd` ke direktori di luar direktori kerja Anda menghasilkan aturan Read tersendiri untuk path tersebut. Hingga 5 aturan dapat disimpan untuk satu perintah gabungan.

248 248 

249<h4 id="process-wrappers">249<h4 id="process-wrappers">

250 Pembungkus250 Wrapper

251</h4>251</h4>

252 252 

253Sebelum mencocokkan aturan Bash, Claude Code menghilangkan serangkaian pembungkus tetap, jadi aturan seperti `Bash(npm test *)` juga cocok dengan `timeout 30 npm test`. Pembungkus yang dihilangkan adalah `timeout`, `time`, `nice`, `nohup`, dan `stdbuf`, ditambah shell builtin `command` dan `builtin`, dan `noglob` zsh. Masing-masing menjalankan argumennya sebagai perintah aktual. Dua bentuk terkait tidak dihilangkan: bentuk kueri `command -v`, yang mencari perintah daripada menjalankannya, dan `nocorrect` zsh.253Sebelum mencocokkan aturan Bash, Claude Code menghapus sekumpulan wrapper tetap, sehingga aturan seperti `Bash(npm test *)` juga cocok dengan `timeout 30 npm test`. Wrapper yang dihapus adalah `timeout`, `time`, `nice`, `nohup`, dan `stdbuf`, ditambah builtin shell `command` dan `builtin`, serta `noglob` milik zsh. Masing-masing menjalankan argumennya sebagai perintah yang sebenarnya. Dua bentuk terkait tidak dihapus: bentuk kueri `command -v`, yang mencari perintah alih-alih menjalankannya, dan `nocorrect` milik zsh.

254 254 

255Claude Code juga menghilangkan penugasan terdepan dari variabel lingkungan tertentu yang dikenal aman, jadi `Bash(npm test *)` cocok dengan `NODE_ENV=test npm test`. Aturan izin tidak akan cocok melampaui penugasan variabel apa pun yang lain. Aturan tolak atau tanya cocok melampaui penugasan terdepan apa pun, jadi `Bash(rm *)` dalam tolak masih cocok dengan `FOO=bar rm -rf tmp/`.255Claude Code juga menghapus penetapan di awal untuk environment variable tertentu yang diketahui aman, sehingga `Bash(npm test *)` cocok dengan `NODE_ENV=test npm test`. Aturan allow tidak akan cocok melewati penetapan variabel lain mana pun. Aturan deny atau ask cocok melewati penetapan apa pun di awal, sehingga `Bash(rm *)` di deny tetap cocok dengan `FOO=bar rm -rf tmp/`.

256 256 

257`xargs` telanjang juga dihilangkan, jadi `Bash(grep *)` cocok dengan `xargs grep pattern`. Penghilangan hanya berlaku ketika `xargs` tidak memiliki flag: invokasi seperti `xargs -n1 grep pattern` dicocokkan sebagai perintah `xargs`, jadi aturan yang ditulis untuk perintah dalam tidak mencakupnya.257`xargs` tanpa flag juga dihapus, sehingga `Bash(grep *)` cocok dengan `xargs grep pattern`. Penghapusan hanya berlaku ketika `xargs` tidak memiliki flag: pemanggilan seperti `xargs -n1 grep pattern` dicocokkan sebagai perintah `xargs`, sehingga aturan yang ditulis untuk perintah di dalamnya tidak mencakupnya.

258 258 

259Daftar pembungkus ini bawaan dan tidak dapat dikonfigurasi. Pelari lingkungan pengembangan seperti `direnv exec`, `devbox run`, `mise exec`, `npx`, dan `docker exec` tidak ada dalam daftar. Karena alat-alat ini menjalankan argumen mereka sebagai perintah, aturan seperti `Bash(devbox run *)` cocok dengan apa pun yang datang setelah `run`, termasuk `devbox run rm -rf .`. Untuk menyetujui pekerjaan di dalam pelari lingkungan, tulis aturan spesifik yang mencakup baik pelari maupun perintah dalam, seperti `Bash(devbox run npm test)`. Tambahkan satu aturan per perintah dalam yang ingin Anda izinkan.259Daftar wrapper ini bawaan dan tidak dapat dikonfigurasi. Runner lingkungan pengembangan seperti `direnv exec`, `devbox run`, `mise exec`, `npx`, dan `docker exec` tidak ada dalam daftar. Karena tool ini mengeksekusi argumennya sebagai perintah, aturan seperti `Bash(devbox run *)` cocok dengan apa pun yang muncul setelah `run`, termasuk `devbox run rm -rf .`. Untuk menyetujui pekerjaan di dalam runner lingkungan, tulis aturan spesifik yang mencakup runner dan perintah di dalamnya, seperti `Bash(devbox run npm test)`. Tambahkan satu aturan per perintah di dalamnya yang ingin Anda izinkan.

260 260 

261Pembungkus Exec seperti `watch`, `setsid`, `ionice`, dan `flock` tidak dapat disetujui otomatis oleh aturan awalan seperti `Bash(watch *)`, jadi dalam mode Manual mereka selalu meminta. Hal yang sama berlaku untuk `find` dengan `-exec` atau `-delete`: aturan `Bash(find *)` tidak mencakup bentuk-bentuk ini. Untuk menyetujui invokasi spesifik, tulis aturan pencocokan tepat untuk string perintah lengkap.261Wrapper eksekusi seperti `watch`, `setsid`, `ionice`, dan `flock` tidak dapat disetujui otomatis oleh aturan prefiks seperti `Bash(watch *)`, sehingga dalam mode Manual selalu muncul permintaan izin. Hal yang sama berlaku untuk `find` dengan `-exec` atau `-delete`: aturan `Bash(find *)` tidak mencakup bentuk-bentuk ini. Untuk menyetujui pemanggilan tertentu, tulis aturan pencocokan persis untuk string perintah lengkap.

262 262 

263<h4 id="bash-rule-limits">263<h4 id="bash-rule-limits">

264 Apa yang tidak cocok dengan aturan Bash264 Apa yang tidak dicocokkan oleh aturan Bash

265</h4>265</h4>

266 266 

267Aturan Bash cocok dengan teks perintah yang ditulis Claude, setelah Claude Code membagi [perintah gabungan](#compound-commands) dan menghilangkan [pembungkus](#process-wrappers). Aturan ini tidak cocok dengan program yang sama yang dipanggil dalam bentuk berbeda, jadi aturan tolak atau tanya mencakup invokasi yang biasanya dihasilkan Claude dan bukan batas keamanan di sekitar program. Aturan-aturan ini dalam `deny` atau `ask` menghentikan bentuk pertama dan bukan yang lain:267Aturan Bash mencocokkan teks perintah yang ditulis Claude, setelah Claude Code memecah [perintah gabungan](#compound-commands) dan menghapus [wrapper](#process-wrappers). Aturan ini tidak mencocokkan program yang sama yang dipanggil dalam bentuk berbeda, sehingga aturan deny atau ask mencakup pemanggilan yang biasanya dihasilkan Claude dan bukan merupakan batas keamanan di sekitar program tersebut. Aturan-aturan berikut di `deny` atau `ask` menghentikan bentuk pertama dan tidak menghentikan yang lain:

268 268 

269| Aturan | Menghentikan | Tidak menghentikan |269| Aturan | Menghentikan | Tidak menghentikan |

270| :- | :- | :- |270| :- | :- | :- |


272| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |272| `Bash(rm *)` | `rm -rf build/` | `/bin/rm -rf build/`, `bash -c 'rm -rf build/'` |

273| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |273| `Bash(git push *)` | `git push origin main` | `git -C . push origin main`, `git -c push.default=current push origin main`, `git 'push' origin main` |

274 274 

275Aturan lain Anda dan mode izin memutuskan perintah di kolom terakhir.275Aturan Anda yang lain dan mode izin menentukan perintah di kolom terakhir.

276 276 

277Untuk penegakan sistem file dan jaringan yang tidak bergantung pada teks perintah, gunakan [sandboxing](/docs/id/sandboxing). Untuk memeriksa teks perintah lengkap dengan logika Anda sendiri sebelum dijalankan, gunakan hook [PreToolUse](#extend-permissions-with-hooks).277Untuk penegakan sistem file dan jaringan yang tidak bergantung pada teks perintah, gunakan [sandboxing](/docs/id/sandboxing). Untuk memeriksa teks perintah lengkap dengan logika Anda sendiri sebelum dijalankan, gunakan [hook PreToolUse](#extend-permissions-with-hooks).

278 278 

279<h4 id="read-only-commands">279<h4 id="read-only-commands">

280 Perintah baca-saja280 Perintah read-only

281</h4>281</h4>

282 282 

283Claude Code mengenali serangkaian perintah Bash bawaan sebagai baca-saja dan menjalankannya tanpa prompt izin dalam setiap mode, kecuali untuk jalur yang [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) pagar. Himpunan ini mencakup `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd`, dan bentuk baca-saja dari `git`. Himpunan ini tidak dapat dikonfigurasi; untuk memerlukan prompt untuk salah satu perintah ini, tambahkan aturan `ask` atau `deny` untuk itu. Dalam mode otomatis, perintah-perintah ini juga dapat menunggu tinjauan pengklasifikasi; lihat [bagaimana pengklasifikasi mengevaluasi tindakan](/docs/id/permission-modes#how-the-classifier-evaluates-actions).283Claude Code mengenali sekumpulan perintah Bash bawaan sebagai read-only dan menjalankannya tanpa permintaan izin di setiap mode, kecuali sebagaimana diubah oleh [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) untuk path di luar direktori kerja Anda. Kumpulan ini mencakup `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd`, dan bentuk read-only dari `git`. Kumpulan ini tidak dapat dikonfigurasi; untuk mewajibkan permintaan izin bagi salah satu perintah ini, tambahkan aturan `ask` atau `deny` untuknya. Dalam auto mode, perintah-perintah ini juga dapat menunggu tinjauan pengklasifikasi; lihat [cara pengklasifikasi mengevaluasi tindakan](/docs/id/permission-modes#how-the-classifier-evaluates-actions).

284 284 

285Pengalihan seperti `ls > out.txt` menambahkan pemeriksaan pada target. Lihat [Pengalihan](#redirections).285Pengalihan seperti `ls > out.txt` menambahkan pemeriksaan pada targetnya. Lihat [Pengalihan](#redirections).

286 286 

287Pola glob yang tidak dikutip diizinkan untuk perintah yang setiap flagnya baca-saja, jadi `ls *.ts` dan `wc -l src/*.py` berjalan tanpa prompt.287Pola glob tanpa tanda kutip diizinkan untuk perintah yang semua flag-nya read-only, sehingga `ls *.ts` dan `wc -l src/*.py` berjalan tanpa permintaan izin.

288 288 

289Dalam mode Manual, perintah dari himpunan ini masih meminta dalam kasus-kasus ini:289Dalam mode Manual, perintah dari kumpulan ini tetap memunculkan permintaan izin dalam kasus-kasus berikut:

290 290 

291* **Glob yang tidak dikutip untuk perintah dengan flag yang mampu menulis**: perintah dengan flag yang mampu menulis atau mampu exec, seperti `find`, `sort`, `sed`, dan `git`, meminta ketika glob yang tidak dikutip ada, karena glob dapat berkembang menjadi flag seperti `-delete`.291* **Glob tanpa tanda kutip untuk perintah dengan flag yang dapat menulis**: perintah dengan flag yang dapat menulis atau mengeksekusi, seperti `find`, `sort`, `sed`, dan `git`, memunculkan permintaan izin ketika ada glob tanpa tanda kutip, karena glob tersebut dapat diperluas menjadi flag seperti `-delete`.

292* **`docker` menunjuk ke daemon lain**: bentuk baca-saja dari `docker` meminta ketika perintah membawa flag yang memilih daemon berbeda, seperti `-H`, `--context`, atau `--url` dan `--connection` Podman.292* **`docker` yang diarahkan ke daemon lain**: bentuk read-only dari `docker` memunculkan permintaan izin ketika perintah membawa flag yang memilih daemon berbeda, seperti `-H`, `--context`, atau `--url` dan `--connection` milik Podman.

293* **`file` dengan flag pembuka jalur**: `file` meminta ketika melewatkan `-m`/`--magic-file` atau `-f`/`--files-from`, karena flag-flag itu membuat `file` membuka jalur yang dinamai dalam nilai flag.293* **`file` dengan flag yang membuka path**: `file` memunculkan permintaan izin ketika meneruskan `-m`/`--magic-file` atau `-f`/`--files-from`, karena flag tersebut membuat `file` membuka path yang disebutkan dalam nilai flag.

294* **Jalur jaringan di Windows**: perintah yang argumennya mencakup jalur jaringan (UNC), seperti `\\server\share\file`, meminta karena mengakses jalur jaringan dapat mengirim kredensial Windows Anda ke host yang dinamainya. Pemeriksaan yang sama berlaku untuk perintah [alat PowerShell](/docs/id/tools-reference#powershell-tool).294* **Path jaringan di Windows**: perintah yang argumennya mencakup path jaringan (UNC), seperti `\\server\share\file`, memunculkan permintaan izin karena mengakses path jaringan dapat mengirimkan kredensial Windows Anda ke host yang disebutkannya. Pemeriksaan yang sama berlaku untuk perintah [tool PowerShell](/docs/id/tools-reference#powershell-tool).

295* **Perintah yang analisisnya tidak dapat diurai**: ketika Claude Code tidak dapat sepenuhnya mengurai perintah, itu meminta persetujuan daripada memperlakukan perintah sebagai baca-saja. Perintah yang lebih panjang dari 10.000 karakter selalu meminta karena melebihi apa yang dianalisis.295* **Penulisan ke variabel shell khusus**: perintah yang menetapkan, menghapus, atau melakukan loop atas variabel shell khusus tertentu, seperti `PATH` atau `IFS`, memunculkan permintaan izin meskipun bagian lain dari perintah bersifat read-only.

296* **Perintah yang tidak dapat di-parse oleh analisis**: ketika Claude Code tidak dapat sepenuhnya mem-parse sebuah perintah, ia meminta persetujuan alih-alih memperlakukan perintah tersebut sebagai read-only. Perintah yang lebih panjang dari 10.000 karakter selalu memunculkan permintaan izin karena melebihi batas yang di-parse oleh analisis.

296 297 

297`cd` ke jalur di dalam direktori kerja Anda atau [direktori tambahan](#working-directories) juga baca-saja, dan perintah gabungan seperti `cd packages/api && ls` berjalan tanpa prompt ketika setiap bagian memenuhi syarat sendiri. Kombinasi-kombinasi ini meminta bahkan ketika setiap bagian baca-saja:298`cd` ke path di dalam direktori kerja Anda atau [direktori tambahan](#working-directories) juga bersifat read-only, dan perintah gabungan seperti `cd packages/api && ls` berjalan tanpa permintaan izin ketika setiap bagian memenuhi syarat secara tersendiri. Kombinasi berikut memunculkan permintaan izin meskipun setiap bagian bersifat read-only:

298 299 

299* **`cd` dengan `git`**: meminta ketika `cd` berubah ke direktori berbeda, karena menjalankan `git` di direktori baru dapat menjalankan hook direktori itu. `cd` yang targetnya diselesaikan ke direktori kerja saat ini adalah no-op dan tidak memicu prompt.300* **`cd` dengan `git`**: memunculkan permintaan izin ketika `cd` berpindah ke direktori yang berbeda, karena menjalankan `git` di direktori baru dapat mengeksekusi hook milik direktori tersebut. `cd` yang targetnya mengarah ke direktori kerja saat ini tidak melakukan apa-apa dan tidak memicu permintaan izin.

300* **`cd` dengan pengalihan**: meminta ketika Claude Code tidak dapat menentukan direktori mana target pengalihan diselesaikan terhadap setelah `cd` berjalan. Perintah yang satu-satunya target pengalihannya adalah `/dev/null`, seperti `cd app; grep -r pattern . 2>/dev/null`, tidak meminta, karena `/dev/null` tidak bergantung pada direktori kerja.301* **`cd` dengan pengalihan**: memunculkan permintaan izin ketika Claude Code tidak dapat menentukan direktori mana yang menjadi acuan target pengalihan setelah `cd` dijalankan. Perintah yang satu-satunya target pengalihannya adalah `/dev/null`, seperti `cd app; grep -r pattern . 2>/dev/null`, tidak memunculkan permintaan izin, karena `/dev/null` tidak bergantung pada direktori kerja.

301 302 

302<Warning>303<Warning>

303 Pola izin Bash yang mencoba membatasi argumen perintah rapuh. Misalnya, `Bash(curl http://github.com/ *)` dimaksudkan untuk membatasi curl ke URL GitHub, tetapi tidak akan cocok dengan variasi seperti:304 Pola izin Bash yang mencoba membatasi argumen perintah bersifat rapuh. Misalnya, `Bash(curl http://github.com/ *)` bermaksud membatasi curl ke URL GitHub, tetapi tidak akan cocok dengan variasi seperti:

304 305 

305 * Opsi sebelum URL: `curl -X GET http://github.com/...`306 * Opsi sebelum URL: `curl -X GET http://github.com/...`

306 * Protokol berbeda: `curl https://github.com/...`307 * Protokol berbeda: `curl https://github.com/...`

307 * Pengalihan: `curl -L http://short.example.com/xyz`, yang dialihkan ke GitHub308 * Pengalihan: `curl -L http://short.example.com/xyz`, yang dialihkan ke GitHub

308 * Variabel: `URL=http://github.com && curl $URL`309 * Variabel: `URL=http://github.com && curl $URL`

309 310 

310 Untuk penyaringan URL yang lebih andal, pertimbangkan:311 Untuk pemfilteran URL yang lebih andal, pertimbangkan:

311 312 

312 * **Batasi alat jaringan Bash**: gunakan aturan tolak untuk menghentikan `curl`, `wget`, dan perintah serupa, kemudian gunakan alat WebFetch dengan izin `WebFetch(domain:github.com)` untuk domain yang diizinkan. Aturan tolak tidak cocok dengan program yang sama menurut jalur atau di dalam `sh -c`, jadi pasangkan dengan [daftar izin jaringan sandbox](/docs/id/sandboxing#network-isolation) ketika pembatasan harus berlaku; lihat [apa yang tidak cocok dengan aturan Bash](#bash-rule-limits)313 * **Batasi tool jaringan Bash**: gunakan aturan deny untuk menghentikan `curl`, `wget`, dan perintah serupa, lalu gunakan tool WebFetch dengan izin `WebFetch(domain:github.com)` untuk domain yang diizinkan. Aturan deny tidak mencocokkan program yang sama melalui path atau di dalam `sh -c`, jadi pasangkan dengan [allowlist jaringan sandbox](/docs/id/sandboxing#network-isolation) ketika pembatasan harus tetap berlaku; lihat [apa yang tidak dicocokkan oleh aturan Bash](#bash-rule-limits)

313 * **Gunakan hook PreToolUse**: implementasikan hook yang memvalidasi URL dalam perintah Bash dan memblokir domain yang tidak diizinkan314 * **Gunakan hook PreToolUse**: implementasikan hook yang memvalidasi URL dalam perintah Bash dan memblokir domain yang tidak diizinkan

314 * **Tambahkan panduan CLAUDE.md**: jelaskan pola curl yang diizinkan Anda dalam `CLAUDE.md`. Ini membentuk apa yang Claude coba tetapi tidak memberlakukan batas, jadi pasangkan dengan salah satu opsi di atas315 * **Tambahkan panduan CLAUDE.md**: jelaskan pola curl yang diizinkan dalam `CLAUDE.md`. Ini membentuk apa yang dicoba Claude tetapi tidak menegakkan batas, jadi pasangkan dengan salah satu opsi di atas

315 316 

316 Perhatikan bahwa menggunakan WebFetch saja tidak mencegah akses jaringan. Jika Bash diizinkan, Claude masih dapat menggunakan `curl`, `wget`, atau alat lain untuk menjangkau URL apa pun.317 Perhatikan bahwa menggunakan WebFetch saja tidak mencegah akses jaringan. Jika Bash diizinkan, Claude masih dapat menggunakan `curl`, `wget`, atau tool lain untuk menjangkau URL apa pun.

317</Warning>318</Warning>

318 319 

319<h4 id="redirections">320<h4 id="redirections">

320 Pengalihan321 Pengalihan

321</h4>322</h4>

322 323 

323Ketika perintah mengalihkan output atau input, Claude Code memeriksa target pengalihan terhadap aturan file Anda seolah-olah Claude menulis atau membaca file itu secara langsung:324Ketika sebuah perintah mengalihkan output atau input, Claude Code memeriksa target pengalihan terhadap aturan file Anda seolah-olah Claude menulis atau membaca file tersebut secara langsung:

324 325 

325* **Pengalihan output**: untuk `> file`, `>> file`, atau `2> file`, pemeriksaan mencakup aturan izin dan tolak `Edit` Anda, [jalur terlindungi](/docs/id/permission-modes#protected-paths), dan [direktori kerja](#working-directories). Aturan seperti `Bash(git commit *)` mengizinkan perintah, bukan target. Target yang dimulai dengan `~` atau berisi karakter glob memerlukan persetujuan Anda.326* **Pengalihan output**: untuk `> file`, `>> file`, atau `2> file`, pemeriksaan mencakup aturan allow dan deny `Edit` Anda, [path yang dilindungi](/docs/id/permission-modes#protected-paths), dan [direktori kerja](#working-directories). Aturan seperti `Bash(git commit *)` mengizinkan perintahnya, bukan targetnya. Target yang diawali dengan `~` atau mengandung karakter glob memerlukan persetujuan Anda.

326* **Pengalihan input**: untuk `< file`, pemeriksaan mencakup aturan izin dan tolak `Read` Anda dan direktori kerja. Target di luar direktori kerja memerlukan persetujuan Anda kecuali aturan izin mencakupnya. Target yang berisi pola glob, atau jalur relatif yang mengikuti `cd` dalam perintah yang sama, memerlukan persetujuan Anda bahkan ketika aturan izin mencakupnya. Claude Code memeriksa target input dalam v2.1.257 dan yang lebih baru.327* **Pengalihan input**: untuk `< file`, pemeriksaan mencakup aturan allow dan deny `Read` Anda serta direktori kerja. Target di luar direktori kerja memerlukan persetujuan Anda kecuali ada aturan allow yang mencakupnya. Target yang mengandung pola glob, atau path relatif yang mengikuti `cd` dalam perintah yang sama, memerlukan persetujuan Anda meskipun ada aturan allow yang mencakupnya. Claude Code memeriksa target input di v2.1.257 dan yang lebih baru.

327 328 

328Target tanpa file di belakangnya tidak diperiksa: `/dev/null`, bentuk deskriptor file seperti `2>&1` dan `<&3`, dan here-docs dan here-strings.329Target yang tidak memiliki file di baliknya tidak diperiksa: `/dev/null`, bentuk file-descriptor seperti `2>&1` dan `<&3`, serta here-doc dan here-string.

329 330 

330Claude Code juga memeriksa file yang ditulis perintah `tee`, termasuk dalam pipeline seperti `make | tee build.log`. Pemeriksaan mencakup aturan izin dan tolak `Edit` Anda, [jalur terlindungi](/docs/id/permission-modes#protected-paths), dan [direktori kerja](#working-directories). Aturan izin seperti `Bash(tee *)` tidak mencakup tujuan di luar direktori kerja. Claude Code memeriksa target `tee` dalam v2.1.269 dan yang lebih baru.331Claude Code juga memeriksa file yang ditulis oleh perintah `tee`, termasuk dalam pipeline seperti `make | tee build.log`. Pemeriksaan mencakup aturan allow dan deny `Edit` Anda, [path yang dilindungi](/docs/id/permission-modes#protected-paths), dan [direktori kerja](#working-directories). Aturan allow seperti `Bash(tee *)` tidak mencakup tujuan di luar direktori kerja. Claude Code memeriksa target `tee` di v2.1.269 dan yang lebih baru.

331 332 

332<h3 id="powershell">333<h3 id="powershell">

333 PowerShell334 PowerShell

334</h3>335</h3>

335 336 

336Aturan izin PowerShell menggunakan bentuk yang sama dengan aturan Bash. Wildcard dengan `*` cocok di posisi apa pun, akhiran `:*` setara dengan ` *` di belakang, dan `PowerShell` atau `PowerShell(*)` telanjang cocok dengan setiap perintah. Konfigurasi ini mengizinkan perintah `Get-ChildItem` dan `git commit` sambil memblokir `Remove-Item`:337Aturan izin PowerShell menggunakan bentuk yang sama dengan aturan Bash. Wildcard dengan `*` cocok di posisi mana pun, sufiks `:*` setara dengan ` *` di akhir, dan `PowerShell` atau `PowerShell(*)` tanpa argumen cocok dengan setiap perintah. Konfigurasi ini mengizinkan perintah `Get-ChildItem` dan `git commit` sambil memblokir `Remove-Item`:

337 338 

338```json theme={null}339```json theme={null}

339{340{


349}350}

350```351```

351 352 

352Alias umum dikanonisasi sebelum pencocokan. Aturan yang ditulis untuk nama cmdlet juga cocok dengan aliasnya, jadi `PowerShell(Get-ChildItem *)` cocok dengan `gci`, `ls`, dan `dir` juga. Pencocokan tidak peka huruf besar-kecil.353Alias umum dikanonisasi sebelum pencocokan. Aturan yang ditulis untuk nama cmdlet juga cocok dengan alias-aliasnya, sehingga `PowerShell(Get-ChildItem *)` juga cocok dengan `gci`, `ls`, dan `dir`. Pencocokan tidak peka huruf besar/kecil.

353 354 

354Claude Code mengurai AST PowerShell dan memeriksa setiap perintah dalam perintah gabungan secara independen. Operator pipeline `|`, pemisah pernyataan `;`, dan pada PowerShell 7+ operator rantai `&&` dan `||` membagi perintah gabungan menjadi subperintah. Aturan harus cocok dengan setiap subperintah agar perintah gabungan diizinkan.355Claude Code mem-parse AST PowerShell dan memeriksa setiap perintah dalam perintah gabungan secara independen. Operator pipeline `|`, pemisah pernyataan `;`, dan pada PowerShell 7+ operator rantai `&&` dan `||` memecah perintah gabungan menjadi subperintah. Sebuah aturan harus cocok dengan setiap subperintah agar perintah gabungan diizinkan.

355 356 

356<h3 id="read-and-edit">357<h3 id="read-and-edit">

357 Read dan Edit358 Read dan Edit

358</h3>359</h3>

359 360 

360Untuk memblokir alat file Claude dari membaca file atau direktori, tambahkan aturan tolak `Read` untuk jalurnya, seperti `Read(./.env)` atau `Read(./secrets/**)`; [Kecualikan file sensitif](/docs/id/settings-reference#exclude-sensitive-files) memiliki contoh siap tempel.361Untuk memblokir tool file Claude agar tidak membaca file atau direktori, tambahkan aturan deny `Read` untuk path-nya, seperti `Read(./.env)` atau `Read(./secrets/**)`; [Mengecualikan file sensitif](/docs/id/settings-reference#exclude-sensitive-files) memiliki contoh yang siap ditempel. Jika proyek Anda memiliki file `.claudeignore`, file tersebut tidak berpengaruh, jadi pindahkan entri-entrinya ke aturan deny `Read`.

361 362 

362Aturan `Edit` berlaku untuk semua alat bawaan yang mengedit file. Claude membuat upaya terbaik untuk menerapkan aturan `Read` ke semua alat bawaan yang membaca file seperti Grep dan Glob, ke penyebutan `@file` dalam prompt Anda, dan ke pilihan dan konteks file terbuka yang [IDE](/docs/id/vs-code#the-built-in-ide-mcp-server) yang terhubung bagikan dengan Claude.363Aturan `Edit` berlaku untuk semua tool bawaan yang mengedit file. Claude melakukan upaya terbaik untuk menerapkan aturan `Read` ke semua tool bawaan yang membaca file seperti Grep dan Glob, ke mention `@file` dalam prompt Anda, dan ke konteks seleksi serta file terbuka yang dibagikan oleh [IDE](/docs/id/vs-code#the-built-in-ide-mcp-server) yang terhubung kepada Claude.

363 364 

364Aturan tolak `Read` juga memblokir alat [Edit dan Write](/docs/id/errors#file-is-covered-by-a-read-deny-rule) pada jalur yang sama, termasuk membuat file baru di sana. NotebookEdit tidak tercakup, jadi tambahkan aturan tolak `Edit` untuk jalur yang tidak boleh diubah alat apa pun. Pemeriksaan memerlukan Claude Code v2.1.208 atau yang lebih baru pada edit, dan v2.1.228 atau yang lebih baru pada write.365Aturan deny `Read` juga memblokir [tool Edit dan Write](/docs/id/errors#file-is-covered-by-a-read-deny-rule) pada path yang sama, termasuk membuat file baru di sana. NotebookEdit tidak tercakup, jadi tambahkan aturan deny `Edit` untuk path yang tidak boleh diubah oleh tool apa pun. Pemeriksaan ini memerlukan Claude Code v2.1.208 atau yang lebih baru untuk edit, dan v2.1.228 atau yang lebih baru untuk penulisan.

365 366 

366Claude Code memeriksa izin file hanya terhadap aturan `Edit(path)` dan `Read(path)`. Jika Anda menulis aturan jalur untuk `Write`, `NotebookEdit`, `Glob`, atau alat `MultiEdit` warisan sebagai gantinya, Claude Code menerima aturan tetapi tidak pernah berkonsultasi dengannya, dan [memperingatkan saat startup](/docs/id/errors#is-not-matched-by-file-permission-checks), kecuali untuk aturan `Glob` yang dilewatkan dalam `--allowedTools`. Gunakan `Edit(docs/**)` sebagai pengganti `Write(docs/**)`, `NotebookEdit(docs/**)`, atau `MultiEdit(docs/**)`, dan `Read(docs/**)` sebagai pengganti `Glob(docs/**)`. Claude Code tidak memperingatkan tentang aturan nama alat tanpa jalur, seperti aturan tolak untuk `Write`; aturan itu cocok di tingkat alat di mana-mana. Memerlukan Claude Code v2.1.210 atau yang lebih baru.367Claude Code memeriksa izin file hanya terhadap aturan `Edit(path)` dan `Read(path)`. Jika Anda menulis aturan path untuk `Write`, `NotebookEdit`, `Glob`, atau tool lama `MultiEdit`, Claude Code menerima aturan tersebut tetapi tidak pernah merujuknya, dan [memberi peringatan saat startup](/docs/id/errors#is-not-matched-by-file-permission-checks), kecuali untuk aturan `Glob` yang diteruskan dalam `--allowedTools`. Gunakan `Edit(docs/**)` sebagai pengganti `Write(docs/**)`, `NotebookEdit(docs/**)`, atau `MultiEdit(docs/**)`, dan `Read(docs/**)` sebagai pengganti `Glob(docs/**)`. Claude Code tidak memberi peringatan tentang aturan nama tool tanpa path, seperti aturan deny untuk `Write`; aturan tersebut dicocokkan di tingkat tool di mana saja. Memerlukan Claude Code v2.1.210 atau yang lebih baru.

367 368 

368<Warning>369<Warning>

369 Aturan tolak Read dan Edit berlaku untuk alat file bawaan Claude, ke perintah file yang Claude Code kenali dalam Bash, seperti `cat`, `head`, `tail`, `sed`, dan `tee`, dan ke target pengalihan Bash [](#redirections) seperti `> file` dan `< file`. Aturan-aturan ini tidak berlaku untuk perintah yang membaca file tanpa menamakannya, seperti `grep -r pattern .` dijalankan dari direktori yang menyimpan file, atau ke subproses arbitrer yang membaca atau menulis file secara tidak langsung, seperti skrip Python atau Node yang membuka file sendiri. Untuk penegakan tingkat OS yang memblokir semua proses dari mengakses jalur, [aktifkan sandbox](/docs/id/sandboxing).370 Aturan deny Read dan Edit berlaku untuk tool file bawaan Claude, untuk perintah file yang dikenali Claude Code dalam Bash, seperti `cat`, `head`, `tail`, `sed`, dan `tee`, serta untuk target [pengalihan](#redirections) Bash seperti `> file` dan `< file`. Aturan tersebut tidak berlaku untuk perintah yang membaca file tanpa menyebutkan namanya, seperti `grep -r pattern .` yang dijalankan dari direktori yang berisi file tersebut, atau untuk subproses arbitrer yang membaca atau menulis file secara tidak langsung, seperti skrip Python atau Node yang membuka file sendiri. Untuk penegakan tingkat OS yang memblokir semua proses agar tidak mengakses sebuah path, [aktifkan sandbox](/docs/id/sandboxing).

370</Warning>371</Warning>

371 372 

372Aturan Read dan Edit keduanya menggunakan sintaks pola [gitignore](https://git-scm.com/docs/gitignore) dengan empat jenis pola yang berbeda; untuk pola direktori segmen tunggal, kedalaman pencocokan juga bergantung pada jenis aturan, dijelaskan nanti di bagian ini:373Aturan Read dan Edit sama-sama menggunakan sintaks pola [gitignore](https://git-scm.com/docs/gitignore) dengan empat jenis pola yang berbeda; untuk pola direktori segmen tunggal, kedalaman pencocokan juga bergantung pada jenis aturan, yang dijelaskan nanti di bagian ini:

373 374 

374| Pola | Arti | Contoh | Cocok |375| Pola | Arti | Contoh | Cocok dengan |

375| - | - | - | - |376| - | - | - | - |

376| `//path` | Jalur absolut dari akar sistem file | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |377| `//path` | Path absolut dari root sistem file | `Read(//Users/alice/secrets/**)` | `/Users/alice/secrets/**` |

377| `~/path` | Jalur dari direktori rumah | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |378| `~/path` | Path dari direktori home | `Read(~/Documents/*.pdf)` | `/Users/alice/Documents/*.pdf` |

378| `/path` | Jalur relatif terhadap sumber pengaturan | `Edit(/src/**/*.ts)` | `<primary working directory>/src/**/*.ts` dalam pengaturan proyek |379| `/path` | Path relatif terhadap sumber pengaturan | `Edit(/src/**/*.ts)` | `<primary working directory>/src/**/*.ts` dalam pengaturan proyek |

379| `path` atau `./path` | Jalur relatif terhadap direktori saat ini | `Read(*.env)` | `<cwd>/*.env` |380| `path` atau `./path` | Path relatif terhadap direktori saat ini | `Read(*.env)` | `<cwd>/*.env` |

380 381 

381<Warning>382<Warning>

382 Pola seperti `/Users/alice/file` bukan jalur absolut. Garis miring tunggal terdepan berlabuh di sumber pengaturan, bukan akar sistem file. Gunakan `//Users/alice/file` untuk jalur absolut.383 Pola seperti `/Users/alice/file` bukan path absolut. Garis miring tunggal di awal berjangkar pada sumber pengaturan, bukan root sistem file. Gunakan `//Users/alice/file` untuk path absolut.

383</Warning>384</Warning>

384 385 

385Pola `/path` berlabuh di direktori yang terkait dengan sumber pengaturan yang mendefinisikannya, jadi aturan yang sama cocok dengan lokasi berbeda tergantung di mana Anda meletakkannya:386Pola `/path` berjangkar pada direktori yang terkait dengan sumber pengaturan yang mendefinisikannya, sehingga aturan yang sama cocok dengan lokasi berbeda tergantung di mana Anda meletakkannya:

386 387 

387| Aturan didefinisikan dalam | `/path` diselesaikan ke |388| Aturan didefinisikan di | `/path` mengarah ke |

388| :- | :- |389| :- | :- |

389| Pengaturan proyek di `.claude/settings.json` | `<primary working directory>/path` |390| Pengaturan proyek di `.claude/settings.json` | `<primary working directory>/path` |

390| Pengaturan lokal di `.claude/settings.local.json` | `<primary working directory>/path` |391| Pengaturan lokal di `.claude/settings.local.json` | `<primary working directory>/path` |

391| Pengaturan pengguna di `~/.claude/settings.json` | `~/.claude/path` |392| Pengaturan pengguna di `~/.claude/settings.json` | `~/.claude/path` |

392| File yang dilewatkan dengan `--settings <file>` | `<directory of file>/path` |393| File yang diteruskan dengan `--settings <file>` | `<directory of file>/path` |

393| Flag CLI atau aturan sesi | `<primary working directory>/path` |394| Flag CLI atau aturan sesi | `<primary working directory>/path` |

394 395 

395Aturan yang Anda tambahkan melalui `/permissions` mengikuti baris untuk file pengaturan yang Anda simpan.396Aturan yang Anda tambahkan melalui `/permissions` mengikuti baris untuk file pengaturan tempat Anda menyimpannya.

396 397 

397Aturan pengaturan lokal berlabuh di [direktori kerja utama](#working-directories) sesi, bukan di akar repositori tempat Claude Code [menyimpan file](#permission-system) dalam v2.1.211 dan yang lebih baru. Dalam sesi yang dimulai di akar repositori, dua direktori sama; dalam sesi [worktree](/docs/id/worktrees), aturan bersama seperti `Edit(/src/**)` cocok dengan direktori `src/` worktree itu sendiri.398Aturan pengaturan lokal berjangkar pada [direktori kerja utama](#working-directories) sesi, bukan pada root repositori tempat Claude Code [menyimpan file tersebut](#permission-system) di v2.1.211 dan yang lebih baru. Dalam sesi yang dimulai di root repositori, kedua direktori tersebut sama; dalam sesi [worktree](/docs/id/worktrees), aturan bersama seperti `Edit(/src/**)` cocok dengan direktori `src/` milik worktree tersebut.

398 399 

399Aturan tolak seperti `Read(/secrets/**)` dalam pengaturan pengguna memblokir `~/.claude/secrets/**`, bukan direktori `secrets` dalam proyek Anda. Untuk menulis aturan dalam pengaturan pengguna yang berlaku di dalam setiap proyek, gunakan jalur absolut `//` atau jalur relatif rumah `~/` sebagai gantinya.400Aturan deny seperti `Read(/secrets/**)` dalam pengaturan pengguna memblokir `~/.claude/secrets/**`, bukan direktori `secrets` di proyek Anda. Untuk menulis aturan dalam pengaturan pengguna yang berlaku di dalam setiap proyek, gunakan path absolut `//` atau path relatif-home `~/`.

400 401 

401Di Windows, jalur dinormalisasi ke bentuk POSIX sebelum pencocokan. `C:\Users\alice` menjadi `/c/Users/alice`, jadi gunakan `//c/**/.env` untuk mencocokkan file `.env` di mana pun di drive itu. Untuk mencocokkan di semua drive, gunakan `//**/.env`.402Di Windows, path dinormalisasi ke bentuk POSIX sebelum pencocokan. `C:\Users\alice` menjadi `/c/Users/alice`, jadi gunakan `//c/**/.env` untuk mencocokkan file `.env` di mana pun pada drive tersebut. Untuk mencocokkan di semua drive, gunakan `//**/.env`.

402 403 

403Contoh:404Contoh:

404 405 

405* `Edit(/docs/**)`: edit dalam `<primary working directory>/docs/`, bukan `/docs/` atau `<primary working directory>/.claude/docs/`406* `Edit(/docs/**)`: edit di `<primary working directory>/docs/`, bukan `/docs/` atau `<primary working directory>/.claude/docs/`

406* `Read(~/.zshrc)`: membaca `.zshrc` direktori rumah Anda407* `Read(~/.zshrc)`: membaca `.zshrc` di direktori home Anda

407* `Edit(//tmp/scratch.txt)`: mengedit jalur absolut `/tmp/scratch.txt`408* `Edit(//tmp/scratch.txt)`: mengedit path absolut `/tmp/scratch.txt`

408* `Read(src/**)`: sebagai aturan izin, membaca dari `<current-directory>/src/` saja; sebagai aturan tolak atau tanya, cocok dengan direktori `src` di kedalaman apa pun di bawah direktori saat ini409* `Read(src/**)`: sebagai aturan allow, hanya membaca dari `<current-directory>/src/`; sebagai aturan deny atau ask, cocok dengan direktori `src` di kedalaman mana pun di bawah direktori saat ini

409 410 

410Aturan hanya cocok dengan file di bawah jangkarnya; dalam batas itu, kedalaman pencocokan bergantung pada bentuk pola dan, untuk pola direktori segmen tunggal, jenis aturan, dijelaskan di bawah. Nama file telanjang mengikuti semantik gitignore dan cocok di kedalaman apa pun, jadi `Read(.env)` dan `Read(**/.env)` setara:411Sebuah aturan hanya cocok dengan file di bawah jangkarnya; dalam batas tersebut, kedalaman pencocokan bergantung pada bentuk pola dan, untuk pola direktori segmen tunggal, jenis aturan, yang dijelaskan di bawah. Nama file tanpa path mengikuti semantik gitignore dan cocok di kedalaman mana pun, sehingga `Read(.env)` dan `Read(**/.env)` setara:

411 412 

412| Aturan tolak | Memblokir | Tidak memblokir |413| Aturan deny | Memblokir | Tidak memblokir |

413| - | - | - |414| - | - | - |

414| `Read(.env)` atau `Read(**/.env)` | `.env` apa pun di atau di bawah direktori saat ini | `.env` dalam direktori induk atau proyek lain |415| `Read(.env)` atau `Read(**/.env)` | setiap `.env` di atau di bawah direktori saat ini | `.env` di direktori induk atau proyek lain |

415| `Read(//**/.env)` | `.env` apa pun di mana pun di sistem file | tidak ada; aturan berlabuh di akar sistem file |416| `Read(//**/.env)` | setiap `.env` di mana pun pada sistem file | tidak ada; aturan berjangkar pada root sistem file |

416 417 

417Pola relatif dengan segmen direktori tunggal, seperti `src/**`, cocok di kedalaman berbeda tergantung pada jenis aturan:418Pola relatif dengan satu segmen direktori, seperti `src/**`, cocok di kedalaman berbeda tergantung pada jenis aturan:

418 419 

419* **Aturan izin**: `Edit(src/**)` cocok hanya dengan `<cwd>/src` dan file di bawahnya. Untuk mengizinkan nama direktori di kedalaman apa pun, tulis `Edit(**/src/**)`.420* **Aturan allow**: `Edit(src/**)` hanya cocok dengan `<cwd>/src` dan file di bawahnya. Untuk mengizinkan nama direktori di kedalaman mana pun, tulis `Edit(**/src/**)`.

420* **Aturan tolak dan tanya**: `Read(secrets/**)` cocok dengan direktori bernama `secrets` di kedalaman apa pun di bawah direktori saat ini, jadi aturan juga berlaku untuk salinan bersarang.421* **Aturan deny dan ask**: `Read(secrets/**)` cocok dengan direktori bernama `secrets` di kedalaman mana pun di bawah direktori saat ini, sehingga aturan juga berlaku untuk salinan yang bersarang.

421 422 

422Setiap bentuk pola lainnya cocok di kedalaman yang sama dalam setiap jenis aturan: `Edit(/src/**)` dan `Edit(src/components/**)` cocok hanya di lokasi berlabuh mereka, sementara `Edit(**/src/**)` cocok di kedalaman apa pun.423Setiap bentuk pola lainnya cocok di kedalaman yang sama di setiap jenis aturan: `Edit(/src/**)` dan `Edit(src/components/**)` hanya cocok di lokasi jangkarnya, sedangkan `Edit(**/src/**)` cocok di kedalaman mana pun.

423 424 

424Contoh berikut menunjukkan setiap bentuk pola terhadap proyek dengan direktori `src/` tingkat atas dan salinan bersarang di bawah `vendor/`:425Contoh berikut menunjukkan setiap bentuk pola terhadap proyek dengan direktori `src/` tingkat atas dan salinan bersarang di bawah `vendor/`:

425 426 


433 └── lib.js434 └── lib.js

434```435```

435 436 

436| Aturan | Cocok `src/app.ts` | Cocok `vendor/pkg/src/lib.js` |437| Aturan | Cocok dengan `src/app.ts` | Cocok dengan `vendor/pkg/src/lib.js` |

437| :- | :- | :- |438| :- | :- | :- |

438| `Edit(src/**)` sebagai aturan izin | Ya | Tidak |439| `Edit(src/**)` sebagai aturan allow | Ya | Tidak |

439| `Edit(src/**)` sebagai aturan tolak atau tanya | Ya | Ya |440| `Edit(src/**)` sebagai aturan deny atau ask | Ya | Ya |

440| `Edit(/src/**)` dalam jenis aturan apa pun | Ya | Tidak |441| `Edit(/src/**)` dalam jenis aturan apa pun | Ya | Tidak |

441| `Edit(**/src/**)` dalam jenis aturan apa pun | Ya | Ya |442| `Edit(**/src/**)` dalam jenis aturan apa pun | Ya | Ya |

442 443 

443<Note>444<Note>

444 Dalam pola gitignore, `*` cocok dalam segmen jalur tunggal dan dapat muncul di posisi apa pun dalam pola, sementara `**` cocok di seluruh direktori.445 Dalam pola gitignore, `*` cocok dalam satu segmen path dan dapat muncul di posisi mana pun dalam pola, sedangkan `**` cocok lintas direktori.

445</Note>446</Note>

446 447 

447Ketika Anda menyetujui jalur file dengan "Ya, dan jangan tanya lagi", Claude Code menghindari karakter pola gitignore dalam jalur itu, seperti `[`, `]`, dan `*`, jadi aturan yang dihasilkan cocok hanya dengan jalur literal yang Anda setujui. Aturan yang Anda tulis sendiri tidak dihindari. Sebelum v2.1.202, Claude Code menyimpan jalur tanpa dihindari, jadi aturan yang dihasilkan untuk direktori bernama `[2024-06] Reports` dapat gagal mencocokkan jalurnya sendiri atau mencocokkan direktori saudara yang tidak dimaksudkan.448Ketika Anda menyetujui path file dengan "Yes, and don't ask again", Claude Code meng-escape karakter pola gitignore dalam path tersebut, seperti `[`, `]`, dan `*`, sehingga aturan yang dihasilkan hanya cocok dengan path literal yang Anda setujui. Aturan yang Anda tulis sendiri tidak di-escape. Sebelum v2.1.202, Claude Code menyimpan path tanpa escape, sehingga aturan yang dihasilkan untuk direktori bernama `[2024-06] Reports` dapat gagal mencocokkan path-nya sendiri atau mencocokkan direktori saudara yang tidak dimaksudkan.

448 449 

449Anda tidak perlu menghindari tanda kurung dalam jalur, jadi `Edit(./Finance (2024)/**)` cocok dengan folder `Finance (2024)` seperti yang dieja.450Anda tidak perlu meng-escape tanda kurung dalam path, sehingga `Edit(./Finance (2024)/**)` cocok dengan folder `Finance (2024)` sesuai ejaannya.

450 451 

451Aturan tolak atau tanya yang jalurnya tidak dapat digunakan sebagai pola gitignore masih menjaga jalur itu yang tepat. Aturan izin dengan pola yang tidak dapat digunakan tidak menyetujui apa pun.452Aturan deny atau ask yang path-nya tidak dapat digunakan sebagai pola gitignore tetap melindungi path persis tersebut. Aturan allow dengan pola yang tidak dapat digunakan tidak menyetujui apa pun.

452 453 

453Pola tolak atau tanya yang dimulai dengan `!` adalah negasi gitignore. Aturan ini mengukir jalur yang cocok dari aturan `path` atau `./path` yang terdaftar sebelumnya. Dalam daftar `deny` satu file pengaturan, `Read(*.env)` diikuti oleh `Read(!sample.env)` memblokir setiap file yang namanya berakhir dengan `.env` di kedalaman apa pun, kecuali file bernama `sample.env`. Aturan `!` yang terdaftar pertama tidak mengukir apa pun.454Pola deny atau ask yang diawali dengan `!` adalah negasi gitignore. Pola ini mengecualikan path yang dicocokkannya dari aturan `path` atau `./path` yang tercantum sebelumnya. Dalam daftar `deny` satu file pengaturan, `Read(*.env)` yang diikuti oleh `Read(!sample.env)` memblokir setiap file yang namanya berakhiran `.env` di kedalaman mana pun, kecuali file bernama `sample.env`. Aturan `!` yang tercantum pertama tidak mengecualikan apa pun.

454 455 

455Pengukiran mencapai hanya aturan dari sumber yang sama. `Read(!.env)` dalam pengaturan proyek atau dalam `--disallowedTools` tidak membatalkan tolak `Read(./.env)` dari pengaturan terkelola atau file pengaturan lainnya.456Pengecualian hanya menjangkau aturan dari sumber yang sama. `Read(!.env)` dalam pengaturan proyek atau dalam `--disallowedTools` tidak membatalkan deny `Read(./.env)` dari pengaturan terkelola atau file pengaturan lainnya.

456 457 

457Dua batas mempersempit apa yang dapat diukir pola `!`:458Dua batasan mempersempit apa yang dapat dikecualikan oleh pola `!`:

458 459 

459* Claude Code membaca pola `!` relatif terhadap direktori saat ini bahkan ketika `/`, `~/`, atau `//` mengikuti `!`, jadi pola tidak dapat menjangkau aturan berlabuh dengan salah satu awalan itu. `Read(!~/notes/public/**)` tidak mengukir apa pun dari `Read(~/notes/**)`.460* Claude Code membaca pola `!` relatif terhadap direktori saat ini bahkan ketika `/`, `~/`, atau `//` mengikuti `!`, sehingga pola tersebut tidak dapat menjangkau aturan yang berjangkar dengan salah satu prefiks tersebut. `Read(!~/notes/public/**)` tidak mengecualikan apa pun dari `Read(~/notes/**)`.

460* Pengukiran tidak dapat membuka kembali file di dalam direktori yang aturan blokir secara keseluruhan. Dengan `Read(secrets/**)` dan `Read(!secrets/public/**)`, Claude Code masih memblokir `secrets/public` bersama dengan sisa `secrets`.461* Pengecualian tidak dapat membuka kembali file di dalam direktori yang diblokir sebuah aturan secara keseluruhan. Dengan `Read(secrets/**)` dan `Read(!secrets/public/**)`, Claude Code tetap memblokir `secrets/public` bersama sisa `secrets`.

461 462 

462<h4 id="symlinks">463<h4 id="symlinks">

463 Symlink464 Symlink

464</h4>465</h4>

465 466 

466Ketika jalur file yang diminta Claude melewati symlink, pemeriksaan izin mencakup dua jalur: yang diminta Claude dan file yang diselesaikannya. Ini berlaku untuk tautan simbolis di macOS, Linux, dan Windows, dan ke junction direktori di Windows.467Ketika path file yang diminta Claude melewati symlink, pemeriksaan izin mencakup dua path: path yang diminta Claude dan file yang dituju. Ini berlaku untuk tautan simbolis di macOS, Linux, dan Windows, serta untuk directory junction di Windows.

467 468 

468<h5 id="how-rules-match-a-symlinked-path">469<h5 id="how-rules-match-a-symlinked-path">

469 Bagaimana aturan cocok dengan jalur yang disymlink470 Cara aturan mencocokkan path yang melalui symlink

470</h5>471</h5>

471 472 

472Aturan izin dan tolak memperlakukan jalur yang diminta dan file yang diselesaikannya secara berbeda:473Aturan allow dan deny memperlakukan path yang diminta dan file yang dituju secara berbeda:

473 474 

474* **Aturan izin**: berlaku hanya ketika jalur yang diminta dan file yang diselesaikannya cocok. Pembacaan melalui symlink di dalam direktori yang diizinkan yang menunjuk ke luar tidak cocok dengan aturan.475* **Aturan allow**: hanya berlaku ketika path yang diminta dan file yang dituju sama-sama cocok. Pembacaan melalui symlink di dalam direktori yang diizinkan yang mengarah ke luar direktori tersebut tidak cocok dengan aturan.

475* **Aturan tolak**: berlaku ketika jalur yang diminta atau file yang diselesaikannya cocok. Symlink yang menunjuk ke file yang ditolak ditolak sendiri. Misalnya, dengan `Read(./project/**)` diizinkan dan `Read(~/.ssh/**)` ditolak, symlink di `./project/key` menunjuk ke `~/.ssh/id_rsa` diblokir: target gagal aturan izin dan cocok dengan aturan tolak.476* **Aturan deny**: berlaku ketika path yang diminta atau file yang dituju cocok. Symlink yang mengarah ke file yang ditolak juga ditolak. Misalnya, dengan `Read(./project/**)` diizinkan dan `Read(~/.ssh/**)` ditolak, symlink di `./project/key` yang mengarah ke `~/.ssh/id_rsa` diblokir: targetnya gagal memenuhi aturan allow dan cocok dengan aturan deny.

476 477 

477Di macOS dan Linux, aturan tolak atau tanya yang ditulis melalui direktori yang disymlink dengan pola `//`, `~/`, atau `/` juga berlaku di lokasi nyata direktori. Misalnya, di macOS, di mana `/etc` diselesaikan ke `/private/etc`, `Read(//etc/**)` juga memblokir `/private/etc/hosts`. Sebelum v2.1.268, aturan tolak atau tanya yang ditulis melalui direktori yang disymlink tidak berlaku pada jalur yang diberikan oleh lokasi nyatanya.478Di macOS dan Linux, aturan deny atau ask yang ditulis melalui direktori symlink dengan pola `//`, `~/`, atau `/` juga berlaku di lokasi sebenarnya direktori tersebut. Misalnya, di macOS, di mana `/etc` mengarah ke `/private/etc`, `Read(//etc/**)` juga memblokir `/private/etc/hosts`. Sebelum v2.1.268, aturan deny atau ask yang ditulis melalui direktori symlink tidak berlaku untuk path yang diberikan berdasarkan lokasi sebenarnya.

478 479 

479Grep dan Glob mencari direktori yang argumen `path` diselesaikan. Claude Code menerapkan aturan tolak `Read` ke direktori itu.480Grep dan Glob mencari di direktori yang dituju oleh argumen `path`. Claude Code menerapkan aturan deny `Read` ke direktori tersebut.

480 481 

481<h5 id="writes-through-a-symlink">482<h5 id="writes-through-a-symlink">

482 Penulisan melalui symlink483 Penulisan melalui symlink

483</h5>484</h5>

484 485 

485Jika jalur yang diminta Claude untuk diedit atau ditulis adalah symlink itu sendiri, alat Edit dan Write [menolak penulisan dan mengarahkan Claude ke target tautan](/docs/id/errors#refusing-after-a-symlink-changed).486Jika path yang diminta Claude untuk diedit atau ditulis itu sendiri adalah symlink, tool Edit dan Write [menolak penulisan dan mengarahkan Claude ke target tautan tersebut](/docs/id/errors#refusing-after-a-symlink-changed).

486 487 

487Penulisan masih dapat melewati symlink ketika direktori di jalan ke file adalah symlink, atau ketika perintah Bash atau PowerShell melakukan penulisan. Untuk penulisan itu, apa yang terjadi bergantung pada di mana file yang diselesaikan penulisan duduk relatif terhadap [direktori kerja](#working-directories) Anda dan [jalur terlindungi](/docs/id/permission-modes#protected-paths):488Penulisan masih dapat melewati symlink ketika sebuah direktori dalam jalur menuju file adalah symlink, atau ketika perintah Bash atau PowerShell yang melakukan penulisan. Untuk penulisan tersebut, apa yang terjadi bergantung pada posisi file tujuan penulisan relatif terhadap [direktori kerja](#working-directories) Anda dan [path yang dilindungi](/docs/id/permission-modes#protected-paths):

488 489 

489* **Diselesaikan di luar direktori kerja**: ketika jalur yang diminta berada di dalam direktori kerja Anda dan file yang diselesaikannya tidak, penulisan tidak disetujui otomatis dalam [mode `acceptEdits`](/docs/id/permission-modes#auto-approve-file-edits-with-acceptedits-mode). Dalam [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), kecuali aturan izin menyetujui penulisan, Anda diminta untuk itu daripada pengklasifikasi memutuskan. Prompt menamai jalur yang diselesaikan penulisan.490* **Mengarah ke luar direktori kerja**: ketika path yang diminta berada di dalam direktori kerja Anda dan file yang dituju tidak, penulisan tidak disetujui otomatis dalam [mode `acceptEdits`](/docs/id/permission-modes#auto-approve-file-edits-with-acceptedits-mode). Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), kecuali ada aturan allow yang menyetujui penulisan tersebut, Anda akan dimintai persetujuan alih-alih pengklasifikasi yang memutuskan. Permintaan izin menyebutkan path tujuan penulisan.

490* **Diselesaikan ke jalur terlindungi yang tidak dinamai jalur yang diminta**: [tabel jalur terlindungi](/docs/id/permission-modes#protected-paths) memberikan hasil untuk setiap mode izin, kecuali bahwa di mana tabel merutekan penulisan ke pengklasifikasi, penulisan ini meminta Anda sebagai gantinya.491* **Mengarah ke path yang dilindungi yang tidak disebutkan oleh path yang diminta**: [tabel path yang dilindungi](/docs/id/permission-modes#protected-paths) memberikan hasil untuk setiap mode izin, kecuali bahwa ketika tabel mengarahkan penulisan ke pengklasifikasi, penulisan ini justru meminta persetujuan Anda.

491 492 

492<h5 id="paths-that-can’t-be-resolved-or-that-change">493<h5 id="paths-that-can’t-be-resolved-or-that-change">

493 Jalur yang tidak dapat diselesaikan atau yang berubah494 Path yang tidak dapat di-resolve atau yang berubah

494</h5>495</h5>

495 496 

496Ketika Claude Code tidak dapat menentukan di mana jalur mengarah di disk, misalnya karena symlink di atasnya membentuk loop, alat Read, Edit, dan Write [menolak operasi](/docs/id/errors#refusing-after-a-symlink-changed).497Ketika Claude Code tidak dapat menentukan ke mana sebuah path mengarah di disk, misalnya karena symlink di dalamnya membentuk loop, tool Read, Edit, dan Write [menolak operasi tersebut](/docs/id/errors#refusing-after-a-symlink-changed).

497 498 

498Ketika alat kemudian membuka file yang disetujui, itu [mengkonfirmasi bahwa jalur masih diselesaikan ke lokasi yang disetujui pemeriksaan izin](/docs/id/errors#refusing-after-a-symlink-changed).499Ketika sebuah tool kemudian membuka file yang disetujui, tool tersebut [memastikan bahwa path masih mengarah ke lokasi yang disetujui oleh pemeriksaan izin](/docs/id/errors#refusing-after-a-symlink-changed).

499 500 

500<h3 id="webfetch">501<h3 id="webfetch">

501 WebFetch502 WebFetch

502</h3>503</h3>

503 504 

504Aturan WebFetch menggunakan awalan `domain:` dan cocok terhadap nama host URL yang diminta. Pencocokan tidak peka huruf besar-kecil, mendukung wildcard `*`, dan menghilangkan titik di belakang dari baik aturan maupun nama host sehingga `example.com.` dan `example.com` diperlakukan sama.505Aturan WebFetch menggunakan prefiks `domain:` dan dicocokkan dengan hostname dari URL yang diminta. Pencocokan tidak peka huruf besar/kecil, mendukung wildcard `*`, dan menghapus `.` di akhir dari aturan maupun hostname sehingga `example.com.` dan `example.com` diperlakukan sama.

505 506 

506* `WebFetch(domain:example.com)` cocok dengan permintaan ke `example.com`507* `WebFetch(domain:example.com)` cocok dengan permintaan ke `example.com`

507* `WebFetch(domain:*.example.com)` cocok dengan subdomain apa pun di kedalaman apa pun, seperti `api.example.com` atau `a.b.example.com`, tetapi bukan `example.com` itu sendiri508* `WebFetch(domain:*.example.com)` cocok dengan subdomain apa pun di kedalaman mana pun, seperti `api.example.com` atau `a.b.example.com`, tetapi tidak dengan `example.com` itu sendiri

508* `WebFetch(domain:*)` cocok dengan setiap domain. Aturan ini tidak sama dengan aturan `WebFetch` telanjang; lihat [Izinkan atau tolak setiap pengambilan](#allow-or-deny-every-fetch)509* `WebFetch(domain:*)` cocok dengan setiap domain. Ini tidak sama dengan aturan `WebFetch` tanpa argumen; lihat [Mengizinkan atau menolak setiap fetch](#allow-or-deny-every-fetch)

509 510 

510Di posisi apa pun selain `*.` terdepan atau `*` telanjang, wildcard cocok hanya dengan teks antara dua titik. `WebFetch(domain:example.*)` cocok dengan `example.org`, di mana `*` menjadi `org`, tetapi bukan `example.evil.com`, di mana `*` harus menjadi `evil.com` dan menyeberangi titik. Ini menjaga wildcard di belakang dari mencocokkan domain yang dapat didaftarkan penyerang.511Di posisi mana pun selain `*.` di awal atau `*` tunggal, wildcard hanya cocok dengan teks di antara dua titik. `WebFetch(domain:example.*)` cocok dengan `example.org`, di mana `*` menjadi `org`, tetapi tidak dengan `example.evil.com`, di mana `*` harus menjadi `evil.com` dan melintasi titik. Ini mencegah wildcard di akhir mencocokkan domain yang dapat didaftarkan oleh penyerang.

511 512 

512Wildcard dalam aturan `WebFetch` memerlukan Claude Code v2.1.172 atau yang lebih baru untuk mencocokkan pengambilan.513Wildcard dalam aturan `WebFetch` memerlukan Claude Code v2.1.172 atau yang lebih baru untuk mencocokkan fetch.

513 514 

514<h4 id="allow-or-deny-every-fetch">515<h4 id="allow-or-deny-every-fetch">

515 Izinkan atau tolak setiap pengambilan516 Mengizinkan atau menolak setiap fetch

516</h4>517</h4>

517 518 

518Aturan `WebFetch` telanjang adalah nama alat tanpa bagian `domain:`, seperti `"deny": ["WebFetch"]`. Baik itu maupun `WebFetch(domain:*)` mencakup setiap URL, tetapi Claude Code menerapkannya secara berbeda, dan hanya bentuk `domain:` yang juga menambahkan domainnya ke [daftar domain yang diizinkan atau ditolak](/docs/id/sandboxing#network-isolation) sandbox. Bagian itu mencantumkan bentuk wildcard yang dihormati sandbox dan versi yang menambahkan `*` telanjang.519Aturan `WebFetch` tanpa argumen adalah nama tool tanpa bagian `domain:`, seperti `"deny": ["WebFetch"]`. Aturan ini dan `WebFetch(domain:*)` sama-sama mencakup setiap URL, tetapi Claude Code menerapkannya secara berbeda, dan hanya bentuk `domain:` yang juga menambahkan domainnya ke [daftar domain yang diizinkan atau ditolak](/docs/id/sandboxing#network-isolation) milik sandbox. Bagian tersebut mencantumkan bentuk wildcard yang dihormati sandbox dan versi yang menambahkan `*` tunggal.

519 520 

520Setiap baris menunjukkan apa yang dilakukan aturan dalam daftar `allow` dan dalam daftar `deny`:521Setiap baris menunjukkan apa yang dilakukan sebuah aturan dalam daftar `allow` dan dalam daftar `deny`:

521 522 

522| Aturan | Dalam `allow` | Dalam `deny` |523| Aturan | Dalam `allow` | Dalam `deny` |

523| :- | :- | :- |524| :- | :- | :- |

524| `WebFetch` | Claude mengambil tanpa meminta Anda. Tidak mengubah host mana yang dapat dijangkau perintah yang disandbox. | Claude Code menghapus alat `WebFetch`, jadi Claude tidak dapat mengambil sama sekali. Tidak mengubah host mana yang dapat dijangkau perintah yang disandbox. |525| `WebFetch` | Claude melakukan fetch tanpa meminta persetujuan Anda. Tidak mengubah host mana yang dapat dijangkau oleh perintah yang di-sandbox. | Claude Code menghapus tool `WebFetch`, sehingga Claude sama sekali tidak dapat melakukan fetch. Tidak mengubah host mana yang dapat dijangkau oleh perintah yang di-sandbox. |

525| `WebFetch(domain:*)` | Claude mengambil tanpa meminta Anda, dan perintah yang disandbox dapat menjangkau host apa pun. | Claude Code menyimpan alat dan menolak setiap pengambilan, dan perintah yang disandbox tidak dapat menjangkau host apa pun. |526| `WebFetch(domain:*)` | Claude melakukan fetch tanpa meminta persetujuan Anda, dan perintah yang di-sandbox dapat menjangkau host mana pun. | Claude Code mempertahankan tool tersebut dan menolak setiap fetch, dan perintah yang di-sandbox tidak dapat menjangkau host mana pun. |

526 527 

527Dua bentuk juga berbeda pada pembacaan [artefak](/docs/id/artifacts), halaman yang alat Artifact menerbitkan di claude.ai. Aturan tolak atau tanya `WebFetch` telanjang tidak berlaku untuk pembacaan itu. Aturan `domain:` yang mencakup `claude.ai` atau host konten `*.claudeusercontent.com`, seperti `WebFetch(domain:claude.ai)` atau `WebFetch(domain:*)`, menolak setiap pembacaan atau meminta sebelumnya. Aturan [`Artifact`](/docs/id/artifacts#disable-artifacts) melakukan hal yang sama.528Kedua bentuk tersebut juga berbeda dalam hal pembacaan [artifact](/docs/id/artifacts), yaitu halaman yang dipublikasikan oleh tool Artifact di claude.ai. Aturan deny atau ask `WebFetch` tanpa argumen tidak berlaku untuk pembacaan tersebut. Aturan `domain:` yang mencakup `claude.ai` atau host konten `*.claudeusercontent.com`, seperti `WebFetch(domain:claude.ai)` atau `WebFetch(domain:*)`, menolak setiap pembacaan atau meminta persetujuan sebelumnya. [Aturan `Artifact`](/docs/id/artifacts#disable-artifacts) melakukan hal yang sama.

528 529 

529Ketika aturan memblokir pembacaan, penolakan menamai aturan. Sebelum v2.1.268, aturan tolak `WebFetch` telanjang memblokir setiap pembacaan artefak, dan aturan tanya telanjang meminta sebelum setiap pembacaan.530Ketika sebuah aturan memblokir pembacaan, penolakan tersebut menyebutkan aturannya. Sebelum v2.1.268, aturan deny `WebFetch` tanpa argumen memblokir setiap pembacaan artifact, dan aturan ask tanpa argumen meminta persetujuan sebelum setiap pembacaan.

530 531 

531Untuk membiarkan Claude mengambil dengan bebas sambil menjaga daftar izin sandbox seperti apa adanya, gunakan bentuk telanjang. `settings.json` ini melakukan itu:532Untuk membiarkan Claude melakukan fetch dengan bebas sambil mempertahankan allowlist sandbox apa adanya, gunakan bentuk tanpa argumen. `settings.json` berikut melakukan hal tersebut:

532 533 

533```json theme={null}534```json theme={null}

534{535{


538}539}

539```540```

540 541 

541Ketika Anda meminta Claude untuk mengambil halaman, itu mengambil tanpa prompt. Ketika Anda meminta itu menjalankan `curl` [disandbox](/docs/id/sandboxing) terhadap host di luar daftar izin sandbox, Claude Code masih meminta Anda untuk host itu, karena aturan telanjang tidak menambahkan host ke daftar izin.542Ketika Anda meminta Claude untuk melakukan fetch sebuah halaman, Claude melakukannya tanpa permintaan izin. Ketika Anda memintanya menjalankan `curl` yang [di-sandbox](/docs/id/sandboxing) terhadap host di luar allowlist sandbox, Claude Code tetap meminta persetujuan Anda untuk host tersebut, karena aturan tanpa argumen tidak menambahkan host ke allowlist.

542 543 

543Dalam [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), Claude sebagai gantinya menamai host dalam [domain yang diizinkan per perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) perintah untuk pengklasifikasi ditinjau.544Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), Claude justru menyebutkan host tersebut dalam [domain yang diizinkan per perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) milik perintah untuk ditinjau oleh pengklasifikasi.

544 545 

545<h3 id="mcp">546<h3 id="mcp">

546 MCP547 MCP

547</h3>548</h3>

548 549 

549Aturan MCP menggunakan nama server seperti yang dikonfigurasi dalam Claude Code, secara opsional diikuti oleh nama alat dari server itu.550Aturan MCP menggunakan nama server sebagaimana dikonfigurasi di Claude Code, secara opsional diikuti oleh nama tool dari server tersebut.

550 551 

551* `mcp__puppeteer` cocok dengan alat apa pun yang disediakan oleh server `puppeteer`552* `mcp__puppeteer` cocok dengan tool apa pun yang disediakan oleh server `puppeteer`

552* `mcp__puppeteer__*` menggunakan sintaks wildcard dan juga cocok dengan semua alat dari server `puppeteer`553* `mcp__puppeteer__*` menggunakan sintaks wildcard dan juga cocok dengan semua tool dari server `puppeteer`

553* `mcp__puppeteer__puppeteer_navigate` cocok dengan alat `puppeteer_navigate` yang disediakan oleh server `puppeteer`554* `mcp__puppeteer__puppeteer_navigate` cocok dengan tool `puppeteer_navigate` yang disediakan oleh server `puppeteer`

554 555 

555Jika organisasi Anda telah menetapkan alat [konektor claude.ai](/docs/id/mcp#organization-controls-on-connector-tools) ke `ask` dan pengaturan itu mencapai Claude Code dalam sesi Anda, aturan izin untuk alat itu tidak berlaku: Claude Code meminta pada setiap panggilan, bahkan dalam mode `auto` dan `bypassPermissions`. Dalam mode `dontAsk`, yang tidak pernah meminta, Claude Code menolak panggilan sebagai gantinya. Alat dari konektor yang Claude Code ambil sendiri muncul sebagai `mcp__claude_ai_<server>__<tool>`.556Jika organisasi Anda telah menetapkan tool [konektor claude.ai](/docs/id/mcp#organization-controls-on-connector-tools) ke `ask` dan pengaturan tersebut sampai ke Claude Code dalam sesi Anda, aturan allow untuk tool tersebut tidak berlaku: Claude Code meminta persetujuan pada setiap panggilan, bahkan dalam mode `auto` dan `bypassPermissions`. Dalam mode `dontAsk`, yang tidak pernah meminta persetujuan, Claude Code justru menolak panggilan tersebut. Tool dari konektor yang diambil sendiri oleh Claude Code muncul sebagai `mcp__claude_ai_<server>__<tool>`.

556 557 

557Dalam sesi [Cowork](https://claude.com/docs/cowork/overview) di aplikasi Claude Desktop, Claude menjalankan perintah shell melalui alat `mcp__workspace__bash` Cowork daripada alat `Bash` bawaan, dan Cowork juga menyediakan `mcp__workspace__web_fetch` untuk pengambilan web. Claude Code juga menerapkan aturan tolak yang menamai seluruh alat `Bash` atau `WebFetch` ke alat Cowork ini, jadi aturan tolak `Bash` terkelola menghentikan Claude dari menjalankan perintah shell dalam Cowork. Ketika Claude Code memblokir panggilan seperti itu, pesan menamai alat Cowork: `Permission to use mcp__workspace__bash has been denied.` Aturan izin tidak terbawa: Claude Code tidak pernah menerapkan aturan izin `Bash` ke `mcp__workspace__bash`.558Dalam sesi [Cowork](https://claude.com/docs/cowork/overview) di aplikasi Claude Desktop, Claude menjalankan perintah shell melalui tool `mcp__workspace__bash` milik Cowork alih-alih tool `Bash` bawaan, dan Cowork juga menyediakan `mcp__workspace__web_fetch` untuk fetch web. Claude Code juga menerapkan aturan deny yang menyebutkan seluruh tool `Bash` atau `WebFetch` ke tool Cowork ini, sehingga aturan deny `Bash` yang terkelola menghentikan Claude dari menjalankan perintah shell di Cowork. Ketika Claude Code memblokir panggilan semacam itu, pesannya menyebutkan tool Cowork: `Permission to use mcp__workspace__bash has been denied.` Aturan allow tidak terbawa: Claude Code tidak pernah menerapkan aturan allow `Bash` ke `mcp__workspace__bash`.

558 559 

559<h3 id="agent-subagents">560<h3 id="agent-subagents">

560 Agent (subagent)561 Agent (subagent)


566* `Agent(Plan)` cocok dengan subagent Plan567* `Agent(Plan)` cocok dengan subagent Plan

567* `Agent(my-custom-agent)` cocok dengan subagent kustom bernama `my-custom-agent`568* `Agent(my-custom-agent)` cocok dengan subagent kustom bernama `my-custom-agent`

568 569 

569Tambahkan aturan-aturan ini ke array `deny` dalam pengaturan Anda atau gunakan flag CLI `--disallowedTools` untuk menonaktifkan agen spesifik. Untuk menonaktifkan agen Explore:570Tambahkan aturan ini ke array `deny` dalam pengaturan Anda atau gunakan flag CLI `--disallowedTools` untuk menonaktifkan agent tertentu. Untuk menonaktifkan agent Explore:

570 571 

571```json theme={null}572```json theme={null}

572{573{


580 Cd581 Cd

581</h3>582</h3>

582 583 

583Aturan `Cd` mengontrol direktori mana yang dapat dipindahkan sesi oleh perintah [`/cd`](/docs/id/commands). `Cd` bukan alat yang dapat dipanggil model: Claude tidak dapat memanggilnya, dan aturan berlaku hanya ketika Anda menjalankan `/cd` sendiri.584Aturan `Cd` mengontrol direktori mana yang dapat menjadi tujuan perpindahan sesi oleh [perintah `/cd`](/docs/id/commands). `Cd` bukan tool yang dapat dipanggil model: Claude tidak dapat memanggilnya, dan aturan ini hanya berlaku ketika Anda menjalankan `/cd` sendiri.

584 585 

585Aturan tolak `Cd` telanjang menonaktifkan `/cd` sepenuhnya. Aturan tolak `Cd(<path-pattern>)` memblokir target yang cocok. Aturan tolak memeriksa setiap ejaan target, termasuk setiap lompatan symlink yang diselesaikannya, jadi aturan yang ditulis untuk satu jalur juga memblokir target yang diselesaikan ke itu.586Aturan deny `Cd` tanpa argumen menonaktifkan `/cd` sepenuhnya. Aturan deny `Cd(<path-pattern>)` memblokir target yang cocok. Aturan deny memeriksa setiap ejaan target, termasuk setiap lompatan symlink yang dilaluinya, sehingga aturan yang ditulis untuk satu path juga memblokir target yang mengarah ke path tersebut.

586 587 

587Menambahkan aturan izin `Cd` apa pun beralih `/cd` ke mode daftar izin: direktori target yang diselesaikan harus cocok dengan salah satu aturan izin Anda, atau `/cd` menolak. Tanpa aturan `Cd` yang dikonfigurasi, `/cd` menyimpan perilaku defaultnya dan meminta Anda untuk mempercayai direktori yang tidak dikenal.588Menambahkan aturan allow `Cd` apa pun mengalihkan `/cd` ke mode allowlist: direktori target yang telah di-resolve harus cocok dengan salah satu aturan allow Anda, atau `/cd` menolak. Tanpa aturan `Cd` yang dikonfigurasi, `/cd` mempertahankan perilaku default-nya dan meminta Anda untuk memercayai direktori yang belum dikenal.

588 589 

589Pola jalur berbagi jangkar `//`, `~/`, dan `/` dari [aturan Read dan Edit](#read-and-edit), tetapi pencocokan berlabuh ke seluruh jalur direktori daripada gaya gitignore. `*` cocok dengan tepat satu segmen jalur dan `**` cocok di seluruh segmen. `/**` di belakang juga cocok dengan akar yang dinamainya.590Pola path menggunakan jangkar `//`, `~/`, dan `/` yang sama dengan [aturan Read dan Edit](#read-and-edit), tetapi pencocokan berjangkar pada seluruh path direktori, bukan bergaya gitignore. `*` cocok dengan tepat satu segmen path dan `**` cocok lintas segmen. `/**` di akhir juga cocok dengan root yang disebutkannya.

590 591 

591| Aturan | Cocok | Tidak cocok |592| Aturan | Cocok dengan | Tidak cocok dengan |

592| - | - | - |593| - | - | - |

593| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |594| `Cd(~/code/*)` | `~/code/app` | `~/code/app/src`, `~/code` |

594| `Cd(~/code/**)` | `~/code` dan direktori apa pun di bawahnya | direktori di luar `~/code` |595| `Cd(~/code/**)` | `~/code` dan direktori apa pun di bawahnya | direktori di luar `~/code` |

595| `Cd(**/node_modules)` | direktori `node_modules` apa pun di kedalaman apa pun di bawah direktori saat ini | `node_modules/pkg` |596| `Cd(**/node_modules)` | direktori `node_modules` apa pun di kedalaman mana pun di bawah direktori saat ini | `node_modules/pkg` |

596 597 

597<h2 id="extend-permissions-with-hooks">598<h2 id="extend-permissions-with-hooks">

598 Perluas izin dengan hook599 Perluas izin dengan hook

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Marketplace Anthropic

6 

7> Marketplace plugin resmi, komunitas, dan demo dari Anthropic untuk Claude Code: nama, repositori, cara menambahkan masing-masing, dan tempat menelusuri plugin-pluginnya.

8 

9Anthropic menerbitkan tiga marketplace plugin serbaguna untuk Claude Code: [resmi](https://github.com/anthropics/claude-plugins-official), [komunitas](https://github.com/anthropics/claude-plugins-community), dan [demo](https://github.com/anthropics/claude-code). Masing-masing adalah katalog plugin di repositori GitHub-nya sendiri. Saat Anda menginstal plugin dari salah satunya dalam sesi Claude Code, Anda mengetikkan nama marketplace setelah `@`, seperti pada `/plugin install commit-commands@claude-plugins-official`.

10 

11Gunakan halaman ini untuk membedakan ketiga marketplace tersebut dan untuk menemukan tempat memeriksa apakah marketplace resmi memuat plugin tertentu.

12 

13<Note>

14 Kasus-kasus berikut dibahas di halaman lain:

15 

16 * **Cara menginstal plugin**: lihat [Instal plugin](/docs/id/plugins/install)

17 * **Instalasi yang gagal**: lihat [Pemecahan masalah plugin](/docs/id/plugins/troubleshooting)

18</Note>

19 

20Buka bagian halaman yang Anda perlukan:

21 

22* Untuk membedakan ketiga marketplace berdasarkan repositori, nama marketplace, dan cara mendapatkan masing-masing, lihat [Marketplace Anthropic](#anthropic’s-marketplaces).

23* Untuk menemukan plugin di marketplace resmi, lihat [Temukan plugin di marketplace resmi](#find-plugins-in-the-official-marketplace).

24 

25<h2 id="anthropic’s-marketplaces">

26 Marketplace Anthropic

27</h2>

28 

29Marketplace adalah katalog plugin yang didefinisikan oleh sebuah repositori dalam file `.claude-plugin/marketplace.json`-nya. Marketplace resmi, komunitas, dan demo masing-masing berasal dari repositori GitHub-nya sendiri. Anthropic juga menerbitkan marketplace khusus topik, seperti `anthropics/skills` dan `anthropics/knowledge-work-plugins`, yang Anda tambahkan dalam sesi Claude Code dengan `/plugin marketplace add <owner>/<repo>`.

30 

31Tabel ini mencantumkan repositori dan nama marketplace masing-masing, yaitu yang Anda ketikkan setelah `@` saat menginstal plugin dari marketplace tersebut. Nama marketplace komunitas adalah `claude-community`, bukan nama repositorinya.

32 

33| | Resmi | Komunitas | Demo |

34| :- | :- | :- | :- |

35| Repositori | [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official) | [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) | [`anthropics/claude-code`](https://github.com/anthropics/claude-code/tree/main/plugins) |

36| Nama marketplace | `claude-plugins-official` | `claude-community` | `claude-code-plugins` |

37| Isinya | Plugin yang dikelola Anthropic, ditambah plugin dari mitra dan penulis lain | Plugin pihak ketiga yang diajukan oleh penulisnya kepada Anthropic | Sekumpulan kecil contoh plugin yang menunjukkan apa saja yang dapat dimuat sebuah plugin |

38| Cara mendapatkannya | Claude Code menambahkannya saat pertama kali Anda memulai sesi terminal interaktif, kecuali [kebijakan terkelola](/docs/id/plugins/org#allow-the-official-marketplace-and-your-own) atau `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL` memblokirnya. Lihat [Marketplace `claude-plugins-official` tidak ditemukan](/docs/id/plugins/troubleshooting#marketplace-claude-plugins-official-not-found) jika marketplace ini tidak ada | Anda menambahkannya dalam sesi Claude Code dengan `/plugin marketplace add anthropics/claude-plugins-community` | Anda menambahkannya dalam sesi Claude Code dengan `/plugin marketplace add anthropics/claude-code` |

39 

40Jika Anda menulis plugin dan ingin orang lain menginstalnya, lihat [Terbitkan plugin](/docs/id/plugins/publish), yang membahas marketplace Anda sendiri dan pengajuan ke direktori Anthropic.

41 

42<h3 id="the-demo-marketplace-in-anthropics/claude-code">

43 Marketplace demo di `anthropics/claude-code`

44</h3>

45 

46Jika sebuah tutorial atau serangkaian instruksi lama meminta Anda menjalankan `/plugin marketplace add anthropics/claude-code`, perintah itu menambahkan marketplace demo, yang bernama `claude-code-plugins`. Itu bukan marketplace resmi.

47 

48Sebagian besar plugin di marketplace demo juga ada di marketplace resmi dengan nama yang sama. Misalnya, `code-review`, `feature-dev`, `commit-commands`, dan `security-guidance` ada di keduanya. Instal plugin-plugin tersebut dari `claude-plugins-official` agar Anda tidak memiliki dua salinan yang terinstal.

49 

50<h2 id="find-plugins-in-the-official-marketplace">

51 Temukan plugin di marketplace resmi

52</h2>

53 

54Secara default, Claude Code menambahkan marketplace resmi, `claude-plugins-official`, untuk Anda. Sebagian besar yang tercantum di dalamnya berasal dari mitra dan penulis lain, bukan dari Anthropic: vendor tool menerbitkan plugin yang menghubungkan Claude Code ke layanan mereka, dan Anthropic mengelola sekumpulan kecil plugin miliknya sendiri, seperti `commit-commands`, `code-review`, `feature-dev`, dan [plugin language server](/docs/id/plugins/code-intelligence). Katalognya sering berubah, sehingga halaman ini tidak mencantumkannya.

55 

56Untuk melihat isinya, gunakan tab **Discover** pada `/plugin` dalam sesi Claude Code, yang dapat Anda cari, atau telusuri [Claude Marketplace](https://claude.com/marketplace/plugins) di web.

57 

58<h2 id="browse-and-install-from-anthropic’s-marketplaces">

59 Telusuri dan instal dari marketplace Anthropic

60</h2>

61 

62Anda dapat mencari plugin di marketplace Anthropic melalui Claude Code, web, atau GitHub:

63 

64* **Di Claude Code, dengan menelusuri**: jalankan `/plugin` dalam sesi interaktif. Tab **Discover**-nya mencantumkan plugin dari marketplace Anda.

65* **Di Claude Code, berdasarkan nama**: jalankan `/plugin install <name>` dalam sesi, yang mencari nama tersebut di marketplace Anda. Jika plugin ada di salah satunya, detailnya terbuka di panel `/plugin`, dan tidak ada yang terinstal sampai Anda memilih [cakupan instalasi](/docs/id/plugins/install#install-a-plugin) dan mengonfirmasi di sana. Jika tidak ada, Anda akan melihat `Plugin "<name>" not found in any marketplace`.

66* **Di web**: cari katalog lengkap di [Claude Marketplace](https://claude.com/marketplace/plugins), yang menampilkan jumlah instalasi dan menandai beberapa plugin sebagai **Anthropic verified**.

67* **Di GitHub**: buka `.claude-plugin/marketplace.json` di repositori marketplace, seperti [`anthropics/claude-plugins-official`](https://github.com/anthropics/claude-plugins-official). File tersebut adalah katalog itu sendiri.

68 

69Direktori Anthropic terpisah dari marketplace-marketplace ini. Direktori adalah katalog di claude.ai. Plugin yang Anda tambahkan dari direktori di claude.ai sampai ke Claude Code melalui [sinkronisasi akun](/docs/id/plugins/loading#synced-plugins). Untuk mencantumkan plugin Anda sendiri di sana, lihat [Ajukan ke direktori Anthropic](/docs/id/plugins/publish#submit-to-anthropics-directory).

70 

71Untuk menginstal dari aplikasi desktop atau dari skrip, atau untuk melihat apa yang dimuat oleh sesi cloud, lihat [Instal plugin](/docs/id/plugins/install).

72 

73<h3 id="add-the-community-or-demo-marketplace">

74 Tambahkan marketplace komunitas atau demo

75</h3>

76 

77Marketplace komunitas dan demo tidak terdaftar sampai Anda menambahkannya dalam sesi Claude Code:

78 

79* **Komunitas**: jalankan `/plugin marketplace add anthropics/claude-plugins-community`, lalu instal dengan sufiks `@claude-community`.

80* **Demo**: jalankan `/plugin marketplace add anthropics/claude-code`, lalu instal dengan sufiks `@claude-code-plugins`.

81 

82Jika `claude-plugins-official` tidak ada di tab **Marketplaces** pada `/plugin`, tambahkan dengan cara yang sama menggunakan `/plugin marketplace add anthropics/claude-plugins-official`.

83 

84Untuk error `not found` dan marketplace yang tidak dapat ditambahkan, lihat [Pemecahan masalah plugin](/docs/id/plugins/troubleshooting#install-a-plugin).

85 

86<h2 id="third-party-marketplaces">

87 Marketplace pihak ketiga

88</h2>

89 

90Banyak plugin populer tidak ada di marketplace Anthropic mana pun. Plugin-plugin tersebut berada di marketplace milik penulisnya sendiri, biasanya berupa repositori GitHub dengan `.claude-plugin/marketplace.json` di root-nya.

91 

92Anthropic tidak meninjau marketplace pihak ketiga, jadi baca [Keamanan dan kepercayaan plugin](/docs/id/plugins/security) sebelum Anda menambahkannya.

93 

94Untuk menggunakan marketplace pihak ketiga, tambahkan repositorinya dalam sesi Claude Code dengan `/plugin marketplace add <owner>/<repo>`, lalu instal dengan `/plugin install <plugin>@<marketplace-name>`. Nama marketplace adalah field `name` pada `marketplace.json` tersebut, dan Claude Code menampilkannya setelah marketplace berhasil ditambahkan.

95 

96Untuk cara lain menambahkan marketplace, lihat [Tambahkan marketplace](/docs/id/plugins/install#add-a-marketplace).

97 

98<h2 id="next-steps">

99 Langkah selanjutnya

100</h2>

101 

102* [Instal dan kelola plugin](/docs/id/plugins/install): instal plugin dari salah satu marketplace ini dan pilih cakupan

103* [Keamanan dan kepercayaan plugin](/docs/id/plugins/security): apa yang dapat dilakukan plugin di mesin Anda dan cara meninjaunya sebelum Anda menginstalnya

104* [Plugin code intelligence](/docs/id/plugins/code-intelligence): instal salah satu plugin language server dari marketplace resmi

105* [Buat marketplace](/docs/id/plugins/create-marketplace): jalankan marketplace Anda sendiri berdampingan dengan milik Anthropic

Details

88| :- | :- |88| :- | :- |

89| `-s, --scope <scope>` | Cakupan instalasi: `user`, `project`, atau `local`. Default ke `user` |89| `-s, --scope <scope>` | Cakupan instalasi: `user`, `project`, atau `local`. Default ke `user` |

90| `--config <key=value>` | Tetapkan opsi [`userConfig`](/docs/id/plugins/manifest-reference) yang dideklarasikan manifest plugin. Ulangi flag untuk setiap opsi. Memerlukan Claude Code v2.1.147 atau lebih baru. Kunci yang ditulis `<server>.<key>` menetapkan pengaturan yang dideklarasikan [server MCP yang dibundel](/docs/id/plugins/components#include-a-packaged-mcpb-server) dalam `user_config`-nya sendiri, untuk file bundle yang dikirim di dalam plugin. Bentuk `<server>.<key>` memerlukan Claude Code v2.1.285 atau lebih baru |90| `--config <key=value>` | Tetapkan opsi [`userConfig`](/docs/id/plugins/manifest-reference) yang dideklarasikan manifest plugin. Ulangi flag untuk setiap opsi. Memerlukan Claude Code v2.1.147 atau lebih baru. Kunci yang ditulis `<server>.<key>` menetapkan pengaturan yang dideklarasikan [server MCP yang dibundel](/docs/id/plugins/components#include-a-packaged-mcpb-server) dalam `user_config`-nya sendiri, untuk file bundle yang dikirim di dalam plugin. Bentuk `<server>.<key>` memerlukan Claude Code v2.1.285 atau lebih baru |

91| `-y, --yes` | Terima perintah instal yang ditampilkan tanpa prompt `Run this command now?`. Diabaikan ketika perintah berjalan di dalam sesi Claude Code, seperti dari alat Bash atau hook. Memerlukan Claude Code v2.1.229 atau lebih baru |91| `-y, --yes` | Terima perintah instal yang ditampilkan tanpa prompt `Run this command now?`. Diabaikan ketika perintah berjalan di dalam sesi Claude Code, seperti dari tool Bash atau hook. Memerlukan Claude Code v2.1.229 atau lebih baru |

92| `--accept-command <sha256>` | Terima perintah instal yang ditampilkan yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Lihat [Terima perintah instal yang ditampilkan](#accept-a-displayed-install-command). Memerlukan Claude Code v2.1.271 atau lebih baru |92| `--accept-command <sha256>` | Terima perintah instal yang ditampilkan yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Lihat [Terima perintah instal yang ditampilkan](#accept-a-displayed-install-command). Memerlukan Claude Code v2.1.271 atau lebih baru |

93| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [Format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |93| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [Format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |

94 94 


97Lewatkan `-y` dari terminal Anda sendiri untuk menerima perintah yang ditampilkan tanpa prompt. Berikut yang terjadi tanpa TTY dan ketika Claude menjalankan perintah:97Lewatkan `-y` dari terminal Anda sendiri untuk menerima perintah yang ditampilkan tanpa prompt. Berikut yang terjadi tanpa TTY dan ketika Claude menjalankan perintah:

98 98 

99* **stdin atau stdout bukan TTY, dan Anda tidak melewatkan `-y` atau `--accept-command`**: instalasi ditolak. Output mengatakan perintah hanya ditampilkan, dan kode keluar adalah `1`99* **stdin atau stdout bukan TTY, dan Anda tidak melewatkan `-y` atau `--accept-command`**: instalasi ditolak. Output mengatakan perintah hanya ditampilkan, dan kode keluar adalah `1`

100* **Claude menjalankan perintah melalui alat Bash-nya**: `-y` diabaikan. Jalankan perintah dari terminal Anda sendiri100* **Claude menjalankan perintah melalui tool Bash-nya**: `-y` diabaikan. Jalankan perintah dari terminal Anda sendiri

101 101 

102Instal plugin untuk semua orang yang mengkloning proyek:102Instal plugin untuk semua orang yang mengkloning proyek:

103 103 


125 125 

126Field lain, seperti `pluginId`, `scope`, dan `failureCode`, muncul hanya ketika berlaku.126Field lain, seperti `pluginId`, `scope`, dan `failureCode`, muncul hanya ketika berlaku.

127 127 

128Opsi `--json` pada `plugin uninstall`, `plugin update`, `plugin enable`, dan `plugin disable` mencetak objek yang sama dengan field milik subperintah tersebut.

129 

128Kesalahan penggunaan, seperti `--scope` yang tidak valid, tidak mencetak baris hasil dan keluar `1` dengan alasan di stderr.130Kesalahan penggunaan, seperti `--scope` yang tidak valid, tidak mencetak baris hasil dan keluar `1` dengan alasan di stderr.

129 131 

130<h4 id="accept-a-displayed-install-command">132<h4 id="accept-a-displayed-install-command">


462* Plugin yang diinstal sebagai `name` atau `name@marketplace`464* Plugin yang diinstal sebagai `name` atau `name@marketplace`

463* `name@skills-dir`465* `name@skills-dir`

464 466 

465Letakkan target sebelum `--tag`, `--allow-tools`, dan `--json`. Setiap opsi ini mengambil kata-kata yang mengikutinya sebagai nilainya, jadi target yang ditulis setelah salah satu dari mereka dibaca sebagai tag, nama alat, atau jalur output JSON alih-alih sebagai target.467Letakkan target sebelum `--tag`, `--allow-tools`, dan `--json`. Setiap opsi ini mengambil kata-kata yang mengikutinya sebagai nilainya, jadi target yang ditulis setelah salah satu dari mereka dibaca sebagai tag, nama tool, atau jalur output JSON alih-alih sebagai target.

466 468 

467Tabel ini mencantumkan opsi yang paling banyak digunakan run. Jalankan `claude plugin eval --help` untuk set lengkap, termasuk `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, dan `--verbose`.469Tabel ini mencantumkan opsi yang paling banyak digunakan run. Jalankan `claude plugin eval --help` untuk set lengkap, termasuk `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, dan `--verbose`.

468 470 

469| Opsi | Deskripsi | Default |471| Opsi | Deskripsi | Default |

470| :- | :- | :- |472| :- | :- | :- |

471| `--runs <n>` | Berjalan per kasus di setiap [arm](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | `runs` setiap kasus, atau 3 |473| `--runs <n>` | Berjalan per kasus di setiap [arm](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | `runs` setiap kasus, atau 3 |

472| `-j, --concurrency <n>` | Sesi agen untuk dijalankan sekaligus, 1 hingga 8. Mereka berbagi batas laju Anda | `1` |474| `-j, --concurrency <n>` | Sesi agent untuk dijalankan sekaligus, 1 hingga 8. Mereka berbagi rate limit Anda | `1` |

473| `--model <model>` | Model untuk agen di bawah pengujian | `model` setiap kasus, atau `ANTHROPIC_MODEL` jika diatur, atau default Claude Code |475| `--model <model>` | Model untuk agent di bawah pengujian | `model` setiap kasus, atau `ANTHROPIC_MODEL` jika diatur, atau default Claude Code |

474| `--judge-model <model>` | Model untuk grader `llm` dan `baseline` | Model kecil cepat |476| `--judge-model <model>` | Model untuk grader `llm` dan `baseline` | Model kecil cepat |

475| `--ablation <mode>` | `none` atau `with-without`. Lihat [Bandingkan dengan baseline tanpa plugin](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | Diputuskan per kasus, seperti bagian itu menjelaskan |477| `--ablation <mode>` | `none` atau `with-without`. Lihat [Bandingkan dengan baseline tanpa plugin](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | Diputuskan per kasus, seperti bagian itu menjelaskan |

476| `--threshold <0..1>` | Keluar 1 jika kasus apa pun mencetak di bawah ini | `1.0` |478| `--threshold <0..1>` | Keluar 1 jika kasus apa pun mencetak di bawah ini | `1.0` |

477| `--max-cost-usd <usd>` | Berhenti sebelum run berikutnya setelah pengeluaran mencapai ini, keluar 2, dan laporkan hasil parsial | Tidak ada batas |479| `--max-cost-usd <usd>` | Berhenti sebelum run berikutnya setelah pengeluaran mencapai ini, keluar 2, dan laporkan hasil parsial | Tidak ada batas |

478| `--allow-tools <tools...>` | Berikan alat di luar set hanya baca, seperti `Bash`, `Write`, `Edit`, atau `"mcp__plugin_<plugin>_<server>__*"`. Lihat [Berikan alat](/docs/id/plugin-evals#grant-tools) | |480| `--allow-tools <tools...>` | Berikan tool di luar set read-only, seperti `Bash`, `Write`, `Edit`, atau `"mcp__plugin_<plugin>_<server>__*"`. Lihat [Berikan tool](/docs/id/plugin-evals#grant-tools) | |

479| `--scaffold` | Jalankan [`scaffold_script`](/docs/id/plugin-evals#add-setup-or-history-with-case-yaml) setiap kasus | Mati |481| `--scaffold` | Jalankan [`scaffold_script`](/docs/id/plugin-evals#add-setup-or-history-with-case-yaml) setiap kasus | Mati |

480| `--trust-plugin` | Lewati prompt kepercayaan run pertama, untuk CI. Lihat [Apa yang dapat diakses run](/docs/id/plugin-evals#security) | Mati |482| `--trust-plugin` | Lewati prompt kepercayaan run pertama, untuk CI. Lihat [Apa yang dapat diakses run](/docs/id/plugin-evals#security) | Mati |

481| `--mocks <mode>` | `record` atau `off`. Lihat [Mock server MCP](/docs/id/plugin-evals#mock-mcp-servers) | `record` |483| `--mocks <mode>` | `record` atau `off`. Lihat [Mock server MCP](/docs/id/plugin-evals#mock-mcp-servers) | `record` |


569* Tag sudah ada571* Tag sudah ada

570* Pohon kerja kotor572* Pohon kerja kotor

571 573 

574<h3 id="plugin-test">

575 plugin test

576</h3>

577 

578Jalankan pengujian untuk [mod](/docs/id/plugins/mods/overview), yaitu plugin yang kodenya mendaftarkan handler peristiwa. Perintah ini tidak memerlukan sesi, proses masuk, atau jaringan. Untuk cara menulis pengujian, lihat [Uji mod](/docs/id/plugins/mods/test).

579 

580```bash theme={null}

581claude plugin test [directory]

582```

583 

584`[directory]` adalah direktori mod, default ke direktori saat ini. Perintah menjalankan setiap file di bawahnya yang namanya berakhiran `.test.ts` atau `.test.tsx`, dan keluar dengan status 1 ketika ada pengujian yang gagal.

585 

586Jalankan pengujian untuk mod di `./first-mod`:

587 

588```bash theme={null}

589claude plugin test ./first-mod

590```

591 

572<h3 id="plugin-validate">592<h3 id="plugin-validate">

573 plugin validate593 plugin validate

574</h3>594</h3>


613 633 

614* **`SKILL.md` di root plugin**: ketika Anda menjalankan `claude plugin validate` terhadap direktori plugin, Claude Code tidak memeriksa `SKILL.md` di root plugin634* **`SKILL.md` di root plugin**: ketika Anda menjalankan `claude plugin validate` terhadap direktori plugin, Claude Code tidak memeriksa `SKILL.md` di root plugin

615* **`CLAUDE.md` di root plugin**: dalam run plugin, Claude Code juga memperingatkan tentang `CLAUDE.md` di root plugin635* **`CLAUDE.md` di root plugin**: dalam run plugin, Claude Code juga memperingatkan tentang `CLAUDE.md` di root plugin

616* **File plugin dalam run marketplace**: dari direktori marketplace, Claude Code tidak membuka file skill, agent, command, atau hook plugin. Untuk menemukan kesalahan di file itu, validasi setiap direktori plugin636* **File plugin dalam run marketplace**: dari direktori marketplace, Claude Code tidak membuka file skill, agent, command, atau hook plugin, maupun file server MCP yang dibundelnya. Untuk menemukan kesalahan di file itu, validasi setiap direktori plugin

617 637 

618<h4 id="output-and-exit-codes">638<h4 id="output-and-exit-codes">

619 Output dan kode keluar639 Output dan kode keluar


802 822 

803`<plugin>` adalah plugin `name` atau `name@marketplace`.823`<plugin>` adalah plugin `name` atau `name@marketplace`.

804 824 

805Tabel di bawah mencantumkan setiap bentuk sesi. Subperintah shell `init`, `update`, `details`, `prune`, `eval`, dan `eval init` tidak memiliki bentuk sesi.825Tabel di bawah mencantumkan setiap bentuk sesi. Subperintah shell `init`, `update`, `details`, `prune`, `eval`, `eval init`, dan `test` tidak memiliki bentuk sesi.

806 826 

807| Perintah | Alias | Apa yang dilakukan |827| Perintah | Alias | Apa yang dilakukan |

808| :- | :- | :- |828| :- | :- | :- |

Details

435 435 

436<PluginExplorer>436<PluginExplorer>

437 <Piece id="manifest">437 <Piece id="manifest">

438 [Manifest](/docs/id/plugins/manifest-reference) adalah file `plugin.json` di direktori `.claude-plugin/` plugin. Ini berisi metadata plugin dan nilai `userConfig` yang diminta Claude Code kepada pengguna. Claude Code memuat plugin tanpa satu, tetapi [direktori Anthropic](/docs/id/plugins/publish#submit-to-anthropics-directory) memerlukan satu. Di dalam file, hanya `name` yang diperlukan. Di sini, `description` adalah teks yang dilihat pengguna untuk plugin di `/plugin`, dan `version` membuat pengguna tetap pada versi itu sampai Anda mengubahnya:438 [Manifest](/docs/id/plugins/manifest-reference) adalah file `plugin.json` di direktori `.claude-plugin/` plugin. Ini berisi metadata plugin dan nilai `userConfig` yang diminta Claude Code kepada pengguna. Claude Code tetap memuat plugin tanpa file ini. Di dalam file, hanya `name` yang diperlukan. Di sini, `description` adalah teks yang dilihat pengguna untuk plugin di `/plugin`, dan `version` membuat pengguna tetap pada versi itu sampai Anda mengubahnya:

439 439 

440 ```json theme={null}440 ```json theme={null}

441 {441 {

Details

130* `source`: tempat Claude Code mengambil plugin. Tulis string jalur relatif untuk plugin di dalam direktori marketplace, seperti dalam [panduan walkthrough](#create-a-marketplace), atau objek sumber untuk plugin di luar. Lihat [Pilih sumber plugin](#choose-a-plugin-source).130* `source`: tempat Claude Code mengambil plugin. Tulis string jalur relatif untuk plugin di dalam direktori marketplace, seperti dalam [panduan walkthrough](#create-a-marketplace), atau objek sumber untuk plugin di luar. Lihat [Pilih sumber plugin](#choose-a-plugin-source).

131* `description`: baris yang dilihat orang di sebelah plugin saat mereka menjelajahi marketplace Anda di `/plugin`.131* `description`: baris yang dilihat orang di sebelah plugin saat mereka menjelajahi marketplace Anda di `/plugin`.

132 132 

133Untuk daftar bidang lengkap, lihat [Entri plugin](/docs/id/plugins/marketplace-reference#plugin-entries).133Untuk daftar bidang lengkap, lihat [Entri plugin](/docs/id/plugins/marketplace-reference#plugin-entries), yang juga mencakup bidang [`plugin.json`](/docs/id/plugins/manifest-reference) yang dapat ditetapkan oleh entri dan kapan bidang tersebut berlaku.

134 

135Entri juga dapat menetapkan bidang [`plugin.json`](/docs/id/plugins/manifest-reference) apa pun. Untuk kapan bidang `plugin.json` entri berlaku untuk plugin yang memiliki `plugin.json`-nya sendiri, lihat [Entri dan plugin.json](/docs/id/plugins/marketplace-reference#entry-and-plugin-json).

136 134 

137<h2 id="rules-for-plugin-entries">135<h2 id="rules-for-plugin-entries">

138 Aturan untuk entri plugin136 Aturan untuk entri plugin

plugins/loading.md +20 −14

Details

244 Kapan dependency install berjalan244 Kapan dependency install berjalan

245</h4>245</h4>

246 246 

247Claude Code menjalankan instalasi di dalam direktori versi yang disalin setiap kali membuat satu:247Claude Code menginstal dependensi ke dalam direktori versi yang disalin setiap kali membuatnya:

248 248 

249* Ketika Anda menginstal plugin249* Ketika Anda menginstal plugin

250* Ketika Claude Code memperbarui plugin ke versi baru250* Ketika Claude Code memperbarui plugin ke versi baru


252 252 

253Untuk plugin dengan path relatif [dimuat di tempat](#in-place-and-copied-plugins) dari marketplace direktori lokal, Claude Code tidak menginstal dependensi ke dalam direktori sumber. Instal mereka di sana sendiri, atau dari hook ke [`${CLAUDE_PLUGIN_DATA}`](/docs/id/plugins/components#path-variables-and-persistent-data).253Untuk plugin dengan path relatif [dimuat di tempat](#in-place-and-copied-plugins) dari marketplace direktori lokal, Claude Code tidak menginstal dependensi ke dalam direktori sumber. Instal mereka di sana sendiri, atau dari hook ke [`${CLAUDE_PLUGIN_DATA}`](/docs/id/plugins/components#path-variables-and-persistent-data).

254 254 

255Instalasi hanya berjalan ketika direktori root plugin berisi baik `package.json` maupun lockfile yang didukung. Lockfile menentukan perintah mana yang Claude Code jalankan:255Instalasi hanya berjalan ketika direktori root plugin berisi baik `package.json` maupun lockfile yang didukung.

256 256 

257| Lockfile | Perintah |257Lockfile menentukan package manager mana yang Claude Code jalankan:

258 

259| Lockfile | Package manager |

258| :- | :- |260| :- | :- |

259| `bun.lock` atau `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |261| `bun.lock` | Bun |

260| `npm-shrinkwrap.json` atau `package-lock.json` | `npm ci --ignore-scripts` |262| `npm-shrinkwrap.json` atau `package-lock.json` | npm |

261 263 

262Jika plugin berisi lebih dari satu lockfile ini, Claude Code menggunakan kecocokan pertama, memeriksa dalam urutan: `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.264Jika plugin berisi lebih dari satu lockfile ini, Claude Code menggunakan kecocokan pertama, memeriksa dalam urutan: `bun.lock`, `npm-shrinkwrap.json`, `package-lock.json`.

263 265 

264Claude Code melewati instalasi untuk lockfile Yarn dan pnpm dan untuk `bunfig.toml` di samping lockfile Bun:266Claude Code melewati instalasi dalam kasus lockfile berikut:

265 267 

266* Jika plugin Anda hanya memiliki `yarn.lock` atau `pnpm-lock.yaml`, gantikan dengan lockfile npm268* **`bun.lockb`**: lockfile biner Bun tidak dapat diperiksa. Sertakan `bun.lock` berbentuk teks atau lockfile npm sebagai gantinya

267* Jika `bunfig.toml` berada di direktori yang sama dengan lockfile Bun, hapus `bunfig.toml`, atau gantikan lockfile Bun dengan lockfile npm269* **`yarn.lock` atau `pnpm-lock.yaml`**: gantikan dengan lockfile npm

270* **Lockfile dalam format yang tidak dibaca Claude Code**: lockfile npm memerlukan `lockfileVersion` bernilai `2` atau `3`, yang ditulis oleh npm 7 atau lebih baru, dan `bun.lock` memerlukan `lockfileVersion` yang tidak lebih tinggi dari `2`

268 271 

269Sertakan lockfile npm untuk menjangkau pengguna paling banyak. Claude Code menjalankan package manager lockfile yang cocok dari PATH pengguna dan tidak mencoba lockfile lain sebagai gantinya jika package manager tersebut hilang.272Sertakan lockfile npm untuk menjangkau pengguna paling banyak. Claude Code menjalankan package manager lockfile yang cocok dari PATH pengguna dan tidak mencoba lockfile lain sebagai gantinya jika package manager tersebut hilang.

270 273 


276 279 

277Claude Code membatasi dependency install ini sehingga tidak ada kode dari plugin atau paketnya yang dieksekusi selama itu, dan membatasi berapa lama itu dapat berjalan:280Claude Code membatasi dependency install ini sehingga tidak ada kode dari plugin atau paketnya yang dieksekusi selama itu, dan membatasi berapa lama itu dapat berjalan:

278 281 

279* **Frozen resolution**: Bun dan npm menginstal dengan tepat apa yang lockfile pin, dan gagal daripada menyelesaikan ulang versi ketika `package.json` dan lockfile tidak setuju282* **Registry packages only**: setiap dependensi harus berupa paket registry yang di-pin dalam lockfile ke versi yang tepat. Plugin dengan dependensi git, GitHub, folder, workspace, atau yang ditautkan tidak mendapatkan instalasi.

283* **`https` downloads**: link unduhan dalam lockfile harus menggunakan `https`, kecuali link tersebut menunjuk ke registry npm default milik pengguna yang menginstal.

284* **A separate install folder**: package manager berjalan di foldernya sendiri yang hanya berisi salinan daftar dependensi yang telah diperiksa, sehingga npm dan Bun tidak membaca `.npmrc`, `.env`, atau `bunfig.toml` milik plugin. Ketika instalasi berhasil, Claude Code memindahkan `node_modules` yang dihasilkan ke dalam plugin.

285* **Frozen resolution**: instalasi menggunakan tepat versi yang di-pin oleh lockfile, dan Claude Code melewatinya ketika `package.json` dan lockfile tidak mencantumkan dependensi yang sama

280* **No lifecycle scripts**: `--ignore-scripts` menjaga skrip `preinstall`, `install`, dan `postinstall` agar tidak berjalan, sehingga dependensi yang membangun modul native dalam skrip tersebut diunduh tetapi tidak dikompilasi selama instalasi ini286* **No lifecycle scripts**: `--ignore-scripts` menjaga skrip `preinstall`, `install`, dan `postinstall` agar tidak berjalan, sehingga dependensi yang membangun modul native dalam skrip tersebut diunduh tetapi tidak dikompilasi selama instalasi ini

287* **No overrides or patches**: plugin yang `package.json`-nya menetapkan `overrides` npm tidak mendapatkan instalasi dari lockfile npm, dan plugin yang menetapkan `patchedDependencies` Bun tidak mendapatkan instalasi dari `bun.lock`

281* **60-second timeout**: Claude Code menghentikan instalasi yang berjalan lebih lama dan memperlakukannya sebagai gagal288* **60-second timeout**: Claude Code menghentikan instalasi yang berjalan lebih lama dan memperlakukannya sebagai gagal

282 289 

283Claude Code mengambil plugin sumber npm sebelum dependency install ini, dan tidak ada skrip instalasi paket sendiri yang berjalan selama pengambilan. Lihat [npm plugin source](/docs/id/plugins/marketplace-reference#npm-plugin-source).290Claude Code mengambil plugin sumber npm sebelum dependency install ini, dan tidak ada skrip instalasi paket sendiri yang berjalan selama pengambilan. Lihat [npm plugin source](/docs/id/plugins/marketplace-reference#npm-plugin-source).


290 Ketika dependency install gagal atau dilewati297 Ketika dependency install gagal atau dilewati

291</h4>298</h4>

292 299 

293Instalasi yang gagal atau dilewati tidak pernah memblokir plugin, dan setiap kasus meninggalkan tanda yang berbeda:300Instalasi yang gagal atau dilewati tidak pernah memblokir plugin, yang kemudian dimuat tanpa dependensi tersebut. Setiap kasus meninggalkan tanda yang berbeda:

294 301 

295* Instalasi yang gagal, atau yang dilewati karena lockfile Yarn atau pnpm atau `bunfig.toml`, muncul sebagai peringatan dalam output `claude --debug`302* Instalasi yang gagal, atau yang dilewati karena lockfile-nya atau karena salah satu [batas pada instalasi](#limits-on-the-dependency-install), muncul dalam output `claude --debug` sebagai baris `Plugin dependency install warning` yang menyebutkan alasannya

296* Plugin dengan `package.json` dan tidak ada lockfile dilewati tanpa entri log303* Plugin dengan `package.json` dan tidak ada lockfile dilewati tanpa entri log

297* Instalasi yang habis waktu dapat meninggalkan pohon `node_modules` parsial dalam salinan cache

298 304 

299Ketika instalasi otomatis tidak dapat menyediakan dependensi, instal dari hook ke [persistent data directory](/docs/id/plugins/components#path-variables-and-persistent-data). Itu termasuk paket yang memerlukan skrip lifecycle mereka untuk membangun, dependensi Python, dan plugin yang dikunci dengan Yarn atau pnpm.305Ketika instalasi otomatis tidak dapat menyediakan dependensi, instal dari hook ke [persistent data directory](/docs/id/plugins/components#path-variables-and-persistent-data). Itu termasuk paket yang memerlukan skrip lifecycle mereka untuk mem-build, dependensi Python, plugin yang dikunci dengan Yarn atau pnpm, dan dependensi yang bukan paket registry, seperti dependensi git.

300 306 

301<h2 id="versions-and-updates">307<h2 id="versions-and-updates">

302 Versi dan pembaruan308 Versi dan pembaruan

Details

142| `license` | String | Identifier SPDX seperti `MIT` atau `Apache-2.0` |142| `license` | String | Identifier SPDX seperti `MIT` atau `Apache-2.0` |

143| `keywords` | Array of strings | Tag penemuan |143| `keywords` | Array of strings | Tag penemuan |

144| [`metadata`](#metadata) | Object | Objek bentuk bebas untuk data Anda sendiri. Claude Code tidak membacanya |144| [`metadata`](#metadata) | Object | Objek bentuk bebas untuk data Anda sendiri. Claude Code tidak membacanya |

145| [`icon`](#directory-listing-fields) | String | Ikon untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |

146| [`documentationUrl`](#directory-listing-fields) | String | Tautan dokumentasi untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |

147| [`supportUrl`](#directory-listing-fields) | String | Tautan dukungan untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |

148| [`privacyPolicyUrl`](#directory-listing-fields) | String | Tautan kebijakan privasi untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |

149| [`termsOfServiceUrl`](#directory-listing-fields) | String | Tautan ketentuan layanan untuk daftar plugin di direktori Anthropic. Claude Code tidak membacanya |

145| [`defaultEnabled`](#defaultenabled) | Boolean | Apakah plugin dimulai diaktifkan saat pengguna belum menetapkannya. Default ke `true` |150| [`defaultEnabled`](#defaultenabled) | Boolean | Apakah plugin dimulai diaktifkan saat pengguna belum menetapkannya. Default ke `true` |

146| [`dependencies`](#dependencies) | Array of strings or objects | Plugin yang harus diaktifkan agar yang ini berfungsi |151| [`dependencies`](#dependencies) | Array of strings or objects | Plugin yang harus diaktifkan agar yang ini berfungsi |

147| [`settings`](#settings) | Object | Pengaturan yang Claude Code terapkan saat plugin diaktifkan. Hanya `agent` dan `subagentStatusLine` yang berlaku |152| [`settings`](#settings) | Object | Pengaturan yang Claude Code terapkan saat plugin diaktifkan. Hanya `agent` dan `subagentStatusLine` yang berlaku |


202 207 

203Objek bentuk bebas untuk data Anda sendiri, seperti field katalog atau hak. Claude Code tidak membacanya. Memerlukan Claude Code v2.1.222 atau lebih baru.208Objek bentuk bebas untuk data Anda sendiri, seperti field katalog atau hak. Claude Code tidak membacanya. Memerlukan Claude Code v2.1.222 atau lebih baru.

204 209 

210<h3 id="directory-listing-fields">

211 Field daftar direktori

212</h3>

213 

214Direktori Anthropic membaca field `icon`, `documentationUrl`, `supportUrl`, `privacyPolicyUrl`, dan `termsOfServiceUrl` dari `plugin.json` untuk daftar plugin Anda saat Anda [mengirimkan plugin](/docs/id/plugins/publish#submit-to-anthropics-directory). Claude Code mengabaikannya saat waktu muat. Tetapkan field tersebut hanya di `plugin.json`. Dalam [entri marketplace](#marketplace-entries-and-the-manifest), `claude plugin validate` melaporkan masing-masing sebagai field yang tidak dikenal.

215 

216Tetapkan `icon` ke path file gambar di dalam plugin, seperti `./logo.png`, dan masing-masing dari keempat field URL ke URL `https://`.

217 

218`claude plugin validate` menerima field ini tanpa peringatan pada Claude Code v2.1.281 atau lebih baru. Versi sebelumnya mencetak peringatan `Unknown field` untuk masing-masing, sehingga eksekusi `--strict` gagal pada versi tersebut.

219 

205<h3 id="defaultenabled">220<h3 id="defaultenabled">

206 `defaultEnabled`221 `defaultEnabled`

207</h3>222</h3>


276 291 

277`hooks` mengambil path file `.json`, objek hooks inline dalam bentuk yang sama seperti [`hooks` dalam `settings.json`](/docs/id/hooks#configuration), atau array yang mencampur keduanya. Untuk event hook dan field handler, lihat [hooks reference](/docs/id/hooks#hook-events).292`hooks` mengambil path file `.json`, objek hooks inline dalam bentuk yang sama seperti [`hooks` dalam `settings.json`](/docs/id/hooks#configuration), atau array yang mencampur keduanya. Untuk event hook dan field handler, lihat [hooks reference](/docs/id/hooks#hook-events).

278 293 

279Claude Code menggabungkan apa pun yang Anda deklarasikan dengan `hooks/hooks.json` saat file itu ada.294File hooks membungkus peta event dalam kunci `"hooks"` tingkat atas, yaitu bentuk yang digunakan oleh [`hooks/hooks.json`](/docs/id/plugins/components#hooks). File yang hanya berisi peta event, tanpa pembungkus tersebut, gagal dimuat. Objek inline adalah peta event itu sendiri, tanpa pembungkus.

295 

296Claude Code menggabungkan apa pun yang Anda deklarasikan dengan `hooks/hooks.json` saat file itu ada. Array ini memuat satu file hooks dan mendeklarasikan satu hook `PostToolUse` inline:

280 297 

281```json theme={null}298```json theme={null}

282{299{


296}313}

297```314```

298 315 

316File yang disebutkan oleh array tersebut membawa pembungkus `"hooks"` di sekitar peta event-nya sendiri:

317 

318```json config/extra-hooks.json theme={null}

319{

320 "hooks": {

321 "PreToolUse": [

322 {

323 "matcher": "Bash",

324 "hooks": [

325 { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/check-command.sh" }

326 ]

327 }

328 ]

329 }

330}

331```

332 

299<h3 id="mcpservers">333<h3 id="mcpservers">

300 `mcpServers`334 `mcpServers`

301</h3>335</h3>


400* **`skills`**: juga menerima `"."`. Baik `"."` maupun `"./"` menunjukkan root plugin. Sebelum v2.1.221, `"."` gagal validasi manifest, jadi gunakan `"./"` saat plugin harus dimuat di versi sebelumnya434* **`skills`**: juga menerima `"."`. Baik `"."` maupun `"./"` menunjukkan root plugin. Sebelum v2.1.221, `"."` gagal validasi manifest, jadi gunakan `"./"` saat plugin harus dimuat di versi sebelumnya

401* **`mcpServers`**: juga menerima URL bundle `https://`435* **`mcpServers`**: juga menerima URL bundle `https://`

402 436 

437`experimental.evals` bukan path komponen, sehingga aturan di bagian ini tidak mencakupnya, dan `claude plugin eval` memeriksa nilainya saat dijalankan. Nilai ini menamai direktori di bawah root plugin, seperti `"quality/evals"`, dengan atau tanpa awalan `./`. Dengan array, hanya entri pertama yang digunakan. Untuk nilai apa yang diterima dan apa yang terjadi dengan nilai yang tidak dapat digunakan, lihat [Menggunakan direktori eval yang berbeda](/docs/id/plugin-evals#use-a-different-eval-directory).

438 

403<h3 id="containment-and-existence">439<h3 id="containment-and-existence">

404 Containment and existence440 Containment and existence

405</h3>441</h3>


693 Marketplace entries and the manifest729 Marketplace entries and the manifest

694</h2>730</h2>

695 731 

696Entri [marketplace](/docs/id/plugins/marketplace-reference) menerima setiap field di halaman ini bersama dengan [field-nya sendiri](/docs/id/plugins/marketplace-reference#plugin-entries), termasuk `strict`.732[Entri marketplace](/docs/id/plugins/marketplace-reference) menerima [field-nya sendiri](/docs/id/plugins/marketplace-reference#plugin-entries), termasuk `strict`, serta setiap field di halaman ini kecuali [field daftar direktori](#directory-listing-fields).

697 733 

698Field `strict` memutuskan apakah entri dapat menambahkan komponen ke plugin yang memiliki `plugin.json`-nya sendiri. Default ke `true`.734Field `strict` memutuskan apakah entri dapat menambahkan komponen ke plugin yang memiliki `plugin.json`-nya sendiri. Default ke `true`.

699 735 

Details

81 81 

82Setiap objek dalam array `plugins` tingkat atas dari `marketplace.json` memberi nama plugin dan menunjukkan di mana mengambilnya. `name` dan `source` diperlukan.82Setiap objek dalam array `plugins` tingkat atas dari `marketplace.json` memberi nama plugin dan menunjukkan di mana mengambilnya. `name` dan `source` diperlukan.

83 83 

84Sebuah entri juga menerima setiap [field `plugin.json`](/docs/id/plugins/manifest-reference), seperti `description`, `version`, `author`, `commands`, dan `hooks`. Untuk mengetahui kapan field tersebut berlaku, lihat [Bagaimana entri menggabungkan dengan plugin.json](#entry-and-plugin-json).84Selain [field daftar direktori](/docs/id/plugins/manifest-reference#directory-listing-fields), sebuah entri juga menerima setiap [field `plugin.json`](/docs/id/plugins/manifest-reference), seperti `description`, `version`, `author`, `commands`, dan `hooks`. Untuk mengetahui kapan field tersebut berlaku, lihat [Bagaimana entri menggabungkan dengan plugin.json](#entry-and-plugin-json).

85 85 

86Tabel mencantumkan field entri sendiri dan field manifest yang maknanya berubah dalam entri.86Tabel mencantumkan field entri sendiri dan field manifest yang maknanya berubah dalam entri.

87 87 


90| `name` | string | Pengidentifikasi plugin: huruf, digit, `.`, `_`, dan `-`, dimulai dengan huruf atau digit. `claude plugin validate` gagal untuk nama lain, yang tidak dapat diinstal oleh Claude Code. Pengguna mengetiknya sebelum `@` saat mereka menginstal, bahkan ketika `plugin.json` plugin sendiri menetapkan `name` yang berbeda |90| `name` | string | Pengidentifikasi plugin: huruf, digit, `.`, `_`, dan `-`, dimulai dengan huruf atau digit. `claude plugin validate` gagal untuk nama lain, yang tidak dapat diinstal oleh Claude Code. Pengguna mengetiknya sebelum `@` saat mereka menginstal, bahkan ketika `plugin.json` plugin sendiri menetapkan `name` yang berbeda |

91| `source` | string or object | Di mana mengambil plugin. Lihat [Sumber plugin](#plugin-sources) |91| `source` | string or object | Di mana mengambil plugin. Lihat [Sumber plugin](#plugin-sources) |

92| `description` | string | Ditampilkan dalam daftar dan detail [`/plugin`](/docs/id/plugins/install) |92| `description` | string | Ditampilkan dalam daftar dan detail [`/plugin`](/docs/id/plugins/install) |

93| `version` | string | String versi untuk plugin. Ketika `plugin.json` juga menetapkan `version`, `plugin.json` mengambil prioritas dan `claude plugin validate` memberikan peringatan. Lihat [Referensi pemuatan plugin](/docs/id/plugins/loading) |93| `version` | string | String versi untuk plugin. Ketika `plugin.json` juga menetapkan `version`, `plugin.json` diutamakan dan `claude plugin validate` memberikan peringatan. Lihat [Referensi pemuatan plugin](/docs/id/plugins/loading) |

94| `category` | string | Kategori bentuk bebas untuk mengorganisir katalog |94| `category` | string | Kategori bentuk bebas untuk mengorganisir katalog |

95| `tags` | array of strings | Tag bentuk bebas untuk pencarian |95| `tags` | array of strings | Tag bentuk bebas untuk pencarian |

96| `strict` | boolean | Default `true`. Apakah `plugin.json` adalah sumber definitif untuk komponen plugin. Lihat [Mode ketat](#strict-mode) |96| `strict` | boolean | Default `true`. Apakah `plugin.json` adalah sumber definitif untuk komponen plugin. Lihat [Mode ketat](#strict-mode) |

97| `relevance` | object | Sinyal yang memberi tahu Claude Code kapan menyarankan plugin. Lihat [Rekomendasikan plugin untuk organisasi Anda](/docs/id/plugins/relevance) |97| `relevance` | object | Sinyal yang memberi tahu Claude Code kapan menyarankan plugin. Lihat [Rekomendasikan plugin untuk organisasi Anda](/docs/id/plugins/relevance) |

98| `dependencies` | array | Plugin yang harus diaktifkan agar plugin ini berfungsi. Setiap item adalah `"name"`, `"name@marketplace"`, atau objek. Lihat [Dependensi plugin](/docs/id/plugins/dependencies) |98| `dependencies` | array | Plugin yang harus diaktifkan agar plugin ini berfungsi. Setiap item adalah `"name"`, `"name@marketplace"`, atau objek. Lihat [Dependensi plugin](/docs/id/plugins/dependencies) |

99| `defaultEnabled` | boolean | Default `true`. Apakah plugin dimulai diaktifkan ketika pengguna belum menetapkannya dalam [`enabledPlugins`](/docs/id/settings-reference#enabledplugins). Nilai entri mengambil prioritas atas `plugin.json` |99| `defaultEnabled` | boolean | Default `true`. Apakah plugin dimulai diaktifkan ketika pengguna belum menetapkannya dalam [`enabledPlugins`](/docs/id/settings-reference#enabledplugins). Nilai entri diutamakan daripada `plugin.json` |

100| `displayName` | string | Nama yang dapat dibaca manusia ditampilkan di UI. Ketika baik entri maupun `plugin.json` plugin tidak menetapkan satu, pengguna melihat `name` plugin |100| `displayName` | string | Nama yang dapat dibaca manusia ditampilkan di UI. Ketika baik entri maupun `plugin.json` plugin tidak menetapkan satu, pengguna melihat `name` plugin |

101| `metadata` | object | Objek bentuk bebas untuk field Anda sendiri. Claude Code tidak membacanya. Memerlukan Claude Code v2.1.222 atau lebih baru |101| `metadata` | object | Objek bentuk bebas untuk field Anda sendiri. Claude Code tidak membacanya. Memerlukan Claude Code v2.1.222 atau lebih baru |

102| `headers` | object | Header HTTP yang dikirim Claude Code saat mengunduh [arsip](#archive-plugin-source) entri ini. Header yang ditetapkan di sini menggantikan header dengan nama yang sama dari [`headers`](#fields-by-type) sumber marketplace. Memerlukan Claude Code v2.1.238 atau lebih baru |102| `headers` | object | Header HTTP yang dikirim Claude Code saat mengunduh [arsip](#archive-plugin-source) entri ini. Header yang ditetapkan di sini menggantikan header dengan nama yang sama dari [`headers`](#fields-by-type) sumber marketplace. Memerlukan Claude Code v2.1.238 atau lebih baru |


108 108 

109Field entri berlaku berbeda untuk plugin yang diambil yang memiliki `.claude-plugin/plugin.json` sendiri dan untuk yang tidak:109Field entri berlaku berbeda untuk plugin yang diambil yang memiliki `.claude-plugin/plugin.json` sendiri dan untuk yang tidak:

110 110 

111* **Tidak ada `plugin.json`**: entri adalah manifest terlepas dari `strict`. Setiap field manifest dalam entri berlaku, termasuk [`mcpServers`, `lspServers`, `userConfig`, dan `channels`](/docs/id/plugins/manifest-reference).111* **Tidak ada `plugin.json`**: entri adalah manifest terlepas dari `strict`. Setiap field manifest yang diterima entri berlaku, termasuk [`mcpServers`, `lspServers`, `userConfig`, dan `channels`](/docs/id/plugins/manifest-reference).

112* **`plugin.json` ada**: `plugin.json` adalah manifest. [Mode ketat](#strict-mode) memutuskan apakah enam field komponen entri, `commands`, `agents`, `skills`, `hooks`, `outputStyles`, dan `themes`, digabungkan dengannya atau ditolak sebagai konflik. Entry `mcpServers`, `lspServers`, `userConfig`, dan `channels` tidak berlaku. Deklarasikan mereka dalam `plugin.json`.112* **`plugin.json` ada**: `plugin.json` adalah manifest. [Mode ketat](#strict-mode) memutuskan apakah enam field komponen entri, `commands`, `agents`, `skills`, `hooks`, `outputStyles`, dan `themes`, digabungkan dengannya atau ditolak sebagai konflik. Entry `mcpServers`, `lspServers`, `userConfig`, dan `channels` tidak berlaku. Deklarasikan mereka dalam `plugin.json`.

113 113 

114<h4 id="hooks-in-an-entry">114<h4 id="hooks-in-an-entry">


155| `github` | `repo`, `ref`, `sha` | Repositori GitHub dalam bentuk `owner/repo` |155| `github` | `repo`, `ref`, `sha` | Repositori GitHub dalam bentuk `owner/repo` |

156| `url` | `url`, `ref`, `sha` | Repositori git apa pun menurut URL |156| `url` | `url`, `ref`, `sha` | Repositori git apa pun menurut URL |

157| `git-subdir` | `url`, `path`, `ref`, `sha` | Satu subdirektori repositori git, diambil dengan sparse partial clone |157| `git-subdir` | `url`, `path`, `ref`, `sha` | Satu subdirektori repositori git, diambil dengan sparse partial clone |

158| `npm` | `package`, `version`, `registry` | Paket npm, diambil dengan klien npm Anda dan dibuka tanpa menjalankan skrip install |158| `npm` | `package`, `version`, `registry` | Paket registry npm atau tautan tarball, diambil dengan klien npm Anda dan dibuka tanpa menjalankan skrip install |

159| `archive` | `url`, `sha256` | Arsip Zip melalui HTTPS. Memerlukan Claude Code v2.1.224 atau lebih baru |159| `archive` | `url`, `sha256` | Arsip Zip melalui HTTPS. Memerlukan Claude Code v2.1.224 atau lebih baru |

160| `command` | `command`, `timeout`, `mode` | Direktori yang dicetak oleh perintah yang Claude Code jalankan di mesin pengguna. Memerlukan Claude Code v2.1.229 atau lebih baru |160| `command` | `command`, `timeout`, `mode` | Direktori yang dicetak oleh perintah yang Claude Code jalankan di mesin pengguna. Memerlukan Claude Code v2.1.229 atau lebih baru |

161 161 


258 258 

259Sumber `npm` mengambil field ini:259Sumber `npm` mengambil field ini:

260 260 

261* `package`: nama paket, atau nama scoped seperti `@your-org/formatter`261* `package`: nama paket registry seperti `@your-org/formatter`, nama dengan versi yang ditambahkan seperti `@your-org/formatter@2.0.0`, atau tautan `https` ke file tarball paket

262* `version`: versi atau rentang262* `version`: versi, rentang semver, atau dist-tag, digunakan ketika `package` adalah nama paket tanpa versi yang ditambahkan. Hilangkan untuk mengambil `latest`

263* `registry`: URL registry untuk paket yang bukan di registry default263* `registry`: URL registry untuk paket yang bukan di registry default

264 264 

265Claude Code mengambil paket dengan klien npm Anda. Skrip install paket, seperti `preinstall` atau `postinstall`, tidak pernah berjalan, dan dependensinya tidak dipasang selama pengambilan. Jika paket memiliki lockfile yang didukung di samping `package.json`-nya, Claude Code memasang [dependensi paket Node.js](/docs/id/plugins/loading#node-js-package-dependencies) tersebut dalam langkah terpisah, juga dengan skrip dinonaktifkan.265Claude Code mengambil paket dengan klien npm Anda. Skrip install paket, seperti `preinstall` atau `postinstall`, tidak pernah berjalan, dan dependensinya tidak dipasang selama pengambilan. Jika paket memiliki lockfile yang didukung di samping `package.json`-nya, Claude Code memasang [dependensi paket Node.js](/docs/id/plugins/loading#node-js-package-dependencies) tersebut dalam langkah terpisah, juga dengan skrip dinonaktifkan.

266 266 

267Claude Code memeriksa nilai `package` sebelum mengambil apa pun. Nilai yang ditolak menggagalkan pemasangan dengan pesan yang menyebutkan nilai tersebut dan alasannya. Nilai yang ditolak meliputi:

268 

269* **Alamat git, folder atau jalur `file:`, atau alias `npm:`**: gunakan [sumber `github`, `url`, atau `git-subdir`](#plugin-sources) untuk repositori git, jalur relatif untuk folder di marketplace, dan nama paket itu sendiri untuk alias

270* **Tautan tarball di github.com, gist.github.com, gitlab.com, bitbucket.org, atau git.sr.ht**: ditolak bahkan ketika tautan tersebut adalah unduhan rilis GitHub, kecuali jika itu adalah tautan registry npm GitLab di bawah `gitlab.com/api/v4/`

271* **Tautan tarball melalui `http`**: ditolak kecuali jika menunjuk ke registry npm default milik pengguna yang memasang

272 

273URL `registry` harus menggunakan `https` kecuali jika itu adalah registry npm default milik pengguna yang memasang. Dengan registry `http` lainnya, pemasangan gagal sebelum npm menghubunginya.

274 

267```json theme={null}275```json theme={null}

268{276{

269 "name": "formatter",277 "name": "formatter",

Details

167 167 

168Pengguna yang modnya tidak memuat menemukan alasannya dalam log debug mereka. [Pesan penolakan](/docs/id/plugins/mods/troubleshoot#refusal-messages) mencantumkan baris untuk `allowManagedHooksOnly` dan `disableAllHooks`, dan [Pesan dari penjaga bawaan](/docs/id/plugins/mods/troubleshoot#messages-from-the-built-in-guard) memiliki baris untuk `allowManagedModsOnly`.168Pengguna yang modnya tidak memuat menemukan alasannya dalam log debug mereka. [Pesan penolakan](/docs/id/plugins/mods/troubleshoot#refusal-messages) mencantumkan baris untuk `allowManagedHooksOnly` dan `disableAllHooks`, dan [Pesan dari penjaga bawaan](/docs/id/plugins/mods/troubleshoot#messages-from-the-built-in-guard) memiliki baris untuk `allowManagedModsOnly`.

169 169 

170<h3 id="allow-only-your-organization’s-mods">

171 Izinkan hanya mod organisasi Anda

172</h3>

173 

174Untuk menjalankan mod organisasi Anda dan memblokir mod yang dibawa pengguna, terapkan pengaturan dari baris **Hanya mod organisasi Anda** pada [tabel kebijakan](#choose-how-much-to-allow), ditambah `disableSideloadFlags`. Dengan `managed-settings.json` lengkap ini, Claude Code menolak mod milik pengguna sendiri, sehingga tidak ada hook mereka yang berjalan, dan mod kebijakan Anda berjalan mendahului mod lainnya:

175 

176```json managed-settings.json theme={null}

177{

178 "extraKnownMarketplaces": {

179 "acme-tools": {

180 "source": { "source": "directory", "path": "/opt/acme/claude-plugins" }

181 }

182 },

183 "enabledPlugins": { "acme-guard@acme-tools": true },

184 "prependPlugins": ["acme-guard@acme-tools", "sec-default@builtin"],

185 "pluginConfigs": {

186 "cc-plugin-sec-default@builtin": {

187 "options": { "allowManagedModsOnly": true }

188 }

189 },

190 "disableSideloadFlags": true

191}

192```

193 

194Setiap kelompok kunci melakukan satu tugas:

195 

196* **`extraKnownMarketplaces`, `enabledPlugins`, dan `prependPlugins`**: memasang mod Anda sehingga dihitung sebagai milik Anda, dan menjalankannya terlebih dahulu dengan penjaga setelahnya. [Pasang mod organisasi Anda dan atur urutannya](#install-your-organizations-mods) mencakup direktori yang ditunjuk oleh kunci-kunci ini.

197* **`pluginConfigs`**: mengatur opsi `allowManagedModsOnly` penjaga, sehingga Claude Code menolak mod milik pengguna sendiri. Hook pengaturan, baris status, dan `/goal` mereka tetap berfungsi.

198* **`disableSideloadFlags`**: lihat [`disableSideloadFlags`](/docs/id/settings-reference#disablesideloadflags) untuk flag yang ditolaknya saat startup

199 

200Untuk memastikan kebijakan pada mesin uji, di shell Anda mulai sesi dengan `claude --debug` dan baca log debug:

201 

202* **Mod Anda**: baris `hooks module`-nya memiliki `tier prepend`

203* **Mod yang dipasang pengguna**: sebuah baris berbunyi `refused by cc-plugin-sec-default: mods are limited to your organization's by policy (allowManagedModsOnly)`. Baris sebelumnya menyatakan bahwa modul hook mod tersebut `loaded`, jadi carilah penolakannya.

204* **Direktori plugin**: `claude --plugin-dir ./any-mod` keluar dengan pesan yang diawali `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)`

205 

206Untuk juga membatasi marketplace mana yang dapat ditambahkan pengguna, gabungkan file ini dengan [pembatasan marketplace Anda](/docs/id/plugins/org#restrict-what-users-can-install).

207 

208<h3 id="apply-your-plugin-controls-to-mods">

209 Terapkan kontrol plugin Anda pada mod

210</h3>

211 

212Mod adalah plugin, sehingga cara Anda [mengelola plugin untuk organisasi Anda](/docs/id/plugins/org) juga berlaku untuk plugin yang berisi mod:

213 

214* **Lihat plugin mana yang dimuat di seluruh armada Anda**: [Audit dan tinjau](/docs/id/plugins/org#audit-and-review)

215* **Tentukan kapan plugin yang telah Anda tinjau dapat diperbarui**: [Atur kebijakan pembaruan](/docs/id/plugins/org#set-update-policy)

216* **Berikan satu kelompok kebijakan yang berbeda, seperti uji coba**: [Rencanakan untuk hal yang tidak dapat diberlakukan oleh pengaturan terkelola](/docs/id/plugins/org#plan-for-what-managed-settings-can’t-enforce)

217* **Periksa aplikasi dan jenis sesi mana yang menerapkan kunci plugin**: [Kapan setiap surface menerapkan kunci plugin](/docs/id/plugins/org#when-each-surface-applies-the-plugin-keys)

218* **Siapkan CI dan container**: [Siapkan container dan CI](/docs/id/plugins/org#seed-containers-and-ci)

219* **Tawarkan mod yang boleh dipasang pengguna Anda**: [Hosting marketplace](/docs/id/plugins/host-marketplace). Mod yang disalin Claude Code dari sumber GitHub, git, URL, atau npm dihitung sebagai milik pengguna, bukan sebagai [milik organisasi Anda](#install-your-organizations-mods).

220 

170<h3 id="set-options-on-the-built-in-guard">221<h3 id="set-options-on-the-built-in-guard">

171 Atur opsi pada penjaga bawaan222 Atur opsi pada penjaga bawaan

172</h3>223</h3>

Details

190 190 

191Simpan tunggu di dalam panggilan mods API seperti `$.ui.ask`, karena waktu itu tidak dihitung terhadap [batas waktu 10 detik](/docs/id/plugins/mods/reference#limits) hook. Waktu yang dihabiskan menunggu janji Anda sendiri dihitung. Claude Code melewati hook yang habis waktu, jadi perintah yang ditahan akan berjalan.191Simpan tunggu di dalam panggilan mods API seperti `$.ui.ask`, karena waktu itu tidak dihitung terhadap [batas waktu 10 detik](/docs/id/plugins/mods/reference#limits) hook. Waktu yang dihabiskan menunggu janji Anda sendiri dihitung. Claude Code melewati hook yang habis waktu, jadi perintah yang ditahan akan berjalan.

192 192 

193<h4 id="approve-or-refuse-a-tool-call-before-the-user-is-asked">

194 Setujui atau tolak panggilan tool sebelum pengguna ditanya

195</h4>

196 

197Untuk memutuskan apakah panggilan tool boleh berjalan, tangani [`tool.check`](/docs/id/plugins/mods/reference#tools), peristiwa tempat Claude Code membuat keputusan tersebut. Peristiwa ini diaktifkan setelah aturan izin dan hook pengaturan telah memutuskan, dan `next(e)` diselesaikan dengan keputusan mereka: `allow`, `ask`, atau `deny`. Hook Anda mengembalikan keputusan tersebut atau keputusan yang berbeda. `e.input` berisi argumen tool, seperti `command` untuk Bash.

198 

199Untuk perintah atau path yang tetap, gunakan [aturan izin](/docs/id/permissions#permission-rule-syntax) seperti `Bash(npm test)`, yang tidak memerlukan kode. Tangani `tool.check` ketika keputusan bergantung pada apa yang berlaku pada saat itu, seperti branch Git saat ini atau nilai yang dicatat oleh hook lain.

200 

201Hook ini menolak `git push` saat branch saat ini adalah `main`:

202 

203```javascript theme={null}

204on('tool.check', { tool: 'Bash' }, async ($, e, next) => {

205 // Apa yang diputuskan aturan izin dan hook pengaturan: 'allow', 'ask', atau 'deny'

206 const decided = await next(e)

207 if (!e.input.command.includes('git push')) return decided

208 const branch = await $.process.run(['git', 'branch', '--show-current'])

209 if (branch.stdout.trim() !== 'main') return decided

210 return { decision: 'deny', reason: 'Push from a branch other than main' }

211})

212```

213 

214Di `main`, hook mengembalikan `deny`, bahkan ketika suatu aturan mengizinkan `git push`. Di branch lain, dan untuk perintah lain, panggilan mendapatkan keputusan yang akan didapatnya tanpa mod.

215 

216Hook mencocokkan teks perintah, jadi perlakukan sebagai pengingat untuk Claude. Untuk memblokir push ke `main` bagi semua orang, lindungi branch tersebut di host Git Anda.

217 

218Hook dapat mengembalikan salah satu dari ketiga keputusan, sehingga juga dapat menyetujui panggilan yang diblokir oleh hook `PreToolUse` di luar pengaturan terkelola. [Perluas izin dengan hook](/docs/id/permissions#extend-permissions-with-hooks) mencantumkan keputusan mana yang tetap berlaku atas mod.

219 

193<h3 id="rewrite-or-add-to-a-prompt">220<h3 id="rewrite-or-add-to-a-prompt">

194 Tulis ulang atau tambahkan ke prompt221 Tulis ulang atau tambahkan ke prompt

195</h3>222</h3>


301* **Hook `PreToolUse` dari pengaturan terkelola**: berjalan sebelum hook `tool.call` mod pertama, dan blok dari salah satu dari mereka adalah final, jadi tidak ada mod yang melihat panggilan.328* **Hook `PreToolUse` dari pengaturan terkelola**: berjalan sebelum hook `tool.call` mod pertama, dan blok dari salah satu dari mereka adalah final, jadi tidak ada mod yang melihat panggilan.

302* **Hook `PreToolUse` dari setiap file pengaturan lain dan dari `hooks/hooks.json` plugin**: berjalan setelah mod terakhir memanggil `next`, sebagai bagian dari perilaku Claude Code sendiri. Mod yang menjawab `tool.call` tanpa memanggil `next` mencegah mereka berjalan, dan mod yang memanggil `next` melihat keputusan mereka dalam hasil yang dikembalikan.329* **Hook `PreToolUse` dari setiap file pengaturan lain dan dari `hooks/hooks.json` plugin**: berjalan setelah mod terakhir memanggil `next`, sebagai bagian dari perilaku Claude Code sendiri. Mod yang menjawab `tool.call` tanpa memanggil `next` mencegah mereka berjalan, dan mod yang memanggil `next` melihat keputusan mereka dalam hasil yang dikembalikan.

303 330 

304[`tool.check`](/docs/id/plugins/mods/reference#tools) adalah peristiwa di mana Claude Code memutuskan apakah panggilan alat dapat berjalan. Peristiwa ini diaktifkan setelah hook tersebut dan aturan izin telah memutuskan, dan `next(e)` diselesaikan dengan keputusan mereka. Hook pada `tool.check` dapat mengembalikan keputusan berbeda, seperti `{ decision: 'allow' }`, sehingga dapat menyetujui panggilan yang diblokir hook di grup kedua. [Perluas izin dengan hook](/docs/id/permissions#extend-permissions-with-hooks) mencantumkan keputusan mana yang berlaku atas mod.331[`tool.check`](#approve-or-refuse-a-tool-call-before-the-user-is-asked) diaktifkan setelah hook tersebut dan aturan izin telah memutuskan, sehingga hook pada peristiwa tersebut dapat menyetujui panggilan yang diblokir hook di grup kedua.

305 332 

306<h3 id="handle-a-hook-that-fails">333<h3 id="handle-a-hook-that-fails">

307 Tangani hook yang gagal334 Tangani hook yang gagal

Details

283 </Tab>283 </Tab>

284</Tabs>284</Tabs>

285 285 

286Prompt izin bukan render site, jadi mod tidak dapat mengubah apa yang ditampilkannya. Dialog pertanyaan, `AskUserQuestion`, adalah satu, jadi mod dapat mengubah itu.286Di situs-situs ini, `next(e)` mengembalikan referensi ke gambar Claude Code, `{ type: 'engine', ref }`, kecuali mod yang berjalan setelah milik Anda mengembalikan pohonnya sendiri. Untuk mengubah apa yang ada di gambar itu, teruskan `next` salinan event dengan props yang berbeda, seperti yang dilakukan tab **Change a detail**. Anda dapat mengembalikan referensi apa adanya, atau menempatkannya dalam `Box` di samping elemen milik Anda sendiri:

287 

288```javascript theme={null}

289on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

290 const { Box, Text } = $.ui.resolve(e)

291 const theirs = await next(e)

292 return Box({ flexDirection: 'column', children: [theirs, Text({ children: ['under the spinner'] })] })

293})

294```

295 

296Saat Claude bekerja, spinner beranimasi seperti sebelumnya, dan `under the spinner` muncul di bawahnya.

297 

298Dialog izin bukan render site, jadi mod tidak dapat mengubah apa yang ditampilkannya. Dialog pertanyaan, `AskUserQuestion`, adalah render site, jadi mod dapat mengubahnya. Pohon untuk dialog tersebut harus memuat referensi tepat satu kali, dengan elemen Anda di atasnya. Jika tidak, Claude Code menggambar dialognya sendiri.

287 299 

288Terminal dan aplikasi Desktop tidak menaikkan semua situs yang sama. `Pane`, `AbovePrompt`, `Spinner`, dan situs transkrip bekerja di keduanya. Beberapa baris status lainnya hanya diangkat di terminal. Tabel [render sites](/docs/id/plugins/mods/reference#render-sites) mencantumkan di mana masing-masing diangkat.300Terminal dan aplikasi Desktop tidak menaikkan semua situs yang sama. `Pane`, `AbovePrompt`, `Spinner`, dan situs transkrip bekerja di keduanya. Beberapa baris status lainnya hanya diangkat di terminal. Tabel [render sites](/docs/id/plugins/mods/reference#render-sites) mencantumkan di mana masing-masing diangkat.

289 301 


407 ```419 ```

408 420 

409 ```text theme={null}421 ```text theme={null}

410 Note: Type a note and press Enter ⏎ add422 Note: Type a note and press Enter

411 ```423 ```

412 </Tab>424 </Tab>

413</Tabs>425</Tabs>

414 426 

415Tabel ini mencantumkan setiap elemen:427[Galeri antarmuka](/docs/id/plugins/mods/gallery) memiliki contoh dan tangkapan layar dari sebagian besar elemen. Tabel ini mencantumkan setiap elemen:

416 428 

417| Elemen | Apa yang digambarnya | Di mana |429| Elemen | Apa yang digambarnya | Di mana |

418| :- | :- | :- |430| :- | :- | :- |

Details

34 34 

35* **Gunakan yang sudah Anda miliki**: beberapa fitur Claude Code sendiri adalah mods, seperti `/diff`. Lihat [Mods bawaan Claude Code](#mods-built-into-claude-code).35* **Gunakan yang sudah Anda miliki**: beberapa fitur Claude Code sendiri adalah mods, seperti `/diff`. Lihat [Mods bawaan Claude Code](#mods-built-into-claude-code).

36* **Buat satu**: jelaskan apa yang Anda inginkan dalam sesi Claude Code, dan Claude menulis mod. Lihat [Minta Claude untuk mod](/docs/id/plugins/mods/create#ask-claude-for-a-mod). Untuk mempelajari cara kerja kode mod, [tulis satu sendiri](/docs/id/plugins/mods/create#write-a-mod-yourself).36* **Buat satu**: jelaskan apa yang Anda inginkan dalam sesi Claude Code, dan Claude menulis mod. Lihat [Minta Claude untuk mod](/docs/id/plugins/mods/create#ask-claude-for-a-mod). Untuk mempelajari cara kerja kode mod, [tulis satu sendiri](/docs/id/plugins/mods/create#write-a-mod-yourself).

37* **Pasang satu**: lihat [Pasang atau perbarui mod](#install-or-update-a-mod)37* **Pasang satu**: lihat [Pasang atau perbarui mod](#install-or-update-a-mod), atau [coba mod contoh](#try-a-sample-mod)

38 38 

39<h3 id="install-or-update-a-mod">39<h3 id="install-or-update-a-mod">

40 Pasang atau perbarui mod40 Pasang atau perbarui mod


53 53 

54Jika Anda memasang atau memperbarui mod dari shell Anda saat sesi terbuka, jalankan `/reload-plugins` dalam sesi itu untuk memuatnya. Jika tidak, mod akan dimuat saat Anda memulai Claude Code berikutnya.54Jika Anda memasang atau memperbarui mod dari shell Anda saat sesi terbuka, jalankan `/reload-plugins` dalam sesi itu untuk memuatnya. Jika tidak, mod akan dimuat saat Anda memulai Claude Code berikutnya.

55 55 

56<h3 id="try-a-sample-mod">

57 Coba mod contoh

58</h3>

59 

60Anthropic membagikan mod contoh di [direktori `claude-code/mods` dari repositori `claude-code-playground`](https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods). Masing-masing adalah plugin lengkap, dan README-nya menjelaskan cara pembuatannya. Repositori ini membagikannya apa adanya, tanpa dukungan.

61 

62* [`token-weather`](https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods/token-weather): menggambar prakiraan context window Anda di atas prompt

63* [`blast-radius`](https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods/blast-radius): menahan perintah shell yang berisiko, seperti `rm -rf` atau force push, dan menampilkan apa yang akan diubahnya, dengan tombol untuk melanjutkan atau membatalkan

64* [`replay-theater`](https://github.com/anthropics/claude-code-playground/tree/main/claude-code/mods/replay-theater): menambahkan perintah `/replay` yang menelusuri langkah demi langkah pengeditan file yang dibuat Claude pada giliran terakhir

65 

66Mod contoh berjalan dengan izin Anda. Untuk melihat apa yang dilakukannya sebelum Anda memuatnya, [daftarkan hook dan panggilannya](#list-what-a-mod-does-before-you-install-one).

67 

68Untuk mencobanya, clone repositori tersebut dan [muat direktori mod untuk satu sesi](/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) dengan `--plugin-dir`. Untuk memastikan mod telah dimuat, [periksa mod mana yang dimuat oleh sesi](#see-which-mods-a-session-loaded).

69 

70Untuk menyimpannya, [tambahkan direktori `claude-code/mods` dari clone tersebut sebagai marketplace](/docs/id/plugins/install#add-a-marketplace), lalu pasang mod dari `claude-code-playground-mods`. Marketplace tersebut menunjuk ke clone Anda, sehingga mod berhenti dimuat jika Anda memindahkan atau menghapusnya.

71 

56<h2 id="decide-whether-to-trust-a-mod">72<h2 id="decide-whether-to-trust-a-mod">

57 Putuskan apakah akan mempercayai mod73 Putuskan apakah akan mempercayai mod

58</h2>74</h2>


72* **Bertindak tanpa meminta Anda**: setujui pemanggilan alat sebelum Anda diminta88* **Bertindak tanpa meminta Anda**: setujui pemanggilan alat sebelum Anda diminta

73* **Habiskan penggunaan Anda**: panggil model pada paket atau kunci API Anda89* **Habiskan penggunaan Anda**: panggil model pada paket atau kunci API Anda

74 90 

91Mod tidak berjalan di dalam sandbox. Jika Anda mengaktifkan [sandboxing](/docs/id/sandboxing), sandbox mengisolasi perintah Bash yang dijalankan Claude, dan proses yang dimulai oleh mod berjalan di luarnya.

92 

75Mod yang menyetujui pemanggilan alat dapat menyetujui yang akan diminta oleh aturan `ask`, atau yang diblokir oleh hooks `PreToolUse` Anda sendiri. [Perluas izin dengan hooks](/docs/id/permissions#extend-permissions-with-hooks) mencantumkan apa yang dapat disetujui mod seperti itu, termasuk kapan dapat menyetujui panggilan yang ditolak aturan `deny`.93Mod yang menyetujui pemanggilan alat dapat menyetujui yang akan diminta oleh aturan `ask`, atau yang diblokir oleh hooks `PreToolUse` Anda sendiri. [Perluas izin dengan hooks](/docs/id/permissions#extend-permissions-with-hooks) mencantumkan apa yang dapat disetujui mod seperti itu, termasuk kapan dapat menyetujui panggilan yang ditolak aturan `deny`.

76 94 

77Mod dapat mengubah gaya banyak antarmuka Claude Code, tetapi bukan prompt izin. Tidak dapat mengubah apa yang ditampilkan prompt kepada Anda.95Mod dapat mengubah gaya banyak antarmuka Claude Code, tetapi bukan prompt izin. Tidak dapat mengubah apa yang ditampilkan prompt kepada Anda.


102 120 

103Jika Anda menggunakan Claude Code melalui organisasi, administrator juga dapat membatasi mods mana yang dimuat. Administrator dimulai di [Hentikan mods yang dipasang pengguna dari dimuat](/docs/id/plugins/mods/admin#stop-user-installed-mods-from-loading).121Jika Anda menggunakan Claude Code melalui organisasi, administrator juga dapat membatasi mods mana yang dimuat. Administrator dimulai di [Hentikan mods yang dipasang pengguna dari dimuat](/docs/id/plugins/mods/admin#stop-user-installed-mods-from-loading).

104 122 

123`disableAllHooks` dan `allowManagedModsOnly` milik organisasi Anda menghentikan mod dan membiarkan bagian lain dari pluginnya tetap di tempat: plugin tetap terpasang, dan skill, perintah, agent, serta server MCP-nya tetap dimuat. Pengaturan dan flag lain menjangkau lebih jauh. [`disableAllHooks`](/docs/id/settings-reference#disableallhooks) dan [Apa yang berjalan di bawah `allowManagedHooksOnly`](/docs/id/settings-reference#what-runs-under-allowmanagedhooksonly) mencantumkan apa yang dilakukan masing-masing terhadap plugin dan hook pengaturannya.

124 

105Untuk mengetahui apakah mods dapat dimuat untuk Anda, lihat [Periksa apakah mods dapat dimuat](/docs/id/plugins/mods/troubleshoot#check-whether-mods-can-load).125Untuk mengetahui apakah mods dapat dimuat untuk Anda, lihat [Periksa apakah mods dapat dimuat](/docs/id/plugins/mods/troubleshoot#check-whether-mods-can-load).

106 126 

107<Note>127<Note>


118 Cara kerja mod138 Cara kerja mod

119</h2>139</h2>

120 140 

121Mod adalah [plugin](/docs/id/plugins/overview) yang kodenya mendaftarkan penanganan acara, disebut hooks. Claude Code menjalankan hook ketika acaranya terjadi, seperti ketika Claude memanggil alat atau ketika spinner digambar. Mod kecil memiliki tiga file:141Mod adalah [plugin](/docs/id/plugins/overview) yang kodenya mendaftarkan penanganan acara, disebut hook. Claude Code menjalankan hook ketika acaranya terjadi, seperti ketika Claude memanggil tool atau ketika spinner digambar. Mod kecil memiliki tiga file:

122 142 

123```text theme={null}143```text theme={null}

124first-mod/144first-mod/


133* **`hooks.json`**: [menunjuk ke file kode Anda](/docs/id/plugins/mods/reference#files)153* **`hooks.json`**: [menunjuk ke file kode Anda](/docs/id/plugins/mods/reference#files)

134* **`register.js`**: [kode Anda](/docs/id/plugins/mods/create#write-a-mod-yourself), disebut modul hooks. Ini memberitahu Claude Code acara mana yang akan menjalankan fungsi Anda.154* **`register.js`**: [kode Anda](/docs/id/plugins/mods/create#write-a-mod-yourself), disebut modul hooks. Ini memberitahu Claude Code acara mana yang akan menjalankan fungsi Anda.

135 155 

136Ini adalah `register.js` lengkap. Ini menghitung pemanggilan alat yang dibuat Claude dan menampilkan hitungan di samping spinner saat Claude bekerja, seperti `Thinking · tool calls: 3…`.156Ini adalah `register.js` lengkap. Ini menghitung panggilan tool yang dibuat Claude dan menampilkan hitungan di samping spinner saat Claude bekerja, seperti `Thinking · tool calls: 3…`.

137 157 

138```javascript hooks/register.js theme={null}158```javascript hooks/register.js theme={null}

139// Hitungan, dibagikan oleh dua hooks di bawah159// The count, shared by the two hooks below

140let calls = 0160let calls = 0

141 161 

142// Claude Code memanggil ini sekali ketika mod dimuat162// Claude Code calls this once when the mod loads

143export function register(on) {163export function register(on) {

144 // Berjalan setiap kali Claude akan menggunakan alat164 // Runs each time Claude is about to use a tool

145 on('tool.call', async ($, e, next) => {165 on('tool.call', async ($, e, next) => {

146 calls += 1166 calls += 1

147 // Minta Claude Code untuk menggambar antarmuka lagi, sehingga hitungan baru ditampilkan167 // Ask Claude Code to draw the interface again, so the new count shows

148 $.ui.invalidate('ui.render')168 $.ui.invalidate('ui.render')

149 // Biarkan alat berjalan seperti biasa169 // Let the tool run as usual

150 return next(e)170 return next(e)

151 })171 })

152 172 

153 // Berjalan setiap kali Claude Code menggambar spinner173 // Runs each time Claude Code draws the spinner

154 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {174 on('ui.render', { component: 'Spinner' }, async ($, e, next) => {

155 // Pertahankan spinner Claude Code, dengan hitungan ditambahkan setelah katanya175 // Keep Claude Code's spinner, with the count added after its word

156 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })176 return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })

157 })177 })

158}178}

159```179```

160 180 

161File mendaftarkan dua hooks, dan keduanya menggunakan variabel `calls` di atas:181File mendaftarkan dua hook, dan keduanya menggunakan variabel `calls` di atas:

162 182 

163* **Hook [`tool.call`](/docs/id/plugins/mods/reference#tools)** berjalan setiap kali Claude akan menggunakan alat. Menambahkan satu ke `calls`, meminta Claude Code untuk menggambar antarmuka lagi, dan membiarkan alat berjalan seperti biasa.183* **Hook [`tool.call`](/docs/id/plugins/mods/reference#tools)** berjalan setiap kali Claude akan menggunakan tool. Menambahkan satu ke `calls`, meminta Claude Code untuk menggambar antarmuka lagi, dan membiarkan tool berjalan seperti biasa.

164* **Hook [`ui.render`](/docs/id/plugins/mods/reference#interface)** berjalan setiap kali Claude Code menggambar spinner. Mempertahankan spinner Claude Code sendiri dan menambahkan hitungan setelah kata.184* **Hook [`ui.render`](/docs/id/plugins/mods/reference#interface)** berjalan setiap kali Claude Code menggambar spinner. Mempertahankan spinner Claude Code sendiri dan menambahkan hitungan setelah kata.

165 185 

166Rekaman ini menunjukkan mod bekerja. Perhatikan baris spinner di atas kotak prompt: saat Claude membuat daftar direktori dan membaca dua file, dibaca `Thinking · tool calls: 1…`, kemudian `2…`, kemudian `3…`.186Rekaman ini menunjukkan mod bekerja. Perhatikan baris spinner di atas kotak prompt: saat Claude membuat daftar direktori dan membaca dua file, dibaca `Thinking · tool calls: 1…`, kemudian `2…`, kemudian `3…`.


189 Tempat mod berjalan209 Tempat mod berjalan

190</h3>210</h3>

191 211 

192Hooks mod berjalan di setiap jenis sesi yang memuat plugin. Menggambar lebih sempit: hanya terminal dan aplikasi Desktop yang menampilkan panes, bands, dan baris yang diganti mod. Tabel ini mencantumkan setiap tempat Anda mungkin menjalankan Claude Code:212Hook mod berjalan di setiap jenis sesi yang memuat plugin. Menggambar lebih sempit: hanya terminal dan aplikasi Desktop yang menampilkan panes, bands, dan baris yang diganti mod. Tabel ini mencantumkan setiap tempat Anda mungkin menjalankan Claude Code:

193 213 

194| Tempat Anda menjalankan Claude Code | Hooks berjalan | Apa yang digambar mod muncul |214| Tempat Anda menjalankan Claude Code | Hook berjalan | Apa yang digambar mod muncul |

195| :- | :- | :- |215| :- | :- | :- |

196| `claude` di terminal, termasuk terminal terintegrasi editor dan plugin JetBrains | Ya | Ya |216| `claude` di terminal, termasuk terminal terintegrasi editor dan plugin JetBrains | Ya | Ya |

197| Tab Code aplikasi Desktop, kecuali dalam sesi WSL | Ya | Ya, kecuali elemen yang ditandai [tabel elemen](/docs/id/plugins/mods/reference#elements) sebagai terminal-only |217| Tab Code aplikasi Desktop, kecuali dalam sesi WSL | Ya | Ya, kecuali elemen yang ditandai [tabel elemen](/docs/id/plugins/mods/reference#elements) sebagai terminal-only |

Details

56 56 

57Baca alasan setelah titik dua. Bagian [refusal messages](#refusal-messages) mencantumkan masing-masing. Jika log tidak memiliki baris seperti itu, kerjakan entri lain dalam grup ini.57Baca alasan setelah titik dua. Bagian [refusal messages](#refusal-messages) mencantumkan masing-masing. Jika log tidak memiliki baris seperti itu, kerjakan entri lain dalam grup ini.

58 58 

59Beberapa pengaturan menghentikan mod dan membiarkan bagian lain dari plugin-nya tetap berfungsi. [Aktifkan atau matikan mod](/docs/id/plugins/mods/overview#turn-mods-on-or-off) menyebutkan pengaturan tersebut.

60 

59<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">61<h3 id="a-claude-p-run-prints-hooks-module-not-loaded">

60 Jalankan `claude -p` mencetak `hooks module not loaded`62 Jalankan `claude -p` mencetak `hooks module not loaded`

61</h3>63</h3>

Details

37 37 

38[Aturan izin](/docs/id/permissions) Claude Code dan [sandbox](/docs/id/sandboxing) mencakup panggilan alat yang dibuat Claude, bukan kode yang dijalankan plugin sendiri:38[Aturan izin](/docs/id/permissions) Claude Code dan [sandbox](/docs/id/sandboxing) mencakup panggilan alat yang dibuat Claude, bukan kode yang dijalankan plugin sendiri:

39 39 

40* **Hooks dan proses server**: command hooks menjalankan perintah shell dengan izin pengguna penuh Anda. Claude Code menjalankan hooks dan server MCP di luar sandbox.40* **Hooks dan proses server**: command hooks menjalankan perintah shell dengan izin pengguna penuh Anda. Claude Code menjalankan hooks, server MCP, dan proses yang dimulai oleh [mod](/docs/id/plugins/mods/overview#what-a-mod-can-reach) di luar sandbox.

41* **Panggilan alat Claude**: panggilan ke salah satu alat MCP plugin, dan perintah Bash yang menjalankan executable dari `bin/` plugin, adalah panggilan alat, sehingga aturan izin Anda berlaku untuk mereka. Untuk apa yang dapat dilakukan mod terhadap panggilan alat, lihat [Tentukan apakah akan mempercayai mod](/docs/id/plugins/mods/overview#decide-whether-to-trust-a-mod).41* **Panggilan alat Claude**: panggilan ke salah satu alat MCP plugin, dan perintah Bash yang menjalankan executable dari `bin/` plugin, adalah panggilan alat, sehingga aturan izin Anda berlaku untuk mereka. Untuk apa yang dapat dilakukan mod terhadap panggilan alat, lihat [Tentukan apakah akan mempercayai mod](/docs/id/plugins/mods/overview#decide-whether-to-trust-a-mod).

42 42 

43Menginstal plugin juga mengaktifkannya, kecuali manifest atau entri marketplace-nya menetapkan [`defaultEnabled: false`](/docs/id/plugins/install#choose-an-install-scope) dan Anda belum mengaktifkannya sendiri.43Menginstal plugin juga mengaktifkannya, kecuali manifest atau entri marketplace-nya menetapkan [`defaultEnabled: false`](/docs/id/plugins/install#choose-an-install-scope) dan Anda belum mengaktifkannya sendiri.

Details

414 `Plugin '<name>@<marketplace>' is already installed globally`414 `Plugin '<name>@<marketplace>' is already installed globally`

415</h3>415</h3>

416 416 

417Anda menjalankan `/plugin install` untuk plugin yang sudah diinstal di scope pengguna atau oleh pengaturan terkelola, dan Claude Code menolak dengan `Use '/plugin' to manage existing plugins.` Jika Anda mengetik nama plugin tanpa `@<marketplace>`, pesan menghilangkan `globally`.417Anda menjalankan `/plugin install` untuk plugin yang sudah diinstal di cakupan pengguna atau oleh pengaturan terkelola, dan Claude Code menolak dengan `Use '/plugin' to manage existing plugins.` Jika Anda mengetik nama plugin tanpa `@<marketplace>`, pesan menghilangkan `globally`.

418 418 

419Plugin sudah tersedia di setiap proyek, jadi tidak ada yang perlu ditambahkan. Untuk mengubah [scope](/docs/id/plugins/install)-nya, mengaktifkan atau menonaktifkannya, atau mengonfigurasinya, buka `/plugin` dan buka **Installed**.419Plugin sudah tersedia di setiap proyek, jadi tidak ada yang perlu ditambahkan. Untuk mengubah [cakupan](/docs/id/plugins/install)-nya, mengaktifkan atau menonaktifkannya, atau mengonfigurasinya, buka `/plugin` dan buka **Installed**.

420 420 

421Plugin yang diinstal hanya di scope proyek atau lokal tidak memicu pesan ini. Claude Code memungkinkan Anda menginstalnya di scope pengguna juga, jadi tersedia di proyek lain.421Plugin yang diinstal hanya di cakupan proyek atau lokal tidak memicu pesan ini. Claude Code memungkinkan Anda menginstalnya di cakupan pengguna juga, jadi tersedia di proyek lain.

422 422 

423`claude plugin install` di shell Anda mencetak pesan yang berbeda. Untuk plugin yang sudah diinstal di scope target, itu mencetak `Plugin "<name>@<marketplace>" is already installed (scope: user)` dan keluar 0. Jika direktori cache-nya hilang, command yang sama mengunduh ulang-nya.423`claude plugin install` di shell Anda mencetak pesan yang berbeda. Untuk plugin yang sudah diinstal di cakupan target, itu mencetak `Plugin "<name>@<marketplace>" is already installed (scope: user)` dan keluar 0. Jika direktori cache-nya hilang, perintah yang sama mengunduh ulang-nya.

424 424 

425<h3 id="plugin-would-share-its-folder">425<h3 id="plugin-would-share-its-folder">

426 `"<plugin>" was not installed: it would share its folder with "<other>"`426 `"<plugin>" was not installed: it would share its folder with "<other>"`


428 428 

429Anda menginstal plugin melalui `claude plugin install`, `/plugin`, atau saran instalasi dalam sesi, dan Claude Code menolaknya dengan baris ini, atau dengan `would share its saved data with`.429Anda menginstal plugin melalui `claude plugin install`, `/plugin`, atau saran instalasi dalam sesi, dan Claude Code menolaknya dengan baris ini, atau dengan `would share its saved data with`.

430 430 

431ID plugin yang ditolak dan ID plugin yang diinstal memetakan ke folder yang sama di disk: mereka sama sekali `.` dan `@` ditulis sebagai `-`. Di macOS dan Windows, id yang berbeda hanya dalam huruf besar memetakan ke folder yang sama juga. Menginstal keduanya akan menempatkan file satu plugin di folder plugin lain, jadi Claude Code menolak dan plugin yang diinstal menyimpan file-nya.431ID plugin yang ditolak dan ID plugin yang diinstal memetakan ke folder yang sama di disk: mereka sama setelah `.` dan `@` ditulis sebagai `-`. Di macOS dan Windows, id yang berbeda hanya dalam huruf besar memetakan ke folder yang sama juga. Menginstal keduanya akan menempatkan file satu plugin di folder plugin lain, jadi Claude Code menolak dan plugin yang diinstal menyimpan file-nya.

432 432 

433Pesan menyebutkan jalan keluar:433Pesan menyebutkan jalan keluar:

434 434 

435* **Plugin lain diinstal**: pesan mengatakan `Only one of the two can be installed.` dan menyebutkan command `claude plugin uninstall`, atau langkah uninstall di `/plugin`, yang menghapus plugin lain. Jalankan, lalu instal lagi. Untuk apa yang uninstall hapus, lihat [What an uninstall deletes and keeps](/docs/id/plugins/cli-reference#what-an-uninstall-deletes-and-keeps).435* **Plugin lain diinstal**: pesan mengatakan `Only one of the two can be installed.` dan menyebutkan perintah `claude plugin uninstall`, atau langkah uninstall di `/plugin`, yang menghapus plugin lain. Jalankan, lalu instal lagi. Untuk apa yang uninstall hapus, lihat [What an uninstall deletes and keeps](/docs/id/plugins/cli-reference#what-an-uninstall-deletes-and-keeps).

436* **Kedua id tiba dalam satu instalasi**, seperti plugin dan dependensi yang dibutuhkannya: tidak ada urutan instalasi yang membantu. Hanya maintainer marketplace yang mencantumkan dua plugin dapat memperbaikinya, dengan mengganti nama salah satu. Ketika keduanya berasal dari marketplace berbeda, maintainer salah satu dapat.436* **Kedua id tiba dalam satu instalasi**, seperti plugin dan dependensi yang dibutuhkannya: tidak ada urutan instalasi yang membantu. Hanya maintainer marketplace yang mencantumkan dua plugin dapat memperbaikinya, dengan mengganti nama salah satu. Ketika keduanya berasal dari marketplace berbeda, maintainer salah satu dapat.

437 437 

438<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">438<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">


460* **Anda menerbitkan plugin**: hitung ulang digest file yang tepat yang URL layani dan perbarui `sha256` dalam entri marketplace. Gunakan `shasum -a 256 my-plugin.zip`, atau `Get-FileHash -Algorithm SHA256 my-plugin.zip` di PowerShell460* **Anda menerbitkan plugin**: hitung ulang digest file yang tepat yang URL layani dan perbarui `sha256` dalam entri marketplace. Gunakan `shasum -a 256 my-plugin.zip`, atau `Get-FileHash -Algorithm SHA256 my-plugin.zip` di PowerShell

461* **Anda menginstal plugin**: jalankan `/plugin marketplace update <name>` dalam sesi untuk merefresh katalog jika entri diperbaiki, lalu coba ulang instalasi. Jika digest masih tidak setuju setelah refresh, tanyakan kepada pemilik marketplace file mana yang mereka pin sebelum menginstal461* **Anda menginstal plugin**: jalankan `/plugin marketplace update <name>` dalam sesi untuk merefresh katalog jika entri diperbaiki, lalu coba ulang instalasi. Jika digest masih tidak setuju setelah refresh, tanyakan kepada pemilik marketplace file mana yang mereka pin sebelum menginstal

462 462 

463<h3 id="an-npm-plugin-source-must-name-a-registry-package">

464 `An npm plugin source must name a registry package`

465</h3>

466 

467Plugin yang entri marketplace-nya menggunakan [sumber `npm`](/docs/id/plugins/marketplace-reference#npm-plugin-source) gagal diinstal, diperbarui, atau dimuat, dan pesannya menyertakan kalimat ini. Claude Code memeriksa nilai `package` entri sebelum mengambil apa pun dan menolaknya. Pesan menyebutkan nilai dan alasannya:

468 

469```text theme={null}

470"github:acme/formatter" was not installed: it is not an http or https link. An npm plugin source must name a registry package (name or name@version) or link to a tarball file. For a plugin in a git repository, use a "github", "url" or "git-subdir" source.

471```

472 

473Pemilik marketplace harus mengubah entri tersebut:

474 

475* **Jika itu Anda**: ubah `package` ke nilai yang diterima oleh [referensi sumber plugin npm](/docs/id/plugins/marketplace-reference#npm-plugin-source), atau alihkan entri ke sumber `github`, `url`, atau `git-subdir`

476* **Jika bukan Anda**: laporkan pesan ke pemilik marketplace

477 

463<h3 id="marketplace-is-registered-from-an-untrusted-source">478<h3 id="marketplace-is-registered-from-an-untrusted-source">

464 `Marketplace "<name>" is registered from an untrusted source`479 `Marketplace "<name>" is registered from an untrusted source`

465</h3>480</h3>

466 481 

467Marketplace yang Anda tambahkan sebelumnya berhenti memuat, begitu juga plugin-nya. Baris ini muncul di tab **Errors** `/plugin` atau pada refresh berikutnya.482Marketplace yang Anda tambahkan sebelumnya berhenti memuat, begitu juga plugin-nya. Baris ini muncul di tab **Errors** `/plugin` atau pada refresh berikutnya.

468 483 

469Marketplace terdaftar di bawah nama yang [dicadangkan untuk marketplace resmi Anthropic](/docs/id/plugins/marketplace-reference), tetapi sumber terdaftar-nya bukan repository GitHub `anthropics`. Nama yang dicadangkan diperiksa ulang setiap kali marketplace memuat atau merefresh, jadi marketplace dan plugin yang diinstal darinya berhenti memuat.484Marketplace terdaftar di bawah nama yang [dicadangkan untuk marketplace resmi Anthropic](/docs/id/plugins/marketplace-reference), tetapi sumber terdaftar-nya bukan repositori GitHub `anthropics`. Nama yang dicadangkan diperiksa ulang setiap kali marketplace memuat atau merefresh, jadi marketplace dan plugin yang diinstal darinya berhenti memuat.

470 485 

471Pesan lengkap menyebutkan nama yang dicadangkan dan perbaikannya:486Pesan lengkap menyebutkan nama yang dicadangkan dan perbaikannya:

472 487 


476 491 

477Perbaikannya berbeda untuk pengguna dan penerbit:492Perbaikannya berbeda untuk pengguna dan penerbit:

478 493 

479* **Anda menggunakan marketplace**: di shell Anda, jalankan `claude plugin marketplace remove <name>`, lalu tambahkan marketplace lagi dari repository `github.com/anthropics` resmi494* **Anda menggunakan marketplace**: di shell Anda, jalankan `claude plugin marketplace remove <name>`, lalu tambahkan marketplace lagi dari repositori `github.com/anthropics` resmi

480* **Anda menerbitkan marketplace pihak ketiga yang menggunakan nama sebelum itu menjadi dicadangkan**: ganti namanya dan minta pengguna untuk menambahkan kembali dari sumber Anda495* **Anda menerbitkan marketplace pihak ketiga yang menggunakan nama sebelum itu menjadi dicadangkan**: ganti namanya dan minta pengguna untuk menambahkan kembali dari sumber Anda

481 496 

482Sebelum v2.1.205, Claude Code memeriksa nama hanya ketika Anda menambahkan marketplace, jadi entri yang terdaftar sebelum nama-nya menjadi dicadangkan terus memuat.497Sebelum v2.1.205, Claude Code memeriksa nama hanya ketika Anda menambahkan marketplace, jadi entri yang terdaftar sebelum nama-nya menjadi dicadangkan terus memuat.

483 498 

499<h3 id="marketplace-is-added-but-ignored">

500 `Marketplace "<name>" is added but ignored`

501</h3>

502 

503Marketplace memiliki entri di `~/.claude/plugins/known_marketplaces.json`, tetapi entri tersebut gagal dalam pemeriksaan yang dijalankan Claude Code setiap kali membaca file itu, sehingga marketplace dan plugin yang diinstal darinya berhenti dimuat. Di shell Anda, `claude plugin list` melaporkan setiap plugin yang terpengaruh dengan baris yang menyebutkan alasan dan perbaikannya:

504 

505```text theme={null}

506Marketplace team-tools is added but ignored. Its location is on a network drive, has "." or ".." in its path, or couldn't be checked. Re-add the marketplace (one added from a folder or file must be re-added from a copy on this computer), or, to trust a folder on a network drive, declare it under extraKnownMarketplaces in user or managed settings.

507```

508 

509Dalam sesi, tab **Errors** `/plugin` menempatkan nama marketplace dalam tanda kutip, mengakhiri baris setelah alasan, dan menampilkan perbaikan pada baris di bawahnya.

510 

511Kalimat setelah `is added but ignored` menyebutkan pemeriksaan yang gagal dilalui entri:

512 

513* `Its location is on a network drive, has "." or ".." in its path, or couldn't be checked`, atau kalimat yang sama tentang `The folder or file it was added from`: direktori marketplace, atau path lokal tempat marketplace ditambahkan, berada di lokasi jaringan, memiliki segmen `.` atau `..` dalam path-nya, atau tidak dapat diperiksa

514* `Its git URL can't be used: <reason>` atau `Its URL can't be read as an https:// or http:// address`: URL sumber yang tercatat pada entri adalah URL yang Claude Code tolak untuk di-clone atau diambil

515* `Its source doesn't match its extraKnownMarketplaces entry in user or managed settings`: entri tidak cocok dengan deklarasi [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dengan nama yang sama

516 

517Ketika `(see the debug log)` mengikuti `is added but ignored` sebagai pengganti alasan, Claude Code menolak nama marketplace tersebut, seperti [ejaan lain dari nama yang dicadangkan](/docs/id/errors#marketplace-name-is-another-spelling-of-a-reserved-name). [Log debug](/docs/id/debug-your-config) menyebutkan entri tersebut.

518 

519**Apa yang harus dilakukan:**

520 

521* Ikuti perbaikan dalam pesan. Di shell Anda, jalankan `claude plugin marketplace remove <name>`, lalu tambahkan marketplace lagi dari sumber yang didukung atau path lokal dan instal ulang plugin-nya, yang di-uninstal oleh perintah remove. Perintah remove berfungsi pada entri yang diabaikan

522* Untuk mempertahankan marketplace di lokasi jaringan, deklarasikan di bawah [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dalam pengaturan pengguna atau pengaturan terkelola Anda; deklarasi di `.claude/settings.json` atau `.claude/settings.local.json` repositori tidak dihitung

523* Untuk sumber yang berbeda dari deklarasi pengaturannya, tambahkan kembali marketplace dari sumber yang dideklarasikan atau ubah deklarasinya. `claude plugin marketplace add` menolak ketidakcocokan yang sama; lihat [entri `Cannot add marketplace` yang sesuai](#cannot-add-marketplace-its-network-source-differs)

524* Untuk nama yang ditolak, hapus marketplace, menggunakan perintah setelah `Remove it:` jika baris tersebut menyediakannya; menambahkannya lagi dengan nama yang sama akan ditolak lagi

525 

526Sebelum v2.1.286, apa pun alasannya, `claude plugin list` melaporkan marketplace seperti itu sebagai `Marketplace <name> not found`, dan tab **Errors** `/plugin` melaporkannya sebagai `Marketplace "<name>" is registered but was refused (see the debug log)`. Alasannya hanya muncul di log debug. Di v2.1.286, kalimat alasan dan perbaikan menggunakan kata-kata yang berbeda, seperti `Its recorded location is network-shaped or unclassifiable (never probed)`.

527 

484<h3 id="plugin-has-a-corrupt-manifest-file-or-has-an-invalid-manifest-file">528<h3 id="plugin-has-a-corrupt-manifest-file-or-has-an-invalid-manifest-file">

485 `Plugin <name> has a corrupt manifest file` or `has an invalid manifest file`529 `Plugin <name> has a corrupt manifest file` or `has an invalid manifest file`

486</h3>530</h3>

487 531 

488Claude Code mengambil plugin, lalu gagal membaca `.claude-plugin/plugin.json`-nya. Di shell, `<name>` dalam baris ini dapat berupa nama direktori sementara; awalan `Failed to install plugin "<name>@<marketplace>"` membawa nama asli plugin. Wording mengatakan pemeriksaan mana yang gagal:532Claude Code mengambil plugin, lalu gagal membaca `.claude-plugin/plugin.json`-nya. Di shell, `<name>` dalam baris ini dapat berupa nama direktori sementara; awalan `Failed to install plugin "<name>@<marketplace>"` membawa nama asli plugin. Kata-kata pesan menunjukkan pemeriksaan mana yang gagal:

489 533 

490* **`corrupt manifest file`, diikuti oleh `JSON parse error:`**: file bukan JSON yang valid534* **`corrupt manifest file`, diikuti oleh `JSON parse error:`**: file bukan JSON yang valid

491* **`invalid manifest file`, diikuti oleh `Validation errors:`**: file parse tetapi gagal schema, seperti `name: Invalid input` untuk field yang diperlukan yang hilang535* **`invalid manifest file`, diikuti oleh `Validation errors:`**: file dapat di-parse tetapi gagal dalam skema, seperti `name: Invalid input` untuk field wajib yang hilang

492 536 

493`claude plugin install` melaporkan salah satu sebagai `Failed to install plugin "<name>@<marketplace>":` dan keluar dengan kode 1.537`claude plugin install` melaporkan salah satu sebagai `Failed to install plugin "<name>@<marketplace>":` dan keluar dengan kode 1.

494 538 

495Penulis plugin harus memperbaiki file, dan plugin tidak dapat diinstal sampai saat itu:539Penulis plugin harus memperbaiki file, dan plugin tidak dapat diinstal sampai saat itu:

496 540 

497* **Jika itu Anda**: jalankan `claude plugin validate <plugin-directory>` di shell Anda untuk melihat kesalahan yang sama dengan path yang menyinggung, lalu perbaiki file541* **Jika itu Anda**: jalankan `claude plugin validate <plugin-directory>` di shell Anda untuk melihat kesalahan yang sama dengan path yang bermasalah, lalu perbaiki file

498* **Jika bukan Anda**: laporkan pesan ke pemilik marketplace542* **Jika bukan Anda**: laporkan pesan ke pemilik marketplace

499 543 

500<h3 id="plugin-directory-not-found-at-path">544<h3 id="plugin-directory-not-found-at-path">


542 586 

543Anda menjalankan `marketplace add`, dan katalog di sumber itu memiliki nama yang sama dengan marketplace yang file pengaturan sudah deklarasikan di bawah [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dengan sumber berbeda. Claude Code menolak penambahan dan tidak mendaftarkan apa pun.587Anda menjalankan `marketplace add`, dan katalog di sumber itu memiliki nama yang sama dengan marketplace yang file pengaturan sudah deklarasikan di bawah [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) dengan sumber berbeda. Claude Code menolak penambahan dan tidak mendaftarkan apa pun.

544 588 

545Pesan berakhir dengan perbaikannya: sumber harus cocok dengan yang dideklarasikan untuk nama ini dalam pengaturan, atau Anda mengubah deklarasi. Bandingkan sumber yang Anda lewatkan terhadap entri `extraKnownMarketplaces` untuk nama itu, termasuk `ref`, `path`, dan `headers`-nya, lalu lakukan salah satu dari ini:589Pesan berakhir dengan perbaikannya: sumber harus cocok dengan yang dideklarasikan untuk nama ini dalam pengaturan, atau Anda mengubah deklarasi. Bandingkan sumber yang Anda berikan dengan entri `extraKnownMarketplaces` untuk nama itu, termasuk `ref`, `path`, dan `headers`-nya, lalu lakukan salah satu dari ini:

546 590 

547* **Gunakan sumber yang dideklarasikan**: tambahkan marketplace dari sumber yang entri pengaturan beri nama591* **Gunakan sumber yang dideklarasikan**: tambahkan marketplace dari sumber yang disebutkan oleh entri pengaturan

548* **Gunakan sumber baru**: edit atau hapus entri `extraKnownMarketplaces`, lalu tambahkan marketplace lagi. Jika pengaturan terkelola mendeklarasikannya, tanyakan administrator Anda592* **Gunakan sumber baru**: edit atau hapus entri `extraKnownMarketplaces`, lalu tambahkan marketplace lagi. Jika pengaturan terkelola mendeklarasikannya, tanyakan administrator Anda

549 593 

550<h3 id="failed-to-install-from-the-plugin-menu">594<h3 id="failed-to-install-from-the-plugin-menu">


557 601 

558Apa yang harus dilakukan tergantung pada apakah ringkasan memendekkan alasan:602Apa yang harus dilakukan tergantung pada apakah ringkasan memendekkan alasan:

559 603 

560* Perbaiki apa yang alasan dalam tanda kurung beri nama604* Perbaiki apa yang disebutkan oleh alasan dalam tanda kurung

561* Ketika alasan diperpendek, jalankan `/plugin`, pilih plugin di tab **Discover**, dan tekan **Enter** untuk menginstalnya dari detailnya. Jika instalasi gagal di sana, tampilan detail menunjukkan kesalahan lengkap605* Ketika alasan diperpendek, jalankan `/plugin`, pilih plugin di tab **Discover**, dan tekan **Enter** untuk menginstalnya dari detailnya. Jika instalasi gagal di sana, tampilan detail menunjukkan kesalahan lengkap

562 606 

563<h3 id="could-not-move-the-new-copy-of-this-plugin-version">607<h3 id="could-not-move-the-new-copy-of-this-plugin-version">


574 618 

575* `The previously installed copy was moved back`: versi yang Anda miliki masih diinstal619* `The previously installed copy was moved back`: versi yang Anda miliki masih diinstal

576* `had to be removed first`, `was not moved back`, atau `could not be moved back`: versi plugin itu tidak diinstal sampai instalasi berhasil620* `had to be removed first`, `was not moved back`, atau `could not be moved back`: versi plugin itu tidak diinstal sampai instalasi berhasil

577* Tidak ada kalimat seperti itu: tidak ada salinan sebelumnya, jadi versi tidak diinstal namun621* Tidak ada kalimat seperti itu: tidak ada salinan sebelumnya, jadi versi tersebut belum diinstal

578 622 

579Di Windows, ketika program lain menyimpan salinan yang diinstal itu sendiri, pesan malah mengatakan salinan itu `could not be replaced` dan bahwa `It was not replaced and the new copy was discarded`, jadi versi yang Anda miliki masih diinstal.623Di Windows, ketika program lain menyimpan salinan yang diinstal itu sendiri, pesan malah mengatakan salinan itu `could not be replaced` dan bahwa `It was not replaced and the new copy was discarded`, jadi versi yang Anda miliki masih diinstal.

580 624 


583Untuk memperbaiki instalasi:627Untuk memperbaiki instalasi:

584 628 

585* Tutup sesi Claude Code lain, editor, dan terminal yang menggunakan folder plugin di bawah `~/.claude/plugins/cache`, lalu jalankan instalasi lagi629* Tutup sesi Claude Code lain, editor, dan terminal yang menggunakan folder plugin di bawah `~/.claude/plugins/cache`, lalu jalankan instalasi lagi

586* Ketika pesan mengatakan untuk memeriksa izin folder cache plugin, pulihkan izin tulis Anda di folder yang dinamai dan bebaskan ruang disk, lalu jalankan instalasi lagi630* Ketika pesan mengatakan untuk memeriksa hak akses folder cache plugin, pulihkan hak akses tulis Anda di folder yang dinamai dan bebaskan ruang disk, lalu jalankan instalasi lagi

587 631 

588<h3 id="dependency-errors">632<h3 id="dependency-errors">

589 Dependency errors633 Dependency errors

590</h3>634</h3>

591 635 

592Plugin yang mendeklarasikan dependensi dapat gagal diinstal, atau diinstal dan tetap dinonaktifkan, ketika dependensi tidak dapat dipenuhi. Pesan mencapai Anda pada waktu instalasi atau pada waktu beban:636Plugin yang mendeklarasikan dependensi dapat gagal diinstal, atau diinstal dan tetap dinonaktifkan, ketika dependensi tidak dapat dipenuhi. Pesan sampai kepada Anda pada waktu instalasi atau pada waktu pemuatan:

593 637 

594* **Selama instalasi**: penolakan kembali sebagai pesan kesalahan instalasi638* **Selama instalasi**: penolakan kembali sebagai pesan kesalahan instalasi

595* **Ketika plugin memuat**: masalah muncul di `claude plugin list` dan tab **Errors** `/plugin`, dan Claude Code membuat plugin yang terpengaruh tetap dinonaktifkan sampai Anda menyelesaikannya639* **Ketika plugin memuat**: masalah muncul di `claude plugin list` dan tab **Errors** `/plugin`, dan Claude Code membuat plugin yang terpengaruh tetap dinonaktifkan sampai Anda menyelesaikannya


602| `Dependency "<dep>" is disabled` | Dependensi diinstal tetapi dimatikan. | Aktifkan dependensi, atau uninstal plugin yang membutuhkannya. |646| `Dependency "<dep>" is disabled` | Dependensi diinstal tetapi dimatikan. | Aktifkan dependensi, atau uninstal plugin yang membutuhkannya. |

603| `Requires "<dep>" <range>, installed <version>` | Versi dependensi yang diinstal berada di luar rentang yang dideklarasikan plugin. | Perbarui dependensi ke versi dalam rentang, atau uninstal plugin. |647| `Requires "<dep>" <range>, installed <version>` | Versi dependensi yang diinstal berada di luar rentang yang dideklarasikan plugin. | Perbarui dependensi ke versi dalam rentang, atau uninstal plugin. |

604| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Tidak ada versi yang memenuhi setiap rentang yang menyematkannya. Pesan mencantumkan rentang-nya. | Uninstal atau perbarui salah satu plugin yang bertentangan, atau minta penulis upstream untuk memperluas batasan-nya. |648| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Tidak ada versi yang memenuhi setiap rentang yang menyematkannya. Pesan mencantumkan rentang-nya. | Uninstal atau perbarui salah satu plugin yang bertentangan, atau minta penulis upstream untuk memperluas batasan-nya. |

605| `... has version requirements too complex to intersect` atau `has an invalid version requirement` | Rentang bukan semver yang valid, atau rentang gabungan tidak dapat dipotong. | Perbaiki rentang yang tidak valid atau sederhanakan rantai `\|\|` yang panjang. |649| `... has version requirements too complex to intersect` atau `has an invalid version requirement` | Rentang bukan semver yang valid, atau rentang gabungan tidak dapat diiriskan. | Perbaiki rentang yang tidak valid atau sederhanakan rantai `\|\|` yang panjang. |

606| `... has no git tag satisfying <range>` | Repository dependensi tidak memiliki tag `<name>--v*` dalam rentang. | Periksa bahwa tag upstream rilis dengan konvensi itu, atau relakskan rentang. |650| `... has no git tag satisfying <range>` | Repositori dependensi tidak memiliki tag `<name>--v*` dalam rentang. | Periksa bahwa upstream memberi tag pada rilis dengan konvensi itu, atau longgarkan rentang. |

607| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | Dependensi ada di marketplace berbeda, dan resolusi lintas-marketplace dimatikan secara default. | Instal dependensi sendiri di scope yang sama, di shell Anda dengan `claude plugin install <dep>@<marketplace>` ditambah `--scope` yang Anda instal plugin, lalu coba ulang. |651| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | Dependensi ada di marketplace berbeda, dan resolusi lintas-marketplace dimatikan secara default. | Instal dependensi sendiri di cakupan yang sama, di shell Anda dengan `claude plugin install <dep>@<marketplace>` ditambah `--scope` tempat Anda menginstal plugin, lalu coba ulang. |

608 652 

609Untuk melihat ini secara terprogram, jalankan `claude plugin list --json` di shell Anda. Plugin dengan masalah membawa field `errors` dengan pesan dan field `errorDetails` dengan `type` untuk masing-masing: dua baris pertama adalah `dependency-unsatisfied` dan yang ketiga adalah `dependency-version-unsatisfied`.653Untuk melihat ini secara terprogram, jalankan `claude plugin list --json` di shell Anda. Plugin dengan masalah membawa field `errors` dengan pesan dan field `errorDetails` dengan `type` untuk masing-masing: dua baris pertama adalah `dependency-unsatisfied` dan yang ketiga adalah `dependency-version-unsatisfied`.

610 654 


957 `<directory> is not a plugin or skill folder` from `claude plugin eval init`1001 `<directory> is not a plugin or skill folder` from `claude plugin eval init`

958</h3>1002</h3>

959 1003 

960Anda menjalankan `claude plugin eval init` dari direktori yang bukan root plugin, seperti direktori home Anda atau root repository yang menyimpan plugin dalam subdirektori. `init` menulis suite di bawah direktori kerja, jadi itu berhenti alih-alih membuat direktori `evals/` yang plugin tidak akan pernah lihat.1004Anda menjalankan `claude plugin eval init` dari direktori yang bukan root plugin, seperti direktori home Anda atau root repositori yang menyimpan plugin dalam subdirektori. `init` menulis suite di bawah direktori kerja, jadi itu berhenti alih-alih membuat direktori `evals/` yang plugin tidak akan pernah lihat.

961 1005 

962Ubah ke root plugin, direktori yang menyimpan `.claude-plugin/plugin.json` atau `SKILL.md` skill, dan jalankan command lagi. Untuk scaffold suite di tempat lain dengan tujuan, lewatkan `--eval-dir`. Lihat [Test plugins with evals](/docs/id/plugin-evals).1006Ubah ke root plugin, direktori yang menyimpan `.claude-plugin/plugin.json` atau `SKILL.md` skill, dan jalankan command lagi. Untuk scaffold suite di tempat lain dengan tujuan, lewatkan `--eval-dir`. Lihat [Test plugins with evals](/docs/id/plugin-evals).

963 1007 


981 1025 

982Ketika setiap opsi diatur, output instalasi tidak membawa baris `not yet set`.1026Ketika setiap opsi diatur, output instalasi tidak membawa baris `not yet set`.

983 1027 

984Untuk membuka dialog setelahnya, jalankan `/plugin configure my-plugin@my-marketplace` dalam sesi. Dari shell, [`claude plugin configure`](/docs/id/plugins/cli-reference#plugin-configure) menunjukkan opsi mana yang masih tidak diatur dan menyimpan nilai yang disalurkan di stdin. Itu memerlukan Claude Code v2.1.285 atau lebih baru.1028Untuk membuka dialog setelahnya sebagai gantinya, jalankan `/plugin configure my-plugin@my-marketplace` dalam sesi. Dari shell, [`claude plugin configure`](/docs/id/plugins/cli-reference#plugin-configure) menunjukkan opsi mana yang masih tidak diatur dan menyimpan nilai yang disalurkan di stdin. Itu memerlukan Claude Code v2.1.285 atau lebih baru.

985 1029 

986Jika Anda melewatkan kunci `--config` yang manifest tidak deklarasikan, plugin masih diinstal, dan command mencetak `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` diikuti oleh kunci yang plugin deklarasikan.1030Jika Anda melewatkan kunci `--config` yang manifest tidak deklarasikan, plugin masih diinstal, dan command mencetak `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` diikuti oleh kunci yang plugin deklarasikan.

987 1031 


1007| `Path is a file; skills entries must be directories containing SKILL.md` | Entri `skills` menunjuk pada `SKILL.md` alih-alih direktorinya. | Tunjuk ke direktori induk, atau `.` untuk `SKILL.md` tingkat root. |1051| `Path is a file; skills entries must be directories containing SKILL.md` | Entri `skills` menunjuk pada `SKILL.md` alih-alih direktorinya. | Tunjuk ke direktori induk, atau `.` untuk `SKILL.md` tingkat root. |

1008| `No frontmatter block found` atau `YAML frontmatter failed to parse: <error>` | File skill, agent, atau command memiliki frontmatter YAML yang hilang atau tidak valid. | Tambahkan atau perbaiki frontmatter antara pembatas `---`. Dilaporkan saat memvalidasi direktori plugin. |1052| `No frontmatter block found` atau `YAML frontmatter failed to parse: <error>` | File skill, agent, atau command memiliki frontmatter YAML yang hilang atau tidak valid. | Tambahkan atau perbaiki frontmatter antara pembatas `---`. Dilaporkan saat memvalidasi direktori plugin. |

1009| `Plugin name "<name>" is reserved: it passes as one of Anthropic's own` | `name` plugin adalah salah satu dari [nama yang dicadangkan](/docs/id/plugins/manifest-reference#name). | Ubah nama plugin untuk apa yang dilakukannya. |1053| `Plugin name "<name>" is reserved: it passes as one of Anthropic's own` | `name` plugin adalah salah satu dari [nama yang dicadangkan](/docs/id/plugins/manifest-reference#name). | Ubah nama plugin untuk apa yang dilakukannya. |

1010| `Unknown field '<key>'` | Manifest memiliki field yang schema tidak tentukan. | Hapus, atau gunakan nama yang pesan sarankan. Claude Code mengabaikan field yang tidak dikenal pada waktu beban. |1054| `Unknown field '<key>'` | Manifest memiliki field yang schema tidak tentukan. | Hapus, atau gunakan nama yang pesan sarankan. Claude Code mengabaikan field yang tidak dikenal pada waktu beban. Untuk `privacyPolicyUrl` dan field daftar direktori lainnya di `plugin.json`, lihat [Directory listing fields](/docs/id/plugins/manifest-reference#directory-listing-fields). |

1011 1055 

1012Jalankan command lagi setelah setiap perbaikan sampai itu mencetak tidak ada kesalahan.1056Jalankan command lagi setelah setiap perbaikan sampai itu mencetak tidak ada kesalahan.

1013 1057 

prompt-library.md +301 −78

Details

622 const m = p.slice(base.length).match(/^\/([a-z]{2}(?:-[A-Z]{2})?)\//);622 const m = p.slice(base.length).match(/^\/([a-z]{2}(?:-[A-Z]{2})?)\//);

623 const locale = m ? m[1] : 'en';623 const locale = m ? m[1] : 'en';

624 return href => {624 return href => {

625 if (!href || href[0] !== '/' || href[1] === '/') return href;625 if (!href) return undefined;

626 if (href[0] === '#' || href.startsWith('https://')) return href;

627 if (!(/^\/[A-Za-z0-9]/).test(href)) return undefined;

626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);628 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);

627 };629 };

628 }, []);630 }, []);


671 const assemble = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => fillOf(p, k) || p.slots && p.slots[k] || k);673 const assemble = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => fillOf(p, k) || p.slots && p.slots[k] || k);

672 const preview = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => p.slots && p.slots[k] || k);674 const preview = p => p.prompt.replace(/\{(\w+)\}/g, (_, k) => p.slots && p.slots[k] || k);

673 const bodyText = p => preview(p) + ' ' + p.teaches.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + ' ' + (p.next || '');675 const bodyText = p => preview(p) + ' ' + p.teaches.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') + ' ' + (p.next || '');

674 const widthFor = s => (s || '').length + 3 + 'ch';676 const WIDE_RE = /[\u1100-\u115F\u2E80-\uA4CF\uAC00-\uD7A3\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFF60\uFFE0-\uFFE6]/g;

677 const widthFor = s => {

678 const t = typeof s === 'string' ? s : '';

679 return t.length + (t.match(WIDE_RE) || []).length + 3 + 'ch';

680 };

675 const ql = q.trim().toLowerCase();681 const ql = q.trim().toLowerCase();

676 const toggleTag = k => {682 const toggleTag = k => {

677 setStart(false);683 setStart(false);


1032 needs: {1038 needs: {

1033 tracker: "pelacak masalah Anda ditambahkan sebagai [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) atau [server MCP](/docs/id/mcp).",1039 tracker: "pelacak masalah Anda ditambahkan sebagai [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) atau [server MCP](/docs/id/mcp).",

1034 gh: "[gh CLI](https://cli.github.com) yang diautentikasi, atau GitHub ditambahkan sebagai [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai).",1040 gh: "[gh CLI](https://cli.github.com) yang diautentikasi, atau GitHub ditambahkan sebagai [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai).",

1035 browser: "cara bagi Claude untuk merender dan mengambil tangkapan layar hasilnya. [Aplikasi Desktop](/docs/id/desktop#preview-your-app) memiliki ini bawaan. Di terminal, instal [ekstensi Chrome](/docs/id/chrome) atau server MCP [Playwright](/docs/id/mcp).",1041 browser: "cara bagi Claude untuk merender dan mengambil tangkapan layar hasilnya. [Aplikasi Desktop](/docs/id/desktop#preview-your-app) memiliki ini bawaan. Di terminal, instal [ekstensi Chrome](/docs/id/chrome) atau server [MCP](/docs/id/mcp) Playwright.",

1036 db: "gudang data atau penyimpanan log Anda ditambahkan sebagai [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) atau [server MCP](/docs/id/mcp)."1042 db: "gudang data atau penyimpanan log Anda ditambahkan sebagai [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) atau [server MCP](/docs/id/mcp)."

1037 }1043 }

1038};1044};


1098 "get-oriented-in-a": {1104 "get-oriented-in-a": {

1099 title: "Orientasi diri di repositori baru",1105 title: "Orientasi diri di repositori baru",

1100 teaches: "Jelaskan apa yang ingin Anda ketahui, bukan file mana yang harus dibaca. Claude mengeksplorasi proyek sendiri dan mengembalikan ringkasan tentang bagaimana semuanya cocok bersama.",1106 teaches: "Jelaskan apa yang ingin Anda ketahui, bukan file mana yang harus dibaca. Claude mengeksplorasi proyek sendiri dan mengembalikan ringkasan tentang bagaimana semuanya cocok bersama.",

1101 next: "Jalankan `/init` untuk menyiapkan `CLAUDE.md` sehingga Claude mengingat ini setiap sesi"1107 next: "Jalankan `/init` untuk menyiapkan `CLAUDE.md` sehingga Claude mengingat ini setiap sesi",

1108 prompt: "berikan saya gambaran umum codebase ini: arsitektur, direktori utama, dan bagaimana bagian-bagiannya terhubung"

1102 },1109 },

1103 "explain-unfamiliar-code": {1110 "explain-unfamiliar-code": {

1104 title: "Jelaskan kode yang tidak familiar",1111 title: "Jelaskan kode yang tidak familiar",

1105 teaches: "Sebutkan file dan katakan format apa yang Anda inginkan jawabannya. Tukar halaman HTML dengan diagram, poin-poin, atau apa pun yang sesuai dengan cara Anda belajar.",1112 teaches: "Sebutkan file dan katakan format apa yang Anda inginkan jawabannya. Tukar halaman HTML dengan diagram, poin-poin, atau apa pun yang sesuai dengan cara Anda belajar.",

1106 next: "Atur gaya output sehingga Claude selalu menjelaskan dalam format pilihan Anda"1113 next: "Atur gaya output sehingga Claude selalu menjelaskan dalam format pilihan Anda",

1114 prompt: "jelaskan apa yang dilakukan {path} dan bagaimana data mengalir melaluinya. tuliskan sebagai {format}",

1115 slots: {

1116 path: "src/scheduler/queue.ts",

1117 format: "halaman HTML dengan diagram, lalu buka di browser saya"

1118 }

1107 },1119 },

1108 "find-where-something-happens": {1120 "find-where-something-happens": {

1109 title: "Temukan di mana sesuatu terjadi",1121 title: "Temukan di mana sesuatu terjadi",

1110 teaches: "Cari berdasarkan perilaku, bukan nama file. Pencarian bekerja bahkan ketika Anda tidak tahu apa nama file atau direktori mana yang ditempatinya."1122 teaches: "Cari berdasarkan perilaku, bukan nama file. Pencarian bekerja bahkan ketika Anda tidak tahu apa nama file atau direktori mana yang ditempatinya.",

1123 prompt: "di mana kita {behavior}?",

1124 slots: {

1125 behavior: "memvalidasi jenis file yang diunggah"

1126 }

1111 },1127 },

1112 "see-what-depends-on": {1128 "see-what-depends-on": {

1113 title: "Periksa apa yang rusak sebelum Anda menghapus",1129 title: "Periksa apa yang rusak sebelum Anda menghapus",

1114 teaches: "Tanya sebelum Anda menghapus apa pun. Daftar pemanggil dan efek hilir memberi tahu Anda apakah Anda melihat pembersihan satu baris atau perubahan yang perlu Anda koordinasikan."1130 teaches: "Tanya sebelum Anda menghapus apa pun. Daftar pemanggil dan efek hilir memberi tahu Anda apakah Anda melihat pembersihan satu baris atau perubahan yang perlu Anda koordinasikan.",

1131 prompt: "apa yang akan rusak jika saya menghapus {target}?",

1132 slots: {

1133 target: "helper retryWithBackoff"

1134 }

1115 },1135 },

1116 "trace-how-code-evolved": {1136 "trace-how-code-evolved": {

1117 title: "Lacak bagaimana kode berkembang",1137 title: "Lacak bagaimana kode berkembang",

1118 teaches: "Tunjuk riwayat komit ketika pertanyaannya adalah mengapa, bukan apa. Claude membaca log dan blame untuk versi kontrol apa pun yang Anda gunakan dan menjelaskan keputusan di balik implementasi saat ini."1138 teaches: "Tunjuk riwayat commit ketika pertanyaannya adalah mengapa, bukan apa. Claude membaca log dan blame untuk version control apa pun yang Anda gunakan dan menjelaskan keputusan di balik implementasi saat ini.",

1139 prompt: "telusuri riwayat commit {path} dan ringkas bagaimana file tersebut berkembang dan mengapa",

1140 slots: {

1141 path: "internal/auth/session.go"

1142 }

1119 },1143 },

1120 "scope-a-change-before": {1144 "scope-a-change-before": {

1121 title: "Tentukan cakupan perubahan sebelum Anda mulai",1145 title: "Tentukan cakupan perubahan sebelum Anda mulai",

1122 teaches: "Ukur pekerjaan sebelum Anda berkomitmen pada roadmap. Daftar file memberi tahu Anda apakah Anda melihat satu komponen atau perubahan lintas-potong."1146 teaches: "Ukur pekerjaan sebelum Anda memasukkannya ke roadmap. Daftar file memberi tahu Anda apakah Anda melihat satu komponen atau perubahan lintas-potong.",

1147 prompt: "file mana yang perlu saya ubah untuk {change}?",

1148 slots: {

1149 change: "menambahkan toggle mode gelap ke pengaturan"

1150 }

1123 },1151 },

1124 "ask-the-codebase-a": {1152 "ask-the-codebase-a": {

1125 title: "Tanyakan pertanyaan produk kepada basis kode",1153 title: "Tanyakan pertanyaan produk kepada codebase",

1126 teaches: "Nyatakan peran Anda sehingga jawaban berada pada tingkat yang tepat. Claude menjelaskan apa yang sebenarnya dilakukan produk dari kode sumber, tanpa Anda perlu membacanya.",1154 teaches: "Nyatakan peran Anda sehingga jawaban berada pada tingkat yang tepat. Claude menjelaskan apa yang sebenarnya dilakukan produk dari kode sumber, tanpa Anda perlu membacanya.",

1127 next: "Atur gaya output sehingga Claude selalu menyampaikan jawaban pada tingkat ini"1155 next: "Atur gaya output sehingga Claude selalu menyampaikan jawaban pada tingkat ini",

1156 prompt: "saya seorang {role}. jelaskan kepada saya apa yang terjadi ketika pengguna {action}, dari UI hingga hasilnya",

1157 slots: {

1158 role: "PM",

1159 action: "mengklik Export to PDF"

1160 }

1128 },1161 },

1129 "plan-a-multi-file": {1162 "plan-a-multi-file": {

1130 title: "Rencanakan perubahan multi-file sebelum menyentuh kode",1163 title: "Rencanakan perubahan multi-file sebelum menyentuh kode",

1131 teaches: "Menambahkan \"jangan edit dulu\" memisahkan eksplorasi dari perubahan, sehingga Anda melihat pendekatannya sebelum kode bergerak. Untuk membuat rencana-pertama menjadi default pada setiap prompt, tekan Shift+Tab untuk [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode)."1164 teaches: "Menambahkan \"jangan edit dulu\" memisahkan eksplorasi dari perubahan, sehingga Anda melihat pendekatannya sebelum kode bergerak. Untuk membuat rencana-pertama menjadi default pada setiap prompt, tekan Shift+Tab untuk [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode).",

1165 prompt: "rencanakan cara merefaktor {target} agar {goal}. cantumkan file yang akan Anda ubah, tetapi jangan edit apa pun dulu",

1166 slots: {

1167 target: "modul pembayaran",

1168 goal: "mendukung beberapa mata uang"

1169 }

1132 },1170 },

1133 "draft-a-spec-by": {1171 "draft-a-spec-by": {

1134 title: "Buat draf spesifikasi melalui wawancara",1172 title: "Buat draf spesifikasi melalui wawancara",

1135 teaches: "Minta untuk diwawancarai alih-alih menulis spesifikasi sendiri. Claude mengajukan pertanyaan terstruktur kepada Anda sampai persyaratan lengkap, lalu menulis hasilnya ke file.",1173 teaches: "Minta untuk diwawancarai alih-alih menulis spesifikasi sendiri. Claude mengajukan pertanyaan terstruktur kepada Anda sampai persyaratan lengkap, lalu menulis hasilnya ke file.",

1136 next: "Simpan pertanyaan wawancara Anda sebagai skill `/spec` sehingga setiap spesifikasi dimulai dengan cara yang sama"1174 next: "Simpan pertanyaan wawancara Anda sebagai skill `/spec` sehingga setiap spesifikasi dimulai dengan cara yang sama",

1175 prompt: "saya ingin membangun {feature}. wawancarai saya tentang implementasi, UX, kasus tepi, dan tradeoff hingga kita telah membahas semuanya, lalu tulis spesifikasinya ke SPEC.md",

1176 slots: {

1177 feature: "rate limit per workspace"

1178 }

1137 },1179 },

1138 "turn-a-meeting-into": {1180 "turn-a-meeting-into": {

1139 title: "Ubah pertemuan menjadi tiket",1181 title: "Ubah pertemuan menjadi tiket",

1140 teaches: "Lewati langkah transkripsi. Claude menarik item tindakan dari input yang tidak terstruktur dan menulisnya langsung ke pelacak Anda melalui [MCP](/docs/id/mcp), sehingga Anda meninjau tiket, bukan transkrip.",1182 teaches: "Lewati langkah transkripsi. Claude menarik item tindakan dari input yang tidak terstruktur dan menulisnya langsung ke pelacak Anda melalui [MCP](/docs/id/mcp), sehingga Anda meninjau tiket, bukan transkrip.",

1141 next: "Simpan ini sebagai skill `/tickets`"1183 next: "Simpan ini sebagai skill `/tickets`",

1184 prompt: "baca {input} dan tuliskan item tindakannya, lalu buat tiket {tracker} untuk masing-masing dengan kriteria penerimaan",

1185 slots: {

1186 input: "@meeting-notes.md",

1187 tracker: "Linear"

1188 }

1142 },1189 },

1143 "map-edge-cases-before": {1190 "map-edge-cases-before": {

1144 title: "Petakan kasus tepi sebelum membangun",1191 title: "Petakan kasus tepi sebelum membangun",

1145 teaches: "Tanyakan apa yang hilang, bukan apa yang ada. Claude mencantumkan status kesalahan, status kosong, dan kasus tepi yang cenderung dilewatkan desain jalur bahagia."1192 teaches: "Tanyakan apa yang hilang, bukan apa yang ada. Claude mencantumkan status kesalahan, status kosong, dan kasus tepi yang cenderung dilewatkan desain jalur bahagia.",

1193 prompt: "cantumkan status kesalahan, status kosong, dan kasus tepi untuk {feature} yang perlu dicakup oleh desain",

1194 slots: {

1195 feature: "alur unggah file"

1196 }

1146 },1197 },

1147 "turn-a-mockup-into": {1198 "turn-a-mockup-into": {

1148 title: "Ubah mockup menjadi prototipe yang berfungsi",1199 title: "Ubah mockup menjadi prototipe yang berfungsi",

1149 teaches: "Prototipe yang dapat diklik menjawab pertanyaan yang tidak dapat dijawab mockup statis. Serahkan kode yang berfungsi kepada teknik alih-alih menjelaskan interaksi dalam dokumen."1200 teaches: "Prototipe yang dapat diklik menjawab pertanyaan yang tidak dapat dijawab mockup statis. Serahkan kode yang berfungsi kepada tim engineering alih-alih menjelaskan interaksi dalam dokumen.",

1201 prompt: "berikut adalah mockup. bangun prototipe yang berfungsi yang dapat saya klik, sesuai dengan tata letak dan status yang ditunjukkan"

1150 },1202 },

1151 "implement-from-a-screenshot": {1203 "implement-from-a-screenshot": {

1152 title: "Implementasikan dari tangkapan layar dan periksa sendiri",1204 title: "Implementasikan dari tangkapan layar dan periksa sendiri",

1153 teaches: "Ini memberikan Claude loop verifikasi: ia merender, membandingkan dengan gambar sumber, dan mengulangi tanpa Anda menunjukkan setiap celah.",1205 teaches: "Ini memberikan Claude loop verifikasi: ia merender, membandingkan dengan gambar sumber, dan mengulangi tanpa Anda menunjukkan setiap celah.",

1154 next: "Gunakan `/goal` untuk membuat Claude terus mengulangi sampai tangkapan layar cocok"1206 next: "Gunakan `/goal` untuk membuat Claude terus mengulangi sampai tangkapan layar cocok",

1207 prompt: "implementasikan desain ini, lalu ambil tangkapan layar hasilnya, bandingkan dengan aslinya, dan perbaiki perbedaan apa pun"

1155 },1208 },

1156 "follow-an-existing-pattern": {1209 "follow-an-existing-pattern": {

1157 title: "Ikuti pola yang ada",1210 title: "Ikuti pola yang ada",

1158 teaches: "Tunjuk kode yang sudah Anda sukai. Tanpa referensi, Claude menggunakan praktik terbaik umum. Dengan satu, itu cocok dengan konvensi yang sebenarnya digunakan basis kode Anda.",1211 teaches: "Tunjuk kode yang sudah Anda sukai. Tanpa referensi, Claude menggunakan praktik terbaik umum. Dengan referensi, Claude mengikuti konvensi yang sebenarnya digunakan codebase Anda.",

1159 next: "Minta Claude untuk menulis pola yang diikutinya ke `CLAUDE.md` sehingga sesi mendatang cocok tanpa referensi"1212 next: "Minta Claude untuk menulis pola yang diikutinya ke `CLAUDE.md` sehingga sesi mendatang mengikutinya tanpa referensi",

1213 prompt: "lihat bagaimana {example} diimplementasikan untuk memahami polanya, lalu bangun {new} dengan cara yang sama",

1214 slots: {

1215 example: "handler webhook GitHub",

1216 new: "handler webhook Stripe"

1217 }

1160 },1218 },

1161 "add-a-small-well": {1219 "add-a-small-well": {

1162 title: "Tambahkan fitur kecil yang terdefinisi dengan baik",1220 title: "Tambahkan fitur kecil yang terdefinisi dengan baik",

1163 teaches: "Nyatakan input dan output, bukan cara membangunnya. Claude menemukan di mana kode serupa berada dan menambahkan milik Anda di sampingnya."1221 teaches: "Nyatakan input dan output, bukan cara membangunnya. Claude menemukan di mana kode serupa berada dan menambahkan milik Anda di sampingnya.",

1222 prompt: "tambahkan endpoint {endpoint} yang mengembalikan {payload}",

1223 slots: {

1224 endpoint: "/health",

1225 payload: "versi aplikasi dan uptime"

1226 }

1164 },1227 },

1165 "build-a-small-internal": {1228 "build-a-small-internal": {

1166 title: "Bangun alat internal kecil dari awal",1229 title: "Bangun alat internal kecil dari awal",

1167 teaches: "Anda tidak memerlukan proyek, kerangka kerja, atau langkah pembangunan. Jelaskan alat dan minta Claude untuk membukanya sehingga Anda melihatnya bekerja segera."1230 teaches: "Anda tidak memerlukan proyek, kerangka kerja, atau langkah build. Jelaskan alat tersebut dan minta Claude untuk membukanya sehingga Anda melihatnya bekerja segera.",

1231 prompt: "buat {tool} menggunakan HTML, CSS, dan JavaScript vanilla, lalu buka di browser saya",

1232 slots: {

1233 tool: "papan Kanban drag-and-drop dengan tiga kolom"

1234 }

1168 },1235 },

1169 "work-an-issue-end": {1236 "work-an-issue-end": {

1170 title: "Kerjakan masalah dari awal hingga akhir",1237 title: "Kerjakan masalah dari awal hingga akhir",

1171 teaches: "Berikan nomor masalah, bukan ringkasan. Claude membaca tiket lengkap itu sendiri, sehingga persyaratan yang akan Anda lupakan untuk disebutkan muncul, dan itu memvalidasi perubahan sebelum melaporkan kembali."1238 teaches: "Berikan nomor masalah, bukan ringkasan. Claude membaca tiket lengkap itu sendiri, sehingga persyaratan yang akan Anda lupakan untuk disebutkan ikut tercakup, dan Claude memvalidasi perubahan sebelum melaporkan kembali.",

1239 prompt: "baca issue #{issue}, implementasikan perbaikannya, dan jalankan tes",

1240 slots: {

1241 issue: "312"

1242 }

1172 },1243 },

1173 "find-and-update-copy": {1244 "find-and-update-copy": {

1174 title: "Temukan dan perbarui salinan di seluruh basis kode",1245 title: "Temukan dan perbarui salinan di seluruh codebase",

1175 teaches: "Tanyakan varian dan katakan apa yang harus dilewati. Claude menemukan frasa yang akan dilewatkan pencarian literal dan meninggalkan fixture pengujian dan riwayat tidak tersentuh, sehingga Anda hanya meninjau salinan yang sebenarnya dilihat pengguna."1246 teaches: "Tanyakan varian dan katakan apa yang harus dilewati. Claude menemukan frasa yang akan dilewatkan pencarian literal dan meninggalkan fixture pengujian dan riwayat tidak tersentuh, sehingga Anda hanya meninjau salinan yang sebenarnya dilihat pengguna.",

1247 prompt: "temukan setiap tempat kita menulis \"{copy}\" atau varian yang mirip, tunjukkan masing-masing dalam konteksnya, lalu perbarui semuanya menjadi \"{new}\". biarkan tes dan changelog apa adanya",

1248 slots: {

1249 copy: "Daftar gratis",

1250 new: "Mulai uji coba gratis"

1251 }

1176 },1252 },

1177 "draft-from-past-examples": {1253 "draft-from-past-examples": {

1178 title: "Buat draf dokumen dari contoh masa lalu",1254 title: "Buat draf dokumen dari contoh masa lalu",

1179 teaches: "Tunjuk folder pekerjaan yang selesai alih-alih menjelaskan gaya Anda. Claude mempelajari struktur dan suara dari apa yang sudah Anda kirim, sehingga draf pertama terlihat seperti salah satu milik Anda.",1255 teaches: "Tunjuk folder pekerjaan yang selesai alih-alih menjelaskan gaya Anda. Claude mempelajari struktur dan suara dari apa yang sudah Anda kirim, sehingga draf pertama terlihat seperti salah satu milik Anda.",

1180 next: "Simpan suara sebagai skill sehingga setiap draf dimulai di sana"1256 next: "Simpan suara sebagai skill sehingga setiap draf dimulai di sana",

1257 prompt: "baca {examples} di {folder} untuk mempelajari struktur dan gaya bahasanya, lalu buat draf baru untuk {topic}",

1258 slots: {

1259 examples: "penilaian dampak privasi",

1260 folder: "legal/pia/",

1261 topic: "integrasi analitik baru"

1262 }

1181 },1263 },

1182 "write-tests-run-them": {1264 "write-tests-run-them": {

1183 title: "Tulis tes, jalankan, perbaiki kegagalan",1265 title: "Tulis tes, jalankan, perbaiki kegagalan",

1184 teaches: "Minta untuk menulis, menjalankan, dan memperbaiki bersama-sama sehingga Claude mengulangi tanpa berhenti untuk instruksi.",1266 teaches: "Minta untuk menulis, menjalankan, dan memperbaiki bersama-sama sehingga Claude mengulangi tanpa berhenti untuk instruksi.",

1185 next: "Jalankan `/init` sehingga Claude mempelajari perintah tes Anda secara otomatis"1267 next: "Jalankan `/init` sehingga Claude mempelajari perintah tes Anda secara otomatis",

1268 prompt: "tulis tes untuk {path}, jalankan, dan perbaiki kegagalan apa pun",

1269 slots: {

1270 path: "app/parsers/feed.py"

1271 }

1186 },1272 },

1187 "drive-implementation-from-tests": {1273 "drive-implementation-from-tests": {

1188 title: "Dorong implementasi dari tes",1274 title: "Dorong implementasi dari tes",

1189 teaches: "Pengembangan berbasis tes: tes mendefinisikan kapan pekerjaan selesai, dan Claude mengulangi implementasi sampai mereka lulus."1275 teaches: "Pengembangan berbasis tes: tes mendefinisikan kapan pekerjaan selesai, dan Claude mengulangi implementasi sampai tes tersebut lulus.",

1276 prompt: "tulis tes untuk {feature} terlebih dahulu, lalu implementasikan hingga tesnya lulus",

1277 slots: {

1278 feature: "alur reset kata sandi"

1279 }

1190 },1280 },

1191 "fill-gaps-from-a": {1281 "fill-gaps-from-a": {

1192 title: "Isi celah dari laporan cakupan",1282 title: "Isi celah dari laporan cakupan",

1193 teaches: "Tunjuk laporan cakupan alih-alih menebak apa yang tidak diuji. Claude membaca angka sebenarnya dan menulis tes untuk file yang paling membutuhkannya.",1283 teaches: "Tunjuk laporan cakupan alih-alih menebak apa yang tidak diuji. Claude membaca angka sebenarnya dan menulis tes untuk file yang paling membutuhkannya.",

1194 next: "Atur ini sebagai `/goal` sehingga Claude terus menulis tes sampai cakupan mencapai target"1284 next: "Atur ini sebagai `/goal` sehingga Claude terus menulis tes sampai cakupan mencapai target",

1285 prompt: "baca {report} dan tambahkan tes untuk file dengan cakupan terendah hingga masing-masing di atas {target}%",

1286 slots: {

1287 report: "coverage/coverage-summary.json",

1288 target: "80"

1289 }

1195 },1290 },

1196 "port-code-between-languages": {1291 "port-code-between-languages": {

1197 title: "Port kode ke bahasa lain",1292 title: "Port kode ke bahasa lain",

1198 teaches: "Katakan apa yang harus dipertahankan, bukan hanya bahasa target. Menyebutkan API atau perilaku yang harus tetap sama memberikan Claude kontrak untuk memeriksa port."1293 teaches: "Katakan apa yang harus dipertahankan, bukan hanya bahasa target. Menyebutkan API atau perilaku yang harus tetap sama memberikan Claude kontrak untuk memeriksa port.",

1294 prompt: "port {source} ke {target}, dengan mempertahankan {keep} yang sama",

1295 slots: {

1296 source: "modul Python ini",

1297 target: "Rust",

1298 keep: "API publik dan perilaku tes"

1299 }

1199 },1300 },

1200 "generate-docs-for-code": {1301 "generate-docs-for-code": {

1201 title: "Hasilkan dokumen untuk kode yang tidak terdokumentasi",1302 title: "Hasilkan dokumen untuk kode yang tidak terdokumentasi",

1202 teaches: "Sebutkan cakupan dan format. Claude menemukan apa yang hilang dan cocok dengan gaya komentar yang sudah ada di file, sehingga dokumen baru terlihat seperti sisanya."1303 teaches: "Sebutkan cakupan dan format. Claude menemukan apa yang hilang dan mengikuti gaya komentar yang sudah ada di file, sehingga dokumen baru terlihat seperti sisanya.",

1304 prompt: "temukan {scope} tanpa komentar {format} dan tambahkan, sesuai dengan gaya yang sudah digunakan di file tersebut",

1305 slots: {

1306 scope: "fungsi publik di src/auth/",

1307 format: "JSDoc"

1308 }

1203 },1309 },

1204 "migrate-a-pattern-across": {1310 "migrate-a-pattern-across": {

1205 title: "Migrasikan pola di seluruh basis kode",1311 title: "Migrasikan pola di seluruh codebase",

1206 teaches: "Jelaskan pola lama dan yang baru. Meminta Claude untuk mengidentifikasi setiap tempat terlebih dahulu berarti situs panggilan tercantum dalam respons, sehingga Anda dapat memeriksa tidak ada yang terlewat. Untuk migrasi di banyak file, jalankan [/batch](/docs/id/commands). Claude membagi pekerjaan menjadi unit untuk Anda setujui, lalu subagent latar belakang membuat perubahan dan membuka satu pull request per unit."1312 teaches: "Jelaskan pola lama dan yang baru. Meminta Claude untuk mengidentifikasi setiap tempat terlebih dahulu berarti situs panggilan tercantum dalam respons, sehingga Anda dapat memeriksa tidak ada yang terlewat. Untuk migrasi di banyak file, jalankan [/batch](/docs/id/commands). Claude membagi pekerjaan menjadi unit untuk Anda setujui, lalu subagent latar belakang membuat perubahan.",

1313 prompt: "migrasikan semuanya dari {from} ke {to}: identifikasi setiap tempat yang perlu diubah, lalu lakukan perubahannya",

1314 slots: {

1315 from: "API logging lama",

1316 to: "logger terstruktur"

1317 }

1207 },1318 },

1208 "optimize-against-a-measurable": {1319 "optimize-against-a-measurable": {

1209 title: "Optimalkan terhadap target yang terukur",1320 title: "Optimalkan terhadap target yang terukur",

1210 teaches: "Menyatakan metrik dan target memberikan Claude definisi yang jelas tentang selesai.",1321 teaches: "Menyatakan metrik dan target memberikan Claude definisi yang jelas tentang selesai.",

1211 next: "Atur ini sebagai `/goal` sehingga Claude terus mengukur dan mengulangi sampai mencapai angka"1322 next: "Atur ini sebagai `/goal` sehingga Claude terus mengukur dan mengulangi sampai mencapai angka",

1323 prompt: "optimalkan {target} untuk menurunkan {metric} dari {current} menjadi di bawah {goal}",

1324 slots: {

1325 target: "kueri pencarian",

1326 metric: "latensi p95",

1327 current: "2s",

1328 goal: "500ms"

1329 }

1212 },1330 },

1213 "fix-a-precise-visual": {1331 "fix-a-precise-visual": {

1214 title: "Perbaiki bug visual yang tepat",1332 title: "Perbaiki bug visual yang tepat",

1215 teaches: "Umpan balik visual yang tepat mendapat perbaikan yang tepat. Nyatakan elemen, pengukuran, dan viewport yang tepat.",1333 teaches: "Umpan balik visual yang tepat mendapat perbaikan yang tepat. Nyatakan elemen, pengukuran, dan viewport yang tepat.",

1216 next: "Tambahkan alat pratinjau sehingga Claude mengambil tangkapan layar dan memverifikasi perbaikan itu sendiri"1334 next: "Tambahkan alat pratinjau sehingga Claude mengambil tangkapan layar dan memverifikasi perbaikan itu sendiri",

1335 prompt: "{element} melampaui {container} sebesar {amount} di {viewport}. perbaiki.",

1336 slots: {

1337 element: "tombol login",

1338 amount: "20px",

1339 container: "batas kartu",

1340 viewport: "seluler"

1341 }

1217 },1342 },

1218 "review-your-changes-before": {1343 "review-your-changes-before": {

1219 title: "Tinjau perubahan Anda sebelum Anda berkomitmen",1344 title: "Tinjau perubahan Anda sebelum melakukan commit",

1220 teaches: "Tangkap masalah saat masih murah untuk diperbaiki. Claude membaca file yang diubah sepenuhnya, bukan hanya baris diff, sehingga menemukan masalah yang ditinggalkan tinjauan diri cepat.",1345 teaches: "Tangkap masalah saat masih murah untuk diperbaiki. Claude membaca file yang diubah sepenuhnya, bukan hanya baris diff, sehingga menemukan masalah yang terlewat oleh tinjauan diri yang cepat.",

1221 next: "Jalankan `/code-review` untuk pemeriksaan yang sama dalam satu perintah"1346 next: "Jalankan `/code-review` untuk pemeriksaan yang sama dalam satu perintah",

1347 prompt: "tinjau perubahan saya yang belum di-commit dan tandai apa pun yang terlihat berisiko sebelum saya melakukan commit"

1222 },1348 },

1223 "review-a-pull-request": {1349 "review-a-pull-request": {

1224 title: "Tinjau permintaan tarik",1350 title: "Tinjau pull request",

1225 teaches: "Claude meninjau dengan seluruh basis kode dalam konteks, bukan hanya diff. Ia membaca kode yang diubah dan apa yang dipanggilnya, sehingga menangkap masalah yang akan dilewatkan tinjauan hanya-diff.",1351 teaches: "Claude meninjau dengan seluruh codebase dalam konteks, bukan hanya diff. Ia membaca kode yang diubah dan apa yang dipanggilnya, sehingga menangkap masalah yang akan dilewatkan tinjauan hanya-diff.",

1226 next: "Aktifkan ini untuk setiap PR dengan Code Review"1352 next: "Jalankan `/code-review <pr#>` dalam satu perintah, atau aktifkan Code Review untuk setiap PR",

1353 prompt: "tinjau PR #{pr} dan ringkas apa yang berubah, lalu cantumkan kekhawatiran apa pun",

1354 slots: {

1355 pr: "247"

1356 }

1227 },1357 },

1228 "review-infrastructure-changes-before": {1358 "review-infrastructure-changes-before": {

1229 title: "Tinjau perubahan infrastruktur sebelum menerapkan",1359 title: "Tinjau perubahan infrastruktur sebelum menerapkan",

1230 teaches: "Output rencana padat dan sulit dipindai. Menempelkannya memberi Anda ringkasan bahasa biasa tentang apa yang sebenarnya akan berubah sebelum Anda menerapkannya."1360 teaches: "Output rencana padat dan sulit dipindai. Menempelkannya memberi Anda ringkasan bahasa biasa tentang apa yang sebenarnya akan berubah sebelum Anda menerapkannya.",

1361 prompt: "berikut output Terraform plan saya. apa yang akan dilakukan ini, dan apakah ada sesuatu di sini yang akan menimbulkan masalah?"

1231 },1362 },

1232 "run-a-security-review": {1363 "run-a-security-review": {

1233 title: "Jalankan tinjauan keamanan dengan subagent",1364 title: "Jalankan tinjauan keamanan dengan subagent",

1234 teaches: "[Subagent](/docs/id/sub-agents) menjalankan audit dalam jendela konteksnya sendiri dan melaporkan kembali ringkasan, sehingga tinjauan keamanan yang panjang tidak mengisi sesi utama Anda. Subagent tujuan umum bawaan menangani ini tanpa penyiapan tambahan.",1365 teaches: "[Subagent](/docs/id/sub-agents) menjalankan audit dalam context window-nya sendiri dan melaporkan kembali ringkasan, sehingga tinjauan keamanan yang panjang tidak mengisi sesi utama Anda. Subagent tujuan umum bawaan menangani ini tanpa penyiapan tambahan.",

1235 next: "Siapkan subagent tinjauan keamanan khusus yang dapat digunakan seluruh tim Anda"1366 next: "Siapkan subagent tinjauan keamanan khusus yang dapat digunakan seluruh tim Anda",

1367 prompt: "gunakan subagent untuk meninjau {path} terkait masalah keamanan dan laporkan apa yang ditemukannya",

1368 slots: {

1369 path: "src/api/"

1370 }

1236 },1371 },

1237 "review-content-before-sending": {1372 "review-content-before-sending": {

1238 title: "Tangkap masalah sebelum tinjauan formal",1373 title: "Tangkap masalah sebelum tinjauan formal",

1239 teaches: "Dapatkan lintasan pertama sebelum manusia menghabiskan waktu untuk itu. Sebutkan kekhawatiran yang ingin Anda periksa sehingga tinjauan terfokus, lalu perbaiki apa yang ditemukannya dan kirim draf yang lebih bersih.",1374 teaches: "Dapatkan lintasan pertama sebelum manusia menghabiskan waktu untuk itu. Sebutkan kekhawatiran yang ingin Anda periksa sehingga tinjauan terfokus, lalu perbaiki apa yang ditemukannya dan kirim draf yang lebih bersih.",

1240 next: "Tangkap daftar periksa tinjauan Anda sebagai skill yang dapat dijalankan seluruh tim Anda"1375 next: "Tangkap daftar periksa tinjauan Anda sebagai skill yang dapat dijalankan seluruh tim Anda",

1376 prompt: "tinjau {file} untuk {concerns} dan cantumkan apa pun yang harus saya perbaiki sebelum diserahkan ke {reviewer}",

1377 slots: {

1378 file: "launch-post.md",

1379 concerns: "klaim yang tidak didukung, atribusi yang hilang, dan masalah pedoman merek",

1380 reviewer: "tim legal"

1381 }

1241 },1382 },

1242 "course-correct-a-wrong": {1383 "course-correct-a-wrong": {

1243 title: "Koreksi kursus pendekatan yang salah",1384 title: "Koreksi arah pendekatan yang salah",

1244 teaches: "Sebutkan batasan yang dilewatkan Claude, bukan hanya bahwa itu salah. Alasan spesifik memberikan Claude batasan konkret untuk dipenuhi pada percobaan ulang, alih-alih menebak lagi.",1385 teaches: "Sebutkan batasan yang dilewatkan Claude, bukan hanya bahwa itu salah. Alasan spesifik memberikan Claude batasan konkret untuk dipenuhi pada retry, alih-alih menebak lagi.",

1245 next: "Tekan `Esc` dua kali untuk membuka menu rewind dan mengembalikan kode dan percakapan sehingga percobaan ulang dimulai bersih"1386 next: "Tekan `Esc` dua kali untuk membuka menu rewind dan mengembalikan kode dan percakapan sehingga retry dimulai bersih",

1387 prompt: "itu tidak benar: {feedback}. coba pendekatan lain",

1388 slots: {

1389 feedback: "signature fungsi harus tetap kompatibel mundur"

1390 }

1246 },1391 },

1247 "narrow-the-scope-of": {1392 "narrow-the-scope-of": {

1248 title: "Persempit cakupan perubahan",1393 title: "Persempit cakupan perubahan",

1249 teaches: "Ketika arahnya benar tetapi perubahan terlalu luas, minta Claude untuk menyimpan bagian darinya daripada membatalkan semuanya. Batas yang dinyatakan membuat perbaikan kecil dari menjadi refaktor."1394 teaches: "Ketika arahnya benar tetapi perubahan terlalu luas, minta Claude untuk menyimpan sebagian darinya daripada membatalkan semuanya. Batas yang dinyatakan mencegah perbaikan kecil berubah menjadi refaktor.",

1395 prompt: "itu terlalu banyak. simpan hanya perubahan pada {scope} dan batalkan edit Anda yang lain",

1396 slots: {

1397 scope: "logika validasi di src/forms/"

1398 }

1250 },1399 },

1251 "turn-a-correction-into": {1400 "turn-a-correction-into": {

1252 title: "Ubah koreksi menjadi aturan",1401 title: "Ubah koreksi menjadi aturan",

1253 teaches: "Koreksi dalam obrolan tidak dibagikan dengan tim Anda. Aturan dalam [CLAUDE.md](/docs/id/memory) proyek dibagikan setelah Anda berkomitmen, dan Claude membacanya di awal setiap sesi.",1402 teaches: "Koreksi dalam obrolan tidak dibagikan dengan tim Anda. Aturan dalam [CLAUDE.md](/docs/id/memory) proyek dibagikan setelah Anda melakukan commit, dan Claude membacanya di awal setiap sesi.",

1254 next: "Buka `/memory` untuk meninjau apa yang ditulis Claude"1403 next: "Buka `/memory` untuk meninjau apa yang ditulis Claude",

1404 prompt: "Anda terus {mistake}. tambahkan aturan ke CLAUDE.md agar ini tidak terjadi lagi",

1405 slots: {

1406 mistake: "menggunakan default export padahal proyek ini menggunakan named export"

1407 }

1255 },1408 },

1256 "resolve-merge-conflicts": {1409 "resolve-merge-conflicts": {

1257 title: "Selesaikan konflik penggabungan",1410 title: "Selesaikan merge conflict",

1258 teaches: "Katakan status apa yang Anda inginkan, bukan penanda mana yang harus disimpan. Meminta alasan membuat penggabungan dapat ditinjau alih-alih kotak hitam."1411 teaches: "Katakan status apa yang Anda inginkan, bukan penanda mana yang harus disimpan. Meminta alasan membuat merge dapat ditinjau alih-alih menjadi kotak hitam.",

1412 prompt: "selesaikan merge conflict di branch ini dan jelaskan apa yang Anda pertahankan dari masing-masing sisi"

1259 },1413 },

1260 "commit-with-a-generated": {1414 "commit-with-a-generated": {

1261 title: "Berkomitmen dengan pesan yang dihasilkan",1415 title: "Lakukan commit dengan pesan yang dihasilkan",

1262 teaches: "Biarkan Claude menurunkan pesan dari diff. Ini cocok dengan gaya komit yang ada di repositori Anda."1416 teaches: "Biarkan Claude menurunkan pesan dari diff. Pesan tersebut mengikuti gaya commit yang sudah ada di repositori Anda.",

1417 prompt: "lakukan commit atas perubahan ini dengan pesan yang merangkum apa yang telah saya lakukan"

1263 },1418 },

1264 "open-a-pull-request": {1419 "open-a-pull-request": {

1265 title: "Buka permintaan tarik dari tiket",1420 title: "Buka pull request dari tiket",

1266 teaches: "Lewati pengalihan konteks antara pelacak, editor, dan GitHub. Satu prompt membaca spesifikasi, membuat perubahan, dan membuka PR."1421 teaches: "Lewati pengalihan konteks antara pelacak, editor, dan GitHub. Satu prompt membaca spesifikasi, membuat perubahan, dan membuka PR.",

1422 prompt: "temukan tiket {tracker} tentang {topic} dan buka PR yang mengimplementasikannya",

1423 slots: {

1424 tracker: "Linear",

1425 topic: "timeout login"

1426 }

1267 },1427 },

1268 "draft-release-notes-from": {1428 "draft-release-notes-from": {

1269 title: "Buat draf catatan rilis dari riwayat git",1429 title: "Buat draf catatan rilis dari riwayat git",

1270 teaches: "Berikan dua titik referensi dan struktur yang Anda inginkan. Claude membaca log komit di antara mereka dan membuat draf changelog yang dapat Anda edit.",1430 teaches: "Berikan dua titik referensi dan struktur yang Anda inginkan. Claude membaca log commit di antara keduanya dan membuat draf changelog yang dapat Anda edit.",

1271 next: "Simpan ini sebagai skill `/changelog`"1431 next: "Simpan ini sebagai skill `/changelog`",

1432 prompt: "bandingkan {from} dengan {to} dan buat draf catatan rilis yang dikelompokkan berdasarkan fitur, perbaikan, dan breaking change",

1433 slots: {

1434 from: "v2.3.0",

1435 to: "v2.4.0"

1436 }

1272 },1437 },

1273 "write-a-ci-workflow": {1438 "write-a-ci-workflow": {

1274 title: "Tulis alur kerja CI",1439 title: "Tulis workflow CI",

1275 teaches: "Jelaskan kapan harus dijalankan dan apa yang harus dilakukan; YAML dihasilkan untuk Anda, cocok dengan perintah pembangunan dan pengujian proyek Anda."1440 teaches: "Jelaskan kapan harus dijalankan dan apa yang harus dilakukan; YAML dihasilkan untuk Anda, disesuaikan dengan perintah build dan pengujian proyek Anda.",

1441 prompt: "tulis workflow GitHub Actions yang {steps} pada setiap push ke {branch}",

1442 slots: {

1443 steps: "menjalankan tes dan melakukan deploy ke staging",

1444 branch: "main"

1445 }

1276 },1446 },

1277 "find-and-fix-a": {1447 "find-and-fix-a": {

1278 title: "Temukan dan perbaiki tes yang gagal",1448 title: "Temukan dan perbaiki tes yang gagal",

1279 teaches: "Jelaskan gejala; Anda tidak perlu tahu file mana yang rusak. Claude menjalankan tes untuk melihat kegagalan, melacaknya ke sumber, dan memperbaikinya."1449 teaches: "Jelaskan gejala; Anda tidak perlu tahu file mana yang rusak. Claude menjalankan tes untuk melihat kegagalan, melacaknya ke sumber, dan memperbaikinya.",

1450 prompt: "tes {test} gagal, cari tahu penyebabnya dan perbaiki",

1451 slots: {

1452 test: "UserAuth"

1453 }

1280 },1454 },

1281 "investigate-a-reported-error": {1455 "investigate-a-reported-error": {

1282 title: "Selidiki kesalahan yang dilaporkan",1456 title: "Selidiki kesalahan yang dilaporkan",

1283 teaches: "Jelaskan gejala dan lokasi; Claude membaca jalur kode yang relevan dan melacak kemungkinan penyebab. Tempel jejak tumpukan atau log jika Anda memilikinya.",1457 teaches: "Jelaskan gejala dan lokasi; Claude membaca jalur kode yang relevan dan melacak kemungkinan penyebab. Tempel stack trace atau log jika Anda memilikinya.",

1284 next: "Letakkan deeplink dalam runbook Anda yang membuka Claude dengan prompt ini sudah diisi sebelumnya"1458 next: "Letakkan deeplink dalam runbook Anda yang membuka Claude dengan prompt ini sudah diisi sebelumnya",

1459 prompt: "pengguna melihat {symptom} di {where}. selidiki dan beri tahu saya apa yang sedang terjadi",

1460 slots: {

1461 symptom: "error 500",

1462 where: "/api/settings"

1463 }

1285 },1464 },

1286 "fix-a-build-error": {1465 "fix-a-build-error": {

1287 title: "Perbaiki kesalahan pembangunan di akar",1466 title: "Perbaiki kesalahan build di akarnya",

1288 teaches: "Meminta penyebab akar dan verifikasi mencegah patch tingkat permukaan yang menekan kesalahan tanpa memperbaikinya."1467 teaches: "Meminta akar penyebab dan verifikasi mencegah patch tingkat permukaan yang menekan kesalahan tanpa memperbaikinya.",

1468 prompt: "berikut error build. perbaiki akar penyebabnya dan verifikasi bahwa build berhasil"

1289 },1469 },

1290 "investigate-a-production-incident": {1470 "investigate-a-production-incident": {

1291 title: "Selidiki insiden produksi",1471 title: "Selidiki insiden produksi",

1292 teaches: "Daftar sumber bukti untuk berkorelasi, bukan langkah yang harus diambil. Claude membaca log, riwayat git, dan konfigurasi bersama untuk mempersempit penyebab.",1472 teaches: "Cantumkan sumber bukti untuk dikorelasikan, bukan langkah yang harus diambil. Claude membaca log, riwayat git, dan konfigurasi bersama untuk mempersempit penyebab.",

1293 next: "Hubungkan Sentry atau penyimpanan log Anda melalui MCP"1473 next: "Hubungkan Sentry atau penyimpanan log Anda melalui MCP",

1474 prompt: "{symptom}. periksa log, deploy terbaru, dan perubahan konfigurasi, lalu beri tahu saya penyebab yang paling mungkin",

1475 slots: {

1476 symptom: "endpoint checkout mulai mengembalikan error 500 sejak satu jam yang lalu"

1477 }

1294 },1478 },

1295 "query-logs-in-plain": {1479 "query-logs-in-plain": {

1296 title: "Pertanyaan log dalam bahasa Inggris biasa",1480 title: "Kueri log dalam bahasa biasa",

1297 teaches: "Tanyakan pertanyaan alih-alih menulis SQL. Claude membangun kueri, menjalankannya terhadap log yang terhubung, dan menunjukkan kueri dan hasilnya sehingga Anda dapat memeriksa apa yang dijalankan."1481 teaches: "Ajukan pertanyaan alih-alih menulis SQL. Claude menyusun kueri, menjalankannya terhadap log yang terhubung, dan menunjukkan kueri dan hasilnya sehingga Anda dapat memeriksa apa yang dijalankan.",

1482 prompt: "tunjukkan semua {events} untuk {scope} selama {timeframe}. tulis kuerinya, jalankan, dan beri tahu saya apa yang menonjol",

1483 slots: {

1484 events: "login yang gagal",

1485 scope: "layanan auth",

1486 timeframe: "24 jam terakhir"

1487 }

1298 },1488 },

1299 "diagnose-from-a-console": {1489 "diagnose-from-a-console": {

1300 title: "Diagnosa dari tangkapan layar konsol",1490 title: "Diagnosa dari tangkapan layar konsol",

1301 teaches: "Konsol cloud menunjukkan masalah tetapi bukan perintah untuk memperbaikinya. Claude membaca tangkapan layar dan menerjemahkan dasbor menjadi perintah kubectl, gcloud, atau aws untuk dijalankan."1491 teaches: "Konsol cloud menunjukkan masalah tetapi bukan perintah untuk memperbaikinya. Claude membaca tangkapan layar dan menerjemahkan dasbor menjadi perintah kubectl, gcloud, atau aws untuk dijalankan.",

1492 prompt: "berikut tangkapan layar {console}. jelaskan kepada saya mengapa {resource} gagal dan berikan perintah persis untuk memperbaikinya",

1493 slots: {

1494 console: "dasbor Kubernetes GCP",

1495 resource: "pod ini"

1496 }

1302 },1497 },

1303 "analyze-a-data-file": {1498 "analyze-a-data-file": {

1304 title: "Analisis file data",1499 title: "Analisis file data",

1305 teaches: "Pertanyaan sekali-jalan tidak memerlukan skrip sekali-jalan. Tunjuk file di folder proyek Anda dan Claude membacanya langsung, menemukan pola, dan menulis output di mana Anda minta.",1500 teaches: "Pertanyaan sekali-jalan tidak memerlukan skrip sekali-jalan. Tunjuk file di folder proyek Anda dan Claude membacanya langsung, menemukan pola, dan menulis output di tempat yang Anda minta.",

1306 next: "Hubungkan sumber data melalui MCP alih-alih mengekspor file"1501 next: "Hubungkan sumber data melalui MCP alih-alih mengekspor file",

1502 prompt: "baca {file}, ringkas pola-pola utamanya, dan tulis hasilnya ke {output}",

1503 slots: {

1504 file: "@reports/q1-signups.csv",

1505 output: "halaman HTML dengan grafik, lalu buka di browser saya"

1506 }

1307 },1507 },

1308 "generate-variations-from-performance": {1508 "generate-variations-from-performance": {

1309 title: "Hasilkan variasi dari data kinerja",1509 title: "Hasilkan variasi dari data kinerja",

1310 teaches: "Nyatakan batasan di awal sehingga generasi tetap dalam batas. Claude membaca metrik, memilih apa yang harus diganti, dan menghasilkan alternatif yang sesuai.",1510 teaches: "Nyatakan batasan di awal sehingga hasil yang dibuat tetap dalam batas. Claude membaca metrik, memilih apa yang harus diganti, dan menghasilkan alternatif yang sesuai.",

1311 next: "Hubungkan platform iklan melalui MCP alih-alih mengekspor file"1511 next: "Hubungkan platform iklan melalui MCP alih-alih mengekspor file",

1512 prompt: "baca {file}, temukan {items} yang berkinerja rendah, dan buat {n} variasi baru yang tetap di bawah {limit} karakter",

1513 slots: {

1514 file: "@ads-performance.csv",

1515 items: "headline",

1516 n: "20",

1517 limit: "90"

1518 }

1312 },1519 },

1313 "turn-a-recurring-task": {1520 "turn-a-recurring-task": {

1314 title: "Ubah tugas berulang menjadi skill",1521 title: "Ubah tugas berulang menjadi skill",

1315 teaches: "Sebutkan langkah-langkah sekali; gunakan kembali sebagai perintah. Claude menulis [skill](/docs/id/skills) yang dapat dijalankan siapa pun di tim Anda."1522 teaches: "Sebutkan langkah-langkah sekali; gunakan kembali sebagai perintah. Claude menulis [skill](/docs/id/skills) yang dapat dijalankan siapa pun di tim Anda.",

1523 prompt: "buat skill /{name} untuk proyek ini yang {steps}",

1524 slots: {

1525 name: "ship",

1526 steps: "menjalankan linter dan tes, lalu membuat draf pesan commit"

1527 }

1316 },1528 },

1317 "add-a-hook-for": {1529 "add-a-hook-for": {

1318 title: "Tambahkan hook untuk perilaku berulang",1530 title: "Tambahkan hook untuk perilaku berulang",

1319 teaches: "Hooks membuat perilaku otomatis alih-alih sesuatu yang harus Anda ingat untuk diminta. Jelaskan pemicu dan tindakan dan Claude menulis konfigurasi [hook](/docs/id/hooks)."1531 teaches: "Hooks membuat perilaku otomatis alih-alih sesuatu yang harus Anda ingat untuk diminta. Jelaskan pemicu dan tindakan dan Claude menulis konfigurasi [hook](/docs/id/hooks).",

1532 prompt: "tulis hook yang {action} setelah setiap {event}",

1533 slots: {

1534 action: "menjalankan prettier",

1535 event: "edit pada file .ts atau .tsx"

1536 }

1320 },1537 },

1321 "connect-a-tool-with": {1538 "connect-a-tool-with": {

1322 title: "Hubungkan alat dengan MCP",1539 title: "Hubungkan alat dengan MCP",

1323 teaches: "Hubungkan sumber sekali alih-alih menempel data setiap sesi. Setelah penyiapan [MCP](/docs/id/mcp), Claude membaca dari alat secara langsung ketika Anda menanyakannya."1540 teaches: "Hubungkan sumber sekali alih-alih menempel data setiap sesi. Setelah penyiapan [MCP](/docs/id/mcp), Claude membaca dari alat secara langsung ketika Anda menanyakannya.",

1541 prompt: "siapkan server MCP {server} agar Anda dapat membaca {data} saya secara langsung",

1542 slots: {

1543 server: "Sentry",

1544 data: "laporan error"

1545 }

1324 },1546 },

1325 "capture-what-to-remember": {1547 "capture-what-to-remember": {

1326 title: "Tangkap apa yang harus diingat untuk lain kali",1548 title: "Tangkap apa yang harus diingat untuk lain kali",

1327 teaches: "Tanya sebelum Anda lupa. Claude tahu apa yang harus dipikirkan sesi ini dan mengusulkan entri [CLAUDE.md](/docs/id/memory) sehingga sesi berikutnya dimulai dengan konteks itu."1549 teaches: "Tanya sebelum Anda lupa. Claude tahu apa yang harus dipikirkan sesi ini dan mengusulkan entri [CLAUDE.md](/docs/id/memory) sehingga sesi berikutnya dimulai dengan konteks itu.",

1550 prompt: "ringkas apa yang kita lakukan di sesi ini dan sarankan apa yang perlu ditambahkan ke CLAUDE.md"

1328 }1551 }

1329};1552};

1330 1553 

remote-control.md +27 −13

Details

220 220 

221Perintah ini bekerja selama sekitar empat jam setelah server berhenti. Setelah itu, jalankan `claude remote-control` untuk memulai sesi baru. Jika Anda mengarsipkan sesi sementara itu, `--continue` dan `--session-id` membatalkan arsip pada Claude Code v2.1.228 atau lebih baru.221Perintah ini bekerja selama sekitar empat jam setelah server berhenti. Setelah itu, jalankan `claude remote-control` untuk memulai sesi baru. Jika Anda mengarsipkan sesi sementara itu, `--continue` dan `--session-id` membatalkan arsip pada Claude Code v2.1.228 atau lebih baru.

222 222 

223Untuk membawa kembali sesi yang Anda mulai dengan `claude --remote-control` atau `/remote-control`, lanjutkan percakapan dengan `claude --continue` atau `claude --resume`. Jika Remote Control tidak terhubung kembali, lihat [Couldn't reconnect to your Remote Control session](#couldnt-reconnect-to-your-remote-control-session).223Untuk membawa kembali sesi yang Anda mulai dengan `claude --remote-control` atau `/remote-control`, lanjutkan percakapan dengan `claude --continue` atau `claude --resume`. Untuk mode izin yang digunakan saat percakapan yang dilanjutkan dimulai, lihat [mode izin saat melanjutkan](/docs/id/sessions#permission-mode-on-resume). Jika Remote Control tidak terhubung kembali, lihat [Couldn't reconnect to your Remote Control session](#couldnt-reconnect-to-your-remote-control-session).

224 224 

225Jika Anda melanjutkan percakapan di terminal kedua sementara yang pertama masih memiliki Remote Control aktif, Claude Code mencetak pemberitahuan `Remote Control not started here` di terminal kedua dan membiarkan Remote Control mati di sana bukan mengambil sesi dari yang pertama. Jalankan `/remote-control` di terminal kedua untuk memindahkan Remote Control ke sana.225Jika Anda melanjutkan percakapan di terminal kedua sementara yang pertama masih memiliki Remote Control aktif, Claude Code mencetak pemberitahuan `Remote Control not started here` di terminal kedua dan membiarkan Remote Control mati di sana bukan mengambil sesi dari yang pertama. Jalankan `/remote-control` di terminal kedua untuk memindahkan Remote Control ke sana.

226 226 


367* **Pemadaman jaringan yang berkepanjangan**: jika mesin Anda aktif tetapi tidak dapat menjangkau jaringan, apa yang Anda lakukan selanjutnya tergantung pada mode:367* **Pemadaman jaringan yang berkepanjangan**: jika mesin Anda aktif tetapi tidak dapat menjangkau jaringan, apa yang Anda lakukan selanjutnya tergantung pada mode:

368 * **Server mode**: Claude Code menyerah setelah kira-kira 10 menit dan proses `claude remote-control` keluar. Jalankan `claude remote-control` lagi untuk memulai sesi baru.368 * **Server mode**: Claude Code menyerah setelah kira-kira 10 menit dan proses `claude remote-control` keluar. Jalankan `claude remote-control` lagi untuk memulai sesi baru.

369 * **Sesi interaktif**: terus bekerja secara lokal. Claude Code mencoba ulang selama pemadaman berlangsung dan terhubung kembali secara otomatis ketika jaringan kembali.369 * **Sesi interaktif**: terus bekerja secara lokal. Claude Code mencoba ulang selama pemadaman berlangsung dan terhubung kembali secara otomatis ketika jaringan kembali.

370* **Lampiran yang tidak terunduh**: jika file yang Anda lampirkan dari ponsel atau browser tidak dapat diunduh ke mesin Anda, Claude tetap menerima pesan Anda dan file yang berhasil diunduh. Sebagai pengganti file yang hilang, Claude Code menambahkan catatan seperti `[1 of 3 attachments did not arrive]` ke pesan.

370* **Detak jantung kehadiran gagal**: jika sesi interaktif terputus dengan `could not reach the Remote Control server for about 30 minutes`, jalankan `/remote-control` untuk terhubung kembali.371* **Detak jantung kehadiran gagal**: jika sesi interaktif terputus dengan `could not reach the Remote Control server for about 30 minutes`, jalankan `/remote-control` untuk terhubung kembali.

371* **Dialog yang diteruskan kedaluwarsa**: Claude Code membuat prompt izin dan pertanyaan `AskUserQuestion` tetap terbuka sampai Anda menjawabnya. Ketika Claude Code meneruskan dialog jenis lain ke sesi jarak jauh, seperti prompt pilihan model yang ditampilkan setelah penolakan keselamatan, ia menunggu lima menit secara default, kemudian menutup dialog dan melanjutkan dengan default tanpa tindakan dialog. Atur [`dialogExpiry`](/docs/id/settings-reference#dialogexpiry) untuk menyesuaikan atau menonaktifkan batas waktu. Memerlukan Claude Code v2.1.224 atau lebih baru.372* **Dialog yang diteruskan kedaluwarsa**: Claude Code membuat prompt izin dan pertanyaan `AskUserQuestion` tetap terbuka sampai Anda menjawabnya. Ketika Claude Code meneruskan dialog jenis lain ke sesi jarak jauh, seperti prompt pilihan model yang ditampilkan setelah penolakan keselamatan, ia menunggu lima menit secara default, kemudian menutup dialog dan melanjutkan dengan default tanpa tindakan dialog. Atur [`dialogExpiry`](/docs/id/settings-reference#dialogexpiry) untuk menyesuaikan atau menonaktifkan batas waktu. Memerlukan Claude Code v2.1.224 atau lebih baru.

372* **Prompt persetujuan kredit penggunaan Fable tidak diteruskan**: Claude Code menampilkan [prompt persetujuan kredit penggunaan Fable](/docs/id/model-config#fable-and-usage-credits) pertengahan sesi hanya di tempat sesi berjalan, bukan di perangkat Anda. Ketika sesi berjalan di terminal dan tidak ada yang menjawab sebelum Claude Code menutup prompt, giliran berakhir tanpa mengirim permintaan; lihat [The prompt to confirm went unanswered](/docs/id/errors#the-prompt-to-confirm-went-unanswered).373* **Prompt persetujuan kredit penggunaan Fable tidak diteruskan**: Claude Code menampilkan [prompt persetujuan kredit penggunaan Fable](/docs/id/model-config#fable-and-usage-credits) pertengahan sesi hanya di tempat sesi berjalan, bukan di perangkat Anda. Ketika sesi berjalan di terminal dan tidak ada yang menjawab sebelum Claude Code menutup prompt, giliran berakhir tanpa mengirim permintaan; lihat [The prompt to confirm went unanswered](/docs/id/errors#the-prompt-to-confirm-went-unanswered).


389 "Remote Control requires a claude.ai subscription"390 "Remote Control requires a claude.ai subscription"

390</h3>391</h3>

391 392 

392Anda tidak masuk dengan akun claude.ai, atau kredensial lain mengambil alih login Anda. Pesan ini mengambil salah satu bentuk berikut:393Anda tidak masuk dengan akun claude.ai, atau kredensial lain diutamakan daripada login Anda. Pesan ini mengambil salah satu bentuk berikut:

393 394 

394* Keluar, dari `/remote-control` atau `--remote-control`: `Remote Control requires a claude.ai subscription.` atau `/remote-control requires a claude.ai subscription.`395* Keluar, dari `/remote-control` atau `--remote-control`: `Remote Control requires a claude.ai subscription.` atau `/remote-control requires a claude.ai subscription.`

395* Keluar, dari `claude remote-control`: `You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions.`396* Keluar, dari `claude remote-control`: `You must be logged in to use Remote Control. Remote Control is only available with claude.ai subscriptions.`

396* Masuk, tetapi API key atau token sedang digunakan: `Remote Control requires claude.ai subscription auth.` diikuti oleh kredensial yang digunakan, seperti `ANTHROPIC_API_KEY is set, so this session is using API-key auth`. Pengaturan `apiKeyHelper` dan `ANTHROPIC_AUTH_TOKEN` dinamai dengan cara yang sama.397* Masuk, tetapi kunci API atau token sedang digunakan: `Remote Control requires claude.ai subscription auth.` diikuti oleh kredensial yang digunakan, seperti `ANTHROPIC_API_KEY is set, so this session is using API-key auth`. Pengaturan `apiKeyHelper` dan `ANTHROPIC_AUTH_TOKEN` dinamai dengan cara yang sama.

397 398 

398Jalankan `claude auth login` dan pilih opsi claude.ai. Jika pesan menyebutkan `ANTHROPIC_API_KEY` atau `ANTHROPIC_AUTH_TOKEN`, hapusnya di mana pun itu diatur: lingkungan shell Anda atau blok `env` dari [file pengaturan](/docs/id/settings-reference#env). Jika menyebutkan `apiKeyHelper`, hapus pengaturan itu.399Jalankan `claude auth login` dan pilih opsi claude.ai. Jika pesan menyebutkan `ANTHROPIC_API_KEY` atau `ANTHROPIC_AUTH_TOKEN`, hapusnya di mana pun itu diatur: lingkungan shell Anda atau blok `env` dari [file pengaturan](/docs/id/settings-reference#env). Jika menyebutkan `apiKeyHelper`, hapus pengaturan itu.

399 400 


401 "Remote Control requires a full-scope login token"402 "Remote Control requires a full-scope login token"

402</h3>403</h3>

403 404 

404Anda diautentikasi dengan token jangka panjang dari `claude setup-token` atau variabel lingkungan `CLAUDE_CODE_OAUTH_TOKEN`. Token ini hanya dapat membuat permintaan model, jadi mereka tidak dapat membuat sesi Remote Control. Jalankan `claude auth login` untuk mengautentikasi dengan token sesi full-scope sebagai gantinya.405Anda diautentikasi dengan token jangka panjang dari `claude setup-token` atau environment variable `CLAUDE_CODE_OAUTH_TOKEN`. Token ini hanya dapat membuat permintaan model, jadi mereka tidak dapat membuat sesi Remote Control. Jalankan `claude auth login` untuk mengautentikasi dengan token sesi full-scope sebagai gantinya.

405 406 

406<h3 id="unable-to-determine-your-organization-for-remote-control-eligibility">407<h3 id="unable-to-determine-your-organization-for-remote-control-eligibility">

407 "Unable to determine your organization for Remote Control eligibility"408 "Unable to determine your organization for Remote Control eligibility"


415 416 

416Claude Code memeriksa ketersediaan Remote Control untuk akun yang Anda masuki dan pemeriksaan kembali mati. Penyebab biasanya adalah hak yang disimpan dalam cache yang sudah ketinggalan zaman setelah perubahan paket. Jalankan `claude auth logout` kemudian `claude auth login` untuk menyegarkannya, dan perbarui Claude Code jika Anda menggunakan versi lama.417Claude Code memeriksa ketersediaan Remote Control untuk akun yang Anda masuki dan pemeriksaan kembali mati. Penyebab biasanya adalah hak yang disimpan dalam cache yang sudah ketinggalan zaman setelah perubahan paket. Jalankan `claude auth logout` kemudian `claude auth login` untuk menyegarkannya, dan perbarui Claude Code jika Anda menggunakan versi lama.

417 418 

418Jalankan `claude doctor` untuk melihat pemeriksaan kelayakan individu mana yang gagal. Konflik variabel lingkungan, pemeriksaan yang tidak dapat dijangkau, dan pengaturan Remote Control organisasi Anda masing-masing menghasilkan pesan mereka sendiri, jadi kesalahan ini berarti pemeriksaan tingkat akun itu sendiri.419Jalankan `claude doctor` untuk melihat pemeriksaan kelayakan individu mana yang gagal. Konflik environment variable, pemeriksaan yang tidak dapat dijangkau, dan pengaturan Remote Control organisasi Anda masing-masing menghasilkan pesan mereka sendiri, jadi kesalahan ini berarti pemeriksaan tingkat akun itu sendiri.

419 420 

420Sebelum v2.1.239, pesan ini berbunyi "Remote Control is not yet enabled for your account".421Sebelum v2.1.239, pesan ini berbunyi "Remote Control is not yet enabled for your account".

421 422 


429 "Remote Control requires feature-flag evaluation"430 "Remote Control requires feature-flag evaluation"

430</h3>431</h3>

431 432 

432[Variabel lingkungan](/docs/id/env-vars#features-that-need-feature-flag-fetching) yang mematikan evaluasi feature-flag diatur, dan pesan lengkap menyebutkan variabel yang ditemukan Claude Code. Pada versi sebelum 2.1.154, konfigurasi yang sama menghasilkan "Remote Control is not yet enabled for your account" sebagai gantinya. Apa yang harus dilakukan tergantung pada variabel yang disebutkan pesan:433[Environment variable](/docs/id/env-vars#features-that-need-feature-flag-fetching) yang mematikan evaluasi feature-flag diatur, dan pesan lengkap menyebutkan variabel yang ditemukan Claude Code. Pada versi sebelum 2.1.154, konfigurasi yang sama menghasilkan "Remote Control is not yet enabled for your account" sebagai gantinya. Apa yang harus dilakukan tergantung pada variabel yang disebutkan pesan:

433 434 

434* **`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` atau `DISABLE_GROWTHBOOK`**: batalkan pengaturan variabel di mana pun itu diatur, di lingkungan shell Anda atau di blok `env` dari file [`settings.json`](/docs/id/settings-reference#all-settings).435* **`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` atau `DISABLE_GROWTHBOOK`**: batalkan pengaturan variabel di mana pun itu diatur, di lingkungan shell Anda atau di blok `env` dari [file `settings.json`](/docs/id/settings-reference#all-settings).

435* **`DISABLE_TELEMETRY` atau `DO_NOT_TRACK`**: pada paket Pro, Max, Team, atau Enterprise dengan `DISABLE_GROWTHBOOK` tidak diatur, variabel ini meninggalkan Remote Control tersedia kecuali organisasi Anda memerlukan [Trusted Devices](#trusted-devices). Jika demikian, batalkan pengaturan variabel di mana pun itu diatur untuk menggunakan Remote Control. Dari v2.1.154 hingga v2.1.282, salah satu variabel menghasilkan pesan ini, jadi perbarui Claude Code ke v2.1.283 atau lebih baru.436* **`DISABLE_TELEMETRY` atau `DO_NOT_TRACK`**: pada paket Pro, Max, Team, atau Enterprise dengan `DISABLE_GROWTHBOOK` tidak diatur, variabel ini meninggalkan Remote Control tersedia kecuali organisasi Anda memerlukan [Trusted Devices](#trusted-devices). Jika demikian, batalkan pengaturan variabel di mana pun itu diatur untuk menggunakan Remote Control. Dari v2.1.154 hingga v2.1.282, salah satu variabel menghasilkan pesan ini, jadi perbarui Claude Code ke v2.1.283 atau lebih baru.

436 437 

437<h3 id="remote-control-is-only-available-when-using-claude-via-api-anthropic-com">438<h3 id="remote-control-is-only-available-when-using-claude-via-api-anthropic-com">


442 443 

443Pesan menyebutkan apa yang mengarahkan sesi jauh dari Anthropic API, seperti `CLAUDE_CODE_USE_BEDROCK` atau `ANTHROPIC_BASE_URL` kustom. Jika Anda memiliki login claude.ai yang memenuhi syarat, batalkan pengaturan variabel yang disebutkan, hapusnya dari kunci `env` di [pengaturan](/docs/id/settings) jika Anda menetapkannya di sana, dan mulai ulang sesi.444Pesan menyebutkan apa yang mengarahkan sesi jauh dari Anthropic API, seperti `CLAUDE_CODE_USE_BEDROCK` atau `ANTHROPIC_BASE_URL` kustom. Jika Anda memiliki login claude.ai yang memenuhi syarat, batalkan pengaturan variabel yang disebutkan, hapusnya dari kunci `env` di [pengaturan](/docs/id/settings) jika Anda menetapkannya di sana, dan mulai ulang sesi.

444 445 

445<h3 id="remote-control-is-disabled-by-your-organization’s-policy">446<h3 id="remote-control-is-disabled-by-your-organizations-policy">

446 "Remote Control is disabled by your organization's policy"447 "Remote Control is disabled by your organization's policy"

447</h3>448</h3>

448 449 


455 456 

456Sebelum v2.1.281, pesan ini juga muncul ketika Claude Code belum memuat kebijakan organisasi Anda di mesin ini, misalnya setelah memulai offline. Versi yang lebih baru melaporkan keadaan itu sebagai [`Couldn't verify your organization's policy for remote control`](#couldnt-verify-your-organizations-policy-for-remote-control) sebagai gantinya.457Sebelum v2.1.281, pesan ini juga muncul ketika Claude Code belum memuat kebijakan organisasi Anda di mesin ini, misalnya setelah memulai offline. Versi yang lebih baru melaporkan keadaan itu sebagai [`Couldn't verify your organization's policy for remote control`](#couldnt-verify-your-organizations-policy-for-remote-control) sebagai gantinya.

457 458 

459<h3 id="remote-control-was-turned-off-by-your-organizations-policy">

460 "Remote Control was turned off by your organization's policy"

461</h3>

462 

463Kebijakan organisasi Anda berhenti mengizinkan Remote Control saat sesi sedang terhubung, sehingga Claude Code memutuskannya. Apa yang terjadi pada sesi tergantung pada cara Anda memulai Remote Control:

464 

465* **Dengan `/remote-control`, `claude --remote-control`, atau [auto-connect](#enable-remote-control-for-all-sessions)**: sesi tetap berjalan tanpa Remote Control, dan Claude Code mengarsipkannya di claude.ai

466* **Dengan `claude remote-control`**: server berhenti dan mengarsipkan sesi yang dilayaninya, lalu keluar

467 

468Anda masih dapat menemukan sesi yang diarsipkan dengan [memfilter sesi yang diarsipkan](/docs/id/claude-code-on-the-web#archive-sessions).

469 

470Remote Control tidak terhubung kembali dengan sendirinya. Untuk mengaktifkannya kembali setelah organisasi Anda mengizinkannya lagi, jalankan `/remote-control` di sesi atau `claude remote-control` di shell Anda. Kedua perintah tersebut gagal dengan [`Remote Control is disabled by your organization's policy`](#remote-control-is-disabled-by-your-organizations-policy) hingga Claude Code di mesin ini telah mengambil kebijakan yang diubah. Sesi yang terbuka mengambilnya sekitar sekali per jam. Untuk mengetahui apa yang memblokir Remote Control, cocokkan teks lengkap yang dicetak oleh perintah dengan entri tersebut.

471 

458<h3 id="couldnt-verify-your-organizations-policy-for-remote-control">472<h3 id="couldnt-verify-your-organizations-policy-for-remote-control">

459 "Couldn't verify your organization's policy for remote control"473 "Couldn't verify your organization's policy for remote control"

460</h3>474</h3>

461 475 

462Claude Code tidak dapat mengambil kebijakan organisasi Anda dan tidak memiliki salinan yang disimpan di mesin ini untuk digunakan sebagai gantinya, jadi itu membuat Remote Control tetap mati sampai dapat mengkonfirmasi bahwa organisasi Anda mengizinkannya. Ini biasanya terjadi ketika Anda memulai Claude Code offline atau sebelum VPN terhubung, atau ketika proxy mengganggu permintaan. Pada koneksi lambat itu juga dapat muncul saat permintaan pertama masih dalam penerbangan.476Claude Code tidak dapat mengambil kebijakan organisasi Anda dan tidak memiliki salinan yang disimpan di mesin ini untuk digunakan sebagai gantinya, jadi itu membuat Remote Control tetap mati sampai dapat mengkonfirmasi bahwa organisasi Anda mengizinkannya. Ini biasanya terjadi ketika Anda memulai Claude Code offline atau sebelum VPN terhubung, atau ketika proxy mengganggu permintaan. Pada koneksi lambat itu juga dapat muncul saat permintaan pertama masih dalam proses.

463 477 

464Pesan ini mengambil salah satu bentuk berikut:478Pesan ini mengambil salah satu bentuk berikut:

465 479 


482 496 

483Penyebab umum:497Penyebab umum:

484 498 

485* Tidak masuk: jalankan `claude` dan gunakan `/login` untuk mengautentikasi dengan akun claude.ai Anda. Autentikasi API key tidak didukung untuk Remote Control.499* Tidak masuk: jalankan `claude` dan gunakan `/login` untuk mengautentikasi dengan akun claude.ai Anda. Autentikasi kunci API tidak didukung untuk Remote Control.

486* Masalah jaringan atau proxy: firewall atau proxy dapat memblokir permintaan HTTPS keluar. Remote Control memerlukan akses ke Anthropic API di port 443.500* Masalah jaringan atau proxy: firewall atau proxy dapat memblokir permintaan HTTPS keluar. Remote Control memerlukan akses ke Anthropic API di port 443.

487* Pembuatan sesi gagal: jika Anda juga melihat `Session creation failed — see debug log`, kegagalan terjadi lebih awal dalam setup. Periksa bahwa langganan Anda aktif.501* Pembuatan sesi gagal: jika Anda juga melihat `Session creation failed — see debug log`, kegagalan terjadi lebih awal dalam setup. Periksa bahwa langganan Anda aktif.

488 502 


490 "Couldn't reconnect to your Remote Control session"504 "Couldn't reconnect to your Remote Control session"

491</h3>505</h3>

492 506 

493Ketika Anda melanjutkan percakapan dengan `claude --resume` atau `claude --continue`, Claude Code terhubung kembali ke sesi Remote Control yang dicatat dalam percakapan itu. Pesan ini berarti reconnection gagal karena alasan yang mungkin bersifat sementara, seperti gangguan jaringan atau kesalahan server, jadi Claude Code tidak dapat mengkonfirmasi apakah sesi jarak jauh masih ada.507Ketika Anda melanjutkan percakapan dengan `claude --resume` atau `claude --continue`, Claude Code terhubung kembali ke sesi Remote Control yang dicatat dalam percakapan itu. Pesan ini berarti penyambungan kembali gagal karena alasan yang mungkin bersifat sementara, seperti gangguan jaringan atau kesalahan server, jadi Claude Code tidak dapat mengkonfirmasi apakah sesi jarak jauh masih ada.

494 508 

495Jalankan `/remote-control` untuk mencoba ulang koneksi, atau mulai sesi baru dengan `claude --remote-control` untuk membuat sesi Remote Control baru. Sesi lokal Anda terus berjalan tanpa Remote Control sementara itu.509Jalankan `/remote-control` untuk mencoba ulang koneksi, atau mulai sesi baru dengan `claude --remote-control` untuk membuat sesi Remote Control baru. Sesi lokal Anda terus berjalan tanpa Remote Control sementara itu.

496 510 


500 514 

501Claude Code tidak dapat membawa kembali sesi Remote Control sebelumnya dan berhenti alih-alih memulai sesi baru dengan sendirinya. Anda dapat melihat pesan ini setelah Anda melanjutkan percakapan dengan `claude --resume` atau `claude --continue`, atau setelah Claude Code [terhubung kembali dengan sendirinya setelah putus](/docs/id/errors#remote-control-couldnt-refresh-your-login).515Claude Code tidak dapat membawa kembali sesi Remote Control sebelumnya dan berhenti alih-alih memulai sesi baru dengan sendirinya. Anda dapat melihat pesan ini setelah Anda melanjutkan percakapan dengan `claude --resume` atau `claude --continue`, atau setelah Claude Code [terhubung kembali dengan sendirinya setelah putus](/docs/id/errors#remote-control-couldnt-refresh-your-login).

502 516 

503Jalankan `/remote-control` untuk memulai sesi Remote Control baru di bawah login saat ini; sesi lokal Anda terus berjalan tanpa Remote Control sementara itu. Pesan terkait `Remote Control could not verify the signed-in account — run /remote-control to reconnect` memiliki perbaikan yang sama. Jika Anda menjalankan `/remote-control` setelah `Previous session is unavailable` tanpa memulai ulang Claude Code terlebih dahulu, Claude Code meninggalkan pesan sebelumnya dari percakapan di luar sesi baru.517Jalankan `/remote-control` untuk memulai sesi Remote Control baru di bawah login saat ini; sesi lokal Anda terus berjalan tanpa Remote Control sementara itu. Pesan terkait `Remote Control could not verify the signed-in account — run /remote-control to reconnect` memiliki perbaikan yang sama. Jika Anda menjalankan `/remote-control` setelah `Previous session is unavailable` tanpa memulai ulang Claude Code terlebih dahulu, Claude Code tidak menyertakan pesan-pesan sebelumnya dari percakapan ke dalam sesi baru.

504 518 

505<h3 id="remote-control-got-an-unexpected-server-response">519<h3 id="remote-control-got-an-unexpected-server-response">

506 "Remote Control got an unexpected server response"520 "Remote Control got an unexpected server response"

507</h3>521</h3>

508 522 

509Server Remote Control menerima permintaan tetapi membalas dalam bentuk yang versi Claude Code ini tidak dapat baca, saat membuat sesi jarak jauh atau mengambil kredensialnya. Mencoba ulang pada versi yang sama gagal dengan cara yang sama. Jalankan `claude update`, kemudian jalankan `/remote-control` untuk terhubung kembali.523Server Remote Control menerima permintaan tetapi membalas dalam bentuk yang tidak dapat dibaca oleh versi Claude Code ini, saat membuat sesi jarak jauh atau mengambil kredensialnya. Mencoba ulang pada versi yang sama gagal dengan cara yang sama. Jalankan `claude update`, kemudian jalankan `/remote-control` untuk terhubung kembali.

510 524 

511<h3 id="your-organization-requires-trusted-devices-for-remote-control-but-this-device-is-not-enrolled">525<h3 id="your-organization-requires-trusted-devices-for-remote-control-but-this-device-is-not-enrolled">

512 "Your organization requires Trusted Devices for Remote Control, but this device is not enrolled"526 "Your organization requires Trusted Devices for Remote Control, but this device is not enrolled"

routines.md +1 −5

Details

365 365 

366Setiap repositori yang Anda tambahkan diklon pada setiap jalankan. Claude dimulai dari cabang default repositori kecuali prompt Anda menentukan sebaliknya.366Setiap repositori yang Anda tambahkan diklon pada setiap jalankan. Claude dimulai dari cabang default repositori kecuali prompt Anda menentukan sebaliknya.

367 367 

368Claude mendorong pekerjaannya ke cabang dengan awalan `claude/`, yang selalu diterima. Ketika prompt Anda mengarahkan Claude untuk mendorong ke cabang lain, Claude Code memeriksa dorongan terlebih dahulu dan menolaknya jika salah satu dari berikut ini benar:368Claude mendorong pekerjaannya ke branch dengan awalan `claude/` kecuali prompt Anda mengarahkannya untuk mendorong ke branch lain. Untuk mengontrol branch mana yang dapat menerima dorongan dari suatu jalankan, gunakan aturan perlindungan branch atau ruleset di GitHub. Untuk jalankan pada infrastruktur yang dikelola Anthropic, dan untuk jalankan self-hosted yang mendorong melalui [git proxy Anthropic](/docs/id/self-hosted-environments-deploy#use-the-anthropic-git-proxy), GitHub menerapkannya pada akses GitHub yang Anda hubungkan, sehingga aturan yang dapat dilewati oleh akses tersebut tidak memblokir dorongan jalankan. Jalankan self-hosted yang mendorong dengan kredensial git yang disediakan oleh deployment Anda diperiksa berdasarkan kredensial tersebut. Lihat [Configure git](/docs/id/self-hosted-environments-deploy#configure-git).

369 

370* Cabang dilindungi di GitHub

371* Seseorang lain memiliki permintaan tarik terbuka dari cabang tersebut

372* Cabang membawa komit yang ditulis oleh seseorang selain Anda

373 369 

374<h3 id="connectors">370<h3 id="connectors">

375 Konektor371 Konektor

Details

91 Sandbox runtime91 Sandbox runtime

92</h2>92</h2>

93 93 

94Paket [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) membungkus seluruh proses dalam isolasi Seatbelt atau bubblewrap yang sama yang digunakan sandbox Bash bawaan. Menjalankan Claude Code melalui runtime membatasi setiap alat, hook, dan server MCP dalam sesi, bukan hanya perintah shell. Runtime adalah pratinjau penelitian beta, dan format konfigurasinya mungkin berubah seiring paket berkembang.94Paket [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropics/sandbox-runtime) membungkus seluruh proses dalam isolasi Seatbelt atau bubblewrap yang sama yang digunakan sandbox Bash bawaan. Menjalankan Claude Code melalui runtime membatasi tool, hook, dan server MCP dalam sesi, serta perintah shell. Runtime adalah research preview beta, dan format konfigurasinya mungkin berubah seiring paket berkembang.

95 95 

96Bagian ini mencakup apa yang Anda konfigurasikan dan apa yang diberlakukan runtime sendiri. Untuk menerapkan runtime dalam aplikasi Agent SDK, lihat [panduan penerapan aman](/docs/id/agent-sdk/secure-deployment#sandbox-runtime).96Bagian ini mencakup apa yang Anda konfigurasikan dan apa yang diberlakukan runtime sendiri. Untuk men-deploy runtime dalam aplikasi Agent SDK, lihat [panduan deployment aman](/docs/id/agent-sdk/secure-deployment#sandbox-runtime).

97 97 

98<h3 id="set-up-and-launch-the-runtime">98<h3 id="set-up-and-launch-the-runtime">

99 Siapkan dan luncurkan runtime99 Siapkan dan luncurkan runtime


101 101 

102Di Linux dan WSL2, runtime bergantung pada paket `bubblewrap` dan `socat` yang sama dengan sandbox bawaan, ditambah `ripgrep`, yang Claude Code bundel tetapi runtime mandiri menyelesaikannya dari PATH Anda. Instal `bubblewrap` dan `socat` seperti yang dijelaskan dalam [Siapkan Linux dan WSL2](/docs/id/sandboxing#set-up-linux-and-wsl2), dan `ripgrep` dari manajer paket distribusi Anda. Di macOS Anda tidak memerlukan paket tambahan. Runtime menggunakan sandbox Seatbelt bawaan di sana.102Di Linux dan WSL2, runtime bergantung pada paket `bubblewrap` dan `socat` yang sama dengan sandbox bawaan, ditambah `ripgrep`, yang Claude Code bundel tetapi runtime mandiri menyelesaikannya dari PATH Anda. Instal `bubblewrap` dan `socat` seperti yang dijelaskan dalam [Siapkan Linux dan WSL2](/docs/id/sandboxing#set-up-linux-and-wsl2), dan `ripgrep` dari manajer paket distribusi Anda. Di macOS Anda tidak memerlukan paket tambahan. Runtime menggunakan sandbox Seatbelt bawaan di sana.

103 103 

104Secara default runtime menolak akses jaringan dan membatasi penulisan ke serangkaian kecil jalur runtime bawaan, jadi konfigurasikan sebelum meluncurkan Claude Code melaluinya. Letakkan konfigurasi Anda di `~/.srt-settings.json`, atau dalam file yang Anda berikan dengan `--settings`. [README](https://github.com/anthropic-experimental/sandbox-runtime) paket mendokumentasikan skema konfigurasi lengkap.104Secara default runtime menolak akses jaringan dan membatasi penulisan ke serangkaian kecil jalur runtime bawaan, jadi konfigurasikan sebelum meluncurkan Claude Code melaluinya. Letakkan konfigurasi Anda di `~/.srt-settings.json`, atau dalam file yang Anda berikan dengan `--settings`. [README](https://github.com/anthropics/sandbox-runtime) paket mendokumentasikan skema konfigurasi.

105 105 

106Izinkan akses tulis ke setidaknya:106Izinkan akses tulis ke setidaknya:

107 107 

108* Direktori proyek Anda.108* Direktori proyek Anda.

109* Jalur konfigurasi Claude Code `~/.claude` dan `~/.claude.json`.109* Jalur konfigurasi Claude Code `~/.claude` dan `~/.claude.json`.

110* `/tmp`, tempat Claude Code menulis file runtime.110* Direktori tempat Claude Code menulis file runtime. Kecuali Anda menetapkan [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars), direktori tersebut adalah:

111 * **Linux dan WSL2**: `/tmp`

112 * **macOS**: `/private/tmp`. `/tmp` adalah symlink ke direktori tersebut, dan Seatbelt memeriksa jalur yang telah di-resolve.

111 113 

112Izinkan domain jaringan yang dibutuhkan sesi Anda:114Izinkan domain jaringan yang dibutuhkan sesi Anda:

113 115 


134 136 

135Runtime memblokir penulisan risiko tertinggi tanpa konfigurasi apa pun dari Anda:137Runtime memblokir penulisan risiko tertinggi tanpa konfigurasi apa pun dari Anda:

136 138 

137* `denyWrite` mengambil alih `allowWrite`.139* `denyWrite` diutamakan daripada `allowWrite`.

138* Di akar proyek, runtime menolak `.git/hooks`, menolak `.git/config` kecuali Anda menetapkan `filesystem.allowGitConfig: true`, dan menolak `.mcp.json`, `.claude/commands`, `.claude/agents`, dan file startup shell.140* Di akar proyek, runtime menolak `.git/hooks`, menolak `.git/config` kecuali Anda menetapkan `filesystem.allowGitConfig: true`, dan menolak `.mcp.json`, `.claude/commands`, `.claude/agents`, dan file startup shell.

139* Di macOS, penolakan ini diperiksa ketika penulisan terjadi, jadi mereka juga mencakup file bersarang dan repositori yang dibuat selama sesi.141* Di macOS, penolakan ini diperiksa ketika penulisan terjadi, jadi mereka juga mencakup file bersarang dan repositori yang dibuat selama sesi.

140* Di Linux dan WSL2, runtime membangun daftar penolakan sekali saat peluncuran. Ini secara andal mencakup akar proyek, melakukan pemindaian dangkal upaya terbaik untuk salinan bersarang yang ada pada saat itu, dan tidak mencakup apa pun yang dibuat sesi nanti, seperti `git init`, `git clone`, atau scaffolding. Bagian `mandatoryDenySearchDepth` README menjelaskan semantik pemindaian yang tepat.142* Di Linux dan WSL2, runtime membangun daftar penolakan sekali saat peluncuran. Ini secara andal mencakup akar proyek, melakukan pemindaian dangkal upaya terbaik untuk salinan bersarang yang ada pada saat itu, dan tidak mencakup apa pun yang dibuat sesi nanti, seperti `git init`, `git clone`, atau scaffolding. Bagian `mandatoryDenySearchDepth` README menjelaskan semantik pemindaian yang tepat.


165 167 

166Beberapa layanan sandbox terkelola dan eksekusi jarak jauh dapat menampung container untuk Anda. Daftar periksa yang sama berlaku seperti untuk container apa pun yang Anda operasikan: tinjau apa yang dipasang dapat ditulis, kredensial dan token apa yang dapat dijangkau di dalamnya, dan apa yang diizinkan kebijakan egress jaringan.168Beberapa layanan sandbox terkelola dan eksekusi jarak jauh dapat menampung container untuk Anda. Daftar periksa yang sama berlaku seperti untuk container apa pun yang Anda operasikan: tinjau apa yang dipasang dapat ditulis, kredensial dan token apa yang dapat dijangkau di dalamnya, dan apa yang diizinkan kebijakan egress jaringan.

167 169 

168Anda dapat melapisi sandbox Bash bawaan di dalam container untuk pembatasan per-perintah. Container yang tidak istimewa memerlukan pengaturan nested-sandbox yang dijelaskan dalam [Sandboxing troubleshooting](/docs/id/sandboxing#troubleshooting).170Anda dapat melapisi sandbox Bash bawaan di dalam container untuk pembatasan per-perintah. Container yang tidak istimewa memerlukan `enableWeakerNestedSandbox`, yang dijelaskan dalam [Bubblewrap gagal dijalankan di dalam container](/docs/id/sandboxing#bubblewrap-fails-to-start-inside-a-container).

169 171 

170<h2 id="virtual-machine">172<h2 id="virtual-machine">

171 Virtual machine173 Virtual machine

sandboxing.md +596 −297

Details

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.3> Use this file to discover all available pages before exploring further.

4 4 

5# Konfigurasi alat Bash sandboxed5# Konfigurasikan tool Bash dengan sandbox

6 6 

7> Pelajari bagaimana alat Bash sandboxed Claude Code menyediakan isolasi filesystem dan jaringan untuk eksekusi agen yang lebih aman dan mandiri.7> Batasi file dan host jaringan yang dapat dijangkau oleh perintah shell Claude Code dengan sandbox bawaan. Aktifkan, tetapkan batasnya, dan perbaiki hal-hal yang terganggu olehnya.

8 8 

9Sandbox Bash memungkinkan Claude menjalankan sebagian besar perintah shell tanpa berhenti untuk meminta izin. Alih-alih menyetujui setiap perintah, Anda menentukan file dan domain jaringan mana yang dapat diakses perintah, dan sistem operasi memberlakukan batas itu untuk setiap perintah Bash, PowerShell, atau Monitor dan proses anak-anaknya.9Sandbox Bash adalah batas yang diterapkan oleh sistem operasi di sekitar perintah shell yang dijalankan Claude di mesin Anda. Anda menetapkan file dan domain jaringan mana yang dapat dijangkau oleh perintah tersebut, dan batasan tersebut berlaku untuk perintah Bash, PowerShell, dan Monitor serta proses yang dimulainya. Karena sistem operasi menerapkan batasan tersebut saat perintah berjalan, Claude Code dapat [menjalankan perintah dalam sandbox tanpa meminta Anda](#sandbox-modes) untuk menyetujui setiap perintah.

10 

11Sandbox hanya mencakup perintah shell. Tool file Claude, server MCP, dan hook [berjalan di luarnya](#what-runs-outside-the-sandbox).

12 

13Sandbox berjalan di macOS, Linux, dan WSL2. Di Windows native, Claude Code menjalankan perintah tanpa sandbox. Untuk menggunakan sandbox di mesin Windows, jalankan Claude Code di dalam distribusi WSL2.

10 14 

11<Note>15<Note>

12 Untuk membandingkan pendekatan isolasi lain seperti dev containers, container khusus, dan mesin virtual, lihat [Sandbox environments](/docs/id/sandbox-environments). Untuk mengurangi prompt izin untuk alat selain Bash, lihat [permission modes](/docs/id/permission-modes).16 Halaman ini membahas sandbox di sekitar perintah shell di mesin Anda sendiri. Halaman lain membahas pertanyaan terkait:

17 

18 * Untuk cara sesi cloud diisolasi, lihat [Keamanan dan isolasi](/docs/id/claude-code-on-the-web#security-and-isolation)

19 * Untuk membandingkan pendekatan isolasi lain seperti dev container, container kustom, dan mesin virtual, lihat [Lingkungan sandbox](/docs/id/sandbox-environments)

20 * Untuk mengurangi permintaan izin untuk tool selain Bash, lihat [mode izin](/docs/id/permission-modes)

13</Note>21</Note>

14 22 

23<h2 id="what-the-sandbox-restricts">

24 Apa yang dibatasi oleh sandbox

25</h2>

26 

27Saat sandbox aktif, perintah shell yang dijalankan Claude dimulai di dalam batasnya, demikian pula proses yang dimulai oleh perintah tersebut. Sandbox nonaktif secara default. Untuk mengaktifkannya, jalankan `/sandbox` dalam sebuah sesi, seperti yang ditunjukkan di [Memulai](#get-started), atau atur [`sandbox.enabled`](/docs/id/settings-reference#sandbox-enabled) ke `true` dalam [file pengaturan](/docs/id/settings) seperti `~/.claude/settings.json`.

28 

29Tabel berikut menunjukkan apa yang dapat dijangkau oleh perintah yang berjalan di sandbox secara default dan pengaturan yang mengubah setiap default tersebut.

30 

31| Akses | Default | Ubah dengan |

32| :- | :- | :- |

33| Penulisan | Direktori kerja, direktori temp per pengguna, dan [direktori yang telah Anda tambahkan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration). [Path yang dilindungi](#protected-paths) tetap ditolak untuk penulisan | [`filesystem.allowWrite`](/docs/id/settings-reference#sandbox-filesystem-allowwrite), [`filesystem.denyWrite`](/docs/id/settings-reference#sandbox-filesystem-denywrite) |

34| Pembacaan | Sebagian besar mesin, termasuk file kredensial seperti `~/.ssh` dan `~/.aws/credentials` | [`filesystem.denyRead`](/docs/id/settings-reference#sandbox-filesystem-denyread), [`credentials`](#protect-credentials) |

35| Jaringan | Tidak ada rute keluar langsung. Koneksi melewati proxy di mesin Anda yang memeriksa setiap host terhadap domain yang Anda izinkan, yang awalnya kosong. Mode izin Anda menentukan [apa yang terjadi pada host lain](#hosts-outside-your-allowed-domains) | [`network.allowedDomains`](/docs/id/settings-reference#sandbox-network-alloweddomains), [`network.deniedDomains`](/docs/id/settings-reference#sandbox-network-denieddomains) |

36| Environment variable | Diwarisi dari Claude Code, termasuk rahasia apa pun di lingkungannya | [`credentials`](#protect-credentials), [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars) |

37 

38Claude Code membangun sandbox di atas paket open source [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropics/sandbox-runtime).

39 

40<h3 id="what-runs-outside-the-sandbox">

41 Apa yang berjalan di luar sandbox

42</h3>

43 

44Sandbox membungkus perintah shell. Tool dan proses berikut berjalan di luarnya:

45 

46* **Tool file dan web bawaan**: tool seperti Read, Edit, Write, WebFetch, dan WebSearch mengikuti [aturan izin](/docs/id/permissions) sebagai gantinya. Entri `denyRead` tidak menghentikan tool Read, dan `allowedDomains` tidak membatasi WebFetch

47* **Proses lain yang dimulai Claude Code**: [hook](/docs/id/hooks) perintah, [server MCP](/docs/id/mcp) lokal, [monitor plugin](/docs/id/plugins/components#monitors), [server LSP](/docs/id/tools-reference#lsp-tool-behavior), dan perintah pembantu seperti perintah [baris status](/docs/id/statusline) Anda dan `apiKeyHelper` berjalan dengan akses penuh Anda

48 

49Beberapa perintah shell juga berjalan di luar sandbox, tergantung pada pengaturan Anda:

50 

51* **Perintah yang Anda ketik sendiri**: perintah yang Anda masukkan di [prompt mode shell `!`](/docs/id/interactive-mode#shell-mode-with-prefix) berjalan tanpa sandbox di sebagian besar sesi. [Mode sandbox ketat](#turn-off-the-retry-with-strict-sandbox-mode) mencantumkan sesi-sesi di mana perintah yang Anda ketik berjalan di dalam sandbox

52* **Perintah yang dikecualikan**: perintah yang cocok dengan [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) berjalan tanpa sandbox

53* **Retry tanpa sandbox**: Claude dapat [meminta untuk menjalankan perintah tanpa sandbox](#the-unsandboxed-retry-escape-hatch), biasanya setelah perintah tersebut gagal di dalam sandbox

54 

55Untuk menempatkan tool, proses, dan perintah di bagian ini di balik satu batas, jalankan proses Claude Code itu sendiri di dalam [container, mesin virtual, atau sandbox runtime](/docs/id/sandbox-environments).

56 

15<h2 id="get-started">57<h2 id="get-started">

16 Memulai58 Memulai

17</h2>59</h2>

18 60 

19Sandbox dibangun ke dalam Claude Code dan berjalan di macOS, Linux, dan WSL2. Windows asli tidak didukung. Di Windows, jalankan Claude Code di dalam distribusi WSL2.61Sandbox sudah terpasang di dalam Claude Code. Apa yang perlu Anda instal bergantung pada platform Anda:

20 62 

21Di macOS, tidak ada yang perlu diinstal: sandboxing menggunakan kerangka Seatbelt bawaan. Di Linux dan WSL2, sandbox bergantung pada dua paket, yang dibahas dalam [Set up Linux and WSL2](#set-up-linux-and-wsl2). Bahkan jika Anda belum menginstalnya, Anda dapat memulai dengan `/sandbox`, karena panelnya menunjukkan apakah ada yang hilang.63* **macOS**: sandboxing menggunakan framework Seatbelt bawaan, sehingga Anda dapat langsung menuju langkah-langkahnya

64* **Linux dan WSL2**: sandbox bergantung pada `bubblewrap` dan `socat`, yang dibahas di [Menyiapkan Linux dan WSL2](#set-up-linux-and-wsl2). Meskipun Anda belum menginstalnya, Anda dapat memulai dengan `/sandbox`, karena panelnya menunjukkan apakah ada yang belum terpasang

22 65 

23<Steps>66<Steps>

24 <Step title="Jalankan /sandbox">67 <Step title="Jalankan /sandbox">


28 /sandbox71 /sandbox

29 ```72 ```

30 73 

31 Ini membuka panel sandbox dengan tiga tab, ditambah tab Dependencies di Linux ketika filter seccomp opsional hilang:74 Ini membuka panel sandbox dengan tiga tab, ditambah tab Dependencies di Linux ketika filter seccomp opsional belum terpasang:

32 75 

33 * **Mode**: pilih bagaimana perintah sandboxed disetujui, dibahas dalam langkah berikutnya76 * **Mode**: pilih cara perintah yang di-sandbox disetujui, dibahas pada langkah berikutnya

34 * **Overrides**: pilih apakah perintah yang gagal di bawah sandbox dapat kembali ke menjalankan unsandboxed. Ini adalah pengaturan [`allowUnsandboxedCommands`](/docs/id/settings-reference#sandbox-allowunsandboxedcommands)77 * **Overrides**: pilih apakah perintah yang gagal di bawah sandbox dapat kembali berjalan tanpa sandbox. Ini adalah pengaturan [`allowUnsandboxedCommands`](/docs/id/settings-reference#sandbox-allowunsandboxedcommands)

35 * **Config**: lihat pengaturan sandbox yang diselesaikan78 * **Config**: lihat pengaturan sandbox yang telah diselesaikan

36 79 

37 Jika panel hanya menampilkan tab Dependencies, paket yang diperlukan hilang. Instal seperti yang dijelaskan dalam [Set up Linux and WSL2](#set-up-linux-and-wsl2), restart Claude Code, dan jalankan `/sandbox` lagi.80 Jika panel hanya menampilkan tab Dependencies, berarti ada paket wajib yang belum terpasang. Instal paket tersebut seperti yang dijelaskan di [Menyiapkan Linux dan WSL2](#set-up-linux-and-wsl2), mulai ulang Claude Code, lalu jalankan `/sandbox` lagi.

38 </Step>81 </Step>

39 82 

40 <Step title="Pilih mode">83 <Step title="Pilih mode">

41 Di tab Mode, pilih auto-allow atau regular permissions. Auto-allow menjalankan perintah sandboxed tanpa prompt, dan regular permissions menjaga prompt izin reguler bahkan ketika perintah sandboxed. Lihat [Sandbox modes](#sandbox-modes) untuk perintah mana yang masih prompt dalam mode auto-allow.84 Pada tab Mode, pilih auto-allow atau regular permissions. Auto-allow menjalankan perintah yang di-sandbox tanpa permintaan izin, sedangkan regular permissions tetap mempertahankan permintaan izin biasa bahkan ketika perintah di-sandbox. Lihat [Mode sandbox](#sandbox-modes) untuk perintah mana saja yang tetap memunculkan permintaan izin dalam mode auto-allow.

42 </Step>85 </Step>

43 86 

44 <Step title="Jalankan perintah Bash">87 <Step title="Jalankan perintah Bash">

45 Minta Claude untuk menjalankan perintah, seperti build atau test suite. Secara default, perintah di dalam sandbox dapat menulis ke direktori kerja, [direktori temp per-pengguna](/docs/id/env-vars), dan [direktori apa pun yang telah Anda tambahkan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) dengan `--add-dir`, `/add-dir`, atau `permissions.additionalDirectories`.88 Minta Claude menjalankan sebuah perintah, seperti build atau rangkaian pengujian. Secara default, perintah di dalam sandbox dapat menulis ke direktori kerja, [direktori temp per pengguna](/docs/id/env-vars), dan [direktori apa pun yang telah Anda tambahkan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) dengan `--add-dir`, `/add-dir`, atau `permissions.additionalDirectories`.

46 89 

47 Pertama kali perintah memerlukan domain jaringan baru, Claude Code meminta persetujuan; dalam [mode auto](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), Claude malah menamai host yang dibutuhkan perintah [pada perintah itu sendiri](#per-command-allowed-domains-in-auto-mode) untuk pengklasifikasi ditinjau bersama dengannya.90 Saat pertama kali sebuah perintah memerlukan domain jaringan baru, Claude Code meminta persetujuan; dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), Claude justru menyebutkan host yang dibutuhkan perintah [pada perintah itu sendiri](#per-command-allowed-domains-in-auto-mode) agar pengklasifikasi meninjaunya bersama perintah tersebut.

48 91 

49 Perintah yang tidak dapat berjalan sandboxed kembali ke alur izin reguler. Claude Code memberi judul prompt izin mereka "Bash command (unsandboxed)" bukan "Bash command", sehingga Anda dapat mengetahui perintah mana yang berjalan di luar sandbox. Untuk memperluas atau mempersempit apa yang diizinkan sandbox, lihat [Configure sandboxing](#configure-sandboxing).92 Untuk memperluas atau mempersempit apa yang diizinkan sandbox, lihat [Mengonfigurasi sandboxing](#configure-sandboxing).

50 93 

51 Jika perintah sandboxed gagal dengan `Operation not permitted` di dalam kontainer, lihat entri Bubblewrap di bawah [Troubleshooting](#troubleshooting).94 Jika perintah yang di-sandbox gagal dengan `Operation not permitted` di dalam container, lihat [Bubblewrap gagal dimulai di dalam container](#bubblewrap-fails-to-start-inside-a-container).

52 </Step>95 </Step>

53</Steps>96</Steps>

54 97 

55Ketika Anda memilih mode dalam panel, Claude Code menyimpannya ke pengaturan lokal proyek Anda di `.claude/settings.local.json`, yang berlaku untuk proyek saat ini. Claude Code menambahkan file itu ke gitignore global Anda ketika menyimpan pengaturan di sana. Untuk mengaktifkan sandbox di semua proyek Anda, atur [`sandbox.enabled`](/docs/id/settings-reference#sandbox-enabled) ke `true` dalam pengaturan pengguna Anda di `~/.claude/settings.json`. Untuk memberlakukan sandboxing untuk setiap pengembang dalam organisasi, gunakan [managed settings](#enforce-sandboxing-with-managed-settings).98Ketika Anda memilih mode di panel, Claude Code menyimpannya ke pengaturan lokal proyek Anda di `.claude/settings.local.json`, yang berlaku untuk proyek saat ini. Claude Code menambahkan file tersebut ke gitignore global Anda ketika menyimpan pengaturan di sana. Untuk mengaktifkan sandbox di semua proyek Anda, atur [`sandbox.enabled`](/docs/id/settings-reference#sandbox-enabled) ke `true` dalam pengaturan pengguna Anda di `~/.claude/settings.json`. Untuk mewajibkan sandboxing bagi setiap developer dalam organisasi, gunakan [pengaturan terkelola](#enforce-sandboxing-with-managed-settings).

56 99 

57Untuk mengubah sandbox untuk satu sesi tanpa menulis ke file pengaturan, mulai Claude Code dengan [`--settings`](/docs/id/settings#change-a-setting-for-one-session). Misalnya, perintah ini memulai sesi sandboxed di mana Claude tidak dapat mencoba kembali perintah yang diblokir di luar sandbox:100Untuk mengubah sandbox untuk satu sesi tanpa menulis ke file pengaturan, mulai Claude Code dengan [`--settings`](/docs/id/settings#change-a-setting-for-one-session). Misalnya, perintah ini memulai sesi yang di-sandbox di mana Claude tidak dapat mencoba ulang perintah yang diblokir di luar sandbox:

58 101 

59```bash theme={null}102```bash theme={null}

60claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'103claude --settings '{"sandbox": {"enabled": true, "allowUnsandboxedCommands": false}}'

61```104```

62 105 

63<Warning>106<Warning>

64 Secara default, jika sandbox tidak dapat dimulai karena dependensi hilang atau platform tidak didukung, Claude Code menampilkan peringatan dan menjalankan perintah tanpa sandboxing. Untuk menjadikan ini kegagalan keras sebagai gantinya, atur [`sandbox.failIfUnavailable`](/docs/id/settings-reference#sandbox-failifunavailable) ke `true`. Ini dimaksudkan untuk penyebaran terkelola yang memerlukan sandboxing sebagai gerbang keamanan.107 Secara default, jika sandbox tidak dapat dimulai karena ada dependensi yang belum terpasang atau platform tidak didukung, Claude Code menjalankan perintah tanpa sandboxing. Agar Claude Code keluar saat startup, atur [`sandbox.failIfUnavailable`](/docs/id/settings-reference#sandbox-failifunavailable) ke `true`. Deployment terkelola yang mewajibkan sandboxing sebagai gerbang keamanan dapat menggunakan pengaturan ini.

65</Warning>108</Warning>

66 109 

110<h3 id="confirm-commands-run-inside-the-sandbox">

111 Memastikan perintah berjalan di dalam sandbox

112</h3>

113 

114Untuk memeriksa apakah sandbox berfungsi, minta Claude menjalankan setiap baris dalam tabel. Apa yang Anda ketik di [prompt `!`](#what-runs-outside-the-sandbox) biasanya berjalan di luar sandbox, sehingga mengetik baris tersebut sendiri tidak mengujinya.

115 

116| Perintah | Hasil di dalam sandbox |

117| :- | :- |

118| `touch ~/sandbox-probe` | Gagal dengan `Operation not permitted` di macOS, atau `Read-only file system` di Linux dan WSL2 |

119| `curl --noproxy '*' https://example.com` | Gagal dengan `Could not resolve host`, karena perintah tidak memiliki jalur untuk melewati proxy sandbox |

120 

121Jika Claude meminta untuk mencoba ulang perintah yang gagal di luar sandbox, tolak retry tersebut. Jika `touch` berhasil dan direktori home Anda bukan salah satu direktori yang diizinkan sandbox untuk ditulisi oleh perintah, hapus `~/sandbox-probe`. Kemudian jalankan `/sandbox` untuk memeriksa bahwa sandbox aktif dan dependensinya terinstal.

122 

67<h3 id="set-up-linux-and-wsl2">123<h3 id="set-up-linux-and-wsl2">

68 Set up Linux dan WSL2124 Menyiapkan Linux dan WSL2

69</h3>125</h3>

70 126 

71Di Linux dan WSL2, sandbox bergantung pada dua paket:127Di Linux dan WSL2, sandbox bergantung pada paket-paket berikut:

72 128 

73* [`bubblewrap`](https://github.com/containers/bubblewrap): alat sandboxing tanpa privilege yang memberlakukan isolasi filesystem129* [`bubblewrap`](https://github.com/containers/bubblewrap): tool sandboxing tanpa hak istimewa yang menerapkan isolasi filesystem

74* [`socat`](http://www.dest-unreach.org/socat/): relay yang digunakan untuk merutekan lalu lintas jaringan melalui proxy sandbox130* [`socat`](http://www.dest-unreach.org/socat/): relay yang digunakan untuk merutekan lalu lintas jaringan melalui proxy sandbox

75 131 

76Instal dengan manajer paket distribusi Anda:132Instal paket-paket tersebut dengan package manager distribusi Anda:

77 133 

78<Tabs>134<Tabs>

79 <Tab title="Ubuntu/Debian">135 <Tab title="Ubuntu/Debian">


89 </Tab>145 </Tab>

90</Tabs>146</Tabs>

91 147 

92Ketika dependensi hilang, tab Dependencies dalam `/sandbox` mencantumkan mana dari `ripgrep`, `bubblewrap`, `socat`, dan filter seccomp yang platform Anda kurangi. Jika Anda tidak melihat tab setelah menginstal dan memulai ulang Claude Code, semua dependensi ada.148Ketika ada dependensi yang belum terpasang, tab Dependencies di `/sandbox` mencantumkan mana di antara `ripgrep`, `bubblewrap`, `socat`, dan filter seccomp yang tidak dimiliki platform Anda. Jika Anda tidak melihat tab tersebut setelah menginstal dan memulai ulang Claude Code, berarti semua dependensi sudah tersedia.

93 149 

94Ripgrep disertakan dengan binari Claude Code asli. Filter seccomp bersifat opsional dan menambahkan pemblokiran soket domain Unix. Instal dengan `npm install -g @anthropic-ai/sandbox-runtime` jika hilang.150Ripgrep sudah dibundel dengan binary native Claude Code. Filter seccomp bersifat opsional dan menambahkan pemblokiran Unix domain socket. Instal dengan `npm install -g @anthropic-ai/sandbox-runtime` jika belum terpasang.

95 151 

96Ketika dependensi yang diperlukan hilang, tab Dependencies adalah satu-satunya tab yang ditampilkan sampai Anda menginstalnya. Ketika hanya filter seccomp opsional yang hilang, tab Dependencies muncul bersama tab lainnya. Pemeriksaan dependensi berjalan saat startup, jadi restart Claude Code setelah menginstal paket untuk `/sandbox` mendeteksinya.152Ketika dependensi wajib belum terpasang, tab Dependencies adalah satu-satunya tab yang ditampilkan hingga Anda menginstalnya. Ketika hanya filter seccomp opsional yang belum terpasang, tab Dependencies muncul bersama tab lainnya. Pemeriksaan dependensi berjalan saat startup, jadi mulai ulang Claude Code setelah menginstal paket agar `/sandbox` dapat mendeteksinya.

97 153 

98<AccordionGroup>154<AccordionGroup>

99 <Accordion title="Ubuntu 24.04 dan yang lebih baru: izinkan bubblewrap untuk membuat user namespaces">155 <Accordion title="Ubuntu 24.04 dan yang lebih baru: izinkan bubblewrap membuat user namespace">

100 Di Ubuntu 24.04 dan yang lebih baru, kebijakan AppArmor default mencegah bubblewrap dari membuat user namespaces yang dibutuhkannya untuk isolasi.156 Di Ubuntu 24.04 dan yang lebih baru, kebijakan AppArmor default mencegah bubblewrap membuat user namespace yang dibutuhkannya untuk isolasi.

101 157 

102 Untuk memeriksa apakah lingkungan Anda memberlakukan pembatasan ini, termasuk di dalam WSL2, jalankan `sysctl kernel.apparmor_restrict_unprivileged_userns`. Jika perintah mengembalikan `0`, lewati langkah ini. Jika mencetak kesalahan `No such file or directory`, kunci tidak ada dan Anda dapat melewati langkah ini. Jika mengembalikan `1`, tambahkan profil AppArmor yang memberikan `bwrap` kemampuan ini:158 Untuk memeriksa apakah lingkungan Anda menerapkan pembatasan ini, termasuk di dalam WSL2, jalankan `sysctl kernel.apparmor_restrict_unprivileged_userns`. Jika perintah mengembalikan `0`, lewati langkah ini. Jika perintah mencetak error `No such file or directory`, berarti key tersebut tidak ada dan Anda dapat melewati langkah ini. Jika mengembalikan `1`, tambahkan profil AppArmor yang memberikan kemampuan ini kepada `bwrap`:

103 159 

104 ```bash theme={null}160 ```bash theme={null}

105 sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'161 sudo tee /etc/apparmor.d/bwrap > /dev/null <<'EOF'


113 EOF169 EOF

114 ```170 ```

115 171 

116 Profil hanya berlaku untuk `bwrap` itu sendiri, bukan untuk perintah yang berjalan di dalam sandbox. Muat ulang AppArmor untuk menerapkannya:172 Profil ini hanya berlaku untuk `bwrap` itu sendiri, bukan untuk perintah yang dijalankannya di dalam sandbox. Muat ulang AppArmor untuk menerapkannya:

117 173 

118 ```bash theme={null}174 ```bash theme={null}

119 sudo systemctl reload apparmor175 sudo systemctl reload apparmor


121 </Accordion>177 </Accordion>

122 178 

123 <Accordion title="Catatan WSL2">179 <Accordion title="Catatan WSL2">

124 Periksa versi WSL Anda dengan `wsl -l -v` dari PowerShell. Jika Anda melihat `Sandboxing requires WSL2`, distribusi Anda menjalankan WSL1. Tingkatkan ke WSL2 atau jalankan Claude Code tanpa sandboxing.180 Periksa versi WSL Anda dengan `wsl -l -v` dari PowerShell. Jika Anda melihat `Sandboxing requires WSL2`, distribusi Anda berjalan di WSL1. Tingkatkan ke WSL2 atau jalankan Claude Code tanpa sandboxing.

125 181 

126 Di WSL2, WSL menyerahkan peluncuran binari Windows seperti `cmd.exe`, `powershell.exe`, atau apa pun di bawah `/mnt/c/` ke host Windows melalui soket Unix, jadi apakah perintah sandboxed dapat meluncurkan satu mengikuti pengaturan [Unix-socket](/docs/id/settings-reference#sandbox-network-allowunixsockets) sandbox: filter seccomp opsional harus diinstal untuk memblokir soket di tempat pertama. Untuk memungkinkan peluncuran ini, atur `allowAllUnixSockets`; untuk menjaganya keluar dari sandbox sepenuhnya, tambahkan perintah ke [`excludedCommands`](/docs/id/settings-reference#sandbox-excludedcommands).182 Di WSL2, WSL menyerahkan peluncuran binary Windows seperti `cmd.exe`, `powershell.exe`, atau apa pun di bawah `/mnt/c/` ke host Windows melalui Unix socket, sehingga apakah perintah yang di-sandbox dapat meluncurkannya mengikuti [pengaturan Unix socket](/docs/id/settings-reference#sandbox-network-allowunixsockets) sandbox: filter seccomp opsional harus terinstal agar socket tersebut dapat diblokir sejak awal. Untuk mengizinkan peluncuran ini, atur `allowAllUnixSockets`, yang membuka setiap Unix socket bagi perintah yang di-sandbox.

127 </Accordion>183 </Accordion>

128</AccordionGroup>184</AccordionGroup>

129 185 


131 Mode sandbox187 Mode sandbox

132</h3>188</h3>

133 189 

134Claude Code menawarkan dua mode sandbox. Di keduanya, sandbox memberlakukan pembatasan filesystem dan jaringan yang sama; perbedaannya hanya dalam apakah perintah sandboxed disetujui secara otomatis atau memerlukan izin eksplisit.190Claude Code menawarkan dua mode sandbox. Pada keduanya, sandbox menerapkan pembatasan filesystem dan jaringan yang sama; perbedaannya hanya pada apakah perintah yang di-sandbox disetujui secara otomatis atau memerlukan izin eksplisit.

135 191 

136<h4 id="auto-allow-mode">192<h4 id="auto-allow-mode">

137 Mode auto-allow193 Mode auto-allow

138</h4>194</h4>

139 195 

140Ketika perintah dapat di-sandbox, Claude Code menjalankannya di dalam sandbox dan menyetujuinya secara otomatis, tanpa meminta izin Anda. Perintah yang tidak dapat di-sandbox, seperti yang memerlukan akses jaringan ke host yang tidak diizinkan, kembali ke alur izin reguler, di mana Claude Code memeriksa [permission rules](/docs/id/permissions) Anda dan membatasi perintah apa pun yang tidak diizinkan oleh aturan tersebut, dengan prompt dalam mode Manual.196Claude Code menyetujui perintah secara otomatis, tanpa permintaan izin, ketika perintah berjalan di dalam sandbox. Sebuah perintah melalui [alur izin](/docs/id/permissions) biasa ketika berjalan di luar sandbox karena cocok dengan [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) atau karena Claude [mencobanya ulang tanpa sandbox](#the-unsandboxed-retry-escape-hatch).

197 

198Perintah yang di-sandbox yang terhubung ke host yang belum Anda izinkan tetap berada di dalam sandbox. [Host di luar domain yang Anda izinkan](#hosts-outside-your-allowed-domains) membahas siapa yang memutuskan apakah koneksi tersebut diteruskan.

141 199 

142Bahkan dalam mode auto-allow, hal berikut masih berlaku:200Bahkan dalam mode auto-allow, hal-hal berikut tetap berlaku:

143 201 

144* [Deny rules](/docs/id/permissions) eksplisit selalu dihormati202* [Aturan deny](/docs/id/permissions) eksplisit selalu dipatuhi

145* Perintah `rm` atau `rmdir` yang menargetkan [critical path](/docs/id/permission-modes#critical-paths) masih melalui alur izin reguler203* Perintah `rm` atau `rmdir` yang menargetkan [jalur kritis](/docs/id/permission-modes#critical-paths) tetap melalui alur izin biasa

146* [Ask rules](/docs/id/permissions) yang dibatasi konten seperti `Bash(git push *)` masih memaksa prompt bahkan untuk perintah sandboxed204* [Aturan ask](/docs/id/permissions) yang dibatasi konten seperti `Bash(git push *)` tetap memaksa munculnya permintaan izin bahkan untuk perintah yang di-sandbox

147* Aturan `Bash` ask yang kosong, atau bentuk setara `Bash(*)`, dilewati untuk perintah yang berjalan sandboxed; masih berlaku untuk perintah yang kembali ke alur izin reguler. Dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), aturan tidak dilewati: itu meminta perintah sandboxed juga, termasuk yang hanya-baca. Sebelum v2.1.212, skip berlaku dalam plan mode juga205* Aturan ask `Bash` polos, atau bentuk setaranya `Bash(*)`, dilewati untuk perintah yang berjalan di-sandbox; aturan ini tetap berlaku untuk perintah yang kembali ke alur izin biasa. Dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), aturan ini tidak dilewati: aturan ini memunculkan permintaan izin untuk perintah yang di-sandbox juga, termasuk yang read-only

148 206 

149<Info>207<Info>

150 Mode auto-allow bekerja secara independen dari pengaturan mode izin Anda, dengan tiga pengecualian: [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), perintah mode auto yang membawa [per-command allowed domains](#per-command-allowed-domains-in-auto-mode), dan [server-side classifier review](/docs/id/permission-modes#how-the-classifier-evaluates-actions) dari perintah sandboxed dalam mode auto. Bahkan jika Anda tidak dalam mode "accept edits", perintah Bash sandboxed berjalan secara otomatis ketika auto-allow diaktifkan. Ini berarti perintah Bash yang memodifikasi file dalam batas sandbox dieksekusi tanpa prompt, bahkan dalam mode Manual, di mana alat edit file akan meminta.208 Mode auto-allow bekerja secara independen dari pengaturan mode izin Anda, dengan tiga pengecualian: [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), perintah auto mode yang membawa [domain yang diizinkan per perintah](#per-command-allowed-domains-in-auto-mode), dan [peninjauan pengklasifikasi sisi server](/docs/id/permission-modes#how-the-classifier-evaluates-actions) terhadap perintah yang di-sandbox dalam auto mode. Meskipun Anda tidak berada dalam mode "accept edits", perintah Bash yang di-sandbox berjalan secara otomatis ketika auto-allow diaktifkan. Ini berarti perintah Bash yang memodifikasi file di dalam batas sandbox dieksekusi tanpa permintaan izin, bahkan dalam mode Manual, di mana tool pengeditan file akan memunculkan permintaan izin.

151 209 

152 Dalam plan mode, auto-allow tidak memperluas persetujuan; lihat [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) untuk bagaimana Claude Code membatasi perintah saat Anda merencanakan. Sebelum v2.1.212, auto-allow menjalankan perintah sandboxed tanpa prompt dalam plan mode juga.210 Dalam plan mode, auto-allow tidak memperluas persetujuan; lihat [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) untuk cara Claude Code membatasi perintah saat Anda membuat rencana.

153</Info>211</Info>

154 212 

155<h4 id="regular-permissions-mode">213<h4 id="regular-permissions-mode">

156 Mode regular permissions214 Mode regular permissions

157</h4>215</h4>

158 216 

159Semua perintah Bash melalui alur izin reguler, bahkan ketika sandboxed. Ini memberikan lebih banyak kontrol tetapi memerlukan lebih banyak persetujuan.217Semua perintah Bash melalui alur izin biasa, bahkan ketika di-sandbox. Ini memberikan kontrol lebih besar tetapi memerlukan lebih banyak persetujuan.

160 218 

161<h4 id="the-unsandboxed-retry-escape-hatch">219<h4 id="the-unsandboxed-retry-escape-hatch">

162 Pintu keluar retry unsandboxed220 Jalan keluar retry tanpa sandbox

221</h4>

222 

223Retry tanpa sandbox adalah jalan keluar untuk perintah yang gagal di dalam sandbox, seperti tool yang tidak kompatibel dengannya. Ketika sandbox memblokir koneksi jaringan, Claude Code menyebutkan host yang ditolak dalam hasil perintah, sehingga Claude melihat apa yang diblokir. Claude menganalisis kegagalan tersebut dan dapat mencoba ulang perintah dengan parameter `dangerouslyDisableSandbox`.

224 

225Perintah yang dicoba ulang berjalan tanpa sandbox. Dalam sesi terminal interaktif, siapa yang menyetujuinya bergantung pada mode izin Anda:

226 

227* **Mode `bypassPermissions`**: retry berjalan tanpa permintaan izin

228* **Mode Manual dan mode `acceptEdits`**: Anda mendapatkan permintaan izin berjudul "Bash command (unsandboxed)"

229* **[Auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode)**: model pengklasifikasi terpisah mengevaluasi perintah yang mendasarinya

230* **Mode `dontAsk`**: Claude Code menolak retry tersebut

231* **Plan mode**: lihat [cara Claude Code membatasi perintah saat Anda membuat rencana](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode)

232 

233Aturan dan pengaturan berikut mengubah siapa yang menyetujui retry:

234 

235* **Aturan allow yang cocok**: jika aturan allow seperti `Bash(curl *)` cocok dengan perintah, aturan tersebut juga menyetujui retry, sehingga perintah berjalan di luar sandbox tanpa permintaan izin

236* **Aturan ask untuk parameter**: tambahkan [aturan ask](/docs/id/permissions#match-by-input-parameter) untuk `Bash(dangerouslyDisableSandbox:true)` agar Anda dimintai izin pada retry Bash. Anda juga mendapatkan permintaan izin dalam auto mode dan mode `bypassPermissions`, dan aturan ini diutamakan daripada aturan allow yang cocok

237* **[`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories)**: [Tindakan yang tidak disetujui otomatis oleh mode mana pun](/docs/id/permission-modes#actions-no-mode-auto-approves) membahas retry yang memunculkan permintaan izin saat pengaturan ini aktif

238 

239<h4 id="turn-off-the-retry-with-strict-sandbox-mode">

240 Matikan retry dengan strict sandbox mode

163</h4>241</h4>

164 242 

165Beberapa perintah tidak dapat berjalan di dalam sandbox sama sekali, seperti alat yang tidak kompatibel dengannya atau yang memerlukan host yang belum Anda izinkan. Claude Code melaporkan pelanggaran sandbox dalam hasil perintah yang diblokir, menamai jalur atau host yang sandbox tolak, sehingga Claude melihat apa yang sandbox blokir. Daripada gagal tugas atau memerlukan Anda untuk mematikan sandboxing, Claude Code menyertakan pintu keluar: Claude menganalisis pelanggaran dan dapat mencoba kembali perintah dengan parameter `dangerouslyDisableSandbox`.243Anda dapat menonaktifkan retry tanpa sandbox dengan mengatur `"allowUnsandboxedCommands": false` dalam [pengaturan sandbox](/docs/id/settings-reference#sandbox-settings) Anda. Dengan retry dinonaktifkan, Claude Code mengabaikan parameter `dangerouslyDisableSandbox`. Selama sandbox berjalan, perintah yang dijalankan Claude kemudian di-sandbox kecuali cocok dengan entri `excludedCommands`. Untuk mencegah Claude Code menjalankan perintah tanpa sandbox ketika sandbox tidak dapat dimulai, atur juga [`failIfUnavailable`](/docs/id/settings-reference#sandbox-failifunavailable). Tab **Overrides** di `/sandbox` menampilkan pengaturan ini sebagai **Strict sandbox mode**.

166 244 

167Perintah yang dicoba kembali berjalan di luar sandbox, sehingga melalui alur izin reguler. Dalam mode Manual Anda mendapatkan prompt konfirmasi. Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), pengklasifikasi mengevaluasi perintah yang mendasar. Sementara [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) aktif, retry yang memerlukan persetujuan untuk berjalan di luar sandbox meminta Anda sebagai gantinya. Untuk diminta pada setiap retry unsandboxed bahkan dalam mode auto, tambahkan [ask rule](/docs/id/permissions#match-by-input-parameter) untuk `Bash(dangerouslyDisableSandbox:true)`.245Nilai `false` dalam pengaturan pengguna Anda, `--settings`, atau pengaturan terkelola tetap berlaku bahkan ketika pengaturan proyek mengatur `true`. Nilai `false` dalam pengaturan pengguna Anda tidak membuat sandbox menjadi wajib oleh admin, sehingga pengaturan sandbox lain dari proyek tetap berlaku. Sebelum v2.1.285, nilai `true` dari proyek menimpa nilai `false` dalam pengaturan pengguna Anda.

168 246 

169Anda dapat menonaktifkan pintu keluar ini dengan mengatur `"allowUnsandboxedCommands": false` dalam [sandbox settings](/docs/id/settings-reference#sandbox-settings) Anda. Dengan pintu keluar dinonaktifkan, Claude Code mengabaikan parameter `dangerouslyDisableSandbox`, dan setiap perintah Claude jalankan harus berjalan sandboxed kecuali Anda telah mencantumkannya dalam `excludedCommands`. Tab **Overrides** `/sandbox` menampilkan pengaturan ini sebagai **Strict sandbox mode**.247Jika Anda atau administrator Anda menonaktifkan retry dalam pengaturan terkelola atau dengan flag `--settings`, sandbox menjadi wajib oleh admin. Claude Code kemudian mengabaikan pengaturan dalam file repositori yang melonggarkan sandbox, termasuk entri `excludedCommands`. [Pengaturan repositori di bawah sandbox yang diwajibkan admin](#repository-settings-under-an-admin-required-sandbox) mencantumkan pengaturan tersebut.

170 248 

171Mode strict sandbox berlaku untuk perintah yang Claude jalankan. Perintah yang Anda ketik sendiri di prompt [shell-mode `!`](/docs/id/interactive-mode#shell-mode-with-prefix) berjalan di luar sandbox kecuali sesi adalah salah satu dari ini:249Strict sandbox mode berlaku untuk perintah yang dijalankan Claude. Perintah yang Anda ketik sendiri di [prompt shell-mode `!`](/docs/id/interactive-mode#shell-mode-with-prefix) berjalan di luar sandbox kecuali sesinya merupakan salah satu dari berikut:

172 250 

173* **Sesi [background](/docs/id/agent-view)**: mode strict sandbox mencakup perintah shell-mode juga251* **[Sesi latar belakang](/docs/id/agent-view)**: strict sandbox mode juga mencakup perintah shell-mode

174* **Sesi Linux dengan [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars#variables) diatur**: setiap perintah berjalan sandboxed, perintah shell-mode termasuk252* **Sesi Linux dengan [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars#variables) diatur**: setiap perintah berjalan di-sandbox, termasuk perintah shell-mode

175 253 

176Sebelum v2.1.260, mode strict sandbox sandboxed perintah shell-mode dalam setiap sesi.254Sebelum v2.1.260, strict sandbox mode men-sandbox perintah shell-mode di setiap sesi.

177 255 

178<h4 id="temporary-directories">256<h4 id="temporary-directories">

179 Direktori sementara257 Direktori sementara

180</h4>258</h4>

181 259 

182Direktori temp per-pengguna dapat ditulis di dalam sandbox secara default, bersama dengan direktori kerja. Kecuali Anda [disable filesystem isolation](#disable-filesystem-isolation), Claude Code menetapkan `$TMPDIR` ke direktori ini untuk perintah sandboxed, sehingga alat yang menulis file sementara bekerja tanpa konfigurasi tambahan.260Direktori temp per pengguna dapat ditulisi di dalam sandbox secara default, bersama dengan direktori kerja. Kecuali Anda [menonaktifkan isolasi filesystem](#disable-filesystem-isolation), Claude Code mengatur `$TMPDIR` ke direktori ini untuk perintah yang di-sandbox, sehingga tool yang menulis file sementara dapat bekerja tanpa konfigurasi tambahan.

183 261 

184Perintah unsandboxed mewarisi `$TMPDIR` shell Anda ketika diatur, sehingga sementara isolasi filesystem aktif, perintah sandboxed dan unsandboxed menyelesaikan `$TMPDIR` ke direktori yang berbeda. Jika shell Anda membiarkan `$TMPDIR` tidak diatur atau kosong, perintah unsandboxed yang mereferensikan `$TMPDIR` menerima override [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars) Anda, atau direktori temp sistem operasi ketika Anda belum menetapkan satu atau override adalah jalur panjang, sehingga variabel tidak berkembang menjadi string kosong. Untuk meneruskan file sementara di antara keduanya, tulis di bawah direktori kerja sebagai gantinya.262Perintah tanpa sandbox mewarisi `$TMPDIR` dari shell Anda ketika variabel tersebut diatur, sehingga selama isolasi filesystem aktif, perintah yang di-sandbox dan yang tidak di-sandbox menyelesaikan `$TMPDIR` ke direktori yang berbeda. Jika shell Anda membiarkan `$TMPDIR` tidak diatur atau kosong, perintah tanpa sandbox yang mereferensikan `$TMPDIR` menerima override [`CLAUDE_CODE_TMPDIR`](/docs/id/env-vars) Anda, atau direktori temp sistem operasi ketika Anda belum mengaturnya atau override tersebut berupa jalur yang panjang, sehingga variabel tersebut tidak diekspansi menjadi string kosong. Untuk meneruskan file sementara di antara keduanya, tuliskan file tersebut di bawah direktori kerja.

185 263 

186<h2 id="configure-sandboxing">264<h2 id="configure-sandboxing">

187 Konfigurasi sandboxing265 Mengonfigurasi sandboxing

188</h2>266</h2>

189 267 

190Sesuaikan perilaku sandbox melalui file `settings.json` Anda. Lihat [Settings](/docs/id/settings-reference#sandbox-settings) untuk referensi konfigurasi lengkap.268Sesuaikan perilaku sandbox melalui file `settings.json` Anda. Lihat [Pengaturan](/docs/id/settings-reference#sandbox-settings) untuk referensi konfigurasi lengkap.

191 269 

192Secara default, perintah sandboxed dapat menulis ke direktori kerja saat ini, direktori temp per-pengguna, dan [direktori apa pun yang telah Anda tambahkan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) dengan `--add-dir`, `/add-dir`, atau `permissions.additionalDirectories`. Jika perintah subprocess seperti `kubectl`, `terraform`, atau `npm` perlu menulis di luar direktori tersebut, gunakan `sandbox.filesystem.allowWrite` untuk memberikan akses ke jalur tertentu:270Secara default, perintah yang berjalan di sandbox dapat menulis ke direktori kerja saat ini, direktori temp per pengguna, dan [direktori apa pun yang telah Anda tambahkan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) dengan `--add-dir`, `/add-dir`, atau `permissions.additionalDirectories`. Jika perintah subproses seperti `kubectl`, `terraform`, atau `npm` perlu menulis di luar direktori tersebut, gunakan `sandbox.filesystem.allowWrite` untuk memberikan akses ke path tertentu:

193 271 

194```json theme={null}272```json theme={null}

195{273{


202}280}

203```281```

204 282 

205Jalur ini diberlakukan pada tingkat OS, sehingga semua perintah yang berjalan di dalam sandbox, termasuk proses anak mereka, menghormatinya. Ini adalah pendekatan yang direkomendasikan ketika alat memerlukan akses tulis ke lokasi tertentu, daripada mengecualikan alat dari sandbox sepenuhnya dengan `excludedCommands`.283Path 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`.

206 284 

207Ketika Anda menentukan array filesystem yang sama dalam beberapa [settings scopes](/docs/id/settings#settings-precedence), Claude Code menggabungkannya, menggabungkan jalur dari setiap scope daripada mengganti array satu scope dengan yang lain.285Ketika Anda mendefinisikan array filesystem yang sama di beberapa [cakupan pengaturan](/docs/id/settings#settings-precedence), Claude Code menggabungkannya, yaitu mengombinasikan path dari setiap cakupan alih-alih mengganti array dari satu cakupan dengan array dari cakupan lain.

208 286 

209Jika Anda mengecualikan sumber dengan [`--setting-sources`](/docs/id/cli-reference) pada CLI atau [`settingSources`](/docs/id/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) dalam Agent SDK, Claude Code mengabaikan entri `sandbox.filesystem` nya, aturan izin `Edit` nya, dan aturan penolakan `Read` nya saat membangun konfigurasi sandbox. Memerlukan Claude Code v2.1.246 atau lebih baru.287Jika Anda mengecualikan suatu sumber dengan [`--setting-sources`](/docs/id/cli-reference) di CLI atau [`settingSources`](/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.

210 288 

211Ketika Anda mengedit daftar filesystem ini selama sesi, Claude Code [menerapkan perubahan ke sesi yang sedang berjalan](/docs/id/settings#when-edits-take-effect), sehingga perintah sandboxed berikutnya berjalan di bawah jalur baru.289Ketika Anda mengedit daftar filesystem ini selama sesi, Claude Code [menerapkan perubahan tersebut ke sesi yang sedang berjalan](/docs/id/settings#when-edits-take-effect), sehingga perintah sandbox berikutnya berjalan dengan path yang baru.

212 290 

213Awalan jalur mengontrol bagaimana jalur diselesaikan:291Path filesystem sandbox menggunakan konvensi standar: `/tmp/build` adalah path absolut dan `~/.kube` relatif terhadap direktori home Anda. Ini berbeda dari [aturan izin Read dan Edit](/docs/id/permissions#read-and-edit), yang menggunakan `//path` untuk path absolut dan `/path` untuk path relatif terhadap proyek. Untuk path relatif, garis miring di akhir, dan wildcard, lihat [Prefiks path sandbox](/docs/id/settings-reference#sandbox-path-prefixes).

214 292 

215| Awalan | Arti | Contoh |293Anda juga dapat menolak akses tulis atau baca menggunakan `sandbox.filesystem.denyWrite` dan `sandbox.filesystem.denyRead`, dan mengizinkan kembali path tertentu di dalam wilayah yang ditolak menggunakan `sandbox.filesystem.allowRead`. Ketika aturan baca tumpang tindih, aturan dengan path yang lebih sempit yang berlaku:

216| :- | :- | :- |

217| `/` | Jalur absolut dari akar filesystem | `/tmp/build` tetap `/tmp/build` |

218| `~/` | Relatif terhadap direktori home | `~/.kube` menjadi `$HOME/.kube` |

219| `./` atau tanpa awalan | Relatif terhadap akar proyek untuk pengaturan proyek, atau ke `~/.claude` untuk pengaturan pengguna | `./output` dalam `.claude/settings.json` diselesaikan ke `<project-root>/output` |

220 

221Sintaks ini berbeda dari [Read and Edit permission rules](/docs/id/permissions#read-and-edit), yang menggunakan `//path` untuk absolut dan `/path` untuk relatif proyek. Jalur filesystem sandbox menggunakan konvensi standar: `/tmp/build` adalah absolut. Untuk bagaimana Claude Code memperlakukan garis miring di akhir atau wildcard dalam jalur ini, lihat [Sandbox path prefixes](/docs/id/settings-reference#sandbox-path-prefixes).

222 294 

223Anda juga dapat menolak akses tulis atau baca menggunakan `sandbox.filesystem.denyWrite` dan `sandbox.filesystem.denyRead`, dan mengizinkan kembali jalur tertentu dalam wilayah yang ditolak menggunakan `sandbox.filesystem.allowRead`. Ketika aturan baca tumpang tindih, jalur yang lebih spesifik menang:295| Contoh aturan | Hasil |

224 

225| Aturan contoh | Hasil |

226| :- | :- |296| :- | :- |

227| `"denyRead": ["~/"]` dengan `"allowRead": ["~/projects"]` | `~/projects` dapat dibaca dan sisa direktori home tetap diblokir. Izin yang lebih sempit membuka kembali bagian itu dari wilayah yang ditolak |297| `"denyRead": ["~/"]` dengan `"allowRead": ["~/projects"]` | `~/projects` dapat dibaca dan bagian lain dari direktori home tetap diblokir. Allow yang lebih sempit membuka kembali bagian tersebut dari wilayah yang ditolak |

228| `"allowRead": ["~/"]` dengan `"denyRead": ["~/.env"]` | `~/.env` tetap diblokir dan sisa direktori home dapat dibaca. Penolakan yang tepat berlaku di dalam izin yang lebih luas, jadi izin yang luas tidak dapat secara diam-diam membuka kembali rahasia |298| `"allowRead": ["~/"]` dengan `"denyRead": ["~/.env"]` | `~/.env` tetap diblokir dan bagian lain dari direktori home dapat dibaca. Deny tetap berlaku di dalam allow yang lebih luas, sehingga allow yang luas tidak dapat secara diam-diam mengekspos kembali sebuah rahasia |

229| `"allowRead": ["~/"]` dengan `"denyRead": ["~/**/.env"]` | Setiap `.env` di bawah direktori home tetap diblokir dan sisanya dapat dibaca. [Wildcard deny](/docs/id/settings-reference#sandbox-path-prefixes) berlaku di dalam izin yang lebih luas dengan cara yang sama seperti jalur yang tepat |299| `"allowRead": ["~/"]` dengan `"denyRead": ["~/**/.env"]` | Setiap `.env` di bawah direktori home tetap diblokir dan sisanya dapat dibaca. [Deny dengan wildcard](/docs/id/settings-reference#sandbox-path-prefixes) tetap berlaku di dalam allow yang lebih luas dengan cara yang sama seperti path yang persis |

230 300 

231Contoh di bawah memblokir pembacaan dari seluruh direktori home sambil tetap memungkinkan pembacaan dari proyek saat ini. Tempatkan di `.claude/settings.json` proyek Anda, karena jalur relatif `.` diselesaikan ke akar proyek hanya ketika konfigurasi berada dalam pengaturan proyek:301Contoh di bawah ini memblokir pembacaan dari seluruh direktori home sambil tetap mengizinkan pembacaan dari proyek saat ini. Letakkan di `.claude/settings.json` proyek Anda, karena path relatif `.` di-resolve ke root proyek hanya ketika konfigurasi berada di pengaturan proyek:

232 302 

233```json theme={null}303```json theme={null}

234{304{


242}312}

243```313```

244 314 

245Jika Anda menempatkan konfigurasi yang sama dalam `~/.claude/settings.json`, `.` akan diselesaikan ke `~/.claude` sebagai gantinya, dan file proyek akan tetap diblokir oleh aturan `denyRead`.315Jika Anda meletakkan konfigurasi yang sama di `~/.claude/settings.json`, `.` akan di-resolve ke `~/.claude`, dan file proyek akan tetap diblokir oleh aturan `denyRead`.

316 

317Untuk menolak akses baca perintah sandbox ke direktori home dan volume yang di-mount sambil menjaga direktori kerja tetap dapat dibaca, atur [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) alih-alih menulis aturan path.

318 

319<h3 id="run-commands-outside-the-sandbox-with-excludedcommands">

320 Menjalankan perintah di luar sandbox dengan `excludedCommands`

321</h3>

322 

323Cantumkan pola perintah di [`sandbox.excludedCommands`](/docs/id/settings-reference#sandbox-excludedcommands) untuk menjalankan perintah yang cocok di luar sandbox, yang berarti tanpa pembatasan filesystem dan tanpa proxy jaringan. Gunakan ini untuk tool yang tidak dapat bekerja di dalam sandbox dan yang Anda percayai dengan akses penuh Anda. Tool yang memerlukan satu direktori atau satu host tambahan mungkin dapat bekerja dengan `allowWrite` atau `allowedDomains`, yang menjaga perintah tetap berada di dalam sandbox.

324 

325Contoh ini mengeluarkan perintah `docker compose` dari sandbox. Simpan di `~/.claude/settings.json` untuk menerapkannya ke semua proyek Anda:

326 

327```json theme={null}

328{

329 "sandbox": {

330 "enabled": true,

331 "excludedCommands": ["docker compose *"]

332 }

333}

334```

335 

336Claude Code memeriksa entri Anda terhadap setiap panggilan Bash dan Monitor. Sebuah panggilan adalah seluruh baris perintah yang dikirim Claude, yang dapat merangkai beberapa perintah. Aturan berikut menentukan apakah sebuah panggilan keluar dari sandbox:

337 

338* **Akhiri pola dengan ` *`**: entri menggunakan sintaks yang sama dengan [aturan izin](/docs/id/permissions#permission-rule-syntax) `Bash(...)`, di mana pola tanpa wildcard merupakan kecocokan persis. `docker` hanya cocok dengan `docker` tanpa argumen. `docker *` cocok dengan `docker` dengan atau tanpa argumen

339* **Setiap perintah dalam panggilan harus cocok**: `npm ci && docker compose build` tetap berada di dalam sandbox kecuali ada entri lain yang mencakup `npm ci`

340* **Claude Code mencocokkan teks panggilan**: skrip atau target `make` yang memanggil `docker` secara internal tidak cocok, begitu pula `/usr/local/bin/docker`

341* **Beberapa panggilan tetap berada di dalam sandbox**: redirect ke file, `cd`, atau command substitution seperti `$(...)` membuat seluruh panggilan tetap berada di dalam sandbox. [Entri referensi](/docs/id/settings-reference#sandbox-excludedcommands) mencantumkan lebih banyak panggilan yang tetap berada di dalam sandbox

342* **Lokasi penyimpanan entri dapat berpengaruh**: selama sandbox [diwajibkan oleh admin](#repository-settings-under-an-admin-required-sandbox), Claude Code mengabaikan entri di `.claude/settings.json` dan `.claude/settings.local.json`

343 

344Perintah yang dikecualikan melewati alur izin biasa:

246 345 

247Untuk menolak perintah sandboxed akses baca ke direktori home dan volume yang dipasang sambil menjaga direktori kerja tetap dapat dibaca, atur [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) sebagai gantinya dari menulis aturan jalur.346* [Perintah read-only](/docs/id/permissions#read-only-commands) dan perintah yang dicakup oleh aturan allow Anda berjalan tanpa permintaan izin

347* Dalam auto mode, pengklasifikasi meninjau perintah lain yang dikecualikan

348* Dalam mode `bypassPermissions`, perintah yang dikecualikan berjalan tanpa permintaan izin kecuali ada aturan ask yang cocok dengannya

349 

350Untuk memastikan sebuah entri cocok, beralihlah ke mode Manual dan minta Claude menjalankan perintah yang cocok yang mengubah sesuatu, seperti `docker compose up -d`. Dialog izin akan berjudul "Bash command (unsandboxed)".

351 

352<Warning>

353 Perintah yang dikecualikan berjalan dengan akses penuh Anda. Entri yang luas seperti `docker *` mencakup semua hal yang dapat dilakukan tool tersebut. Jika Anda menulis pola yang mencakup interpreter, skrip di dalam direktori kerja Anda, atau tool yang bertindak atas file di sana, seperti yang dilakukan `docker compose` dengan file compose-nya, Claude dapat menulis file tersebut lalu menjalankannya di luar sandbox. Pola yang lebih sempit menyisakan lebih sedikit hal yang dapat dijalankan Claude di luar sandbox.

354</Warning>

248 355 

249<h3 id="disable-filesystem-isolation">356<h3 id="disable-filesystem-isolation">

250 Nonaktifkan isolasi filesystem357 Menonaktifkan isolasi filesystem

251</h3>358</h3>

252 359 

253Atur `sandbox.filesystem.disabled` ke `true` untuk melewati isolasi filesystem sambil menjaga isolasi jaringan. Contoh di bawah mematikan isolasi filesystem sambil menjaga daftar izin domain jaringan:360Atur `sandbox.filesystem.disabled` ke `true` untuk melewati isolasi filesystem sambil tetap mempertahankan isolasi jaringan. Contoh di bawah ini mematikan isolasi filesystem sambil tetap mempertahankan allowlist domain jaringan:

254 361 

255```json theme={null}362```json theme={null}

256{363{


266}373}

267```374```

268 375 

269Sandbox memiliki dua lapisan independen: [filesystem isolation](#filesystem-isolation) mengontrol jalur mana yang dapat dibaca dan ditulis perintah sandboxed, dan [network isolation](#network-isolation) mengontrol domain mana yang dapat mereka jangkau. Dengan lapisan filesystem mati, perintah sandboxed mendapatkan akses baca dan tulis tanpa batas ke filesystem host, sementara egress jaringan mereka tetap terbatas pada domain yang Anda izinkan. Matikan lapisan ketika Anda sandbox untuk mengontrol tempat perintah terhubung daripada apa yang mereka tulis.376Sandbox memiliki dua lapisan independen: [isolasi filesystem](#filesystem-isolation) mengontrol path mana yang dapat dibaca dan ditulis oleh perintah sandbox, dan [isolasi jaringan](#network-isolation) mengontrol domain mana yang dapat mereka jangkau. Dengan lapisan filesystem dimatikan, perintah sandbox mendapatkan akses baca dan tulis tanpa batas ke filesystem host, sementara lalu lintas jaringan keluarnya tetap terbatas pada domain yang Anda izinkan. Matikan lapisan ini ketika Anda menggunakan sandbox untuk mengontrol ke mana perintah terhubung, bukan apa yang mereka tulis.

270 377 

271Pengaturan ini mati secara default dan berlaku pada platform tempat sandbox berjalan: macOS, Linux, dan WSL2. Memerlukan Claude Code v2.1.216 atau lebih baru.378`sandbox.filesystem.disabled` default-nya `false`. Memerlukan Claude Code v2.1.216 atau lebih baru.

272 379 

273<Warning>380<Warning>

274 Dengan isolasi filesystem mati dan perintah auto-allowed, perintah sandboxed dapat menulis file yang kemudian dijalankan atau dibaca perintah lain, seperti file startup shell, executable di `$PATH`, atau `~/.claude/settings.json`, dan menggunakannya untuk memperluas akses mereka sendiri pada run berikutnya. Atur `filesystem.disabled` ke `true` hanya untuk workload yang Anda percayai tidak akan meningkatkan akses mereka sendiri. Mengunci domain jaringan dengan [`allowManagedDomainsOnly`](#keep-developers-from-widening-the-policy) mempersempit risiko tetapi tidak menghilangkannya, karena kunci itu hanya berlaku untuk perintah yang berjalan di dalam sandbox.381 Dengan isolasi filesystem dimatikan dan perintah diizinkan secara otomatis, perintah sandbox dapat menulis file yang kemudian dijalankan atau dibaca oleh perintah berikutnya, seperti file startup shell, executable di `$PATH`, atau `~/.claude/settings.json`, dan menggunakannya untuk memperluas aksesnya sendiri pada eksekusi berikutnya. Atur `filesystem.disabled` ke `true` hanya untuk beban kerja yang Anda percayai tidak akan meningkatkan aksesnya sendiri. Mengunci domain jaringan dengan [`allowManagedDomainsOnly`](#keep-developers-from-widening-the-policy) mempersempit risiko tetapi tidak menghilangkannya, karena kunci tersebut hanya berlaku untuk perintah yang berjalan di dalam sandbox.

275</Warning>382</Warning>

276 383 

277<h4 id="which-settings-can-disable-it">384<h4 id="which-settings-can-disable-it">

278 Pengaturan mana yang dapat menonaktifkannya385 Pengaturan mana yang dapat menonaktifkannya

279</h4>386</h4>

280 387 

281Karena mematikan isolasi filesystem memperluas apa yang dapat dilakukan perintah sandboxed, Claude Code menghormati `filesystem.disabled` dari sumber pengaturan ini saja:388Karena mematikan isolasi filesystem memperluas apa yang dapat dilakukan perintah sandbox, Claude Code hanya menghormati `filesystem.disabled` dari sumber pengaturan berikut:

282 389 

283* Pengaturan pengguna, pengaturan terkelola, dan bendera CLI `--settings` dapat mengaturnya. Pengaturan proyek dalam `.claude/settings.json` dan `.claude/settings.local.json` tidak dapat, jadi proyek yang diperiksa tidak dapat mematikan isolasi filesystem.390* 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.

284* Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` sama sekali, atau mencantumkan entri `sandbox.credentials.files` apa pun dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat mengatur kunci. Ini menjaga pembatasan filesystem yang diterapkan administrator tetap berlaku; untuk melonggarkan penerapan seperti itu, atur `"disabled": true` dalam pengaturan terkelola.391* Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` sama sekali, atau mencantumkan entri `sandbox.credentials.files` apa pun dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat mengatur kunci tersebut. Ini menjaga pembatasan filesystem yang di-deploy administrator tetap berlaku; untuk melonggarkan deployment semacam itu, atur `"disabled": true` di pengaturan terkelola.

285* Ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars) diatur, Claude Code mengabaikan `filesystem.disabled` dari setiap sumber, termasuk pengaturan terkelola, dan menjaga isolasi filesystem tetap aktif.392* Ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars) diatur, Claude Code mengabaikan `filesystem.disabled` dari setiap sumber, termasuk pengaturan terkelola, dan tetap mengaktifkan isolasi filesystem.

286 393 

287Apakah entri `credentials.files` terkelola menyematkan `filesystem.disabled`, mengunci kunci ke pengaturan terkelola sehingga pengembang tidak dapat mematikan isolasi filesystem, tergantung pada `mode` entri dan apa yang terjadi pada entri ketika sandbox dimulai:394Entri `mask` yang [valid](/docs/id/settings-reference#invalid-credential-entries-in-managed-settings) tidak mengunci kunci tersebut, bahkan ketika Claude Code [melakukan fallback ke `deny`](#mask-credential-files) untuknya saat startup. Cantumkan path yang tidak dapat di-mask, seperti direktori kredensial, sebagai entri `deny` eksplisit di pengaturan terkelola, yang mengunci kunci tersebut.

288 

289| Entri terkelola | Menyematkan `filesystem.disabled` | Apa yang melindungi file ketika isolasi mati |

290| - | - | - |

291| `"mode": "deny"` | Ya | Tidak ada: blok baca adalah bagian dari lapisan filesystem |

292| `"mode": "mask"`, diterapkan sebagai mask | Tidak | Masking itu sendiri: [sentinel copy dan proxy](#mask-credential-files) di Linux dan WSL2, aturan baca sandbox itu sendiri di macOS |

293| `"mode": "mask"`, [jatuh kembali ke `deny`](#mask-credential-files) saat setup | Tidak | Tidak ada, sama seperti `deny`. Daftarkan jalur yang tidak dapat di-mask, seperti direktori, sebagai entri `deny` eksplisit, yang menyematkan kunci |

294| `"mode": "mask"`, [terdegradasi ke `deny` oleh validasi](/docs/id/managed-settings#invalid-entries-in-managed-settings) | Ya, seperti entri `deny` eksplisit | Tidak ada, sama seperti `deny` |

295 

296Fallback terjadi ketika sandbox dimulai, setelah Claude Code telah membaca pengaturan yang pemeriksaan pin berjalan, jadi entri yang jatuh kembali tidak pernah menyematkan. Validasi menulis ulang entri yang tidak valid ke `deny` saat pengaturan dimuat, jadi entri yang terdegradasi menyematkan seperti yang Anda tulis sebagai `deny`.

297 395 

298<h4 id="what-changes-when-filesystem-isolation-is-off">396<h4 id="what-changes-when-filesystem-isolation-is-off">

299 Apa yang berubah ketika isolasi filesystem mati397 Apa yang berubah saat isolasi filesystem dimatikan

300</h4>398</h4>

301 399 

302Mengatur `filesystem.disabled` mengangkat perlindungan yang lapisan filesystem itu sendiri berlakukan. Perlindungan yang lapisan lain berlakukan terus berlaku:400Mengatur `filesystem.disabled` mencabut perlindungan yang diberlakukan oleh lapisan filesystem itu sendiri. Perlindungan yang diberlakukan oleh lapisan lain tetap berlaku:

303 401 

304| Perlindungan | Dengan isolasi filesystem mati |402| Perlindungan | Dengan isolasi filesystem dimatikan |

305| - | - |403| - | - |

306| `filesystem.denyRead` dan [`credentials.files`](#protect-credentials) blok baca `deny` | Tidak diberlakukan. Lapisan filesystem menerapkan keduanya |404| `filesystem.denyRead` dan blokir baca `deny` [`credentials.files`](#protect-credentials) | Tidak diberlakukan. Lapisan filesystem yang menerapkan keduanya |

307| `credentials.envVars` entri `deny` dan `mask` | Diberlakukan. Scrubbing variabel lingkungan independen dari lapisan filesystem |405| Entri `deny` dan `mask` `credentials.envVars` | Diberlakukan. Pembersihan environment variable tidak bergantung pada lapisan filesystem |

308| [`credentials.files` entri `mask`](#mask-credential-files) diterapkan sebagai mask | Diberlakukan: masking independen dari lapisan filesystem. Entri yang [jatuh kembali ke `deny`](#mask-credential-files) tidak diberlakukan, seperti entri `deny` apa pun |406| [Entri `mask` `credentials.files`](#mask-credential-files) yang diterapkan sebagai mask | Diberlakukan: masking tidak bergantung pada lapisan filesystem. Entri yang [mengalami fallback ke `deny`](#mask-credential-files) tidak diberlakukan, seperti entri `deny` lainnya |

309 407 

310Dua hal lain berubah:408Dua hal lain berubah:

311 409 

312* Perintah sandboxed mewarisi `$TMPDIR` shell Anda daripada direktori temp per-pengguna, karena setiap direktori temp dapat ditulis dan Claude Code tidak lagi mengarahkan perintah ke yang per-pengguna.410* Perintah sandbox mewarisi `$TMPDIR` shell Anda alih-alih direktori temp per pengguna, karena setiap direktori temp dapat ditulis dan Claude Code tidak lagi mengarahkan perintah ke direktori per pengguna.

313 411 

314 Di Linux variabel sering tidak diatur dalam shell induk. Panduan alat Bash memberi tahu Claude untuk membuat direktori scratch dengan `mktemp -d` daripada mengandalkan `$TMPDIR`.412 Di Linux, variabel ini sering kali tidak diatur di shell induk. Panduan tool Bash memberi tahu Claude untuk membuat direktori sementara dengan `mktemp -d` alih-alih mengandalkan `$TMPDIR`.

315* [`autoAllowBashIfSandboxed`](/docs/id/settings-reference#sandbox-autoallowbashifsandboxed) masih default ke `true`, jadi perintah sandboxed terus berjalan tanpa prompt. Atur ke `false` untuk meminta perintah sandboxed.413* [`autoAllowBashIfSandboxed`](/docs/id/settings-reference#sandbox-autoallowbashifsandboxed) tetap default ke `true`, sehingga perintah sandbox tetap berjalan tanpa permintaan izin. Atur ke `false` untuk meminta izin bagi perintah sandbox.

316 414 

317<h3 id="protect-credentials">415<h3 id="protect-credentials">

318 Lindungi kredensial416 Melindungi kredensial

319</h3>417</h3>

320 418 

321Pengaturan `sandbox.credentials` mendeklarasikan file kredensial dan variabel lingkungan yang harus dilindungi dari perintah sandboxed. Setiap entri memberi nama jalur file atau variabel lingkungan dan `mode`. Blok `credentials` khusus menjaga aturan kredensial dikelompokkan bersama dan terpisah dari aturan filesystem umum.419Pengaturan `sandbox.credentials` mendeklarasikan file kredensial dan environment variable yang akan dilindungi dari perintah sandbox. Setiap entri menyebutkan path file atau environment variable dan sebuah `mode`. Blok `credentials` khusus ini menjaga aturan kredensial tetap terkelompok dan terpisah dari aturan filesystem umum.

322 420 

323Untuk entri dengan `"mode": "deny"`, jalur file ditolak untuk pembacaan di dalam sandbox, pembatasan yang sama yang diterapkan `filesystem.denyRead`, dan variabel lingkungan tidak diatur sebelum setiap perintah sandboxed berjalan. Perlindungan file adalah bagian dari lapisan filesystem, jadi tidak berlaku jika Anda [menonaktifkan isolasi filesystem](#disable-filesystem-isolation); perlindungan variabel lingkungan masih berlaku.421Untuk entri dengan `"mode": "deny"`, path file ditolak untuk dibaca di dalam sandbox, pembatasan yang sama dengan yang diterapkan `filesystem.denyRead`, dan environment variable dihapus sebelum setiap perintah sandbox dijalankan. Perlindungan file merupakan bagian dari lapisan filesystem, sehingga tidak berlaku jika Anda [menonaktifkan isolasi filesystem](#disable-filesystem-isolation); perlindungan environment variable tetap berlaku.

324 422 

325Contoh di bawah memblokir pembacaan file kredensial AWS dan direktori SSH serta menghapus `GITHUB_TOKEN` dan `NPM_TOKEN` dari lingkungan perintah sandboxed:423Contoh di bawah ini memblokir pembacaan file kredensial AWS dan direktori SSH serta menghapus `GITHUB_TOKEN` dan `NPM_TOKEN` dari environment perintah sandbox:

326 424 

327```json theme={null}425```json theme={null}

328{426{


342}440}

343```441```

344 442 

345Entri variabel lingkungan dan entri file juga menerima `"mode": "mask"`, dijelaskan di bawah [Mask credentials](#mask-credentials).443Entri environment variable dan entri file juga menerima `"mode": "mask"`, yang dijelaskan di [Melakukan mask kredensial](#mask-credentials).

346 444 

347Jalur file mengikuti [aturan awalan](/docs/id/settings-reference#sandbox-path-prefixes) yang sama dengan pengaturan `sandbox.filesystem.*`.445Path file mengikuti [aturan prefiks](/docs/id/settings-reference#sandbox-path-prefixes) yang sama dengan pengaturan `sandbox.filesystem.*`.

348 446 

349Claude Code menggabungkan entri `deny` dari setiap [settings scope](/docs/id/settings#settings-precedence) yang dimuat sesi. Entri `deny` hanya pernah mempersempit akses, jadi scope apa pun dapat menambahkan satu, tetapi tidak ada scope yang dapat menghapus satu yang ditambahkan scope lain.447Claude Code menggabungkan entri `deny` dari setiap [cakupan pengaturan](/docs/id/settings#settings-precedence) yang dimuat sesi. Entri `deny` hanya pernah mempersempit akses, sehingga cakupan mana pun dapat menambahkannya, tetapi tidak ada cakupan yang dapat menghapus entri yang ditambahkan oleh cakupan lain.

350 448 

351Ketika Anda [mengecualikan sumber pengaturan](#configure-sandboxing):449Ketika Anda [mengecualikan sumber pengaturan](#configure-sandboxing):

352 450 

353* **Pengaturan proyek atau lokal**: Claude Code tidak menerapkan entri `credentials` apa pun dari mereka. Memerlukan Claude Code v2.1.246 atau lebih baru.451* **Pengaturan proyek atau lokal**: Claude Code tidak menerapkan satu pun entri `credentials` dari sumber tersebut. Memerlukan Claude Code v2.1.246 atau lebih baru.

354* **Pengaturan pengguna**: Claude Code masih menerapkan entri `deny` dalam `~/.claude/settings.json` dan menjaga [entri `mask` file](#mask-credential-files) nya sebagai pembatasan, tetapi menghapus [entri `mask` variabel lingkungan](#mask-environment-variables) nya.452* **Pengaturan pengguna**: Claude Code tetap menerapkan entri `deny` di `~/.claude/settings.json` dan mempertahankan [entri `mask` file](#mask-credential-files) sebagai pembatasan yang tidak lagi memberi wewenang kepada proxy untuk mensubstitusi nilai sebenarnya, tetapi membuang [entri `mask` environment variable](#mask-environment-variables).

355 453 

356Tidak ada daftar penolakan kredensial bawaan, jadi hanya file dan variabel yang Anda daftarkan yang dibatasi.454Tidak ada daftar deny kredensial bawaan, sehingga hanya file dan variabel yang Anda cantumkan yang dibatasi.

357 455 

358`sandbox.credentials` mempengaruhi perintah Bash sandboxed saja. Untuk menghapus kredensial dari semua subprocess terlepas dari sandboxing, atur [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars).456`sandbox.credentials` hanya memengaruhi perintah Bash sandbox. Untuk menghapus kredensial dari semua subproses terlepas dari sandboxing, atur [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars).

359 457 

360<h3 id="mask-credentials">458<h3 id="mask-credentials">

361 Mask credentials459 Melakukan mask kredensial

362</h3>460</h3>

363 461 

364Masking berjalan lebih jauh daripada entri `deny` di bawah [Protect credentials](#protect-credentials). Daripada memblokir kredensial, Claude Code menunjukkan perintah sandboxed placeholder, sentinel, dan [sandbox proxy](#network-isolation) menukar nilai asli pada permintaan keluar ke host yang Anda izinkan. Untuk file, substitusi adalah perilaku Linux dan WSL2; [macOS memblokir file sebagai gantinya](#mask-credential-files).462Ketika Anda melakukan mask pada kredensial, Claude Code menampilkan placeholder per sesi yang disebut sentinel kepada perintah sandbox, dan [proxy sandbox](#network-isolation) mensubstitusi nilai sebenarnya pada permintaan keluar ke host yang Anda izinkan. Entri `deny` di [Melindungi kredensial](#protect-credentials) memblokir kredensial sebagai gantinya. Untuk file di macOS, Claude Code [memblokir file tersebut](#mask-credential-files) alih-alih melakukan mask.

365 463 

366<h4 id="mask-environment-variables">464Melakukan mask environment variable memerlukan Claude Code v2.1.199 atau lebih baru. Referensi [`sandbox.credentials`](/docs/id/settings-reference#sandbox-credentials) mencantumkan setiap field.

367 Mask environment variables

368</h4>

369 465 

370`"mode": "mask"` melindungi kredensial sambil membuat alat yang mengotentikasi dengannya tetap berfungsi. `deny` menghapus variabel sepenuhnya, yang juga merusak alat yang membutuhkannya, seperti `gh` atau `npm`. Memerlukan Claude Code v2.1.199 atau lebih baru.466Masking memerlukan hal-hal berikut:

371 467 

372Dengan `mask`, perintah sandboxed melihat nilai sentinel per-sesi daripada yang asli. Setiap entri `mask` dapat mencantumkan `injectHosts`, host tempat nilai asli diizinkan untuk menjangkau. Ketika permintaan meninggalkan sandbox untuk salah satu dari mereka, [sandbox proxy](#network-isolation) mengganti sentinel dengan nilai asli. Perintah dan apa pun yang dicatat tidak pernah memegang kredensial asli, tetapi permintaannya tetap mengotentikasi.468* **Terminasi TLS**: proxy mensubstitusi nilai sebenarnya di dalam isi permintaan, sehingga proxy harus dapat melihatnya. Atur [`network.tlsTerminate`](/docs/id/settings-reference#sandbox-network-tlsterminate) agar proxy menghentikan TLS sendiri. Tanpanya, masking gagal tanpa mengekspos apa pun: perintah tetap hanya melihat sentinel, tetapi sentinel mencapai server tanpa perubahan dan autentikasi gagal. Claude Code melaporkan kesalahan konfigurasi ini saat startup.

469* **Tujuan yang diizinkan**: setiap entri `mask` dapat mencantumkan `injectHosts`, yaitu host yang diizinkan untuk dijangkau oleh nilai sebenarnya. Proxy hanya menyuntikkan kredensial pada koneksi yang diterima oleh [allowlist domain](#network-isolation), sehingga setiap host `injectHosts` juga harus dapat dijangkau melalui `network.allowedDomains`. Untuk entri `mask` tanpa `injectHosts`, proxy mensubstitusi nilai sebenarnya pada permintaan ke setiap host di `network.allowedDomains`.

470* **Cakupan pengaturan yang tepercaya**: masking memberi wewenang kepada proxy untuk mengirimkan kredensial sebenarnya Anda ke suatu tempat, sehingga Claude Code hanya menghormati entri `mask`, `network.tlsTerminate`, [`credentials.allowPlaintextInject`](/docs/id/settings-reference#sandbox-credentials-allowplaintextinject), `awsPairs`, dan `sigv4` dari pengaturan pengguna, pengaturan terkelola, dan flag `--settings`. Claude Code mengabaikannya di `.claude/settings.json` atau `.claude/settings.local.json` milik repositori. Ketika administrator Anda mengirimkan entri `mask`, `network.tlsTerminate`, atau `credentials.allowPlaintextInject` melalui pengaturan yang dikelola server, entri tersebut dihitung sebagai [pengaturan yang memerlukan persetujuan](/docs/id/server-managed-settings#security-approval-dialogs).

373 471 

374Proxy mengganti kredensial di dalam konten permintaan, jadi harus melihatnya. Atur [`network.tlsTerminate`](/docs/id/settings-reference#sandbox-network-tlsterminate) sehingga proxy menghentikan TLS itu sendiri.472<h4 id="mask-environment-variables">

375 473 Melakukan mask environment variable

376Tanpa itu, masking gagal tanpa mengekspos apa pun: perintah masih hanya melihat sentinel, tetapi sentinel mencapai server tidak berubah dan otentikasi gagal. Claude Code melaporkan kesalahan konfigurasi ini saat startup.474</h4>

377 

378Substitusi mencakup header dan badan permintaan. Permintaan yang mengotentikasi dengan tanda tangan yang berasal dari kredensial, daripada kredensial itu sendiri, perlu ditandatangani ulang di proxy; [Re-sign AWS requests](#re-sign-aws-requests) mencakup bagaimana itu bekerja untuk AWS.

379 475 

380Proxy menyuntik hanya pada koneksi yang [daftar domain allowlist](#network-isolation) mengakui, jadi setiap tujuan `injectHosts` juga harus dapat dijangkau melalui `network.allowedDomains`.476Untuk melakukan mask pada environment variable, atur `"mode": "mask"` pada entri `credentials.envVars`-nya. Perintah tersebut dan apa pun yang dicatatnya ke log tidak pernah memegang kredensial sebenarnya, tetapi permintaannya tetap terautentikasi. Ketika variabel yang sama dicantumkan dengan `deny` di cakupan mana pun, `deny` diutamakan.

381 477 

382Contoh di bawah mask dua token. `GH_TOKEN` diganti hanya pada permintaan ke `api.github.com`, sementara `NPM_TOKEN` tidak memiliki `injectHosts` dan diganti pada permintaan ke setiap host dalam `network.allowedDomains`.478Contoh ini melakukan mask pada dua token. `GH_TOKEN` disubstitusi hanya pada permintaan ke `api.github.com`, sedangkan `NPM_TOKEN` tidak memiliki `injectHosts` dan disubstitusi pada permintaan ke setiap host di `network.allowedDomains`:

383 479 

384```json theme={null}480```json theme={null}

385{481{


399}495}

400```496```

401 497 

402<span id="ipv6-destinations-in-injecthosts" />Ejakan tujuan IPv6 secara berbeda dalam dua daftar, karena setiap daftar memiliki matcher-nya sendiri:498Masking mengganti seluruh nilai secara default. Untuk nilai yang memiliki struktur, seperti string koneksi `DATABASE_URL` atau JWT, gunakan [field `extract`, `decode`, `maskClaims`, dan `onExtractNoMatch`](/docs/id/settings-reference#sandbox-credentials-envvars) agar tool yang mem-parse nilai tersebut tetap berfungsi.

403 

404* **`network.allowedDomains`**: [bentuk bracketed yang digunakan daftar domain](#ipv6-addresses-in-domain-lists), seperti `"[::1]"`. Proxy memeriksa daftar ini untuk mengakui koneksi.

405* **`injectHosts`**: alamat telanjang dalam bentuk kanonik terkompresinya, seperti `"::1"` atau `"2001:db8::1"`. Proxy mencocokkan setiap entri terhadap alamat tujuan koneksi yang telanjang, mengabaikan port, jadi ejakan bracketed, zone-ID, atau terkompresi secara berbeda tidak pernah cocok dan proxy tidak pernah menyuntik kredensial di sana.

406 

407`claude doctor` menandai entri `injectHosts` yang tidak pernah dapat cocok dengan peringatan `Sandbox credential injectHosts entries can never match their destination`. Pemeriksaan ini memerlukan Claude Code v2.1.229 atau lebih baru.

408 

409Tidak seperti `deny`, masking mengotorisasi proxy untuk mengirim kredensial asli Anda ke host yang terdaftar, jadi Claude Code menghormatinya hanya dari pengaturan yang Anda atau administrator Anda kontrol: pengaturan pengguna, pengaturan terkelola, dan bendera CLI `--settings`. Claude Code mengabaikan entri `mask` dalam `.claude/settings.json` atau `.claude/settings.local.json` repositori. Dalam file tersebut juga mengabaikan `network.tlsTerminate` dan [`credentials.allowPlaintextInject`](/docs/id/settings-reference#sandbox-credentials-allowplaintextinject), pengaturan yang memungkinkan proxy menyuntik kredensial ke permintaan yang tidak terenkripsi. Jika Anda [mengecualikan pengaturan pengguna](#configure-sandboxing), Claude Code menghapus entri `mask` variabel lingkungan dalam `~/.claude/settings.json` juga.

410 499 

411Ketika administrator Anda mengirimkan entri `mask`, `network.tlsTerminate`, atau `credentials.allowPlaintextInject` melalui pengaturan terkelola server, mereka dihitung sebagai [pengaturan yang memerlukan persetujuan](/docs/id/server-managed-settings#security-approval-dialogs).500<span id="ipv6-destinations-in-injecthosts" />Untuk tujuan IPv6, tuliskan alamat secara berbeda di kedua daftar:

412 501 

413Ketika variabel yang sama terdaftar dengan `deny` dalam scope apa pun, `deny` mengambil prioritas.502* **`network.allowedDomains`**: bentuk dalam kurung siku, seperti `"[::1]"`

503* **`injectHosts`**: alamat polos dalam bentuk terkompresi kanonisnya, seperti `"::1"`

414 504 

415Masking mengganti seluruh nilai variabel secara default, yang cocok untuk token telanjang. Bidang entri opsional, yang memerlukan Claude Code v2.1.224 atau lebih baru, menangani nilai dengan struktur:505Proxy mencocokkan setiap entri `injectHosts` dengan alamat tujuan polos koneksi, dengan mengabaikan port, sehingga penulisan dengan kurung siku, zone-ID, atau kompresi yang berbeda tidak pernah cocok. `claude doctor` menandai entri yang tidak akan pernah cocok dengan peringatan `Sandbox credential injectHosts entries can never match their destination`. Pemeriksaan ini memerlukan Claude Code v2.1.229 atau lebih baru.

416 

417* `extract`: ekspresi reguler yang Claude Code terapkan di seluruh nilai, mengganti hanya teks yang ditangkap oleh grup 1 dari setiap kecocokan, jadi alat yang mengurai nilai, seperti string koneksi `DATABASE_URL`, masih berfungsi di dalam sandbox. Pola harus berisi setidaknya satu grup penangkapan.

418* `onExtractNoMatch` mengontrol apa yang terjadi ketika pola tidak cocok dengan apa pun:

419 * `warn`, default, memperingatkan dan melewatkan variabel tanpa mask

420 * `deny` membatalkan pengaturan variabel di dalam sandbox

421 * `error` menghentikan setup sandbox sampai Anda memperbaiki konfigurasi

422* `decode: "jwt"`: untuk variabel yang menyimpan JSON Web Token (JWT). Claude Code memverifikasi nilai adalah JWT dan menggantinya dengan token palsu yang valid secara struktural, jadi kode di dalam sandbox yang mendekode token terus berfungsi. Tambahkan `maskClaims` untuk mencantumkan klaim payload tingkat atas untuk di-mask secara individual daripada mengganti seluruh token; klaim lainnya tetap dapat dibaca. Ketika nilai tidak memverifikasi sebagai JWT, atau tidak ada klaim yang terdaftar cocok, Claude Code melewatkan variabel tanpa mask dengan peringatan. `decode` tidak dapat digabungkan dengan `extract`.

423 

424Lihat [baris `credentials.envVars[]` dalam referensi pengaturan](/docs/id/settings-reference#sandbox-settings) untuk daftar bidang lengkap.

425 506 

426<h4 id="re-sign-aws-requests">507<h4 id="re-sign-aws-requests">

427 Re-sign AWS requests508 Menandatangani ulang permintaan AWS

428</h4>509</h4>

429 510 

430Permintaan AWS membawa tanda tangan SigV4 di atas konten permintaan, jadi mask `AWS_ACCESS_KEY_ID` dan `AWS_SECRET_ACCESS_KEY` bersama-sama. Proxy mendeteksi permintaan SigV4 oleh sentinel kunci akses dan menandatangani ulang setelah mengganti nilai asli. Masking rahasia saja meninggalkan permintaan ditandatangani dengan placeholder, yang proxy tidak dapat mendeteksi, jadi mereka gagal di AWS; Claude Code memperingatkan tentang kasus ini saat startup, tetapi tidak ketika hanya ID kunci akses yang di-mask. Permintaan yang terdeteksi proxy tidak dapat menandatangani ulang, seperti yang kehilangan header `x-amz-date` nya, gagal dengan kesalahan proxy daripada mencapai server dengan tanda tangan yang rusak.511Permintaan AWS membawa tanda tangan SigV4 atas isi permintaan, jadi lakukan mask pada `AWS_ACCESS_KEY_ID` dan `AWS_SECRET_ACCESS_KEY` secara bersamaan. Proxy mendeteksi permintaan SigV4 melalui [sentinel](#mask-credentials) access key dan menandatangani ulang permintaan dengan nilai sebenarnya, yang memerlukan Claude Code v2.1.221 atau lebih baru. Jika Anda hanya melakukan mask pada secret, permintaan ditandatangani dengan placeholder yang tidak dapat dideteksi oleh proxy, sehingga permintaan tersebut gagal di AWS.

431 

432Claude Code menghubungkan variabel `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `AWS_SESSION_TOKEN` konvensional ke satu kredensial secara otomatis ketika Anda mask nilai seluruhnya. Jika kredensial AWS Anda berada dalam variabel dengan nama lain, kelompokkan sendiri dengan [`credentials.awsPairs`](/docs/id/settings-reference#sandbox-credentials-awspairs), yang memerlukan Claude Code v2.1.224 atau lebih baru. Contoh ini menambahkan pasangan ke konfigurasi yang sudah mask `MY_KEY_ID`, `MY_SECRET_KEY`, dan `MY_SESSION_TOKEN` seluruh-nilai, seperti dalam [konfigurasi masking di atas](#mask-environment-variables):

433 

434```json theme={null}

435{

436 "sandbox": {

437 "credentials": {

438 "awsPairs": [

439 {

440 "accessKeyIdVar": "MY_KEY_ID",

441 "secretAccessKeyVar": "MY_SECRET_KEY",

442 "sessionTokenVar": "MY_SESSION_TOKEN"

443 }

444 ]

445 }

446 }

447}

448```

449 

450Setiap entri mengikuti aturan ini:

451 

452* `accessKeyIdVar` dan `secretAccessKeyVar` memberi nama entri `envVars` yang di-mask yang menyimpan ID kunci akses dan kunci rahasia. `sessionTokenVar` opsional memberi nama entri yang menyimpan token sesi untuk kredensial sementara; ketika diatur, proxy mengirim token asli sebagai `x-amz-security-token` pada permintaan yang ditandatangani ulang.

453* Setiap variabel yang dinamai harus entri `mask` yang mask seluruh nilainya, tanpa `extract` atau `decode`.

454* Proxy menandatangani ulang permintaan pada host yang terdaftar dalam entri ID kunci akses `injectHosts`.

455* Penamaan variabel konvensional apa pun dalam pasangan mengganti pasangan otomatis.

456 512 

457Seperti entri `mask`, `awsPairs` dihormati hanya dari pengaturan pengguna, pengaturan terkelola, dan bendera CLI `--settings`.513Claude Code secara otomatis menautkan variabel konvensional `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `AWS_SESSION_TOKEN` menjadi satu kredensial ketika Anda melakukan mask pada seluruh nilainya. Jika kredensial AWS Anda berada di variabel dengan nama lain, kelompokkan dengan [`credentials.awsPairs`](/docs/id/settings-reference#sandbox-credentials-awspairs), yang memerlukan Claude Code v2.1.224 atau lebih baru.

458 514 

459Tiga bentuk permintaan AWS membawa tanda tangan yang proxy tidak dapat menghitung ulang. Ketika permintaan seperti itu ditandatangani dengan placeholder pasangan yang di-mask, proxy gagalkan daripada teruskan tanda tangan yang rusak; permintaan yang ditandatangani dengan kredensial yang tidak di-mask tidak pernah terpengaruh. Pengaturan [`credentials.sigv4`](/docs/id/settings-reference#sandbox-credentials-sigv4), yang memerlukan Claude Code v2.1.224 atau lebih baru, melonggarkan ini per bentuk: mengatur kunci bentuk ke `passthrough` meneruskan permintaan dengan tanda tangan yang diturunkan placeholder-nya, jadi alat yang memanggil menerima penolakan AWS sendiri daripada kesalahan proxy. Seperti `awsPairs`, `sigv4` dihormati hanya dari pengaturan pengguna, pengaturan terkelola, dan bendera CLI `--settings`.515Unggahan streaming, URL presigned, dan permintaan SigV4A membawa tanda tangan yang tidak dapat dihitung ulang oleh proxy. Ketika salah satu permintaan ini ditandatangani dengan placeholder dari pasangan yang di-mask, proxy menggagalkannya alih-alih meneruskan tanda tangan yang rusak. Permintaan yang ditandatangani dengan kredensial yang tidak di-mask tidak terpengaruh. Gunakan [`credentials.sigv4`](/docs/id/settings-reference#sandbox-credentials-sigv4), yang memerlukan Claude Code v2.1.224 atau lebih baru, untuk meneruskan salah satu bentuk permintaan ini sebagai gantinya. AWS tetap menolak permintaan tersebut, sehingga tool pemanggil menerima respons penolakan dari AWS sendiri alih-alih error proxy.

460 

461| Bentuk permintaan | Kunci `sigv4` | Mengapa proxy tidak dapat menandatangani ulang |

462| :- | :- | :- |

463| unggahan streaming aws-chunked | `streaming` | Tanda tangan per-chunk berantai dari tanda tangan seed, jadi menandatangani ulang akan memerlukan menulis ulang badan |

464| URL yang sudah ditandatangani | `presigned` | Tanda tangan berada di URL itu sendiri, tanpa header `Authorization` |

465| Tanda tangan asimetris SigV4A | `sigv4a` | Tidak ada HMAC kunci bersama untuk menghitung ulang |

466 516 

467<h4 id="mask-credential-files">517<h4 id="mask-credential-files">

468 Mask credential files518 Melakukan mask file kredensial

469</h4>519</h4>

470 520 

471Entri file juga menerima `"mode": "mask"`, yang memerlukan Claude Code v2.1.221 atau lebih baru. Apa yang dilihat perintah sandboxed tergantung pada platform:521Untuk melakukan mask pada file kredensial, atur `"mode": "mask"` pada entri `credentials.files`-nya. Melakukan mask file memerlukan Claude Code v2.1.221 atau lebih baru. Apa yang dilihat perintah sandbox bergantung pada platform:

472 522 

473* **Linux dan WSL2**: perintah sandboxed membaca salinan sentinel file, pengganti yang rahasianya diganti dengan nilai placeholder, dan [sandbox proxy](#network-isolation) mengganti nilai asli pada egress.523* **Linux dan WSL2**: perintah sandbox membaca salinan [sentinel](#mask-credentials) dari file, dan proxy mensubstitusi nilai sebenarnya pada permintaan keluar.

474* **macOS**: perintah sandboxed tidak dapat membaca file yang terdaftar sama sekali. Claude Code tidak membangun salinan sentinel dan tidak mengganti apa pun pada egress, jadi alat yang mengotentikasi dengan file tidak berfungsi di dalam sandbox, efek yang sama seperti `deny`. Tidak seperti entri `deny`, blok baca berlaku bahkan ketika Anda [menonaktifkan isolasi filesystem](#disable-filesystem-isolation).524* **macOS**: perintah sandbox sama sekali tidak dapat membaca file tersebut. Claude Code tidak membuat salinan sentinel, sehingga tool yang melakukan autentikasi dengan file tersebut tidak berfungsi di dalam sandbox, efek yang sama dengan `deny`. Blokir baca tetap berlaku bahkan ketika Anda [menonaktifkan isolasi filesystem](#disable-filesystem-isolation).

475 525 

476Di setiap platform, Claude Code menerapkan persyaratan [`network.tlsTerminate`](/docs/id/settings-reference#sandbox-network-tlsterminate) dan `injectHosts` dengan cara yang sama seperti untuk [masked environment variables](#mask-environment-variables), dan mengabaikan pengaturan repositori dengan cara yang sama. Jika Anda [mengecualikan pengaturan pengguna](#configure-sandboxing), Claude Code menjaga entri `mask` file dalam `~/.claude/settings.json` sebagai pembatasan, tetapi entri tidak lagi mengotorisasi proxy untuk mengganti nilai asli.526Contoh ini melakukan mask pada token GitHub yang disimpan di `~/.config/gh/hosts.yml`. Pola `extract` menandai bagian mana dari file yang merupakan rahasia, sehingga di Linux dan WSL2 `gh` tetap dapat mem-parse bagian lain dari konfigurasinya:

477 

478Contoh di bawah mask token GitHub yang disimpan dalam `~/.config/gh/hosts.yml`; pola `extract`, dijelaskan di bawah, memberi tahu Claude Code bagian file mana yang rahasianya. Di Linux dan WSL2, perintah sandboxed yang membaca file mendapatkan sentinel sebagai pengganti token, dan proxy mengganti token asli pada permintaan ke `api.github.com`:

479 527 

480```json theme={null}528```json theme={null}

481{529{


499}547}

500```548```

501 549 

502Untuk mengkonfirmasi mask aktif, minta Claude menjalankan `cat ~/.config/gh/hosts.yml` dalam perintah sandboxed: di Linux dan WSL2 output menunjukkan nilai sentinel sebagai pengganti token, dan di macOS pembacaan gagal sebagai gantinya.550Untuk memastikan mask aktif, minta Claude menjalankan `cat ~/.config/gh/hosts.yml` dalam perintah sandbox. Di Linux dan WSL2 output menampilkan sentinel sebagai pengganti token, dan di macOS pembacaan gagal.

503 

504Di Linux dan WSL2, pola `extract` adalah apa yang menjaga sisa `hosts.yml` dapat dibaca. Claude Code menerapkan ekspresi reguler di seluruh file dan mengganti hanya teks yang ditangkap oleh grup 1 dari setiap kecocokan, jadi `gh` masih mengurai konfignya dan hanya token yang placeholder. Gunakan `extract` untuk file terstruktur apa pun yang alat urai, seperti `.netrc`, JSON, atau YAML; pola harus berisi setidaknya satu grup penangkapan. Tanpa `extract`, Claude Code mengganti seluruh konten file dengan satu nilai sentinel, yang cocok untuk file yang menyimpan satu rahasia telanjang dan tidak ada yang lain.

505 

506Untuk file yang menyimpan JSON Web Token (JWT), atur `decode: "jwt"` daripada, atau bersama dengan, `extract`. `decode` memerlukan Claude Code v2.1.224 atau lebih baru. Claude Code menemukan kandidat JWT dengan pola bawaan, atau dengan pola `extract` Anda ketika diatur, memverifikasi setiap kandidat adalah JWT, dan menggantinya dengan token palsu yang valid secara struktural, jadi kode yang mendekode token di dalam sandbox terus berfungsi. Tambahkan `maskClaims` untuk mask hanya klaim payload tingkat atas yang dinamai di dalam setiap token yang diverifikasi dan biarkan klaim lainnya dapat dibaca. Ketika tidak ada kandidat yang memverifikasi, atau tidak ada klaim yang dinamai cocok, bidang `onExtractNoMatch` di bawah mengatur hasil, seperti yang dilakukan untuk pola yang tidak cocok dengan apa pun.

507 

508Dua bidang opsional menyempurnakan bagaimana perilaku pencocokan. Keduanya berlaku hanya ketika `mode` adalah `mask` dan `extract` atau `decode` diatur. Di macOS, Claude Code menerapkan entri `mask` sebagai `deny` sebelum pola berjalan kapan pun isolasi filesystem aktif, jadi bidang ini, dan hasil no-match di bawah, berlaku di sana hanya ketika [isolasi filesystem mati](#disable-filesystem-isolation):

509 551 

510* `onExtractNoMatch` mengontrol apa yang terjadi ketika pencocokan menemukan tidak ada yang di-mask dalam file:552Tanpa `extract` atau `decode`, Claude Code mengganti seluruh file dengan satu sentinel, yang cocok untuk file yang berisi satu rahasia polos. Gunakan [field `extract`, `decode`, `maskClaims`, `onExtractNoMatch`, dan `maskDuplicates`](/docs/id/settings-reference#sandbox-credentials-files) untuk mengontrol masking parsial dan apa yang terjadi ketika pola tidak cocok dengan apa pun.

511 553 

512 * `warn`, default, memperingatkan dan melewati entri, jadi perintah sandboxed dapat membaca file asli tanpa mask. Default cocok untuk kredensial yang mungkin secara sah tidak ada; jika rahasia mungkin ada tetapi pola mungkin melewatkannya, gunakan `deny`554<Warning>

513 * `deny` membuat file tidak dapat dibaca sebagai gantinya555 Ketika pencocokan tidak menemukan apa pun untuk di-mask, nilai default `onExtractNoMatch`, yaitu `warn`, melewati entri tersebut, sehingga perintah sandbox dapat membaca file sebenarnya tanpa di-mask. Di macOS, Claude Code menerapkan entri `mask` sebagai `deny` sebelum pola dijalankan setiap kali isolasi filesystem aktif, sehingga hasil tanpa kecocokan hanya berlaku di sana ketika [isolasi filesystem dimatikan](#disable-filesystem-isolation). Default ini cocok untuk kredensial yang mungkin memang tidak ada. Jika rahasia mungkin ada tetapi pola mungkin melewatkannya, gunakan [`deny`](/docs/id/settings-reference#mask-fields-for-files).

514 * `error` menghentikan setup sandbox sampai Anda memperbaiki konfigurasi556</Warning>

515 

516 Claude Code memperlakukan `deny` sebagai `error` kapan pun blok baca tidak akan diberlakukan: ketika Anda [menonaktifkan isolasi filesystem](#disable-filesystem-isolation), dan ketika entri `filesystem.allowRead` dari sumber pengaturan apa pun membuka kembali jalur file.

517* `maskDuplicates` juga mengganti salinan verbatim dari setiap nilai kredensial yang di-mask, tangkapan `extract` atau token yang diverifikasi `decode`, ditemukan di luar rentang yang cocok, untuk rahasia yang diulang di mana pencocokan tidak menjangkau. Ini mencocokkan substring mentah, jadi nilai pendek atau umum akan diganti di mana pun muncul; cadangkan untuk rahasia panjang, high-entropy. Default: false.

518 557 

519`mask` berlaku untuk satu file, jadi daftarkan setiap file kredensial secara individual. Claude Code jatuh kembali ke `deny` untuk entri `mask` yang tidak dapat di-mask dengan aman: jalur direktori, pola glob, file lebih besar dari 8 MiB, atau file yang bukan teks UTF-8. Tulis direktori sebagai entri `deny` eksplisit sebagai gantinya; tabel di bawah [Which settings can disable it](#which-settings-can-disable-it) mencakup apakah setiap bentuk menyematkan `filesystem.disabled` dan bagaimana perilakunya dengan isolasi filesystem mati.558`mask` berlaku untuk satu file, jadi cantumkan setiap file kredensial secara individual. Claude Code melakukan fallback ke `deny` untuk entri `mask` yang tidak dapat di-mask dengan aman: path direktori, pola glob, file yang lebih besar dari 8 MiB, atau file yang bukan teks UTF-8.

520 559 

521<h2 id="how-sandboxing-works">560<h2 id="how-sandboxing-works">

522 Cara sandboxing bekerja561 Cara kerja sandboxing

523</h2>562</h2>

524 563 

525<h3 id="filesystem-isolation">564<h3 id="filesystem-isolation">

526 Isolasi filesystem565 Isolasi sistem file

527</h3>566</h3>

528 567 

529Alat Bash sandboxed membatasi akses sistem file ke direktori tertentu:568Tool Bash yang di-sandbox membatasi akses sistem file ke direktori tertentu:

530 569 

531* **Perilaku penulisan default**: akses baca dan tulis ke direktori kerja saat ini dan subdirektorinya, direktori apa pun yang telah Anda tambahkan dengan `--add-dir`, `/add-dir`, atau [`permissions.additionalDirectories`](/docs/id/settings-reference#permissions-additionaldirectories), ditambah direktori temp per-pengguna yang ditunjuk oleh `$TMPDIR`570* **Perilaku tulis default**: akses baca dan tulis ke direktori kerja saat ini dan subdirektorinya, direktori apa pun yang telah Anda tambahkan dengan `--add-dir`, `/add-dir`, atau [`permissions.additionalDirectories`](/docs/id/settings-reference#permissions-additionaldirectories), ditambah direktori temp per pengguna yang ditunjuk oleh `$TMPDIR`

532* **Perilaku pembacaan default**: akses baca ke seluruh komputer, kecuali direktori tertentu yang ditolak. Perhatikan bahwa default ini masih memungkinkan pembacaan file kredensial seperti `~/.aws/credentials` dan `~/.ssh/`. Gunakan [`sandbox.credentials`](#protect-credentials) untuk memblokir pembacaan file-file ini dan membatalkan penetapan variabel lingkungan rahasia, atau tambahkan jalur ke `denyRead`.571* **Perilaku baca default**: akses baca ke seluruh komputer, kecuali direktori tertentu yang ditolak. Default ini tetap mengizinkan pembacaan file kredensial, jadi [lindungi kredensial](#protect-credentials) yang tidak ingin Anda biarkan dibaca oleh perintah.

533* **Blok baca**: dengan [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) aktif, perintah sandboxed juga kehilangan akses baca ke direktori home Anda dan direktori lain yang menyimpan file pengguna, terlepas dari jalur yang [Perintah sandboxed di bawah blok](/docs/id/settings-reference#sandboxed-commands-under-the-block) daftarkan. Bagian itu juga mengatakan kapan bagian blok ini tidak berlaku.572* **Pemblokiran baca**: dengan [`permissions.blockReadsOutsideWorkingDirectories`](/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) diaktifkan, perintah yang di-sandbox juga kehilangan akses baca ke direktori home Anda dan direktori lain yang menyimpan file pengguna, kecuali jalur yang dicantumkan dalam [Perintah yang di-sandbox di bawah pemblokiran](/docs/id/settings-reference#sandboxed-commands-under-the-block). Bagian tersebut juga menjelaskan kapan bagian pemblokiran ini tidak berlaku.

534* **Akses terblokir**: tidak dapat memodifikasi file di luar direktori kerja, direktori yang ditambahkan, dan direktori temp per-pengguna tanpa izin eksplisit, termasuk file konfigurasi shell seperti `~/.bashrc` dan binari sistem di `/bin/`573* **Git worktree**: ketika direktori kerja adalah [git worktree yang ditautkan](/docs/id/worktrees), sandbox juga mengizinkan penulisan ke direktori `.git` bersama milik repositori utama sehingga perintah seperti `git commit` dapat memperbarui ref dan index. Penulisan ke `hooks/` dan `config` di dalam direktori tersebut tetap ditolak.

535* **Git worktrees**: ketika direktori kerja adalah [linked git worktree](/docs/id/worktrees), sandbox juga memungkinkan penulisan ke direktori `.git` bersama dari repositori utama sehingga perintah seperti `git commit` dapat memperbarui refs dan indeks. Penulisan ke `hooks/` dan `config` di dalam direktori tersebut tetap ditolak.

536* **Dapat dikonfigurasi**: tentukan jalur yang diizinkan dan ditolak khusus melalui pengaturan

537 574 

538Untuk melewati isolasi filesystem sepenuhnya sambil mempertahankan isolasi jaringan, atur [`sandbox.filesystem.disabled`](#disable-filesystem-isolation).575Untuk melewati isolasi sistem file sepenuhnya sambil tetap mempertahankan isolasi jaringan, atur [`sandbox.filesystem.disabled`](#disable-filesystem-isolation).

539 576 

540<h3 id="protected-paths">577<h3 id="protected-paths">

541 Jalur yang dilindungi578 Jalur yang dilindungi

542</h3>579</h3>

543 580 

544Di dalam direktori yang dapat ditulis oleh perintah sandboxed, sandbox masih menolak penulisan ke file yang dimuat konfigurasi dan kode Claude Code. Perintah yang dapat mengedit file-file tersebut dapat memberikan izin kepada dirinya sendiri, atau menambahkan hook atau server MCP yang dijalankan Claude Code di luar sandbox. Sistem izin memiliki [jalur yang dilindungi](/docs/id/permission-modes#protected-paths) sendiri, yang mengontrol apa yang disetujui Claude Code sebelum alat berjalan; daftar sandbox berlaku untuk perintah yang sudah berjalan. Ini mencakup empat kelompok jalur:581Di dalam direktori yang dapat ditulisi oleh perintah yang di-sandbox, sandbox tetap menolak penulisan ke file tempat Claude Code memuat konfigurasi dan kode. Perintah yang dapat mengedit file tersebut dapat memberikan izin kepada dirinya sendiri, atau menambahkan hook atau server MCP yang dijalankan Claude Code di luar sandbox. Sistem izin memiliki [jalur yang dilindungi](/docs/id/permission-modes#protected-paths) tersendiri, yang mengontrol apa yang disetujui Claude Code sebelum sebuah tool berjalan; daftar milik sandbox berlaku untuk perintah yang sudah berjalan. Daftar ini mencakup empat kelompok jalur:

545 582 

546* **Di direktori kerja Anda dan direktori di atasnya**: file pengaturan `.claude`, direktori `.claude/skills`, `.claude/agents`, `.claude/commands`, dan `.claude/hooks`, `.mcp.json`, dan file yang dijalankan Claude Code sendiri, seperti `.claude/workflows` dan `.claude/scheduled_tasks.json`583* **Di direktori kerja Anda dan direktori di atasnya**: file pengaturan `.claude`, direktori `.claude/skills`, `.claude/agents`, `.claude/commands`, dan `.claude/hooks`, `.mcp.json`, serta file yang dijalankan Claude Code dengan sendirinya, seperti `.claude/workflows` dan `.claude/scheduled_tasks.json`

547* **Di direktori kerja Anda saja**: file startup shell seperti `.bashrc` dan `.zshrc`, `.gitconfig`, direktori `.vscode` dan `.idea`, dan `hooks` dan `config` di dalam `.git`584* **Hanya di direktori kerja Anda**: file startup shell seperti `.bashrc` dan `.zshrc`, `.gitconfig`, direktori `.vscode` dan `.idea`, serta `hooks` dan `config` di dalam `.git`

548* **File yang akan mengubah direktori kerja Anda menjadi repositori git bare**: `HEAD`, `objects`, dan `refs` di tingkat atas, ditambah `config` dan `hooks` di sana ketika `HEAD` berada di sebelahnya. File bernama `config` ditolak bahkan tanpa `HEAD`. Di Linux dan WSL2, sandbox menghapus file `HEAD` tingkat atas atau direktori `objects` atau `refs` yang muncul saat perintah sandboxed berjalan585* **File yang akan mengubah direktori kerja Anda menjadi repositori git bare**: `HEAD`, `objects`, dan `refs` di tingkat teratas, ditambah entri `config` dan `hooks` yang sudah ada di sana ketika terdapat `HEAD` di sampingnya. File bernama `config` ditolak bahkan tanpa `HEAD`. Di Linux dan WSL2, sandbox menghapus file `HEAD` atau direktori `objects` atau `refs` di tingkat teratas yang muncul saat perintah yang di-sandbox sedang berjalan

549* **Di `~/.claude`, atau direktori yang ditunjuk `CLAUDE_CONFIG_DIR`**: sebagian besar isinya, ditambah `~/.claude.json` dan penyimpanan kredensial `.credentials.json`586* **Di `~/.claude`, atau direktori yang ditunjuk oleh `CLAUDE_CONFIG_DIR`**: sebagian besar isinya, ditambah `~/.claude.json` dan penyimpanan kredensial `.credentials.json`

550 587 

551Jika symlink muncul di jalur file pengaturan yang dilindungi selama sesi, sandbox juga menolak penulisan ke file yang ditunjuknya, mulai dari perintah berikutnya.588Jika sebuah symlink muncul di jalur file pengaturan yang dilindungi selama sesi, sandbox juga menolak penulisan ke file yang ditunjuknya, dimulai dari perintah berikutnya.

552 589 

553Tidak ada cara untuk mengecualikan salah satu jalur ini: entri `allowWrite` atau aturan izin `Edit` yang mencakup jalur tidak menghilangkan perlindungan. Satu-satunya cara untuk mematikan perlindungan adalah [`filesystem.disabled`](#disable-filesystem-isolation), yang mematikan isolasi filesystem untuk setiap jalur. Untuk melihat sebagian besar jalur ini diselesaikan untuk mesin Anda, jalankan `/sandbox` dan buka tab **Config**, yang mencantumnya di bawah **Denied within allowed**, dicampur dengan entri `denyWrite` Anda sendiri.590Tidak ada cara untuk mengecualikan salah satu jalur ini: entri `allowWrite` atau aturan izin `Edit` yang mencakup jalur tersebut tidak mencabut perlindungannya. Satu-satunya cara untuk mematikan perlindungan adalah [`filesystem.disabled`](#disable-filesystem-isolation), yang mematikan isolasi sistem file untuk setiap jalur. Untuk melihat sebagian besar jalur ini sebagaimana diterapkan di mesin Anda, jalankan `/sandbox` dan buka tab **Config**, yang mencantumkannya di bawah **Denied within allowed**, bercampur dengan entri `denyWrite` Anda sendiri.

554 591 

555Jika `git merge` atau `git checkout` gagal dengan `unable to unlink old` pada salah satu jalur ini, lihat [Troubleshooting](#troubleshooting).592Jika `git merge` atau `git checkout` gagal dengan `unable to unlink old` pada salah satu jalur ini, lihat [Perintah git gagal dengan `unable to unlink old`](#a-git-command-fails-with-unable-to-unlink-old).

556 593 

557<h3 id="network-isolation">594<h3 id="network-isolation">

558 Isolasi jaringan595 Isolasi jaringan

559</h3>596</h3>

560 597 

561Akses jaringan dikendalikan melalui server proxy yang berjalan di luar sandbox:598Perintah yang di-sandbox tidak memiliki rute langsung ke jaringan:

562 599 

563* **Pembatasan domain**: Claude Code tidak memungkinkan domain apa pun secara default. Pertama kali perintah memerlukan domain baru, Claude Code meminta persetujuan; dalam [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), Claude malah menamai host yang dibutuhkan perintah pada perintah itu sendiri, per [Domain yang diizinkan per perintah](#per-command-allowed-domains-in-auto-mode).600* **Linux dan WSL2**: perintah berjalan di network namespace terpisah yang tidak memiliki koneksi ke jaringan Anda

564* **Pilihan persetujuan**: jika Anda memilih Ya saat diminta, Claude Code memungkinkan host untuk sisa sesi saat ini dan tidak meminta lagi untuk koneksi nanti ke host yang sama. Jika Anda memilih "Ya, dan jangan tanya lagi", Claude Code menyimpan aturan izin `WebFetch(domain:...)` ke [pengaturan lokal](/docs/id/permissions#permission-system) Anda, sehingga host tetap diizinkan di sesi mendatang.601* **macOS**: framework sandbox Seatbelt secara default memblokir koneksi selain koneksi ke proxy sandbox

565* **Domain yang diizinkan sebelumnya**: izinkan domain sebelumnya dengan [`allowedDomains`](/docs/id/settings-reference#sandbox-network-alloweddomains) untuk menghindari prompt sepenuhnya. Claude Code juga memungkinkan domain sebelumnya dari aturan izin `WebFetch(domain:...)`, seperti dijelaskan dalam [Aturan izin](#permission-rules).

566* **Allowlist ketat**: jika Anda mengatur [`strictAllowlist`](/docs/id/settings-reference#sandbox-network-strictallowlist) ke `true` dalam pengaturan pengguna, terkelola, atau CLI `--settings`, Claude Code menolak akses perintah sandboxed ke host apa pun di luar allowlist alih-alih meminta. Allowlist adalah yang sama dengan yang diminta sandbox sebaliknya: `allowedDomains` ditambah domain dari aturan izin `WebFetch(domain:...)`, atau hanya entri pengaturan terkelola ketika `allowManagedDomainsOnly` diatur. Claude Code memberlakukan ini hanya untuk perintah sandboxed; alat dalam proses seperti `WebFetch` masih mengikuti [aturan izin](#permission-rules) mereka. Mengaturnya di `.claude/settings.json` atau `.claude/settings.local.json` repositori tidak berpengaruh. Memerlukan Claude Code v2.1.219 atau lebih baru.

567* **Lockdown terkelola**: jika [`allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly) diatur dalam pengaturan terkelola, domain yang tidak diizinkan diblokir secara otomatis alih-alih meminta, dan hanya `allowedDomains` dan aturan izin `WebFetch(domain:...)` dari pengaturan terkelola yang dihormati.

568* **Proxy korporat**: ketika jaringan Anda memerlukan lalu lintas keluar untuk melewati proxy korporat, atur `HTTPS_PROXY`, `HTTP_PROXY`, dan `NO_PROXY` seperti yang dijelaskan [konfigurasi proxy](/docs/id/network-config#proxy-configuration), dalam blok `env` pengaturan Anda sehingga [agen latar belakang](/docs/id/network-config#set-network-variables-in-settings-not-the-shell) mendapatkannya juga, atau di lingkungan tempat Anda meluncurkan Claude Code. Claude Code memberlakukan allowlist domain dan kemudian menerowongi koneksi yang diizinkan melalui proxy hulu tersebut.

569* **Dukungan proxy khusus**: pengguna tingkat lanjut dapat menerapkan aturan khusus pada lalu lintas keluar

570* **Cakupan komprehensif**: pembatasan berlaku untuk semua skrip, program, dan subprocess yang dihasilkan oleh perintah

571 602 

572Dalam aturan `WebFetch(domain:...)`, sandbox menghormati dua bentuk wildcard: `*.` terdepan, seperti `*.example.com`, dan `*` bare. Bentuk `*` bare memerlukan Claude Code v2.1.186 atau lebih baru. Wildcard di posisi lain, seperti `WebFetch(domain:example.*)`, masih cocok dengan fetch tetapi tidak berpengaruh pada perintah sandboxed.603Claude Code menjalankan proxy sandbox di mesin Anda, di luar sandbox, dan mengarahkan perintah ke proxy tersebut dengan `HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY`, dan environment variable terkait. Proxy memeriksa hostname setiap koneksi terhadap domain yang diizinkan dan ditolak milik Anda.

604 

605Apa yang dapat dijangkau oleh sebuah tool bergantung pada apakah tool tersebut menggunakan proxy:

606 

607* **Tool yang membaca variabel proxy**: `curl`, `npm`, `git` melalui HTTPS, dan tool serupa dapat terhubung setelah host-nya diizinkan. Entri `allowedDomains` tanpa port mengizinkan setiap port pada host tersebut

608* **Tool yang mengabaikan variabel proxy**: `ssh` biasa, sebagian besar driver database, dan tool serupa tidak dapat terhubung, bahkan ke host yang diizinkan. Lihat [Klien database atau tool non-HTTP lainnya gagal menjangkau host yang diizinkan](#a-database-client-or-other-non-http-tool-fails-to-reach-an-allowed-host)

609* **Apa pun yang bukan TCP**: UDP, HTTP/3 melalui QUIC, dan tool ICMP seperti `ping` tidak dapat keluar dari sandbox

610 

611Pengaturan dan perilaku berikut mengontrol host mana yang diizinkan oleh proxy:

612 

613* **Pembatasan domain**: domain yang diizinkan milik Anda awalnya kosong. [Host di luar domain yang diizinkan](#hosts-outside-your-allowed-domains) menjelaskan apa yang terjadi saat pertama kali sebuah perintah memerlukan domain baru.

614* **Pilihan persetujuan**: jika Anda memilih Yes saat diminta, Claude Code mengizinkan host tersebut selama sisa sesi saat ini. Jika Anda memilih "Yes, and don't ask again", Claude Code menyimpan aturan izin `WebFetch(domain:...)` ke [pengaturan lokal](/docs/id/permissions#permission-system) Anda, sehingga host tetap diizinkan di sesi mendatang. Selama sandbox bersifat [wajib oleh admin](#repository-settings-under-an-admin-required-sandbox), Claude Code menyimpan aturan tersebut ke pengaturan pengguna Anda, yang berlaku di setiap proyek.

615* **Domain yang diizinkan sebelumnya**: izinkan domain terlebih dahulu dengan [`allowedDomains`](/docs/id/settings-reference#sandbox-network-alloweddomains) untuk menghindari permintaan persetujuan sepenuhnya. Claude Code juga mengizinkan terlebih dahulu domain dari aturan izin `WebFetch(domain:...)`, seperti yang dijelaskan dalam [Aturan izin](#permission-rules).

616* **Allowlist ketat**: jika Anda mengatur [`strictAllowlist`](/docs/id/settings-reference#sandbox-network-strictallowlist) ke `true` di pengaturan pengguna, pengaturan terkelola, atau pengaturan CLI `--settings`, Claude Code menolak akses perintah yang di-sandbox ke host apa pun di luar allowlist alih-alih meminta persetujuan. Allowlist terdiri dari `allowedDomains` ditambah domain dari aturan izin `WebFetch(domain:...)`, atau hanya entri pengaturan terkelola ketika `allowManagedDomainsOnly` diatur. [Penguncian yang berlaku tanpa sandbox wajib oleh admin](#locks-that-apply-without-an-admin-required-sandbox) menjelaskan entri milik repositori. Claude Code hanya menerapkan ini untuk perintah yang di-sandbox; tool dalam proses seperti `WebFetch` tetap mengikuti [aturan izin](#permission-rules) masing-masing. Mengaturnya di `.claude/settings.json` atau `.claude/settings.local.json` milik repositori tidak berpengaruh. Memerlukan Claude Code v2.1.219 atau yang lebih baru.

617* **Penguncian terkelola**: jika [`allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly) diatur di pengaturan terkelola, domain yang tidak diizinkan diblokir secara otomatis alih-alih meminta persetujuan, dan hanya aturan izin `allowedDomains` dan `WebFetch(domain:...)` dari pengaturan terkelola yang dipatuhi.

618* **Proxy perusahaan**: ketika jaringan Anda mengharuskan lalu lintas keluar melewati proxy perusahaan, atur `HTTPS_PROXY`, `HTTP_PROXY`, dan `NO_PROXY` seperti yang dijelaskan dalam [konfigurasi proxy](/docs/id/network-config#proxy-configuration), di blok `env` pengaturan Anda agar [agent latar belakang](/docs/id/network-config#set-network-variables-in-settings-not-the-shell) juga mendapatkannya, atau di environment tempat Anda meluncurkan Claude Code. Claude Code menerapkan allowlist domain lalu meneruskan koneksi yang diizinkan melalui proxy upstream tersebut. URL proxy `http://` dan `https://` dapat digunakan, dengan autentikasi basic di URL jika Anda memerlukannya.

619 

620Dalam aturan `WebFetch(domain:...)`, sandbox mematuhi dua bentuk wildcard: `*.` di awal, seperti `*.example.com`, dan `*` tunggal. Bentuk `*` tunggal memerlukan Claude Code v2.1.186 atau yang lebih baru. Wildcard di posisi lain, seperti `WebFetch(domain:example.*)`, tetap cocok dengan pengambilan tetapi tidak berpengaruh pada perintah yang di-sandbox.

573 621 

574<Note>622<Note>

575 Proxy bawaan memberlakukan allowlist berdasarkan hostname yang diminta dan, secara default, tidak menghentikan atau memeriksa lalu lintas TLS. Pengaturan eksperimental [`network.tlsTerminate`](/docs/id/settings-reference#sandbox-network-tlsterminate), tersedia di Claude Code v2.1.199 dan lebih baru, membuat proxy bawaan menghentikan TLS itu sendiri, yang [entri kredensial `mask`](#mask-credentials) memerlukan. Lihat [Batasan keamanan](#security-limitations) untuk implikasi default, dan [Konfigurasi proxy khusus](#custom-proxy-configuration) jika model ancaman Anda memerlukan inspeksi TLS.623 Proxy bawaan menerapkan allowlist berdasarkan hostname yang diminta dan, secara default, tidak mengakhiri atau memeriksa lalu lintas TLS. Pengaturan eksperimental [`network.tlsTerminate`](/docs/id/settings-reference#sandbox-network-tlsterminate), yang tersedia di Claude Code v2.1.199 dan yang lebih baru, membuat proxy bawaan mengakhiri TLS sendiri, yang diperlukan oleh [entri kredensial `mask`](#mask-credentials). Lihat [Keterbatasan keamanan](#security-limitations) untuk implikasi dari perilaku default, dan [Konfigurasi proxy kustom](#custom-proxy-configuration) jika model ancaman Anda memerlukan inspeksi TLS.

576</Note>624</Note>

577 625 

626<h4 id="hosts-outside-your-allowed-domains">

627 Host di luar domain yang diizinkan

628</h4>

629 

630Ketika perintah yang di-sandbox terhubung ke host yang tidak ada dalam domain yang diizinkan milik Anda, perintah tetap berada di sandbox dan menunggu keputusan. Dalam sesi terminal interaktif, keputusan bergantung pada mode izin Anda:

631 

632| Mode izin | Apa yang terjadi pada koneksi |

633| :- | :- |

634| Mode `bypassPermissions`, dan plan mode dengan [bypass permissions tersedia](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Diizinkan tanpa permintaan persetujuan |

635| Mode manual, mode `acceptEdits`, dan plan mode dalam kondisi lainnya | Anda mendapatkan permintaan persetujuan |

636| Auto mode | Ditolak kecuali perintah tersebut [mencantumkan host](#per-command-allowed-domains-in-auto-mode) dan pengklasifikasi menyetujui daftarnya |

637| Mode `dontAsk` | Ditolak |

638 

639Dengan [`strictAllowlist`](/docs/id/settings-reference#sandbox-network-strictallowlist) atau [`allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly) diaktifkan, proxy sandbox bawaan menolak koneksi di setiap mode izin. Dalam mode `bypassPermissions`, host di luar domain yang diizinkan milik Anda diizinkan kecuali salah satu pengaturan tersebut diaktifkan. [Jalan keluar retry tanpa sandbox](#the-unsandboxed-retry-escape-hatch) menjelaskan kapan sebuah perintah dapat keluar dari sandbox dalam mode tersebut. Koneksi ke host di [`deniedDomains`](/docs/id/settings-reference#sandbox-network-denieddomains) juga ditolak di setiap mode izin.

640 

641<h4 id="hostnames-that-resolve-to-local-addresses">

642 Hostname yang di-resolve ke alamat lokal

643</h4>

644 

645Setelah sebuah hostname lolos allowlist, proxy sandbox me-resolve-nya dan menolak koneksi ketika nama tersebut hanya di-resolve ke alamat lokal. Alamat lokal mencakup alamat loopback seperti `127.0.0.1`, alamat link-local seperti endpoint metadata cloud `169.254.169.254`, dan alamat yang ditetapkan ke mesin Anda sendiri. Nama `localhost` dan `*.localhost` diizinkan untuk di-resolve ke loopback.

646 

647Hostname intranet yang diizinkan yang di-resolve ke rentang privat seperti `10.0.0.0/8` dapat terhubung. Untuk membiarkan sebuah nama di-resolve ke alamat yang ditolak, tambahkan alamat IP tersebut ke `allowedDomains`, seperti `"127.0.0.1:8080"`.

648 

649Pemeriksaan ini berlaku untuk hostname. Domain yang diizinkan dan mode izin Anda menentukan koneksi ke alamat IP. Proxy juga melewati pemeriksaan untuk koneksi yang dikirimkannya melalui proxy perusahaan upstream, karena proxy tersebut yang me-resolve nama.

650 

578<h4 id="per-command-allowed-domains-in-auto-mode">651<h4 id="per-command-allowed-domains-in-auto-mode">

579 Domain yang diizinkan per perintah dalam mode otomatis652 Domain yang diizinkan per perintah dalam auto mode

580</h4>653</h4>

581 654 

582Dalam [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) dengan sandboxing aktif, Claude menamai host yang dibutuhkan perintah pada perintah itu sendiri alih-alih memicu persetujuan jaringan untuk setiap koneksi. Setiap perintah Bash, PowerShell, atau [Monitor](/docs/id/tools-reference#monitor-tool) yang berjalan dalam sandbox dapat membawa daftar host di luar allowlist sandbox: domain seperti `registry.npmjs.org`, wildcard seperti `*.pythonhosted.org`, atau alamat IP, masing-masing dengan `:port` opsional. Pengklasifikasi meninjau host bersama dengan perintah. Memerlukan Claude Code v2.1.271 atau lebih baru.655Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) dengan sandboxing aktif, Claude menyebutkan host yang diperlukan sebuah perintah pada perintah itu sendiri alih-alih memicu persetujuan jaringan untuk setiap koneksi. Setiap perintah Bash, PowerShell, atau [Monitor](/docs/id/tools-reference#monitor-tool) yang berjalan di sandbox dapat membawa daftar host di luar allowlist sandbox: domain seperti `registry.npmjs.org`, wildcard seperti `*.pythonhosted.org`, atau alamat IP, masing-masing dengan `:port` opsional. Pengklasifikasi meninjau host tersebut bersama dengan perintahnya. Memerlukan Claude Code v2.1.271 atau yang lebih baru.

583 656 

584Daftar yang disetujui membuka host tersebut hanya untuk perintah itu saja, selama berjalan. Tidak ada yang ditambahkan ke host yang diizinkan sesi Anda atau pengaturan Anda; perintah berikutnya menamai host-nya sendiri.657Daftar yang disetujui membuka host tersebut hanya untuk satu perintah itu, selama perintah tersebut berjalan. Tidak ada yang ditambahkan ke host yang diizinkan dalam sesi Anda atau ke pengaturan Anda; perintah berikutnya menyebutkan host-nya sendiri.

585 658 

586Perintah yang membawa host pergi ke pengklasifikasi alih-alih disetujui oleh aturan izin atau [mode auto-allow](#sandbox-modes) sandbox. Jika [aturan ask](/docs/id/permissions#manage-permissions) memaksa prompt untuk perintah, dialog izin di terminal Anda mencantumkan host di sebelahnya, dan menyetujui di sana mencakup keduanya.659Perintah yang membawa host dikirim ke pengklasifikasi alih-alih disetujui oleh aturan izin atau [mode auto-allow](#sandbox-modes) milik sandbox. Jika sebuah [aturan ask](/docs/id/permissions#manage-permissions) memaksa permintaan persetujuan untuk perintah tersebut, dialog izin di terminal Anda mencantumkan host di sampingnya, dan menyetujui di sana mencakup keduanya.

587 660 

588Daftar per perintah memperluas hanya apa yang ditolak sandbox secara default. Entri [`deniedDomains`](/docs/id/settings-reference#sandbox-network-denieddomains) masih memblokir. Ketika [`strictAllowlist`](/docs/id/settings-reference#sandbox-network-strictallowlist) atau [`allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly) mengunci allowlist, Claude Code menolak daftar per perintah.661Daftar per perintah hanya memperluas apa yang ditolak sandbox secara default. Entri [`deniedDomains`](/docs/id/settings-reference#sandbox-network-denieddomains) tetap memblokir. Ketika [`strictAllowlist`](/docs/id/settings-reference#sandbox-network-strictallowlist) atau [`allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly) mengunci allowlist, Claude Code menolak daftar per perintah.

589 662 

590Sementara daftar per perintah berlaku, Claude Code menolak koneksi ke host yang tidak ada perintah yang disetujui daftarkan, tanpa prompt atau pemeriksaan pengklasifikasi. Penolakan menamai host dalam hasil perintah, dan Claude menjalankan kembali perintah dengan host ditambahkan.663Selama daftar per perintah berlaku, Claude Code menolak koneksi ke host yang tidak dicantumkan oleh perintah mana pun yang disetujui, tanpa permintaan persetujuan atau pemeriksaan pengklasifikasi. Penolakan tersebut menyebutkan host dalam hasil perintah, dan Claude menjalankan ulang perintah dengan host tersebut ditambahkan.

591 664 

592<h4 id="ipv6-addresses-in-domain-lists">665<h4 id="ipv6-addresses-in-domain-lists">

593 Alamat IPv6 dalam daftar domain666 Alamat IPv6 dalam daftar domain

594</h4>667</h4>

595 668 

596Daftar domain sandbox adalah `allowedDomains`, `deniedDomains`, dan aturan `WebFetch(domain:...)` yang memberinya makan. Untuk mencocokkan alamat IPv6 di salah satunya, tulis literal dalam tanda kurung: `"[::1]"` cocok dengan alamat itu di setiap port, dan `"[::1]:443"` cocok dengannya hanya di port 443. Tulis port sebagai angka dari 1 hingga 65535 tanpa nol terdepan. Bentuk dalam tanda kurung memerlukan Claude Code v2.1.229 atau lebih baru. Sebelum v2.1.229, ketika teks setelah titik dua terakhir entri adalah nomor port, Claude Code membacanya sebagai satu, jadi `::1:443` menamai alamat `::1` di port 443.669Untuk mencocokkan alamat IPv6 di `allowedDomains`, `deniedDomains`, atau aturan `WebFetch(domain:...)`, tulis alamat tersebut dalam kurung siku: `"[::1]"` cocok dengan alamat tersebut di setiap port, dan `"[::1]:443"` hanya cocok dengannya di port 443. Bentuk berkurung siku memerlukan Claude Code v2.1.229 atau yang lebih baru.

597 

598Ketika Anda memilih "Ya, dan jangan tanya lagi" di prompt persetujuan jaringan untuk alamat IPv6, Claude Code menyimpan aturan `WebFetch(domain:...)` dengan alamat dalam tanda kurung, sehingga aturan terus mencocokkan alamat di sesi mendatang.

599 670 

600Entri tanpa tanda kurung dengan dua atau lebih titik dua ambigu: `::1:443` adalah alamat IPv6 lengkap dan alamat diikuti oleh port. Claude Code memberlakukan ejaan ambigu secara konservatif alih-alih menebak pembacaan mana yang Anda maksudkan:671Entri tanpa kurung siku seperti `::1:443` bersifat ambigu antara sebuah alamat dan alamat dengan port:

601 672 

602* **Daftar penolakan**: Claude Code menolak setiap pembacaan yang diuraikan entri, jadi pembacaan mana pun yang Anda maksudkan diblokir. Untuk entri tanpa pembacaan yang dapat diuraikan, Claude Code tidak memblokir apa pun.673* **Daftar penolakan**: Claude Code menolak setiap pembacaan yang dapat di-parse dari entri tersebut, sehingga pembacaan mana pun yang Anda maksud akan diblokir. Untuk entri tanpa pembacaan yang dapat di-parse, Claude Code tidak memblokir apa pun

603* **Daftar izin**: Claude Code tidak pernah memungkinkan lebih dari yang Anda tulis. Ini menulis ulang entri ambigu ke pembacaan host-dan-port ketika pembacaan itu diuraikan dengan bersih, dan mungkin menjatuhkan entri sepenuhnya daripada memperluas allowlist.674* **Daftar izin**: Claude Code tidak pernah mengizinkan lebih dari yang Anda tulis. Claude Code menulis ulang entri ambigu ke pembacaan host-dan-port ketika pembacaan tersebut dapat di-parse dengan bersih, dan dapat membuang entri tersebut sepenuhnya alih-alih memperluas allowlist

604 675 

605Jalankan `claude doctor` di terminal Anda untuk menemukan entri yang terpengaruh: peringatan `Sandbox network domain entries have unreliable spellings` menamai hingga tiga dari mereka dan menghitung sisanya. Tulis ulang masing-masing dalam bentuk dalam tanda kurung untuk menghapus peringatan. Peringatan juga menamai entri yang ejaannya tidak dapat diandalkan karena alasan lain, seperti `@`, karakter jalur atau kueri, atau wildcard di dalam tanda kurung.676Untuk menemukan entri yang ambigu, jalankan `claude doctor` di terminal Anda dan cari peringatan `Sandbox network domain entries have unreliable spellings`. Tulis ulang setiap entri ambigu dalam bentuk berkurung siku.

606 677 

607<h3 id="os-level-enforcement">678<h3 id="os-level-enforcement">

608 Penegakan tingkat OS679 Penerapan tingkat OS

609</h3>680</h3>

610 681 

611Alat Bash sandboxed menggunakan primitif keamanan sistem operasi:682Tool Bash yang di-sandbox menggunakan primitif keamanan sistem operasi:

612 683 

613* **macOS**: menggunakan Seatbelt untuk penegakan sandbox684* **macOS**: menggunakan Seatbelt untuk penerapan sandbox

614* **Linux**: menggunakan [bubblewrap](https://github.com/containers/bubblewrap) untuk isolasi685* **Linux**: menggunakan [bubblewrap](https://github.com/containers/bubblewrap) untuk isolasi

615* **WSL2**: menggunakan bubblewrap, sama seperti Linux686* **WSL2**: menggunakan bubblewrap, sama seperti Linux

616 687 

617WSL1 tidak didukung karena bubblewrap memerlukan fitur kernel yang hanya tersedia di WSL2.688Anda juga dapat menjalankan paket [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropics/sandbox-runtime) secara mandiri untuk membungkus proses Claude Code. Lihat [Sandbox runtime](/docs/id/sandbox-environments#sandbox-runtime).

618 

619Primitif yang sama tersedia sebagai paket [`@anthropic-ai/sandbox-runtime`](https://github.com/anthropic-experimental/sandbox-runtime) mandiri, yang halaman [Sandbox environments](/docs/id/sandbox-environments#sandbox-runtime) mencakup sebagai pendekatan terpisah untuk membungkus seluruh proses Claude Code.

620 689 

621<h2 id="how-sandboxing-relates-to-permissions-and-permission-modes">690<h2 id="how-sandboxing-relates-to-permissions-and-permission-modes">

622 Bagaimana sandboxing berhubungan dengan izin dan mode izin691 Bagaimana sandboxing berhubungan dengan izin dan mode izin


679 748 

680Untuk memerlukan sandbox untuk setiap pengembang, berikan kunci `sandbox` melalui [managed settings](/docs/id/managed-settings#delivery-mechanisms), baik sebagai file yang dikelola oleh MDM Anda atau melalui [server-managed settings](/docs/id/server-managed-settings) di claude.ai.749Untuk memerlukan sandbox untuk setiap pengembang, berikan kunci `sandbox` melalui [managed settings](/docs/id/managed-settings#delivery-mechanisms), baik sebagai file yang dikelola oleh MDM Anda atau melalui [server-managed settings](/docs/id/server-managed-settings) di claude.ai.

681 750 

682Konfigurasi pengaturan terkelola berikut mengaktifkan sandbox, menolak untuk memulai Claude Code jika sandbox tidak dapat diinisialisasi, dan mencegah model dari mencoba kembali perintah di luar sandbox:751Konfigurasi pengaturan terkelola berikut mengaktifkan sandbox, menolak untuk memulai Claude Code ketika platform tidak didukung atau ada dependensi yang hilang, dan mencegah model mencoba ulang perintah di luar sandbox:

683 752 

684```json theme={null}753```json theme={null}

685{754{


693 762 

694Dua kunci di luar `enabled` mengontrol apa yang terjadi ketika sandbox tidak dapat menjalankan perintah:763Dua kunci di luar `enabled` mengontrol apa yang terjadi ketika sandbox tidak dapat menjalankan perintah:

695 764 

696* **`failIfUnavailable`**: dependensi yang hilang seperti bubblewrap di Linux memblokir Claude Code dari memulai daripada menampilkan peringatan dan kembali ke eksekusi unsandboxed765* **`failIfUnavailable`**: dependensi yang hilang seperti bubblewrap di Linux memblokir Claude Code dari memulai alih-alih kembali ke eksekusi unsandboxed

697* **`allowUnsandboxedCommands: false`**: Claude Code mengabaikan escape hatch `dangerouslyDisableSandbox`, sehingga ketika perintah gagal di bawah sandbox, Claude tidak dapat mencoba ulangnya tanpa sandbox766* **`allowUnsandboxedCommands: false`**: Claude Code mengabaikan escape hatch `dangerouslyDisableSandbox`, sehingga ketika perintah gagal di bawah sandbox, Claude tidak dapat mencoba ulangnya tanpa sandbox

698 767 

699Dua penambahan layak dipertimbangkan bersama mereka. Tambahkan `excludedCommands` untuk alat yang disetujui organisasi apa pun yang harus berjalan tanpa isolasi. Tambahkan entri [`sandbox.credentials`](#protect-credentials) untuk direktori kredensial seperti `~/.aws` dan `~/.ssh` dan untuk variabel lingkungan rahasia, karena kebijakan pembacaan default masih memungkinkan mereka.768Pertimbangkan penambahan berikut bersama keduanya:

769 

770* Tambahkan `excludedCommands` untuk alat apa pun yang disetujui organisasi yang harus berjalan tanpa isolasi, karena konfigurasi ini [mencegah pengaturan repositori mengeluarkan perintah dari sandbox](#repository-settings-under-an-admin-required-sandbox)

771* Tambahkan entri [`sandbox.credentials`](#protect-credentials) untuk direktori kredensial seperti `~/.aws` dan `~/.ssh` dan untuk environment variable rahasia, karena kebijakan pembacaan default masih mengizinkannya

700 772 

701Konfigurasi ini melakukan sandboxing pada perintah yang dijalankan Claude. Pengembang masih dapat mengetik perintah di [prompt shell-mode `!`](/docs/id/interactive-mode#shell-mode-with-prefix) dan menjalankannya di luar sandbox, dengan akses yang sama yang mereka miliki di terminal apa pun di luar Claude Code. Lihat [The unsandboxed retry escape hatch](#the-unsandboxed-retry-escape-hatch) untuk sesi di mana perintah yang diketik dijalankan dengan sandbox.773Konfigurasi ini melakukan sandboxing pada perintah yang dijalankan Claude. Pengembang masih dapat mengetik perintah di [prompt shell-mode `!`](/docs/id/interactive-mode#shell-mode-with-prefix) dan menjalankannya di luar sandbox, dengan akses yang sama yang mereka miliki di terminal apa pun di luar Claude Code. Lihat [mode sandbox ketat](#turn-off-the-retry-with-strict-sandbox-mode) untuk sesi di mana perintah yang diketik dijalankan dengan sandbox.

702 774 

703Sandbox tidak berjalan di Windows asli, jadi jika armada Anda mencakup host Windows, batasi konfigurasi ini ke macOS dan Linux atau minta pengguna tersebut menjalankan Claude Code di dalam WSL2 atau container.775Sandbox tidak berjalan di Windows asli, sehingga dengan `failIfUnavailable` diatur, Claude Code keluar saat startup di mesin tersebut. Jika armada Anda mencakup host Windows, Anda dapat:

776 

777* **Memberikan konfigurasi berdasarkan sistem operasi**: terapkan melalui MDM Anda atau sebagai [file pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms) hanya di mesin macOS dan Linux. [Server-managed settings](/docs/id/server-managed-settings#current-limitations) berlaku untuk semua pengguna di organisasi

778* **Memindahkan pengguna Windows ke lingkungan yang didukung**: minta mereka menjalankan Claude Code di dalam WSL2 atau container

704 779 

705<h3 id="keep-developers-from-widening-the-policy">780<h3 id="keep-developers-from-widening-the-policy">

706 Cegah pengembang memperluas kebijakan781 Cegah pengembang memperluas kebijakan

707</h3>782</h3>

708 783 

709Untuk kunci boolean seperti `enabled` dan `failIfUnavailable`, Claude Code menggunakan nilai terkelola dan mengabaikan apa pun yang ditetapkan pengembang secara lokal. Untuk kunci array seperti `excludedCommands` dan `allowRead`, Claude Code menggabungkan entri dari setiap scope yang dimuat sesi, sehingga pengembang dapat menambahkan entri yang memperluas kebijakan.784Ketika pengaturan terkelola menetapkan kunci Boolean seperti `enabled` atau `failIfUnavailable`, Claude Code menggunakan nilai terkelola dan mengabaikan apa pun yang ditetapkan pengembang secara lokal. Untuk kunci array seperti `allowRead`, Claude Code menggabungkan entri dari cakupan yang dimuat sesi, sehingga pengembang dapat menambahkan entri yang memperluas kebijakan kecuali ada kunci pengunci yang mencakup kunci tersebut.

785 

786Kecuali pengaturan terkelola menetapkannya, pengaturan pengguna milik pengembang atau `--settings` dapat mengaktifkan kunci berikut. `.claude/settings.json` milik repositori juga dapat melakukannya, kecuali sandbox bersifat [diwajibkan admin](#repository-settings-under-an-admin-required-sandbox). Masing-masing melemahkan sandbox, jadi atur ke `false` dalam pengaturan terkelola jika Anda tidak ingin kunci tersebut digunakan:

787 

788* [`enableWeakerNestedSandbox`](/docs/id/settings-reference#sandbox-enableweakernestedsandbox)

789* [`enableWeakerNetworkIsolation`](/docs/id/settings-reference#sandbox-enableweakernetworkisolation)

790* [`network.allowAllUnixSockets`](/docs/id/settings-reference#sandbox-network-allowallunixsockets)

791* [`network.allowLocalBinding`](/docs/id/settings-reference#sandbox-network-allowlocalbinding)

792* [`allowAppleEvents`](/docs/id/settings-reference#sandbox-allowappleevents), yang tidak dapat diaktifkan oleh repositori

793 

794Atur `allowManagedReadPathsOnly` ke `true` dalam pengaturan terkelola sehingga hanya entri `allowRead` dari pengaturan terkelola yang dihormati. Ini mencegah pengembang memperluas akses baca di luar jalur yang disetujui organisasi.

710 795 

711Atur `allowManagedReadPathsOnly` ke `true` dalam pengaturan terkelola sehingga hanya entri `allowRead` dari pengaturan terkelola yang dihormati. Ini mencegah pengembang memperluas akses baca di luar jalur yang disetujui organisasi. Untuk mengunci domain jaringan ke nilai terkelola dengan cara yang sama, atur [`allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly).796Untuk mengunci domain jaringan ke nilai terkelola dengan cara yang sama, atur [`allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly). Dengan penguncian ini aktif, hanya pengaturan terkelola yang dapat menetapkan [port proxy](#custom-proxy-configuration).

712 797 

713Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` atau mencantumkan entri `sandbox.credentials.files` apa pun dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat mengatur [`filesystem.disabled`](#disable-filesystem-isolation), sehingga pengembang tidak dapat mematikan pembatasan filesystem yang diterapkan administrator. Apakah entri `mask` mengikat kunci tergantung pada cara penyelesaiannya; tabel di bawah [Which settings can disable it](#which-settings-can-disable-it) mencakup empat kasus.798Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` atau mencantumkan entri `sandbox.credentials.files` apa pun dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat mengatur [`filesystem.disabled`](#disable-filesystem-isolation), sehingga pengembang tidak dapat mematikan pembatasan filesystem yang diterapkan administrator. Entri `mask` yang [valid](/docs/id/settings-reference#invalid-credential-entries-in-managed-settings) tidak mengunci kunci tersebut. Lihat [Which settings can disable it](#which-settings-can-disable-it).

714 799 

715`excludedCommands` tidak memiliki lockdown hanya terkelola yang setara, sehingga pengembang selalu dapat menambahkan entri yang menjalankan perintah tambahan di luar sandbox. Jaga daftar terkelola tetap sempit.800<h4 id="repository-settings-under-an-admin-required-sandbox">

801 Pengaturan repositori di bawah sandbox yang diwajibkan admin

802</h4>

803 

804Sandbox bersifat diwajibkan admin selama salah satu pengaturan berikut berlaku:

805 

806* [`allowUnsandboxedCommands`](/docs/id/settings-reference#sandbox-allowunsandboxedcommands) diatur ke `false` dalam pengaturan terkelola, atau dengan flag `--settings` kecuali pengaturan terkelola mengaturnya ke `true`

807* [`allowManagedDomainsOnly`](/docs/id/settings-reference#sandbox-network-allowmanageddomainsonly) diatur ke `true` dalam pengaturan terkelola

808 

809Pengaturan ini tidak mengaktifkan sandbox, jadi atur juga `enabled`.

810 

811Selama sandbox diwajibkan admin, Claude Code mengambil pengaturan yang melonggarkannya hanya dari pengaturan terkelola, flag `--settings`, dan `~/.claude/settings.json` milik setiap pengembang. Claude Code mengabaikan pengaturan berikut di `.claude/settings.json` dan `.claude/settings.local.json` milik repositori:

812 

813| Pengaturan repositori | Apa yang diabaikan Claude Code |

814| :- | :- |

815| `excludedCommands`, `ignoreViolations`, `network.allowedDomains`, `network.allowUnixSockets`, `network.allowMachLookup`, `network.httpProxyPort`, `network.socksProxyPort` | Setiap entri |

816| `filesystem.allowWrite`, aturan izinkan `Edit(...)`, `permissions.additionalDirectories` | Akses tulis yang diberikan setiap entri kepada perintah yang di-sandbox. Tool file Claude tetap mengikuti aturan `Edit(...)` dan direktori tambahan |

817| Aturan izinkan `WebFetch(domain:...)` | Host yang ditambahkan setiap aturan ke allowlist sandbox. Tool WebFetch tetap mengikuti aturan tersebut |

818| `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `network.allowAllUnixSockets`, `network.allowLocalBinding` | `true`. Nilai `false` tetap berlaku |

819| `enabled`, `failIfUnavailable` | `false`, ketika `~/.claude/settings.json` milik pengembang menetapkan `true` |

820| `filesystem.allowRead` | Entri pada atau di bawah jalur yang dilarang untuk dibaca oleh pengaturan terkelola, `--settings`, atau pengaturan pengguna, atau glob yang dapat mencocokkan salah satunya |

821 

822Pengaturan berikut tetap berlaku selama sandbox diwajibkan admin:

823 

824* **Di file repositori**: entri deny dan nilai `autoAllowBashIfSandboxed`. Atur kunci tersebut dalam pengaturan terkelola untuk mencegah repositori mengubahnya

825* **Di pengaturan milik pengembang sendiri**: pengaturan dalam tabel tetap berlaku dari `~/.claude/settings.json` atau `--settings`, kecuali penguncian khusus terkelola seperti `allowManagedDomainsOnly` mencakupnya. Sebagian besar di antaranya, seperti `excludedCommands` dan `filesystem.allowWrite`, tidak memiliki penguncian khusus terkelola

826 

827Konfigurasi di bawah [Memberlakukan sandboxing dengan pengaturan terkelola](#enforce-sandboxing-with-managed-settings) membuat sandbox diwajibkan admin. Tambahkan entri `excludedCommands`, `allowWrite`, dan socket yang dibutuhkan alat yang Anda setujui ke pengaturan terkelola, karena repositori tidak dapat menyediakannya.

828 

829Memerlukan Claude Code v2.1.285 atau lebih baru. Dari v2.1.282 hingga v2.1.284, pengaturan yang sama membuat Claude Code mengabaikan entri `excludedCommands` milik repositori.

830 

831<h4 id="locks-that-apply-without-an-admin-required-sandbox">

832 Penguncian yang berlaku tanpa sandbox yang diwajibkan admin

833</h4>

834 

835Beberapa pengaturan membuat Claude Code mengabaikan kunci repositori yang secara langsung menimpa satu pembatasan, bahkan ketika sandbox tidak diwajibkan admin. Masing-masing memiliki efek ini hanya ketika Anda mengaturnya di file yang disebutkan dalam barisnya, dan pengaturan sandbox lain milik repositori tetap berlaku. Memerlukan Claude Code v2.1.285 atau lebih baru.

836 

837| Pengaturan | Tempat Anda mengaturnya | Apa yang diabaikan Claude Code dalam pengaturan repositori |

838| :- | :- | :- |

839| `network.deniedDomains` atau aturan deny `WebFetch(domain:...)` | Pengaturan terkelola, `--settings` | `httpProxyPort` dan `socksProxyPort` |

840| `network.strictAllowlist` | Pengaturan terkelola, `--settings`, pengaturan pengguna | Port proxy, `allowedDomains`, dan aturan izinkan `WebFetch(domain:...)` |

841| `filesystem.denyRead`, aturan deny `Read(...)`, atau entri `credentials.files` | Pengaturan terkelola, `--settings` | Entri `allowRead`, `allowWrite`, izinkan `Edit(...)`, atau `additionalDirectories` pada atau di bawah jalur yang dilarang untuk dibaca oleh pengaturan terkelola, `--settings`, atau pengaturan pengguna, atau glob yang dapat mencocokkan salah satunya |

842 

843Penguncian ini mengubah apa yang dapat dijangkau oleh perintah yang di-sandbox. Tool WebFetch dan tool file Claude tetap mengikuti aturan dan direktori tambahan milik repositori.

716 844 

717<h3 id="custom-proxy-configuration">845<h3 id="custom-proxy-configuration">

718 Konfigurasi proxy khusus846 Konfigurasi proxy khusus

719</h3>847</h3>

720 848 

721Untuk organisasi yang memerlukan keamanan jaringan lanjutan, Anda dapat menerapkan proxy khusus untuk:849Untuk memeriksa, memfilter, atau mencatat lalu lintas sandbox dengan alat Anda sendiri, ganti proxy sandbox bawaan dengan proxy yang Anda jalankan di mesin yang sama.

722 850 

723* Mendekripsi dan memeriksa lalu lintas HTTPS851Untuk merutekan lalu lintas sandbox melalui proxy perusahaan di tempat lain dalam jaringan Anda, atur `HTTPS_PROXY` sebagai gantinya, seperti yang dijelaskan entri **Corporate proxy** di bawah [Network isolation](#network-isolation). Dengan cara itu, allowlist Claude Code tetap berlaku.

724* Menerapkan aturan penyaringan khusus

725* Mencatat semua permintaan jaringan

726* Mengintegrasikan dengan infrastruktur keamanan yang ada

727 852 

728Untuk menunjukkan Claude Code ke proxy Anda, atur port proxy dalam [sandbox settings](/docs/id/settings-reference#sandbox-settings):853Untuk mengarahkan perintah yang di-sandbox ke proxy Anda, atur port localhost yang didengarkannya dalam [sandbox settings](/docs/id/settings-reference#sandbox-settings):

729 854 

730```json theme={null}855```json theme={null}

731{856{


738}863}

739```864```

740 865 

866Jika Anda mengatur port dan juga mengatur `HTTPS_PROXY` atau `HTTP_PROXY`, Claude Code tidak meneruskan apa yang dikirim perintah yang di-sandbox ke proxy Anda kepada proxy yang disebutkan oleh variabel tersebut. Untuk menjangkau proxy perusahaan, konfigurasikan proxy Anda sendiri agar meneruskan ke sana.

867 

868File mana yang dapat mengatur port bergantung pada pengaturan sandbox Anda yang lain:

869 

870* **`allowManagedDomainsOnly` aktif**: hanya pengaturan terkelola

871* **Sandbox [diwajibkan admin](#repository-settings-under-an-admin-required-sandbox), atau [penguncian jaringan yang lebih sempit](#locks-that-apply-without-an-admin-required-sandbox) berlaku**: pengaturan terkelola, `--settings`, dan pengaturan pengguna

872* **Selain itu**: file pengaturan apa pun

873 

874Claude Code mengabaikan port yang diatur di tempat lain. Sebelum v2.1.285, file pengaturan apa pun dapat mengatur port.

875 

876<Warning>

877 Setelah salah satu port berlaku, proxy Anda bertanggung jawab untuk memfilter semua yang dikirim kepadanya. Kontrol jaringan milik Claude Code sendiri, seperti `allowedDomains`, `deniedDomains`, `strictAllowlist`, permintaan persetujuan, dan [pemeriksaan alamat lokal](#hostnames-that-resolve-to-local-addresses), tidak lagi berlaku untuk lalu lintas tersebut. Perintah yang di-sandbox dapat terhubung ke salah satu proxy, sehingga jika Anda hanya mengatur satu port, daftar domain Claude Code pada proxy lainnya tidak membatasi apa yang dijangkau perintah melalui proxy Anda.

878</Warning>

879 

741<h2 id="troubleshooting">880<h2 id="troubleshooting">

742 Pemecahan masalah881 Pemecahan masalah

743</h2>882</h2>

744 883 

745Beberapa perintah gagal di dalam sandbox meskipun bekerja di luar itu. Perbaikan di bawah mencakup kasus paling umum.884Beberapa perintah gagal di dalam sandbox meskipun bekerja di luar itu. Temukan judul yang sesuai dengan gejala atau pesan kesalahan Anda.

885 

886Jika sandbox organisasi Anda bersifat [wajib oleh admin](#repository-settings-under-an-admin-required-sandbox), Claude Code mengabaikan pengaturan yang disebutkan oleh perbaikan ini di file pengaturan proyek, jadi simpan pengaturan tersebut di `~/.claude/settings.json`, tempat pengaturan itu berlaku di setiap proyek. Jika suatu perbaikan tetap tidak berpengaruh, pengaturan terkelola organisasi Anda mungkin menetapkan kunci tersebut.

887 

888Perbaikan yang menambahkan pola `excludedCommands` menghapus sandbox dari perintah yang cocok dengan pola tersebut. Lihat [apa yang dapat dilakukan perintah yang dikecualikan](#run-commands-outside-the-sandbox-with-excludedcommands).

889 

890<h3 id="commands-fail-with-a-host-not-allowed-error">

891 Perintah gagal dengan kesalahan host-not-allowed

892</h3>

893 

894Banyak tool CLI perlu menjangkau host tertentu. Setujui host saat diminta, atau tambahkan ke [`allowedDomains`](/docs/id/settings-reference#sandbox-network-alloweddomains). Jika organisasi Anda mengunci allowlist dengan `allowManagedDomainsOnly`, tidak ada permintaan izin, jadi minta administrator Anda untuk menambahkan host tersebut.

895 

896<h3 id="jest-hangs-or-fails">

897 `jest` hang atau gagal

898</h3>

899 

900`watchman` tidak kompatibel dengan sandbox. Jalankan `jest --no-watchman` sebagai gantinya.

901 

902<h3 id="go-based-clis-fail-tls-verification-on-macos">

903 Go-based CLIs gagal verifikasi TLS di macOS

904</h3>

905 

906Tool seperti `gh`, `gcloud`, dan `terraform` mungkin gagal verifikasi TLS di bawah [Seatbelt](#os-level-enforcement). Untuk menjalankan tool ini di luar sandbox, tambahkan pola untuk setiap tool, seperti `gh *`, ke [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands). Tool tersebut kemudian berjalan dengan akses penuh Anda dan kredensial yang tersimpan. Jika Anda menggunakan `httpProxyPort` dengan proxy MITM dan CA khusus, atur [`enableWeakerNetworkIsolation`](/docs/id/settings-reference#sandbox-enableweakernetworkisolation) ke `true` sebagai gantinya.

907 

908<h3 id="open-osascript-or-browser-based-auth-flows-fail-with-error-600-on-macos">

909 `open`, `osascript`, atau alur autentikasi berbasis browser gagal dengan kesalahan `-600` di macOS

910</h3>

911 

912Sandbox memblokir Apple Events secara default. Atur [`allowAppleEvents`](/docs/id/settings-reference#sandbox-allowappleevents) ke `true` dalam pengaturan pengguna, terkelola, atau CLI Anda untuk mengizinkannya. Claude Code mengabaikan kunci ini di pengaturan proyek.

913 

914Mengaktifkan `allowAppleEvents` menghilangkan isolasi eksekusi kode, karena perintah sandboxed kemudian dapat meluncurkan aplikasi lain tanpa sandbox tanpa permintaan izin pengguna, dan dapat mengirim perintah AppleScript ke aplikasi yang berjalan, tunduk pada permintaan persetujuan otomasi macOS (TCC). Alternatifnya, tambahkan pola seperti `open *` ke [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands). Setiap panggilan `open` kemudian melalui alur izin, dan `open` dapat meluncurkan file atau aplikasi apa pun, termasuk yang ditulis oleh Claude.

915 

916<h3 id="docker-commands-fail">

917 Perintah `docker` gagal

918</h3>

919 

920`docker` tidak kompatibel dengan sandbox. Keluarkan perintah `docker` yang Anda butuhkan dari sandbox dengan pola `excludedCommands` seperti `docker compose *`. [Menjalankan perintah di luar sandbox dengan `excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) menjelaskan apa yang dapat dijangkau oleh perintah `docker` yang dikecualikan. Pola yang lebih sempit mengeluarkan lebih sedikit perintah dari sandbox.

921 

922<h3 id="pbcopy-xclip-or-wl-copy-doesn’t-update-the-clipboard">

923 `pbcopy`, `xclip`, atau `wl-copy` tidak memperbarui clipboard

924</h3>

925 

926Utilitas clipboard `pbcopy`, `xclip`, dan `wl-copy` dapat gagal menjangkau clipboard sistem dari dalam sandbox, dalam hal ini teks yang dialirkan ke dalamnya tidak tiba.

927 

928Untuk menempatkan output Claude di clipboard Anda, minta Claude untuk mencetaknya dalam responsnya, kemudian jalankan [`/copy`](/docs/id/commands). `/copy` menulis ke clipboard dari proses Claude Code daripada dari perintah sandboxed.

929 

930Ketika Claude mengalirkan teks ke salah satu tool ini, menambahkan tool ke [`excludedCommands`](/docs/id/settings-reference#sandbox-excludedcommands) tidak mengeluarkan panggilan itu dari sandbox dengan sendirinya.

931 

932<h3 id="a-git-command-fails-with-unable-to-unlink-old">

933 Perintah git gagal dengan `unable to unlink old`

934</h3>

935 

936`git merge`, `git checkout`, dan perintah serupa gagal dengan `unable to unlink old` ketika mereka perlu mengganti file yang sandbox tolak penulisannya. Di Linux dan WSL2 kesalahan berakhir dengan `Read-only file system`. File tersebut dapat berada di salah satu tempat berikut:

937 

938* Di bawah [jalur yang dilindungi](#protected-paths) seperti `.claude/skills`

939* Di bawah salah satu entri `denyWrite` Anda

940* Di luar direktori yang sandbox izinkan perintah untuk menulis sama sekali

941 

942Setelah kegagalan, Claude mungkin [menawarkan untuk menjalankan kembali perintah di luar sandbox](#the-unsandboxed-retry-escape-hatch). Setujui retry itu, atau jalankan perintah git sendiri di terminal lain. Jika Anda telah menetapkan `allowUnsandboxedCommands` ke `false`, Claude tidak dapat menawarkan retry, jadi jalankan perintah sendiri.

943 

944<h3 id="bubblewrap-fails-to-start-inside-a-container">

945 Bubblewrap gagal memulai di dalam container

946</h3>

947 

948Dalam container tanpa privilege, [bubblewrap](#os-level-enforcement) tidak dapat memasang filesystem `/proc` segar, sehingga perintah sandboxed gagal dengan kesalahan `bwrap` seperti `Can't mount proc on /newroot/proc: Operation not permitted`. Atur [`enableWeakerNestedSandbox`](/docs/id/settings-reference#sandbox-enableweakernestedsandbox) ke `true` sehingga sandbox melakukan bind-mount `/proc` yang sudah ada dari container sebagai gantinya. Hanya gunakan pengaturan ini ketika container luar sudah menyediakan batas isolasi yang Anda butuhkan, karena pengaturan ini mengekspos informasi proses ke perintah sandboxed yang akan disembunyikan oleh mount `/proc` segar.

949 

950<h3 id="0-byte-read-only-files-appear-at-claude-settings-paths-and-yes-and-don’t-ask-again-doesn’t-save">

951 File read-only 0-byte muncul di jalur pengaturan `.claude`, dan "Yes, and don't ask again" tidak menyimpan

952</h3>

953 

954Di Linux dan WSL2, sandbox menahan penolakan penulisan pada file yang belum ada dengan membuat placeholder read-only 0-byte di sana sementara perintah sandboxed berjalan. Sandbox menghapus placeholder setelahnya. Jika sesi dibunuh sebelum pembersihan itu berjalan, misalnya oleh SIGKILL, placeholder tetap tertinggal. Sesi berikutnya mengikat placeholder tersebut sebagai read-only lagi pada setiap awal, jadi penulisan pengaturan seperti menyimpan pilihan izin gagal di jalur tempat placeholder masih ada.

955 

956Jalankan `claude doctor` di terminal Anda untuk membuat daftar file placeholder yang tersisa. Peringatan [`Stale sandbox mask files left by a killed session`](/docs/id/errors#stale-sandbox-mask-files-left-by-a-killed-session) menamai sebagian di antaranya dan menghitung sisanya. Hapus setiap file dengan `rm` sementara tidak ada sesi Claude Code lain yang berjalan di proyek itu. Sebelum v2.1.257, Claude Code meninggalkan placeholder yang sama tanpa menandainya.

957 

958<h3 id="git-over-ssh-fails-with-the-sandbox-on">

959 `git` melalui SSH gagal saat sandbox aktif

960</h3>

961 

962Di macOS, `git fetch`, `git pull`, dan `git push` terhadap remote SSH gagal di dalam sandbox bahkan ketika host diizinkan. Di Linux dan WSL2, perintah tersebut berfungsi setelah host diizinkan. Claude Code menyalurkan koneksi SSH git melalui [proxy sandbox](#network-isolation), dan tunnel macOS tidak dapat melakukan autentikasi ke proxy tersebut.

963 

964Di Linux dan WSL2, periksa hal-hal berikut jika koneksi masih gagal:

965 

966* **Host diizinkan pada port 22**: entri `allowedDomains` tanpa port, seperti `"git.example.com"`, mencakupnya

967* **Proxy perusahaan Anda mengizinkan port 22**: jika jaringan Anda memerlukan proxy upstream, tunnel juga melewatinya

968* **Kunci dapat dibaca sebagai file**: sandbox dapat memblokir socket `ssh-agent`, dan entri `denyRead` atau `credentials` untuk `~/.ssh` menyembunyikan file kunci Anda

969 

970Di macOS, ubah remote ke HTTPS, yang memerlukan kredensial HTTPS seperti personal access token:

971 

972```bash theme={null}

973git remote set-url origin https://git.example.com/example-org/example-repo.git

974```

975 

976Jika Anda harus mempertahankan remote SSH, keluarkan perintah jaringan git dari sandbox dengan [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands):

977 

978```json theme={null}

979{

980 "sandbox": {

981 "excludedCommands": ["git fetch *", "git pull *", "git push *"]

982 }

983}

984```

985 

986Entri ini cocok dengan `git push origin main`. Panggilan yang menambahkan `cd`, menggunakan `git -C`, atau berisi command substitution tetap berada di dalam sandbox. Perintah git yang dikecualikan dapat menjangkau host mana pun, tidak hanya yang ada di `allowedDomains`.

987 

988`ssh`, `scp`, dan `rsync` biasa melalui SSH gagal karena alasan yang diberikan oleh [entri klien database](#a-database-client-or-other-non-http-tool-fails-to-reach-an-allowed-host).

989 

990<h3 id="a-database-client-or-other-non-http-tool-fails-to-reach-an-allowed-host">

991 Klien database atau tool non-HTTP lainnya gagal menjangkau host yang diizinkan

992</h3>

993 

994Tool yang mengabaikan environment variable proxy tidak dapat terhubung dari dalam sandbox, bahkan ke host yang ada di `allowedDomains`. Perintah sandboxed [tidak memiliki rute langsung ke jaringan](#network-isolation), sehingga tool yang membuka koneksinya sendiri akan gagal. Sebagian besar driver database, `ssh` biasa, dan tool yang menggunakan UDP berperilaku seperti ini.

995 

996Kegagalan tampak seperti kesalahan jaringan atau resolusi nama:

997 

998* **macOS**: `Operation not permitted`, atau kesalahan resolusi nama seperti `Could not resolve host`

999* **Linux dan WSL2**: `Network is unreachable`, atau kesalahan resolusi nama seperti `Temporary failure in name resolution`

1000 

1001Tool yang menggunakan proxy gagal dengan cara berbeda ketika host-nya tidak diizinkan. Anda mendapatkan permintaan izin jaringan, atau tool menerima respons `403` dari proxy.

1002 

1003Untuk memungkinkan tool terhubung, jalankan perintah yang memerlukannya di luar sandbox dengan [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands). Contoh ini mengecualikan satu skrip dan menambahkan [aturan ask](/docs/id/permissions) sehingga Anda menyetujui setiap eksekusi:

1004 

1005```json theme={null}

1006{

1007 "sandbox": {

1008 "excludedCommands": ["python scripts/load_orders.py *"]

1009 },

1010 "permissions": {

1011 "ask": ["Bash(python scripts/load_orders.py *)"]

1012 }

1013}

1014```

1015 

1016Skrip berjalan dengan akses penuh Anda, dan Claude dapat mengedit skrip yang berada di dalam direktori kerja Anda, jadi tinjau skrip tersebut saat permintaan izin muncul.

1017 

1018<h3 id="a-command-fails-to-reach-a-server-on-localhost">

1019 Perintah gagal menjangkau server di localhost

1020</h3>

1021 

1022Secara default, perintah sandboxed tidak dapat terhubung langsung ke server yang berjalan di mesin Anda di luar sandbox, seperti dev server atau database dalam container. Apa yang dapat Anda ubah bergantung pada platform Anda:

746 1023 

747* **Perintah gagal dengan kesalahan host-not-allowed**: banyak alat CLI perlu menjangkau host tertentu. Memberikan izin saat diminta menambahkan host ke daftar yang diizinkan sehingga alat berjalan di dalam sandbox di masa depan.1024* **macOS**: atur [`network.allowLocalBinding`](/docs/id/settings-reference#sandbox-network-allowlocalbinding) ke `true`. Perintah sandboxed kemudian dapat mendengarkan pada port jaringan dan terhubung ke port mana pun di localhost, yang mencakup setiap layanan lain yang mendengarkan di sana. Layanan localhost yang tidak memerlukan autentikasi, seperti debugger, kemudian dapat bertindak atas nama perintah di luar sandbox, dan perintah yang mendengarkan pada alamat non-loopback menerima koneksi dari mesin lain

748* **`jest` hang atau gagal**: `watchman` tidak kompatibel dengan sandbox. Jalankan `jest --no-watchman` sebagai gantinya.1025* **Linux dan WSL2**: `localhost` milik perintah sandboxed bersifat privat untuk perintah tersebut. Perintah dapat mendengarkan pada port dan menjangkau server yang dimulainya sendiri. Koneksi langsung ke `localhost` atau `127.0.0.1` tidak menjangkau server di host, dan `allowLocalBinding` tidak berpengaruh. Jalankan perintah yang memerlukan server host di luar sandbox dengan [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands), tempat perintah tersebut tidak memiliki batasan filesystem atau jaringan. Untuk koneksi yang melalui proxy sandbox, lihat [Hostname yang di-resolve ke alamat lokal](#hostnames-that-resolve-to-local-addresses)

749* **Go-based CLIs gagal verifikasi TLS di macOS**: alat seperti `gh`, `gcloud`, dan `terraform` mungkin gagal verifikasi TLS di bawah Seatbelt. Daftar alat ini dalam [`excludedCommands`](/docs/id/settings-reference#sandbox-excludedcommands). Jika Anda menggunakan `httpProxyPort` dengan proxy MITM dan CA khusus, atur [`enableWeakerNetworkIsolation`](/docs/id/settings-reference#sandbox-enableweakernetworkisolation) ke `true` sebagai gantinya.

750* **Perintah `open`, `osascript`, atau alur autentikasi berbasis browser gagal dengan kesalahan `-600` di macOS**: sandbox memblokir Apple Events secara default. Atur [`allowAppleEvents`](/docs/id/settings-reference#sandbox-allowappleevents) ke `true` dalam pengaturan pengguna, terkelola, atau CLI Anda untuk mengizinkannya. Pengaturan proyek diabaikan untuk kunci ini. Mengaktifkannya menghilangkan isolasi eksekusi kode, karena perintah sandboxed kemudian dapat meluncurkan aplikasi lain tanpa sandbox tanpa prompt pengguna dan mengirim perintah AppleScript ke aplikasi yang berjalan, tunduk pada prompt otomasi-persetujuan macOS (TCC). Alternatifnya, tambahkan perintah ke [`excludedCommands`](/docs/id/settings-reference#sandbox-excludedcommands).

751* **Perintah `docker` gagal**: `docker` tidak kompatibel dengan sandbox. Tambahkan `docker *` ke [`excludedCommands`](/docs/id/settings-reference#sandbox-excludedcommands).

752* **`pbcopy`, `xclip`, atau `wl-copy` tidak memperbarui clipboard**: utilitas clipboard ini dapat gagal menjangkau clipboard sistem dari dalam sandbox, dalam hal ini teks yang dialirkan ke dalamnya tidak tiba.

753 1026 

754 Untuk menempatkan output Claude di clipboard Anda, minta Claude untuk mencetaknya dalam responsnya, kemudian jalankan [`/copy`](/docs/id/commands). `/copy` menulis ke clipboard dari proses Claude Code daripada dari perintah sandboxed.1027Contoh ini mengaktifkan pengaturan untuk macOS:

755 1028 

756 Ketika Claude mengalirkan teks ke salah satu alat ini, menambahkan alat ke [`excludedCommands`](/docs/id/settings-reference#sandbox-excludedcommands) tidak mengeluarkan panggilan itu dari sandbox dengan sendirinya.1029```json theme={null}

757* **Perintah git gagal dengan `unable to unlink old`**: `git merge`, `git checkout`, dan perintah serupa gagal dengan cara ini ketika mereka perlu mengganti file yang sandbox tolak penulisannya, apakah file itu berada di bawah [jalur yang dilindungi](#protected-paths) seperti `.claude/skills`, di bawah salah satu entri `denyWrite` Anda, atau di luar direktori yang sandbox izinkan perintah untuk menulis sama sekali. Di Linux dan WSL2 kesalahan berakhir dengan `Read-only file system`.1030{

1031 "sandbox": {

1032 "network": {

1033 "allowLocalBinding": true

1034 }

1035 }

1036}

1037```

1038 

1039Entri `allowedDomains` untuk `localhost` berlaku untuk koneksi yang melalui proxy, sehingga tidak mengubah koneksi langsung. Claude Code menetapkan `NO_PROXY` untuk perintah sandboxed sehingga perintah tersebut terhubung ke `localhost` secara langsung alih-alih melalui proxy. Entri tersebut juga mengekspos setiap port di localhost mesin Anda ke perintah yang memang menggunakan proxy. Untuk hostname pengembangan yang mengarah ke `127.0.0.1`, lihat [Hostname yang diizinkan ditolak dengan `resolved to a loopback address`](#an-allowed-hostname-is-refused-with-resolved-to-a-loopback-address).

1040 

1041<h3 id="an-allowed-hostname-is-refused-with-resolved-to-a-loopback-address">

1042 Hostname yang diizinkan ditolak dengan `resolved to a loopback address`

1043</h3>

1044 

1045Proxy sandbox menolak hostname yang diizinkan yang [di-resolve ke alamat lokal](#hostnames-that-resolve-to-local-addresses), yang memengaruhi nama pengembangan seperti `myapp.test` yang mengarah ke `127.0.0.1`. Perintah melihat respons `403` yang isinya menyebutkan jenis alamat, seperti `Connection to myapp.test blocked: resolved to a loopback address`.

1046 

1047Tambahkan alamat IP tempat nama tersebut di-resolve bersama hostname di `allowedDomains`, masing-masing dengan port tempat server Anda mendengarkan:

1048 

1049```json theme={null}

1050{

1051 "sandbox": {

1052 "network": {

1053 "allowedDomains": ["myapp.test:3000", "127.0.0.1:3000"]

1054 }

1055 }

1056}

1057```

758 1058 

759 Setelah kegagalan, Claude mungkin [menawarkan untuk menjalankan kembali perintah di luar sandbox](#the-unsandboxed-retry-escape-hatch); setujui retry itu, atau jalankan perintah git sendiri di terminal lain. Jika Anda telah menetapkan `allowUnsandboxedCommands` ke `false`, Claude tidak dapat menawarkan retry, jadi jalankan perintah sendiri. Jika perintah git yang sama sering gagal, tambahkan ke [`excludedCommands`](/docs/id/settings-reference#sandbox-excludedcommands).1059Entri alamat IP tanpa port memungkinkan perintah sandboxed menjangkau setiap layanan yang mendengarkan pada alamat tersebut.

760* **Bubblewrap gagal memulai di dalam container**: dalam container tanpa privilege, bubblewrap tidak dapat memasang filesystem `/proc` segar, sehingga perintah sandboxed gagal dengan kesalahan `bwrap` seperti `Can't mount proc on /newroot/proc: Operation not permitted`. Atur [`enableWeakerNestedSandbox`](/docs/id/settings-reference#sandbox-enableweakernestedsandbox) ke `true` sehingga sandbox dalam bind-mount `/proc` yang ada dari container sebagai gantinya. Hanya gunakan pengaturan ini ketika container luar sudah menyediakan batas isolasi yang Anda butuhkan, karena mengekspos informasi proses ke perintah sandboxed yang mount `/proc` segar akan menyembunyikan.

761* **File read-only 0-byte muncul di jalur pengaturan `.claude`, dan "Ya, dan jangan tanya lagi" tidak menyimpan**: di Linux dan WSL2, sandbox menahan penolakan penulisan pada file yang belum ada dengan membuat placeholder read-only 0-byte di sana sementara perintah sandboxed berjalan. Sandbox menghapus placeholder setelahnya. Jika sesi dibunuh sebelum pembersihan itu berjalan, misalnya oleh SIGKILL, placeholder tetap tertinggal. Sesi kemudian mengikatnya read-only lagi pada setiap awal, jadi penulisan pengaturan seperti menyimpan pilihan izin gagal di mana satu duduk.

762 1060 

763 Jalankan `claude doctor` untuk membuat daftar file placeholder yang tersisa. Peringatan [`Stale sandbox mask files left by a killed session`](/docs/id/errors#stale-sandbox-mask-files-left-by-a-killed-session) menamai hingga tiga di antaranya dan menghitung sisanya. Hapus setiap file dengan `rm` sementara tidak ada sesi Claude Code lain yang berjalan di proyek itu. Sebelum v2.1.257, Claude Code meninggalkan placeholder yang sama tanpa menandainya.1061Sebelum v2.1.284, proxy terhubung ke alamat apa pun tempat hostname yang diizinkan di-resolve.

764* **`--dangerously-skip-permissions` gagal sebagai root**: flag ini diblokir saat menjalankan sebagai root atau melalui sudo di Linux dan macOS, karena akses root dikombinasikan dengan tidak ada prompt izin dapat memodifikasi file atau layanan apa pun di sistem. Pemeriksaan dilewati secara otomatis di dalam sandbox yang dikenali. Untuk menjalankan secara otonom dalam container, gunakan konfigurasi [dev container](/docs/id/devcontainer), yang menjalankan Claude Code sebagai pengguna non-root.1062 

1063<h3 id="/sandbox-fails-with-sandbox-settings-are-overridden-by-a-higher-priority-configuration">

1064 `/sandbox` gagal dengan `Sandbox settings are overridden by a higher-priority configuration`

1065</h3>

1066 

1067`/sandbox` mencetak `Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.` alih-alih membuka panelnya ketika [tingkat pengaturan](/docs/id/settings#settings-precedence) yang lebih tinggi menetapkan `sandbox.enabled`, `sandbox.autoAllowBashIfSandboxed`, atau `sandbox.allowUnsandboxedCommands`. Panel menyimpan pilihan Anda ke `.claude/settings.local.json`, dan nilai yang disimpan di sana tidak dapat menimpa tingkat-tingkat tersebut.

1068 

1069Pengaturan terkelola dan `--settings` memiliki peringkat di atas pengaturan lokal. Untuk melihat mana di antaranya yang dimuat oleh sesi ini, jalankan `/status` dan baca baris `Setting sources`:

1070 

1071* **`Command line arguments`**: jika Anda memulai Claude Code dengan [`--settings`](/docs/id/settings#change-a-setting-for-one-session), periksa apakah file atau JSON yang Anda berikan menetapkan salah satu kunci tersebut. Jika ya, ubah nilainya di sana, atau mulai Claude Code lagi tanpa kunci-kunci tersebut.

1072* **`Enterprise managed settings`**: pengaturan terkelola organisasi Anda dimuat. Jika pengaturan tersebut menetapkan salah satu kunci tersebut, Anda tidak dapat mengubah kunci itu dari `/sandbox` atau dari file pengaturan apa pun yang Anda kendalikan, jadi tanyakan kepada administrator Anda.

765 1073 

766<h2 id="limitations">1074<h2 id="limitations">

767 Keterbatasan1075 Keterbatasan


781 1089 

782* **Eskalasi privilege melalui soket Unix**: konfigurasi `allowUnixSockets` dapat secara tidak sengaja memberikan akses ke layanan sistem yang dapat menyebabkan bypass sandbox. Misalnya, mengizinkan akses ke `/var/run/docker.sock` secara efektif memberikan akses ke sistem host melalui soket Docker. Pertimbangkan dengan hati-hati soket Unix apa pun yang Anda izinkan melalui sandbox.1090* **Eskalasi privilege melalui soket Unix**: konfigurasi `allowUnixSockets` dapat secara tidak sengaja memberikan akses ke layanan sistem yang dapat menyebabkan bypass sandbox. Misalnya, mengizinkan akses ke `/var/run/docker.sock` secara efektif memberikan akses ke sistem host melalui soket Docker. Pertimbangkan dengan hati-hati soket Unix apa pun yang Anda izinkan melalui sandbox.

783* **Eskalasi izin filesystem**: izin penulisan filesystem yang terlalu luas dapat memungkinkan serangan eskalasi privilege. Mengizinkan penulisan ke direktori yang berisi executable dalam `$PATH`, direktori konfigurasi sistem, atau file konfigurasi shell pengguna seperti `.bashrc` atau `.zshrc` dapat menyebabkan eksekusi kode dalam konteks keamanan yang berbeda ketika pengguna lain atau proses sistem mengakses file ini.1091* **Eskalasi izin filesystem**: izin penulisan filesystem yang terlalu luas dapat memungkinkan serangan eskalasi privilege. Mengizinkan penulisan ke direktori yang berisi executable dalam `$PATH`, direktori konfigurasi sistem, atau file konfigurasi shell pengguna seperti `.bashrc` atau `.zshrc` dapat menyebabkan eksekusi kode dalam konteks keamanan yang berbeda ketika pengguna lain atau proses sistem mengakses file ini.

784* **Kekuatan sandbox Linux**: implementasi Linux menyediakan isolasi filesystem dan jaringan yang kuat tetapi mencakup mode `enableWeakerNestedSandbox` yang memungkinkannya bekerja di dalam lingkungan Docker tanpa namespace istimewa, atau pada host Linux di mana user namespaces tanpa privilege dinonaktifkan oleh sysctl. Opsi ini secara konsiderabel melemahkan keamanan dan hanya boleh digunakan ketika isolasi tambahan sebaliknya diberlakukan.1092* **Kekuatan sandbox Linux**: implementasi Linux menyediakan isolasi filesystem dan jaringan yang kuat tetapi mencakup mode `enableWeakerNestedSandbox` yang memungkinkannya bekerja di dalam lingkungan Docker tanpa namespace istimewa. Opsi ini secara konsiderabel melemahkan keamanan dan hanya boleh digunakan ketika isolasi tambahan sebaliknya diberlakukan.

785* **Apple Events pada macOS**: sandbox macOS memblokir Apple Events secara default. Pengaturan `allowAppleEvents` menghapus pembatasan ini sehingga alat seperti `open` dan `osascript` berfungsi, tetapi menghilangkan isolasi eksekusi kode: perintah sandboxed dapat meluncurkan aplikasi lain tanpa sandbox tanpa prompt pengguna, dan dapat mengirim perintah AppleScript ke aplikasi yang sedang berjalan, tunduk pada prompt persetujuan otomasi macOS per-aplikasi (TCC). Ini hanya dihormati dari pengaturan pengguna, terkelola, atau CLI. Pengaturan proyek tidak dapat mengaktifkannya.1093* **Apple Events pada macOS**: sandbox macOS memblokir Apple Events secara default. Pengaturan `allowAppleEvents` menghapus pembatasan ini sehingga alat seperti `open` dan `osascript` berfungsi, tetapi menghilangkan isolasi eksekusi kode: perintah sandboxed dapat meluncurkan aplikasi lain tanpa sandbox tanpa prompt pengguna, dan dapat mengirim perintah AppleScript ke aplikasi yang sedang berjalan, tunduk pada prompt persetujuan otomasi macOS per-aplikasi (TCC). Ini hanya dihormati dari pengaturan pengguna, terkelola, atau CLI. Pengaturan proyek tidak dapat mengaktifkannya.

786 1094 

787<h3 id="platform-and-tool-compatibility">

788 Kompatibilitas platform dan alat

789</h3>

790 

791* **Dukungan platform**: mendukung macOS, Linux, dan WSL2. WSL1 dan Windows asli tidak didukung.

792* **Overhead kinerja**: minimal, tetapi beberapa operasi filesystem mungkin sedikit lebih lambat.

793* **Kompatibilitas alat**: beberapa alat yang memerlukan pola akses sistem tertentu mungkin memerlukan penyesuaian konfigurasi, atau mungkin perlu dijalankan di luar sandbox.

794 

795<h3 id="scope">1095<h3 id="scope">

796 Cakupan1096 Cakupan

797</h3>1097</h3>

798 1098 

799Sandbox mengisolasi subprocess Bash. Alat lain beroperasi di bawah batas yang berbeda:1099Sandbox mengisolasi perintah shell dan proses turunannya. [Apa yang berjalan di luar sandbox](#what-runs-outside-the-sandbox) mencantumkan tool dan proses pembantu yang tidak dicakupnya. Penggunaan komputer dan subagent berkaitan dengan sandbox sebagai berikut:

800 1100 

801* **Alat file bawaan**: Read, Edit, dan Write menggunakan sistem izin secara langsung daripada berjalan melalui sandbox. Lihat [permissions](/docs/id/permissions).

802* **Penggunaan komputer**: ketika Claude membuka aplikasi dan mengontrol layar Anda, itu berjalan di desktop aktual Anda daripada di lingkungan terisolasi. Prompt izin per-aplikasi membatasi setiap aplikasi. Lihat [computer use in the CLI](/docs/id/computer-use) atau [computer use in Desktop](/docs/id/desktop#let-claude-use-your-computer).1101* **Penggunaan komputer**: ketika Claude membuka aplikasi dan mengontrol layar Anda, itu berjalan di desktop aktual Anda daripada di lingkungan terisolasi. Prompt izin per-aplikasi membatasi setiap aplikasi. Lihat [computer use in the CLI](/docs/id/computer-use) atau [computer use in Desktop](/docs/id/desktop#let-claude-use-your-computer).

803* **Variabel lingkungan**: perintah Bash sandboxed mewarisi lingkungan proses induk secara default, termasuk kredensial apa pun yang ditetapkan di sana. Gunakan [`sandbox.credentials`](#protect-credentials) untuk menghapus atau menutupi variabel tertentu untuk perintah sandboxed, atau atur [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](/docs/id/env-vars) untuk menghapus kredensial dari semua subprocess.

804* **Subagents**: [subagents](/docs/id/sub-agents) berjalan dalam proses yang sama dengan sesi induk dan menggunakan konfigurasi sandbox yang sama. Perintah Bash di dalam subagent di-sandbox ketika sandboxing diaktifkan dalam sesi induk.1102* **Subagents**: [subagents](/docs/id/sub-agents) berjalan dalam proses yang sama dengan sesi induk dan menggunakan konfigurasi sandbox yang sama. Perintah Bash di dalam subagent di-sandbox ketika sandboxing diaktifkan dalam sesi induk.

1103* **Mods**: [mod](/docs/id/plugins/mods/overview) adalah plugin yang menjalankan kodenya sendiri di dalam Claude Code, dan proses yang dimulai oleh mod berjalan di luar sandbox. Lihat [Apa yang dapat dijangkau mod](/docs/id/plugins/mods/overview#what-a-mod-can-reach).

805 1104 

806<Warning>1105<Warning>

807 Sandboxing yang efektif memerlukan isolasi filesystem dan jaringan. Tanpa isolasi jaringan, agen yang dikompromikan dapat mengeksfiltrasikan file sensitif seperti kunci SSH. Tanpa isolasi filesystem, baik dari kebijakan yang permisif atau dari [menonaktifkan lapisan filesystem](#disable-filesystem-isolation), agen yang dikompromikan dapat memasang pintu belakang pada sumber daya sistem untuk mendapatkan akses jaringan. Ketika Anda memperluas default, periksa bahwa jalur `allowWrite`, entri `allowedDomains` yang luas, atau pengecualian `excludedCommands` tidak membatalkan pembatasan di sisi lain.1106 Sandboxing yang efektif memerlukan isolasi filesystem dan jaringan. Tanpa isolasi jaringan, agent yang dikompromikan dapat mengeksfiltrasikan file sensitif seperti kunci SSH. Tanpa isolasi filesystem, baik dari kebijakan yang permisif atau dari [menonaktifkan lapisan filesystem](#disable-filesystem-isolation), agent yang dikompromikan dapat memasang pintu belakang pada sumber daya sistem untuk mendapatkan akses jaringan. Ketika Anda memperluas default, periksa bahwa jalur `allowWrite`, entri `allowedDomains` yang luas, atau pengecualian `excludedCommands` tidak membatalkan pembatasan di sisi lain.

808</Warning>1107</Warning>

809 1108 

810<h2 id="see-also">1109<h2 id="see-also">

security.md +15 −19

Details

20 Arsitektur berbasis izin20 Arsitektur berbasis izin

21</h3>21</h3>

22 22 

23Dalam mode Manual, Claude Code dimulai dengan izin baca-saja. Ketika Claude Code perlu mengedit file, menjalankan tes, atau mengeksekusi perintah, Claude Code meminta Anda terlebih dahulu, dan Anda memilih apakah akan menyetujui tindakan sekali atau mengizinkannya dari saat itu.23Mode izin sebuah sesi menentukan tindakan mana yang dapat dilakukan Claude tanpa meminta persetujuan Anda terlebih dahulu. Auto mode adalah mode izin awal bawaan untuk sesi terminal interaktif dan VS Code. [Mode mana yang digunakan saat sesi dimulai](/docs/id/permission-modes#which-mode-a-session-starts-in) membahas versi sebelumnya, surface lainnya, dan pengaturan yang mengubah mode izin awal.

24 24 

25Dalam mode Manual, Claude Code juga meminta sebelum menjalankan perintah Bash yang dapat memodifikasi sistem Anda. Claude Code menjalankan serangkaian [perintah baca-saja](/docs/id/permissions#read-only-commands) bawaan seperti `ls`, `cat`, dan `git status` tanpa meminta. Anda dan organisasi Anda mengonfigurasi izin ini secara langsung.25* **Auto mode**: Model pengklasifikasi terpisah meninjau tindakan alih-alih Anda dan memblokir tindakan yang dianggapnya tidak aman. [Bagaimana pengklasifikasi mengevaluasi tindakan](/docs/id/permission-modes#how-the-classifier-evaluates-actions) mencantumkan tindakan mana yang Claude Code setujui sepenuhnya, tindakan mana yang dikirimnya ke pengklasifikasi, dan tindakan mana yang masih diminta Claude Code kepada Anda. Aturan permintaan dan penolakan eksplisit Anda masih berlaku, dan organisasi Anda dapat [mematikan auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode)

26* **Mode Manual**: Claude Code dimulai dengan izin read-only. Ketika Claude Code perlu mengedit file, menjalankan tes, atau mengeksekusi perintah, Claude Code meminta Anda terlebih dahulu, dan Anda memilih apakah akan menyetujui tindakan sekali atau mengizinkannya dari saat itu. Claude Code menjalankan serangkaian [perintah read-only](/docs/id/permissions#read-only-commands) bawaan seperti `ls`, `cat`, dan `git status` tanpa meminta

26 27 

27Dalam [mode auto](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), model pengklasifikasi terpisah meninjau tindakan alih-alih Anda dan memblokir tindakan yang dianggapnya tidak aman. [Bagaimana pengklasifikasi mengevaluasi tindakan](/docs/id/permission-modes#how-the-classifier-evaluates-actions) mencantumkan tindakan mana yang Claude Code setujui sepenuhnya, tindakan mana yang dikirimnya ke pengklasifikasi, dan tindakan mana yang masih diminta Claude Code kepada Anda. Aturan permintaan dan penolakan eksplisit Anda masih berlaku, dan organisasi Anda dapat [mematikan mode auto](/docs/id/permission-modes#eliminate-prompts-with-auto-mode).28Anda dan organisasi Anda mengonfigurasi izin ini secara langsung. Untuk konfigurasi izin terperinci, lihat [Permissions](/docs/id/permissions).

28 

29Mode izin mana yang dimulai sesi tergantung pada paket Anda, permukaan tempat Anda memulainya, dan pengaturan Anda serta organisasi Anda; lihat [Permission modes](/docs/id/permission-modes#which-mode-a-session-starts-in).

30 

31Untuk konfigurasi izin terperinci, lihat [Permissions](/docs/id/permissions).

32 29 

33<h3 id="built-in-protections">30<h3 id="built-in-protections">

34 Perlindungan bawaan31 Perlindungan bawaan


37Untuk mengurangi risiko dalam sistem agentic:34Untuk mengurangi risiko dalam sistem agentic:

38 35 

39* **Alat bash bersandbox**: [Sandbox](/docs/id/sandboxing) perintah bash dengan isolasi filesystem dan jaringan, mengurangi permintaan izin sambil mempertahankan keamanan. Konfigurasi dengan `/sandbox` untuk menentukan batas tempat Claude Code dapat bekerja secara otonom36* **Alat bash bersandbox**: [Sandbox](/docs/id/sandboxing) perintah bash dengan isolasi filesystem dan jaringan, mengurangi permintaan izin sambil mempertahankan keamanan. Konfigurasi dengan `/sandbox` untuk menentukan batas tempat Claude Code dapat bekerja secara otonom

40* **Pembatasan direktori kerja**: Dalam mode Manual, Claude Code hanya dapat menulis ke folder tempat dimulai dan subfolder-nya, dan tidak dapat memodifikasi file di direktori induk tanpa izin eksplisit. Dalam mode Manual, Claude Code juga meminta Anda sebelum membaca jalur di luar batas ini dengan alat Read, Grep, dan Glob. Perluas batas dengan [direktori tambahan](/docs/id/permissions#working-directories) untuk melewati permintaan, atau batasi akses baca yang lebih luas tersedia untuk perintah Bash baca-saja dengan [aturan sandbox `denyRead`](/docs/id/sandboxing#filesystem-isolation), yang hanya berlaku ketika sandboxing diaktifkan37* **Batas direktori kerja**: Dalam mode Manual, Claude Code meminta persetujuan Anda sebelum tool file-nya membaca atau menulis di luar folder tempat ia dimulai dan subfolder-nya. Batas ini berupa permintaan izin, sehingga perintah Bash yang Anda setujui tetap dapat menulis di mana saja yang dapat diakses oleh akun pengguna Anda

38 * Untuk membaca sebuah folder tanpa permintaan izin, tambahkan folder tersebut sebagai [direktori tambahan](/docs/id/permissions#working-directories)

39 * Untuk membatasi perintah Bash di tingkat sistem operasi, aktifkan [sandboxing](/docs/id/sandboxing#filesystem-isolation)

41* **Mitigasi kelelahan permintaan**: Dukungan untuk allowlisting perintah aman yang sering digunakan per-pengguna, per-codebase, atau per-organisasi40* **Mitigasi kelelahan permintaan**: Dukungan untuk allowlisting perintah aman yang sering digunakan per-pengguna, per-codebase, atau per-organisasi

42* **Mode Accept Edits**: Persetujuan otomatis untuk edit file dan serangkaian perintah Bash filesystem tetap seperti `mkdir`, `touch`, `rm`, `mv`, `cp`, dan `sed` untuk jalur di direktori kerja. Perintah Bash lainnya dan jalur di luar cakupan masih meminta persetujuan41* **Mode Accept Edits**: Persetujuan otomatis untuk edit file dan serangkaian perintah Bash filesystem tetap seperti `mkdir`, `touch`, `rm`, `mv`, `cp`, dan `sed` untuk jalur di direktori kerja. Perintah Bash lainnya dan jalur di luar cakupan masih meminta persetujuan

43 42 


45 Tanggung jawab pengguna44 Tanggung jawab pengguna

46</h3>45</h3>

47 46 

48Claude Code hanya memiliki izin yang Anda berikan. Anda bertanggung jawab untuk meninjau kode dan perintah yang diusulkan untuk keamanan sebelum persetujuan.47Anda bertanggung jawab untuk meninjau kode dan perintah yang diusulkan untuk keamanan sebelum persetujuan.

49 48 

50<h2 id="protect-against-prompt-injection">49<h2 id="protect-against-prompt-injection">

51 Lindungi dari prompt injection50 Lindungi dari prompt injection


58</h3>57</h3>

59 58 

60* **Sistem izin**: Dalam Manual mode, operasi sensitif memerlukan persetujuan eksplisit59* **Sistem izin**: Dalam Manual mode, operasi sensitif memerlukan persetujuan eksplisit

61* **Analisis yang menyadari konteks**: Mendeteksi instruksi yang berpotensi berbahaya dengan menganalisis permintaan lengkap

62* **Sanitasi input**: Mencegah command injection dengan memproses input pengguna

63* **Persetujuan perintah jaringan**: Perintah yang mengambil konten dari web seperti `curl` dan `wget` tidak disetujui secara otomatis secara default. Dalam Manual mode mereka meminta seperti perintah Bash non-read-only lainnya, sehingga Anda masih dapat menyetujui sekali atau menambahkan aturan izin eksplisit seperti `Bash(curl *)`. Untuk menghentikan Claude dari menjalankannya, tambahkan ke [`permissions.deny`](/docs/id/permissions#tool-specific-permission-rules). Aturan deny cocok dengan perintah [seperti yang ditulis](/docs/id/permissions#bash-rule-limits); untuk penegakan jaringan yang tidak bergantung pada teks perintah, lihat [isolasi jaringan sandbox](/docs/id/sandboxing#network-isolation)60* **Persetujuan perintah jaringan**: Perintah yang mengambil konten dari web seperti `curl` dan `wget` tidak disetujui secara otomatis secara default. Dalam Manual mode mereka meminta seperti perintah Bash non-read-only lainnya, sehingga Anda masih dapat menyetujui sekali atau menambahkan aturan izin eksplisit seperti `Bash(curl *)`. Untuk menghentikan Claude dari menjalankannya, tambahkan ke [`permissions.deny`](/docs/id/permissions#tool-specific-permission-rules). Aturan deny cocok dengan perintah [seperti yang ditulis](/docs/id/permissions#bash-rule-limits); untuk penegakan jaringan yang tidak bergantung pada teks perintah, lihat [isolasi jaringan sandbox](/docs/id/sandboxing#network-isolation)

64 61 

65<h3 id="privacy-safeguards">62<h3 id="privacy-safeguards">


79</h3>76</h3>

80 77 

81* **Persetujuan permintaan jaringan**: Dalam Manual mode, sebagian besar alat yang membuat permintaan jaringan memerlukan persetujuan pengguna secara default78* **Persetujuan permintaan jaringan**: Dalam Manual mode, sebagian besar alat yang membuat permintaan jaringan memerlukan persetujuan pengguna secara default

82* **Jendela konteks terisolasi**: Web fetch menggunakan jendela konteks terpisah untuk menghindari injeksi prompt yang berpotensi berbahaya79* **Ringkasan halaman web**: Untuk sebagian besar pengambilan, WebFetch menjalankan panggilan model terpisah atas halaman tersebut, dan Claude menerima jawaban dari panggilan itu alih-alih halaman mentahnya. Lihat [perilaku tool WebFetch](/docs/id/tools-reference#webfetch-tool-behavior)

83* **Verifikasi kepercayaan**: Jalankan codebase pertama kali dan server MCP baru memerlukan verifikasi kepercayaan80* **Verifikasi kepercayaan**: Dalam sesi interaktif, Claude Code menampilkan dialog kepercayaan workspace saat Anda memulainya di folder yang belum Anda percayai. Server dalam `.mcp.json` milik proyek memiliki permintaan persetujuannya sendiri, dan [Cakupan proyek](/docs/id/mcp#project-scope) mencantumkan sesi yang melewatinya

84 * Catatan: Verifikasi kepercayaan dinonaktifkan saat menjalankan secara non-interaktif dengan flag `-p`81 * Catatan: Sesi `-p` tidak menampilkan kedua permintaan tersebut. [Apa yang berjalan sebelum Anda memercayai folder](/docs/id/permissions#what-runs-before-you-trust-a-folder) mencantumkan apa yang dapat dijalankan oleh file repositori di sana

85 * Catatan: Ketika Anda memulai Claude Code langsung di direktori home Anda, penerimaan kepercayaan disimpan untuk sesi saat ini saja dan tidak ditulis ke disk, jadi prompt muncul kembali pada setiap peluncuran. Tidak ada pengaturan untuk mempertahankannya. Mulai Claude Code dari subdirektori proyek sebagai gantinya, di mana penerimaan kepercayaan disimpan per direktori82 * Catatan: Ketika Anda memulai Claude Code langsung di direktori home Anda, penerimaan kepercayaan disimpan untuk sesi saat ini saja dan tidak ditulis ke disk, jadi prompt muncul kembali pada setiap peluncuran. Tidak ada pengaturan untuk mempertahankannya. Mulai Claude Code dari subdirektori proyek sebagai gantinya, di mana penerimaan kepercayaan disimpan per direktori

86* **Deteksi command injection**: Dalam Manual mode, perintah bash yang mencurigakan memerlukan persetujuan manual bahkan jika sebelumnya allowlisted83* **Deteksi command injection**: Dalam Manual mode, Claude Code meminta persetujuan sebelum menjalankan perintah Bash yang tidak dapat dianalisisnya sepenuhnya. Aturan izin untuk sebagian perintah, seperti `Bash(git *)`, tidak melewati permintaan tersebut. [Perintah yang di-sandbox](/docs/id/permissions#how-permissions-interact-with-sandboxing) dapat berjalan tanpanya

87* **Pencocokan fail-closed**: Dalam Manual mode, perintah yang tidak cocok memerlukan persetujuan secara default84* **Pencocokan fail-closed**: Dalam Manual mode, perintah yang tidak cocok memerlukan persetujuan secara default

88* **Deskripsi bahasa alami**: Perintah bash kompleks menyertakan penjelasan untuk pemahaman pengguna85* **Penyimpanan kredensial aman**: Kunci API dan token disimpan di macOS Keychain jika tersedia. Di Linux, keduanya disimpan dalam file dengan mode `0600`, dan di Windows dalam file yang mewarisi kontrol akses direktori profil pengguna Anda. Lihat [Credential Management](/docs/id/authentication#credential-management)

89* **Penyimpanan kredensial aman**: Kunci API dan token disimpan di macOS Keychain jika tersedia, dan dilindungi oleh izin file di Windows dan Linux. Lihat [Credential Management](/docs/id/authentication#credential-management)

90 86 

91<Warning>87<Warning>

92 **Risiko keamanan Windows WebDAV**: Saat menjalankan Claude Code di Windows, kami merekomendasikan untuk tidak mengaktifkan WebDAV atau mengizinkan Claude Code mengakses path seperti `\\*` yang mungkin berisi subdirektori WebDAV. [WebDAV telah dihentikan oleh Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) karena risiko keamanan. Mengaktifkan WebDAV dapat memungkinkan Claude Code memicu permintaan jaringan ke host jarak jauh, melewati sistem izin.88 **Risiko keamanan Windows WebDAV**: Saat menjalankan Claude Code di Windows, kami merekomendasikan untuk tidak mengaktifkan WebDAV atau mengizinkan Claude Code mengakses path seperti `\\*` yang mungkin berisi subdirektori WebDAV. [WebDAV telah dihentikan oleh Microsoft](https://learn.microsoft.com/en-us/windows/whats-new/deprecated-features#:~:text=The%20Webclient%20\(WebDAV\)%20service%20is%20deprecated) karena risiko keamanan. Mengaktifkan WebDAV dapat memungkinkan Claude Code memicu permintaan jaringan ke host jarak jauh, melewati sistem izin.


110 Keamanan MCP106 Keamanan MCP

111</h2>107</h2>

112 108 

113Claude Code memungkinkan pengguna untuk mengonfigurasi server Model Context Protocol (MCP). Daftar server MCP yang diizinkan dikonfigurasi dalam kode sumber Anda, sebagai bagian dari pengaturan Claude Code yang diperiksa insinyur ke dalam kontrol sumber.109Anda dapat menghubungkan Claude Code ke server Model Context Protocol (MCP). Server dengan cakupan proyek didefinisikan dalam `.mcp.json`, yang dapat Anda masukkan ke dalam kontrol sumber. Server pada [cakupan lain](/docs/id/mcp#mcp-installation-scopes) dan [konektor claude.ai](/docs/id/mcp#how-connectors-reach-claude-code) dikonfigurasi di luar repositori, dan plugin juga dapat menambahkan server, sehingga meninjau `.mcp.json` tidak menampilkan setiap server yang dapat dimuat oleh suatu sesi. Untuk membatasi server mana yang berjalan di organisasi Anda, lihat [Konfigurasi MCP terkelola](/docs/id/managed-mcp).

114 110 

115Kami mendorong untuk menulis server MCP Anda sendiri atau menggunakan server MCP dari penyedia yang Anda percayai. Anda dapat mengonfigurasi izin Claude Code untuk server MCP. Anthropic meninjau konektor terhadap [kriteria pendaftarannya](https://claude.com/docs/connectors/building/review-criteria) sebelum menambahkannya ke [Direktori Anthropic](https://claude.ai/directory), tetapi tidak melakukan audit keamanan atau mengelola server MCP apa pun.111Kami mendorong untuk menulis server MCP Anda sendiri atau menggunakan server MCP dari penyedia yang Anda percayai. Anda dapat mengonfigurasi izin Claude Code untuk server MCP. Anthropic meninjau konektor terhadap [kriteria pendaftarannya](https://claude.com/docs/connectors/building/review-criteria) sebelum menambahkannya ke [Direktori Anthropic](https://claude.ai/directory), tetapi tidak melakukan audit keamanan atau mengelola server MCP apa pun.

116 112 


129* **Mesin virtual terisolasi**: Setiap sesi cloud berjalan di VM yang terisolasi dan dikelola Anthropic125* **Mesin virtual terisolasi**: Setiap sesi cloud berjalan di VM yang terisolasi dan dikelola Anthropic

130* **Kontrol akses jaringan**: Akses jaringan dibatasi secara default dan dapat dikonfigurasi untuk dinonaktifkan atau hanya mengizinkan domain tertentu126* **Kontrol akses jaringan**: Akses jaringan dibatasi secara default dan dapat dikonfigurasi untuk dinonaktifkan atau hanya mengizinkan domain tertentu

131* **Perlindungan kredensial**: Kredensial GitHub disimpan terenkripsi di server Anthropic dan tidak pernah masuk ke VM sesi. VM menyimpan kredensial berumur pendek yang dibatasi untuk sesi tersebut, dan lalu lintas GitHub melewati [proxy Anthropic](/docs/id/cloud-environments#github-proxy) yang melampirkan kredensial GitHub di sisi server. Lihat [opsi autentikasi GitHub](/docs/id/claude-code-on-the-web#github-authentication-options) untuk cara Anda memberikan akses127* **Perlindungan kredensial**: Kredensial GitHub disimpan terenkripsi di server Anthropic dan tidak pernah masuk ke VM sesi. VM menyimpan kredensial berumur pendek yang dibatasi untuk sesi tersebut, dan lalu lintas GitHub melewati [proxy Anthropic](/docs/id/cloud-environments#github-proxy) yang melampirkan kredensial GitHub di sisi server. Lihat [opsi autentikasi GitHub](/docs/id/claude-code-on-the-web#github-authentication-options) untuk cara Anda memberikan akses

132* **Pembatasan cabang**: Operasi git push dibatasi pada cabang kerja saat ini128* **Pembatasan push**: [Proxy GitHub](/docs/id/cloud-environments#github-proxy) menolak penghapusan branch dan push apa pun selain branch, seperti tag. GitHub menentukan branch mana yang dapat diperbarui oleh sesi dengan menerapkan aturan perlindungan branch dan ruleset repositori Anda pada akses GitHub yang Anda hubungkan. Aturan yang dapat dilewati oleh akses tersebut tidak memblokir push dari sesi

133* **Pencatatan audit**: Semua operasi di sesi cloud dicatat untuk kepatuhan dan tujuan audit129* **Pencatatan audit**: Semua operasi di sesi cloud dicatat untuk kepatuhan dan tujuan audit

134* **Pembersihan otomatis**: VM sesi diklaim kembali setelah periode tidak aktif130* **Pembersihan otomatis**: VM sesi diklaim kembali setelah periode tidak aktif

135* **Penghapusan**: Anda dapat [menghapus sesi](/docs/id/claude-code-on-the-web#delete-sessions) kapan saja. Lihat [Alur data eksekusi cloud](/docs/id/data-usage#cloud-execution-data-flow-and-dependencies) untuk mengetahui apa yang Anthropic simpan untuk sesi cloud131* **Penghapusan**: Anda dapat [menghapus sesi](/docs/id/claude-code-on-the-web#delete-sessions) kapan saja. Lihat [Alur data eksekusi cloud](/docs/id/data-usage#cloud-execution-data-flow-and-dependencies) untuk mengetahui apa yang Anthropic simpan untuk sesi cloud

Details

61 61 

62Jangan tutup atau gunakan kembali file descriptor 3 di wrapper. Mengalihkan stdout dan stderr anak tidak apa-apa.62Jangan tutup atau gunakan kembali file descriptor 3 di wrapper. Mengalihkan stdout dan stderr anak tidak apa-apa.

63 63 

64<h3 id="pass-the-system-prompt-flags-through">

65 Teruskan flag system prompt

66</h3>

67 

68System prompt dan system prompt tambahan yang dikirim bidang kontrol Anthropic untuk sebuah sesi sampai ke wrapper Anda sebagai jalur file, bukan sebagai teks inline. Runner menulis setiap prompt ke file di direktori konfigurasi sesi, `CLAUDE_CONFIG_DIR`, dan meneruskan jalurnya dalam argumen yang diterima wrapper Anda, sebagai [`--system-prompt-file <path>` atau `--append-system-prompt-file <path>`](/docs/id/cli-reference#system-prompt-flags).

69 

70Runner pada Claude Code v2.1.281 atau lebih baru mengirimkan prompt sebagai file. Sebelum v2.1.281, runner meneruskannya sebagai `--system-prompt <text>` dan `--append-system-prompt <text>`.

71 

72Di skrip wrapper atau [hook `command`](#command) Anda, tangani flag ini sebagai berikut:

73 

74* **Teruskan flag tersebut**: akhiri wrapper dengan `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@"`, yang meneruskan flag file bersama setiap argumen lainnya. Jangan hapus atau tulis ulang flag tersebut. Jika sebuah sesi kehilangan flag file prompt, sesi berjalan tanpa instruksi yang dikirim bidang kontrol untuknya.

75* **Pada runner v2.1.281 atau lebih baru, flag file yang Anda tambahkan menggantikan milik server, tidak pernah menambahinya**: setiap flag file prompt hanya menerima satu nilai dan Claude Code mempertahankan kemunculan terakhir, jadi jika Anda menambahkan `--append-system-prompt-file <path>` setelah `"$@"`, isi file Anda menggantikan instruksi tambahan dari server. Untuk menambahkan instruksi di atas instruksi server, letakkan di `CLAUDE.md` pada image runner, yang [disemai runner ke konfigurasi tingkat pengguna setiap sesi](#how-each-session’s-config-is-assembled).

76 

64<h3 id="provision-credentials-scoped-to-the-session-creator">77<h3 id="provision-credentials-scoped-to-the-session-creator">

65 Sediakan kredensial yang dibatasi untuk pembuat sesi78 Sediakan kredensial yang dibatasi untuk pembuat sesi

66</h3>79</h3>


450* **Siapa yang menulisnya**: bidang kontrol mengisinya dari konstanta tetap dalam deployment-nya sendiri, tidak pernah dari input per-sesi atau pihak ketiga.463* **Siapa yang menulisnya**: bidang kontrol mengisinya dari konstanta tetap dalam deployment-nya sendiri, tidak pernah dari input per-sesi atau pihak ketiga.

451* **Apa yang masih mengaturnya**: hook yang dikirimkan melalui `--settings` memasuki konfigurasi hook yang digabungkan biasa, bukan tingkat yang dikelola, jadi pengaturan yang dikelola Anda masih berlaku. `disableAllHooks` menonaktifkannya, dan mereka bukan di antara kategori yang [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) tetap dimuat.464* **Apa yang masih mengaturnya**: hook yang dikirimkan melalui `--settings` memasuki konfigurasi hook yang digabungkan biasa, bukan tingkat yang dikelola, jadi pengaturan yang dikelola Anda masih berlaku. `disableAllHooks` menonaktifkannya, dan mereka bukan di antara kategori yang [`allowManagedHooksOnly`](/docs/id/settings-reference#allowmanagedhooksonly) tetap dimuat.

452 465 

466Di luar sesi [Claude Tag](https://claude.com/docs/claude-tag/overview), sesi dalam lingkungan yang di-host sendiri berjalan dengan [auto memory](/docs/id/memory#auto-memory) nonaktif secara default. Untuk instruksi yang harus terbawa antar sesi, gunakan `CLAUDE.md` di image runner Anda atau di repositori.

467 

468Snapshot runner atas `~/.claude/` host tidak menyertakan direktori `projects/`. Lokasi penyimpanan default auto memory berada di bawah direktori tersebut. Jika Anda meletakkan file memori di sana, runner tidak menanamkannya ke dalam sesi, dan file tersebut tidak mengaktifkan auto memory.

469 

453<h3 id="repository-committed-permission-rules">470<h3 id="repository-committed-permission-rules">

454 Aturan izin yang dikomit repositori471 Aturan izin yang dikomit repositori

455</h3>472</h3>

Details

182 "ask": [182 "ask": [

183 "Bash(git push *)"183 "Bash(git push *)"

184 ],184 ],

185 // Tolak pembacaan file env dan folder secrets oleh alat file dan perintah yang membaca file185 // Tolak pembacaan file env dan folder secrets oleh tool file dan perintah yang membaca file

186 "deny": [186 "deny": [

187 "Read(./.env)",187 "Read(./.env)",

188 "Read(./.env.*)",188 "Read(./.env.*)",


216 "enabledPlugins": {216 "enabledPlugins": {

217 "code-formatter@acme-tools": true217 "code-formatter@acme-tools": true

218 },218 },

219 // Perintah sandbox: direktori build yang dapat ditulis; npm dan example.com pra-diizinkan, host lain masih meminta219 // Perintah sandbox: direktori build yang dapat ditulis; npm dan example.com pra-diizinkan

220 "sandbox": {220 "sandbox": {

221 "enabled": true,221 "enabled": true,

222 "filesystem": {222 "filesystem": {


250* [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) dan [`allowManagedMcpServersOnly`](/docs/id/settings-reference#allowmanagedmcpserversonly) membuat daftar izin izin terkelola dan MCP satu-satunya yang berlaku250* [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) dan [`allowManagedMcpServersOnly`](/docs/id/settings-reference#allowmanagedmcpserversonly) membuat daftar izin izin terkelola dan MCP satu-satunya yang berlaku

251* `allowedMcpServers` menyematkan server MCP berdasarkan URL251* `allowedMcpServers` menyematkan server MCP berdasarkan URL

252* `strictKnownMarketplaces` memungkinkan satu marketplace plugin252* `strictKnownMarketplaces` memungkinkan satu marketplace plugin

253* `sandbox` membuat sandbox perintah dengan daftar izin jaringan tetap dan tanpa retry tanpa sandbox253* `sandbox` membuat sandbox perintah dengan allowlist jaringan tetap dan tanpa retry tanpa sandbox. Kunci `failIfUnavailable`-nya [mencegah Claude Code dimulai di tempat sandbox tidak dapat berjalan](/docs/id/sandboxing#enforce-sandboxing-with-managed-settings)

254* `requiredMinimumVersion` menetapkan versi Claude Code minimum254* `requiredMinimumVersion` menetapkan versi Claude Code minimum

255* `cleanupPeriodDays` mempersingkat retensi transkrip sesi dan data lokal lainnya menjadi tujuh hari255* `cleanupPeriodDays` mempersingkat retensi transkrip sesi dan data lokal lainnya menjadi tujuh hari

256* `companyAnnouncements` menampilkan pesan saat startup256* `companyAnnouncements` menampilkan pesan saat startup

settings-reference.md +385 −352

Details

591 591 

592| Kunci | Deskripsi | Topik | Scope |592| Kunci | Deskripsi | Topik | Scope |

593| :- | :- | :- | :- |593| :- | :- | :- | :- |

594| [`advisorModel`](#advisormodel) | Pilih model mana yang menjawab ketika Claude menggunakan [alat advisor](/docs/id/advisor) | Model dan respons | Any file |594| [`advisorModel`](#advisormodel) | Pilih model mana yang menjawab ketika Claude menggunakan [tool advisor](/docs/id/advisor) | Model dan respons | Any file |

595| [`agent`](#agent) | Mulai setiap sesi sebagai [subagent](/docs/id/sub-agents) bernama dengan prompt, alat, dan modelnya | Agents, sessions, and worktrees | Any file |595| [`agent`](#agent) | Mulai setiap sesi sebagai [subagent](/docs/id/sub-agents) bernama dengan prompt, tool, dan modelnya | Agents, sessions, and worktrees | Any file |

596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Biarkan Claude mengirim [notifikasi push ke ponsel Anda](/docs/id/remote-control#mobile-push-notifications) ketika Claude memutuskan untuk melakukannya | Remote, desktop, and notifications | Any file |596| [`agentPushNotifEnabled`](#agentpushnotifenabled) | Biarkan Claude mengirim [notifikasi push ke ponsel Anda](/docs/id/remote-control#mobile-push-notifications) ketika Claude memutuskan untuk melakukannya | Remote, desktop, and notifications | Any file |

597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Muat [konektor claude.ai](/docs/id/mcp) yang Claude Code ambil sendiri bersama dengan [`managed-mcp.json`](/docs/id/managed-mcp#exclusive-control-with-managed-mcp-json) yang diterapkan | MCP | Managed |597| [`allowAllClaudeAiMcps`](#allowallclaudeaimcps) | Muat [konektor claude.ai](/docs/id/mcp) yang Claude Code ambil sendiri bersama dengan [`managed-mcp.json`](/docs/id/managed-mcp#exclusive-control-with-managed-mcp-json) yang diterapkan | MCP | Managed |

598| [`allowClaudeInChromeWithManagedMcp`](#allowclaudeinchromewithmanagedmcp) | Biarkan server [Claude in Chrome](/docs/id/chrome) bawaan berjalan bersama dengan [`managed-mcp.json`](/docs/id/managed-mcp#exclusive-control-with-managed-mcp-json) yang diterapkan | MCP | Managed |598| [`allowClaudeInChromeWithManagedMcp`](#allowclaudeinchromewithmanagedmcp) | Biarkan server [Claude in Chrome](/docs/id/chrome) bawaan berjalan bersama dengan [`managed-mcp.json`](/docs/id/managed-mcp#exclusive-control-with-managed-mcp-json) yang diterapkan | MCP | Managed |

599| [`allowedChannelPlugins`](#allowedchannelplugins) | Ganti daftar izin default [plugin channel](/docs/id/channels#restrict-which-channel-plugins-can-run) yang dapat mendorong pesan | Plugins and skills | Managed |599| [`allowedChannelPlugins`](#allowedchannelplugins) | Ganti allowlist default [plugin channel](/docs/id/channels#restrict-which-channel-plugins-can-run) yang dapat mendorong pesan | Plugins and skills | Managed |

600| [`allowedHttpHookUrls`](#allowedhttphookurls) | Batasi URL mana yang dapat ditargetkan oleh [HTTP hooks](/docs/id/hooks) | Hooks and automation | Any file |600| [`allowedHttpHookUrls`](#allowedhttphookurls) | Batasi URL mana yang dapat ditargetkan oleh [HTTP hooks](/docs/id/hooks) | Hooks and automation | Any file |

601| [`allowedMcpServers`](#allowedmcpservers) | Daftar izin server [MCP](/docs/id/mcp) mana yang dapat ditambahkan pengguna | MCP | Any file |601| [`allowedMcpServers`](#allowedmcpservers) | Buat allowlist [server MCP](/docs/id/mcp) mana yang dapat ditambahkan pengguna | MCP | Any file |

602| [`allowedProviders`](#allowedproviders) | Batasi [penyedia API](/docs/id/third-party-integrations) mana yang dapat digunakan mesin | Authentication and providers | Managed |602| [`allowedProviders`](#allowedproviders) | Batasi [penyedia API](/docs/id/third-party-integrations) mana yang dapat digunakan mesin | Authentication and providers | Managed |

603| [`allowManagedHooksOnly`](#allowmanagedhooksonly) | Jalankan hanya [hooks](/docs/id/hooks) yang organisasi Anda terapkan | Hooks and automation | Managed |603| [`allowManagedHooksOnly`](#allowmanagedhooksonly) | Jalankan hanya [hooks](/docs/id/hooks) yang organisasi Anda terapkan | Hooks and automation | Managed |

604| [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) | Buat daftar izin [MCP](/docs/id/mcp) yang dikelola menjadi satu-satunya yang berlaku | MCP | Managed |604| [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly) | Buat allowlist [MCP](/docs/id/mcp) terkelola menjadi satu-satunya yang berlaku | MCP | Managed |

605| [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly) | Buat [pengaturan yang dikelola](/docs/id/managed-settings) menjadi satu-satunya sumber pengaturan [aturan izin](/docs/id/permissions#managed-settings) | Permission settings | Managed |605| [`allowManagedPermissionRulesOnly`](#allowmanagedpermissionrulesonly) | Buat [pengaturan terkelola](/docs/id/managed-settings) menjadi satu-satunya sumber pengaturan [aturan izin](/docs/id/permissions#managed-settings) | Permission settings | Managed |

606| [`alwaysThinkingEnabled`](#alwaysthinkingenabled) | Matikan [pemikiran yang diperluas](/docs/id/model-config#extended-thinking) untuk setiap sesi | Model dan respons | Any file |606| [`alwaysThinkingEnabled`](#alwaysthinkingenabled) | Matikan [extended thinking](/docs/id/model-config#extended-thinking) untuk setiap sesi | Model dan respons | Any file |

607| [`apiKeyHelper`](#apikeyhelper) | Hasilkan [kredensial API](/docs/id/authentication#credential-management) dengan perintah Anda sendiri | Authentication and providers | Any file |607| [`apiKeyHelper`](#apikeyhelper) | Hasilkan [kredensial API](/docs/id/authentication#credential-management) dengan perintah Anda sendiri | Authentication and providers | Any file |

608| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Biarkan pertanyaan yang tidak terjawab [lanjut otomatis](/docs/id/tools-reference#question-auto-continue-timeout) setelah waktu idle | Interface and terminal | User or managed |608| [`askUserQuestionTimeout`](#askuserquestiontimeout) | Biarkan pertanyaan yang tidak terjawab [lanjut otomatis](/docs/id/tools-reference#question-auto-continue-timeout) setelah waktu idle | Interface and terminal | User or managed |

609| [`appendPlugins`](#appendplugins) | Jalankan [mods](/docs/id/plugins/mods/admin) organisasi Anda setelah setiap mod yang dipasang pengguna | Plugins and skills | User or managed |609| [`appendPlugins`](#appendplugins) | Jalankan [mods](/docs/id/plugins/mods/admin) organisasi Anda setelah setiap mod yang dipasang pengguna | Plugins and skills | User or managed |


611| [`attribution.commit`](#attribution-commit) | Ubah atau sembunyikan trailer yang Claude Code tambahkan ke commit | Git and attribution | Any file |611| [`attribution.commit`](#attribution-commit) | Ubah atau sembunyikan trailer yang Claude Code tambahkan ke commit | Git and attribution | Any file |

612| [`attribution.pr`](#attribution-pr) | Ubah atau sembunyikan baris atribusi dalam deskripsi pull request | Git and attribution | Any file |612| [`attribution.pr`](#attribution-pr) | Ubah atau sembunyikan baris atribusi dalam deskripsi pull request | Git and attribution | Any file |

613| [`attribution.sessionUrl`](#attribution-sessionurl) | Hilangkan tautan sesi claude.ai dari commit [cloud](/docs/id/claude-code-on-the-web) dan [Remote Control](/docs/id/remote-control) | Git and attribution | Any file |613| [`attribution.sessionUrl`](#attribution-sessionurl) | Hilangkan tautan sesi claude.ai dari commit [cloud](/docs/id/claude-code-on-the-web) dan [Remote Control](/docs/id/remote-control) | Git and attribution | Any file |

614| [`autoCompactEnabled`](#autocompactenabled) | Matikan atau nyalakan [pemadatan otomatis](/docs/id/context-window) | Memory and context | Any file |614| [`autoCompactEnabled`](#autocompactenabled) | Matikan atau nyalakan [compaction otomatis](/docs/id/context-window) | Memory and context | Any file |

615| [`autoCompactWindow`](#autocompactwindow) | Atur seberapa penuh konteks sebelum Claude Code [memadatkan](/docs/id/context-window) | Memory and context | Any file |615| [`autoCompactWindow`](#autocompactwindow) | Atur seberapa penuh konteks sebelum Claude Code [melakukan compaction](/docs/id/context-window) | Memory and context | Any file |

616| [`autoConnectIde`](#autoconnectide) | Terhubung ke [VS Code](/docs/id/vs-code) atau [JetBrains](/docs/id/jetbrains#from-external-terminals) IDE yang sedang berjalan secara otomatis dari terminal eksternal | Global config settings | Global config |616| [`autoConnectIde`](#autoconnectide) | Terhubung ke [VS Code](/docs/id/vs-code) atau [JetBrains](/docs/id/jetbrains#from-external-terminals) IDE yang sedang berjalan secara otomatis dari terminal eksternal | Global config settings | Global config |

617| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Tunggu di sesi terbuka dan [lanjutkan tugas secara otomatis](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset) setelah batas penggunaan claude.ai direset | Interface and terminal | User or managed |617| [`autoContinueAtUsageLimit`](#autocontinueatusagelimit) | Tunggu di sesi terbuka dan [lanjutkan tugas secara otomatis](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset) setelah batas penggunaan claude.ai direset | Interface and terminal | User or managed |

618| [`autoInstallIdeExtension`](#autoinstallideextension) | Matikan instalasi otomatis [ekstensi IDE](/docs/id/vs-code#install-the-extension) dari terminal VS Code | Global config settings | Global config |618| [`autoInstallIdeExtension`](#autoinstallideextension) | Matikan instalasi otomatis [ekstensi IDE](/docs/id/vs-code#install-the-extension) dari terminal VS Code | Global config settings | Global config |

619| [`autoMemoryDirectory`](#automemorydirectory) | Simpan [memori otomatis](/docs/id/memory#auto-memory) di direktori pilihan Anda | Memory and context | Any file |619| [`autoMemoryDirectory`](#automemorydirectory) | Simpan [auto memory](/docs/id/memory#auto-memory) di direktori pilihan Anda | Memory and context | Any file |

620| [`autoMemoryEnabled`](#automemoryenabled) | Matikan atau nyalakan [memori otomatis](/docs/id/memory#auto-memory) | Memory and context | Any file |620| [`autoMemoryEnabled`](#automemoryenabled) | Matikan atau nyalakan [auto memory](/docs/id/memory#auto-memory) | Memory and context | Any file |

621| [`autoMode`](#automode) | Tambahkan aturan izin dan tolak Anda sendiri ke pengklasifikasi [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) | Permission settings | User or managed |621| [`autoMode`](#automode) | Tambahkan aturan izinkan dan tolak Anda sendiri ke pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) | Permission settings | User or managed |

622| [`autoMode.classifyAllShell`](#automode-classifyallshell) | Kirim setiap perintah shell melalui pengklasifikasi [mode otomatis](/docs/id/permission-modes#what-the-classifier-blocks-by-default), bahkan yang cocok dengan aturan izin sempit | Permission settings | User or managed |622| [`autoMode.classifyAllShell`](#automode-classifyallshell) | Kirim setiap perintah shell melalui [pengklasifikasi auto mode](/docs/id/permission-modes#what-the-classifier-blocks-by-default), bahkan yang cocok dengan aturan izinkan yang sempit | Permission settings | User or managed |

623| [`autoScrollEnabled`](#autoscrollenabled) | [Ikuti output baru](/docs/id/fullscreen#auto-follow) ke bawah dalam rendering fullscreen | Interface and terminal | Any file |623| [`autoScrollEnabled`](#autoscrollenabled) | [Ikuti output baru](/docs/id/fullscreen#auto-follow) ke bawah dalam rendering fullscreen | Interface and terminal | Any file |

624| [`autoUpdatesChannel`](#autoupdateschannel) | Ikuti [saluran rilis](/docs/id/setup#configure-release-channel) stabil daripada terbaru | Updates and versioning | Any file |624| [`autoUpdatesChannel`](#autoupdateschannel) | Ikuti [saluran rilis](/docs/id/setup#configure-release-channel) stabil daripada terbaru | Updates and versioning | Any file |

625| [`availableModels`](#availablemodels) | [Batasi model mana](/docs/id/model-config#restrict-model-selection) yang dapat dipilih orang | Model dan respons | Any file |625| [`availableModels`](#availablemodels) | [Batasi model mana](/docs/id/model-config#restrict-model-selection) yang dapat dipilih orang | Model dan respons | Any file |


628| [`awsAuthRefresh`](#awsauthrefresh) | Segarkan [kredensial Bedrock](/docs/id/amazon-bedrock#advanced-credential-configuration) yang kedaluwarsa di `.aws` dengan perintah Anda sendiri | Authentication and providers | Any file |628| [`awsAuthRefresh`](#awsauthrefresh) | Segarkan [kredensial Bedrock](/docs/id/amazon-bedrock#advanced-credential-configuration) yang kedaluwarsa di `.aws` dengan perintah Anda sendiri | Authentication and providers | Any file |

629| [`awsCredentialExport`](#awscredentialexport) | Sediakan [kredensial Bedrock](/docs/id/amazon-bedrock#advanced-credential-configuration) sebagai JSON dari perintah Anda sendiri | Authentication and providers | Any file |629| [`awsCredentialExport`](#awscredentialexport) | Sediakan [kredensial Bedrock](/docs/id/amazon-bedrock#advanced-credential-configuration) sebagai JSON dari perintah Anda sendiri | Authentication and providers | Any file |

630| [`axScreenReader`](#axscreenreader) | Render [output yang ramah pembaca layar](/docs/id/accessibility) | Interface and terminal | Any file |630| [`axScreenReader`](#axscreenreader) | Render [output yang ramah pembaca layar](/docs/id/accessibility) | Interface and terminal | Any file |

631| [`bashEditDiffEnabled`](#basheditdiffenabled) | Catat [file yang diubah perintah Bash](/docs/id/hooks#bash) dalam setiap mode izin | Interface and terminal | User or managed |631| [`bashEditDiffEnabled`](#basheditdiffenabled) | Catat [file yang berubah saat perintah Bash berjalan](/docs/id/hooks#bash) dalam setiap mode izin | Interface and terminal | User or managed |

632| [`bashOutputMaxChars`](#bashoutputmaxchars) | Atur berapa banyak [output](/docs/id/tools-reference#output-limits) perintah yang berhasil yang Claude terima secara inline | Memory and context | Any file |632| [`bashOutputMaxChars`](#bashoutputmaxchars) | Atur berapa banyak [output](/docs/id/tools-reference#output-limits) perintah yang berhasil yang Claude terima secara inline | Memory and context | Any file |

633| [`blockedMarketplaces`](#blockedmarketplaces) | Blokir sumber [marketplace plugin](/docs/id/plugins/overview) untuk organisasi Anda | Plugins and skills | Managed |633| [`blockedMarketplaces`](#blockedmarketplaces) | Blokir sumber [marketplace plugin](/docs/id/plugins/overview) untuk organisasi Anda | Plugins and skills | Managed |

634| [`browserExternalPageTools`](#browserexternalpagetools) | Tetap tidak aktifkan alat Claude di halaman eksternal dalam pane Browser [desktop](/docs/id/desktop) | Tools | Managed |634| [`browserExternalPageTools`](#browserexternalpagetools) | Jauhkan tool Claude dari halaman eksternal dalam pane Browser [desktop](/docs/id/desktop) | Tools | Managed |

635| [`channelsEnabled`](#channelsenabled) | Izinkan [channel](/docs/id/channels#enable-channels-for-your-organization) untuk organisasi Anda | Plugins and skills | Managed |635| [`channelsEnabled`](#channelsenabled) | Izinkan [channel](/docs/id/channels#enable-channels-for-your-organization) untuk organisasi Anda | Plugins and skills | Managed |

636| [`claudeInChromeDefaultEnabled`](#claudeinchromedefaultenabled) | Nyalakan [integrasi Chrome](/docs/id/chrome) dalam setiap sesi CLI interaktif tanpa melewatkan `--chrome` | Global config settings | Global config |636| [`claudeInChromeDefaultEnabled`](#claudeinchromedefaultenabled) | Nyalakan [integrasi Chrome](/docs/id/chrome) dalam setiap sesi CLI interaktif tanpa melewatkan `--chrome` | Global config settings | Global config |

637| [`claudeMd`](#claudemd) | Injeksikan instruksi [CLAUDE.md](/docs/id/memory#deploy-organization-wide-claude-md) di seluruh organisasi dari pengaturan yang dikelola | Memory and context | Managed |637| [`claudeMd`](#claudemd) | Injeksikan instruksi [CLAUDE.md](/docs/id/memory#deploy-organization-wide-claude-md) di seluruh organisasi dari pengaturan terkelola | Memory and context | Managed |

638| [`claudeMdExcludes`](#claudemdexcludes) | Lewati file [CLAUDE.md](/docs/id/memory#exclude-specific-claude-md-files) tertentu ketika memori dimuat | Memory and context | Any file |638| [`claudeMdExcludes`](#claudemdexcludes) | Lewati file [CLAUDE.md](/docs/id/memory#exclude-specific-claude-md-files) tertentu ketika memori dimuat | Memory and context | Any file |

639| [`cleanupPeriodDays`](#cleanupperioddays) | Pilih berapa hari Claude Code menyimpan [transkrip](/docs/id/data-usage#data-retention) sebelum menghapusnya | Privacy and telemetry | Any file |639| [`cleanupPeriodDays`](#cleanupperioddays) | Pilih berapa hari Claude Code menyimpan [transkrip](/docs/id/data-usage#data-retention) sebelum menghapusnya | Privacy and telemetry | Any file |

640| [`companyAnnouncements`](#companyannouncements) | Tampilkan pengumuman organisasi Anda saat startup | Interface and terminal | Any file |640| [`companyAnnouncements`](#companyannouncements) | Tampilkan pengumuman organisasi Anda saat startup | Interface and terminal | Any file |


643| [`crossSessionInbound`](#crosssessioninbound) | Pilih apakah Claude Code mengirimkan [pesan dari sesi lain Anda](/docs/id/cross-session-messaging#control-inbound-messages), menampilkan pemberitahuan tanpa mengirimkannya, atau menolaknya | Agents, sessions, and worktrees | Any file |643| [`crossSessionInbound`](#crosssessioninbound) | Pilih apakah Claude Code mengirimkan [pesan dari sesi lain Anda](/docs/id/cross-session-messaging#control-inbound-messages), menampilkan pemberitahuan tanpa mengirimkannya, atau menolaknya | Agents, sessions, and worktrees | Any file |

644| [`defaultShell`](#defaultshell) | Pilih apakah Bash atau PowerShell menjalankan perintah shell yang Anda ketik dengan awalan [`!`](/docs/id/interactive-mode#shell-mode-with-prefix) | Interface and terminal | Any file |644| [`defaultShell`](#defaultshell) | Pilih apakah Bash atau PowerShell menjalankan perintah shell yang Anda ketik dengan awalan [`!`](/docs/id/interactive-mode#shell-mode-with-prefix) | Interface and terminal | Any file |

645| [`defaultToAgentsView`](#defaulttoagentsview) | Buka [tampilan agent](/docs/id/agent-view) daripada percakapan baru ketika Anda menjalankan `claude` tanpa argumen | Global config settings | Global config |645| [`defaultToAgentsView`](#defaulttoagentsview) | Buka [tampilan agent](/docs/id/agent-view) daripada percakapan baru ketika Anda menjalankan `claude` tanpa argumen | Global config settings | Global config |

646| [`deniedMcpServers`](#deniedmcpservers) | Blokir server [MCP](/docs/id/mcp) tertentu berdasarkan URL, perintah, atau nama | MCP | Any file |646| [`deniedMcpServers`](#deniedmcpservers) | Blokir [server MCP](/docs/id/mcp) tertentu berdasarkan URL, perintah, atau nama | MCP | Any file |

647| [`deniedModels`](#deniedmodels) | [Blokir model tertentu](/docs/id/model-config#block-specific-models-or-versions), bahkan yang `availableModels` izinkan | Model dan respons | Managed |647| [`deniedModels`](#deniedmodels) | [Blokir model tertentu](/docs/id/model-config#block-specific-models-or-versions), bahkan yang `availableModels` izinkan | Model dan respons | Managed |

648| [`desktopSessionCleanupPeriodDays`](#desktopsessioncleanupperioddays) | Atur batas usia dalam hari untuk [transkrip Claude Desktop dan Cowork](/docs/id/claude-directory#cleaned-up-automatically) | Privacy and telemetry | User or managed |648| [`desktopSessionCleanupPeriodDays`](#desktopsessioncleanupperioddays) | Atur batas usia dalam hari untuk [transkrip Claude Desktop dan Cowork](/docs/id/claude-directory#cleaned-up-automatically) | Privacy and telemetry | User or managed |

649| [`dialogExpiry`](#dialogexpiry) | Atur berapa lama Claude Code menunggu [Remote Control](/docs/id/remote-control) atau host SDK menjawab dialog yang diteruskan sebelum membatalkan dialog | Interface and terminal | User or managed |649| [`dialogExpiry`](#dialogexpiry) | Atur berapa lama Claude Code menunggu [Remote Control](/docs/id/remote-control) atau host SDK menjawab dialog yang diteruskan sebelum membatalkan dialog | Interface and terminal | User or managed |

650| [`diffTool`](#difftool) | Pilih apakah perubahan file yang diusulkan Claude terbuka di penampil diff [VS Code](/docs/id/vs-code) atau [JetBrains](/docs/id/jetbrains#features) atau tetap di terminal | Global config settings | Global config |650| [`diffTool`](#difftool) | Pilih apakah perubahan file yang diusulkan Claude terbuka di penampil diff [VS Code](/docs/id/vs-code) atau [JetBrains](/docs/id/jetbrains#features) atau tetap di terminal | Global config settings | Global config |

651| [`disableAgentView`](#disableagentview) | Matikan agen latar belakang dan [tampilan agent](/docs/id/agent-view) | Agents, sessions, and worktrees | Any file |651| [`disableAgentView`](#disableagentview) | Matikan agent latar belakang dan [tampilan agent](/docs/id/agent-view) | Agents, sessions, and worktrees | Any file |

652| [`disableAllHooks`](#disableallhooks) | Matikan [hooks](/docs/id/hooks), [baris status](/docs/id/statusline) kustom, dan perintah saran file [`@`](/docs/id/interactive-mode#quick-commands) kustom sekaligus | Hooks and automation | Any file |652| [`disableAllHooks`](#disableallhooks) | Matikan [hooks](/docs/id/hooks), [baris status](/docs/id/statusline) kustom, dan perintah saran file [`@`](/docs/id/interactive-mode#quick-commands) kustom sekaligus | Hooks and automation | Any file |

653| [`disableArtifact`](#disableartifact) | Usang; gunakan `enableArtifact` untuk mematikan [alat Artifact](/docs/id/artifacts) | Remote, desktop, and notifications | Any file |653| [`disableArtifact`](#disableartifact) | Deprecated; gunakan `enableArtifact` untuk mematikan [tool Artifact](/docs/id/artifacts) | Remote, desktop, and notifications | Any file |

654| [`disableAutoMode`](#disableautomode) | Hapus [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) dari siklus mode izin | Permission settings | Any file |654| [`disableAutoMode`](#disableautomode) | Hapus [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) dari siklus mode izin | Permission settings | Any file |

655| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Batasi pane Browser [desktop](/docs/id/desktop) ke localhost untuk orang dan Claude | Tools | Managed |655| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Batasi pane Browser [desktop](/docs/id/desktop) ke localhost untuk orang dan Claude | Tools | Managed |

656| [`disableBundledSkills`](#disablebundledskills) | Matikan [skill](/docs/id/skills#bundled-skills) dan [workflow](/docs/id/workflows) yang disertakan dengan Claude Code | Plugins and skills | Any file |656| [`disableBundledSkills`](#disablebundledskills) | Matikan [skill](/docs/id/skills#bundled-skills) dan [workflow](/docs/id/workflows) yang disertakan dengan Claude Code | Plugins and skills | Any file |

657| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Matikan [konektor claude.ai](/docs/id/mcp#disable-claude-ai-connectors) sehingga Claude Code tidak mengambilnya | MCP | Any file |657| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Matikan [konektor claude.ai](/docs/id/mcp#disable-claude-ai-connectors) sehingga Claude Code tidak mengambilnya | MCP | Any file |


659| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Hentikan Claude Code dari mendaftarkan penanganan [`claude-cli://`](/docs/id/deep-links) | Remote, desktop, and notifications | Any file |659| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Hentikan Claude Code dari mendaftarkan penanganan [`claude-cli://`](/docs/id/deep-links) | Remote, desktop, and notifications | Any file |

660| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Matikan sesi [Desktop Code](/docs/id/desktop#local-sessions-on-managed-devices) yang berjalan di perangkat, meninggalkan SSH untuk host lain dan cloud | Remote, desktop, and notifications | Managed |660| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Matikan sesi [Desktop Code](/docs/id/desktop#local-sessions-on-managed-devices) yang berjalan di perangkat, meninggalkan SSH untuk host lain dan cloud | Remote, desktop, and notifications | Managed |

661| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Tolak server tertentu dari [`.mcp.json`](/docs/id/mcp#project-scope) proyek | MCP | Any file |661| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Tolak server tertentu dari [`.mcp.json`](/docs/id/mcp#project-scope) proyek | MCP | Any file |

662| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Blokir alat Claude dalam pane [desktop](/docs/id/desktop) iOS Simulator | Tools | Managed |662| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Blokir tool Claude dalam pane iOS Simulator [desktop](/docs/id/desktop) | Tools | Managed |

663| [`disableRemoteControl`](#disableremotecontrol) | Matikan [Remote Control](/docs/id/remote-control) di mana pun dapat dimulai | Remote, desktop, and notifications | Any file |663| [`disableRemoteControl`](#disableremotecontrol) | Matikan [Remote Control](/docs/id/remote-control) di mana pun dapat dimulai | Remote, desktop, and notifications | Any file |

664| [`disableSideloadFlags`](#disablesideloadflags) | Tolak flag CLI yang sideload [plugin](/docs/id/plugins/overview), [subagent](/docs/id/sub-agents), dan [server MCP](/docs/id/mcp) | Enterprise and managed settings | Managed |664| [`disableSideloadFlags`](#disablesideloadflags) | Tolak flag CLI yang sideload [plugin](/docs/id/plugins/overview), [subagent](/docs/id/sub-agents), dan [server MCP](/docs/id/mcp) | Enterprise and managed settings | Managed |

665| [`disableSkillShellExecution`](#disableskillshellexecution) | Hentikan [skill](/docs/id/skills) dan perintah kustom dari menjalankan shell inline | Plugins and skills | Any file |665| [`disableSkillShellExecution`](#disableskillshellexecution) | Hentikan [skill](/docs/id/skills) dan perintah kustom dari menjalankan shell inline | Plugins and skills | Any file |

666| [`disableWorkflows`](#disableworkflows) | Matikan [workflow dinamis](/docs/id/workflows) untuk semua orang; gunakan `enableWorkflows` untuk diri sendiri | Hooks and automation | Any file |666| [`disableWorkflows`](#disableworkflows) | Matikan [workflow dinamis](/docs/id/workflows) untuk semua orang; gunakan `enableWorkflows` untuk diri sendiri | Hooks and automation | Any file |

667| [`editorMode`](#editormode) | Gunakan [pintasan keyboard vim](/docs/id/interactive-mode#vim-editor-mode) dalam prompt input | Interface and terminal | Any file |667| [`editorMode`](#editormode) | Gunakan [pintasan keyboard vim](/docs/id/interactive-mode#vim-editor-mode) dalam prompt input | Interface and terminal | Any file |

668| [`effortLevel`](#effortlevel) | Atur [tingkat usaha](/docs/id/model-config#adjust-effort-level) default untuk model tanpa tingkat yang disimpan | Model dan respons | Any file |668| [`effortLevel`](#effortlevel) | Atur [tingkat effort](/docs/id/model-config#adjust-effort-level) default untuk model tanpa tingkat yang disimpan | Model dan respons | Any file |

669| [`emojiCompletionEnabled`](#emojicompletionenabled) | Matikan saran dan penggantian emoji [`:shortcode:`](/docs/id/interactive-mode#emoji-shortcodes) dalam input prompt | Interface and terminal | Any file |669| [`emojiCompletionEnabled`](#emojicompletionenabled) | Matikan saran dan penggantian emoji [`:shortcode:`](/docs/id/interactive-mode#emoji-shortcodes) dalam input prompt | Interface and terminal | Any file |

670| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Setujui setiap server dalam file [`.mcp.json`](/docs/id/mcp#project-server-approvals-and-workspace-trust) proyek tanpa prompt | MCP | Any file |670| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Setujui setiap server dalam file [`.mcp.json`](/docs/id/mcp#project-server-approvals-and-workspace-trust) proyek tanpa prompt | MCP | Any file |

671| [`enableArtifact`](#enableartifact) | Matikan [alat Artifact](/docs/id/artifacts) dengan `false` di file mana pun; tidak ada file yang dapat menghidupkannya kembali | Remote, desktop, and notifications | Any file |671| [`enableArtifact`](#enableartifact) | Matikan [tool Artifact](/docs/id/artifacts) dengan `false` di file mana pun; tidak ada file yang dapat menghidupkannya kembali | Remote, desktop, and notifications | Any file |

672| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Setujui server tertentu dari [`.mcp.json`](/docs/id/mcp#project-server-approvals-and-workspace-trust) proyek | MCP | Any file |672| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Setujui server tertentu dari [`.mcp.json`](/docs/id/mcp#project-server-approvals-and-workspace-trust) proyek | MCP | Any file |

673| [`enabledPlugins`](#enabledplugins) | Nyalakan atau matikan [plugin](/docs/id/plugins/overview) individual per scope | Plugins and skills | Any file |673| [`enabledPlugins`](#enabledplugins) | Nyalakan atau matikan [plugin](/docs/id/plugins/overview) individual per cakupan | Plugins and skills | Any file |

674| [`enableWorkflows`](#enableworkflows) | Nyalakan atau matikan [workflow dinamis](/docs/id/workflows) terhadap default rencana Anda | Hooks and automation | Any file |674| [`enableWorkflows`](#enableworkflows) | Nyalakan atau matikan [workflow dinamis](/docs/id/workflows) terhadap default paket Anda | Hooks and automation | Any file |

675| [`enforceAvailableModels`](#enforceavailablemodels) | Jaga pilihan Default [`/model`](/docs/id/model-config#enforce-the-allowlist-for-the-default-model) tetap dalam daftar izin `availableModels` Anda | Model dan respons | Any file |675| [`enforceAvailableModels`](#enforceavailablemodels) | Jaga [pilihan Default `/model`](/docs/id/model-config#enforce-the-allowlist-for-the-default-model) tetap dalam allowlist `availableModels` Anda | Model dan respons | Any file |

676| [`env`](#env) | Atur [variabel lingkungan](/docs/id/env-vars#in-settings-files) untuk setiap sesi dan subproses-nya | Memory and context | Any file |676| [`env`](#env) | Atur [environment variable](/docs/id/env-vars#in-settings-files) untuk setiap sesi dan subproses-nya | Memory and context | Any file |

677| [`externalEditorContext`](#externaleditorcontext) | Tampilkan respons terakhir Claude sebagai komentar ketika Anda menekan [Ctrl+G](/docs/id/interactive-mode#general-controls) untuk mengedit | Global config settings | Global config |677| [`externalEditorContext`](#externaleditorcontext) | Tampilkan respons terakhir Claude sebagai komentar ketika Anda menekan [Ctrl+G](/docs/id/interactive-mode#general-controls) untuk mengedit | Global config settings | Global config |

678| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Daftarkan [marketplace](/docs/id/plugins/overview) untuk repositori atau organisasi | Plugins and skills | Any file |678| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Daftarkan [marketplace](/docs/id/plugins/overview) untuk repositori atau organisasi | Plugins and skills | Any file |

679| [`fallbackModel`](#fallbackmodel) | Beri nama [model cadangan](/docs/id/model-config#fallback-model-chains) untuk ketika model utama kelebihan beban | Model dan respons | Any file |679| [`fallbackModel`](#fallbackmodel) | Beri nama [model cadangan](/docs/id/model-config#fallback-model-chains) untuk ketika model utama kelebihan beban | Model dan respons | Any file |

680| [`fastMode`](#fastmode) | Nyalakan [mode cepat](/docs/id/fast-mode) untuk sesi tempat tersedia | Model dan respons | Any file |680| [`fastMode`](#fastmode) | Nyalakan [fast mode](/docs/id/fast-mode) untuk sesi tempat fitur tersebut tersedia | Model dan respons | Any file |

681| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Perlukan orang untuk menghidupkan [mode cepat](/docs/id/fast-mode) setiap sesi | Model dan respons | Any file |681| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Wajibkan orang untuk menyalakan [fast mode](/docs/id/fast-mode) setiap sesi | Model dan respons | Any file |

682| [`feedbackDrafts`](#feedbackdrafts) | Kontrol apakah Claude mengantre [draft umpan balik](/docs/id/tools-reference#sendfeedback-tool-behavior) untuk Anda tinjau | Privacy and telemetry | User or managed |682| [`feedbackDrafts`](#feedbackdrafts) | Kontrol apakah Claude mengantre [draft umpan balik](/docs/id/tools-reference#sendfeedback-tool-behavior) untuk Anda tinjau | Privacy and telemetry | User or managed |

683| [`feedbackSurveyRate`](#feedbacksurveyrate) | Ubah seberapa sering [survei kualitas sesi](/docs/id/data-usage#session-quality-surveys) muncul | Privacy and telemetry | Any file |683| [`feedbackSurveyRate`](#feedbacksurveyrate) | Ubah seberapa sering [survei kualitas sesi](/docs/id/data-usage#session-quality-surveys) muncul | Privacy and telemetry | Any file |

684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Matikan atau nyalakan snapshot file yang [`/rewind`](/docs/id/checkpointing) pulihkan | Memory and context | Any file |684| [`fileCheckpointingEnabled`](#filecheckpointingenabled) | Matikan atau nyalakan snapshot file yang [`/rewind`](/docs/id/checkpointing) pulihkan | Memory and context | Any file |

685| [`fileSuggestion`](#filesuggestion) | Sediakan pelengkapan otomatis file [`@`](/docs/id/interactive-mode#quick-commands) dari perintah Anda sendiri | Interface and terminal | Any file |685| [`fileSuggestion`](#filesuggestion) | Sediakan pelengkapan otomatis file [`@`](/docs/id/interactive-mode#quick-commands) dari perintah Anda sendiri | Interface and terminal | Any file |

686| [`footerLinksRegexes`](#footerlinksregexes) | Buat ID masalah atau tinjauan dalam output menjadi [tautan yang dapat diklik](/docs/id/statusline#clickable-links) di bawah kotak input | Interface and terminal | User or managed |686| [`footerLinksRegexes`](#footerlinksregexes) | Buat ID masalah atau tinjauan dalam output menjadi [tautan yang dapat diklik](/docs/id/statusline#clickable-links) di bawah kotak input | Interface and terminal | User or managed |

687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Atur [URL gateway](/docs/id/claude-apps-gateway#set-the-gateway-url) yang layar login terhubung | Authentication and providers | Managed |687| [`forceLoginGatewayUrl`](#forcelogingatewayurl) | Atur [URL gateway](/docs/id/claude-apps-gateway#set-the-gateway-url) yang dihubungi layar login | Authentication and providers | Managed |

688| [`forceLoginMethod`](#forceloginmethod) | [Batasi login](/docs/id/authentication#restrict-login-to-your-organization) ke claude.ai, Claude Console, atau [gateway cloud](/docs/id/claude-apps-gateway) | Authentication and providers | Any file |688| [`forceLoginMethod`](#forceloginmethod) | [Batasi login](/docs/id/authentication#restrict-login-to-your-organization) ke claude.ai, Claude Console, atau [gateway cloud](/docs/id/claude-apps-gateway) | Authentication and providers | Any file |

689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Pin login claude.ai ke organisasi Anda](/docs/id/authentication#restrict-login-to-your-organization); hanya sumber yang dikelola yang memberlakukannya | Authentication and providers | Any file |689| [`forceLoginOrgUUID`](#forceloginorguuid) | [Pin login claude.ai ke organisasi Anda](/docs/id/authentication#restrict-login-to-your-organization); hanya sumber terkelola yang memberlakukannya | Authentication and providers | Any file |

690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Blokir startup hingga [pengaturan yang dikelola server](/docs/id/server-managed-settings) segar diambil | Enterprise and managed settings | Managed |690| [`forceRemoteSettingsRefresh`](#forceremotesettingsrefresh) | Blokir startup hingga [pengaturan yang dikelola server](/docs/id/server-managed-settings) selesai diambil ulang | Enterprise and managed settings | Managed |

691| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | Biarkan `/login` menjangkau [gateway cloud](/docs/id/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) pada ruang IPv4 publik yang organisasi Anda gunakan secara internal | Authentication and providers | Managed |691| [`gatewayInternalNetworks`](#gatewayinternalnetworks) | Biarkan `/login` menjangkau [gateway cloud](/docs/id/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) pada ruang IPv4 publik yang organisasi Anda gunakan secara internal | Authentication and providers | Managed |

692| [`gcpAuthRefresh`](#gcpauthrefresh) | Segarkan [kredensial Google Cloud](/docs/id/google-vertex-ai#advanced-credential-configuration) dengan perintah Anda sendiri | Authentication and providers | Any file |692| [`gcpAuthRefresh`](#gcpauthrefresh) | Segarkan [kredensial Google Cloud](/docs/id/google-vertex-ai#advanced-credential-configuration) dengan perintah Anda sendiri | Authentication and providers | Any file |

693| [`hooks`](#hooks) | Jalankan perintah Anda sendiri sebagai [hooks](/docs/id/hooks) pada titik dalam siklus hidup Claude Code | Hooks and automation | Any file |693| [`hooks`](#hooks) | Jalankan perintah Anda sendiri sebagai [hooks](/docs/id/hooks) pada titik dalam siklus hidup Claude Code | Hooks and automation | Any file |

694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Batasi variabel env mana yang dapat dimasukkan [HTTP hooks](/docs/id/hooks) ke header | Hooks and automation | Any file |694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Batasi variabel env mana yang dapat dimasukkan [HTTP hooks](/docs/id/hooks) ke header | Hooks and automation | Any file |

695| [`includeCoAuthoredBy`](#includecoauthoredby) | Usang; gunakan `attribution` untuk menyembunyikan atau mengubah atribusi commit dan PR | Git and attribution | Any file |695| [`includeCoAuthoredBy`](#includecoauthoredby) | Deprecated; gunakan `attribution` untuk menyembunyikan atau mengubah atribusi commit dan PR | Git and attribution | Any file |

696| [`includeGitInstructions`](#includegitinstructions) | Hapus instruksi commit dan PR bawaan dari konteks Claude | Git and attribution | Any file |696| [`includeGitInstructions`](#includegitinstructions) | Hapus instruksi commit dan PR bawaan dari konteks Claude | Git and attribution | Any file |

697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Dapatkan [notifikasi push](/docs/id/remote-control#mobile-push-notifications) ketika Claude menunggu Anda | Remote, desktop, and notifications | Any file |697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Dapatkan [notifikasi push](/docs/id/remote-control#mobile-push-notifications) ketika Claude menunggu Anda | Remote, desktop, and notifications | Any file |

698| [`isolatePeerMachines`](#isolatepeermachines) | Tanyakan Anda sebelum Claude [mengirim pesan ke salah satu sesi Anda di mesin lain](/docs/id/cross-session-messaging#require-approval-for-cross-machine-messages) | Agents, sessions, and worktrees | Any file |698| [`isolatePeerMachines`](#isolatepeermachines) | Tanyakan Anda sebelum Claude [mengirim pesan ke salah satu sesi Anda di mesin lain](/docs/id/cross-session-messaging#require-approval-for-cross-machine-messages) | Agents, sessions, and worktrees | Any file |

699| [`keybindingFlavor`](#keybindingflavor) | Usang dan tidak berpengaruh; pintasan pengeditan kata selalu [mengikuti konvensi readline](/docs/id/interactive-mode#make-ctrl-w-delete-back-to-whitespace) | Interface and terminal | Any file |699| [`keybindingFlavor`](#keybindingflavor) | Deprecated dan tidak berpengaruh; pintasan pengeditan kata selalu [mengikuti konvensi readline](/docs/id/interactive-mode#make-ctrl-w-delete-back-to-whitespace) | Interface and terminal | Any file |

700| [`language`](#language) | Biarkan Claude merespons dalam bahasa selain Inggris | Model dan respons | Any file |700| [`language`](#language) | Biarkan Claude merespons dalam bahasa selain Inggris | Model dan respons | Any file |

701| [`leftArrowOpensAgents`](#leftarrowopensagents) | Matikan pintasan `←` yang [menempatkan sesi di latar belakang dan membuka tampilan agent](/docs/id/agent-view#switch-sessions-without-leaving-the-terminal) | Global config settings | Global config |701| [`leftArrowOpensAgents`](#leftarrowopensagents) | Matikan pintasan `←` yang [menempatkan sesi di latar belakang dan membuka tampilan agent](/docs/id/agent-view#switch-sessions-without-leaving-the-terminal) | Global config settings | Global config |

702| [`managedMcpServers`](#managedmcpservers) | Sediakan server [MCP](/docs/id/managed-mcp#provide-servers-through-managed-settings) jarak jauh kepada setiap pengguna bersama dengan yang mereka tambahkan | MCP | Managed |702| [`managedMcpServers`](#managedmcpservers) | Sediakan [server MCP](/docs/id/managed-mcp#provide-servers-through-managed-settings) jarak jauh kepada setiap pengguna bersama dengan yang mereka tambahkan | MCP | Managed |

703| [`managedSourcesBehavior`](#managedsourcesbehavior) | Komposisi setiap [sumber yang dikelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) yang Anda terapkan daripada menggunakan satu-satunya prioritas tertinggi | Enterprise and managed settings | Managed |703| [`managedSourcesBehavior`](#managedsourcesbehavior) | Gabungkan setiap [sumber terkelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) yang Anda terapkan daripada hanya menggunakan sumber dengan prioritas tertinggi | Enterprise and managed settings | Managed |

704| [`maxEffortLevel`](#maxeffortlevel) | Batasi [tingkat usaha](/docs/id/model-config#adjust-effort-level) untuk setiap model atau per model, di setiap penyedia | Model dan respons | Any file |704| [`maxEffortLevel`](#maxeffortlevel) | Batasi [tingkat effort](/docs/id/model-config#adjust-effort-level) untuk setiap model atau per model, di setiap penyedia | Model dan respons | Any file |

705| [`maxProseWidth`](#maxprosewidth) | Batasi seberapa lebar prosa dalam respons Claude berjalan di terminal yang lebar | Interface and terminal | Any file |705| [`maxProseWidth`](#maxprosewidth) | Batasi seberapa lebar prosa dalam respons Claude berjalan di terminal yang lebar | Interface and terminal | Any file |

706| [`minimumVersion`](#minimumversion) | Jaga [pembaruan otomatis](/docs/id/setup#pin-a-minimum-version) dari memasang apa pun di bawah versi | Updates and versioning | Any file |706| [`minimumVersion`](#minimumversion) | Cegah [pembaruan otomatis](/docs/id/setup#pin-a-minimum-version) memasang apa pun di bawah suatu versi | Updates and versioning | Any file |

707| [`model`](#model) | Ubah [model](/docs/id/model-config#set-a-default-model-for-new-sessions) yang Claude Code mulai | Model dan respons | Any file |707| [`model`](#model) | Ubah [model](/docs/id/model-config#set-a-default-model-for-new-sessions) yang digunakan Claude Code saat dimulai | Model dan respons | Any file |

708| [`modelOverrides`](#modeloverrides) | [Petakan ID model](/docs/id/model-config#override-model-ids-per-version) ke ID penyedia Anda, seperti ARN Bedrock | Model dan respons | Any file |708| [`modelOverrides`](#modeloverrides) | [Petakan ID model](/docs/id/model-config#override-model-ids-per-version) ke ID penyedia Anda, seperti ARN Bedrock | Model dan respons | Any file |

709| [`modelPicker`](#modelpicker) | Pilih model mana yang dicantumkan oleh pemilih [`/model`](/docs/id/model-config#available-models), dalam urutan Anda sendiri dan dengan label Anda sendiri | Model dan respons | User or managed |709| [`modelPicker`](#modelpicker) | Pilih model mana yang dicantumkan oleh [pemilih `/model`](/docs/id/model-config#available-models), dalam urutan Anda sendiri dan dengan label Anda sendiri | Model dan respons | User or managed |

710| [`modelPricing`](#modelpricing) | Laporkan pengeluaran dengan tarif kontrak organisasi Anda daripada harga daftar | Model dan respons | Managed |710| [`modelPricing`](#modelpricing) | Laporkan pengeluaran dengan tarif kontrak organisasi Anda daripada harga daftar | Model dan respons | Managed |

711| [`modelSettings`](#modelsettings) | Simpan [tingkat usaha](/docs/id/model-config#adjust-effort-level) per model, atau batasi usaha satu model | Model dan respons | Any file |711| [`modelSettings`](#modelsettings) | Simpan [tingkat effort](/docs/id/model-config#adjust-effort-level) per model, atau batasi effort satu model | Model dan respons | Any file |

712| [`otelHeadersHelper`](#otelheadershelper) | Hasilkan header [OpenTelemetry](/docs/id/monitoring-usage#dynamic-headers) yang berputar dengan perintah Anda sendiri | Authentication and providers | Any file |712| [`otelHeadersHelper`](#otelheadershelper) | Hasilkan header [OpenTelemetry](/docs/id/monitoring-usage#dynamic-headers) yang berputar dengan perintah Anda sendiri | Authentication and providers | Any file |

713| [`outputStyle`](#outputstyle) | Ubah peran, nada, dan format output Claude dengan [gaya output](/docs/id/output-styles) | Model dan respons | Any file |713| [`outputStyle`](#outputstyle) | Ubah peran, nada, dan format output Claude dengan [gaya output](/docs/id/output-styles) | Model dan respons | Any file |

714| [`parentSettingsBehavior`](#parentsettingsbehavior) | Terapkan atau lepaskan pembatasan yang diteruskan oleh [host SDK atau IDE](/docs/id/managed-settings#let-an-embedding-host-add-policy) ketika Anda menerapkan [pengaturan yang dikelola](/docs/id/managed-settings) | Enterprise and managed settings | Managed |714| [`parentSettingsBehavior`](#parentsettingsbehavior) | Terapkan atau lepaskan pembatasan yang diteruskan oleh [host SDK atau IDE](/docs/id/managed-settings#let-an-embedding-host-add-policy) ketika Anda menerapkan [pengaturan terkelola](/docs/id/managed-settings) | Enterprise and managed settings | Managed |

715| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Dihapus di v2.1.257, bersama dengan penjelasan perintah `Ctrl+E` pada prompt izin shell | Global config settings | Global config |715| [`permissionExplainerEnabled`](#permissionexplainerenabled) | Dihapus di v2.1.257, bersama dengan penjelasan perintah `Ctrl+E` pada permintaan izin shell | Global config settings | Global config |

716| [`permissions`](#permissions) | Atur aturan izin, tanya, dan tolak serta [mode izin](/docs/id/permission-modes) awal | Permission settings | Any file |716| [`permissions`](#permissions) | Atur aturan izinkan, tanya, dan tolak serta [mode izin](/docs/id/permission-modes) awal | Permission settings | Any file |

717| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Berikan akses file Claude ke [direktori di luar yang saat ini](/docs/id/permissions#working-directories) | Permission settings | Any file |717| [`permissions.additionalDirectories`](#permissions-additionaldirectories) | Berikan Claude akses file ke [direktori di luar direktori saat ini](/docs/id/permissions#working-directories) | Permission settings | Any file |

718| [`permissions.allow`](#permissions-allow) | Setujui [penggunaan alat](/docs/id/permissions#permission-rule-syntax) yang tercantum tanpa prompt | Permission settings | Any file |718| [`permissions.allow`](#permissions-allow) | Setujui [penggunaan tool](/docs/id/permissions#permission-rule-syntax) yang tercantum tanpa prompt | Permission settings | Any file |

719| [`permissions.ask`](#permissions-ask) | Selalu minta sebelum [penggunaan alat](/docs/id/permissions#permission-rule-syntax) yang tercantum | Permission settings | Any file |719| [`permissions.ask`](#permissions-ask) | Selalu minta konfirmasi sebelum [penggunaan tool](/docs/id/permissions#permission-rule-syntax) yang tercantum | Permission settings | Any file |

720| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Buat alat file menolak pembacaan di luar [direktori kerja](/docs/id/permissions#working-directories) dalam setiap mode izin | Permission settings | Any file |720| [`permissions.blockReadsOutsideWorkingDirectories`](#permissions-blockreadsoutsideworkingdirectories) | Buat tool file menolak pembacaan di luar [direktori kerja](/docs/id/permissions#working-directories) dalam setiap mode izin | Permission settings | Any file |

721| [`permissions.defaultMode`](#permissions-defaultmode) | Atur [mode izin](/docs/id/permission-modes#which-mode-a-session-starts-in) yang dimulai sesi baru | Permission settings | Any file |721| [`permissions.defaultMode`](#permissions-defaultmode) | Atur [mode izin](/docs/id/permission-modes#which-mode-a-session-starts-in) yang digunakan sesi baru saat dimulai | Permission settings | Any file |

722| [`permissions.deny`](#permissions-deny) | Blokir [penggunaan alat](/docs/id/permissions#permission-rule-syntax) yang tercantum, termasuk pembacaan file yang menyimpan rahasia | Permission settings | Any file |722| [`permissions.deny`](#permissions-deny) | Blokir [penggunaan tool](/docs/id/permissions#permission-rule-syntax) yang tercantum, termasuk pembacaan file yang menyimpan rahasia | Permission settings | Any file |

723| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Cegah siapa pun memasuki [mode bypassPermissions](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | Any file |723| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Cegah siapa pun memasuki [mode bypassPermissions](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | Any file |

724| [`plansDirectory`](#plansdirectory) | Pilih tempat [mode plan](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) menulis file rencana | Memory and context | Any file |724| [`plansDirectory`](#plansdirectory) | Pilih tempat [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) menulis file rencana | Memory and context | Any file |

725| [`pluginConfigs`](#pluginconfigs) | Simpan jawaban yang Anda berikan dialog konfigurasi [plugin](/docs/id/plugins/overview) | Plugins and skills | User or managed |725| [`pluginConfigs`](#pluginconfigs) | Simpan jawaban yang Anda berikan pada dialog konfigurasi [plugin](/docs/id/plugins/overview) | Plugins and skills | User or managed |

726| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Pilih [marketplace](/docs/id/plugins/org#restrict-what-users-can-install) mana yang dapat menampilkan saran instalasi plugin di `/plugin` | Plugins and skills | Managed |726| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Pilih [marketplace](/docs/id/plugins/org#restrict-what-users-can-install) mana yang dapat menampilkan saran instalasi plugin di `/plugin` | Plugins and skills | Managed |

727| [`pluginTrustMessage`](#plugintrustmessage) | Tambahkan teks Anda sendiri ke peringatan kepercayaan [plugin](/docs/id/plugins/overview) | Plugins and skills | Managed |727| [`pluginTrustMessage`](#plugintrustmessage) | Tambahkan teks Anda sendiri ke peringatan kepercayaan [plugin](/docs/id/plugins/overview) | Plugins and skills | Managed |

728| [`policyHelper`](#policyhelper) | Jalankan executable yang menghitung [pengaturan yang dikelola](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) saat startup | Enterprise and managed settings | Managed |728| [`policyHelper`](#policyhelper) | Jalankan executable yang menghitung [pengaturan terkelola](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) saat startup | Enterprise and managed settings | Managed |

729| [`policyHelper.path`](#policyhelper-path) | Beri nama [executable pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) yang Claude Code jalankan | Enterprise and managed settings | Managed |729| [`policyHelper.path`](#policyhelper-path) | Beri nama [executable pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) yang Claude Code jalankan | Enterprise and managed settings | Managed |

730| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Jalankan kembali [pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) di latar belakang pada interval | Enterprise and managed settings | Managed |730| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Jalankan kembali [pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) di latar belakang pada interval | Enterprise and managed settings | Managed |

731| [`policyHelper.timeoutMs`](#policyhelper-timeoutms) | Atur berapa lama Claude Code menunggu [pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) | Enterprise and managed settings | Managed |731| [`policyHelper.timeoutMs`](#policyhelper-timeoutms) | Atur berapa lama Claude Code menunggu [pembantu](/docs/id/managed-settings#compute-the-policy-with-a-helper-program) | Enterprise and managed settings | Managed |


734| [`prependPlugins`](#prependplugins) | Jalankan [mods](/docs/id/plugins/mods/admin) organisasi Anda sebelum setiap mod yang dipasang pengguna | Plugins and skills | User or managed |734| [`prependPlugins`](#prependplugins) | Jalankan [mods](/docs/id/plugins/mods/admin) organisasi Anda sebelum setiap mod yang dipasang pengguna | Plugins and skills | User or managed |

735| [`processWrapper`](#processwrapper) | Jalankan proses latar belakang Claude Code melalui [peluncur perusahaan](/docs/id/corporate-launcher) di macOS dan Linux | Agents, sessions, and worktrees | User or managed |735| [`processWrapper`](#processwrapper) | Jalankan proses latar belakang Claude Code melalui [peluncur perusahaan](/docs/id/corporate-launcher) di macOS dan Linux | Agents, sessions, and worktrees | User or managed |

736| [`promptCacheTtl`](#promptcachettl) | Pilih [masa pakai cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk percakapan utama | Model dan respons | Any file |736| [`promptCacheTtl`](#promptcachettl) | Pilih [masa pakai cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk percakapan utama | Model dan respons | Any file |

737| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Sembunyikan [saran prompt](/docs/id/interactive-mode#prompt-suggestions) yang dikelabu dalam kotak input | Interface and terminal | Any file |737| [`promptSuggestionEnabled`](#promptsuggestionenabled) | Sembunyikan [saran prompt](/docs/id/interactive-mode#prompt-suggestions) berwarna abu-abu dalam kotak input | Interface and terminal | Any file |

738| [`prStatusFooterEnabled`](#prstatusfooterenabled) | Matikan lencana [status tinjauan PR](/docs/id/interactive-mode#pr-review-status) footer prompt dan pemeriksaan pull request di baliknya | Global config settings | Global config |738| [`prStatusFooterEnabled`](#prstatusfooterenabled) | Matikan lencana [status tinjauan PR](/docs/id/interactive-mode#pr-review-status) di footer prompt dan pemeriksaan pull request di baliknya | Global config settings | Global config |

739| [`prUrlTemplate`](#prurltemplate) | Arahkan tautan PR ke alat tinjauan kode internal daripada github.com | Git and attribution | Any file |739| [`prUrlTemplate`](#prurltemplate) | Arahkan tautan PR ke alat code review internal daripada github.com | Git and attribution | Any file |

740| [`remote.defaultEnvironmentId`](#remote-defaultenvironmentid) | Pilih [lingkungan cloud](/docs/id/cloud-environments) default untuk `claude --cloud`; ID `ccpool_` yang di-host sendiri hanya dibaca dari pengaturan pengguna dan yang dikelola serta `--settings` | Remote, desktop, and notifications | Any file |740| [`remote.defaultEnvironmentId`](#remote-defaultenvironmentid) | Pilih [lingkungan cloud](/docs/id/cloud-environments) default untuk `claude --cloud`; ID `ccpool_` yang di-host sendiri hanya dibaca dari pengaturan pengguna dan terkelola serta `--settings` | Remote, desktop, and notifications | Any file |

741| [`remoteControlAtStartup`](#remotecontrolatstartup) | Hubungkan [Remote Control](/docs/id/remote-control#enable-remote-control-for-all-sessions) secara otomatis ketika sesi dimulai | Remote, desktop, and notifications | Any file |741| [`remoteControlAtStartup`](#remotecontrolatstartup) | Hubungkan [Remote Control](/docs/id/remote-control#enable-remote-control-for-all-sessions) secara otomatis ketika sesi dimulai | Remote, desktop, and notifications | Any file |

742| [`requiredMaximumVersion`](#requiredmaximumversion) | [Tolak untuk memulai](/docs/id/setup#pin-a-minimum-version) pada versi yang lebih baru daripada yang diizinkan organisasi Anda | Updates and versioning | Managed |742| [`requiredMaximumVersion`](#requiredmaximumversion) | [Tolak untuk memulai](/docs/id/setup#pin-a-minimum-version) pada versi yang lebih baru daripada yang diizinkan organisasi Anda | Updates and versioning | Managed |

743| [`requiredMinimumVersion`](#requiredminimumversion) | [Tolak untuk memulai](/docs/id/setup#pin-a-minimum-version) pada versi yang lebih lama daripada yang diperlukan organisasi Anda | Updates and versioning | Managed |743| [`requiredMinimumVersion`](#requiredminimumversion) | [Tolak untuk memulai](/docs/id/setup#pin-a-minimum-version) pada versi yang lebih lama daripada yang diwajibkan organisasi Anda | Updates and versioning | Managed |

744| [`respectGitignore`](#respectgitignore) | Jaga file yang diabaikan git keluar dari [pemilih file `@`](/docs/id/interactive-mode#quick-commands) | Interface and terminal | Any file |744| [`respectGitignore`](#respectgitignore) | Jauhkan file yang diabaikan git dari [pemilih file `@`](/docs/id/interactive-mode#quick-commands) | Interface and terminal | Any file |

745| [`respondToBashCommands`](#respondtobashcommands) | Hentikan Claude dari merespons setelah perintah shell [`!`](/docs/id/interactive-mode#shell-mode-with-prefix) berjalan | Interface and terminal | Any file |745| [`respondToBashCommands`](#respondtobashcommands) | Hentikan Claude dari merespons setelah [perintah shell `!`](/docs/id/interactive-mode#shell-mode-with-prefix) berjalan | Interface and terminal | Any file |

746| [`sandbox`](#sandbox) | [Isolasi perintah Bash](/docs/id/sandboxing) dari sistem file dan jaringan Anda di macOS, Linux, dan WSL2 | Sandbox settings | Any file |746| [`sandbox`](#sandbox) | [Isolasi perintah Bash](/docs/id/sandboxing) dari sistem file dan jaringan Anda di macOS, Linux, dan WSL2 | Sandbox settings | Any file |

747| [`sandbox.allowAppleEvents`](#sandbox-allowappleevents) | Biarkan perintah [bersandbox](/docs/id/sandboxing) mengirim Apple Events di macOS | Sandbox settings | User or managed |747| [`sandbox.allowAppleEvents`](#sandbox-allowappleevents) | Biarkan perintah [bersandbox](/docs/id/sandboxing) mengirim Apple Events di macOS | Sandbox settings | User or managed |

748| [`sandbox.allowUnsandboxedCommands`](#sandbox-allowunsandboxedcommands) | Biarkan Claude mencoba ulang perintah yang diblokir di luar [sandbox](/docs/id/sandboxing#the-unsandboxed-retry-escape-hatch), atau larangnya | Sandbox settings | Any file |748| [`sandbox.allowUnsandboxedCommands`](#sandbox-allowunsandboxedcommands) | Biarkan Claude mencoba ulang perintah yang diblokir di luar [sandbox](/docs/id/sandboxing#the-unsandboxed-retry-escape-hatch), atau larang hal itu | Sandbox settings | Any file |

749| [`sandbox.autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) | Jalankan perintah [bersandbox](/docs/id/sandboxing#auto-allow-mode) tanpa prompt izin | Sandbox settings | Any file |749| [`sandbox.autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) | Jalankan perintah [bersandbox](/docs/id/sandboxing#auto-allow-mode) tanpa permintaan izin | Sandbox settings | Any file |

750| [`sandbox.bwrapPath`](#sandbox-bwrappath) | Arahkan [sandbox](/docs/id/sandboxing) ke biner bubblewrap di luar `PATH` | Sandbox settings | Managed |750| [`sandbox.bwrapPath`](#sandbox-bwrappath) | Arahkan [sandbox](/docs/id/sandboxing) ke biner bubblewrap di luar `PATH` | Sandbox settings | Managed |

751| [`sandbox.credentials`](#sandbox-credentials) | Sembunyikan atau topeng file kredensial dan variabel di dalam [sandbox](/docs/id/sandboxing#protect-credentials) | Sandbox settings | Any file |751| [`sandbox.credentials`](#sandbox-credentials) | Sembunyikan atau samarkan file kredensial dan variabel di dalam [sandbox](/docs/id/sandboxing#protect-credentials) | Sandbox settings | Any file |

752| [`sandbox.credentials.allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) | Biarkan [kredensial yang ditopeng](/docs/id/sandboxing#mask-credentials) mencapai layanan HTTP biasa di jaringan uji terpercaya | Sandbox settings | User or managed |752| [`sandbox.credentials.allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) | Biarkan [kredensial yang disamarkan](/docs/id/sandboxing#mask-credentials) mencapai layanan HTTP biasa di jaringan uji terpercaya | Sandbox settings | User or managed |

753| [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs) | Tautkan variabel kunci AWS bernama kustom ke satu kredensial untuk [penandatanganan ulang](/docs/id/sandboxing#re-sign-aws-requests) | Sandbox settings | User or managed |753| [`sandbox.credentials.awsPairs`](#sandbox-credentials-awspairs) | Tautkan variabel kunci AWS bernama kustom ke satu kredensial untuk [penandatanganan ulang](/docs/id/sandboxing#re-sign-aws-requests) | Sandbox settings | User or managed |

754| [`sandbox.credentials.envVars`](#sandbox-credentials-envvars) | Batalkan atau topeng variabel lingkungan di dalam [sandbox](/docs/id/sandboxing#mask-environment-variables) | Sandbox settings | Any file |754| [`sandbox.credentials.envVars`](#sandbox-credentials-envvars) | Hapus atau samarkan environment variable di dalam [sandbox](/docs/id/sandboxing#mask-environment-variables) | Sandbox settings | Any file |

755| [`sandbox.credentials.files`](#sandbox-credentials-files) | Blokir atau topeng pembacaan file kredensial di dalam [sandbox](/docs/id/sandboxing#mask-credential-files) | Sandbox settings | Any file |755| [`sandbox.credentials.files`](#sandbox-credentials-files) | Blokir atau samarkan pembacaan file kredensial di dalam [sandbox](/docs/id/sandboxing#mask-credential-files) | Sandbox settings | Any file |

756| [`sandbox.credentials.sigv4`](#sandbox-credentials-sigv4) | Pilih apakah streaming, presigned, atau permintaan [AWS SigV4A](/docs/id/sandboxing#re-sign-aws-requests) gagal atau lulus | Sandbox settings | User or managed |756| [`sandbox.credentials.sigv4`](#sandbox-credentials-sigv4) | Pilih apakah permintaan streaming, presigned, atau [AWS SigV4A](/docs/id/sandboxing#re-sign-aws-requests) gagal atau diteruskan | Sandbox settings | User or managed |

757| [`sandbox.enabled`](#sandbox-enabled) | Nyalakan [sandboxing Bash](/docs/id/sandboxing#get-started) di macOS, Linux, dan WSL2 | Sandbox settings | Any file |757| [`sandbox.enabled`](#sandbox-enabled) | Nyalakan [sandboxing Bash](/docs/id/sandboxing#get-started) di macOS, Linux, dan WSL2 | Sandbox settings | Any file |

758| [`sandbox.enableWeakerNestedSandbox`](#sandbox-enableweakernestedsandbox) | Jalankan [sandbox](/docs/id/sandboxing) Linux di dalam kontainer yang tidak istimewa | Sandbox settings | Any file |758| [`sandbox.enableWeakerNestedSandbox`](#sandbox-enableweakernestedsandbox) | Jalankan [sandbox](/docs/id/sandboxing) Linux di dalam kontainer yang tidak istimewa | Sandbox settings | Any file |

759| [`sandbox.enableWeakerNetworkIsolation`](#sandbox-enableweakernetworkisolation) | Biarkan `gh`, `gcloud`, dan `terraform` memverifikasi TLS di balik proxy MITM di dalam [sandbox](/docs/id/sandboxing#troubleshooting) di macOS | Sandbox settings | Any file |759| [`sandbox.enableWeakerNetworkIsolation`](#sandbox-enableweakernetworkisolation) | Biarkan `gh`, `gcloud`, dan `terraform` memverifikasi TLS di balik proxy MITM di dalam [sandbox](/docs/id/sandboxing#go-based-clis-fail-tls-verification-on-macos) di macOS | Sandbox settings | Any file |

760| [`sandbox.excludedCommands`](#sandbox-excludedcommands) | Beri nama perintah yang selalu berjalan di luar [sandbox](/docs/id/sandboxing) | Sandbox settings | Any file |760| [`sandbox.excludedCommands`](#sandbox-excludedcommands) | Beri nama perintah yang dapat dijalankan Claude Code di luar [sandbox](/docs/id/sandboxing) | Sandbox settings | Any file |

761| [`sandbox.failIfUnavailable`](#sandbox-failifunavailable) | Tolak untuk memulai ketika [sandbox](/docs/id/sandboxing) tidak bisa, daripada berjalan tanpa sandbox | Sandbox settings | Any file |761| [`sandbox.failIfUnavailable`](#sandbox-failifunavailable) | Tolak untuk memulai ketika [sandbox](/docs/id/sandboxing) tidak dapat dimulai, daripada berjalan tanpa sandbox | Sandbox settings | Any file |

762| [`sandbox.filesystem`](#sandbox-filesystem) | Kontrol jalur mana yang dapat dibaca dan ditulis perintah [bersandbox](/docs/id/sandboxing#filesystem-isolation) | Sandbox settings | Any file |762| [`sandbox.filesystem`](#sandbox-filesystem) | Kontrol jalur mana yang dapat dibaca dan ditulis perintah [bersandbox](/docs/id/sandboxing#filesystem-isolation) | Sandbox settings | Any file |

763| [`sandbox.filesystem.allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) | Hentikan pengembang dari membuka kembali [jalur baca yang organisasi Anda blokir](/docs/id/sandboxing#keep-developers-from-widening-the-policy) | Sandbox settings | Managed |763| [`sandbox.filesystem.allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) | Hentikan pengembang dari membuka kembali [jalur baca yang diblokir organisasi Anda](/docs/id/sandboxing#keep-developers-from-widening-the-policy) | Sandbox settings | Managed |

764| [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) | Buka kembali pembacaan di dalam wilayah yang [`denyRead`](#sandbox-filesystem-denyread) blokir | Sandbox settings | Any file |764| [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) | Buka kembali pembacaan di dalam wilayah yang diblokir [`denyRead`](#sandbox-filesystem-denyread) | Sandbox settings | Any file |

765| [`sandbox.filesystem.allowWrite`](#sandbox-filesystem-allowwrite) | Tambahkan jalur yang dapat ditulis perintah [bersandbox](/docs/id/sandboxing) | Sandbox settings | Any file |765| [`sandbox.filesystem.allowWrite`](#sandbox-filesystem-allowwrite) | Tambahkan jalur yang dapat ditulis perintah [bersandbox](/docs/id/sandboxing) | Sandbox settings | Any file |

766| [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread) | Blokir perintah [bersandbox](/docs/id/sandboxing) dari membaca jalur tertentu | Sandbox settings | Any file |766| [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread) | Blokir perintah [bersandbox](/docs/id/sandboxing) dari membaca jalur tertentu | Sandbox settings | Any file |

767| [`sandbox.filesystem.denyWrite`](#sandbox-filesystem-denywrite) | Blokir perintah [bersandbox](/docs/id/sandboxing) dari menulis ke jalur tertentu | Sandbox settings | Any file |767| [`sandbox.filesystem.denyWrite`](#sandbox-filesystem-denywrite) | Blokir perintah [bersandbox](/docs/id/sandboxing) dari menulis ke jalur tertentu | Sandbox settings | Any file |

768| [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled) | [Matikan isolasi sistem file](/docs/id/sandboxing#disable-filesystem-isolation) sambil menjaga isolasi jaringan | Sandbox settings | User or managed |768| [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled) | [Matikan isolasi sistem file](/docs/id/sandboxing#disable-filesystem-isolation) sambil tetap mempertahankan isolasi jaringan | Sandbox settings | User or managed |

769| [`sandbox.ignoreViolations`](#sandbox-ignoreviolations) | Senyapkan laporan pelanggaran untuk jalur yang diharapkan diperiksa perintah | Sandbox settings | Any file |769| [`sandbox.ignoreViolations`](#sandbox-ignoreviolations) | Senyapkan laporan pelanggaran untuk jalur yang memang diperkirakan akan diperiksa oleh suatu perintah | Sandbox settings | Any file |

770| [`sandbox.network`](#sandbox-network) | Kontrol host, port, dan soket mana yang dapat dijangkau perintah [bersandbox](/docs/id/sandboxing#network-isolation) | Sandbox settings | Any file |770| [`sandbox.network`](#sandbox-network) | Kontrol host, port, dan soket mana yang dapat dijangkau perintah [bersandbox](/docs/id/sandboxing#network-isolation) | Sandbox settings | Any file |

771| [`sandbox.network.allowAllUnixSockets`](#sandbox-network-allowallunixsockets) | Biarkan perintah [bersandbox](/docs/id/sandboxing) terhubung ke setiap soket Unix | Sandbox settings | Any file |771| [`sandbox.network.allowAllUnixSockets`](#sandbox-network-allowallunixsockets) | Biarkan perintah [bersandbox](/docs/id/sandboxing) terhubung ke setiap soket Unix | Sandbox settings | Any file |

772| [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Izinkan domain sebelumnya sehingga perintah [bersandbox](/docs/id/sandboxing) tidak meminta mereka | Sandbox settings | Any file |772| [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Izinkan domain sebelumnya sehingga perintah [bersandbox](/docs/id/sandboxing) tidak meminta izin untuk domain tersebut | Sandbox settings | Any file |

773| [`sandbox.network.allowLocalBinding`](#sandbox-network-allowlocalbinding) | Biarkan perintah [bersandbox](/docs/id/sandboxing) mengikat ke port localhost di macOS | Sandbox settings | Any file |773| [`sandbox.network.allowLocalBinding`](#sandbox-network-allowlocalbinding) | Biarkan perintah [bersandbox](/docs/id/sandboxing) mendengarkan pada port jaringan dan terhubung ke localhost di macOS | Sandbox settings | Any file |

774| [`sandbox.network.allowMachLookup`](#sandbox-network-allowmachlookup) | Biarkan alat macOS [bersandbox](/docs/id/sandboxing) seperti iOS Simulator atau Playwright menjangkau layanan XPC mereka | Sandbox settings | Any file |774| [`sandbox.network.allowMachLookup`](#sandbox-network-allowmachlookup) | Biarkan alat macOS [bersandbox](/docs/id/sandboxing) seperti iOS Simulator atau Playwright menjangkau layanan XPC mereka | Sandbox settings | Any file |

775| [`sandbox.network.allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) | Kunci daftar izin jaringan ke [pengaturan yang dikelola](/docs/id/sandboxing#keep-developers-from-widening-the-policy) | Sandbox settings | Managed |775| [`sandbox.network.allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) | Kunci allowlist jaringan ke [pengaturan terkelola](/docs/id/sandboxing#keep-developers-from-widening-the-policy) | Sandbox settings | Managed |

776| [`sandbox.network.allowUnixSockets`](#sandbox-network-allowunixsockets) | Daftar jalur soket Unix yang dapat digunakan perintah [bersandbox](/docs/id/sandboxing) di macOS | Sandbox settings | Any file |776| [`sandbox.network.allowUnixSockets`](#sandbox-network-allowunixsockets) | Cantumkan jalur soket Unix yang dapat digunakan perintah [bersandbox](/docs/id/sandboxing) di macOS | Sandbox settings | Any file |

777| [`sandbox.network.deniedDomains`](#sandbox-network-denieddomains) | Blokir domain untuk perintah [bersandbox](/docs/id/sandboxing), bahkan di dalam wildcard yang diizinkan | Sandbox settings | Any file |777| [`sandbox.network.deniedDomains`](#sandbox-network-denieddomains) | Blokir domain untuk perintah [bersandbox](/docs/id/sandboxing), bahkan di dalam wildcard yang diizinkan | Sandbox settings | Any file |

778| [`sandbox.network.httpProxyPort`](#sandbox-network-httpproxyport) | Rute lalu lintas [sandbox](/docs/id/sandboxing#custom-proxy-configuration) HTTP melalui proxy Anda sendiri | Sandbox settings | Any file |778| [`sandbox.network.httpProxyPort`](#sandbox-network-httpproxyport) | Rutekan lalu lintas HTTP [sandbox](/docs/id/sandboxing#custom-proxy-configuration) melalui proxy Anda sendiri | Sandbox settings | Any file |

779| [`sandbox.network.socksProxyPort`](#sandbox-network-socksproxyport) | Rute lalu lintas [sandbox](/docs/id/sandboxing#custom-proxy-configuration) SOCKS melalui proxy Anda sendiri | Sandbox settings | Any file |779| [`sandbox.network.socksProxyPort`](#sandbox-network-socksproxyport) | Rutekan lalu lintas SOCKS [sandbox](/docs/id/sandboxing#custom-proxy-configuration) melalui proxy Anda sendiri | Sandbox settings | Any file |

780| [`sandbox.network.strictAllowlist`](#sandbox-network-strictallowlist) | Tolak host di luar [daftar izin](/docs/id/sandboxing#network-isolation) daripada meminta | Sandbox settings | User or managed |780| [`sandbox.network.strictAllowlist`](#sandbox-network-strictallowlist) | Tolak host di luar [allowlist](/docs/id/sandboxing#network-isolation) daripada meminta izin | Sandbox settings | User or managed |

781| [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate) | Biarkan [sandbox](/docs/id/sandboxing#network-isolation) proxy menghentikan TLS sehingga dapat membaca permintaan HTTPS | Sandbox settings | User or managed |781| [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate) | Biarkan proxy [sandbox](/docs/id/sandboxing#network-isolation) menghentikan TLS sehingga dapat membaca permintaan HTTPS | Sandbox settings | User or managed |

782| [`sandbox.ripgrep`](#sandbox-ripgrep) | Gunakan biner ripgrep Anda sendiri di dalam [sandbox](/docs/id/sandboxing) | Sandbox settings | User or managed |782| [`sandbox.ripgrep`](#sandbox-ripgrep) | Gunakan biner ripgrep Anda sendiri di dalam [sandbox](/docs/id/sandboxing) | Sandbox settings | User or managed |

783| [`sandbox.socatPath`](#sandbox-socatpath) | Arahkan proxy [sandbox](/docs/id/sandboxing) ke biner `socat` di luar `PATH` | Sandbox settings | Managed |783| [`sandbox.socatPath`](#sandbox-socatpath) | Arahkan proxy [sandbox](/docs/id/sandboxing) ke biner `socat` di luar `PATH` | Sandbox settings | Managed |

784| [`showClearContextOnPlanAccept`](#showclearcontextonplanaccept) | Tampilkan opsi "clear context" pada [layar penerimaan rencana](/docs/id/permission-modes#review-and-approve-a-plan) | Interface and terminal | Any file |784| [`showClearContextOnPlanAccept`](#showclearcontextonplanaccept) | Tampilkan opsi "clear context" pada [layar penerimaan rencana](/docs/id/permission-modes#review-and-approve-a-plan) | Interface and terminal | Any file |

785| [`showThinkingSummaries`](#showthinkingsummaries) | Lihat ringkasan [pemikiran](/docs/id/model-config#extended-thinking) Claude daripada stub yang runtuh | Model dan respons | Any file |785| [`showThinkingSummaries`](#showthinkingsummaries) | Lihat ringkasan [thinking](/docs/id/model-config#extended-thinking) Claude daripada stub yang diciutkan | Model dan respons | Any file |

786| [`showTurnDuration`](#showturnduration) | Sembunyikan durasi "Cooked for" setelah setiap respons | Interface and terminal | Any file |786| [`showTurnDuration`](#showturnduration) | Sembunyikan durasi "Cooked for" setelah setiap respons | Interface and terminal | Any file |

787| [`skillListingBudgetFraction`](#skilllistingbudgetfraction) | Cadangkan lebih banyak atau lebih sedikit konteks untuk [daftar skill](/docs/id/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |787| [`skillListingBudgetFraction`](#skilllistingbudgetfraction) | Cadangkan lebih banyak atau lebih sedikit konteks untuk [daftar skill](/docs/id/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |

788| [`skillListingMaxDescChars`](#skilllistingmaxdescchars) | Batasi panjang deskripsi setiap skill dalam [daftar skill](/docs/id/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |788| [`skillListingMaxDescChars`](#skilllistingmaxdescchars) | Batasi panjang deskripsi setiap skill dalam [daftar skill](/docs/id/skills#skill-descriptions-are-cut-short) | Memory and context | Any file |

789| [`skillOverrides`](#skilloverrides) | [Sembunyikan atau lipat skill](/docs/id/skills#override-skill-visibility-from-settings) tanpa mengedit SKILL.md-nya | Plugins and skills | Any file |789| [`skillOverrides`](#skilloverrides) | [Sembunyikan atau ciutkan skill](/docs/id/skills#override-skill-visibility-from-settings) tanpa mengedit SKILL.md-nya | Plugins and skills | Any file |

790| [`skipAutoPermissionPrompt`](#skipautopermissionprompt) | Lewati pemberitahuan satu kali yang ditampilkan Claude Code ketika Anda pertama kali memasuki [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) sendiri daripada melalui default bawaan | Permission settings | User or managed |790| [`skipAutoPermissionPrompt`](#skipautopermissionprompt) | Lewati pemberitahuan satu kali yang ditampilkan Claude Code ketika Anda pertama kali memasuki [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) sendiri daripada melalui default bawaan | Permission settings | User or managed |

791| [`skipDangerousModePermissionPrompt`](#skipdangerousmodepermissionprompt) | Lewati dialog konfirmasi sebelum [mode bypassPermissions](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | User, local, or managed |791| [`skipDangerousModePermissionPrompt`](#skipdangerousmodepermissionprompt) | Lewati dialog konfirmasi sebelum [mode bypassPermissions](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Permission settings | User, local, or managed |

792| [`skipWebFetchPreflight`](#skipwebfetchpreflight) | Lewati [pemeriksaan nama host WebFetch](/docs/id/tools-reference#webfetch-tool-behavior) ketika Anthropic tidak dapat dijangkau | Privacy and telemetry | Any file |792| [`skipWebFetchPreflight`](#skipwebfetchpreflight) | Lewati [pemeriksaan nama host WebFetch](/docs/id/tools-reference#webfetch-tool-behavior) ketika Anthropic tidak dapat dijangkau | Privacy and telemetry | Any file |

793| [`spellcheck`](#spellcheck) | Garis bawahi kata-kata yang salah eja dalam input prompt dengan [pemeriksa ejaan](/docs/id/interactive-mode#check-spelling-as-you-type) yang Anda pasang | Interface and terminal | User or managed |793| [`spellcheck`](#spellcheck) | Garis bawahi kata-kata yang salah eja dalam input prompt dengan [pemeriksa ejaan](/docs/id/interactive-mode#check-spelling-as-you-type) yang Anda pasang | Interface and terminal | User or managed |


797| [`sshConfigs`](#sshconfigs) | Tambahkan [koneksi SSH](/docs/id/desktop#pre-configure-ssh-connections-for-your-team) ke dropdown lingkungan Desktop | Remote, desktop, and notifications | User or managed |797| [`sshConfigs`](#sshconfigs) | Tambahkan [koneksi SSH](/docs/id/desktop#pre-configure-ssh-connections-for-your-team) ke dropdown lingkungan Desktop | Remote, desktop, and notifications | User or managed |

798| [`sshHostAllowlist`](#sshhostallowlist) | Batasi host mana yang dapat dijangkau [sesi SSH Desktop](/docs/id/desktop#restrict-which-ssh-hosts-users-can-connect-to) | Remote, desktop, and notifications | Managed |798| [`sshHostAllowlist`](#sshhostallowlist) | Batasi host mana yang dapat dijangkau [sesi SSH Desktop](/docs/id/desktop#restrict-which-ssh-hosts-users-can-connect-to) | Remote, desktop, and notifications | Managed |

799| [`statusLine`](#statusline) | Jalankan perintah Anda sendiri untuk merender [baris status](/docs/id/statusline) di bawah prompt | Interface and terminal | Any file |799| [`statusLine`](#statusline) | Jalankan perintah Anda sendiri untuk merender [baris status](/docs/id/statusline) di bawah prompt | Interface and terminal | Any file |

800| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Daftar izin sumber [marketplace](/docs/id/plugins/overview) yang dapat ditambahkan dan dipasang pengguna | Plugins and skills | Managed |800| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Buat allowlist sumber [marketplace](/docs/id/plugins/overview) yang dapat ditambahkan dan digunakan pengguna untuk memasang | Plugins and skills | Managed |

801| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Blokir [skill](/docs/id/skills), [agent](/docs/id/sub-agents), [hooks](/docs/id/hooks), dan [server MCP](/docs/id/mcp) dari sumber pengguna dan proyek | Plugins and skills | Managed |801| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Blokir [skill](/docs/id/skills), [agent](/docs/id/sub-agents), [hooks](/docs/id/hooks), dan [server MCP](/docs/id/mcp) dari sumber pengguna dan proyek | Plugins and skills | Managed |

802| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Kunci [agent](/docs/id/sub-agents) ke sumber plugin dan yang dikelola | Plugins and skills | Managed |802| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Kunci [agent](/docs/id/sub-agents) ke sumber plugin dan terkelola | Plugins and skills | Managed |

803| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Kunci [hooks](/docs/id/hooks) ke sumber plugin dan yang dikelola | Plugins and skills | Managed |803| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Kunci [hooks](/docs/id/hooks) ke sumber plugin dan terkelola | Plugins and skills | Managed |

804| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Kunci [server MCP](/docs/id/mcp) ke sumber plugin dan yang dikelola | Plugins and skills | Managed |804| [`strictPluginOnlyCustomization.mcp`](#strictpluginonlycustomization-mcp) | Kunci [server MCP](/docs/id/mcp) ke sumber plugin dan terkelola | Plugins and skills | Managed |

805| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Kunci [skill](/docs/id/skills) ke sumber plugin dan yang dikelola | Plugins and skills | Managed |805| [`strictPluginOnlyCustomization.skills`](#strictpluginonlycustomization-skills) | Kunci [skill](/docs/id/skills) ke sumber plugin dan terkelola | Plugins and skills | Managed |

806| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Pilih [masa pakai cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk subagent dan permintaan lain di luar percakapan utama | Model dan respons | Any file |806| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Pilih [masa pakai cache prompt](/docs/id/prompt-caching#cache-lifetime) untuk subagent dan permintaan lain di luar percakapan utama | Model dan respons | Any file |

807| [`subagentStatusLine`](#subagentstatusline) | Tulis ulang baris dalam tampilan tugas [subagent](/docs/id/sub-agents) dengan perintah Anda sendiri | Interface and terminal | Any file |807| [`subagentStatusLine`](#subagentstatusline) | Tulis ulang baris dalam tampilan tugas [subagent](/docs/id/sub-agents) dengan perintah Anda sendiri | Interface and terminal | Any file |

808| [`switchModelsOnFlag`](#switchmodelsonflag) | Alihkan model secara otomatis atau jeda ketika [pengklasifikasi keamanan](/docs/id/model-config#ask-before-switching) menandai permintaan | Model dan respons | Any file |808| [`switchModelsOnFlag`](#switchmodelsonflag) | Alihkan model secara otomatis atau jeda ketika [pengklasifikasi keamanan](/docs/id/model-config#ask-before-switching) menandai permintaan | Model dan respons | Any file |

809| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Hentikan pemuatan [plugin yang diaktifkan di akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins) dan hentikan pengunduhan yang baru | Plugins and skills | User, local, or managed |809| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Hentikan pemuatan [plugin yang diaktifkan di akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins) dan hentikan pengunduhan yang baru | Plugins and skills | User, local, or managed |

810| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Hentikan pemuatan [skill yang diaktifkan di akun claude.ai Anda](/docs/id/skills#how-synced-skills-behave) dan hentikan pengunduhan yang baru | Plugins and skills | User, local, or managed |810| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Hentikan pemuatan [skill yang diaktifkan di akun claude.ai Anda](/docs/id/skills#how-synced-skills-behave) dan hentikan pengunduhan yang baru | Plugins and skills | User, local, or managed |

811| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Matikan penyorotan sintaks dalam diff dan blok kode | Interface and terminal | Any file |811| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Matikan penyorotan sintaks dalam diff dan blok kode | Interface and terminal | Any file |

812| [`taskOutputMaxChars`](#taskoutputmaxchars) | Dihapus di v2.1.277, bersama dengan alat `TaskOutput` yang disizingnya | Memory and context | Any file |812| [`taskOutputMaxChars`](#taskoutputmaxchars) | Dihapus di v2.1.277, bersama dengan tool `TaskOutput` yang ukurannya diatur olehnya | Memory and context | Any file |

813| [`teammateDefaultModel`](#teammatedefaultmodel) | Dihapus di v2.1.234; lihat [Tentukan rekan tim dan model](/docs/id/agent-teams#specify-teammates-and-models) untuk cara Claude Code memilih model rekan tim | Global config settings | Global config |813| [`teammateDefaultModel`](#teammatedefaultmodel) | Dihapus di v2.1.234; lihat [Tentukan rekan tim dan model](/docs/id/agent-teams#specify-teammates-and-models) untuk cara Claude Code memilih model rekan tim | Global config settings | Global config |

814| [`teammateMode`](#teammatemode) | Pilih cara [rekan tim tim agent](/docs/id/agent-teams#choose-a-display-mode) ditampilkan | Agents, sessions, and worktrees | Any file |814| [`teammateMode`](#teammatemode) | Pilih cara [rekan tim tim agent](/docs/id/agent-teams#choose-a-display-mode) ditampilkan | Agents, sessions, and worktrees | Any file |

815| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Sembunyikan bilah kemajuan terminal di terminal yang mendukungnya | Interface and terminal | Any file |815| [`terminalProgressBarEnabled`](#terminalprogressbarenabled) | Sembunyikan bilah kemajuan terminal di terminal yang mendukungnya | Interface and terminal | Any file |

816| [`terminalTitleFromRename`](#terminaltitlefromrename) | Hentikan [`/rename`](/docs/id/sessions#name-your-sessions) dan `--name` dari mengubah judul tab terminal | Interface and terminal | Any file |816| [`terminalTitleFromRename`](#terminaltitlefromrename) | Hentikan [`/rename`](/docs/id/sessions#name-your-sessions) dan `--name` dari mengubah judul tab terminal | Interface and terminal | Any file |

817| [`theme`](#theme) | Pilih [tema warna](/docs/id/terminal-config#match-the-color-theme) antarmuka, bawaan atau kustom | Interface and terminal | Any file |817| [`theme`](#theme) | Pilih [tema warna](/docs/id/terminal-config#match-the-color-theme) antarmuka, bawaan atau kustom | Interface and terminal | Any file |

818| [`timeFormat`](#timeformat) | Tampilkan waktu dalam antarmuka pada jam 12 jam atau 24 jam, dalam UTC, atau dengan pola strftime | Interface and terminal | Any file |818| [`timeFormat`](#timeformat) | Tampilkan waktu dalam antarmuka dalam format 12 jam atau 24 jam, dalam UTC, atau dengan pola strftime | Interface and terminal | Any file |

819| [`timeZone`](#timezone) | Tampilkan waktu dalam antarmuka di zona waktu selain sistem Anda | Interface and terminal | Any file |819| [`timeZone`](#timezone) | Tampilkan waktu dalam antarmuka di zona waktu selain zona waktu sistem Anda | Interface and terminal | Any file |

820| [`tui`](#tui) | Pilih renderer [fullscreen](/docs/id/fullscreen) atau terminal klasik | Interface and terminal | Any file |820| [`tui`](#tui) | Pilih renderer terminal [fullscreen](/docs/id/fullscreen) atau klasik | Interface and terminal | Any file |

821| [`ultracode`](#ultracode) | Biarkan Claude merencanakan [workflow](/docs/id/workflows#let-claude-decide-with-ultracode) untuk setiap tugas substansial tanpa diminta | Model dan respons | Any file |821| [`ultracode`](#ultracode) | Biarkan Claude merencanakan [workflow](/docs/id/workflows#let-claude-decide-with-ultracode) untuk setiap tugas substansial tanpa diminta | Model dan respons | Any file |

822| [`useAutoModeDuringPlan`](#useautomodeduringplan) | Biarkan pengklasifikasi [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) meninjau perintah shell dalam [mode plan](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode); atur `false` untuk mendapatkan prompt sebagai gantinya | Permission settings | User, local, or managed |822| [`useAutoModeDuringPlan`](#useautomodeduringplan) | Biarkan pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) meninjau perintah shell dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode); atur `false` untuk mendapatkan permintaan izin sebagai gantinya | Permission settings | User, local, or managed |

823| [`verbose`](#verbose) | Tampilkan [output alat lengkap](/docs/id/cli-reference#cli-flags) daripada ringkasan terpotong; `viewMode` mengambil alih ketika keduanya diatur | Interface and terminal | Any file |823| [`verbose`](#verbose) | Tampilkan [output tool lengkap](/docs/id/cli-reference#cli-flags) daripada ringkasan terpotong; `viewMode` diutamakan ketika keduanya diatur | Interface and terminal | Any file |

824| [`viewMode`](#viewmode) | Mulai setiap sesi dalam [tampilan default, verbose, atau focus](/docs/id/cli-reference#cli-flags) | Interface and terminal | Any file |824| [`viewMode`](#viewmode) | Mulai setiap sesi dalam [tampilan default, verbose, atau focus](/docs/id/cli-reference#cli-flags) | Interface and terminal | Any file |

825| [`vimInsertModeRemaps`](#viminsertmoderemaps) | Petakan [urutan mode INSERT](/docs/id/interactive-mode#remap-insert-mode-key-sequences) dua kunci seperti `jj` ke Escape | Interface and terminal | User or managed |825| [`vimInsertModeRemaps`](#viminsertmoderemaps) | Petakan [urutan mode INSERT](/docs/id/interactive-mode#remap-insert-mode-key-sequences) dua tombol seperti `jj` ke Escape | Interface and terminal | User or managed |

826| [`voice`](#voice) | Nyalakan [dikte suara](/docs/id/voice-dictation) dan pilih mode tahan atau ketuk | Interface and terminal | Any file |826| [`voice`](#voice) | Nyalakan [dikte suara](/docs/id/voice-dictation) dan pilih mode tahan atau ketuk | Interface and terminal | Any file |

827| [`voiceEnabled`](#voiceenabled) | Nyalakan [dikte suara](/docs/id/voice-dictation) dengan bentuk kunci tunggal yang lebih lama | Interface and terminal | Any file |827| [`voiceEnabled`](#voiceenabled) | Nyalakan [dikte suara](/docs/id/voice-dictation) dengan bentuk tombol tunggal yang lebih lama | Interface and terminal | Any file |

828| [`wheelScrollAccelerationEnabled`](#wheelscrollaccelerationenabled) | Matikan [akselerasi roda mouse](/docs/id/fullscreen#mouse-wheel-scrolling) dalam rendering fullscreen | Interface and terminal | Any file |828| [`wheelScrollAccelerationEnabled`](#wheelscrollaccelerationenabled) | Matikan [akselerasi roda mouse](/docs/id/fullscreen#mouse-wheel-scrolling) dalam rendering fullscreen | Interface and terminal | Any file |

829| [`workflowKeywordTriggerEnabled`](#workflowkeywordtriggerenabled) | Biarkan kata `ultracode` dalam prompt memulai [workflow](/docs/id/workflows); atur `false` untuk mengetiknya tanpa memulai satu | Hooks and automation | Any file |829| [`workflowKeywordTriggerEnabled`](#workflowkeywordtriggerenabled) | Biarkan kata `ultracode` dalam prompt memulai [workflow](/docs/id/workflows); atur `false` untuk mengetiknya tanpa memulai workflow | Hooks and automation | Any file |

830| [`workflowSizeGuideline`](#workflowsizeguideline) | Atur jumlah agent yang Claude targetkan dalam [workflow dinamis](/docs/id/workflows) | Hooks and automation | Any file |830| [`workflowSizeGuideline`](#workflowsizeguideline) | Atur jumlah agent yang Claude targetkan dalam [workflow dinamis](/docs/id/workflows) | Hooks and automation | Any file |

831| [`worktree`](#worktree) | Konfigurasikan cara Claude Code membuat git [worktree](/docs/id/worktrees) | Agents, sessions, and worktrees | Any file |831| [`worktree`](#worktree) | Konfigurasikan cara Claude Code membuat git [worktree](/docs/id/worktrees) | Agents, sessions, and worktrees | Any file |

832| [`worktree.baseRef`](#worktree-baseref) | Cabang [worktree](/docs/id/worktrees) baru dari cabang default jarak jauh atau HEAD lokal Anda | Agents, sessions, and worktrees | Any file |832| [`worktree.baseRef`](#worktree-baseref) | Buat branch [worktree](/docs/id/worktrees) baru dari branch default remote atau HEAD lokal Anda | Agents, sessions, and worktrees | Any file |

833| [`worktree.bgIsolation`](#worktree-bgisolation) | Biarkan sesi latar belakang mengedit salinan kerja tanpa [worktree](/docs/id/worktrees) | Agents, sessions, and worktrees | Any file |833| [`worktree.bgIsolation`](#worktree-bgisolation) | Biarkan sesi latar belakang mengedit salinan kerja tanpa [worktree](/docs/id/worktrees) | Agents, sessions, and worktrees | Any file |

834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Periksa hanya direktori yang Anda butuhkan di setiap [worktree](/docs/id/worktrees) | Agents, sessions, and worktrees | Any file |834| [`worktree.sparsePaths`](#worktree-sparsepaths) | Check out hanya direktori yang Anda butuhkan di setiap [worktree](/docs/id/worktrees) | Agents, sessions, and worktrees | Any file |

835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Symlink direktori besar ke setiap [worktree](/docs/id/worktrees) daripada menduplikasinya | Agents, sessions, and worktrees | Any file |835| [`worktree.symlinkDirectories`](#worktree-symlinkdirectories) | Buat symlink direktori besar ke setiap [worktree](/docs/id/worktrees) daripada menduplikasinya | Agents, sessions, and worktrees | Any file |

836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Biarkan WSL membaca [pengaturan yang dikelola](/docs/id/managed-settings) dari rantai kebijakan Windows | Enterprise and managed settings | Managed |836| [`wslInheritsWindowsSettings`](#wslinheritswindowssettings) | Biarkan WSL membaca [pengaturan terkelola](/docs/id/managed-settings) dari rantai kebijakan Windows | Enterprise and managed settings | Managed |

837 837 

838<h2 id="model-and-responses">838<h2 id="model-and-responses">

839 Model dan respons839 Model dan respons


1433 Pengaturan izin1433 Pengaturan izin

1434</h2>1434</h2>

1435 1435 

1436Tentukan apa yang dapat dilakukan Claude tanpa bertanya, mode izin mana yang dimulai sesi, dan apa yang diizinkan pengklasifikasi mode otomatis. Untuk sintaks aturan dan model izin, lihat [Konfigurasi izin](/docs/id/permissions).1436Tentukan apa yang dapat dilakukan Claude tanpa bertanya, mode izin mana yang digunakan saat sesi dimulai, dan apa yang diizinkan pengklasifikasi auto mode. Untuk sintaks aturan dan model izin, lihat [Konfigurasi izin](/docs/id/permissions).

1437 1437 

1438<h3 id="allowmanagedpermissionrulesonly">1438<h3 id="allowmanagedpermissionrulesonly">

1439 `allowManagedPermissionRulesOnly`1439 `allowManagedPermissionRulesOnly`

1440</h3>1440</h3>

1441 1441 

1442Jadikan pengaturan terkelola satu-satunya sumber pengaturan aturan izin. Claude Code kemudian mengabaikan aturan `allow`, `ask`, dan `deny` dalam file pengguna, proyek, lokal, dan `--settings`, mengabaikan `--allowedTools`, menyembunyikan pilihan selalu-izinkan dalam prompt izin, dan berhenti menyimpan aturan baru.1442Jadikan pengaturan terkelola satu-satunya sumber pengaturan aturan izin. Claude Code kemudian mengabaikan aturan `allow`, `ask`, dan `deny` dalam file pengguna, proyek, lokal, dan `--settings`, mengabaikan `--allowedTools`, menyembunyikan pilihan selalu-izinkan dalam dialog izin, dan berhenti menyimpan aturan baru.

1443 1443 

1444Ketika [pengaturan induk dari host penyematan](/docs/id/managed-settings#let-an-embedding-host-add-policy) berlaku, Claude Code memperlakukan mereka sebagai bagian dari tingkat terkelola. Claude Code menghapus aturan `allow` dan `additionalDirectories` mereka, dan mempertahankan aturan `deny` dan `ask` mereka kecuali aturan `Read` dan `Edit` yang polanya dimulai dengan `!`. Host tidak dapat mengukir jalur dari aturan terkelola dengan aturan `!`, terlepas dari apakah Anda menetapkan kunci ini.1444Ketika [pengaturan induk dari host penyematan](/docs/id/managed-settings#let-an-embedding-host-add-policy) berlaku, Claude Code memperlakukan mereka sebagai bagian dari tingkat terkelola. Claude Code menghapus aturan `allow` dan `additionalDirectories` mereka, dan mempertahankan aturan `deny` dan `ask` mereka kecuali aturan `Read` dan `Edit` yang polanya dimulai dengan `!`. Host tidak dapat mengukir jalur dari aturan terkelola dengan aturan `!`, terlepas dari apakah Anda menetapkan kunci ini.

1445 1445 


1447 1447 

1448Untuk apa yang dapat diukir pola `!` dalam aturan `--disallowedTools` atau sesi, lihat [aturan Read dan Edit](/docs/id/permissions#read-and-edit).1448Untuk apa yang dapat diukir pola `!` dalam aturan `--disallowedTools` atau sesi, lihat [aturan Read dan Edit](/docs/id/permissions#read-and-edit).

1449 1449 

1450Ketika Anda menetapkan kunci ini, Claude Code v2.1.282 atau lebih baru juga mengabaikan frontmatter [`allowed-tools`](/docs/id/skills#pre-approve-tools-for-a-skill) dalam skill dan file `.claude/commands/` dari sumber-sumber berikut:

1451 

1452* Direktori `.claude/` milik repositori

1453* Direktori `~/.claude/skills/` dan `~/.claude/commands/` Anda, termasuk [skill yang disinkronkan dari claude.ai](/docs/id/skills#where-synced-skills-load)

1454* Direktori `--add-dir`

1455* [Plugin yang dideklarasikan dengan manifest `.claude-plugin`](/docs/id/plugins/loading#plugins-shared-through-a-repository) di dalam `~/.claude/skills/` atau `.claude/skills/` proyek

1456 

1457Skill dari pengaturan terkelola dan skill bawaan tetap mempertahankan `allowed-tools` mereka. `disallowed-tools` milik skill tetap berlaku. Untuk apa yang dilihat pengembang ketika Claude Code mengabaikan field tersebut, lihat [Ketika hanya aturan izin terkelola yang berlaku](/docs/id/skills#when-only-managed-permission-rules-apply).

1458 

1450* **Scope**: [`Managed`](#scopes)1459* **Scope**: [`Managed`](#scopes)

1451* **Type**: Boolean1460* **Type**: Boolean

1452 * `true`: pengaturan terkelola menjadi satu-satunya sumber pengaturan aturan izin1461 * `true`: pengaturan terkelola menjadi satu-satunya sumber pengaturan aturan izin


1459}1468}

1460```1469```

1461 1470 

1462Kunci ini tidak mengunci daftar server MCP yang diizinkan; untuk itu, atur [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly). Lihat [Pengaturan hanya terkelola](/docs/id/managed-settings#managed-only-settings).1471Kunci ini tidak mengunci allowlist server MCP; untuk itu, atur [`allowManagedMcpServersOnly`](#allowmanagedmcpserversonly). Lihat [Pengaturan hanya terkelola](/docs/id/managed-settings#managed-only-settings).

1463 1472 

1464<h3 id="automode">1473<h3 id="automode">

1465 `autoMode`1474 `autoMode`

1466</h3>1475</h3>

1467 1476 

1468Tambahkan aturan Anda sendiri ke apa yang diblokir dan diizinkan oleh pengklasifikasi [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode). Gunakan untuk memberi tahu pengklasifikasi repo, bucket, dan domain mana yang dipercaya organisasi Anda, sehingga berhenti memblokir operasi internal rutin. Pengklasifikasi dilengkapi dengan [aturan izin dan blokir bawaan](/docs/id/auto-mode-config#inspect-the-defaults-and-your-effective-config). Sertakan string literal `"$defaults"` dalam array untuk mempertahankan aturan bawaan tersebut pada posisi itu dan tambahkan milik Anda di sekitarnya; tinggalkan untuk menggantinya dengan milik Anda.1477Tambahkan aturan Anda sendiri ke apa yang diblokir dan diizinkan oleh pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode). Gunakan untuk memberi tahu pengklasifikasi repo, bucket, dan domain mana yang dipercaya organisasi Anda, sehingga berhenti memblokir operasi internal sehari-hari. Pengklasifikasi dilengkapi dengan [aturan allow dan deny bawaan](/docs/id/auto-mode-config#inspect-the-defaults-and-your-effective-config). Sertakan string literal `"$defaults"` dalam array untuk mempertahankan aturan bawaan tersebut pada posisi itu dan tambahkan milik Anda di sekitarnya; tinggalkan untuk menggantinya dengan milik Anda.

1469 1478 

1470* **Scope**: [`User or managed`](#scopes)1479* **Scope**: [`User or managed`](#scopes)

1471* **Type**: objek dengan array `environment`, `allow`, `soft_deny`, dan `hard_deny` dari aturan prosa, ditambah Boolean [`classifyAllShell`](#automode-classifyallshell)1480* **Type**: objek dengan array `environment`, `allow`, `soft_deny`, dan `hard_deny` dari aturan prosa, ditambah Boolean [`classifyAllShell`](#automode-classifyallshell)


1481}1490}

1482```1491```

1483 1492 

1484Ketika lebih dari satu file tersebut menetapkan array yang sama, Claude Code menggabungkan entri. Untuk format aturan dan bagaimana setiap array diterapkan, lihat [Konfigurasi mode otomatis](/docs/id/auto-mode-config).1493Ketika lebih dari satu file tersebut menetapkan array yang sama, Claude Code menggabungkan entri. Untuk format aturan dan bagaimana setiap array diterapkan, lihat [Konfigurasi auto mode](/docs/id/auto-mode-config).

1485 1494 

1486<h3 id="automode-classifyallshell">1495<h3 id="automode-classifyallshell">

1487 `autoMode.classifyAllShell`1496 `autoMode.classifyAllShell`

1488</h3>1497</h3>

1489 1498 

1490Kirim setiap perintah Bash dan PowerShell melalui pengklasifikasi mode otomatis saat mode otomatis aktif. Secara default, mode otomatis hanya menangguhkan aturan izin yang dapat menjalankan kode arbitrer: aturan lebar alat dan wildcard seperti `Bash(*)`, dan awalan interpreter atau shell-wrapper seperti `Bash(python *)`. Perintah yang cocok dengan aturan izin lain, seperti `Bash(npm test)`, melewati pengklasifikasi kecuali membawa [domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode). Ketika melewati, argumen destruktif yang tidak diantisipasi awalan aturan dapat lolos tanpa terlihat. Menetapkan kunci ini menangguhkan setiap aturan izin shell untuk sesi sehingga pengklasifikasi melihat setiap perintah. Memerlukan Claude Code v2.1.193 atau lebih baru.1499Kirim setiap perintah Bash dan PowerShell melalui pengklasifikasi auto mode saat auto mode aktif. Secara default, auto mode hanya menangguhkan aturan allow yang dapat menjalankan kode arbitrer: aturan untuk seluruh tool dan aturan wildcard seperti `Bash(*)`, dan awalan interpreter atau shell-wrapper seperti `Bash(python *)`. Perintah yang cocok dengan aturan allow lain, seperti `Bash(npm test)`, melewati pengklasifikasi kecuali membawa [domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode). Ketika melewati, argumen destruktif yang tidak diantisipasi awalan aturan dapat lolos tanpa terlihat. Menetapkan kunci ini menangguhkan setiap aturan allow shell untuk sesi sehingga pengklasifikasi melihat setiap perintah. Memerlukan Claude Code v2.1.193 atau lebih baru.

1491 1500 

1492* **Scope**: [`User or managed`](#scopes). Baca di mana pun [`autoMode`](#automode) dibaca.1501* **Scope**: [`User or managed`](#scopes). Dibaca di mana pun [`autoMode`](#automode) dibaca.

1493* **Type**: Boolean1502* **Type**: Boolean

1494 * `true`: saat mode otomatis aktif, Claude Code mengirim setiap perintah Bash dan PowerShell melalui pengklasifikasi dan menangguhkan aturan izin shell Anda; di luar mode otomatis aturan masih berlaku1503 * `true`: saat auto mode aktif, Claude Code mengirim setiap perintah Bash dan PowerShell melalui pengklasifikasi dan menangguhkan aturan allow shell Anda; di luar auto mode aturan masih berlaku

1495 * `false`: mode otomatis hanya menangguhkan aturan izin yang dapat menjalankan kode arbitrer, seperti `Bash(*)` dan `Bash(python *)`; perintah yang cocok dengan aturan izin lain melewati pengklasifikasi kecuali membawa [domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode), dan setiap perintah shell lainnya melaluinya1504 * `false`: auto mode hanya menangguhkan aturan allow yang dapat menjalankan kode arbitrer, seperti `Bash(*)` dan `Bash(python *)`; perintah yang cocok dengan aturan allow lain melewati pengklasifikasi kecuali membawa [domain yang diizinkan per-perintah](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode), dan setiap perintah shell lainnya melaluinya

1496* **Default**: `false`1505* **Default**: `false`

1497 1506 

1498```json settings.json theme={null}1507```json settings.json theme={null}


1509 `disableAutoMode`1518 `disableAutoMode`

1510</h3>1519</h3>

1511 1520 

1512Hapus [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) dari siklus `Shift+Tab`. Setiap sesi yang sebaliknya akan [dimulai dalam mode otomatis](/docs/id/permission-modes#which-mode-a-session-starts-in), baik dari `--permission-mode auto`, file pengaturan, atau default bawaan, dimulai dalam `default` sebagai gantinya. Administrator menetapkannya dalam pengaturan terkelola untuk mencegah pengembang di organisasi mereka menggunakan mode otomatis.1521Hapus [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) dari siklus `Shift+Tab`. Setiap sesi yang sebaliknya akan [dimulai dalam auto mode](/docs/id/permission-modes#which-mode-a-session-starts-in), baik dari `--permission-mode auto`, file pengaturan, atau default bawaan, dimulai dalam `default` sebagai gantinya. Administrator menetapkannya dalam pengaturan terkelola untuk mencegah pengembang di organisasi mereka menggunakan auto mode.

1513 1522 

1514* **Scope**: [`Any file`](#scopes). Paling berguna dalam [pengaturan terkelola](/docs/id/managed-settings), di mana pengguna tidak dapat menggantinya. Juga diterima di bawah `permissions` sebagai `permissions.disableAutoMode`.1523* **Scope**: [`Any file`](#scopes). Paling berguna dalam [pengaturan terkelola](/docs/id/managed-settings), di mana pengguna tidak dapat menimpanya. Juga diterima di bawah `permissions` sebagai `permissions.disableAutoMode`.

1515* **Type**: string `"disable"`1524* **Type**: string `"disable"`

1516* **Default**: tidak diatur1525* **Default**: tidak diatur

1517 1526 


1525 `permissions`1534 `permissions`

1526</h3>1535</h3>

1527 1536 

1528Kontrol alat mana yang dapat digunakan Claude tanpa bertanya, alat mana yang selalu meminta, dan alat mana yang diblokir, serta atur [mode izin](/docs/id/permission-modes) yang dimulai sesi. Setiap kunci `permissions.*` di bawah bersarang di bawah objek ini.1537Kontrol tool mana yang dapat digunakan Claude tanpa bertanya, tool mana yang selalu meminta konfirmasi, dan tool mana yang diblokir, serta atur [mode izin](/docs/id/permission-modes) yang digunakan saat sesi dimulai. Setiap kunci `permissions.*` di bawah bersarang di bawah objek ini.

1529 1538 

1530* **Scope**: [`Any file`](#scopes)1539* **Scope**: [`Any file`](#scopes)

1531* **Type**: objek dengan `allow`, `ask`, `deny`, `additionalDirectories`, `blockReadsOutsideWorkingDirectories`, `defaultMode`, `disableBypassPermissionsMode`, dan `disableAutoMode`1540* **Type**: objek dengan `allow`, `ask`, `deny`, `additionalDirectories`, `blockReadsOutsideWorkingDirectories`, `defaultMode`, `disableBypassPermissionsMode`, dan `disableAutoMode`

1532* **Default**: tidak diatur1541* **Default**: tidak diatur

1533 1542 

1534Contoh ini menyetujui perintah `npm run` tanpa bertanya, meminta sebelum `git push`, memblokir pembacaan `.env`, dan memulai sesi dalam `acceptEdits`:1543Contoh ini menyetujui perintah `npm run` tanpa bertanya, meminta konfirmasi sebelum `git push`, memblokir pembacaan `.env`, dan memulai sesi dalam `acceptEdits`:

1535 1544 

1536```json settings.json theme={null}1545```json settings.json theme={null}

1537{1546{


1544}1553}

1545```1554```

1546 1555 

1547Tiga array aturan berbagi satu sintaks; lihat [Sintaks aturan izin](#permission-rule-syntax) di bawah `permissions.allow`. Untuk bagaimana aturan izin dari file berbeda bergabung, lihat [bagaimana aturan izin bergabung di seluruh scope](/docs/id/permissions#settings-precedence); untuk bagaimana kunci pengaturan secara umum bergabung, lihat [Preseden pengaturan](/docs/id/settings#settings-precedence) pada panduan pengaturan.1556Tiga array aturan berbagi satu sintaks; lihat [Sintaks aturan izin](#permission-rule-syntax) di bawah `permissions.allow`. Untuk bagaimana aturan izin dari file berbeda digabungkan, lihat [bagaimana aturan izin digabungkan di seluruh cakupan](/docs/id/permissions#settings-precedence); untuk bagaimana kunci pengaturan secara umum digabungkan, lihat [Prioritas pengaturan](/docs/id/settings#settings-precedence) pada panduan pengaturan.

1548 1557 

1549<h3 id="useautomodeduringplan">1558<h3 id="useautomodeduringplan">

1550 `useAutoModeDuringPlan`1559 `useAutoModeDuringPlan`

1551</h3>1560</h3>

1552 1561 

1553Pilih apakah Claude Code menggunakan pengklasifikasi mode otomatis untuk meninjau perintah shell dalam mode rencana. Dengan default `true`, pengklasifikasi meninjau setiap perintah selama perencanaan ketika mode otomatis tersedia dan Anda tidak melihat prompt, kecuali untuk [penghapusan jalur kritis](/docs/id/permission-modes#critical-paths). Atur `false` untuk mendapatkan prompt izin untuk setiap perintah di luar set bawaan hanya-baca. Muncul dalam `/config` sebagai **Use auto mode during plan**.1562Pilih apakah Claude Code menggunakan pengklasifikasi auto mode untuk meninjau perintah shell dalam plan mode. Dengan default `true`, pengklasifikasi meninjau setiap perintah selama perencanaan ketika auto mode tersedia dan Anda tidak melihat permintaan izin, kecuali untuk [penghapusan jalur kritis](/docs/id/permission-modes#critical-paths). Atur `false` untuk mendapatkan permintaan izin untuk setiap perintah di luar set read-only bawaan. Muncul dalam `/config` sebagai **Use auto mode during plan**.

1554 1563 

1555* **Scope**: [`User, local, or managed`](#scopes). Repositori tidak dapat mematikannya untuk Anda.1564* **Scope**: [`User, local, or managed`](#scopes). Repositori tidak dapat mematikannya untuk Anda.

1556* **Type**: Boolean1565* **Type**: Boolean

1557 * `true`: sama dengan tidak diatur; ketika mode otomatis tersedia, pengklasifikasi meninjau setiap perintah shell selama perencanaan alih-alih meminta Anda, kecuali [penghapusan jalur kritis](/docs/id/permission-modes#critical-paths). `false` di salah satu file ini masih mematikannya1566 * `true`: sama dengan tidak diatur; ketika auto mode tersedia, pengklasifikasi meninjau setiap perintah shell selama perencanaan alih-alih meminta persetujuan Anda, kecuali [penghapusan jalur kritis](/docs/id/permission-modes#critical-paths). `false` di salah satu file ini masih mematikannya

1558 * `false`: Anda mendapatkan prompt izin untuk setiap perintah di luar set bawaan hanya-baca1567 * `false`: Anda mendapatkan permintaan izin untuk setiap perintah di luar set read-only bawaan

1559* **Default**: `true`1568* **Default**: `true`

1560 1569 

1561```json settings.json theme={null}1570```json settings.json theme={null}


1568 `permissions.allow`1577 `permissions.allow`

1569</h3>1578</h3>

1570 1579 

1571Daftar penggunaan alat yang disetujui Claude Code tanpa bertanya kepada Anda. Dalam aturan MCP, `*` hanya dapat muncul dalam nama alat setelah awalan `mcp__<server>__`, seperti `mcp__github__get_*`; tidak dapat muncul dalam nama server.1580Daftar penggunaan tool yang disetujui Claude Code tanpa bertanya kepada Anda. Dalam aturan MCP, `*` hanya dapat muncul dalam nama tool setelah awalan `mcp__<server>__`, seperti `mcp__github__get_*`; tidak dapat muncul dalam nama server.

1572 1581 

1573* **Scope**: [`Any file`](#scopes)1582* **Scope**: [`Any file`](#scopes)

1574* **Type**: array string aturan izin1583* **Type**: array string aturan izin

1575* **Default**: tidak diatur1584* **Default**: tidak diatur

1576* **Per-session overrides**: `--allowedTools` menambahkan aturan izin untuk satu sesi, dan aturan blokir dari file pengaturan apa pun masih memblokir alat yang dinamainya1585* **Per-session overrides**: `--allowedTools` menambahkan aturan allow untuk satu sesi, dan aturan deny dari file pengaturan apa pun masih memblokir tool yang dinamainya

1577 1586 

1578Contoh ini menyetujui `git diff` dan memungkinkan Claude Code membaca `.zshrc` Anda tanpa bertanya:1587Contoh ini menyetujui `git diff` dan memungkinkan Claude Code membaca `.zshrc` Anda tanpa bertanya:

1579 1588 


1585}1594}

1586```1595```

1587 1596 

1588Claude Code menerapkan aturan `allow` dari `.claude/settings.json` proyek hanya setelah Anda menerima [dialog kepercayaan ruang kerja](/docs/id/permissions#project-allow-rules-and-workspace-trust) untuk folder itu.1597Claude Code menerapkan aturan `allow` dari `.claude/settings.json` proyek hanya setelah Anda menerima [dialog kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust) untuk folder itu.

1589 1598 

1590<h4 id="permission-rule-syntax">1599<h4 id="permission-rule-syntax">

1591 Sintaks aturan izin1600 Sintaks aturan izin


1593 1602 

1594Aturan izin mengikuti format `Tool` atau `Tool(specifier)`. Claude Code mengevaluasi aturan `deny` terlebih dahulu, kemudian `ask`, kemudian `allow`, dan kecocokan pertama memutuskan terlepas dari seberapa spesifik setiap aturan; lihat [urutan evaluasi aturan izin](/docs/id/permissions#manage-permissions).1603Aturan izin mengikuti format `Tool` atau `Tool(specifier)`. Claude Code mengevaluasi aturan `deny` terlebih dahulu, kemudian `ask`, kemudian `allow`, dan kecocokan pertama memutuskan terlepas dari seberapa spesifik setiap aturan; lihat [urutan evaluasi aturan izin](/docs/id/permissions#manage-permissions).

1595 1604 

1596Setiap baris menunjukkan satu bentuk aturan dan apa yang cocok.1605Setiap baris menunjukkan satu bentuk aturan dan apa yang cocok dengannya.

1597 1606 

1598| Rule | What it matches |1607| Aturan | Apa yang cocok |

1599| :- | :- |1608| :- | :- |

1600| `Bash` | Every Bash command |1609| `Bash` | Setiap perintah Bash |

1601| `Bash(npm run *)` | Commands starting with `npm run` |1610| `Bash(npm run *)` | Perintah yang dimulai dengan `npm run` |

1602| `Read(./.env)` | Reads of the `.env` file |1611| `Read(./.env)` | Pembacaan file `.env` |

1603| `WebFetch(domain:example.com)` | Fetch requests to example.com |1612| `WebFetch(domain:example.com)` | Permintaan fetch ke example.com |

1604 1613 

1605Untuk sintaks aturan lengkap, termasuk perilaku wildcard, pola khusus alat untuk Read, Edit, WebFetch, MCP, dan aturan Agent, dan keterbatasan keamanan pola Bash, lihat [Sintaks aturan izin](/docs/id/permissions#permission-rule-syntax).1614Untuk sintaks aturan lengkap, termasuk perilaku wildcard, pola khusus tool untuk aturan Read, Edit, WebFetch, MCP, dan Agent, serta keterbatasan keamanan pola Bash, lihat [Sintaks aturan izin](/docs/id/permissions#permission-rule-syntax).

1606 1615 

1607<h3 id="permissions-ask">1616<h3 id="permissions-ask">

1608 `permissions.ask`1617 `permissions.ask`

1609</h3>1618</h3>

1610 1619 

1611Daftar penggunaan alat yang meminta Anda untuk konfirmasi bahkan dalam mode izin yang sebaliknya akan menyetujuinya, seperti `acceptEdits` atau `bypassPermissions`. Dalam mode `dontAsk` Claude Code menolak penggunaan alat yang cocok alih-alih meminta.1620Daftar penggunaan tool yang meminta konfirmasi Anda bahkan dalam mode izin yang sebaliknya akan menyetujuinya, seperti `acceptEdits` atau `bypassPermissions`. Dalam mode `dontAsk` Claude Code menolak penggunaan tool yang cocok alih-alih meminta konfirmasi.

1612 1621 

1613* **Scope**: [`Any file`](#scopes)1622* **Scope**: [`Any file`](#scopes)

1614* **Type**: array string aturan izin1623* **Type**: array string aturan izin


1628 `permissions.deny`1637 `permissions.deny`

1629</h3>1638</h3>

1630 1639 

1631Daftar penggunaan alat yang diblokir Claude Code. Gunakan untuk file yang menyimpan kunci API, rahasia, atau nilai lingkungan: Claude Code mengecualikan file yang cocok dari penemuan file dan hasil pencarian, menolak pembacaan mereka, dan memblokir [alat Edit dan Write](/docs/id/permissions#read-and-edit) pada jalur yang cocok.1640Daftar penggunaan tool yang diblokir Claude Code. Gunakan untuk file yang menyimpan kunci API, rahasia, atau nilai lingkungan: Claude Code mengecualikan file yang cocok dari penemuan file dan hasil pencarian, menolak pembacaannya, dan memblokir [tool Edit dan Write](/docs/id/permissions#read-and-edit) pada jalur yang cocok.

1632 1641 

1633Aturan blokir Read dan Edit berlaku untuk alat file bawaan Claude, untuk perintah file yang dikenali Claude Code dalam Bash, seperti `cat`, `head`, `tail`, `sed`, dan `tee`, dan untuk target Bash [pengalihan](/docs/id/permissions#redirections) seperti `> file` dan `< file`; mereka tidak berlaku untuk perintah yang membaca file tanpa menamakannya, seperti `grep -r pattern .`, atau untuk subprocess arbitrer, jadi untuk penegakan tingkat OS [aktifkan sandbox](/docs/id/sandboxing).1642Aturan deny Read dan Edit berlaku untuk tool file bawaan Claude, untuk perintah file yang dikenali Claude Code dalam Bash, seperti `cat`, `head`, `tail`, `sed`, dan `tee`, dan untuk target [pengalihan](/docs/id/permissions#redirections) Bash seperti `> file` dan `< file`; aturan tersebut tidak berlaku untuk perintah yang membaca file tanpa menamakannya, seperti `grep -r pattern .`, atau untuk subprocess arbitrer, jadi untuk penegakan tingkat OS [aktifkan sandbox](/docs/id/sandboxing).

1634 1643 

1635* **Scope**: [`Any file`](#scopes)1644* **Scope**: [`Any file`](#scopes)

1636* **Type**: array string aturan izin1645* **Type**: array string aturan izin

1637* **Default**: tidak diatur1646* **Default**: tidak diatur

1638* **Per-session overrides**: `--disallowedTools` menambahkan aturan blokir untuk satu sesi bersama kunci ini1647* **Per-session overrides**: `--disallowedTools` menambahkan aturan deny untuk satu sesi bersama kunci ini

1639 1648 

1640Contoh ini menolak pembacaan file `.env`, direktori `secrets`, dan file kredensial, serta memblokir perintah `curl`:1649Contoh ini menolak pembacaan file `.env`, direktori `secrets`, dan file kredensial, serta memblokir perintah `curl`:

1641 1650 


1653}1662}

1654```1663```

1655 1664 

1656Nama alat menerima pola glob, jadi `"*"` memblokir setiap alat dan `"mcp__*"` memblokir setiap alat MCP. Claude Code mengabaikan aturan blokir untuk alat [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) selama alat lain masih tersedia untuk Claude. Aturan blokir `Bash` cocok dengan perintah seperti yang ditulis Claude, jadi `Bash(curl *)` tidak menghentikan `/usr/bin/curl` atau `sh -c 'curl …'`; lihat [apa yang tidak cocok dengan aturan Bash](/docs/id/permissions#bash-rule-limits). Kunci ini menggantikan konfigurasi `ignorePatterns` yang sudah usang.1665Nama tool menerima pola glob, jadi `"*"` memblokir setiap tool dan `"mcp__*"` memblokir setiap tool MCP. Claude Code mengabaikan aturan deny untuk tool [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) selama tool lain masih tersedia untuk Claude. Aturan deny `Bash` cocok dengan perintah seperti yang ditulis Claude, jadi `Bash(curl *)` tidak menghentikan `/usr/bin/curl` atau `sh -c 'curl …'`; lihat [apa yang tidak cocok dengan aturan Bash](/docs/id/permissions#bash-rule-limits). Kunci ini menggantikan konfigurasi `ignorePatterns` yang sudah deprecated.

1657 1666 

1658<h3 id="permissions-additionaldirectories">1667<h3 id="permissions-additionaldirectories">

1659 `permissions.additionalDirectories`1668 `permissions.additionalDirectories`

1660</h3>1669</h3>

1661 1670 

1662Berikan akses file Claude ke direktori di luar yang Anda mulai, sebagai [direktori kerja](/docs/id/permissions#working-directories) tambahan. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori ini.1671Berikan akses file kepada Claude ke direktori di luar direktori tempat Anda memulai, sebagai [direktori kerja](/docs/id/permissions#working-directories) tambahan. Sebagian besar konfigurasi `.claude/` [tidak ditemukan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) dari direktori ini.

1663 1672 

1664* **Scope**: [`Any file`](#scopes)1673* **Scope**: [`Any file`](#scopes), dengan [batasan pada akses tulis sandbox](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox) yang diberikan oleh entri proyek dan lokal

1665* **Type**: array jalur direktori1674* **Type**: array jalur direktori

1666* **Default**: tidak diatur1675* **Default**: tidak diatur

1667* **Per-session overrides**: `--add-dir` dan `/add-dir` menambahkan direktori untuk satu sesi bersama kunci ini1676* **Per-session overrides**: `--add-dir` dan `/add-dir` menambahkan direktori untuk satu sesi bersama kunci ini


1674}1683}

1675```1684```

1676 1685 

1677Seperti aturan `allow`, entri dalam `.claude/settings.json` proyek berlaku hanya setelah Anda menerima [dialog kepercayaan ruang kerja](/docs/id/permissions#project-allow-rules-and-workspace-trust) untuk folder itu.1686Seperti aturan `allow`, entri dalam `.claude/settings.json` proyek berlaku hanya setelah Anda menerima [dialog kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust) untuk folder itu.

1678 1687 

1679<h3 id="permissions-blockreadsoutsideworkingdirectories">1688<h3 id="permissions-blockreadsoutsideworkingdirectories">

1680 `permissions.blockReadsOutsideWorkingDirectories`1689 `permissions.blockReadsOutsideWorkingDirectories`

1681</h3>1690</h3>

1682 1691 

1683Buat alat file Claude menolak pembacaan di luar [direktori kerja](/docs/id/permissions#working-directories) Anda dalam setiap mode izin, termasuk `bypassPermissions`. Claude Code menolak panggilan `Read`, `Grep`, `Glob`, dan `LSP` pada jalur tersebut dan memberi tahu Claude untuk meminta Anda menambahkan direktori dengan `/add-dir`. File yang dibutuhkan Claude Code sendiri tetap dapat dibaca, seperti keterampilan, plugin, aturan, agen, perintah Anda, dan file memori `CLAUDE.md` di bawah `~/.claude/`. Memerlukan Claude Code v2.1.257 atau lebih baru.1692Buat tool file Claude menolak pembacaan di luar [direktori kerja](/docs/id/permissions#working-directories) Anda dalam setiap mode izin, termasuk `bypassPermissions`. Claude Code menolak panggilan `Read`, `Grep`, `Glob`, dan `LSP` pada jalur tersebut dan memberi tahu Claude untuk meminta Anda menambahkan direktori dengan `/add-dir`. File yang dibutuhkan Claude Code sendiri tetap dapat dibaca, seperti skill, plugin, aturan, agent, perintah Anda, dan file memori `CLAUDE.md` di bawah `~/.claude/`. Memerlukan Claude Code v2.1.257 atau lebih baru.

1684 1693 

1685Claude Code tidak menolak perintah shell dengan cara yang sama:1694Claude Code tidak menolak perintah shell dengan cara yang sama:

1686 1695 

1687* [Tindakan yang tidak ada mode auto-setujui](/docs/id/permission-modes#actions-no-mode-auto-approves) mencakup kapan perintah shell yang membaca jalur tersebut meminta Anda1696* [Tindakan yang tidak disetujui otomatis oleh mode mana pun](/docs/id/permission-modes#actions-no-mode-auto-approves) mencakup kapan perintah shell yang membaca jalur tersebut meminta konfirmasi Anda

1688* [Perintah sandboxed di bawah blokir](#sandboxed-commands-under-the-block) mencakup apa yang dapat dibaca perintah sandboxed1697* [Perintah sandboxed di bawah blokir](#sandboxed-commands-under-the-block) mencakup apa yang dapat dibaca perintah sandboxed

1689 1698 

1690Perintah Bash yang tidak dapat dilacak oleh parser shell, seperti yang mengubah direktori lebih dari sekali atau menjalankan subshell, meminta Anda bahkan dalam mode otomatis dan mode `bypassPermissions`. Prompt muncul bahkan ketika perintah tidak menamai jalur apa pun di luar direktori kerja. Prompt ini tidak berlaku ketika perintah berjalan dalam [sandbox](/docs/id/sandboxing) dan sandbox memberlakukan blokir.1699Perintah Bash yang tidak dapat dilacak oleh parser shell, seperti yang mengubah direktori lebih dari sekali atau menjalankan subshell, meminta konfirmasi Anda bahkan dalam auto mode dan mode `bypassPermissions`. Permintaan izin muncul bahkan ketika perintah tidak menamai jalur apa pun di luar direktori kerja. Permintaan izin ini tidak berlaku ketika perintah berjalan dalam [sandbox](/docs/id/sandboxing) dan sandbox memberlakukan blokir.

1691 1700 

1692Claude Code juga menulis `true` di sini ketika Anda memilih untuk memblokir pembacaan tersebut pada [prompt mode otomatis sebelum pembacaan pertama di luar direktori kerja](/docs/id/permission-modes#first-read-outside-the-working-directories).1701Claude Code juga menulis `true` di sini ketika Anda memilih untuk memblokir pembacaan tersebut pada [permintaan izin auto mode sebelum pembacaan pertama di luar direktori kerja](/docs/id/permission-modes#first-read-outside-the-working-directories).

1693 1702 

1694* **Scope**: [`Any file`](#scopes). `true` di file apa pun berlaku, jadi repositori dapat mengaktifkan blokir untuk dirinya sendiri tetapi tidak dapat mengangkat blokir Anda.1703* **Scope**: [`Any file`](#scopes). `true` di file apa pun berlaku, jadi repositori dapat mengaktifkan blokir untuk dirinya sendiri tetapi tidak dapat mengangkat blokir Anda.

1695* **Type**: Boolean1704* **Type**: Boolean

1696 * `true`: alat file Claude menolak pembacaan di luar direktori kerja1705 * `true`: tool file Claude menolak pembacaan di luar direktori kerja

1697 * `false`: sama dengan tidak diatur; blokir masih berlaku jika file lain menetapkan `true`1706 * `false`: sama dengan tidak diatur; blokir masih berlaku jika file lain menetapkan `true`

1698* **Default**: tidak diatur, jadi pembacaan di luar direktori kerja mengikuti [mode izin](/docs/id/permission-modes) Anda1707* **Default**: tidak diatur, jadi pembacaan di luar direktori kerja mengikuti [mode izin](/docs/id/permission-modes) Anda

1699 1708 


1705}1714}

1706```1715```

1707 1716 

1708Direktori yang Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `additionalDirectories` dalam pengaturan pengguna atau terkelola Anda dihitung sebagai direktori kerja untuk blokir. Direktori yang ditambahkan hanya dalam pengaturan repositori tidak dihitung: yang ada di `.claude/settings.json`, dan yang ada di `.claude/settings.local.json` kecuali git melaporkan file itu sebagai tidak dilacak. Dalam direktori yang bukan repositori git, atau ketika git melacak file, Claude Code memperlakukan `.claude/settings.local.json` sebagai pengaturan yang disediakan repositori, jadi letakkan direktori yang ingin Anda tetap dapat dibaca dalam pengaturan pengguna Anda sebagai gantinya.1717Direktori yang Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `additionalDirectories` dalam pengaturan pengguna atau terkelola Anda dihitung sebagai direktori kerja untuk blokir. Direktori yang ditambahkan hanya dalam pengaturan repositori tidak dihitung: yang ada di `.claude/settings.json`, dan yang ada di `.claude/settings.local.json` kecuali git melaporkan file itu sebagai tidak dilacak. Dalam direktori yang bukan repositori git, atau ketika git melacak file tersebut, Claude Code memperlakukan `.claude/settings.local.json` sebagai pengaturan repositori, jadi letakkan direktori yang ingin tetap dapat dibaca dalam pengaturan pengguna Anda sebagai gantinya.

1709 1718 

1710Ketika [`autoMemoryDirectory`](#automemorydirectory) berasal dari `.claude/settings.json` proyek, atau dari `.claude/settings.local.json` [diperlakukan sebagai disediakan repositori](/docs/id/permissions#when-your-local-settings-file-needs-trust), Claude Code tidak memuat [memori otomatis](/docs/id/memory#storage-location) apa pun dari direktori itu dan tidak menyimpan apa pun ke dalamnya.1719Ketika [`autoMemoryDirectory`](#automemorydirectory) berasal dari `.claude/settings.json` proyek, atau dari `.claude/settings.local.json` yang [diperlakukan sebagai disediakan repositori](/docs/id/permissions#when-your-local-settings-file-needs-trust), Claude Code tidak memuat [auto memory](/docs/id/memory#storage-location) apa pun dari direktori itu dan tidak menyimpan apa pun ke dalamnya.

1711 1720 

1712Untuk mengangkat blokir, hapus kunci dari setiap file pengaturan yang menetapkannya, kemudian mulai sesi baru.1721Untuk mengangkat blokir, hapus kunci dari setiap file pengaturan yang menetapkannya, kemudian mulai sesi baru.

1713 1722 


1715 Perintah sandboxed di bawah blokir1724 Perintah sandboxed di bawah blokir

1716</h4>1725</h4>

1717 1726 

1718Ketika [sandboxing](/docs/id/sandboxing) aktif, blokir juga mencakup perintah sandboxed. Claude Code menolak mereka akses baca ke direktori home Anda dan ke akar lain yang menyimpan file pengguna: `/Users`, `/home`, `/root`, `/Volumes`, `/mnt`, `/media`, `/run/media`, dan `/srv`. Kemudian membuka kembali direktori kerja, [worktrees](/docs/id/worktrees) yang Claude Code buat dalam sesi, direktori temp sesi, dan bagian dari `~/.claude` yang dibutuhkan perintah, seperti keterampilan dan plugin. Saat blokir berlaku, entri `allowRead` dan `allowWrite` dari pengaturan repositori tidak dihitung.1727Ketika [sandboxing](/docs/id/sandboxing) aktif, blokir juga mencakup perintah sandboxed. Claude Code menolak akses baca perintah tersebut ke direktori home Anda dan ke akar lain yang menyimpan file pengguna: `/Users`, `/home`, `/root`, `/Volumes`, `/mnt`, `/media`, `/run/media`, dan `/srv`. Kemudian Claude Code membuka kembali direktori kerja, [worktree](/docs/id/worktrees) yang dibuat Claude Code dalam sesi, direktori temp sesi, dan bagian dari `~/.claude` yang dibutuhkan perintah, seperti skill dan plugin. Saat blokir berlaku, entri `allowRead` dan `allowWrite` dari pengaturan repositori tidak dihitung.

1719 1728 

1720Ketika direktori kerja sesi adalah [git worktree](/docs/id/worktrees) yang ditautkan, termasuk yang dimasuki Claude Code di tengah sesi, direktori `.git` umum repositori tetap dapat dibaca dan ditulis ke perintah sandboxed, sehingga git terus bekerja di sana.1729Ketika direktori kerja sesi adalah [git worktree](/docs/id/worktrees) yang ditautkan, termasuk yang dimasuki Claude Code di tengah sesi, direktori `.git` umum repositori tetap dapat dibaca dan ditulis oleh perintah sandboxed, sehingga git terus bekerja di sana.

1721 1730 

1722Dalam kasus-kasus ini blokir tidak menjangkau perintah sandboxed, sementara alat file Claude terus memberlakukannya:1731Dalam kasus-kasus ini blokir tidak menjangkau perintah sandboxed, sementara tool file Claude terus memberlakukannya:

1723 1732 

1724* Isolasi sistem file dimatikan melalui [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled)1733* Isolasi sistem file dimatikan melalui [`sandbox.filesystem.disabled`](#sandbox-filesystem-disabled)

1725* [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) diatur1734* [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) diatur

1726* Jalur direktori tempat Anda memulai Claude Code mengandung karakter glob seperti `*`, `?`, atau `[`1735* Jalur direktori tempat Anda memulai Claude Code mengandung karakter glob seperti `*`, `?`, atau `[`

1727 1736 

1728Di bawah blokir, Claude Code membuka kembali file konfigurasi git global Anda ke perintah sandboxed sehingga `git` tetap mempertahankan identitas dan pengaturan Anda:1737Di bawah blokir, Claude Code membuka kembali file konfigurasi git global Anda untuk perintah sandboxed sehingga `git` tetap mempertahankan identitas dan pengaturan Anda:

1729 1738 

1730* `~/.gitconfig`1739* `~/.gitconfig`

1731* File `config`, `ignore`, dan `attributes` di bawah `$XDG_CONFIG_HOME/git`, yang default ke `~/.config/git`1740* File `config`, `ignore`, dan `attributes` di bawah `$XDG_CONFIG_HOME/git`, yang default ke `~/.config/git`

1732* File yang dinamai konfigurasi git global Anda melalui `[include]`, `[includeIf]`, `core.excludesFile`, atau `core.attributesFile`1741* File yang dinamai konfigurasi git global Anda melalui `[include]`, `[includeIf]`, `core.excludesFile`, atau `core.attributesFile`

1733 1742 

1734Claude Code menilai setiap file secara terpisah. Ketika file terletak di mana perintah sandboxed dapat menulis, secara langsung atau melalui symlink, Claude Code tidak membuka kembali file yang dinamainya.1743Claude Code menilai setiap file secara terpisah. Ketika file terletak di tempat perintah sandboxed dapat menulis, secara langsung atau melalui symlink, Claude Code tidak membuka kembali file yang dinamainya.

1735 1744 

1736Di Linux dan WSL2, file konfigurasi yang merupakan symlink dapat tetap tidak dapat dibaca di jalurnya sendiri, dan `git` kemudian berjalan tanpanya. `~/.git-credentials` dan `$XDG_CONFIG_HOME/git/credentials` tetap diblokir.1745Di Linux dan WSL2, file konfigurasi yang merupakan symlink dapat tetap tidak dapat dibaca di jalurnya sendiri, dan `git` kemudian berjalan tanpanya. `~/.git-credentials` dan `$XDG_CONFIG_HOME/git/credentials` tetap diblokir.

1737 1746 

1738Jika file yang dibuka kembali menyimpan rahasia, seperti token `http.extraHeader`, tambahkan jalurnya ke [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Entri `denyRead` yang mencakup file selalu mengambil alih pembukaan kembali ini.1747Jika file yang dibuka kembali menyimpan rahasia, seperti token `http.extraHeader`, tambahkan jalurnya ke [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Entri `denyRead` yang mencakup file selalu diutamakan daripada pembukaan kembali ini.

1739 1748 

1740<h3 id="permissions-defaultmode">1749<h3 id="permissions-defaultmode">

1741 `permissions.defaultMode`1750 `permissions.defaultMode`

1742</h3>1751</h3>

1743 1752 

1744Atur [mode izin](/docs/id/permission-modes) yang dimulai sesi baru. Ketika Anda membiarkannya tidak diatur, sesi dimulai dalam [default bawaan](/docs/id/permission-modes#which-mode-a-session-starts-in) untuk rencana dan permukaan Anda.1753Atur [mode izin](/docs/id/permission-modes) yang digunakan saat sesi baru dimulai. Ketika Anda membiarkannya tidak diatur, sesi dimulai dalam [default bawaan](/docs/id/permission-modes#which-mode-a-session-starts-in) untuk surface Anda.

1745 1754 

1746* **Scope**: [`Any file`](#scopes). `auto` dan `bypassPermissions` tidak berlaku dari pengaturan proyek atau lokal, jadi atur mereka dalam `~/.claude/settings.json` sebagai gantinya. Sebelum v2.1.257, `bypassPermissions` berlaku dari file apa pun. Untuk percakapan yang dimulai ekstensi VS Code, Claude Code hanya membaca nilai pengguna, terkelola, dan `--settings`.1755* **Scope**: [`Any file`](#scopes). `auto` dan `bypassPermissions` tidak berlaku dari pengaturan proyek atau lokal, jadi atur keduanya dalam `~/.claude/settings.json` sebagai gantinya. Sebelum v2.1.257, `bypassPermissions` berlaku dari file apa pun. Untuk percakapan yang dimulai ekstensi VS Code, Claude Code hanya membaca nilai pengguna, terkelola, dan `--settings`.

1747* **Type**: string, salah satu dari:1756* **Type**: string, salah satu dari:

1748 * `"default"`: Claude Code hanya menjalankan pembacaan tanpa bertanya1757 * `"default"`: Claude Code hanya menjalankan pembacaan tanpa bertanya

1749 * `"acceptEdits"`: Claude Code juga menjalankan pengeditan file dan perintah sistem file umum seperti `mkdir` dan `mv` tanpa bertanya1758 * `"acceptEdits"`: Claude Code juga menjalankan pengeditan file dan perintah sistem file umum seperti `mkdir` dan `mv` tanpa bertanya

1750 * `"plan"`: Claude Code membaca dan merencanakan tetapi memblokir pengeditan sampai Anda menyetujui rencana1759 * `"plan"`: Claude Code membaca dan merencanakan tetapi memblokir pengeditan sampai Anda menyetujui rencana

1751 * `"auto"`: Claude Code menjalankan semuanya tanpa prompt rutin; sebelum tindakan seperti perintah shell dan permintaan jaringan berjalan, pengklasifikasi latar belakang memeriksa bahwa mereka selaras dengan permintaan Anda1760 * `"auto"`: Claude Code berjalan tanpa permintaan izin sehari-hari; sebelum tindakan seperti perintah shell dan permintaan jaringan berjalan, pengklasifikasi latar belakang memeriksa bahwa tindakan tersebut selaras dengan permintaan Anda

1752 * `"dontAsk"`: Claude Code secara otomatis menolak setiap panggilan yang sebaliknya akan meminta; pembacaan, tindakan lain yang tidak memerlukan persetujuan, dan alat yang sudah disetujui sebelumnya masih berjalan1761 * `"dontAsk"`: Claude Code secara otomatis menolak setiap panggilan yang sebaliknya akan meminta konfirmasi; pembacaan, tindakan lain yang tidak memerlukan persetujuan, dan tool yang sudah disetujui sebelumnya masih berjalan

1753 * `"bypassPermissions"`: Claude Code menjalankan semuanya tanpa bertanya1762 * `"bypassPermissions"`: Claude Code menjalankan semuanya tanpa bertanya

1754 * `"manual"`: alias untuk `"default"`, dalam Claude Code v2.1.200 atau lebih baru1763 * `"manual"`: alias untuk `"default"`, dalam Claude Code v2.1.200 atau lebih baru

1755* **Default**: tidak diatur1764* **Default**: tidak diatur

1756* **Per-session overrides**: `--permission-mode`, dan ekuivalennya `--dangerously-skip-permissions` untuk `bypassPermissions`, mengambil alih kunci ini untuk satu sesi1765* **Per-session overrides**: `--permission-mode`, dan ekuivalennya `--dangerously-skip-permissions` untuk `bypassPermissions`, diutamakan daripada kunci ini untuk satu sesi

1757 1766 

1758```json settings.json theme={null}1767```json settings.json theme={null}

1759{1768{


1763}1772}

1764```1773```

1765 1774 

1766Aturan izin berlapis di atas setiap mode: aturan `deny` memblokir dalam setiap mode, termasuk `bypassPermissions`. Lihat [Mode izin](/docs/id/permission-modes). `manual` menamai mode izin berlabel Manual dalam CLI dan ekstensi VS Code; alias memerlukan Claude Code v2.1.200 atau lebih baru. Dalam Claude Code di web, Claude Code hanya menghormati `acceptEdits`, `plan`, `default`, dan `auto` dari kunci ini. Untuk percakapan yang dimulai ekstensi VS Code, lihat [pengaturan mana yang dibaca ekstensi untuk mode izin awal](/docs/id/permission-modes#switch-permission-modes).1775Aturan izin berlapis di atas setiap mode: aturan `deny` memblokir dalam setiap mode, termasuk `bypassPermissions`. Lihat [Mode izin](/docs/id/permission-modes). `manual` menamai mode izin berlabel Manual dalam CLI dan ekstensi VS Code; alias ini memerlukan Claude Code v2.1.200 atau lebih baru. Dalam sesi cloud, Claude Code hanya menghormati `acceptEdits`, `plan`, `default`, dan `auto` dari kunci ini. Untuk percakapan yang dimulai ekstensi VS Code, lihat [pengaturan mana yang dibaca ekstensi untuk mode izin awal](/docs/id/permission-modes#switch-permission-modes).

1767 1776 

1768<h3 id="permissions-disablebypasspermissionsmode">1777<h3 id="permissions-disablebypasspermissionsmode">

1769 `permissions.disableBypassPermissionsMode`1778 `permissions.disableBypassPermissionsMode`

1770</h3>1779</h3>

1771 1780 

1772Cegah siapa pun memasuki mode `bypassPermissions`. Claude Code kemudian menolak flag `--dangerously-skip-permissions`, dan mengabaikan [definisi agen](/docs/id/sub-agents#permission-modes) `permissionMode: bypassPermissions`, jadi subagen berjalan dengan mode izin sesi induk.1781Cegah siapa pun memasuki mode `bypassPermissions`. Claude Code kemudian menolak flag `--dangerously-skip-permissions`, dan mengabaikan `permissionMode: bypassPermissions` dalam [definisi agent](/docs/id/sub-agents#permission-modes), sehingga subagent berjalan dengan mode izin sesi induk.

1773 1782 

1774* **Scope**: [`Any file`](#scopes). Biasanya diatur dalam [pengaturan terkelola](/docs/id/managed-settings) untuk menegakkan kebijakan organisasi.1783* **Scope**: [`Any file`](#scopes). Biasanya diatur dalam [pengaturan terkelola](/docs/id/managed-settings) untuk menegakkan kebijakan organisasi.

1775* **Type**: string `"disable"`1784* **Type**: string `"disable"`

1776* **Default**: tidak diatur1785* **Default**: tidak diatur

1777* **Per-session overrides**: kunci ini mengambil alih `--dangerously-skip-permissions`, yang ditolak Claude Code saat kunci diatur1786* **Per-session overrides**: kunci ini diutamakan daripada `--dangerously-skip-permissions`, yang ditolak Claude Code saat kunci diatur

1778 1787 

1779```json settings.json theme={null}1788```json settings.json theme={null}

1780{1789{


1790 `skipAutoPermissionPrompt`1799 `skipAutoPermissionPrompt`

1791</h3>1800</h3>

1792 1801 

1793Lewati pemberitahuan satu kali yang menjelaskan [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) yang ditampilkan Claude Code ketika Anda pertama kali memasuki mode otomatis sendiri, misalnya melalui pengaturan Anda sendiri atau pemilih mode, bukan ketika default bawaan memulai sesi di dalamnya. Claude Code menampilkan pemberitahuan itu sekali dan kemudian mencatat bahwa itu ditampilkan, jadi kunci ini hanya penting di mana pemberitahuan belum muncul.1802Lewati pemberitahuan satu kali yang menjelaskan [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) yang ditampilkan Claude Code ketika Anda pertama kali memasuki auto mode sendiri, misalnya melalui pengaturan Anda sendiri atau pemilih mode, bukan ketika default bawaan memulai sesi di dalamnya. Claude Code menampilkan pemberitahuan itu sekali dan kemudian mencatat bahwa pemberitahuan itu sudah ditampilkan, jadi kunci ini hanya penting di tempat pemberitahuan belum muncul.

1794 1803 

1795* **Scope**: [`User or managed`](#scopes). Repositori tidak dapat menetapkannya untuk Anda.1804* **Scope**: [`User or managed`](#scopes). Repositori tidak dapat menetapkannya untuk Anda.

1796* **Type**: Boolean1805* **Type**: Boolean

1797 * `true`: Claude Code melewati pemberitahuan1806 * `true`: Claude Code melewati pemberitahuan

1798 * `false`: sama dengan tidak diatur; pemberitahuan muncul sekali kecuali file lain ini menetapkan `true`1807 * `false`: sama dengan tidak diatur; pemberitahuan muncul sekali kecuali file lain di antara file ini menetapkan `true`

1799* **Default**: tidak diatur, jadi pemberitahuan muncul sekali1808* **Default**: tidak diatur, jadi pemberitahuan muncul sekali

1800 1809 

1801```json settings.json theme={null}1810```json settings.json theme={null}


1813* **Scope**: [`User, local, or managed`](#scopes). Repositori yang tidak dipercaya tidak dapat melewati dialog untuk Anda.1822* **Scope**: [`User, local, or managed`](#scopes). Repositori yang tidak dipercaya tidak dapat melewati dialog untuk Anda.

1814* **Type**: Boolean1823* **Type**: Boolean

1815 * `true`: Claude Code melewati dialog konfirmasi sebelum sesi memasuki mode `bypassPermissions`1824 * `true`: Claude Code melewati dialog konfirmasi sebelum sesi memasuki mode `bypassPermissions`

1816 * `false`: sama dengan tidak diatur; dialog muncul kecuali file lain ini menetapkan `true`1825 * `false`: sama dengan tidak diatur; dialog muncul kecuali file lain di antara file ini menetapkan `true`

1817* **Default**: tidak diatur, jadi dialog muncul1826* **Default**: tidak diatur, jadi dialog muncul

1818 1827 

1819```json settings.json theme={null}1828```json settings.json theme={null}


1832 `sandbox`1841 `sandbox`

1833</h3>1842</h3>

1834 1843 

1835Isolasi perintah Bash yang dijalankan Claude dari sistem file dan jaringan Anda dengan [sandboxing](/docs/id/sandboxing). Aktifkan sandbox dengan `enabled`, kemudian perluas atau perkecil apa yang dapat disentuh perintah bersandbox dengan sub-objek `filesystem`, `network`, dan `credentials`. Sandbox berjalan di macOS, Linux, dan WSL2.1844Isolasi perintah Bash yang dijalankan Claude dari sistem file dan jaringan Anda dengan [sandboxing](/docs/id/sandboxing). Aktifkan sandbox dengan `enabled`, kemudian perluas atau persempit apa yang dapat disentuh perintah bersandbox dengan sub-objek `filesystem`, `network`, dan `credentials`. Sandbox berjalan di macOS, Linux, dan WSL2.

1836 1845 

1837* **Scope**: [`Any file`](#scopes)1846* **Scope**: [`Any file`](#scopes)

1838* **Type**: object dengan `enabled`, `failIfUnavailable`, `autoAllowBashIfSandboxed`, `excludedCommands`, `allowUnsandboxedCommands`, `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `allowAppleEvents`, `bwrapPath`, `socatPath`, `ignoreViolations`, dan `ripgrep`, ditambah objek `filesystem`, `network`, dan `credentials`1847* **Type**: object dengan `enabled`, `failIfUnavailable`, `autoAllowBashIfSandboxed`, `excludedCommands`, `allowUnsandboxedCommands`, `enableWeakerNestedSandbox`, `enableWeakerNetworkIsolation`, `allowAppleEvents`, `bwrapPath`, `socatPath`, `ignoreViolations`, dan `ripgrep`, ditambah objek `filesystem`, `network`, dan `credentials`

1839* **Default**: tidak diatur, jadi Claude Code menjalankan perintah tanpa sandbox1848* **Default**: tidak diatur, jadi Claude Code menjalankan perintah tanpa sandbox

1840 1849 

1841Ini mengaktifkan sandbox, melewati prompt izin untuk perintah bersandbox, menjalankan `docker` di luar sandbox, membuka dua jalur penulisan tambahan, menyembunyikan file kredensial AWS Anda, dan pra-mengizinkan GitHub dan npm:1850Ini mengaktifkan sandbox, melewati permintaan izin untuk perintah bersandbox, menjalankan `docker` di luar sandbox, membuka dua jalur penulisan tambahan, menyembunyikan file kredensial AWS Anda, dan pra-mengizinkan GitHub dan npm:

1842 1851 

1843```json settings.json theme={null}1852```json settings.json theme={null}

1844{1853{


1857}1866}

1858```1867```

1859 1868 

1860Claude Code mengambil nilai kunci Boolean dari scope pengaturan dengan prioritas tertinggi yang menetapkannya, jadi `enabled` atau `failIfUnavailable` yang dikelola menggantikan apa pun yang ditetapkan pengembang. Ini menggabungkan kunci array di setiap scope pengaturan yang dimuat sesi, jadi pengembang dapat menambahkan entri; lihat [Keep developers from widening the policy](/docs/id/sandboxing#keep-developers-from-widening-the-policy) untuk kunci khusus yang dikelola. Untuk memerlukan sandbox untuk organisasi, lihat [Enforce sandboxing with managed settings](/docs/id/sandboxing#enforce-sandboxing-with-managed-settings).1869Ketika pengaturan terkelola menetapkan kunci Boolean seperti `enabled` atau `failIfUnavailable`, nilai tersebut menimpa apa pun yang ditetapkan pengembang. Claude Code menggabungkan kunci array di seluruh cakupan pengaturan yang dimuat sesi, jadi pengembang dapat menambahkan entri; lihat [Keep developers from widening the policy](/docs/id/sandboxing#keep-developers-from-widening-the-policy) untuk kunci khusus pengaturan terkelola. Untuk mewajibkan sandbox bagi organisasi, lihat [Enforce sandboxing with managed settings](/docs/id/sandboxing#enforce-sandboxing-with-managed-settings).

1861 1870 

1862<h3 id="sandbox-enabled">1871<h3 id="sandbox-enabled">

1863 `sandbox.enabled`1872 `sandbox.enabled`

1864</h3>1873</h3>

1865 1874 

1866Aktifkan [sandboxing](/docs/id/sandboxing) untuk perintah Bash. Ketika Anda memilih mode di panel `/sandbox`, Claude Code menulis kunci ini ke `.claude/settings.local.json` untuk proyek saat ini; atur di `~/.claude/settings.json` untuk sandbox setiap proyek.1875Aktifkan [sandboxing](/docs/id/sandboxing) untuk perintah Bash. Ketika Anda memilih mode di panel `/sandbox`, Claude Code menulis kunci ini ke `.claude/settings.local.json` untuk proyek saat ini; atur di `~/.claude/settings.json` untuk menerapkan sandbox pada setiap proyek.

1867 1876 

1868* **Scope**: [`Any file`](#scopes)1877* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

1869* **Type**: Boolean1878* **Type**: Boolean

1870 * `true`: Claude Code membuat sandbox untuk perintah Bash1879 * `true`: Claude Code membuat sandbox untuk perintah Bash

1871 * `false`: Perintah Bash berjalan tanpa sandbox1880 * `false`: Perintah Bash berjalan tanpa sandbox


1879}1888}

1880```1889```

1881 1890 

1882Di Linux dan WSL2 sandbox memerlukan `bubblewrap` dan `socat`; lihat [Set up Linux and WSL2](/docs/id/sandboxing#set-up-linux-and-wsl2). Ketika sandbox tidak dapat dimulai, Claude Code menampilkan peringatan dan menjalankan perintah tanpa sandbox kecuali Anda juga menetapkan [`failIfUnavailable`](#sandbox-failifunavailable).1891Di Linux dan WSL2 sandbox memerlukan `bubblewrap` dan `socat`; lihat [Set up Linux and WSL2](/docs/id/sandboxing#set-up-linux-and-wsl2). Ketika sandbox tidak dapat dimulai, Claude Code menjalankan perintah tanpa sandbox kecuali Anda juga menetapkan [`failIfUnavailable`](#sandbox-failifunavailable).

1883 1892 

1884<h3 id="sandbox-failifunavailable">1893<h3 id="sandbox-failifunavailable">

1885 `sandbox.failIfUnavailable`1894 `sandbox.failIfUnavailable`

1886</h3>1895</h3>

1887 1896 

1888Buat Claude Code keluar dengan kesalahan saat startup ketika `sandbox.enabled` adalah `true` tetapi sandbox tidak dapat dimulai, karena dependensi hilang atau platform tidak didukung. Tanpanya, Claude Code menampilkan peringatan dan menjalankan perintah tanpa sandbox. Gunakan di pengaturan yang dikelola ketika organisasi Anda memerlukan sandboxing sebagai gerbang keras.1897Buat Claude Code keluar dengan kesalahan saat startup ketika `sandbox.enabled` adalah `true` tetapi sandbox tidak dapat dimulai, karena dependensi hilang atau platform tidak didukung. Tanpa kunci ini, Claude Code menjalankan perintah tanpa sandbox. Deployment terkelola yang mewajibkan sandboxing sebagai gerbang keamanan dapat menggunakan pengaturan ini.

1889 1898 

1890* **Scope**: [`Any file`](#scopes)1899Di platform yang tidak didukung sandbox, Claude Code tidak dapat dimulai dengan kunci ini aktif. Lihat [Enforce sandboxing with managed settings](/docs/id/sandboxing#enforce-sandboxing-with-managed-settings).

1900 

1901* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

1891* **Type**: Boolean1902* **Type**: Boolean

1892 * `true`: Claude Code keluar dengan kesalahan saat startup ketika `sandbox.enabled` adalah `true` tetapi sandbox tidak dapat dimulai1903 * `true`: Claude Code keluar dengan kesalahan saat startup ketika `sandbox.enabled` adalah `true` tetapi sandbox tidak dapat dimulai

1893 * `false`: Claude Code menampilkan peringatan dan menjalankan perintah tanpa sandbox1904 * `false`: Claude Code menjalankan perintah tanpa sandbox ketika sandbox tidak dapat dimulai

1894* **Default**: `false`1905* **Default**: `false`

1895 1906 

1896Ini membuat setiap mesin yang dikelola membuat sandbox untuk perintah atau menolak untuk memulai:1907Ini membuat setiap mesin terkelola menjalankan perintah dalam sandbox atau menolak untuk dimulai:

1897 1908 

1898```json managed-settings.json theme={null}1909```json managed-settings.json theme={null}

1899{1910{


1910 `sandbox.autoAllowBashIfSandboxed`1921 `sandbox.autoAllowBashIfSandboxed`

1911</h3>1922</h3>

1912 1923 

1913Biarkan Claude Code menjalankan perintah Bash bersandbox tanpa prompt izin. Perintah yang tidak dapat berjalan di sandbox masih melalui alur izin reguler, dan aturan `deny` serta aturan `ask` yang dibatasi konten seperti `Bash(git push *)` masih berlaku; aturan `Bash` ask yang kosong dilewati untuk perintah bersandbox. Atur ke `false` untuk mengirim perintah bersandbox melalui alur izin reguler juga, yang tab **Mode** `/sandbox` sebut mode izin reguler.1924Biarkan Claude Code menjalankan perintah Bash bersandbox tanpa permintaan izin. Perintah yang tidak dapat berjalan di sandbox masih melalui alur izin reguler, dan aturan `deny` serta aturan `ask` yang dibatasi konten seperti `Bash(git push *)` masih berlaku; aturan `Bash` ask yang kosong dilewati untuk perintah bersandbox. Atur ke `false` untuk mengirim perintah bersandbox melalui alur izin reguler juga, yang disebut tab **Mode** `/sandbox` sebagai mode izin reguler.

1914 1925 

1915* **Scope**: [`Any file`](#scopes)1926* **Scope**: [`Any file`](#scopes)

1916* **Type**: Boolean1927* **Type**: Boolean

1917 * `true`: Claude Code menjalankan perintah Bash bersandbox tanpa prompt izin, tunduk pada aturan `deny` dan aturan `ask` yang dibatasi konten; `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` mematikan auto-allow1928 * `true`: Claude Code menjalankan perintah Bash bersandbox tanpa permintaan izin, tunduk pada aturan `deny` dan aturan `ask` yang dibatasi konten; `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` mematikan auto-allow

1918 * `false`: perintah bersandbox melalui alur izin reguler, jadi aturan allow dan mode izin Anda memutuskan. Tab **Mode** `/sandbox` menyebut ini mode izin reguler1929 * `false`: perintah bersandbox melalui alur izin reguler, jadi aturan allow dan mode izin Anda yang memutuskan. Tab **Mode** `/sandbox` menyebut ini mode izin reguler

1919* **Default**: `true`1930* **Default**: `true`

1920 1931 

1921Ini menjaga sandbox tetap aktif dan mengirim perintah bersandbox melalui alur izin reguler:1932Ini menjaga sandbox tetap aktif dan mengirim perintah bersandbox melalui alur izin reguler:


1929}1940}

1930```1941```

1931 1942 

1932Lihat [Sandbox modes](/docs/id/sandboxing#sandbox-modes) untuk apa yang masih diminta auto-allow mode dan cara kerjanya dalam plan mode.1943Lihat [Sandbox modes](/docs/id/sandboxing#sandbox-modes) untuk hal yang masih dimintakan izin dalam auto-allow mode dan cara kerjanya dalam plan mode.

1933 1944 

1934<h3 id="sandbox-excludedcommands">1945<h3 id="sandbox-excludedcommands">

1935 `sandbox.excludedCommands`1946 `sandbox.excludedCommands`

1936</h3>1947</h3>

1937 1948 

1938Beri nama perintah yang Claude Code jalankan di luar sandbox, seperti alat yang tidak berfungsi di bawahnya. Setiap entri menggunakan sintaks yang sama dengan konten aturan izin `Bash(...)` [permission rule](/docs/id/permissions#permission-rule-syntax): perintah yang tepat, awalan seperti `docker *`, atau pola wildcard.1949Sebutkan perintah yang dijalankan Claude Code di luar sandbox, seperti alat yang tidak berfungsi di dalamnya. Setiap entri menggunakan sintaks yang sama dengan konten [aturan izin](/docs/id/permissions#permission-rule-syntax) `Bash(...)`: perintah yang persis, awalan seperti `docker *`, atau pola wildcard. Pola tanpa wildcard adalah kecocokan persis, jadi `docker` hanya cocok dengan `docker` tanpa argumen.

1939 1950 

1940Entri Anda mengeluarkan panggilan Bash dari sandbox hanya ketika mereka mencakup setiap perintah di dalamnya, dan beberapa bentuk panggilan tetap bersandbox bahkan kemudian. Entri `docker *` saja tidak mengeluarkan `npm ci && docker build .` dari sandbox.1951Entri Anda mengeluarkan panggilan Bash dari sandbox hanya ketika entri tersebut mencakup setiap perintah di dalamnya, dan beberapa bentuk panggilan tetap bersandbox bahkan dalam kondisi itu. Entri `docker *` saja tidak mengeluarkan `npm ci && docker build .` dari sandbox.

1941 1952 

1942* **Scope**: [`Any file`](#scopes)1953* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

1943* **Type**: array pola perintah1954* **Type**: array pola perintah

1944* **Default**: tidak diatur, jadi tidak ada perintah yang dikecualikan1955* **Default**: tidak diatur, jadi tidak ada perintah yang dikecualikan

1945 1956 


1951}1962}

1952```1963```

1953 1964 

1954Claude Code menjaga panggilan Bash bersandbox ketika memiliki salah satu bentuk ini, di antara lainnya:1965Claude Code menjaga panggilan Bash tetap bersandbox ketika memiliki salah satu bentuk ini, di antara lainnya:

1955 1966 

1956* Perintah yang dimulai dengan `sudo`, `eval`, atau `xargs`1967* Perintah yang dimulai dengan `sudo`, `eval`, atau `xargs`

1957* `cd`, `pushd`, atau `popd`, di mana pun muncul dalam panggilan1968* `cd`, `pushd`, atau `popd`, di mana pun muncul dalam panggilan

1958* Substitusi perintah, subshell, atau blok alur kontrol seperti `if` atau `for`1969* Substitusi perintah, subshell, atau blok alur kontrol seperti `if` atau `for`

1959* Pengalihan, seperti `docker build . > build.log`, selain yang hanya menduplikasi deskriptor file, seperti `2>&1`1970* Pengalihan, seperti `docker build . > build.log`, selain yang hanya menduplikasi deskriptor file, seperti `2>&1`

1960* Nama perintah yang berasal dari variabel1971* Nama perintah yang berasal dari variabel

1972* `git clone`, `git init`, `git worktree add`, `git worktree move`, atau `git bundle create` dengan argumen jalur yang absolut, dimulai dengan `~`, atau berisi segmen `..`

1961 1973 

1962Misalnya, `cd build && docker compose up` tetap bersandbox di bawah entri `docker *`, dan menambahkan entri `cd` tidak mengubah itu.1974Misalnya, `cd build && docker compose up` tetap bersandbox di bawah entri `docker *`, dan menambahkan entri `cd` tidak mengubah itu. Di bawah entri `git *`, `git clone <url> vendor/lib` berjalan di luar sandbox, tetapi `git clone <url> ~/tools` tetap bersandbox. Sebuah clone menulis seluruh pohon file, mungkin termasuk file yang dapat dieksekusi, ke mana pun jalur tujuannya menunjuk.

1963 1975 

1964Perintah yang dikecualikan masih melalui alur izin reguler. Pengecualian adalah kenyamanan, bukan batas keamanan: lebih suka [`filesystem.allowWrite`](#sandbox-filesystem-allowwrite) ketika alat hanya perlu menulis ke tempat tertentu. Claude Code menggabungkan entri di setiap scope pengaturan yang dimuat sesi, dan tidak ada kunci khusus yang dikelola untuk daftar ini, jadi jaga daftar yang dikelola tetap sempit.1976Perintah yang dikecualikan masih melalui alur izin reguler. Pengecualian adalah kemudahan, bukan batas keamanan: ketika alat hanya perlu menulis ke tempat tertentu, [`filesystem.allowWrite`](#sandbox-filesystem-allowwrite) menjaganya tetap bersandbox.

1977 

1978Entri dari cakupan pengaturan yang dimuat sesi digabungkan menjadi satu daftar kecuali sandbox [diwajibkan admin](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox). Selama sandbox diwajibkan admin, Claude Code mengabaikan entri di `.claude/settings.json` dan `.claude/settings.local.json`, sehingga repositori yang di-clone tidak dapat mengeluarkan perintah dari sandbox. Entri di pengaturan terkelola, `--settings`, dan `~/.claude/settings.json` Anda tetap berlaku, dan tidak ada kunci khusus pengaturan terkelola yang mencakup daftar ini.

1965 1979 

1966<h3 id="sandbox-allowunsandboxedcommands">1980<h3 id="sandbox-allowunsandboxedcommands">

1967 `sandbox.allowUnsandboxedCommands`1981 `sandbox.allowUnsandboxedCommands`

1968</h3>1982</h3>

1969 1983 

1970Biarkan Claude mencoba ulang perintah di luar sandbox dengan parameter `dangerouslyDisableSandbox` setelah sandbox membloknya. Atur ke `false` sehingga Claude Code mengabaikan parameter itu sepenuhnya dan setiap perintah yang dijalankan Claude harus bersandbox atau muncul di [`excludedCommands`](#sandbox-excludedcommands). Tab **Overrides** `/sandbox` menampilkan status itu sebagai **Strict sandbox mode**. Gunakan `false` di pengaturan yang dikelola untuk kebijakan yang memerlukan sandboxing ketat.1984Biarkan Claude mencoba ulang perintah di luar sandbox dengan parameter `dangerouslyDisableSandbox` setelah sandbox memblokirnya. Ketika bernilai `false`, Claude Code mengabaikan parameter itu. Selama sandbox berjalan, perintah yang dijalankan Claude kemudian bersandbox kecuali cocok dengan entri [`excludedCommands`](#sandbox-excludedcommands). Tab **Overrides** `/sandbox` menampilkan status itu sebagai **Strict sandbox mode**. Nilai `false` di pengaturan terkelola mengaktifkan strict sandbox mode untuk pengembang yang dicakupnya.

1971 1985 

1972* **Scope**: [`Any file`](#scopes)1986* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#turn-off-the-retry-with-strict-sandbox-mode)

1973* **Type**: Boolean1987* **Type**: Boolean

1974 * `true`: Claude dapat mencoba ulang perintah di luar sandbox dengan parameter `dangerouslyDisableSandbox` setelah sandbox membloknya1988 * `true`: Claude dapat mencoba ulang perintah di luar sandbox dengan parameter `dangerouslyDisableSandbox` setelah sandbox memblokirnya

1975 * `false`: Claude Code mengabaikan parameter itu, jadi setiap perintah yang dijalankan Claude bersandbox atau muncul di `excludedCommands`1989 * `false`: Claude Code mengabaikan parameter itu, jadi selama sandbox berjalan, perintah yang dijalankan Claude bersandbox kecuali cocok dengan entri `excludedCommands`

1976* **Default**: `true`1990* **Default**: `true`

1977 1991 

1978Ini memberlakukan mode sandbox ketat untuk semua orang yang dicakup pengaturan yang dikelola:1992Ini memberlakukan strict sandbox mode untuk semua orang yang dicakup pengaturan terkelola:

1979 1993 

1980```json managed-settings.json theme={null}1994```json managed-settings.json theme={null}

1981{1995{


1986}2000}

1987```2001```

1988 2002 

1989Percobaan ulang tanpa sandbox melalui alur izin reguler, dengan prompt dalam Manual mode. Lihat [The unsandboxed retry escape hatch](/docs/id/sandboxing#the-unsandboxed-retry-escape-hatch).2003Nilai `false` dari pengaturan terkelola atau `--settings` juga membuat sandbox [diwajibkan admin](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox). Nilai `false` di pengaturan pengguna Anda tetap berlaku terhadap nilai `true` dari proyek, tetapi tidak membuat sandbox diwajibkan admin. Tetap berlaku terhadap nilai proyek memerlukan Claude Code v2.1.285 atau lebih baru.

1990 2004 

1991Untuk melihat kapan perintah yang Anda ketik sendiri di prompt mode shell [`!`](/docs/id/interactive-mode#shell-mode-with-prefix) berjalan bersandbox, lihat [strict sandbox mode](/docs/id/sandboxing#the-unsandboxed-retry-escape-hatch).2005Siapa yang menyetujui retry tanpa sandbox bergantung pada mode izin dan aturan allow Anda. Lihat [The unsandboxed retry escape hatch](/docs/id/sandboxing#the-unsandboxed-retry-escape-hatch).

2006 

2007Untuk melihat kapan perintah yang Anda ketik sendiri di [prompt mode shell `!`](/docs/id/interactive-mode#shell-mode-with-prefix) berjalan bersandbox, lihat [strict sandbox mode](/docs/id/sandboxing#turn-off-the-retry-with-strict-sandbox-mode).

1992 2008 

1993<h3 id="sandbox-filesystem">2009<h3 id="sandbox-filesystem">

1994 `sandbox.filesystem`2010 `sandbox.filesystem`

1995</h3>2011</h3>

1996 2012 

1997Kontrol jalur mana yang dapat dibaca dan ditulis perintah bersandbox. Secara default mereka dapat menulis ke direktori kerja, direktori temp sesi, dan direktori yang Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `permissions.additionalDirectories`, dan dapat membaca sisa sistem file, termasuk file kredensial. Perluas atau perkecil itu dengan empat daftar jalur, atau matikan lapisan sistem file dengan `disabled`. Lihat [Filesystem isolation](/docs/id/sandboxing#filesystem-isolation) untuk batas default.2013Kontrol jalur mana yang dapat dibaca dan ditulis perintah bersandbox. Secara default perintah tersebut dapat menulis ke direktori kerja, direktori temp per pengguna, dan direktori yang Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `permissions.additionalDirectories`, dan dapat membaca sisa sistem file, termasuk file kredensial. Perluas atau persempit itu dengan empat daftar jalur, atau matikan lapisan sistem file dengan `disabled`. Lihat [Filesystem isolation](/docs/id/sandboxing#filesystem-isolation) untuk batas default.

1998 2014 

1999* **Scope**: [`Any file`](#scopes)2015* **Scope**: [`Any file`](#scopes)

2000* **Type**: object dengan array `allowWrite`, `denyWrite`, `denyRead`, dan `allowRead`, ditambah Boolean `allowManagedReadPathsOnly` dan `disabled`2016* **Type**: object dengan array `allowWrite`, `denyWrite`, `denyRead`, dan `allowRead`, ditambah Boolean `allowManagedReadPathsOnly` dan `disabled`


2013}2029}

2014```2030```

2015 2031 

2016Claude Code memberlakukan daftar ini di batas sandbox OS, jadi mereka berlaku untuk setiap subprocess yang dimulai perintah bersandbox, seperti `kubectl`, `terraform`, atau `npm`. Claude Code menambahkan [permission rules](/docs/id/sandboxing#permission-rules) Anda ke daftar yang sama: aturan allow dan deny `Edit` ke `allowWrite` dan `denyWrite`, aturan deny `Read` ke `denyRead`, dan aturan allow dan deny `WebFetch(domain:...)` ke daftar domain [`network`](#sandbox-network).2032Claude Code memberlakukan daftar ini di batas sandbox OS, jadi daftar tersebut berlaku untuk setiap subprocess yang dimulai perintah bersandbox, seperti `kubectl`, `terraform`, atau `npm`. Claude Code menambahkan [aturan izin](/docs/id/sandboxing#permission-rules) Anda ke daftar yang sama: aturan allow dan deny `Edit` ke `allowWrite` dan `denyWrite`, aturan deny `Read` ke `denyRead`, dan aturan allow dan deny `WebFetch(domain:...)` ke daftar domain [`network`](#sandbox-network).

2017 2033 

2018Kecuali kunci khusus yang dikelola diatur, Claude Code menggabungkan setiap daftar di file pengaturan yang dimuat sesi. [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) membatasi `allowRead` ke entri dari pengaturan yang dikelola, dan [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) melakukan hal yang sama untuk domain yang diizinkan.2034Kecuali ada kunci yang berlaku, Claude Code menggabungkan daftar ini di seluruh file pengaturan yang dimuat sesi. [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) membatasi `allowRead` ke entri dari pengaturan terkelola, dan [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) melakukan hal yang sama untuk domain yang diizinkan. [Kunci repositori](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox) mengecualikan entri dari file pengaturan repositori.

2019 2035 

2020[Configure sandboxing](/docs/id/sandboxing#configure-sandboxing) mencakup sumber yang Anda kecualikan dengan `--setting-sources`. Ketika Anda mengedit daftar selama sesi, Claude Code [menerapkan perubahan ke sesi yang berjalan](/docs/id/settings#when-edits-take-effect).2036[Configure sandboxing](/docs/id/sandboxing#configure-sandboxing) mencakup sumber yang Anda kecualikan dengan `--setting-sources`. Ketika Anda mengedit daftar selama sesi, Claude Code [menerapkan perubahan ke sesi yang berjalan](/docs/id/settings#when-edits-take-effect).

2021 2037 


2023 Awalan jalur sandbox2039 Awalan jalur sandbox

2024</h4>2040</h4>

2025 2041 

2026Jalur di `allowWrite`, `denyWrite`, `denyRead`, `allowRead`, dan [`credentials.files`](#sandbox-credentials-files) diselesaikan dengan awalan mereka:2042Jalur di `allowWrite`, `denyWrite`, `denyRead`, `allowRead`, dan [`credentials.files`](#sandbox-credentials-files) diselesaikan berdasarkan awalannya:

2027 2043 

2028| Awalan | Arti | Contoh |2044| Awalan | Arti | Contoh |

2029| :- | :- | :- |2045| :- | :- | :- |


2031| `~/` | Relatif terhadap direktori home | `~/.kube` menjadi `$HOME/.kube` |2047| `~/` | Relatif terhadap direktori home | `~/.kube` menjadi `$HOME/.kube` |

2032| `./` atau tanpa awalan | Relatif terhadap akar proyek untuk pengaturan proyek, atau ke `~/.claude` untuk pengaturan pengguna | `./output` di `.claude/settings.json` diselesaikan ke `<project-root>/output` |2048| `./` atau tanpa awalan | Relatif terhadap akar proyek untuk pengaturan proyek, atau ke `~/.claude` untuk pengaturan pengguna | `./output` di `.claude/settings.json` diselesaikan ke `<project-root>/output` |

2033 2049 

2034Awalan `//path` untuk jalur absolut juga berfungsi. Jika Anda menggunakan `/path` dengan slash tunggal mengharapkan resolusi relatif proyek, beralih ke `./path`. Sintaks ini berbeda dari [Read and Edit permission rules](/docs/id/permissions#read-and-edit), yang menggunakan `//path` untuk absolut dan `/path` untuk relatif proyek: jalur sistem file sandbox menggunakan konvensi standar, jadi `/tmp/build` adalah jalur absolut.2050Awalan `//path` untuk jalur absolut juga berfungsi. Jika Anda menggunakan `/path` dengan slash tunggal dan mengharapkan resolusi relatif proyek, beralihlah ke `./path`. Sintaks ini berbeda dari [Read and Edit permission rules](/docs/id/permissions#read-and-edit), yang menggunakan `//path` untuk absolut dan `/path` untuk relatif proyek: jalur sistem file sandbox menggunakan konvensi standar, jadi `/tmp/build` adalah jalur absolut.

2035 2051 

2036Claude Code menghapus garis miring trailing dari jalur direktori, jadi `~/.aws` dan `~/.aws/` cocok dengan direktori yang sama. Sebelum v2.1.224, Claude Code meneruskan garis miring trailing ke sandbox, dan Claude masih dapat membaca atau menulis jalur di bawah entri `denyRead` atau `denyWrite` yang ditulis dengan satu.2052Claude Code menghapus garis miring di akhir jalur direktori, jadi `~/.aws` dan `~/.aws/` cocok dengan direktori yang sama. Sebelum v2.1.224, Claude Code meneruskan garis miring di akhir tersebut ke sandbox, dan Claude masih dapat membaca atau menulis jalur di bawah entri `denyRead` atau `denyWrite` yang ditulis dengan garis miring di akhir.

2037 2053 

2038Claude Code juga menghapus `/**` trailing, jadi `~/build/**` dan `~/build` mencakup direktori yang sama. Apakah wildcard seperti `*` berfungsi tergantung pada daftar mana entri berada dan pada platform:2054Claude Code juga menghapus `/**` di akhir, jadi `~/build/**` dan `~/build` mencakup direktori yang sama. Apakah wildcard seperti `*` berfungsi bergantung pada daftar tempat entri berada dan pada platform:

2039 2055 

2040* **`allowWrite` dan `denyWrite`**: di macOS, wildcard berfungsi. Di Linux dan WSL2, sandbox memasang jalur konkret, jadi Claude Code melewati entri yang berisi `*`, `?`, atau `[` setelah `/**` trailing dihapus, dan entri itu tidak berpengaruh. Claude Code menambahkan jalur dari aturan izin `Edit` Anda ke daftar ini, jadi batas yang sama berlaku untuk mereka, dan tab **Config** `/sandbox` memperingatkan tentang aturan izin `Edit` dan `Read` yang berisi wildcard.2056* **`allowWrite` dan `denyWrite`**: di macOS, wildcard berfungsi. Di Linux dan WSL2, sandbox memasang jalur konkret, jadi Claude Code melewati entri yang berisi `*`, `?`, atau `[` setelah `/**` di akhir dihapus, dan entri itu tidak berpengaruh. Claude Code menambahkan jalur dari aturan izin `Edit` Anda ke daftar ini, jadi batas yang sama berlaku untuknya, dan tab **Config** `/sandbox` memperingatkan tentang aturan izin `Edit` dan `Read` yang berisi wildcard.

2041* **`denyRead` dan `allowRead`**: wildcard berfungsi di setiap platform. Di Linux dan WSL2, Claude Code memperluas entri baca ke jalur konkret yang cocok, yang tidak dilakukannya untuk daftar tulis.2057* **`denyRead` dan `allowRead`**: wildcard berfungsi di setiap platform. Di Linux dan WSL2, Claude Code memperluas entri baca ke jalur konkret yang cocok, yang tidak dilakukannya untuk daftar tulis.

2042 2058 

2043<h3 id="sandbox-filesystem-allowwrite">2059<h3 id="sandbox-filesystem-allowwrite">

2044 `sandbox.filesystem.allowWrite`2060 `sandbox.filesystem.allowWrite`

2045</h3>2061</h3>

2046 2062 

2047Tambahkan jalur tempat perintah bersandbox dapat menulis, di luar direktori kerja, direktori temp sesi, dan direktori yang telah Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `permissions.additionalDirectories`. Gunakan ketika subprocess seperti `kubectl` atau alat build perlu menulis di luar proyek.2063Tambahkan jalur tempat perintah bersandbox dapat menulis, di luar direktori kerja, direktori temp per pengguna, dan direktori yang telah Anda tambahkan dengan `--add-dir`, `/add-dir`, atau `permissions.additionalDirectories`. Gunakan ketika subprocess seperti `kubectl` atau alat build perlu menulis di luar proyek.

2048 2064 

2049* **Scope**: [`Any file`](#scopes)2065* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

2050* **Type**: array string jalur, menggunakan [sandbox path prefixes](#sandbox-path-prefixes)2066* **Type**: array string jalur, menggunakan [sandbox path prefixes](#sandbox-path-prefixes)

2051* **Default**: tidak diatur, jadi perintah bersandbox dapat menulis ke direktori kerja, direktori temp sesi, direktori yang telah Anda tambahkan dengan `--add-dir` atau `/add-dir`, dan direktori di [`permissions.additionalDirectories`](#permissions-additionaldirectories)2067* **Default**: tidak diatur, jadi perintah bersandbox dapat menulis ke direktori kerja, direktori temp per pengguna, direktori yang telah Anda tambahkan dengan `--add-dir` atau `/add-dir`, dan direktori di [`permissions.additionalDirectories`](#permissions-additionaldirectories)

2052 2068 

2053Ini memungkinkan build menulis di bawah `/tmp/build` dan memungkinkan `kubectl` memperbarui kubeconfig Anda:2069Ini memungkinkan build menulis di bawah `/tmp/build` dan memungkinkan `kubectl` memperbarui kubeconfig Anda:

2054 2070 


2062}2078}

2063```2079```

2064 2080 

2065Claude Code menggabungkan entri `allowWrite` dan jalur dari aturan izin allow `Edit(...)` Anda di setiap scope pengaturan yang dimuat sesi, meninggalkan yang dari pengaturan repositori sementara [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) aktif. Entri `allowWrite` tidak dapat mengangkat [protected path](/docs/id/sandboxing#protected-paths).2081Claude Code menggabungkan entri `allowWrite` dan jalur dari aturan izin 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. [Kunci repositori](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox) juga dapat mengecualikan entri repositori. Entri `allowWrite` tidak dapat membuka [protected path](/docs/id/sandboxing#protected-paths).

2066 2082 

2067<h3 id="sandbox-filesystem-denywrite">2083<h3 id="sandbox-filesystem-denywrite">

2068 `sandbox.filesystem.denyWrite`2084 `sandbox.filesystem.denyWrite`

2069</h3>2085</h3>

2070 2086 

2071Blokir perintah bersandbox dari menulis ke jalur tertentu, termasuk jalur di dalam direktori yang dapat ditulis.2087Blokir perintah bersandbox dari menulis ke jalur tertentu, termasuk jalur di dalam direktori yang sebenarnya dapat ditulis.

2072 2088 

2073* **Scope**: [`Any file`](#scopes)2089* **Scope**: [`Any file`](#scopes)

2074* **Type**: array string jalur, menggunakan [sandbox path prefixes](#sandbox-path-prefixes)2090* **Type**: array string jalur, menggunakan [sandbox path prefixes](#sandbox-path-prefixes)

2075* **Default**: tidak diatur2091* **Default**: tidak diatur

2076 2092 

2077Ini menjaga perintah bersandbox dari mengubah konfigurasi sistem atau memasang binari:2093Ini mencegah perintah bersandbox mengubah konfigurasi sistem atau memasang binari:

2078 2094 

2079```json settings.json theme={null}2095```json settings.json theme={null}

2080{2096{


2086}2102}

2087```2103```

2088 2104 

2089Claude Code menggabungkan entri di setiap scope pengaturan yang dimuat sesi, dan menambahkan jalur dari aturan izin deny `Edit(...)` Anda.2105Claude Code menggabungkan entri di setiap cakupan pengaturan yang dimuat sesi, dan menambahkan jalur dari aturan izin deny `Edit(...)` Anda.

2090 2106 

2091<h3 id="sandbox-filesystem-denyread">2107<h3 id="sandbox-filesystem-denyread">

2092 `sandbox.filesystem.denyRead`2108 `sandbox.filesystem.denyRead`

2093</h3>2109</h3>

2094 2110 

2095Blokir perintah bersandbox dari membaca jalur tertentu, seperti file kredensial yang kebijakan baca default akan mengekspos. Untuk melindungi file kredensial dan menjaganya tetap dapat digunakan melalui proxy sandbox, lihat [`sandbox.credentials`](#sandbox-credentials) sebagai gantinya.2111Blokir perintah bersandbox dari membaca jalur tertentu, seperti file kredensial yang jika tidak akan terekspos oleh kebijakan baca default. Untuk melindungi file kredensial dan menjaganya tetap dapat digunakan melalui proxy sandbox, lihat [`sandbox.credentials`](#sandbox-credentials) sebagai gantinya.

2096 2112 

2097* **Scope**: [`Any file`](#scopes)2113* **Scope**: [`Any file`](#scopes)

2098* **Type**: array string jalur, menggunakan [sandbox path prefixes](#sandbox-path-prefixes)2114* **Type**: array string jalur, menggunakan [sandbox path prefixes](#sandbox-path-prefixes)

2099* **Default**: tidak diatur, jadi perintah bersandbox menjaga [default read access](/docs/id/sandboxing#filesystem-isolation), yang mencakup file kredensial seperti `~/.aws/credentials`2115* **Default**: tidak diatur, jadi perintah bersandbox mempertahankan [default read access](/docs/id/sandboxing#filesystem-isolation), yang mencakup file kredensial seperti `~/.aws/credentials`

2100 2116 

2101```json settings.json theme={null}2117```json settings.json theme={null}

2102{2118{


2108}2124}

2109```2125```

2110 2126 

2111Claude Code menggabungkan entri di setiap scope pengaturan yang dimuat sesi, dan menambahkan jalur dari aturan izin deny `Read(...)` Anda. Ketika [`filesystem.disabled`](#sandbox-filesystem-disabled) adalah `true`, Claude Code tidak memberlakukan entri ini.2127Claude Code menggabungkan entri di setiap cakupan pengaturan yang dimuat sesi, dan menambahkan jalur dari aturan izin deny `Read(...)` Anda. Ketika [`filesystem.disabled`](#sandbox-filesystem-disabled) adalah `true`, Claude Code tidak memberlakukan entri ini.

2112 2128 

2113<h3 id="sandbox-filesystem-allowread">2129<h3 id="sandbox-filesystem-allowread">

2114 `sandbox.filesystem.allowRead`2130 `sandbox.filesystem.allowRead`

2115</h3>2131</h3>

2116 2132 

2117Buka kembali pembacaan untuk jalur tertentu di dalam wilayah yang diblokir [`denyRead`](#sandbox-filesystem-denyread), untuk membangun akses baca hanya workspace. Entri `denyRead` yang tepat atau wildcard tetap diblokir di dalam `allowRead` yang lebih luas, seperti yang ditunjukkan [overlap table](/docs/id/sandboxing#configure-sandboxing). Ketika entri `denyRead` wildcard seperti `~/**/.env` cocok dengan direktori, Claude Code memblokir pembacaan isinya juga. Sebelum v2.1.236 di macOS, Claude Code membuka kembali jalur yang cocok dengan entri `denyRead` wildcard di mana pun entri `allowRead` yang lebih luas mencakupnya, dan meninggalkan isi direktori yang cocok dapat dibaca.2133Buka kembali pembacaan untuk jalur tertentu di dalam wilayah yang diblokir [`denyRead`](#sandbox-filesystem-denyread), untuk membangun akses baca yang hanya mencakup workspace. Entri `denyRead` yang persis atau wildcard tetap diblokir di dalam `allowRead` yang lebih luas, seperti yang ditunjukkan [overlap table](/docs/id/sandboxing#configure-sandboxing). Ketika entri `denyRead` wildcard seperti `~/**/.env` cocok dengan direktori, Claude Code juga memblokir pembacaan isinya. Sebelum v2.1.236 di macOS, Claude Code membuka kembali jalur yang cocok dengan entri `denyRead` wildcard di mana pun entri `allowRead` yang lebih luas mencakupnya, dan membiarkan isi direktori yang cocok tetap dapat dibaca.

2118 2134 

2119* **Scope**: [`Any file`](#scopes)2135* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

2120* **Type**: array string jalur, menggunakan [sandbox path prefixes](#sandbox-path-prefixes)2136* **Type**: array string jalur, menggunakan [sandbox path prefixes](#sandbox-path-prefixes)

2121* **Default**: tidak diatur2137* **Default**: tidak diatur

2122 2138 


2133}2149}

2134```2150```

2135 2151 

2136Claude Code menyelesaikan entri `.` ke akar proyek dalam pengaturan proyek dan ke `~/.claude` dalam pengaturan pengguna. Claude Code menggabungkan entri di setiap file pengaturan yang dimuat sesi kecuali [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) diatur, dan meninggalkan entri dari pengaturan repositori sementara [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) aktif.2152Claude Code menyelesaikan entri `.` ke akar proyek dalam pengaturan proyek dan ke `~/.claude` dalam pengaturan pengguna. Claude Code menggabungkan entri di seluruh file pengaturan yang dimuat sesi kecuali [`allowManagedReadPathsOnly`](#sandbox-filesystem-allowmanagedreadpathsonly) diatur, dan mengecualikan entri dari pengaturan repositori selama [`permissions.blockReadsOutsideWorkingDirectories`](#sandboxed-commands-under-the-block) aktif. [Kunci repositori](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox) juga dapat mengecualikan entri repositori.

2137 2153 

2138<h3 id="sandbox-filesystem-allowmanagedreadpathsonly">2154<h3 id="sandbox-filesystem-allowmanagedreadpathsonly">

2139 `sandbox.filesystem.allowManagedReadPathsOnly`2155 `sandbox.filesystem.allowManagedReadPathsOnly`

2140</h3>2156</h3>

2141 2157 

2142Hormati hanya entri [`allowRead`](#sandbox-filesystem-allowread) yang berasal dari pengaturan yang dikelola, jadi pengembang tidak dapat membuka kembali akses baca ke jalur yang diblokir organisasi Anda. Claude Code masih menggabungkan entri `denyRead` dari setiap scope pengaturan yang dimuat sesi.2158Hormati hanya entri [`allowRead`](#sandbox-filesystem-allowread) yang berasal dari pengaturan terkelola, sehingga pengembang tidak dapat membuka kembali akses baca ke jalur yang diblokir organisasi Anda. Claude Code tetap menggabungkan entri `denyRead` dari setiap cakupan pengaturan yang dimuat sesi.

2143 2159 

2144* **Scope**: [`Managed`](#scopes)2160* **Scope**: [`Managed`](#scopes)

2145* **Type**: Boolean2161* **Type**: Boolean

2146 * `true`: Claude Code menghormati hanya entri `allowRead` dari pengaturan yang dikelola2162 * `true`: Claude Code hanya menghormati entri `allowRead` dari pengaturan terkelola

2147 * `false`: entri `allowRead` menggabungkan dari setiap scope pengaturan yang dimuat sesi2163 * `false`: entri `allowRead` dari file pengaturan lain dapat ikut digabungkan

2148* **Default**: `false`2164* **Default**: `false`

2149 2165 

2150Ini memblokir pembacaan direktori home, membuka kembali `~/work`, dan menghentikan pengembang dari membuka kembali apa pun:2166Ini memblokir pembacaan direktori home, membuka kembali `~/work`, dan mencegah pengembang membuka kembali apa pun selain itu:

2151 2167 

2152```json managed-settings.json theme={null}2168```json managed-settings.json theme={null}

2153{2169{


2167 `sandbox.filesystem.disabled`2183 `sandbox.filesystem.disabled`

2168</h3>2184</h3>

2169 2185 

2170Lewati isolasi sistem file sambil menjaga isolasi jaringan. Perintah bersandbox mendapatkan akses baca dan tulis tanpa batas ke sistem file host, dan egress jaringan mereka tetap terbatas pada [`network.allowedDomains`](#sandbox-network-alloweddomains). Gunakan ketika Anda membuat sandbox untuk mengontrol tempat perintah terhubung daripada apa yang mereka tulis. Memerlukan Claude Code v2.1.216 atau lebih baru.2186Lewati isolasi sistem file sambil mempertahankan isolasi jaringan. Perintah bersandbox mendapatkan akses baca dan tulis tanpa batas ke sistem file host, dan egress jaringannya tetap terbatas pada [`network.allowedDomains`](#sandbox-network-alloweddomains). Gunakan ketika Anda memakai sandbox untuk mengontrol tempat perintah terhubung, bukan apa yang ditulisnya. Memerlukan Claude Code v2.1.216 atau lebih baru.

2171 2187 

2172* **Scope**: [`User or managed`](#scopes). Ketika pengaturan yang dikelola mengonfigurasi `sandbox.filesystem` sama sekali, atau mencantumkan entri `sandbox.credentials.files` dengan `"mode": "deny"`, hanya pengaturan yang dikelola yang dapat menetapkannya.2188* **Scope**: [`User or managed`](#scopes). Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` sama sekali, atau mencantumkan entri `sandbox.credentials.files` dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat menetapkannya.

2173* **Type**: Boolean2189* **Type**: Boolean

2174 * `true`: Claude Code melewati isolasi sistem file dan menjaga isolasi jaringan2190 * `true`: Claude Code melewati isolasi sistem file dan mempertahankan isolasi jaringan

2175 * `false`: isolasi sistem file tetap aktif2191 * `false`: isolasi sistem file tetap aktif

2176* **Default**: `false`, jadi isolasi sistem file tetap aktif2192* **Default**: `false`, jadi isolasi sistem file tetap aktif

2177 2193 


2191}2207}

2192```2208```

2193 2209 

2194Dengan lapisan mati, Claude Code tidak memberlakukan entri `denyRead` atau `credentials.files` `deny`, sementara entri `credentials.envVars` dan entri `mask` yang diterapkan tetap bekerja. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) masih default ke `true`, jadi atur ke `false` untuk terus meminta. Lihat [Disable filesystem isolation](/docs/id/sandboxing#disable-filesystem-isolation) untuk daftar lengkap sumber yang dapat menetapkannya dan apa yang berubah ketika isolasi mati. Memerlukan Claude Code v2.1.216 atau lebih baru.2210Dengan lapisan ini mati, Claude Code tidak memberlakukan entri `denyRead` atau entri `deny` `credentials.files`, sementara entri `credentials.envVars` dan entri `mask` yang diterapkan tetap bekerja. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) tetap default ke `true`, jadi atur ke `false` agar permintaan izin tetap muncul. Lihat [Disable filesystem isolation](/docs/id/sandboxing#disable-filesystem-isolation) untuk daftar lengkap sumber yang dapat menetapkannya dan apa yang berubah ketika isolasi mati. Memerlukan Claude Code v2.1.216 atau lebih baru.

2195 2211 

2196<h3 id="sandbox-ignoreviolations">2212<h3 id="sandbox-ignoreviolations">

2197 `sandbox.ignoreViolations`2213 `sandbox.ignoreViolations`

2198</h3>2214</h3>

2199 2215 

2200Senyapkan laporan pelanggaran sandbox untuk jalur yang Anda harapkan perintah untuk menyelidiki dan ditolak, seperti alat yang memeriksa `/etc/hosts` saat startup, jadi penolakan itu tidak muncul sebagai pelanggaran atau dalam apa yang Claude lihat. Sandbox masih memblokir akses; hanya laporan yang ditekan. Kunci adalah substring untuk cocok dengan perintah, dengan `*` cocok dengan setiap perintah, dan nilai adalah substring pelanggaran untuk diabaikan untuk perintah itu, seperti jalur sistem file.2216Senyapkan laporan pelanggaran sandbox untuk jalur yang Anda perkirakan akan diperiksa perintah lalu ditolak, seperti alat yang memeriksa `/etc/hosts` saat startup, sehingga penolakan itu tidak muncul sebagai pelanggaran atau dalam apa yang dilihat Claude. Sandbox tetap memblokir akses; hanya laporannya yang ditekan. Kunci adalah substring untuk dicocokkan dengan perintah, dengan `*` cocok dengan setiap perintah, dan nilai adalah substring pelanggaran yang diabaikan untuk perintah itu, seperti jalur sistem file.

2201 2217 

2202* **Scope**: [`Any file`](#scopes)2218* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

2203* **Type**: object memetakan substring perintah ke array substring pelanggaran, biasanya jalur2219* **Type**: object yang memetakan substring perintah ke array substring pelanggaran, biasanya jalur

2204* **Default**: tidak diatur, jadi setiap pelanggaran dilaporkan2220* **Default**: tidak diatur, jadi setiap pelanggaran dilaporkan

2205 2221 

2206```json settings.json theme={null}2222```json settings.json theme={null}


2217 `sandbox.enableWeakerNestedSandbox`2233 `sandbox.enableWeakerNestedSandbox`

2218</h3>2234</h3>

2219 2235 

2220Jalankan sandbox Linux di dalam kontainer Docker yang tidak berprivilese, di mana bubblewrap tidak dapat memasang `/proc` segar. Sebagai gantinya sandbox dalam bind-mount `/proc` kontainer yang ada, yang mengekspos informasi proses yang mount segar akan sembunyikan. Ini mengurangi keamanan; gunakan hanya ketika kontainer luar sudah menyediakan isolasi yang Anda butuhkan.2236Jalankan sandbox Linux di dalam kontainer Docker tanpa hak istimewa, tempat bubblewrap tidak dapat memasang `/proc` baru. Sebagai gantinya, sandbox bagian dalam melakukan bind-mount `/proc` milik kontainer yang sudah ada, yang mengekspos informasi proses yang akan disembunyikan oleh mount baru. Ini mengurangi keamanan; gunakan hanya ketika kontainer luar sudah menyediakan isolasi yang Anda butuhkan.

2221 2237 

2222* **Scope**: [`Any file`](#scopes)2238* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

2223* **Type**: Boolean2239* **Type**: Boolean

2224 * `true`: sandbox dalam bind-mount `/proc` kontainer yang ada daripada memasang yang segar2240 * `true`: sandbox bagian dalam melakukan bind-mount `/proc` milik kontainer yang sudah ada alih-alih memasang yang baru

2225 * `false`: sandbox memasang `/proc` segar, yang tidak berfungsi dalam kontainer Docker yang tidak berprivilese2241 * `false`: sandbox memasang `/proc` baru, yang tidak berfungsi dalam kontainer Docker tanpa hak istimewa

2226* **Default**: `false`2242* **Default**: `false`

2227 2243 

2228```json settings.json theme={null}2244```json settings.json theme={null}


2234}2250}

2235```2251```

2236 2252 

2237Hanya Linux dan WSL2. Lihat [Bubblewrap fails to start inside a container](/docs/id/sandboxing#troubleshooting).2253Hanya Linux dan WSL2. Lihat [Bubblewrap fails to start inside a container](/docs/id/sandboxing#bubblewrap-fails-to-start-inside-a-container).

2238 2254 

2239<h3 id="sandbox-enableweakernetworkisolation">2255<h3 id="sandbox-enableweakernetworkisolation">

2240 `sandbox.enableWeakerNetworkIsolation`2256 `sandbox.enableWeakerNetworkIsolation`


2242 2258 

2243Biarkan perintah bersandbox di macOS menjangkau layanan kepercayaan TLS sistem, `com.apple.trustd.agent`. Alat berbasis Go seperti `gh`, `gcloud`, dan `terraform` membutuhkannya untuk memverifikasi sertifikat TLS ketika Anda menggunakan [`network.httpProxyPort`](#sandbox-network-httpproxyport) dengan proxy MITM dan CA kustom. Ini mengurangi keamanan dengan membuka jalur eksfiltrasi data potensial melalui layanan kepercayaan.2259Biarkan perintah bersandbox di macOS menjangkau layanan kepercayaan TLS sistem, `com.apple.trustd.agent`. Alat berbasis Go seperti `gh`, `gcloud`, dan `terraform` membutuhkannya untuk memverifikasi sertifikat TLS ketika Anda menggunakan [`network.httpProxyPort`](#sandbox-network-httpproxyport) dengan proxy MITM dan CA kustom. Ini mengurangi keamanan dengan membuka jalur eksfiltrasi data potensial melalui layanan kepercayaan.

2244 2260 

2245* **Scope**: [`Any file`](#scopes)2261* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

2246* **Type**: Boolean2262* **Type**: Boolean

2247 * `true`: perintah bersandbox di macOS dapat menjangkau `com.apple.trustd.agent`2263 * `true`: perintah bersandbox di macOS dapat menjangkau `com.apple.trustd.agent`

2248 * `false`: perintah bersandbox di macOS tidak dapat menjangkau layanan kepercayaan TLS sistem2264 * `false`: perintah bersandbox di macOS tidak dapat menjangkau layanan kepercayaan TLS sistem


2257}2273}

2258```2274```

2259 2275 

2260Jika Anda tidak menggunakan proxy MITM, cantumkan alat yang gagal di [`excludedCommands`](#sandbox-excludedcommands) sebagai gantinya; lihat [Go-based CLIs fail TLS verification on macOS](/docs/id/sandboxing#troubleshooting).2276Jika Anda tidak menggunakan proxy MITM, cantumkan alat yang gagal di [`excludedCommands`](#sandbox-excludedcommands) sebagai gantinya; lihat [Go-based CLIs fail TLS verification on macOS](/docs/id/sandboxing#go-based-clis-fail-tls-verification-on-macos).

2261 2277 

2262<h3 id="sandbox-allowappleevents">2278<h3 id="sandbox-allowappleevents">

2263 `sandbox.allowAppleEvents`2279 `sandbox.allowAppleEvents`

2264</h3>2280</h3>

2265 2281 

2266Biarkan perintah bersandbox di macOS mengirim Apple Events, yang `open`, `osascript`, dan alat yang membuka URL di browser butuhkan; tanpanya mereka gagal dengan kesalahan `-600`. Ini menghapus isolasi eksekusi kode: perintah bersandbox dapat meluncurkan aplikasi lain tanpa sandbox tanpa prompt pengguna, dan dapat mengirim perintah AppleScript ke aplikasi yang berjalan seperti Terminal, tunduk pada prompt persetujuan otomasi per-aplikasi macOS (TCC).2282Biarkan perintah bersandbox di macOS mengirim Apple Events, yang dibutuhkan `open`, `osascript`, dan alat yang membuka URL di browser; tanpanya alat-alat tersebut gagal dengan kesalahan `-600`. Ini menghapus isolasi eksekusi kode: perintah bersandbox dapat meluncurkan aplikasi lain tanpa sandbox tanpa permintaan kepada pengguna, dan dapat mengirim perintah AppleScript ke aplikasi yang sedang berjalan seperti Terminal, tunduk pada permintaan persetujuan otomasi per aplikasi macOS (TCC).

2267 2283 

2268* **Scope**: [`User or managed`](#scopes)2284* **Scope**: [`User or managed`](#scopes)

2269* **Type**: Boolean2285* **Type**: Boolean


2280}2296}

2281```2297```

2282 2298 

2283Untuk menjaga isolasi dan masih menjalankan satu alat seperti itu, tambahkan ke [`excludedCommands`](#sandbox-excludedcommands) sebagai gantinya. Lihat [Apple Events on macOS](/docs/id/sandboxing#security-limitations).2299Untuk mempertahankan isolasi dan tetap menjalankan satu alat seperti itu, tambahkan ke [`excludedCommands`](#sandbox-excludedcommands) sebagai gantinya. Lihat [Apple Events on macOS](/docs/id/sandboxing#security-limitations).

2284 2300 

2285<h3 id="sandbox-ripgrep">2301<h3 id="sandbox-ripgrep">

2286 `sandbox.ripgrep`2302 `sandbox.ripgrep`

2287</h3>2303</h3>

2288 2304 

2289Arahkan sandbox ke binari ripgrep Anda sendiri daripada yang digunakan Claude Code, misalnya ketika platform Anda memerlukan `rg` yang dibangun berbeda.2305Arahkan sandbox ke binari ripgrep milik Anda sendiri alih-alih yang digunakan Claude Code, misalnya ketika platform Anda memerlukan `rg` yang di-build secara berbeda.

2290 2306 

2291* **Scope**: [`User or managed`](#scopes)2307* **Scope**: [`User or managed`](#scopes)

2292* **Type**: object dengan `command`, jalur ke binari ripgrep, dan opsional `args`, array argumen untuk ditambahkan di depan2308* **Type**: object dengan `command`, jalur ke binari ripgrep, dan `args` opsional, array argumen untuk ditambahkan di depan

2293* **Default**: tidak diatur, jadi sandbox menggunakan binari ripgrep yang sama dengan Claude Code. Itu adalah binari bundel kecuali Anda menetapkan [`USE_BUILTIN_RIPGREP`](/docs/id/env-vars) ke `0`2309* **Default**: tidak diatur, jadi sandbox menggunakan binari ripgrep yang sama dengan Claude Code. Itu adalah binari bawaan kecuali Anda menetapkan [`USE_BUILTIN_RIPGREP`](/docs/id/env-vars) ke `0`

2294 2310 

2295```json settings.json theme={null}2311```json settings.json theme={null}

2296{2312{


2306 `sandbox.bwrapPath`2322 `sandbox.bwrapPath`

2307</h3>2323</h3>

2308 2324 

2309Arahkan sandbox ke binari bubblewrap yang dipasang di luar `PATH`, seperti salinan yang dijual di host yang terisolasi udara. Claude Code menggunakan jalur baik untuk pemeriksaan dependensi startup maupun ketika membungkus setiap perintah bersandbox.2325Arahkan sandbox ke binari bubblewrap yang dipasang di luar `PATH`, seperti salinan vendor di host air-gapped. Claude Code menggunakan jalur ini baik untuk pemeriksaan dependensi saat startup maupun ketika membungkus setiap perintah bersandbox.

2310 2326 

2311* **Scope**: [`Managed`](#scopes). Claude Code membacanya hanya dari pengaturan yang dikelola sehingga file pengguna, proyek, atau lokal tidak dapat menunjuk sandbox ke binari yang berbeda.2327* **Scope**: [`Managed`](#scopes). Claude Code membacanya hanya dari pengaturan terkelola sehingga file pengguna, proyek, atau lokal tidak dapat mengarahkan sandbox ke binari yang berbeda.

2312* **Type**: string, jalur absolut; Claude Code menjatuhkan jalur relatif dan kembali ke pencarian `PATH`2328* **Type**: string, jalur absolut; Claude Code membuang jalur relatif dan kembali ke pencarian `PATH`

2313* **Default**: tidak diatur, jadi Claude Code menemukan `bwrap` di `PATH`2329* **Default**: tidak diatur, jadi Claude Code menemukan `bwrap` di `PATH`

2314 2330 

2315```json managed-settings.json theme={null}2331```json managed-settings.json theme={null}


2330Arahkan proxy jaringan sandbox ke binari `socat` yang dipasang di luar `PATH`.2346Arahkan proxy jaringan sandbox ke binari `socat` yang dipasang di luar `PATH`.

2331 2347 

2332* **Scope**: [`Managed`](#scopes)2348* **Scope**: [`Managed`](#scopes)

2333* **Type**: string, jalur absolut; Claude Code menjatuhkan jalur relatif dan kembali ke pencarian `PATH`2349* **Type**: string, jalur absolut; Claude Code membuang jalur relatif dan kembali ke pencarian `PATH`

2334* **Default**: tidak diatur, jadi Claude Code menemukan `socat` di `PATH`2350* **Default**: tidak diatur, jadi Claude Code menemukan `socat` di `PATH`

2335 2351 

2336```json managed-settings.json theme={null}2352```json managed-settings.json theme={null}


2348 `sandbox.credentials`2364 `sandbox.credentials`

2349</h3>2365</h3>

2350 2366 

2351Deklarasikan file kredensial dan variabel lingkungan untuk [melindungi dari perintah bersandbox](/docs/id/sandboxing#protect-credentials). Setiap entri menamai file `path` atau variabel `name` dan `mode`: `deny` menyembunyikan kredensial di dalam sandbox, dan `mask` menunjukkan perintah bersandbox placeholder sementara [sandbox proxy](/docs/id/sandboxing#mask-credentials) mengganti nilai nyata pada permintaan keluar. Claude Code melindungi hanya entri yang Anda cantumkan; tidak ada daftar deny kredensial bawaan.2367Deklarasikan file kredensial dan environment variable yang akan [dilindungi dari perintah bersandbox](/docs/id/sandboxing#protect-credentials). Setiap entri menyebutkan `path` file atau `name` variabel dan sebuah `mode`: `deny` menyembunyikan kredensial di dalam sandbox, dan `mask` menampilkan placeholder kepada perintah bersandbox sementara [sandbox proxy](/docs/id/sandboxing#mask-credentials) mengganti nilai aslinya pada permintaan keluar. Claude Code hanya melindungi entri yang Anda cantumkan; tidak ada daftar deny kredensial bawaan.

2352 2368 

2353* **Scope**: [`Any file`](#scopes). Claude Code menghormati entri `mask`, `allowPlaintextInject`, `awsPairs`, dan `sigv4` hanya dari pengaturan pengguna, pengaturan yang dikelola, dan flag `--settings`.2369* **Scope**: [`Any file`](#scopes). Claude Code menghormati entri `mask`, `allowPlaintextInject`, `awsPairs`, dan `sigv4` hanya dari pengaturan pengguna, pengaturan terkelola, dan flag `--settings`.

2354* **Type**: object dengan `files`, `envVars`, `allowPlaintextInject`, `awsPairs`, dan `sigv4`2370* **Type**: object dengan `files`, `envVars`, `allowPlaintextInject`, `awsPairs`, dan `sigv4`

2355* **Default**: tidak diatur, jadi tidak ada kredensial yang dilindungi2371* **Default**: tidak diatur, jadi tidak ada kredensial yang dilindungi

2356 2372 


2367}2383}

2368```2384```

2369 2385 

2370Perlindungan file `deny` adalah bagian dari lapisan sistem file, jadi tidak berlaku ketika Anda [menonaktifkan isolasi sistem file](/docs/id/sandboxing#disable-filesystem-isolation); perlindungan variabel lingkungan masih berlaku.2386Perlindungan file `deny` adalah bagian dari lapisan sistem file, jadi tidak berlaku ketika Anda [menonaktifkan isolasi sistem file](/docs/id/sandboxing#disable-filesystem-isolation); perlindungan environment variable tetap berlaku.

2371 2387 

2372<h4 id="invalid-credential-entries-in-managed-settings">2388<h4 id="invalid-credential-entries-in-managed-settings">

2373 Entri kredensial tidak valid dalam pengaturan yang dikelola2389 Entri kredensial tidak valid dalam pengaturan terkelola

2374</h4>2390</h4>

2375 2391 

2376Ketika entri `sandbox.credentials` yang dikelola gagal validasi, Claude Code terus melindungi kredensial di mana pun dapat:2392Ketika entri `sandbox.credentials` terkelola gagal validasi, Claude Code tetap melindungi kredensial sejauh memungkinkan:

2377 2393 

2378* Entri di `files` atau `envVars` yang masih memiliki `path` atau `name` yang valid dan `mode` dari `mask` atau `deny`, seperti yang `extract` pola tidak memiliki grup penangkap, diturunkan ke `mode: "deny"` dengan peringatan, jadi kredensial tetap diblokir, bukan disamarkan, sampai Anda memperbaiki entri. Entri `files` yang diturunkan pin [`filesystem.disabled`](/docs/id/sandboxing#disable-filesystem-isolation) seperti entri `deny` eksplisit, dan peringatan mencatat bahwa blok bacanya tidak diberlakukan jika pengaturan yang dikelola mematikan isolasi sistem file.2394* Entri di `files` atau `envVars` yang masih memiliki `path` atau `name` yang valid dan `mode` bernilai `mask` atau `deny`, seperti entri yang pola `extract`-nya tidak memiliki grup penangkap, diturunkan menjadi `mode: "deny"` dengan peringatan, sehingga kredensial tetap diblokir, bukan disamarkan, sampai Anda memperbaiki entri tersebut. Entri `files` yang diturunkan mengunci [`filesystem.disabled`](/docs/id/sandboxing#disable-filesystem-isolation) seperti entri `deny` eksplisit, dan peringatannya mencatat bahwa blok bacanya tidak diberlakukan jika pengaturan terkelola mematikan isolasi sistem file.

2379* Entri dengan `mode` yang tidak dikenal atau `path` atau `name` yang tidak valid dihapus.2395* Entri dengan `mode` yang tidak dikenal atau `path` atau `name` yang tidak valid dihapus.

2380* Setiap kasus memperingatkan; apakah entri diturunkan atau dihapus, entri valid yang tersisa masih diberlakukan, dan nilai `credentials` yang sepenuhnya tidak valid dijatuhkan sementara sisa `sandbox` masih berlaku.2396* Setiap kasus memunculkan peringatan; baik entri diturunkan maupun dihapus, entri valid yang tersisa tetap diberlakukan, dan nilai `credentials` yang sepenuhnya tidak valid dibuang sementara sisa `sandbox` tetap berlaku.

2381 2397 

2382Berlaku di v2.1.191 dan lebih baru; sebelum v2.1.221, setiap entri tidak valid dihapus. Untuk kunci yang dikelola lainnya dengan penanganan per-bidang, lihat [Invalid entries in managed settings](/docs/id/managed-settings#invalid-entries-in-managed-settings).2398Berlaku di v2.1.191 dan lebih baru; sebelum v2.1.221, setiap entri tidak valid dihapus. Untuk kunci terkelola lainnya dengan penanganan per bidang, lihat [Invalid entries in managed settings](/docs/id/managed-settings#invalid-entries-in-managed-settings).

2383 2399 

2384<h3 id="sandbox-credentials-files">2400<h3 id="sandbox-credentials-files">

2385 `sandbox.credentials.files`2401 `sandbox.credentials.files`

2386</h3>2402</h3>

2387 2403 

2388Lindungi file atau direktori kredensial dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code memblokir pembacaan jalur di dalam sandbox, blok baca yang sama dengan [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Dengan `"mode": "mask"`, perintah bersandbox di Linux dan WSL2 membaca salinan sentinel file, dan proxy sandbox mengganti nilai nyata pada permintaan keluar ke `injectHosts` entri itu; di macOS file tidak dapat dibaca di dalam sandbox sebagai gantinya. `"mode": "mask"` memerlukan Claude Code v2.1.221 atau lebih baru.2404Lindungi file atau direktori kredensial dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code memblokir pembacaan jalur di dalam sandbox, blok baca yang sama dengan [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Dengan `"mode": "mask"`, perintah bersandbox di Linux dan WSL2 membaca salinan sentinel dari file, dan proxy sandbox mengganti nilai aslinya pada permintaan keluar ke `injectHosts` milik entri itu; di macOS, file justru tidak dapat dibaca di dalam sandbox. `"mode": "mask"` memerlukan Claude Code v2.1.221 atau lebih baru.

2389 2405 

2390* **Scope**: [`Any file`](#scopes). Claude Code menjatuhkan entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.2406* **Scope**: [`Any file`](#scopes). Claude Code membuang entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.

2391* **Type**: array objek, masing-masing dengan `path` dan `mode` dari `"deny"` atau `"mask"`, ditambah [mask fields for files](#mask-fields-for-files) opsional2407* **Type**: array objek, masing-masing dengan `path` dan `mode` bernilai `"deny"` atau `"mask"`, ditambah [mask fields for files](#mask-fields-for-files) opsional

2392* **Default**: tidak diatur, jadi tidak ada file kredensial yang dilindungi2408* **Default**: tidak diatur, jadi tidak ada file kredensial yang dilindungi

2393 2409 

2394Ini menyembunyikan file kredensial AWS Anda dan menyamarkan file host `gh`, mengganti nilai nyata hanya pada permintaan ke `api.github.com`:2410Ini menyembunyikan file kredensial AWS Anda dan menyamarkan file hosts `gh`, mengganti nilai aslinya hanya pada permintaan ke `api.github.com`:

2395 2411 

2396```json settings.json theme={null}2412```json settings.json theme={null}

2397{2413{


2406}2422}

2407```2423```

2408 2424 

2409Jalur menggunakan [prefixes](#sandbox-path-prefixes) yang sama dengan pengaturan `sandbox.filesystem.*`, dan Claude Code menggabungkan array dari setiap scope pengaturan yang dimuat sesi. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`. `mask` entri memerlukan Claude Code v2.1.221 atau lebih baru.2425Jalur menggunakan [prefixes](#sandbox-path-prefixes) yang sama dengan pengaturan `sandbox.filesystem.*`, dan Claude Code menggabungkan array dari setiap cakupan pengaturan yang dimuat sesi. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`. Entri `mask` memerlukan Claude Code v2.1.221 atau lebih baru.

2410 2426 

2411Substitusi `mask` berjalan hanya melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa. `mask` berlaku untuk file tunggal, jadi cantumkan setiap file kredensial secara terpisah. Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`. [Mask credential files](/docs/id/sandboxing#mask-credential-files) mencakup sumber pengaturan mana yang dihormati dan kapan entri kembali ke `deny`.2427Substitusi `mask` hanya berjalan melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa. `mask` berlaku untuk satu file, jadi cantumkan setiap file kredensial secara terpisah. Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`. [Mask credentials](/docs/id/sandboxing#mask-credentials) mencakup sumber pengaturan mana yang dihormati, dan [Mask credential files](/docs/id/sandboxing#mask-credential-files) mencakup kapan entri kembali ke `deny`.

2412 2428 

2413<span id="sandbox-credentials-files-extract" />2429<span id="sandbox-credentials-files-extract" />

2414 2430 


2426 Bidang mask untuk file2442 Bidang mask untuk file

2427</h4>2443</h4>

2428 2444 

2429Entri `mask` menerima bidang opsional ini. Tanpa `extract` atau `decode`, Claude Code mengganti seluruh konten file dengan satu sentinel. Di macOS dengan isolasi sistem file aktif, Claude Code menerapkan entri `mask` sebagai `deny` sebelum `extract` atau `decode` berjalan; lihat [Mask credential files](/docs/id/sandboxing#mask-credential-files).2445Entri `mask` menerima bidang opsional berikut. Tanpa `extract` atau `decode`, Claude Code mengganti seluruh konten file dengan satu sentinel. Di macOS dengan isolasi sistem file aktif, Claude Code menerapkan entri `mask` sebagai `deny` sebelum `extract` atau `decode` berjalan; lihat [Mask credential files](/docs/id/sandboxing#mask-credential-files).

2430 2446 

2431| Bidang | Tipe | Apa yang dilakukannya |2447| Bidang | Tipe | Apa yang dilakukannya |

2432| :- | :- | :- |2448| :- | :- | :- |

2433| `extract` | string, ekspresi reguler dengan setidaknya satu grup penangkap | Samarkan hanya teks yang ditangkap oleh grup 1 dari setiap kecocokan, jadi sisa file tetap dapat diurai. Dengan `decode` juga diatur, Claude Code memeriksa setiap penangkapan sebagai JWT yang mungkin daripada menggantinya langsung. Memerlukan v2.1.221 atau lebih baru |2449| `extract` | string, ekspresi reguler dengan setidaknya satu grup penangkap | Samarkan hanya teks yang ditangkap oleh grup 1 dari setiap kecocokan, sehingga sisa file tetap dapat diurai. Jika `decode` juga diatur, Claude Code memeriksa setiap tangkapan sebagai kemungkinan JWT alih-alih langsung menggantinya. Memerlukan v2.1.221 atau lebih baru |

2434| `onExtractNoMatch` | `"warn"`, `"deny"`, atau `"error"`; default `"warn"` | Apa yang terjadi ketika `extract` atau `decode` tidak menemukan apa pun untuk disamarkan. `warn` membiarkan file dapat dibaca apa adanya di dalam sandbox, `deny` membuatnya tidak dapat dibaca, dan `error` menghentikan penyiapan sandbox sampai Anda memperbaiki konfigurasi. Claude Code memperlakukan `deny` sebagai `error` ketika blok baca tidak akan diberlakukan, karena Anda [menonaktifkan isolasi sistem file](/docs/id/sandboxing#disable-filesystem-isolation) atau entri [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) membuka kembali jalur. Memerlukan v2.1.221 atau lebih baru; kasus `decode` memerlukan v2.1.224 atau lebih baru |2450| `onExtractNoMatch` | `"warn"`, `"deny"`, atau `"error"`; default `"warn"` | Apa yang terjadi ketika `extract` atau `decode` tidak menemukan apa pun untuk disamarkan. `warn` membiarkan file dapat dibaca apa adanya di dalam sandbox, `deny` membuatnya tidak dapat dibaca, dan `error` menghentikan penyiapan sandbox sampai Anda memperbaiki konfigurasi. Claude Code memperlakukan `deny` sebagai `error` ketika blok baca tidak akan diberlakukan, karena Anda [menonaktifkan isolasi sistem file](/docs/id/sandboxing#disable-filesystem-isolation) atau entri [`sandbox.filesystem.allowRead`](#sandbox-filesystem-allowread) membuka kembali jalur tersebut. Memerlukan v2.1.221 atau lebih baru; kasus `decode` memerlukan v2.1.224 atau lebih baru |

2435| `decode` | string `"jwt"` | Temukan JSON Web Tokens (JWTs) di file, dengan pola bawaan atau dengan `extract` ketika diatur, verifikasi setiap kandidat, dan ganti dengan token palsu yang valid secara struktural, jadi kode di dalam sandbox yang mendekode token tetap bekerja. Ketika tidak ada kandidat yang memverifikasi, `onExtractNoMatch` mengatur hasil. Memerlukan v2.1.224 atau lebih baru |2451| `decode` | string `"jwt"` | Temukan JSON Web Token (JWT) di file, dengan pola bawaan atau dengan `extract` jika diatur, verifikasi setiap kandidat, dan ganti dengan token palsu yang valid secara struktural, sehingga kode di dalam sandbox yang mendekode token tetap bekerja. Ketika tidak ada kandidat yang terverifikasi, `onExtractNoMatch` menentukan hasilnya. Memerlukan v2.1.224 atau lebih baru |

2436| `maskClaims` | array string, setidaknya satu nama klaim; memerlukan `decode` | Samarkan hanya klaim payload tingkat atas yang dinamai di dalam setiap JWT yang diverifikasi dan bangun kembali token di sekitar payload yang dimodifikasi, jadi klaim lain tetap dapat dibaca. Ketika tidak ada klaim bernama yang cocok, `onExtractNoMatch` mengatur hasil. Memerlukan v2.1.224 atau lebih baru |2452| `maskClaims` | array string, setidaknya satu nama klaim; memerlukan `decode` | Samarkan hanya klaim payload tingkat atas yang disebutkan di dalam setiap JWT yang terverifikasi dan bangun kembali token di sekitar payload yang dimodifikasi, sehingga klaim lain tetap dapat dibaca. Ketika tidak ada klaim yang disebutkan yang cocok, `onExtractNoMatch` menentukan hasilnya. Memerlukan v2.1.224 atau lebih baru |

2437| `maskDuplicates` | Boolean, default `false` | Juga ganti salinan verbatim dari setiap nilai yang disamarkan di tempat lain di file, seperti rahasia yang ditempel ke dalam komentar. Claude Code cocok dengan substring mentah, jadi cadangkan untuk rahasia panjang dengan entropi tinggi. Dikonsultasikan hanya ketika `extract` atau `decode` diatur. Memerlukan v2.1.221 atau lebih baru |2453| `maskDuplicates` | Boolean, default `false` | Ganti juga salinan verbatim dari setiap nilai yang disamarkan di tempat lain di file, seperti rahasia yang ditempel ke dalam komentar. Claude Code mencocokkan substring mentah, jadi gunakan hanya untuk rahasia panjang dengan entropi tinggi. Hanya dipertimbangkan ketika `extract` atau `decode` diatur. Memerlukan v2.1.221 atau lebih baru |

2438| `injectHosts` | array string, masing-masing host yang [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) juga mengakui | Perkecil host tempat proxy sandbox mengganti nilai nyata. Ketika tidak diatur, proxy mengganti pada permintaan ke setiap host di `sandbox.network.allowedDomains`. Memerlukan v2.1.221 atau lebih baru |2454| `injectHosts` | array string, masing-masing host yang juga diterima oleh [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Persempit host tempat proxy sandbox mengganti nilai aslinya. Ketika tidak diatur, proxy menggantinya pada permintaan ke setiap host di `sandbox.network.allowedDomains`. Memerlukan v2.1.221 atau lebih baru |

2439 2455 

2440Ini menyamarkan hanya nilai `oauth_token` di file host `gh`, mengganti setiap salinan lain darinya di file, membuat file tidak dapat dibaca jika pola tidak cocok dengan apa pun, dan mengganti token nyata hanya pada permintaan ke `api.github.com`:2456Ini hanya menyamarkan nilai `oauth_token` di file hosts `gh`, mengganti setiap salinan lainnya di file, membuat file tidak dapat dibaca jika pola tidak cocok dengan apa pun, dan mengganti token aslinya hanya pada permintaan ke `api.github.com`:

2441 2457 

2442```json settings.json theme={null}2458```json settings.json theme={null}

2443{2459{


2462 `sandbox.credentials.envVars`2478 `sandbox.credentials.envVars`

2463</h3>2479</h3>

2464 2480 

2465Lindungi variabel lingkungan dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code menghapus variabel dari lingkungan perintah bersandbox. Dengan `"mode": "mask"`, perintah bersandbox melihat nilai sentinel per-sesi, dan proxy sandbox mengganti nilai nyata pada permintaan keluar ke `injectHosts` entri itu, jadi alat seperti `gh` dan `npm` terus mengautentikasi tanpa pernah memegang kredensial nyata. `"mode": "mask"` memerlukan Claude Code v2.1.199 atau lebih baru.2481Lindungi environment variable dari perintah bersandbox. Dengan `"mode": "deny"`, Claude Code menghapus variabel dari environment perintah bersandbox. Dengan `"mode": "mask"`, perintah bersandbox melihat nilai sentinel per sesi, dan proxy sandbox mengganti nilai aslinya pada permintaan keluar ke `injectHosts` milik entri itu, sehingga alat seperti `gh` dan `npm` tetap dapat mengautentikasi tanpa pernah memegang kredensial asli. `"mode": "mask"` memerlukan Claude Code v2.1.199 atau lebih baru.

2466 2482 

2467* **Scope**: [`Any file`](#scopes). Claude Code menjatuhkan entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.2483* **Scope**: [`Any file`](#scopes). Claude Code membuang entri `mask` dari `.claude/settings.json` proyek dan `.claude/settings.local.json` lokal.

2468* **Type**: array objek, masing-masing dengan `name` dan `mode` dari `"deny"` atau `"mask"`, ditambah [mask fields for environment variables](#mask-fields-for-environment-variables) opsional2484* **Type**: array objek, masing-masing dengan `name` dan `mode` bernilai `"deny"` atau `"mask"`, ditambah [mask fields for environment variables](#mask-fields-for-environment-variables) opsional

2469* **Default**: tidak diatur, jadi tidak ada variabel lingkungan yang dilindungi2485* **Default**: tidak diatur, jadi tidak ada environment variable yang dilindungi

2470 2486 

2471Ini menghapus `NPM_TOKEN` dari perintah bersandbox dan menyamarkan `GITHUB_TOKEN`, mengganti nilai nyata hanya pada permintaan ke `api.github.com`:2487Ini menghapus `NPM_TOKEN` dari perintah bersandbox dan menyamarkan `GITHUB_TOKEN`, mengganti nilai aslinya hanya pada permintaan ke `api.github.com`:

2472 2488 

2473```json settings.json theme={null}2489```json settings.json theme={null}

2474{2490{


2483}2499}

2484```2500```

2485 2501 

2486`name` harus dimulai dengan huruf atau garis bawah dan berisi hanya huruf, digit, dan garis bawah. Claude Code menggabungkan array dari setiap scope pengaturan yang dimuat sesi, dan menerapkan `deny` ketika variabel yang sama muncul dengan kedua mode. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`. `mask` entri memerlukan Claude Code v2.1.199 atau lebih baru.2502`name` harus dimulai dengan huruf atau garis bawah dan hanya berisi huruf, digit, dan garis bawah. Claude Code menggabungkan array dari setiap cakupan pengaturan yang dimuat sesi, dan menerapkan `deny` ketika variabel yang sama muncul dengan kedua mode. [Protect credentials](/docs/id/sandboxing#protect-credentials) mencakup apa yang masih berlaku dari sumber yang Anda kecualikan dengan `--setting-sources`. Entri `mask` memerlukan Claude Code v2.1.199 atau lebih baru.

2487 2503 

2488Substitusi `mask` berjalan hanya melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa; lihat [Mask environment variables](/docs/id/sandboxing#mask-environment-variables). Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`.2504Substitusi `mask` hanya berjalan melalui proxy sandbox, jadi atur [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), atau [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) untuk jaringan uji HTTP biasa; lihat [Mask credentials](/docs/id/sandboxing#mask-credentials). Claude Code menerima tetapi mengabaikan bidang `mask` pada entri `deny`.

2489 2505 

2490<span id="sandbox-credentials-envvars-extract" />2506<span id="sandbox-credentials-envvars-extract" />

2491 2507 


2498<span id="sandbox-credentials-envvars-injecthosts" />2514<span id="sandbox-credentials-envvars-injecthosts" />

2499 2515 

2500<h4 id="mask-fields-for-environment-variables">2516<h4 id="mask-fields-for-environment-variables">

2501 Bidang mask untuk variabel lingkungan2517 Bidang mask untuk environment variable

2502</h4>2518</h4>

2503 2519 

2504Entri `mask` menerima bidang opsional ini. Tanpa `extract` atau `decode`, Claude Code mengganti seluruh nilai dengan satu sentinel. `extract` dan `decode` tidak dapat digabungkan pada entri yang sama.2520Entri `mask` menerima bidang opsional berikut. Tanpa `extract` atau `decode`, Claude Code mengganti seluruh nilai dengan satu sentinel. `extract` dan `decode` tidak dapat digabungkan pada entri yang sama.

2505 2521 

2506| Bidang | Tipe | Apa yang dilakukannya |2522| Bidang | Tipe | Apa yang dilakukannya |

2507| :- | :- | :- |2523| :- | :- | :- |

2508| `extract` | string, ekspresi reguler dengan setidaknya satu grup penangkap | Samarkan hanya teks yang ditangkap oleh grup 1 dari setiap kecocokan, seperti kata sandi di dalam string koneksi `DATABASE_URL`, jadi sisa nilai tetap dapat diurai. Memerlukan v2.1.224 atau lebih baru |2524| `extract` | string, ekspresi reguler dengan setidaknya satu grup penangkap | Samarkan hanya teks yang ditangkap oleh grup 1 dari setiap kecocokan, seperti kata sandi di dalam string koneksi `DATABASE_URL`, sehingga sisa nilai tetap dapat diurai. Memerlukan v2.1.224 atau lebih baru |

2509| `onExtractNoMatch` | `"warn"`, `"deny"`, atau `"error"`; default `"warn"`. Pada entri dengan `decode`, hanya `"warn"` yang diterima | Apa yang terjadi ketika `extract` tidak cocok dengan apa pun. `warn` meneruskan variabel tanpa topeng, `deny` membatalkan pengaturannya di dalam sandbox, dan `error` menghentikan penyiapan sandbox sampai Anda memperbaiki konfigurasi. Memerlukan v2.1.224 atau lebih baru |2525| `onExtractNoMatch` | `"warn"`, `"deny"`, atau `"error"`; default `"warn"`. Pada entri dengan `decode`, hanya `"warn"` yang diterima | Apa yang terjadi ketika `extract` tidak cocok dengan apa pun. `warn` meneruskan variabel tanpa disamarkan, `deny` menghapus pengaturan variabel di dalam sandbox, dan `error` menghentikan penyiapan sandbox sampai Anda memperbaiki konfigurasi. Memerlukan v2.1.224 atau lebih baru |

2510| `decode` | string `"jwt"` | Verifikasi seluruh nilai adalah JWT dan ganti dengan token palsu yang valid secara struktural, jadi kode di dalam sandbox yang mendekode token tetap bekerja; proxy mengganti seluruh token nyata pada egress. Nilai yang tidak memverifikasi meneruskan tanpa topeng dengan peringatan. Memerlukan v2.1.224 atau lebih baru |2526| `decode` | string `"jwt"` | Verifikasi bahwa seluruh nilai adalah JWT dan ganti dengan token palsu yang valid secara struktural, sehingga kode di dalam sandbox yang mendekode token tetap bekerja; proxy mengganti seluruh token asli saat egress. Nilai yang tidak terverifikasi diteruskan tanpa disamarkan dengan peringatan. Memerlukan v2.1.224 atau lebih baru |

2511| `maskClaims` | array string, setidaknya satu nama klaim; memerlukan `decode` | Samarkan hanya klaim payload tingkat atas yang dinamai di dalam JWT yang didekode dan bangun kembali token di sekitar payload yang dimodifikasi, jadi klaim lain tetap dapat dibaca. Ketika tidak ada klaim bernama yang cocok, variabel meneruskan tanpa topeng dengan peringatan. Memerlukan v2.1.224 atau lebih baru |2527| `maskClaims` | array string, setidaknya satu nama klaim; memerlukan `decode` | Samarkan hanya klaim payload tingkat atas yang disebutkan di dalam JWT yang didekode dan bangun kembali token di sekitar payload yang dimodifikasi, sehingga klaim lain tetap dapat dibaca. Ketika tidak ada klaim yang disebutkan yang cocok, variabel diteruskan tanpa disamarkan dengan peringatan. Memerlukan v2.1.224 atau lebih baru |

2512| `injectHosts` | array string, masing-masing host yang [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) juga mengakui | Perkecil host tempat proxy sandbox mengganti nilai nyata. Ketika tidak diatur, proxy mengganti pada permintaan ke setiap host di `sandbox.network.allowedDomains`. Tulis tujuan IPv6 sebagai alamat terkompresi telanjang, seperti `"::1"`, bukan bentuk yang diberi tanda kurung; lihat [IPv6 destinations in `injectHosts`](/docs/id/sandboxing#ipv6-destinations-in-injecthosts). Memerlukan v2.1.199 atau lebih baru |2528| `injectHosts` | array string, masing-masing host yang juga diterima oleh [`sandbox.network.allowedDomains`](#sandbox-network-alloweddomains) | Persempit host tempat proxy sandbox mengganti nilai aslinya. Ketika tidak diatur, proxy menggantinya pada permintaan ke setiap host di `sandbox.network.allowedDomains`. Tulis tujuan IPv6 sebagai alamat terkompresi tanpa kurung, seperti `"::1"`, bukan bentuk dengan tanda kurung siku; lihat [IPv6 destinations in `injectHosts`](/docs/id/sandboxing#ipv6-destinations-in-injecthosts). Memerlukan v2.1.199 atau lebih baru |

2513 2529 

2514Ini menyamarkan hanya kata sandi di dalam `DATABASE_URL`, membatalkan pengaturan variabel jika pola tidak cocok dengan apa pun, dan menyamarkan JWT di `SERVICE_JWT` sambil meninggalkan setiap klaim kecuali `api_key` dapat dibaca:2530Ini hanya menyamarkan kata sandi di dalam `DATABASE_URL`, menghapus pengaturan variabel jika pola tidak cocok dengan apa pun, dan menyamarkan JWT di `SERVICE_JWT` sambil membiarkan setiap klaim kecuali `api_key` tetap dapat dibaca:

2515 2531 

2516```json settings.json theme={null}2532```json settings.json theme={null}

2517{2533{


2540 `sandbox.credentials.allowPlaintextInject`2556 `sandbox.credentials.allowPlaintextInject`

2541</h3>2557</h3>

2542 2558 

2543Izinkan substitusi `mask` pada permintaan HTTP biasa serta HTTPS yang dihentikan TLS. Pada HTTP biasa identitas hulu tidak diverifikasi dan kredensial berjalan dalam cleartext, jadi matikan di luar jaringan uji terpercaya. Memerlukan Claude Code v2.1.199 atau lebih baru.2559Izinkan substitusi `mask` pada permintaan HTTP biasa selain HTTPS dengan terminasi TLS. Pada HTTP biasa, identitas upstream tidak diverifikasi dan kredensial dikirim dalam cleartext, jadi biarkan mati di luar jaringan uji tepercaya. Memerlukan Claude Code v2.1.199 atau lebih baru.

2544 2560 

2545* **Scope**: [`User or managed`](#scopes)2561* **Scope**: [`User or managed`](#scopes)

2546* **Type**: Boolean2562* **Type**: Boolean

2547 * `true`: Claude Code memungkinkan substitusi `mask` pada permintaan HTTP biasa serta HTTPS yang dihentikan TLS2563 * `true`: Claude Code mengizinkan substitusi `mask` pada permintaan HTTP biasa selain HTTPS dengan terminasi TLS

2548 * `false`: Claude Code memungkinkan substitusi `mask` hanya pada HTTPS yang dihentikan TLS2564 * `false`: Claude Code mengizinkan substitusi `mask` hanya pada HTTPS dengan terminasi TLS

2549* **Default**: `false`2565* **Default**: `false`

2550 2566 

2551```json settings.json theme={null}2567```json settings.json theme={null}


2564 `sandbox.credentials.awsPairs`2580 `sandbox.credentials.awsPairs`

2565</h3>2581</h3>

2566 2582 

2567Kelompokkan variabel lingkungan yang disamarkan yang membentuk satu kredensial AWS untuk [SigV4 re-signing](/docs/id/sandboxing#re-sign-aws-requests) ketika kredensial Anda hidup dalam variabel dengan nama non-standar. Claude Code menghubungkan trio konvensional `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `AWS_SESSION_TOKEN` secara otomatis ketika Anda menyamarkan nilai seluruhnya, jadi Anda memerlukan kunci ini hanya untuk nama lain. Memerlukan Claude Code v2.1.224 atau lebih baru.2583Kelompokkan environment variable tersamarkan yang membentuk satu kredensial AWS untuk [SigV4 re-signing](/docs/id/sandboxing#re-sign-aws-requests) ketika kredensial Anda berada dalam variabel dengan nama non-standar. Claude Code menghubungkan trio konvensional `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, dan `AWS_SESSION_TOKEN` secara otomatis ketika Anda menyamarkan seluruh nilainya, jadi Anda hanya memerlukan kunci ini untuk nama lain. Memerlukan Claude Code v2.1.224 atau lebih baru.

2568 2584 

2569* **Scope**: [`User or managed`](#scopes)2585* **Scope**: [`User or managed`](#scopes)

2570* **Type**: array objek, masing-masing dengan `accessKeyIdVar`, `secretAccessKeyVar`, dan opsional `sessionTokenVar`, penamaan entri `sandbox.credentials.envVars`2586* **Type**: array objek, masing-masing dengan `accessKeyIdVar`, `secretAccessKeyVar`, dan `sessionTokenVar` opsional, yang menyebutkan entri `sandbox.credentials.envVars`

2571* **Default**: tidak diatur, jadi hanya trio konvensional yang dipasangkan2587* **Default**: tidak diatur, jadi hanya trio konvensional yang dipasangkan

2572 2588 

2573Ini menghubungkan tiga variabel bernama kustom menjadi satu kredensial AWS untuk re-signing:2589Ini menghubungkan tiga variabel bernama kustom menjadi satu kredensial AWS untuk re-signing:


2588}2604}

2589```2605```

2590 2606 

2591Setiap variabel bernama harus menjadi entri `mask` nilai-seluruh di [`sandbox.credentials.envVars`](#sandbox-credentials-envvars), tanpa `extract` atau `decode`, dan hanya dapat mengisi satu slot di semua pasangan.2607Setiap variabel yang disebutkan harus berupa entri `mask` seluruh nilai di [`sandbox.credentials.envVars`](#sandbox-credentials-envvars), tanpa `extract` atau `decode`, dan hanya dapat mengisi satu slot di seluruh pasangan. Aturan berikut juga berlaku:

2608 

2609* Proxy melakukan re-signing permintaan pada host yang tercantum di `injectHosts` milik entri ID kunci akses

2610* Ketika `sessionTokenVar` diatur, proxy mengirim token asli sebagai `x-amz-security-token` pada permintaan yang di-re-sign

2611* Menyebutkan salah satu variabel konvensional dalam sebuah pasangan menggantikan pemasangan otomatis

2592 2612 

2593<h3 id="sandbox-credentials-sigv4">2613<h3 id="sandbox-credentials-sigv4">

2594 `sandbox.credentials.sigv4`2614 `sandbox.credentials.sigv4`

2595</h3>2615</h3>

2596 2616 

2597Pilih apa yang dilakukan proxy sandbox dengan bentuk permintaan AWS yang [tidak dapat di-re-sign](/docs/id/sandboxing#re-sign-aws-requests): `streaming` untuk unggahan streaming aws-chunked, `presigned` untuk URL yang sudah ditandatangani sebelumnya, dan `sigv4a` untuk tanda tangan asimetris SigV4A. Ini berlaku hanya untuk permintaan yang ditandatangani dengan ID kunci akses placeholder pasangan yang disamarkan. Memerlukan Claude Code v2.1.224 atau lebih baru.2617Pilih apa yang dilakukan proxy sandbox terhadap bentuk permintaan AWS yang [tidak dapat di-re-sign](/docs/id/sandboxing#re-sign-aws-requests): `streaming` untuk unggahan streaming aws-chunked, `presigned` untuk URL presigned, dan `sigv4a` untuk tanda tangan asimetris SigV4A. Ini hanya berlaku untuk permintaan yang ditandatangani dengan ID kunci akses placeholder dari pasangan yang disamarkan. Memerlukan Claude Code v2.1.224 atau lebih baru.

2598 2618 

2599* **Scope**: [`User or managed`](#scopes)2619* **Scope**: [`User or managed`](#scopes)

2600* **Type**: object dengan `streaming`, `presigned`, dan `sigv4a`, masing-masing satu dari:2620* **Type**: object dengan `streaming`, `presigned`, dan `sigv4a`, masing-masing salah satu dari:

2601 * `"deny"`: proxy gagal permintaan2621 * `"deny"`: proxy menggagalkan permintaan

2602 * `"passthrough"`: proxy meneruskan permintaan yang ditandatangani dengan placeholder yang disamarkan, jadi alat menerima penolakan AWS sendiri2622 * `"passthrough"`: proxy meneruskan permintaan yang ditandatangani dengan placeholder tersamarkan, sehingga alat menerima penolakan dari AWS sendiri

2603* **Default**: tidak diatur, jadi setiap bentuk adalah `"deny"`2623* **Default**: tidak diatur, jadi setiap bentuk bernilai `"deny"`

2604 2624 

2605Ini meneruskan unggahan streaming daripada gagal di proxy:2625Ini meneruskan unggahan streaming alih-alih menggagalkannya di proxy:

2606 2626 

2607```json settings.json theme={null}2627```json settings.json theme={null}

2608{2628{


2616}2636}

2617```2637```

2618 2638 

2619Dengan `deny`, proxy gagal permintaan. Dengan `passthrough`, proxy meneruskan permintaan dengan tanda tangannya dihitung dari placeholder yang disamarkan, jadi AWS menolaknya dan alat pemanggil menerima respons AWS sendiri daripada kesalahan proxy.2639Dengan `deny`, proxy menggagalkan permintaan. Dengan `passthrough`, proxy meneruskan permintaan dengan tanda tangan yang dihitung dari placeholder tersamarkan, sehingga AWS menolaknya dan alat pemanggil menerima respons dari AWS sendiri alih-alih kesalahan proxy.

2620 2640 

2621<h3 id="sandbox-network">2641<h3 id="sandbox-network">

2622 `sandbox.network`2642 `sandbox.network`

2623</h3>2643</h3>

2624 2644 

2625Kontrol host, port, dan soket mana yang dapat dijangkau perintah bersandbox. Sandbox merutekan lalu lintas keluar melalui proxy yang memberlakukan daftar ini; lihat [Network isolation](/docs/id/sandboxing#network-isolation) untuk cara proxy memutuskan dan kapan meminta.2645Kontrol host, port, dan soket mana yang dapat dijangkau perintah bersandbox. Sandbox merutekan lalu lintas keluar melalui proxy yang memberlakukan daftar ini; lihat [Network isolation](/docs/id/sandboxing#network-isolation) untuk cara proxy memutuskan dan kapan meminta persetujuan.

2626 2646 

2627* **Scope**: [`Any file`](#scopes). `strictAllowlist`, `allowManagedDomainsOnly`, dan `tlsTerminate` dibaca dari sumber lebih sedikit, seperti entri mereka katakan.2647* **Scope**: [`Any file`](#scopes). `strictAllowlist`, `allowManagedDomainsOnly`, dan `tlsTerminate` dibaca dari lebih sedikit sumber, seperti yang dijelaskan di entrinya masing-masing.

2628* **Type**: object dengan sub-kunci di bawah2648* **Type**: object dengan sub-kunci di bawah

2629* **Default**: tidak diatur, jadi tidak ada domain yang pra-diizinkan dan sandbox meminta untuk setiap host baru2649* **Default**: tidak diatur, jadi tidak ada domain yang pra-diizinkan dan mode izin Anda menentukan [apa yang terjadi pada setiap host baru](/docs/id/sandboxing#hosts-outside-your-allowed-domains)

2630 2650 

2631Ini pra-mengizinkan GitHub dan npm, memblokir `uploads.github.com`, dan memungkinkan perintah mengikat ke localhost:2651Ini pra-mengizinkan GitHub dan npm, memblokir `uploads.github.com`, dan memungkinkan perintah melakukan bind ke localhost:

2632 2652 

2633```json settings.json theme={null}2653```json settings.json theme={null}

2634{2654{


2642}2662}

2643```2663```

2644 2664 

2645Claude Code menggabungkan sub-kunci array di scope pengaturan dan menghilangkan duplikat, jadi proyek dapat menambahkan domain ke daftar pengguna Anda. Aturan izin `WebFetch(domain:...)` allow dan deny [permission rules](/docs/id/sandboxing#permission-rules) memberi makan daftar allow dan deny yang sama.2665Claude Code menggabungkan sub-kunci array di seluruh cakupan pengaturan, jadi proyek dapat menambahkan domain ke daftar pengguna Anda kecuali ada [kunci repositori](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox) yang berlaku. [Aturan izin](/docs/id/sandboxing#permission-rules) allow dan deny `WebFetch(domain:...)` mengisi daftar allow dan deny yang sama.

2646 2666 

2647<h3 id="sandbox-network-allowunixsockets">2667<h3 id="sandbox-network-allowunixsockets">

2648 `sandbox.network.allowUnixSockets`2668 `sandbox.network.allowUnixSockets`

2649</h3>2669</h3>

2650 2670 

2651Cantumkan jalur soket Unix yang dapat dihubungkan perintah bersandbox di macOS. Claude Code mengabaikan daftar ini di Linux dan WSL2, di mana filter seccomp tidak dapat memeriksa jalur soket; gunakan [`allowAllUnixSockets`](#sandbox-network-allowallunixsockets) sebagai gantinya.2671Cantumkan jalur soket Unix yang dapat dihubungi perintah bersandbox di macOS. Claude Code mengabaikan daftar ini di Linux dan WSL2, tempat filter seccomp tidak dapat memeriksa jalur soket; gunakan [`allowAllUnixSockets`](#sandbox-network-allowallunixsockets) di sana sebagai gantinya.

2652 2672 

2653* **Scope**: [`Any file`](#scopes)2673* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

2654* **Type**: array string, masing-masing jalur soket2674* **Type**: array string, masing-masing jalur soket

2655* **Default**: tidak diatur, jadi sandbox macOS memblokir setiap soket Unix2675* **Default**: tidak diatur, jadi sandbox macOS memblokir setiap soket Unix

2656 2676 


2670 `sandbox.network.allowAllUnixSockets`2690 `sandbox.network.allowAllUnixSockets`

2671</h3>2691</h3>

2672 2692 

2673Biarkan perintah bersandbox terhubung ke setiap soket Unix. Di Linux dan WSL2, [seccomp filter](/docs/id/sandboxing#set-up-linux-and-wsl2) sandbox memblokir panggilan `socket(AF_UNIX, ...)`, jadi ini adalah satu-satunya cara untuk mengizinkan soket Unix di sana. Ketika filter hilang, yang dilaporkan `/sandbox` di tab Dependencies, sandbox tidak memblokir panggilan soket-Unix. Lihat [Set up Linux and WSL2](/docs/id/sandboxing#set-up-linux-and-wsl2) untuk tempat filter berasal.2693Biarkan perintah bersandbox terhubung ke setiap soket Unix. Di Linux dan WSL2, [seccomp filter](/docs/id/sandboxing#set-up-linux-and-wsl2) sandbox memblokir panggilan `socket(AF_UNIX, ...)`, jadi ini adalah satu-satunya cara untuk mengizinkan soket Unix di sana. Ketika filter tidak ada, yang dilaporkan `/sandbox` di tab Dependencies, sandbox tidak memblokir panggilan soket Unix. Lihat [Set up Linux and WSL2](/docs/id/sandboxing#set-up-linux-and-wsl2) untuk asal filter tersebut.

2674 2694 

2675* **Scope**: [`Any file`](#scopes)2695* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

2676* **Type**: Boolean2696* **Type**: Boolean

2677 * `true`: perintah bersandbox dapat terhubung ke setiap soket Unix2697 * `true`: perintah bersandbox dapat terhubung ke setiap soket Unix

2678 * `false`: sandbox memblokir koneksi soket-Unix: di macOS kecuali jalur di `allowUnixSockets`, dan di Linux dan WSL2 melalui filter seccomp ketika ada2698 * `false`: sandbox memblokir koneksi soket Unix: di macOS kecuali jalur di `allowUnixSockets`, dan di Linux dan WSL2 melalui filter seccomp jika ada

2679* **Default**: `false`2699* **Default**: `false`

2680 2700 

2681```json settings.json theme={null}2701```json settings.json theme={null}


2694 `sandbox.network.allowLocalBinding`2714 `sandbox.network.allowLocalBinding`

2695</h3>2715</h3>

2696 2716 

2697Biarkan perintah bersandbox mengikat ke port localhost di macOS, misalnya untuk memulai server dev.2717Biarkan perintah bersandbox di macOS mendengarkan pada port jaringan, misalnya untuk memulai server dev, dan terhubung ke port mana pun di localhost. Perintah yang mendengarkan pada alamat non-loopback menerima koneksi dari mesin lain. Kunci ini tidak berpengaruh di Linux dan WSL2, tempat setiap perintah bersandbox memiliki antarmuka loopback sendiri. Untuk menjangkau server di host dari Linux atau WSL2, lihat [A command fails to reach a server on localhost](/docs/id/sandboxing#a-command-fails-to-reach-a-server-on-localhost).

2698 2718 

2699* **Scope**: [`Any file`](#scopes)2719* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

2700* **Type**: Boolean2720* **Type**: Boolean

2701 * `true`: perintah bersandbox dapat mengikat ke port localhost di macOS2721 * `true`: perintah bersandbox di macOS dapat mendengarkan pada alamat lokal mana pun dan terhubung ke port mana pun di localhost

2702 * `false`: perintah bersandbox di macOS tidak dapat mengikat ke port localhost2722 * `false`: perintah bersandbox di macOS tidak dapat mendengarkan pada port atau terhubung langsung ke server di localhost

2703* **Default**: `false`2723* **Default**: `false`

2704 2724 

2705```json settings.json theme={null}2725```json settings.json theme={null}


2716 `sandbox.network.allowMachLookup`2736 `sandbox.network.allowMachLookup`

2717</h3>2737</h3>

2718 2738 

2719Cantumkan nama layanan XPC dan Mach tambahan yang dapat dicari sandbox macOS. Alat yang berkomunikasi melalui XPC, seperti iOS Simulator atau Playwright, memerlukan layanan mereka tercantum di sini.2739Cantumkan nama layanan XPC dan Mach tambahan yang boleh dicari oleh sandbox macOS. Alat yang berkomunikasi melalui XPC, seperti iOS Simulator atau Playwright, memerlukan layanannya dicantumkan di sini.

2720 2740 

2721* **Scope**: [`Any file`](#scopes)2741* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox)

2722* **Type**: array string, masing-masing nama layanan; garis miring trailing tunggal `*` cocok dengan awalan, dan `"*"` saja cocok dengan setiap layanan2742* **Type**: array string, masing-masing nama layanan; satu `*` di akhir cocok dengan awalan, dan `"*"` saja cocok dengan setiap layanan

2723* **Default**: tidak diatur2743* **Default**: tidak diatur

2724 2744 

2725Ini memungkinkan setiap layanan di bawah awalan `com.apple.coresimulator.`:2745Ini mengizinkan setiap layanan di bawah awalan `com.apple.coresimulator.`:

2726 2746 

2727```json settings.json theme={null}2747```json settings.json theme={null}

2728{2748{


2738 `sandbox.network.allowedDomains`2758 `sandbox.network.allowedDomains`

2739</h3>2759</h3>

2740 2760 

2741Pra-izinkan domain untuk lalu lintas keluar dari perintah bersandbox, jadi sandbox tidak meminta mereka. Wildcard seperti `*.example.com` cocok dengan subdomain, dan akhiran `:port` opsional membatasi entri ke satu port; entri tanpa port cocok dengan setiap port.2761Pra-izinkan domain untuk lalu lintas keluar dari perintah bersandbox, sehingga sandbox tidak meminta persetujuan untuknya. Wildcard seperti `*.example.com` cocok dengan subdomain, dan akhiran `:port` opsional membatasi entri ke satu port; entri tanpa port cocok dengan setiap port.

2742 2762 

2743* **Scope**: [`Any file`](#scopes). Hanya pengaturan yang dikelola ketika [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) diatur.2763* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox). Hanya pengaturan terkelola ketika [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) diatur.

2744* **Type**: array string, masing-masing domain, pola wildcard, atau literal IP, dengan akhiran `:port` opsional2764* **Type**: array string, masing-masing domain, pola wildcard, atau literal IP, dengan akhiran `:port` opsional

2745* **Default**: tidak diatur, jadi sandbox meminta pertama kali perintah menjangkau host baru2765* **Default**: tidak diatur, jadi mode izin Anda menentukan [apa yang terjadi pada setiap host baru](/docs/id/sandboxing#hosts-outside-your-allowed-domains)

2746 2766 

2747Ini pra-mengizinkan GitHub di setiap port, setiap subdomain npm, dan satu host API di port 443 saja:2767Ini pra-mengizinkan GitHub di setiap port, setiap subdomain npm, dan satu host API hanya di port 443:

2748 2768 

2749```json settings.json theme={null}2769```json settings.json theme={null}

2750{2770{


2756}2776}

2757```2777```

2758 2778 

2759Tulis literal IPv6 dengan tanda kurung, dengan port opsional: `"[::1]"` memungkinkan setiap port dan `"[::1]:443"` satu port. Bentuk yang diberi tanda kurung memerlukan Claude Code v2.1.229 atau lebih baru. Lihat [IPv6 addresses in domain lists](/docs/id/sandboxing#ipv6-addresses-in-domain-lists).2779Tulis literal IPv6 dengan tanda kurung siku, dengan port opsional: `"[::1]"` mengizinkan setiap port dan `"[::1]:443"` satu port. Bentuk dengan tanda kurung siku memerlukan Claude Code v2.1.229 atau lebih baru. Lihat [IPv6 addresses in domain lists](/docs/id/sandboxing#ipv6-addresses-in-domain-lists).

2760 2780 

2761<h3 id="sandbox-network-denieddomains">2781<h3 id="sandbox-network-denieddomains">

2762 `sandbox.network.deniedDomains`2782 `sandbox.network.deniedDomains`

2763</h3>2783</h3>

2764 2784 

2765Blokir domain untuk lalu lintas keluar dari perintah bersandbox, menggunakan wildcard, port, dan sintaks IPv6 yang sama dengan [`allowedDomains`](#sandbox-network-alloweddomains). Domain yang ditolak tetap diblokir bahkan ketika entri `allowedDomains` cocok juga.2785Blokir domain untuk lalu lintas keluar dari perintah bersandbox, menggunakan sintaks wildcard, port, dan IPv6 yang sama dengan [`allowedDomains`](#sandbox-network-alloweddomains). Domain yang ditolak tetap diblokir bahkan ketika entri `allowedDomains` juga cocok dengannya.

2766 2786 

2767* **Scope**: [`Any file`](#scopes)2787* **Scope**: [`Any file`](#scopes)

2768* **Type**: array string, masing-masing domain, pola wildcard, atau literal IP, dengan akhiran `:port` opsional2788* **Type**: array string, masing-masing domain, pola wildcard, atau literal IP, dengan akhiran `:port` opsional


2780 2800 

2781Claude Code menggabungkan daftar ini dari setiap sumber pengaturan yang dimuat sesi bahkan ketika `allowManagedDomainsOnly` diatur, jadi pengembang selalu dapat memperketat daftar deny. Untuk literal IPv6, lihat [IPv6 addresses in domain lists](/docs/id/sandboxing#ipv6-addresses-in-domain-lists).2801Claude Code menggabungkan daftar ini dari setiap sumber pengaturan yang dimuat sesi bahkan ketika `allowManagedDomainsOnly` diatur, jadi pengembang selalu dapat memperketat daftar deny. Untuk literal IPv6, lihat [IPv6 addresses in domain lists](/docs/id/sandboxing#ipv6-addresses-in-domain-lists).

2782 2802 

2783Entri yang ditulis dengan titik trailing yang menandai nama domain yang sepenuhnya memenuhi syarat, seperti `example.com.`, memblokir koneksi yang sama dengan `example.com`.2803Entri yang ditulis dengan titik di akhir yang menandai nama domain yang sepenuhnya memenuhi syarat, seperti `example.com.`, memblokir koneksi yang sama dengan `example.com`.

2784 2804 

2785<h3 id="sandbox-network-strictallowlist">2805<h3 id="sandbox-network-strictallowlist">

2786 `sandbox.network.strictAllowlist`2806 `sandbox.network.strictAllowlist`

2787</h3>2807</h3>

2788 2808 

2789Tolak akses perintah bersandbox ke host di luar daftar izin daripada meminta persetujuan. Daftar izin adalah [`allowedDomains`](#sandbox-network-alloweddomains) ditambah domain dari aturan allow `WebFetch(domain:...)`, atau hanya entri pengaturan yang dikelola ketika [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) diatur. Memerlukan Claude Code v2.1.219 atau lebih baru.2809Tolak akses perintah bersandbox ke host di luar allowlist alih-alih meminta persetujuan. Allowlist adalah [`allowedDomains`](#sandbox-network-alloweddomains) ditambah domain dari aturan allow `WebFetch(domain:...)`, atau hanya entri pengaturan terkelola ketika [`allowManagedDomainsOnly`](#sandbox-network-allowmanageddomainsonly) diatur. [Locks that apply without an admin-required sandbox](/docs/id/sandboxing#locks-that-apply-without-an-admin-required-sandbox) mencakup entri repositori. Memerlukan Claude Code v2.1.219 atau lebih baru.

2790 2810 

2791* **Scope**: [`User or managed`](#scopes). Repositori tidak dapat mengaktifkan atau menonaktifkannya.2811* **Scope**: [`User or managed`](#scopes). Repositori tidak dapat mengaktifkan atau menonaktifkannya.

2792* **Type**: Boolean2812* **Type**: Boolean

2793 * `true`: Claude Code menolak akses perintah bersandbox ke host di luar daftar izin2813 * `true`: Claude Code menolak akses perintah bersandbox ke host di luar allowlist

2794 * `false`: kecuali file pengaturan terpercaya lain menetapkan `true`, Claude Code memutuskan host di luar daftar izin dengan mode izin daripada menolaknya langsung: dalam mode otomatis memeriksa host terhadap [per-command allowed domains](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode), dalam mode `dontAsk` menolak, dalam mode `bypassPermissions` dan dalam sesi plan mode interaktif terminal di mana bypass tersedia memungkinkan, dan sebaliknya meminta Anda2814 * `false`: kecuali file pengaturan tepercaya lain menetapkan `true`, Claude Code memutuskan host di luar allowlist berdasarkan mode izin alih-alih langsung menolaknya: dalam auto mode, Claude Code memeriksa host terhadap [per-command allowed domains](/docs/id/sandboxing#per-command-allowed-domains-in-auto-mode) milik perintah tersebut, dalam mode `dontAsk` menolak, dalam mode `bypassPermissions` dan dalam sesi plan mode terminal interaktif tempat bypass tersedia mengizinkan, dan selain itu meminta persetujuan Anda

2795* **Default**: `false`2815* **Default**: `false`

2796 2816 

2797```json settings.json theme={null}2817```json settings.json theme={null}


2804}2824}

2805```2825```

2806 2826 

2807Claude Code memberlakukan ini untuk perintah bersandbox saja; alat dalam proses seperti `WebFetch` masih mengikuti [permission rules](/docs/id/sandboxing#permission-rules) mereka. Ketika salah satu sumber yang dihormati menetapkannya ke `true`, itu tetap aktif. Lihat [Network isolation](/docs/id/sandboxing#network-isolation). Memerlukan Claude Code v2.1.219 atau lebih baru.2827Claude Code memberlakukan ini hanya untuk perintah bersandbox; tool dalam proses seperti `WebFetch` tetap mengikuti [aturan izin](/docs/id/sandboxing#permission-rules) masing-masing. Ketika salah satu sumber yang dihormati menetapkannya ke `true`, pengaturan ini tetap aktif. Lihat [Network isolation](/docs/id/sandboxing#network-isolation). Memerlukan Claude Code v2.1.219 atau lebih baru.

2808 2828 

2809<h3 id="sandbox-network-allowmanageddomainsonly">2829<h3 id="sandbox-network-allowmanageddomainsonly">

2810 `sandbox.network.allowManagedDomainsOnly`2830 `sandbox.network.allowManagedDomainsOnly`

2811</h3>2831</h3>

2812 2832 

2813Kunci daftar izin jaringan ke apa yang didefinisikan pengaturan yang dikelola. Claude Code kemudian menghormati hanya `allowedDomains` dan aturan allow `WebFetch(domain:...)` dari pengaturan yang dikelola, mengabaikan domain dari pengaturan pengguna, proyek, lokal, dan `--settings`, dan memblokir domain yang tidak diizinkan secara otomatis daripada meminta.2833Kunci allowlist jaringan ke apa yang didefinisikan pengaturan terkelola. Claude Code kemudian hanya menghormati `allowedDomains` dan aturan allow `WebFetch(domain:...)` dari pengaturan terkelola, mengabaikan domain dari pengaturan pengguna, proyek, lokal, dan `--settings`, dan memblokir domain yang tidak diizinkan secara otomatis alih-alih meminta persetujuan.

2814 2834 

2815* **Scope**: [`Managed`](#scopes)2835* **Scope**: [`Managed`](#scopes)

2816* **Type**: Boolean2836* **Type**: Boolean

2817 * `true`: Claude Code menghormati hanya `allowedDomains` dan aturan allow `WebFetch(domain:...)` dari pengaturan yang dikelola dan memblokir domain yang tidak diizinkan daripada meminta2837 * `true`: Claude Code hanya menghormati `allowedDomains` dan aturan allow `WebFetch(domain:...)` dari pengaturan terkelola dan memblokir domain yang tidak diizinkan alih-alih meminta persetujuan

2818 * `false`: domain dari pengaturan pengguna, proyek, lokal, dan `--settings` menggabungkan ke dalam daftar izin2838 * `false`: domain dari file pengaturan lain dapat digabungkan ke dalam allowlist

2819* **Default**: `false`2839* **Default**: `false`

2820 2840 

2821Ini mengunci daftar izin ke GitHub dan npm dan mengabaikan domain apa pun yang ditambahkan pengembang:2841Ini mengunci allowlist ke GitHub dan npm dan mengabaikan domain apa pun yang ditambahkan pengembang:

2822 2842 

2823```json managed-settings.json theme={null}2843```json managed-settings.json theme={null}

2824{2844{


2831}2851}

2832```2852```

2833 2853 

2834Domain yang ditolak masih menggabungkan dari setiap sumber yang dimuat sesi. Lihat [Keep developers from widening the policy](/docs/id/sandboxing#keep-developers-from-widening-the-policy).2854Selama kunci ini bernilai `true`, sandbox [diwajibkan admin](/docs/id/sandboxing#repository-settings-under-an-admin-required-sandbox), dan hanya pengaturan terkelola yang dapat menetapkan [port proxy](#sandbox-network-httpproxyport).

2855 

2856Domain yang ditolak tetap digabungkan dari setiap sumber yang dimuat sesi. Lihat [Keep developers from widening the policy](/docs/id/sandboxing#keep-developers-from-widening-the-policy).

2835 2857 

2836<h3 id="sandbox-network-httpproxyport">2858<h3 id="sandbox-network-httpproxyport">

2837 `sandbox.network.httpProxyPort`2859 `sandbox.network.httpProxyPort`

2838</h3>2860</h3>

2839 2861 

2840Arahkan sandbox ke proxy HTTP Anda sendiri daripada yang dijalankan Claude Code. Organisasi melakukan ini untuk memeriksa lalu lintas HTTPS, menerapkan aturan penyaringan mereka sendiri, atau mencatat setiap permintaan. Ketika tidak diatur, Claude Code memulai proxy sendiri untuk lalu lintas HTTP.2862Arahkan sandbox ke proxy HTTP milik Anda sendiri alih-alih proxy yang dijalankan Claude Code. Organisasi melakukan ini untuk memeriksa lalu lintas HTTPS, menerapkan aturan penyaringan sendiri, atau mencatat permintaan ke log. Proxy Anda mengambil alih penyaringan, dan Claude Code berhenti menerapkan daftar domain dan permintaan persetujuan jaringannya pada lalu lintas yang dikirim ke sana. Ketika tidak diatur, Claude Code memulai proxy sendiri untuk lalu lintas HTTP.

2841 2863 

2842* **Scope**: [`Any file`](#scopes)2864* **Scope**: [`Any file`](#scopes), kecuali [pengaturan sandbox lain membatasi file mana yang dapat menetapkan port](/docs/id/sandboxing#custom-proxy-configuration)

2843* **Type**: number, port TCP lokal2865* **Type**: number, port TCP lokal

2844* **Default**: tidak diatur, jadi Claude Code menjalankan proxy sendiri2866* **Default**: tidak diatur, jadi Claude Code menjalankan proxy sendiri

2845 2867 


2853}2875}

2854```2876```

2855 2877 

2856Atur [`socksProxyPort`](#sandbox-network-socksproxyport) juga jika proxy Anda harus membawa lalu lintas SOCKS juga; dengan hanya satu dari dua yang diatur, Claude Code masih menjalankan proxy sendiri untuk protokol lainnya. Lihat [Custom proxy configuration](/docs/id/sandboxing#custom-proxy-configuration).2878Atur juga [`socksProxyPort`](#sandbox-network-socksproxyport) jika proxy Anda juga harus membawa lalu lintas SOCKS; jika hanya salah satu dari keduanya yang diatur, Claude Code tetap menjalankan proxy sendiri untuk protokol lainnya. Lihat [Custom proxy configuration](/docs/id/sandboxing#custom-proxy-configuration).

2857 2879 

2858<h3 id="sandbox-network-socksproxyport">2880<h3 id="sandbox-network-socksproxyport">

2859 `sandbox.network.socksProxyPort`2881 `sandbox.network.socksProxyPort`

2860</h3>2882</h3>

2861 2883 

2862Arahkan sandbox ke proxy SOCKS5 Anda sendiri daripada yang dijalankan Claude Code. Ketika tidak diatur, Claude Code memulai proxy sendiri untuk lalu lintas SOCKS.2884Arahkan sandbox ke proxy SOCKS5 milik Anda sendiri alih-alih proxy yang dijalankan Claude Code. Proxy Anda mengambil alih penyaringan, dan Claude Code berhenti menerapkan daftar domain dan permintaan persetujuan jaringannya pada lalu lintas yang dikirim ke sana. Ketika tidak diatur, Claude Code memulai proxy sendiri untuk lalu lintas SOCKS.

2863 2885 

2864* **Scope**: [`Any file`](#scopes)2886* **Scope**: [`Any file`](#scopes), kecuali [pengaturan sandbox lain membatasi file mana yang dapat menetapkan port](/docs/id/sandboxing#custom-proxy-configuration)

2865* **Type**: number, port TCP lokal2887* **Type**: number, port TCP lokal

2866* **Default**: tidak diatur, jadi Claude Code menjalankan proxy sendiri2888* **Default**: tidak diatur, jadi Claude Code menjalankan proxy sendiri

2867 2889 


2881 `sandbox.network.tlsTerminate`2903 `sandbox.network.tlsTerminate`

2882</h3>2904</h3>

2883 2905 

2884Buat proxy sandbox menghentikan TLS sehingga dapat membaca konten permintaan HTTPS. Ini bersifat eksperimental, dan [credential substitution](/docs/id/sandboxing#mask-credentials) `mask` memerlukan ini. Atur `{}` untuk menghasilkan otoritas sertifikat sementara untuk sesi, atau atur `caCertPath` dan `caKeyPath` untuk menggunakan milik Anda sendiri.2906Buat proxy sandbox melakukan terminasi TLS sehingga dapat membaca konten permintaan HTTPS. Ini bersifat eksperimental, dan [credential substitution](/docs/id/sandboxing#mask-credentials) `mask` memerlukannya. Atur `{}` untuk menghasilkan otoritas sertifikat sementara untuk sesi, atau atur `caCertPath` dan `caKeyPath` untuk menggunakan milik Anda sendiri.

2885 2907 

2886* **Scope**: [`User or managed`](#scopes). Repositori tidak dapat mengaktifkannya atau menyediakan otoritas sertifikat.2908* **Scope**: [`User or managed`](#scopes). Repositori tidak dapat mengaktifkannya atau menyediakan otoritas sertifikat.

2887* **Type**: object dengan string `caCertPath` dan `caKeyPath` opsional, masing-masing jalur file2909* **Type**: object dengan string `caCertPath` dan `caKeyPath` opsional, masing-masing jalur file

2888* **Default**: tidak diatur, jadi proxy tidak menghentikan atau memeriksa TLS2910* **Default**: tidak diatur, jadi proxy tidak melakukan terminasi atau memeriksa TLS

2889 2911 

2890```json settings.json theme={null}2912```json settings.json theme={null}

2891{2913{


2897}2919}

2898```2920```

2899 2921 

2900Ketika lebih dari satu sumber yang dihormati menetapkannya, Claude Code menggunakan nilai dari sumber dengan prioritas tertinggi: pengaturan yang dikelola, kemudian flag `--settings`, kemudian pengaturan pengguna. Memerlukan Claude Code v2.1.199 atau lebih baru.2922Ketika lebih dari satu sumber yang dihormati menetapkannya, Claude Code menggunakan nilai dari sumber dengan prioritas tertinggi: pengaturan terkelola, kemudian flag `--settings`, kemudian pengaturan pengguna. Memerlukan Claude Code v2.1.199 atau lebih baru.

2901 2923 

2902<span id="context-and-memory" />2924<span id="context-and-memory" />

2903 2925 


4281}4303}

4282```4304```

4283 4305 

4284Pencocokan nama host tidak peka huruf besar-kecil dan memperlakukan `hooks.example.com.`, dengan titik trailing yang menandai nama domain yang sepenuhnya memenuhi syarat, sama seperti `hooks.example.com`, yang merupakan cara DNS memperlakukannya. Daftar izin berlaku untuk hooks dari setiap sumber, termasuk pengaturan terkelola.4306Pencocokan nama host tidak peka huruf besar-kecil dan memperlakukan `hooks.example.com.`, dengan titik trailing yang menandai nama domain yang sepenuhnya memenuhi syarat, sama seperti `hooks.example.com`, yang merupakan cara DNS memperlakukannya. Allowlist berlaku untuk hooks dari setiap sumber, termasuk pengaturan terkelola.

4285 4307 

4286<h3 id="allowmanagedhooksonly">4308<h3 id="allowmanagedhooksonly">

4287 `allowManagedHooksOnly`4309 `allowManagedHooksOnly`


4292* **Scope**: [`Managed`](#scopes)4314* **Scope**: [`Managed`](#scopes)

4293* **Type**: Boolean4315* **Type**: Boolean

4294 * `true`: hanya hook terkelola yang berjalan, ditambah hook Agent SDK dan hooks dari plugin yang dipaksa diaktifkan oleh pengaturan terkelola Anda. Lihat [Apa yang berjalan di bawah `allowManagedHooksOnly`](#what-runs-under-allowmanagedhooksonly)4316 * `true`: hanya hook terkelola yang berjalan, ditambah hook Agent SDK dan hooks dari plugin yang dipaksa diaktifkan oleh pengaturan terkelola Anda. Lihat [Apa yang berjalan di bawah `allowManagedHooksOnly`](#what-runs-under-allowmanagedhooksonly)

4295 * `false`: hooks dari setiap scope pengaturan dan plugin berjalan4317 * `false`: hooks dari setiap cakupan pengaturan dan plugin berjalan

4296* **Default**: tidak diatur, jadi hooks dari setiap scope pengaturan dan plugin berjalan4318* **Default**: tidak diatur, jadi hooks dari setiap cakupan pengaturan dan plugin berjalan

4297 4319 

4298```json managed-settings.json theme={null}4320```json managed-settings.json theme={null}

4299{4321{


4312* **Segalanya yang lain diblokir**: user, project, dan local hooks, hooks dan mods dari plugin lain yang diinstal, dan hooks yang dideklarasikan dalam frontmatter agent. [Mods yang tertanam dalam Claude Code](/docs/id/plugins/mods/overview#mods-built-into-claude-code) terus berjalan. Untuk memblokir hanya mods pengguna, atur [`allowManagedModsOnly`](/docs/id/plugins/mods/admin#set-options-on-the-built-in-guard) sebagai gantinya.4334* **Segalanya yang lain diblokir**: user, project, dan local hooks, hooks dan mods dari plugin lain yang diinstal, dan hooks yang dideklarasikan dalam frontmatter agent. [Mods yang tertanam dalam Claude Code](/docs/id/plugins/mods/overview#mods-built-into-claude-code) terus berjalan. Untuk memblokir hanya mods pengguna, atur [`allowManagedModsOnly`](/docs/id/plugins/mods/admin#set-options-on-the-built-in-guard) sebagai gantinya.

4313* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang dipaksa diaktifkan dalam `enabledPlugins` terkelola, kecuali Anda menyetel [`disableCommandPluginSources`](#disablecommandpluginsources) ke `false` secara eksplisit4335* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang dipaksa diaktifkan dalam `enabledPlugins` terkelola, kecuali Anda menyetel [`disableCommandPluginSources`](#disablecommandpluginsources) ke `false` secara eksplisit

4314* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) kecuali [`disableCommandPluginSources`](#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri. Memerlukan Claude Code v2.1.238 atau lebih baru4336* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](/docs/id/plugins/host-marketplace#authenticate-archive-downloads) kecuali [`disableCommandPluginSources`](#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri. Memerlukan Claude Code v2.1.238 atau lebih baru

4315* **Status line dan file suggestion menyempit ke pengaturan terkelola**: Claude Code membaca [`statusLine`](/docs/id/statusline), [`fileSuggestion`](#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) dari pengaturan terkelola saja, mengikuti [status line dan file suggestion gates](#status-line-and-file-suggestion-gates)4337* **Baris status dan file suggestion menyempit ke pengaturan terkelola**: Claude Code membaca [`statusLine`](/docs/id/statusline), [`fileSuggestion`](#filesuggestion), dan [`subagentStatusLine`](/docs/id/statusline#subagent-status-lines) dari pengaturan terkelola saja, mengikuti [gerbang baris status dan file suggestion](#status-line-and-file-suggestion-gates)

4316 4338 

4317Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat kunci ini diatur, karena bergantung pada hooks.4339Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat kunci ini diatur, karena bergantung pada hooks.

4318 4340 


4320 `disableAllHooks`4342 `disableAllHooks`

4321</h3>4343</h3>

4322 4344 

4323Matikan [hooks](/docs/id/hooks#disable-or-remove-hooks), [status line](/docs/id/statusline) kustom apa pun, dan perintah [file suggestion](#filesuggestion) kustom apa pun. Gunakan untuk mematikan semua ini secara sementara tanpa menghapusnya dari pengaturan Anda.4345Matikan [hooks](/docs/id/hooks#disable-or-remove-hooks), [baris status](/docs/id/statusline) kustom apa pun, dan perintah [file suggestion](#filesuggestion) kustom apa pun. Gunakan untuk mematikan semua ini secara sementara tanpa menghapusnya dari pengaturan Anda.

4324 4346 

4325* **Scope**: [`Any file`](#scopes). Hanya pengaturan terkelola yang dapat menonaktifkan hook terkelola.4347* **Scope**: [`Any file`](#scopes). Hanya pengaturan terkelola yang dapat menonaktifkan hook terkelola.

4326* **Type**: Boolean4348* **Type**: Boolean

4327 * `true`: Claude Code mematikan hooks, status line kustom apa pun, dan perintah file suggestion kustom apa pun4349 * `true`: Claude Code mematikan hooks, baris status kustom apa pun, dan perintah file suggestion kustom apa pun

4328 * `false`: hooks, status line, dan perintah file suggestion berjalan4350 * `false`: hooks, baris status, dan perintah file suggestion berjalan

4329* **Default**: tidak diatur, jadi hooks berjalan4351* **Default**: tidak diatur, jadi hooks berjalan

4330 4352 

4331```json settings.json theme={null}4353```json settings.json theme={null}


4339* **Dalam pengaturan terkelola**: Claude Code menonaktifkan setiap hook yang dikonfigurasi, termasuk yang terkelola, dan terus menjalankan hooks yang didaftarkan [Agent SDK](/docs/id/agent-sdk/overview) dalam proses4361* **Dalam pengaturan terkelola**: Claude Code menonaktifkan setiap hook yang dikonfigurasi, termasuk yang terkelola, dan terus menjalankan hooks yang didaftarkan [Agent SDK](/docs/id/agent-sdk/overview) dalam proses

4340* **Dalam file pengaturan lainnya**: Claude Code menonaktifkan user, project, local, dan plugin hooks; hook terkelola, hook Agent SDK, dan hooks dari plugin yang dipaksa diaktifkan dalam [`enabledPlugins`](#enabledplugins) terkelola terus berjalan4362* **Dalam file pengaturan lainnya**: Claude Code menonaktifkan user, project, local, dan plugin hooks; hook terkelola, hook Agent SDK, dan hooks dari plugin yang dipaksa diaktifkan dalam [`enabledPlugins`](#enabledplugins) terkelola terus berjalan

4341 4363 

4364Kunci ini juga menghentikan [mods](/docs/id/plugins/mods/overview), yaitu plugin yang kodenya mendaftarkan hook:

4365 

4366* **Dalam pengaturan terkelola**: mods di setiap plugin yang diinstal berhenti, termasuk milik organisasi Anda

4367* **Dalam file pengaturan lainnya**: mods yang Anda instal berhenti, dan [mods organisasi Anda](/docs/id/plugins/mods/admin#install-your-organizations-mods) terus berjalan

4368 

4369Mods yang tertanam dalam Claude Code terus berjalan dalam kedua kasus. Masing-masing memiliki [tombol pengaturannya sendiri](/docs/id/plugins/mods/overview#mods-built-into-claude-code).

4370 

4342Menjaga hook Agent SDK tetap berjalan ketika pengaturan terkelola menyetel kunci ini memerlukan Claude Code v2.1.242 atau lebih baru.4371Menjaga hook Agent SDK tetap berjalan ketika pengaturan terkelola menyetel kunci ini memerlukan Claude Code v2.1.242 atau lebih baru.

4343 4372 

4344Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat hooks dinonaktifkan, dan menu `/hooks` menampilkan pemberitahuan alih-alih hooks Anda.4373Perintah [`/goal`](/docs/id/goal) tidak dapat berjalan saat hooks dinonaktifkan, dan menu `/hooks` menampilkan pemberitahuan alih-alih hooks Anda.

4345 4374 

4346<h4 id="status-line-and-file-suggestion-gates">4375<h4 id="status-line-and-file-suggestion-gates">

4347 Status line dan file suggestion gates4376 Gerbang baris status dan file suggestion

4348</h4>4377</h4>

4349 4378 

4350Claude Code membuat dua keputusan untuk `statusLine`, `fileSuggestion`, dan `subagentStatusLine`, dalam urutan ini:4379Claude Code membuat dua keputusan untuk `statusLine`, `fileSuggestion`, dan `subagentStatusLine`, dalam urutan ini:

4351 4380 

4352* **Matikan sepenuhnya**: ketika pengaturan terkelola menyetel `disableAllHooks`, atau ketika folder tidak dipercaya di bawah [workspace trust rule yang sama dengan hooks dalam file pengaturan](/docs/id/permissions#what-runs-before-you-trust-a-folder)4381* **Matikan sepenuhnya**: ketika pengaturan terkelola menyetel `disableAllHooks`, atau ketika folder tidak dipercaya di bawah [aturan kepercayaan workspace yang sama dengan hooks dalam file pengaturan](/docs/id/permissions#what-runs-before-you-trust-a-folder)

4353* **Menyempit ke pengaturan terkelola**: ketika [`allowManagedHooksOnly`](#allowmanagedhooksonly) diatur, ketika `disableAllHooks` adalah `true` di luar pengaturan terkelola setelah [settings precedence](/docs/id/hooks#disable-or-remove-hooks) diterapkan, atau ketika Anda memulai Claude Code dengan `--safe-mode`4382* **Menyempit ke pengaturan terkelola**: ketika [`allowManagedHooksOnly`](#allowmanagedhooksonly) diatur, ketika `disableAllHooks` adalah `true` di luar pengaturan terkelola setelah [prioritas pengaturan](/docs/id/hooks#disable-or-remove-hooks) diterapkan, atau ketika Anda memulai Claude Code dengan `--safe-mode`

4354 4383 

4355Di bawah penyempitan, Claude Code menjalankan nilai terkelola jika satu digunakan. Jika tidak, Claude Code melewati nilai Anda tanpa peringatan: status line dinonaktifkan, dan `@` autocomplete kembali ke file suggestion bawaan.4384Di bawah penyempitan, Claude Code menjalankan nilai terkelola jika satu digunakan. Jika tidak, Claude Code melewati nilai Anda tanpa peringatan: baris status dinonaktifkan, dan `@` autocomplete kembali ke file suggestion bawaan.

4356 4385 

4357<h3 id="disableworkflows">4386<h3 id="disableworkflows">

4358 `disableWorkflows`4387 `disableWorkflows`


4363* **Scope**: [`Any file`](#scopes)4392* **Scope**: [`Any file`](#scopes)

4364* **Type**: Boolean4393* **Type**: Boolean

4365 * `true`: Claude Code mematikan dynamic workflows dan perintah workflow bundel untuk semua orang yang dijangkau pengaturan Anda4394 * `true`: Claude Code mematikan dynamic workflows dan perintah workflow bundel untuk semua orang yang dijangkau pengaturan Anda

4366 * `false`: sama dengan tidak diatur; apakah alur kerja aktif kemudian mengikuti [`enableWorkflows`](#enableworkflows) dan default rencana Anda4395 * `false`: sama dengan tidak diatur; apakah alur kerja aktif kemudian mengikuti [`enableWorkflows`](#enableworkflows) dan default paket Anda

4367* **Default**: `false`4396* **Default**: `false`

4368* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/id/env-vars) mematikan alur kerja untuk satu sesi; mana pun dari keduanya yang mematikannya, yang lain tidak dapat menyalakannya kembali4397* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/id/env-vars) mematikan alur kerja untuk satu sesi; mana pun dari keduanya yang mematikannya, yang lain tidak dapat menyalakannya kembali

4369 4398 


4377 `enableWorkflows`4406 `enableWorkflows`

4378</h3>4407</h3>

4379 4408 

4380Nyalakan atau matikan [dynamic workflows](/docs/id/workflows) untuk diri sendiri ketika default rencana Anda bukan apa yang Anda inginkan. Muncul di `/config` sebagai **Dynamic workflows**, yang menulis kunci ini ke pengaturan pengguna Anda dan menghapusnya lagi ketika Anda beralih kembali ke default rencana Anda. Untuk mematikan alur kerja untuk semua orang dari pengaturan terkelola, gunakan [`disableWorkflows`](#disableworkflows) sebagai gantinya.4409Nyalakan atau matikan [dynamic workflows](/docs/id/workflows) untuk diri sendiri ketika default paket Anda bukan apa yang Anda inginkan. Muncul di `/config` sebagai **Dynamic workflows**, yang menulis kunci ini ke pengaturan pengguna Anda dan menghapusnya lagi ketika Anda beralih kembali ke default paket Anda. Untuk mematikan alur kerja untuk semua orang dari pengaturan terkelola, gunakan [`disableWorkflows`](#disableworkflows) sebagai gantinya.

4381 4410 

4382* **Scope**: [`Any file`](#scopes)4411* **Scope**: [`Any file`](#scopes)

4383* **Type**: Boolean4412* **Type**: Boolean

4384 * `true`: Claude Code menyalakan dynamic workflows untuk Anda4413 * `true`: Claude Code menyalakan dynamic workflows untuk Anda

4385 * `false`: Claude Code mematikan dynamic workflows untuk Anda4414 * `false`: Claude Code mematikan dynamic workflows untuk Anda

4386* **Default**: tidak diatur, jadi alur kerja aktif kecuali Anda berada di rencana Pro, di mana alur kerja dimatikan4415* **Default**: tidak diatur, jadi alur kerja aktif kecuali Anda berada di paket Pro, di mana alur kerja dimatikan

4387* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/id/env-vars) mematikan alur kerja untuk satu sesi, dan `true` di sini tidak dapat menyalakannya kembali saat diatur4416* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_WORKFLOWS`](/docs/id/env-vars) mematikan alur kerja untuk satu sesi, dan `true` di sini tidak dapat menyalakannya kembali saat diatur

4388 4417 

4389```json settings.json theme={null}4418```json settings.json theme={null}


4392}4421}

4393```4422```

4394 4423 

4395[`disableWorkflows`](#disableworkflows) dan kebijakan alur kerja organisasi Anda juga mengambil alih: `enableWorkflows: true` tidak dapat menyalakan alur kerja kembali saat sumber apa pun mematikan alur kerja. Claude Code menyembunyikan baris `/config` saat sumber selain pengaturan pengguna Anda menyetel `enableWorkflows`, atau menyetel `disableWorkflows` ke `true`.4424[`disableWorkflows`](#disableworkflows) dan kebijakan alur kerja organisasi Anda juga diutamakan: `enableWorkflows: true` tidak dapat menyalakan alur kerja kembali saat sumber apa pun mematikan alur kerja. Claude Code menyembunyikan baris `/config` saat sumber selain pengaturan pengguna Anda menyetel `enableWorkflows`, atau menyetel `disableWorkflows` ke `true`.

4396 4425 

4397<h3 id="hooks">4426<h3 id="hooks">

4398 `hooks`4427 `hooks`

4399</h3>4428</h3>

4400 4429 

4401Jalankan perintah, prompt, agent, permintaan HTTP, atau alat MCP Anda sendiri sebagai [hooks](/docs/id/hooks) pada titik dalam siklus hidup Claude Code, seperti sebelum panggilan alat atau ketika sesi dimulai; [referensi hooks](/docs/id/hooks#hook-events) mencantumkan setiap acara, payload-nya, dan kode keluarnya. Setiap acara memetakan ke daftar grup matcher, dan setiap grup mencantumkan handler yang akan dijalankan ketika matcher berlaku.4430Jalankan perintah, prompt, agent, permintaan HTTP, atau tool MCP Anda sendiri sebagai [hooks](/docs/id/hooks) pada titik dalam siklus hidup Claude Code, seperti sebelum panggilan tool atau ketika sesi dimulai; [referensi hooks](/docs/id/hooks#hook-events) mencantumkan setiap acara, payload-nya, dan exit code-nya. Setiap acara memetakan ke daftar grup matcher, dan setiap grup mencantumkan handler yang akan dijalankan ketika matcher berlaku.

4402 4431 

4403* **Scope**: [`Any file`](#scopes). Hooks digabungkan di seluruh file daripada menggantikan satu sama lain, dan hooks dari pengaturan terkelola tidak dapat dihapus dari file lain.4432* **Scope**: [`Any file`](#scopes). Hooks digabungkan di seluruh file daripada menggantikan satu sama lain, dan hooks dari pengaturan terkelola tidak dapat dihapus dari file lain.

4404* **Type**: object yang dikunci oleh [hook event](/docs/id/hooks#hook-events); setiap nilai adalah array dari grup `{ "matcher", "hooks" }` yang entri `hooks`-nya memiliki `type` dari `"command"`, `"prompt"`, `"agent"`, `"http"`, atau `"mcp_tool"`4433* **Type**: object yang dikunci oleh [hook event](/docs/id/hooks#hook-events); setiap nilai adalah array dari grup `{ "matcher", "hooks" }` yang entri `hooks`-nya memiliki `type` dari `"command"`, `"prompt"`, `"agent"`, `"http"`, atau `"mcp_tool"`

4405* **Default**: tidak diatur, jadi tidak ada hooks yang berjalan4434* **Default**: tidak diatur, jadi tidak ada hooks yang berjalan

4406 4435 

4407Contoh ini menjalankan skrip sebelum setiap panggilan alat Bash:4436Contoh ini menjalankan skrip sebelum setiap panggilan tool Bash:

4408 4437 

4409```json settings.json theme={null}4438```json settings.json theme={null}

4410{4439{


4427 `httpHookAllowedEnvVars`4456 `httpHookAllowedEnvVars`

4428</h3>4457</h3>

4429 4458 

4430[HTTP hook](/docs/id/hooks#http-hook-fields) dapat menempatkan nilai variabel lingkungan ke dalam header permintaan, misalnya header `Authorization: Bearer $HOOK_TOKEN`, tetapi hanya untuk variabel yang dicantumkan hook dalam `allowedEnvVars`-nya sendiri. Kunci ini menetapkan batas luar pada daftar itu untuk setiap HTTP hook: hook dapat menggunakan variabel hanya jika baik `allowedEnvVars`-nya sendiri maupun kunci ini menamakannya. Gunakan untuk menghentikan hook dari membaca rahasia yang tidak seharusnya, bahkan ketika definisi hook memintanya.4459[HTTP hook](/docs/id/hooks#http-hook-fields) dapat menempatkan nilai environment variable ke dalam header permintaan, misalnya header `Authorization: Bearer $HOOK_TOKEN`, tetapi hanya untuk variabel yang dicantumkan hook dalam `allowedEnvVars`-nya sendiri. Kunci ini menetapkan batas luar pada daftar itu untuk setiap HTTP hook: hook dapat menggunakan variabel hanya jika baik `allowedEnvVars`-nya sendiri maupun kunci ini menamakannya. Gunakan untuk menghentikan hook dari membaca rahasia yang tidak seharusnya, bahkan ketika definisi hook memintanya.

4431 4460 

4432* **Scope**: [`Any file`](#scopes). Array digabungkan di seluruh file pengaturan.4461* **Scope**: [`Any file`](#scopes). Array digabungkan di seluruh file pengaturan.

4433* **Type**: array nama variabel lingkungan4462* **Type**: array nama environment variable

4434* **Default**: tidak diatur, jadi daftar `allowedEnvVars` hook sendiri berlaku4463* **Default**: tidak diatur, jadi daftar `allowedEnvVars` hook sendiri berlaku

4435 4464 

4436Contoh ini membatasi interpolasi header ke `MY_TOKEN` dan `HOOK_SECRET`:4465Contoh ini membatasi interpolasi header ke `MY_TOKEN` dan `HOOK_SECRET`:


4441}4470}

4442```4471```

4443 4472 

4444Daftar izin berlaku untuk hooks dari setiap sumber, termasuk pengaturan terkelola.4473Allowlist berlaku untuk hooks dari setiap sumber, termasuk pengaturan terkelola.

4445 4474 

4446<h3 id="workflowkeywordtriggerenabled">4475<h3 id="workflowkeywordtriggerenabled">

4447 `workflowKeywordTriggerEnabled`4476 `workflowKeywordTriggerEnabled`


4469 4498 

4470Atur [jumlah agent yang Claude targetkan](/docs/id/workflows#set-a-size-guideline) dalam dynamic workflows yang ditulisnya. Claude Code mengirimkan nilai ke Claude sebagai saran, bukan batas yang diberlakukan: `"small"` meminta lebih sedikit dari 5 agent, `"medium"` lebih sedikit dari 10, dan `"large"` lebih sedikit dari 50. Pilih `"small"` ketika Anda ingin membatasi apa yang dihabiskan alur kerja. Memerlukan Claude Code v2.1.219 atau lebih baru.4499Atur [jumlah agent yang Claude targetkan](/docs/id/workflows#set-a-size-guideline) dalam dynamic workflows yang ditulisnya. Claude Code mengirimkan nilai ke Claude sebagai saran, bukan batas yang diberlakukan: `"small"` meminta lebih sedikit dari 5 agent, `"medium"` lebih sedikit dari 10, dan `"large"` lebih sedikit dari 50. Pilih `"small"` ketika Anda ingin membatasi apa yang dihabiskan alur kerja. Memerlukan Claude Code v2.1.219 atau lebih baru.

4471 4500 

4472* **Scope**: [`Any file`](#scopes). Nilai di sana mengambil alih pilihan **Dynamic workflow size** di `/config`, yang disimpan Claude Code di `~/.claude.json`, dan Claude Code menyembunyikan baris itu saat file pengaturan menyetel kunci.4501* **Scope**: [`Any file`](#scopes). Nilai di sana diutamakan daripada pilihan **Dynamic workflow size** di `/config`, yang disimpan Claude Code di `~/.claude.json`, dan Claude Code menyembunyikan baris itu saat file pengaturan menyetel kunci.

4473* **Type**: string, salah satu dari:4502* **Type**: string, salah satu dari:

4474 * `"unrestricted"`: tidak ada panduan, jadi Claude mengukur alur kerja ke tugas4503 * `"unrestricted"`: tidak ada panduan, jadi Claude mengukur alur kerja ke tugas

4475 * `"small"`: Claude menargetkan lebih sedikit dari 5 agent4504 * `"small"`: Claude menargetkan lebih sedikit dari 5 agent

4476 * `"medium"`: Claude menargetkan lebih sedikit dari 10 agent4505 * `"medium"`: Claude menargetkan lebih sedikit dari 10 agent

4477 * `"large"`: Claude menargetkan lebih sedikit dari 50 agent4506 * `"large"`: Claude menargetkan lebih sedikit dari 50 agent

4478* **Default**: `"medium"`, atau `"small"` ketika Anda masuk di rencana Pro dengan Claude Code v2.1.271 atau lebih baru4507* **Default**: `"medium"`, atau `"small"` ketika Anda masuk di paket Pro dengan Claude Code v2.1.271 atau lebih baru

4479 4508 

4480```json settings.json theme={null}4509```json settings.json theme={null}

4481{4510{


6003 6032 

6004Jalankan perintah Anda sendiri, seperti `aws sso login`, untuk menyegarkan kredensial di direktori `.aws` Anda ketika kredensial yang Claude Code miliki untuk [Amazon Bedrock](/docs/id/amazon-bedrock) berhenti bekerja. Claude Code memeriksa kredensial saat ini terhadap STS terlebih dahulu dan hanya menjalankan perintah ketika pemeriksaan itu gagal, kemudian membaca direktori `.aws` yang telah disegarkan.6033Jalankan perintah Anda sendiri, seperti `aws sso login`, untuk menyegarkan kredensial di direktori `.aws` Anda ketika kredensial yang Claude Code miliki untuk [Amazon Bedrock](/docs/id/amazon-bedrock) berhenti bekerja. Claude Code memeriksa kredensial saat ini terhadap STS terlebih dahulu dan hanya menjalankan perintah ketika pemeriksaan itu gagal, kemudian membaca direktori `.aws` yang telah disegarkan.

6005 6034 

6035Ketika pemeriksaan gagal pada saat yang sama di beberapa proses Claude Code yang menggunakan perintah dan kredensial yang sama, seperti terminal atau jendela IDE yang terpisah, satu proses menjalankan perintah dan sisanya menunggu eksekusi tersebut alih-alih memulai eksekusi mereka sendiri. Proses yang telah menunggu 60 detik dengan permintaan yang tertunda menjalankan perintah itu sendiri. Untuk mematikan ini, atur [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](/docs/id/env-vars) ke `1`.

6036 

6006* **Scope**: [`Any file`](#scopes)6037* **Scope**: [`Any file`](#scopes)

6007* **Type**: string, baris perintah shell6038* **Type**: string, baris perintah shell

6008* **Default**: tidak diatur, jadi Claude Code tidak menyegarkan kredensial AWS untuk Anda6039* **Default**: tidak diatur, jadi Claude Code tidak menyegarkan kredensial AWS untuk Anda


6019 `awsCredentialExport`6050 `awsCredentialExport`

6020</h3>6051</h3>

6021 6052 

6022Jalankan perintah Anda sendiri yang mencetak kredensial AWS sebagai JSON, sehingga Claude Code dapat memanggil [Amazon Bedrock](/docs/id/amazon-bedrock) dengan kredensial yang tidak berada di direktori `.aws` Anda. Claude Code menerima bentuk output `aws sts` dan bentuk datar `aws configure export-credentials`, dan membatasi kredensial ke klien Bedrock-nya sendiri, sehingga perintah shell yang Claude Code jalankan masih melihat kredensial ambient Anda.6053Jalankan perintah Anda sendiri yang mencetak kredensial AWS sebagai JSON, sehingga Claude Code dapat memanggil [Amazon Bedrock](/docs/id/amazon-bedrock) dengan kredensial yang tidak berada di direktori `.aws` Anda. Claude Code menerima bentuk output `aws sts` dan bentuk datar `aws configure export-credentials`, dan membatasi kredensial ke klien Bedrock-nya sendiri, sehingga perintah shell yang Claude jalankan masih melihat kredensial ambient Anda.

6023 6054 

6024* **Scope**: [`Any file`](#scopes)6055* **Scope**: [`Any file`](#scopes)

6025* **Type**: string, baris perintah shell6056* **Type**: string, baris perintah shell


6126 6157 

6127Jalankan perintah Anda sendiri untuk menyegarkan Google Cloud Application Default Credentials ketika Claude Code menemukan bahwa kredensial telah kedaluwarsa atau tidak dapat dimuat, sehingga permintaan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) terus bekerja tanpa Anda perlu melakukan autentikasi ulang secara manual.6158Jalankan perintah Anda sendiri untuk menyegarkan Google Cloud Application Default Credentials ketika Claude Code menemukan bahwa kredensial telah kedaluwarsa atau tidak dapat dimuat, sehingga permintaan [Google Cloud's Agent Platform](/docs/id/google-vertex-ai) terus bekerja tanpa Anda perlu melakukan autentikasi ulang secara manual.

6128 6159 

6160Ketika beberapa proses Claude Code yang menggunakan perintah dan kredensial yang sama, seperti terminal atau jendela IDE yang terpisah, menemukan bahwa kredensial tersebut kedaluwarsa pada saat yang sama, satu proses menjalankan perintah dan sisanya menunggu eksekusi tersebut alih-alih memulai eksekusi mereka sendiri. Proses yang telah menunggu 60 detik dengan permintaan yang tertunda menjalankan perintah itu sendiri. Untuk mematikan ini, atur [`CLAUDE_CODE_DISABLE_AUTH_REFRESH_LOCK`](/docs/id/env-vars) ke `1`.

6161 

6129* **Scope**: [`Any file`](#scopes)6162* **Scope**: [`Any file`](#scopes)

6130* **Type**: string, baris perintah shell6163* **Type**: string, baris perintah shell

6131* **Default**: tidak diatur, jadi kesalahan kredensial Claude Code memberi tahu Anda untuk menjalankan `gcloud auth application-default login` sendiri6164* **Default**: tidak diatur, jadi kesalahan kredensial Claude Code memberi tahu Anda untuk menjalankan `gcloud auth application-default login` sendiri

skills.md +118 −100

Details

56 56 

57Claude mengedit file yang direkam hanya ketika itu mengarahkan run dengan salah, seperti perintah yang gagal atau langkah yang hilang, sehingga Anda dapat melakukan commit file tanpa per-session diffs. Sebelum v2.1.205, bundled skill memberi tahu Claude untuk melipat apa pun yang dipelajari run, yang menyebabkan konflik merge yang sering.57Claude mengedit file yang direkam hanya ketika itu mengarahkan run dengan salah, seperti perintah yang gagal atau langkah yang hilang, sehingga Anda dapat melakukan commit file tanpa per-session diffs. Sebelum v2.1.205, bundled skill memberi tahu Claude untuk melipat apa pun yang dipelajari run, yang menyebabkan konflik merge yang sering.

58 58 

59<h3 id="run-your-checks-before-each-commit">

60 Jalankan pemeriksaan Anda sebelum setiap commit

61</h3>

62 

63Ketika sesi dimulai dengan skill bernama `verify` atau `simplify` yang sudah tersedia, instruksi commit Claude Code memberi tahu Claude untuk menjalankannya tepat sebelum setiap commit, kecuali untuk perubahan pada dokumentasi atau tes. Ini memerlukan Claude Code v2.1.286 atau yang lebih baru. Claude mendapatkan instruksi tersebut ketika kondisi berikut terpenuhi di awal sesi:

64 

65* **Lokasi**: skill dimuat dari [lokasi](#where-skills-live) enterprise, personal, proyek, atau direktori tambahan, atau dari file `.claude/commands/` dengan nama tersebut. Resep yang direkam `/verify` di akar repo Anda adalah skill proyek, sehingga terhitung. `/verify` dan `/simplify` bawaan, skill plugin, dan skill dari akun claude.ai Anda tidak terhitung.

66* **Pemanggilan**: Claude dapat menjalankan skill tersebut. Jika Anda telah [mencegah Claude menjalankannya](#control-who-invokes-a-skill), misalnya dengan `disable-model-invocation: true`, Claude tidak mendapatkan instruksi tersebut.

67* **Instruksi Git**: Anda belum mematikan [`includeGitInstructions`](/docs/id/settings-reference#includegitinstructions). Mematikannya akan menghapus instruksi ini bersama dengan instruksi commit dan PR bawaan lainnya.

68 

59<h3 id="work-on-claude-api-projects">69<h3 id="work-on-claude-api-projects">

60 Bekerja pada proyek Claude API70 Bekerja pada proyek Claude API

61</h3>71</h3>


136</Steps>146</Steps>

137 147 

138<h2 id="where-skills-live">148<h2 id="where-skills-live">

139 Pilih tempat skills dimuat149 Pilih tempat skill dimuat

140</h2>150</h2>

141 151 

142Tempat Anda menyimpan skill menentukan sesi mana yang memuatnya. Simpan di bawah direktori home Anda untuk mendapatkannya di setiap proyek, commit ke repositori untuk membagikannya dengan semua orang yang bekerja di sana, atau distribusikan melalui plugin atau managed settings untuk menjangkau seluruh tim.152Tempat Anda menyimpan skill menentukan sesi mana yang memuatnya. Simpan di bawah direktori home Anda agar tersedia di setiap proyek, lakukan commit ke repositori untuk membagikannya kepada semua orang yang bekerja di sana, atau distribusikan melalui plugin atau pengaturan terkelola untuk menjangkau seluruh tim.

143 153 

144| Lokasi | Path | Dimuat di |154| Lokasi | Path | Dimuat di |

145| :- | :- | :- |155| :- | :- | :- |

146| Enterprise | `.claude/skills/<skill-name>/SKILL.md` di [direktori managed settings](/docs/id/managed-settings#delivery-mechanisms) | Semua pengguna di mesin tempat organisasi Anda menerapkannya |156| Enterprise | `.claude/skills/<skill-name>/SKILL.md` di [direktori pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms) | Semua pengguna di mesin tempat organisasi Anda menerapkannya |

147| Personal | `~/.claude/skills/<skill-name>/SKILL.md` | Semua proyek Anda di mesin ini, tetapi bukan [sesi Cowork atau cloud](#skills-in-cowork-and-cloud-sessions) |157| Personal | `~/.claude/skills/<skill-name>/SKILL.md` | Semua proyek Anda di mesin ini, tetapi tidak di [Cowork atau sesi cloud](#skills-in-cowork-and-cloud-sessions) |

148| Project | `.claude/skills/<skill-name>/SKILL.md` | Sesi di repositori ini. Commit agar tim Anda juga mendapatkannya |158| Proyek | `.claude/skills/<skill-name>/SKILL.md` | Sesi di repositori ini. Lakukan commit agar tim Anda juga mendapatkannya |

149| Nested | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sesi yang dimulai di atau di bawah `<subdir>`. Sesi yang dimulai di atasnya memuat skill sekali Claude bekerja pada file di sana. Lihat [monorepos dan subdirektori](#discovery-from-parent-and-nested-directories) |159| Bersarang | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sesi yang dimulai di dalam atau di bawah `<subdir>`. Sesi yang dimulai di atasnya memuat skill tersebut setelah Claude mengerjakan file di sana. Lihat [monorepo dan subdirektori](#discovery-from-parent-and-nested-directories) |

150| Additional directory | `.claude/skills/<skill-name>/SKILL.md` di direktori yang Anda lewatkan dengan `--add-dir` | Sesi itu. Lihat [direktori di luar proyek](#skills-from-additional-directories) |160| Direktori tambahan | `.claude/skills/<skill-name>/SKILL.md` di direktori yang Anda berikan dengan `--add-dir` | Sesi tersebut. Lihat [direktori di luar proyek](#skills-from-additional-directories) |

151| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Di mana pun [plugin](/docs/id/plugins/overview) diaktifkan, sebagai `/plugin-name:skill-name` |161| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Di mana pun [plugin](/docs/id/plugins/overview) diaktifkan, sebagai `/plugin-name:skill-name` |

152| claude.ai account | Skills yang diaktifkan untuk akun claude.ai Anda | Sesi Cowork, sesi cloud, dan sesi terminal tempat Anda masuk dengan akun itu. Lihat [Skills yang disinkronkan dari claude.ai](#how-synced-skills-behave) |162| Akun claude.ai | Skill yang diaktifkan untuk akun claude.ai Anda | Sesi Cowork, sesi cloud, dan sesi terminal tempat Anda masuk dengan akun tersebut. Lihat [Skill yang disinkronkan dari claude.ai](#how-synced-skills-behave) |

153 163 

154Folder skill juga mengikuti aturan ini:164Folder skill juga mengikuti aturan berikut:

155 165 

156* **Folder yang di-symlink**: entri `<skill-name>` di lokasi enterprise, personal, atau project dapat berupa symlink ke direktori lain di disk. Claude Code membaca `SKILL.md` dari target dan memuat skill sekali meskipun beberapa lokasi menunjuk ke target yang sama. Plugin skills [menangani symlinks secara berbeda](/docs/id/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).166* **Folder symlink**: entri `<skill-name>` di lokasi enterprise, personal, atau proyek dapat berupa symlink ke direktori di tempat lain pada disk. Claude Code membaca `SKILL.md` dari targetnya dan memuat skill tersebut sekali meskipun beberapa lokasi mengarah ke target yang sama. Skill plugin [menangani symlink secara berbeda](/docs/id/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).

157* **Nama yang dicadangkan `synced`**: jangan beri nama folder skill `synced`, dalam kapitalisasi apa pun. Claude Code menggunakan `~/.claude/skills/synced/` untuk [skills yang diunduh dari claude.ai](#where-synced-skills-load) dan melewati skill yang Anda buat dengan nama itu di lokasi enterprise, personal, dan project.167* **Nama yang dicadangkan `synced`**: jangan menamai folder skill `synced`, dalam kapitalisasi apa pun. Claude Code menggunakan `~/.claude/skills/synced/` untuk [skill yang diunduh dari claude.ai](#where-synced-skills-load) dan melewati skill yang Anda buat dengan nama tersebut di lokasi enterprise, personal, dan proyek.

158* **Nama yang dicadangkan `anthropic-skills`**: di luar plugin, folder skill atau file perintah yang namanya `anthropic-skills` atau dimulai dengan `anthropic-skills:` tidak dimuat. Lihat [Nama yang dicadangkan untuk synced skills](#names-reserved-for-synced-skills).168* **Nama yang dicadangkan `anthropic-skills`**: di luar plugin, folder skill atau file perintah yang bernama `anthropic-skills` atau diawali dengan `anthropic-skills:` tidak dimuat. Lihat [Nama yang dicadangkan untuk skill yang disinkronkan](#names-reserved-for-synced-skills).

159* **File perintah**: file Markdown di `.claude/commands/` adalah format yang lebih lama dan masih berfungsi. Ini mendukung [frontmatter](#frontmatter-reference) yang sama kecuali `name` dan `paths`. Untuk menemukan nama yang Anda ketik untuk menginvokasinya, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Lebih suka skill untuk pekerjaan baru, karena skills juga mendukung [file pendukung](#add-supporting-files).169* **File perintah**: file Markdown di `.claude/commands/` adalah format lama dan masih berfungsi. File ini mendukung [frontmatter](#frontmatter-reference) yang sama kecuali `name` dan `paths`. Untuk mengetahui nama yang Anda ketik untuk memanggilnya, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Utamakan skill untuk pekerjaan baru, karena skill juga mendukung [file pendukung](#add-supporting-files).

160* **Folder skill sebagai plugin**: tambahkan `.claude-plugin/plugin.json` ke folder skill dan itu dimuat sebagai [plugin](/docs/id/plugins/loading#plugins-shared-through-a-repository) bernama `<name>@skills-dir`, sehingga dapat menggabungkan agents, hooks, dan MCP servers. Di `.claude/skills/` proyek, ini memerlukan penerimaan dialog kepercayaan workspace terlebih dahulu.170* **Folder skill sebagai plugin**: tambahkan `.claude-plugin/plugin.json` ke folder skill dan folder tersebut dimuat sebagai [plugin](/docs/id/plugins/loading#plugins-shared-through-a-repository) bernama `<name>@skills-dir`, sehingga dapat menyertakan agent, hook, dan server MCP. Di `.claude/skills/` milik proyek, ini mengharuskan Anda menerima dialog kepercayaan workspace terlebih dahulu.

161 171 

162<h3 id="discovery-from-parent-and-nested-directories">172<h3 id="discovery-from-parent-and-nested-directories">

163 Muat skills di monorepos dan subdirektori173 Memuat skill di monorepo dan subdirektori

164</h3>174</h3>

165 175 

166Claude Code memuat project skills dari `.claude/skills/` di direktori tempat Anda memulainya dan di setiap direktori parent hingga akar repositori, jadi memulai di `packages/frontend/` masih mengambil skills yang ditentukan di root. Ketika Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru, Claude Code menambahkan project skills direktori baru.176Claude Code memuat skill proyek dari `.claude/skills/` di direktori tempat Anda memulainya dan di setiap direktori induk hingga root repositori, sehingga memulai di `packages/frontend/` tetap mengambil skill yang didefinisikan di root. Saat Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau yang lebih baru, Claude Code menambahkan skill proyek dari direktori baru tersebut.

167 177 

168Dalam sesi yang berjalan di [git worktree](/docs/id/worktrees) yang tertaut, Claude Code hanya mencari direktori parent hingga akar worktree. Pada Claude Code v2.1.277 atau lebih baru, ketika checkout worktree tidak memiliki direktori `.claude/skills` di rootnya, Claude Code memuat project skills checkout utama sebagai gantinya. Lihat [Apa yang dibagikan worktrees dengan checkout utama](/docs/id/worktrees#what-worktrees-share-with-the-main-checkout).178Dalam sesi yang berjalan di [git worktree](/docs/id/worktrees) yang ditautkan, Claude Code mencari direktori induk hanya sampai root worktree. Pada Claude Code v2.1.277 atau yang lebih baru, ketika checkout worktree tidak memiliki direktori `.claude/skills` di root-nya, Claude Code memuat skill proyek dari checkout utama sebagai gantinya. Lihat [Apa yang dibagikan worktree dengan checkout utama](/docs/id/worktrees#what-worktrees-share-with-the-main-checkout).

169 179 

170Skills di direktori `.claude/skills/` di bawah tempat Anda memulai tidak dimuat saat startup. Mereka dimuat pertama kali Claude membaca atau mengedit file di subdirektori itu dan tetap tersedia untuk sisa sesi. Sampai saat itu mereka tidak muncul di menu `/` dan Anda tidak dapat menginvokasinya berdasarkan nama. Untuk memuatnya lebih cepat, jalankan `/add-dir` dengan path subdirektori, yang memerlukan Claude Code v2.1.257 atau lebih baru.180Skill di direktori `.claude/skills/` di bawah tempat Anda memulai tidak dimuat saat startup. Skill tersebut dimuat saat pertama kali Claude membaca atau mengedit file di subdirektori tersebut dan tetap tersedia selama sisa sesi. Sebelum itu, skill tersebut tidak muncul di menu `/` dan Anda tidak dapat memanggilnya berdasarkan nama. Untuk memuatnya lebih awal, jalankan `/add-dir` dengan path subdirektori tersebut, yang memerlukan Claude Code v2.1.257 atau yang lebih baru.

171 181 

172Ketika nested skill berbagi nama dengan skill lain, keduanya tetap tersedia. Dengan skill `deploy` di akar repositori dan skill lain di `apps/web/.claude/skills/`:182Ketika nama direktori skill bersarang cocok dengan nama skill lain, keduanya tetap tersedia. Dengan skill `deploy` di root repositori dan satu lagi di `apps/web/.claude/skills/`:

173 183 

174* `/deploy` menjalankan skill root. Claude Code juga mencantumkan varian yang memenuhi syarat direktori untuk Claude, dengan instruksi untuk menginvokasi yang direktorinya menyimpan file yang sedang dikerjakan, sehingga nested skill masih berlaku untuk pekerjaan di `apps/web/`.184* `/deploy` menjalankan skill root. Claude Code juga mencantumkan varian yang dikualifikasi direktori untuk Claude, dengan instruksi untuk memanggil varian yang direktorinya berisi file yang sedang dikerjakan, sehingga skill bersarang tetap berlaku untuk pekerjaan di `apps/web/`.

175* `/apps/web:deploy` menjalankan nested skill sendiri. Deskripsinya menamai direktori yang berlaku.185* `/apps/web:deploy` menjalankan skill bersarang secara tersendiri. Deskripsinya menyebutkan direktori tempat skill tersebut berlaku.

176 186 

177<h3 id="skills-from-additional-directories">187<h3 id="skills-from-additional-directories">

178 Muat skills dari direktori di luar proyek188 Memuat skill dari direktori di luar proyek

179</h3>189</h3>

180 190 

181Ketika Anda menambahkan direktori dengan `--add-dir` atau `/add-dir`, Claude Code memuat skills di `.claude/skills/` direktori itu, bersama dengan `.claude/commands/` dan `.claude/agents/` nya. Direktori yang Agent SDK tambahkan melalui [`additionalDirectories`](/docs/id/agent-sdk/typescript#options) di TypeScript atau [`add_dirs`](/docs/id/agent-sdk/python#claudeagentoptions) di Python memuat dengan cara yang sama, karena SDK meneruskannya sebagai `--add-dir`. Pengaturan `permissions.additionalDirectories` di `settings.json` memberikan akses file saja dan tidak memuat salah satu dari ini.191Saat Anda menambahkan direktori dengan `--add-dir` atau `/add-dir`, Claude Code memuat skill di `.claude/skills/` milik direktori tersebut, beserta `.claude/commands/` dan `.claude/agents/`-nya. Direktori yang ditambahkan Agent SDK melalui [`additionalDirectories`](/docs/id/agent-sdk/typescript#options) di TypeScript atau [`add_dirs`](/docs/id/agent-sdk/python#claudeagentoptions) di Python dimuat dengan cara yang sama, karena SDK meneruskannya sebagai `--add-dir`. Pengaturan `permissions.additionalDirectories` di `settings.json` hanya memberikan akses file dan tidak memuat satu pun dari ini.

182 192 

183Claude Code mengawasi `.claude/skills/` di direktori yang Anda lewatkan dengan `--add-dir` saat peluncuran, seperti yang dijelaskan [Edit a skill during a session](#live-change-detection). Itu tidak mengawasi `.claude/commands/` atau `.claude/agents/` direktori yang ditambahkan, jadi restart sesi setelah mengubah file di sana.193Claude Code memantau `.claude/skills/` di direktori yang Anda berikan dengan `--add-dir` saat peluncuran, seperti yang dijelaskan di [Mengedit skill selama sesi](#live-change-detection). Claude Code tidak memantau `.claude/commands/` atau `.claude/agents/` milik direktori yang ditambahkan, jadi mulai ulang sesi setelah mengubah file di sana.

184 194 

185Beban ini bergantung pada [setting source](/docs/id/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) `project`, yang aktif secara default. Kebijakan [`strictPluginOnlyCustomization`](/docs/id/settings-reference#strictpluginonlycustomization), [bare mode](/docs/id/headless#start-faster-with-bare-mode), dan [`--safe-mode`](/docs/id/cli-reference#cli-flags) masing-masing membatasinya lebih lanjut, seperti yang dijelaskan halaman-halaman itu. Lihat [Additional directories grant file access, not configuration](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) untuk tabel lengkap apa yang dimuat direktori yang ditambahkan, termasuk `CLAUDE.md` dan pengaturan plugin.195Pemuatan ini bergantung pada [sumber pengaturan](/docs/id/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources) `project`, yang aktif secara default. Kebijakan [`strictPluginOnlyCustomization`](/docs/id/settings-reference#strictpluginonlycustomization), [bare mode](/docs/id/headless#start-faster-with-bare-mode), dan [`--safe-mode`](/docs/id/cli-reference#cli-flags) masing-masing membatasinya lebih lanjut, seperti yang dijelaskan di halaman-halaman tersebut. Lihat [Direktori tambahan memberikan akses file, bukan konfigurasi](/docs/id/permissions#additional-directories-grant-file-access-not-configuration) untuk tabel lengkap tentang apa yang dimuat oleh direktori yang ditambahkan, termasuk `CLAUDE.md` dan pengaturan plugin.

186 196 

187<h3 id="resolve-skills-that-share-a-name">197<h3 id="resolve-skills-that-share-a-name">

188 Selesaikan skills yang berbagi nama198 Menyelesaikan skill yang memiliki nama yang sama

189</h3>199</h3>

190 200 

191Ketika dua skills berbagi nama, tempat asal masing-masing menentukan yang mana `/name` jalankan. Untuk nama yang ditetapkan oleh field frontmatter `name`, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Tabel mencakup lokasi enterprise, personal, project, nested, plugin, dan claude.ai, skills bundel, dan file perintah:201Ketika dua skill memiliki nama direktori atau file yang sama, asal masing-masing menentukan mana yang dijalankan oleh `/name`. Untuk nama yang ditetapkan oleh field frontmatter `name`, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Tabel ini mencakup lokasi enterprise, personal, proyek, bersarang, plugin, dan claude.ai, skill bawaan, serta file perintah:

192 202 

193| Nama yang sama di | Yang mana yang berjalan |203| Nama yang sama di | Mana yang dijalankan |

194| :- | :- |204| :- | :- |

195| Dua dari enterprise, personal, dan project | Enterprise di atas personal, dan personal di atas project. Dengan `deploy` di `~/.claude/skills/` dan `.claude/skills/` proyek, `/deploy` menjalankan yang personal |205| Dua di antara enterprise, personal, dan proyek | Enterprise di atas personal, dan personal di atas proyek. Dengan `deploy` di `~/.claude/skills/` dan di `.claude/skills/` milik proyek, `/deploy` menjalankan yang personal |

196| Salah satu dari lokasi itu dan [bundled skill](#bundled-skills) | Skill Anda menggantikan perintah bundel, tetapi bukan aliasnya. Skill `code-review` proyek menggantikan `/code-review`, dan alias bundel `/review` tidak pernah menjalankan skill Anda |206| Salah satu lokasi tersebut dan [skill bawaan](#bundled-skills) | Skill Anda menggantikan perintah bawaan, tetapi tidak menggantikan aliasnya. Skill proyek `code-review` menggantikan `/code-review`, dan alias bawaan `/review` tidak pernah menjalankan skill Anda |

197| Skill dan file di `.claude/commands/` | Skill itu |207| Skill dan file di `.claude/commands/` | Skill |

198| Skill root proyek dan nested skill | Keduanya dimuat. Lihat [monorepos dan subdirektori](#discovery-from-parent-and-nested-directories) |208| Skill di root proyek dan skill bersarang | Keduanya dimuat. Lihat [monorepo dan subdirektori](#discovery-from-parent-and-nested-directories) |

199| Plugin skill dan skill di salah satu lokasi di atas | Keduanya dimuat, karena plugin skills diberi namespace sebagai `/plugin-name:skill-name` |209| Skill plugin dan skill di salah satu lokasi di atas | Keduanya dimuat, karena skill plugin diberi namespace sebagai `/plugin-name:skill-name` |

200| Salah satu dari di atas dan skill [disinkronkan dari akun claude.ai Anda](#how-synced-skills-behave) | Skill atau perintah lainnya. Skill yang disinkronkan masih berjalan sebagai `/anthropic-skills:<name>`. Lihat [Ketika nama synced skill cocok dengan perintah lain](#when-a-synced-skill-name-matches-another-command) |210| Salah satu di atas dan nama pendek dari skill yang [disinkronkan dari akun claude.ai Anda](#how-synced-skills-behave) | Skill atau perintah lain tersebut. Skill yang disinkronkan kemudian dicantumkan dan dijalankan hanya dengan nama lengkapnya. Lihat [Ketika nama skill yang disinkronkan cocok dengan perintah lain](#when-a-synced-skill-name-matches-another-command) |

201 211 

202<h3 id="skills-in-cowork-and-cloud-sessions">212<h3 id="skills-in-cowork-and-cloud-sessions">

203 Gunakan skills di sesi Cowork dan cloud213 Menggunakan skill di Cowork dan sesi cloud

204</h3>214</h3>

205 215 

206Sesi [Cowork](https://claude.com/product/cowork) dan [sesi cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup), termasuk [routines](/docs/id/routines), tidak membaca `~/.claude/skills/` di mesin Anda. Baik sesi Cowork interaktif maupun terjadwal memuat skills yang diaktifkan untuk akun claude.ai Anda, disinkronkan saat startup sesi; kelola dari **Customize** di sidebar Desktop app atau dari pengaturan skills di claude.ai. Sesi cloud juga memuat project skills yang di-commit ke `.claude/skills/` repositori yang dikloning.216Sesi [Cowork](https://claude.com/product/cowork) dan [sesi cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup), termasuk [routine](/docs/id/routines), tidak membaca `~/.claude/skills/` di mesin Anda. Sesi Cowork interaktif maupun terjadwal memuat skill yang diaktifkan untuk akun claude.ai Anda, yang disinkronkan saat sesi dimulai; kelola skill tersebut dari **Customize** di sidebar aplikasi Desktop atau dari pengaturan skill di claude.ai. Sesi cloud juga memuat skill proyek yang di-commit ke `.claude/skills/` milik repositori yang di-clone.

207 217 

208Jika skill hanya ada di `~/.claude/skills/` di mesin Anda, Claude Code melaporkan bahwa skill tidak ditemukan ketika [routine](/docs/id/routines) menginvokasinya, karena setiap jalankan routine dimulai sebagai sesi cloud segar. Untuk membuat personal skill tersedia di sesi ini:218Jika skill hanya ada di `~/.claude/skills/` di mesin Anda, Claude Code melaporkan bahwa skill tidak ditemukan saat [routine](/docs/id/routines) memanggilnya, karena setiap eksekusi routine dimulai sebagai sesi cloud baru. Untuk membuat skill personal tersedia di sesi-sesi ini:

209 219 

210* Untuk sesi Cowork dan cloud, aktifkan skill untuk akun claude.ai Anda.220* Untuk Cowork dan sesi cloud, aktifkan skill tersebut untuk akun claude.ai Anda.

211* Untuk sesi cloud, Anda dapat sebagai gantinya commit skill ke `.claude/skills/` repositori. Plugin yang dideklarasikan di `.claude/settings.json` repositori dan plugin yang hanya diaktifkan di pengaturan pengguna Anda [tidak dimuat di sesi cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup).221* Untuk sesi cloud, Anda dapat melakukan commit skill ke `.claude/skills/` milik repositori sebagai gantinya. Plugin yang dideklarasikan di `.claude/settings.json` milik repositori dan plugin yang hanya diaktifkan di pengaturan pengguna Anda [tidak dimuat di sesi cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup).

212 222 

213[Desktop scheduled tasks](/docs/id/desktop-scheduled-tasks) berjalan secara lokal di mesin Anda, jadi mereka memuat `~/.claude/skills/`.223[Tugas terjadwal Desktop](/docs/id/desktop-scheduled-tasks) berjalan secara lokal di mesin Anda, sehingga tugas tersebut memuat `~/.claude/skills/`.

214 224 

215<h3 id="how-synced-skills-behave">225<h3 id="how-synced-skills-behave">

216 Skills yang disinkronkan dari claude.ai226 Skill yang disinkronkan dari claude.ai

217</h3>227</h3>

218 228 

219Bagian ini berlaku untuk Anda jika Anda menggunakan sesi Cowork atau cloud, atau masuk ke Claude Code di terminal Anda dengan akun claude.ai. Di sesi itu, Claude Code memuat skills yang diaktifkan untuk akun claude.ai Anda, tanpa setup di pihak Anda, seperti yang dijelaskan [Tempat synced skills dimuat](#where-synced-skills-load). Skills itu termasuk yang Anda buat atau aktifkan di pengaturan claude.ai Anda, skills yang disediakan organisasi Anda di sana, dan skills bawaan Anthropic seperti `pdf` dan `xlsx`.229Bagian ini berlaku untuk Anda jika Anda menggunakan Cowork atau sesi cloud, atau masuk ke Claude Code di terminal dengan akun claude.ai. Dalam sesi tersebut, Claude Code memuat skill yang diaktifkan untuk akun claude.ai Anda, tanpa penyiapan dari pihak Anda, seperti yang dijelaskan di [Tempat skill yang disinkronkan dimuat](#where-synced-skills-load). Skill tersebut mencakup skill yang Anda buat atau aktifkan di pengaturan claude.ai Anda, skill yang disediakan organisasi Anda di sana, dan skill bawaan Anthropic seperti `pdf` dan `xlsx`.

220 230 

221Claude Code mengunduh synced skill dari akun Anda daripada membaca file yang Anda tulis di mesin tempat sesi berjalan, jadi itu menerapkan aturan ke synced skills yang tidak berlaku untuk skills yang Anda simpan di [lokasi skills](#where-skills-live).231Claude Code mengunduh skill yang disinkronkan dari akun Anda alih-alih membaca file yang Anda tulis di mesin tempat sesi berjalan, sehingga Claude Code menerapkan aturan pada skill yang disinkronkan yang tidak berlaku untuk skill yang Anda simpan di [lokasi skill](#where-skills-live).

222 232 

223<h4 id="where-synced-skills-load">233<h4 id="where-synced-skills-load">

224 Tempat synced skills dimuat234 Tempat skill yang disinkronkan dimuat

225</h4>235</h4>

226 236 

227Dalam sesi Cowork atau cloud, Claude Code memuat skills yang diaktifkan untuk akun claude.ai Anda, dan [Gunakan skills di sesi Cowork dan cloud](#skills-in-cowork-and-cloud-sessions) mengatakan bagaimana memilih skills mana yang sesi itu dapatkan.237Dalam sesi Cowork atau sesi cloud, Claude Code memuat skill yang diaktifkan untuk akun claude.ai Anda, dan [Skill di Cowork dan sesi cloud](#skills-in-cowork-and-cloud-sessions) menjelaskan cara memilih skill mana yang didapatkan sesi tersebut.

228 238 

229Di terminal Anda, Claude Code menyinkronkan skills itu di sesi tempat Anda masuk dengan akun claude.ai Anda. Ketika sesi dimulai, Claude Code mengunduh skills akun Anda ke `~/.claude/skills/synced/` di latar belakang, kemudian memeriksa claude.ai untuk perubahan sekitar setiap 10 menit saat sesi berjalan. Ketika pemeriksaan menemukan bahwa skill ditambahkan, diedit, atau dimatikan di claude.ai, Claude Code menambah, memperbarui, atau menghapusnya di sesi yang berjalan tanpa restart. Sinkronisasi di sesi terminal memerlukan Claude Code v2.1.273 atau lebih baru.239Di terminal Anda, Claude Code menyinkronkan skill tersebut dalam sesi tempat Anda masuk dengan akun claude.ai. Saat sesi dimulai, Claude Code mengunduh skill akun Anda ke `~/.claude/skills/synced/` di latar belakang, lalu memeriksa perubahan di claude.ai sekitar setiap 10 menit selama sesi berjalan. Ketika pemeriksaan menemukan bahwa skill ditambahkan, diedit, atau dimatikan di claude.ai, Claude Code menambahkan, memperbarui, atau menghapusnya di sesi yang sedang berjalan tanpa restart. Sinkronisasi di sesi terminal memerlukan Claude Code v2.1.273 atau yang lebih baru.

230 240 

231Sinkronisasi tidak pernah menunda startup, karena Claude menunggu unduhan skill hanya ketika menginvokasinya. Jalankan [non-interaktif](/docs/id/headless) yang singkat dapat selesai sebelum skill yang baru ditambahkan diunduh, dalam hal ini sesi yang lebih baru mengunduhnya. Untuk membuat jalankan non-interaktif mengunduh skills Anda dan menunggu daftar sebelum menjawab prompt, atur [`CLAUDE_CODE_SYNC_SKILLS`](/docs/id/env-vars#variables) ke `1`.241Sinkronisasi tidak pernah menunda startup, karena Claude menunggu unduhan skill hanya saat memanggil skill tersebut. Oleh karena itu, eksekusi [non-interaktif](/docs/id/headless) yang singkat dapat selesai sebelum skill yang baru ditambahkan selesai diunduh, dan dalam hal ini sesi berikutnya yang mengunduhnya. Agar eksekusi non-interaktif mengunduh skill Anda dan menunggu daftarnya sebelum menjawab prompt, atur [`CLAUDE_CODE_SYNC_SKILLS`](/docs/id/env-vars#variables) ke `1`.

232 242 

233Claude Code hanya menyinkronkan di sesi yang masuk dengan akun claude.ai Anda dan [mengambil feature flags dari Anthropic](/docs/id/env-vars#features-that-need-feature-flag-fetching). Itu tidak menyinkronkan di sesi ini:243Claude Code hanya menyinkronkan dalam sesi yang masuk dengan akun claude.ai Anda dan [mengambil feature flag dari Anthropic](/docs/id/env-vars#features-that-need-feature-flag-fetching). Claude Code tidak menyinkronkan dalam sesi berikut:

234 244 

235* Sesi yang tidak menggunakan sign-in yang disimpan oleh `/login`, seperti yang mengautentikasi dengan API key, atau yang mana `ANTHROPIC_AUTH_TOKEN`, `CLAUDE_CODE_OAUTH_TOKEN`, atau skrip `apiKeyHelper` menyediakan kredensial245* Sesi yang tidak menggunakan login yang disimpan oleh `/login`, seperti sesi yang melakukan autentikasi dengan kunci API, atau sesi tempat `ANTHROPIC_AUTH_TOKEN`, `CLAUDE_CODE_OAUTH_TOKEN`, atau skrip `apiKeyHelper` menyediakan kredensial

236* Sesi yang tidak mengambil feature flags, seperti yang di Amazon Bedrock atau yang mana Anda atur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`246* Sesi yang tidak mengambil feature flag, seperti sesi di Amazon Bedrock atau sesi tempat Anda mengatur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

237* Sesi di [bare mode](/docs/id/headless#start-faster-with-bare-mode) atau yang Anda mulai dengan `--safe-mode`247* Sesi dalam [bare mode](/docs/id/headless#start-faster-with-bare-mode) atau sesi yang Anda mulai dengan `--safe-mode`

238* Sesi tempat managed settings organisasi Anda [mengunci skills ke sumber plugin](/docs/id/settings-reference#strictpluginonlycustomization-skills), atau yang Anda mulai dengan daftar [`--setting-sources`](/docs/id/cli-reference#cli-flags) yang meninggalkan `user`248* Sesi tempat pengaturan terkelola organisasi Anda [mengunci skill ke sumber plugin](/docs/id/settings-reference#strictpluginonlycustomization-skills), atau sesi yang Anda mulai dengan daftar [`--setting-sources`](/docs/id/cli-reference#cli-flags) yang tidak menyertakan `user`

239 249 

240Jika Anda masuk dengan `/login` selama sesi, restart Claude Code untuk mulai menyinkronkan.250Jika Anda masuk dengan `/login` selama sesi, mulai ulang Claude Code untuk memulai sinkronisasi.

241 251 

242Skills yang sesi sebelumnya sinkronkan tetap di disk. Claude Code memuatnya di sesi yang lebih baru yang masuk ke akun yang sama, bahkan ketika tidak dapat menjangkau claude.ai.252Skill yang disinkronkan oleh sesi sebelumnya tetap ada di disk. Claude Code memuatnya di sesi berikutnya yang masuk ke akun yang sama, bahkan ketika tidak dapat menjangkau claude.ai.

243 253 

244Claude Code mengunduh synced skills dan tidak pernah mengunggahnya. Jika Anda atau Claude mengedit file di bawah `~/.claude/skills/synced/`, perubahan tidak disimpan ke akun claude.ai Anda, dan sinkronisasi yang lebih baru dapat menimpanya atau menghapusnya. Untuk mengubah synced skill, perbarui di claude.ai; sinkronisasi berikutnya mengunduh versi baru.254Claude Code mengunduh skill yang disinkronkan dan tidak pernah mengunggahnya. Jika Anda atau Claude mengedit file di bawah `~/.claude/skills/synced/`, perubahan tersebut tidak disimpan ke akun claude.ai Anda, dan sinkronisasi berikutnya dapat menimpa atau menghapusnya. Untuk mengubah skill yang disinkronkan, perbarui di claude.ai; sinkronisasi berikutnya akan mengunduh versi barunya.

245 255 

246Untuk melihat skills mana yang disinkronkan, jalankan `/skills`. Menu mencantumnya di bawah `claude.ai sync`.256Untuk melihat skill mana yang disinkronkan, jalankan `/skills`. Menu tersebut mencantumkannya di bawah `claude.ai sync`.

247 257 

248Beberapa skills Anthropic, seperti `pdf` dan `xlsx`, selalu disinkronkan. Untuk sisanya, aktifkan atau matikan skill di pengaturan skills Anda di claude.ai untuk mengubah apakah itu disinkronkan.258Beberapa skill Anthropic, seperti `pdf` dan `xlsx`, selalu disinkronkan. Untuk skill lainnya, aktifkan atau matikan skill di pengaturan skill Anda di claude.ai untuk mengubah apakah skill tersebut disinkronkan.

249 259 

250Untuk berhenti menyinkronkan di mesin, atur [`syncClaudeAiSkills`](/docs/id/settings-reference#syncclaudeaiskills) ke `false` di pengaturan pengguna Anda. Claude Code berhenti mengunduh, dan saat berikutnya dimulai itu memindahkan skills yang sudah disinkronkan ke `~/.claude/skills/.trash/` dan tidak lagi memuatnya. Organisasi Anda dapat mematikan sinkronisasi untuk semua orang dengan mematikan Skills di claude.ai. Untuk berhenti menyinkronkan sambil membiarkan Skills aktif, itu dapat mengatur kunci yang sama di [managed settings](/docs/id/managed-settings).260Untuk menghentikan sinkronisasi di suatu mesin, atur [`syncClaudeAiSkills`](/docs/id/settings-reference#syncclaudeaiskills) ke `false` di pengaturan pengguna Anda. Claude Code berhenti mengunduh, dan saat dimulai berikutnya, Claude Code memindahkan skill yang sudah disinkronkan ke `~/.claude/skills/.trash/` dan tidak lagi memuatnya. Organisasi Anda dapat mematikan sinkronisasi untuk semua orang dengan mematikan Skills di claude.ai. Untuk menghentikan sinkronisasi sambil tetap mengaktifkan Skills, organisasi dapat mengatur kunci yang sama di [pengaturan terkelola](/docs/id/managed-settings).

251 261 

252Jika organisasi Anda mematikan Skills di claude.ai, Claude Code menghapus skills yang diunduh dan mereka berhenti dimuat. Skills yang dihapus pindah ke `~/.claude/skills/.trash/`, tempat Anda dapat memulihkan file sampai [retention sweep](/docs/id/claude-directory#cleaned-up-automatically) menghapusnya. Setelah organisasi Anda menghidupkan Skills kembali, Claude Code mengunduh skills yang Anda aktifkan di sinkronisasi berikutnya.262Jika organisasi Anda mematikan Skills di claude.ai, Claude Code menghapus skill yang telah diunduh dan skill tersebut berhenti dimuat. Skill yang dihapus dipindahkan ke `~/.claude/skills/.trash/`, tempat Anda dapat memulihkan file-filenya sampai [pembersihan retensi](/docs/id/claude-directory#cleaned-up-automatically) menghapusnya. Setelah organisasi Anda mengaktifkan kembali Skills, Claude Code mengunduh skill yang Anda aktifkan pada sinkronisasi berikutnya.

253 263 

254<h4 id="when-a-synced-skill-name-matches-another-command">264<h4 id="when-a-synced-skill-name-matches-another-command">

255 Ketika nama synced skill cocok dengan perintah lain265 Ketika nama skill yang disinkronkan cocok dengan perintah lain

256</h4>266</h4>

257 267 

258Anda dapat menginvokasi synced skill dengan nama lengkapnya, `/anthropic-skills:<name>`, atau dengan nama pendeknya, `/<name>`. Ketika perintah lain menggunakan nama pendek itu, `/<name>` menjalankan perintah lain, dan synced skill berjalan hanya sebagai `/anthropic-skills:<name>`. Dengan skill `deploy` lokal dan synced `deploy`, `/deploy` menjalankan skill lokal dan `/anthropic-skills:deploy` menjalankan yang disinkronkan. Sebelum v2.1.269, synced skill hanya memiliki nama pendeknya.268Anda dapat memanggil skill yang disinkronkan dengan nama pendeknya, `/<name>`, atau dengan nama lengkapnya, `/anthropic-skills:<name>`. Ketika perintah lain menggunakan nama pendek tersebut, `/<name>` menjalankan perintah lain itu, dan skill yang disinkronkan hanya dijalankan sebagai `/anthropic-skills:<name>`. Dengan skill `deploy` lokal dan `deploy` yang disinkronkan, `/deploy` menjalankan skill lokal dan `/anthropic-skills:deploy` menjalankan yang disinkronkan. Sebelum v2.1.269, skill yang disinkronkan hanya memiliki nama pendeknya.

259 269 

260Dalam menu `/`, `/skills`, dan `/context`, synced skill muncul di bawah nama pendeknya, atau di bawah nama lengkapnya sementara perintah lain menggunakan nama pendek. Jalankan `/skills` di sesi Anda. Catatan di bawah daftar menjelaskan setiap synced skill yang kehilangan nama pendeknya. Jika salah satu personal skills atau file perintah Anda di `~/.claude/` menggunakan nama itu, catatan juga mengatakan apa yang harus diubah nama atau dihapus untuk membebaskannya.270Di menu `/`, `/skills`, dan `/context`, skill yang disinkronkan muncul dengan nama pendeknya, atau dengan nama lengkapnya selama perintah lain menggunakan nama pendek tersebut. Jalankan `/skills` di sesi Anda. Catatan di bawah daftar menjelaskan setiap skill yang disinkronkan yang kehilangan nama pendeknya. Jika salah satu skill personal atau file perintah Anda di `~/.claude/` menggunakan nama tersebut, catatan itu juga menyebutkan apa yang perlu diganti namanya atau dihapus untuk membebaskannya.

261 271 

262Dari v2.1.269 hingga v2.1.280, daftar ini menunjukkan setiap synced skill di bawah nama lengkapnya, dan `/skills` tidak memiliki catatan seperti itu; keduanya berubah di v2.1.281.272Dari v2.1.269 hingga v2.1.280, daftar-daftar ini menampilkan setiap skill yang disinkronkan dengan nama lengkapnya, dan `/skills` tidak memiliki catatan tersebut; keduanya berubah di v2.1.281.

263 273 

264Perintah yang menggunakan nama pendek dapat berupa salah satu dari ini:274Perintah yang menggunakan nama pendek tersebut dapat berupa salah satu dari berikut:

265 275 

266* Perintah bawaan atau [bundled skill](#bundled-skills), termasuk yang tidak tersedia di sesi Anda, misalnya setelah Anda mematikan bundled skills276* Perintah bawaan atau [skill bawaan](#bundled-skills), termasuk yang tidak tersedia di sesi Anda, misalnya setelah Anda mematikan skill bawaan

267* Skill di [level lokal apa pun](#where-skills-live) atau file di `.claude/commands/`277* Skill di [tingkat lokal](#where-skills-live) mana pun atau file di `.claude/commands/`

268* Plugin skill278* Skill plugin

269* [MCP prompt](/docs/id/mcp#use-mcp-prompts-as-commands)279* [Prompt MCP](/docs/id/mcp#use-mcp-prompts-as-commands)

270 280 

271Claude Code memberi label synced skills sehingga Anda dapat mengetahui dari mana mereka berasal. Menu `/skills` dan `/context` mengelompokkan synced skills di bawah `claude.ai sync`, dan menu perintah `/` menandainya sebagai berasal dari claude.ai.281Claude Code memberi label pada skill yang disinkronkan agar Anda dapat mengetahui asalnya. Menu `/skills` dan `/context` mengelompokkan skill yang disinkronkan di bawah `claude.ai sync`, dan menu perintah `/` menandainya sebagai berasal dari claude.ai.

272 282 

273Ketika membandingkan nama, Claude Code mengabaikan huruf besar-kecil, spasi, dan karakter tak terlihat, dan memperlakukan bentuk kompatibilitas seperti huruf lebar dan varian dash sebagai padanan polosnya. Misalnya, synced skill bernama `Commit` dan skill lokal bernama `commit` dihitung sebagai nama yang sama, jadi `/commit` terus menjalankan skill lokal Anda.283Saat membandingkan nama, Claude Code mengabaikan huruf besar/kecil, spasi, dan karakter tak terlihat, serta memperlakukan bentuk kompatibilitas seperti huruf fullwidth dan varian tanda hubung sebagai padanan biasanya. Misalnya, skill yang disinkronkan bernama `Commit` dan skill lokal bernama `commit` dihitung sebagai nama yang sama, sehingga `/commit` tetap menjalankan skill lokal Anda.

274 284 

275Nama yang berbeda hanya dengan huruf yang mirip dari alfabet lain dihitung sebagai nama yang berbeda, dan label `claude.ai sync` adalah cara Anda membedakan keduanya. Pemeriksaan dan label ini memerlukan Claude Code v2.1.228 atau lebih baru.285Nama yang hanya berbeda karena huruf yang mirip dari alfabet lain dihitung sebagai nama yang berbeda, dan label `claude.ai sync` adalah cara Anda membedakan keduanya. Pemeriksaan dan label ini memerlukan Claude Code v2.1.228 atau yang lebih baru.

276 286 

277<h4 id="names-reserved-for-synced-skills">287<h4 id="names-reserved-for-synced-skills">

278 Nama yang dicadangkan untuk synced skills288 Nama yang dicadangkan untuk skill yang disinkronkan

279</h4>289</h4>

280 290 

281Claude Code mencadangkan nama `anthropic-skills`, dan setiap nama di dalam namespace itu seperti `anthropic-skills:pdf`, untuk skills yang disinkronkan dari claude.ai, jadi nama lengkap synced skill tidak pernah menjalankan apa pun yang lain. Nama dicadangkan di setiap sesi, apakah atau tidak Anda masuk dengan akun claude.ai.291Claude Code mencadangkan nama `anthropic-skills`, dan setiap nama di dalam namespace tersebut seperti `anthropic-skills:pdf`, untuk skill yang disinkronkan dari claude.ai, sehingga nama lengkap skill yang disinkronkan tidak pernah menjalankan hal lain. Nama tersebut dicadangkan di setiap sesi, baik Anda masuk dengan akun claude.ai maupun tidak.

282 292 

283* **Folder skill, frontmatter `name`, file atau subfolder di `.claude/commands/`, atau [saved workflow](/docs/id/workflows#save-the-workflow-for-reuse)**: itu tidak dimuat. [Startup notice](/docs/id/errors#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) menamai item pertama untuk diubah nama atau diedit.293* **Folder skill, `name` frontmatter, file atau subfolder di `.claude/commands/`, atau [workflow yang disimpan](/docs/id/workflows#save-the-workflow-for-reuse)**: tidak dimuat. [Pemberitahuan startup](/docs/id/errors#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) menyebutkan item pertama yang perlu diganti namanya atau diedit.

284* **Plugin bernama `anthropic-skills`**: itu dimuat. Ketika salah satu skillnya dan synced skill keduanya bernama `<name>`, `/anthropic-skills:<name>` menjalankan synced skill.294* **Plugin bernama `anthropic-skills`**: dimuat. Ketika salah satu skill-nya dan skill yang disinkronkan sama-sama bernama `<name>`, `/anthropic-skills:<name>` menjalankan skill yang disinkronkan.

285* **MCP server bernama `anthropic-skills`**: itu terhubung dan toolsnya bekerja, tetapi [promptsnya tidak muncul sebagai perintah](/docs/id/mcp#use-mcp-prompts-as-commands). Ubah nama server di konfigurasi MCP Anda untuk mencantumnya.295* **Server MCP bernama `anthropic-skills`**: terhubung dan tool-nya berfungsi, tetapi [prompt-nya tidak muncul sebagai perintah](/docs/id/mcp#use-mcp-prompts-as-commands). Ganti nama server di konfigurasi MCP Anda untuk mencantumkannya.

286 296 

287<h4 id="how-claude-code-handles-the-frontmatter-of-a-synced-skill">297<h4 id="how-claude-code-handles-the-frontmatter-of-a-synced-skill">

288 Bagaimana Claude Code menangani frontmatter dari synced skill298 Cara Claude Code menangani frontmatter skill yang disinkronkan

289</h4>299</h4>

290 300 

291Claude Code menerapkan dua aturan ke frontmatter synced skill:301Claude Code menerapkan dua aturan pada frontmatter skill yang disinkronkan:

292 302 

293* Claude Code menghormati frontmatter di setiap jenis sesi, jadi hibah `allowed-tools` melalui [permission flow](/docs/id/permissions) normal.303* Frontmatter berlaku di setiap jenis sesi, sehingga pemberian `allowed-tools` melalui [alur izin](/docs/id/permissions) normal. Jika organisasi Anda mengatur `allowManagedPermissionRulesOnly`, pemberian tersebut [tidak berlaku](#when-only-managed-permission-rules-apply).

294* Claude Code membersihkan teks tampilan yang disediakan skill, seperti deskripsinya. Itu menghapus karakter kontrol, dan dalam teks yang mencapai Claude, seperti deskripsi, itu juga menghindari tanda kurung sudut sehingga teks tidak dapat meniru pemformatan internal Claude Code. Pembersihan ini memerlukan Claude Code v2.1.228 atau lebih baru.304* Claude Code membersihkan teks tampilan yang disediakan skill, seperti deskripsinya. Claude Code menghapus karakter kontrol, dan dalam teks yang mencapai Claude, seperti deskripsi, Claude Code juga meng-escape kurung sudut agar teks tidak dapat meniru format internal Claude Code. Pembersihan ini memerlukan Claude Code v2.1.228 atau yang lebih baru.

295 305 

296<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">306<h4 id="how-claude-code-handles-the-body-of-a-synced-skill">

297 Bagaimana Claude Code menangani body dari synced skill307 Cara Claude Code menangani isi skill yang disinkronkan

298</h4>308</h4>

299 309 

300Apa yang Claude Code lakukan dengan body synced skill bergantung pada tempat sesi berjalan:310Apa yang dilakukan Claude Code terhadap isi skill yang disinkronkan bergantung pada tempat sesi berjalan:

301 311 

302* Dalam sesi cloud, body mempertahankan perilaku yang dimiliki skill lokal, karena sesi berjalan dalam kontainer terisolasi.312* Dalam sesi cloud, isi skill mempertahankan perilaku yang dimiliki skill lokal, karena sesi berjalan di container yang terisolasi.

303* Dalam sesi Cowork di desktop Anda, body mempertahankan perilaku yang dimiliki skill lokal, kecuali Claude Code menggantikan setiap baris perintah `!` dengan placeholder [`disableSkillShellExecution`](#inject-dynamic-context), seperti yang dilakukannya untuk setiap skill yang Anda sediakan di sana.313* Dalam sesi Cowork di desktop Anda, isi skill mempertahankan perilaku yang dimiliki skill lokal, kecuali bahwa Claude Code mengganti setiap baris perintah `!` dengan [placeholder `disableSkillShellExecution`](#inject-dynamic-context), seperti yang dilakukannya untuk setiap skill yang Anda sediakan di sana.

304* Dalam sesi lain di mesin Anda, Claude Code tidak menjalankan perintah [`!`](#inject-dynamic-context), tidak melampirkan file yang referensi `@` beri nama dengan cara yang dilakukannya untuk skill lokal, dan tidak mengganti placeholder `${CLAUDE_PROJECT_DIR}` dan `${CLAUDE_SESSION_ID}`, jadi referensi `@` dan kedua placeholder mencapai Claude sebagai teks literal. Baris perintah `!` mencapai Claude sebagai teks literal juga, atau sebagai placeholder itu ketika `disableSkillShellExecution` aktif. Penanganan ini memerlukan Claude Code v2.1.228 atau lebih baru.314* Dalam sesi lain mana pun di mesin Anda, Claude Code tidak menjalankan [perintah `!`](#inject-dynamic-context), tidak melampirkan file yang disebutkan oleh referensi `@` seperti yang dilakukannya untuk skill lokal, dan tidak mensubstitusi placeholder `${CLAUDE_PROJECT_DIR}` dan `${CLAUDE_SESSION_ID}`, sehingga referensi `@` dan kedua placeholder tersebut mencapai Claude sebagai teks literal. Baris perintah `!` juga mencapai Claude sebagai teks literal, atau sebagai placeholder tersebut ketika `disableSkillShellExecution` aktif. Penanganan ini memerlukan Claude Code v2.1.228 atau yang lebih baru.

305 315 

306<h3 id="live-change-detection">316<h3 id="live-change-detection">

307 Edit skill selama sesi317 Mengedit skill selama sesi

308</h3>318</h3>

309 319 

310Claude Code mengawasi direktori skill untuk perubahan file, kecuali di [bare mode](/docs/id/headless#start-faster-with-bare-mode). Ketika Anda menambah, mengedit, atau menghapus skill di bawah `~/.claude/skills/`, project `.claude/skills/`, atau `.claude/skills/` di dalam direktori `--add-dir`, Claude Code mengambil perubahan dalam sesi saat ini, tanpa restart.320Claude Code memantau direktori skill untuk perubahan file, kecuali dalam [bare mode](/docs/id/headless#start-faster-with-bare-mode). Saat Anda menambahkan, mengedit, atau menghapus skill di bawah `~/.claude/skills/`, `.claude/skills/` milik proyek, atau `.claude/skills/` di dalam direktori `--add-dir`, Claude Code mengambil perubahan tersebut dalam sesi saat ini, tanpa restart.

311 321 

312Jika Anda membuat direktori skills tingkat atas yang tidak ada ketika sesi dimulai, jalankan [`/reload-skills`](/docs/id/commands#all-commands) untuk mengambil skills yang Anda letakkan di sana. Claude Code tidak mengawasi direktori itu lagi, jadi jalankan `/reload-skills` lagi setelah setiap perubahan di sana nanti.322Jika Anda membuat direktori skill tingkat atas yang belum ada saat sesi dimulai, jalankan [`/reload-skills`](/docs/id/commands#all-commands) untuk mengambil skill yang Anda letakkan di sana. Claude Code belum memantau direktori tersebut, jadi jalankan `/reload-skills` lagi setelah setiap perubahan berikutnya di sana.

313 323 

314Live change detection mencakup teks `SKILL.md` saja. Untuk folder skill yang juga merupakan [plugin](/docs/id/plugins/loading#plugins-shared-through-a-repository), perubahan ke `hooks/`, `.mcp.json`, `agents/`, dan `output-styles/` memerlukan `/reload-plugins` untuk berlaku.324Deteksi perubahan langsung hanya mencakup teks `SKILL.md`. Untuk folder skill yang juga merupakan [plugin](/docs/id/plugins/loading#plugins-shared-through-a-repository), perubahan pada `hooks/`, `.mcp.json`, `agents/`, dan `output-styles/` memerlukan `/reload-plugins` agar berlaku.

315 325 

316<h3 id="remove-a-skill">326<h3 id="remove-a-skill">

317 Hapus skill327 Menghapus skill

318</h3>328</h3>

319 329 

320Bagaimana Anda menghapus skill bergantung pada dari mana asalnya:330Cara Anda menghapus skill bergantung pada asalnya:

321 331 

322* **Personal atau project skill**: hapus direktori skill, `~/.claude/skills/<skill-name>/` atau `.claude/skills/<skill-name>/`. Claude Code [menjatuhkannya dari `/skills` di sesi saat ini](#live-change-detection); konten yang sudah dimuat Claude Code darinya mengikuti [skill content lifecycle](#skill-content-lifecycle).332* **Skill personal atau proyek**: hapus direktori skill tersebut, `~/.claude/skills/<skill-name>/` atau `.claude/skills/<skill-name>/`. Claude Code [menghapusnya dari `/skills` di sesi saat ini](#live-change-detection); konten yang sudah dimuat Claude Code darinya mengikuti [siklus hidup konten skill](#skill-content-lifecycle).

323* **Enterprise skill**: administrator menghapus direktori skill dari `.claude/skills/` di dalam [direktori managed settings](/docs/id/managed-settings#delivery-mechanisms), misalnya `/etc/claude-code/.claude/skills/<skill-name>/` di Linux.333* **Skill enterprise**: administrator menghapus direktori skill dari `.claude/skills/` di dalam [direktori pengaturan terkelola](/docs/id/managed-settings#delivery-mechanisms), misalnya `/etc/claude-code/.claude/skills/<skill-name>/` di Linux.

324* **Plugin skill**: nonaktifkan atau uninstall plugin yang menyediakannya, dari menu `/plugin` atau dengan `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code membongkar skills plugin ketika [perubahan berlaku](/docs/id/plugins/cli-reference#reload-plugins) atau ketika Anda restart.334* **Skill plugin**: nonaktifkan atau hapus instalasi plugin yang menyediakannya, dari menu `/plugin` atau dengan `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code membongkar skill plugin tersebut saat [perubahan berlaku](/docs/id/plugins/cli-reference#reload-plugins) atau saat Anda memulai ulang.

325* **Skill yang disinkronkan dari claude.ai**: matikan skill untuk akun claude.ai Anda, di tempat yang sama Anda [mengaktifkannya](#skills-in-cowork-and-cloud-sessions). Claude Code menghapusnya dari `~/.claude/skills/synced/` saat berikutnya [menyinkronkan skills Anda](#where-synced-skills-load). Jika Anda menghapus direktori dengan tangan sebagai gantinya, sinkronisasi berikutnya mengunduhnya lagi sementara skill tetap diaktifkan di claude.ai.335* **Skill yang disinkronkan dari claude.ai**: matikan skill tersebut untuk akun claude.ai Anda, di tempat yang sama dengan tempat Anda [mengaktifkannya](#skills-in-cowork-and-cloud-sessions). Claude Code menghapusnya dari `~/.claude/skills/synced/` saat berikutnya [menyinkronkan skill Anda](#where-synced-skills-load). Jika Anda menghapus direktori secara manual, sinkronisasi berikutnya akan mengunduhnya lagi selama skill tersebut tetap diaktifkan di claude.ai.

326* **Bundled skill**: atur [`disableBundledSkills`](#bundled-skills) ke `true` untuk mematikan bundled skills, atau atur satu skill ke `"off"` di [`skillOverrides`](#override-skill-visibility-from-settings) untuk menyembunyikannya.336* **Skill bawaan**: atur [`disableBundledSkills`](#bundled-skills) ke `true` untuk mematikan skill bawaan, atau atur satu skill ke `"off"` di [`skillOverrides`](#override-skill-visibility-from-settings) untuk menyembunyikannya.

327 337 

328Untuk menyimpan personal atau project skill tetapi menghentikan Claude dari menginvokasinya sendiri, atur [`disable-model-invocation: true`](#control-who-invokes-a-skill) di frontmatter-nya, atau `"user-invocable-only"` di [`skillOverrides`](#override-skill-visibility-from-settings) ketika Anda tidak ingin mengedit file.338Untuk mempertahankan skill personal atau proyek tetapi mencegah Claude memanggilnya sendiri, atur [`disable-model-invocation: true`](#control-who-invokes-a-skill) di frontmatter-nya, atau `"user-invocable-only"` di [`skillOverrides`](#override-skill-visibility-from-settings) jika Anda tidak ingin mengedit file tersebut.

329 339 

330<h2 id="configure-skills">340<h2 id="configure-skills">

331 Konfigurasi skills341 Konfigurasi skills


603 613 

604Bidang `allowed-tools` memberikan izin untuk tools yang terdaftar selama giliran yang menginvokasi skill, sehingga Claude dapat menggunakannya tanpa meminta persetujuan Anda. Hibah dihapus ketika Anda mengirim pesan berikutnya, meskipun konten skill [tetap dalam konteks](#skill-content-lifecycle); menginvokasi skill lagi menerapkannya kembali untuk giliran itu. Ini tidak membatasi tools mana yang tersedia: setiap tool tetap dapat dipanggil, dan [pengaturan izin](/docs/id/permissions) Anda masih mengatur tools yang tidak terdaftar. Untuk pra-setujui tools untuk seluruh sesi daripada satu giliran, tambahkan aturan izin ke pengaturan izin tersebut.614Bidang `allowed-tools` memberikan izin untuk tools yang terdaftar selama giliran yang menginvokasi skill, sehingga Claude dapat menggunakannya tanpa meminta persetujuan Anda. Hibah dihapus ketika Anda mengirim pesan berikutnya, meskipun konten skill [tetap dalam konteks](#skill-content-lifecycle); menginvokasi skill lagi menerapkannya kembali untuk giliran itu. Ini tidak membatasi tools mana yang tersedia: setiap tool tetap dapat dipanggil, dan [pengaturan izin](/docs/id/permissions) Anda masih mengatur tools yang tidak terdaftar. Untuk pra-setujui tools untuk seluruh sesi daripada satu giliran, tambahkan aturan izin ke pengaturan izin tersebut.

605 615 

606Kepercayaan workspace tidak membatasi bidang ini. Claude Code menerapkan `allowed-tools` skill proyek kapan pun Anda atau Claude menginvokasi skill, termasuk dalam jalankan `-p` dalam folder yang belum pernah Anda percayai. Skill dapat memberikan dirinya akses tool yang luas, jadi tinjau `allowed-tools` skill yang diperiksa ke dalam repositori sebelum Anda menjalankan Claude Code di sana.616Kepercayaan workspace tidak membatasi bidang ini. Claude Code menerapkan `allowed-tools` skill proyek bahkan dalam jalankan `-p` dalam folder yang belum pernah Anda percayai. Skill dapat memberikan dirinya akses tool yang luas, jadi tinjau `allowed-tools` skill yang diperiksa ke dalam repositori sebelum Anda menjalankan Claude Code di sana. Untuk menahan bidang ini dari skill repositori di seluruh organisasi Anda, lihat [Ketika hanya aturan izin terkelola yang berlaku](#when-only-managed-permission-rules-apply).

607 617 

608Skill ini memungkinkan Claude menjalankan perintah git tanpa persetujuan per-penggunaan kapan pun Anda menginvokasinya:618Skill ini memungkinkan Claude menjalankan perintah git tanpa persetujuan per-penggunaan kapan pun Anda menginvokasinya:

609 619 


618 628 

619Untuk menghapus tools dari pool tools yang tersedia Claude saat skill aktif, daftarkan dalam `disallowed-tools` dalam frontmatter skill. Pembatasan dihapus ketika Anda mengirim pesan berikutnya. Seperti aturan deny, bidang tidak dapat menghapus [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) saat tool lain tetap ada. Untuk memblokir tools di semua skills dan prompts, tambahkan aturan deny dalam [pengaturan izin](/docs/id/permissions) Anda.629Untuk menghapus tools dari pool tools yang tersedia Claude saat skill aktif, daftarkan dalam `disallowed-tools` dalam frontmatter skill. Pembatasan dihapus ketika Anda mengirim pesan berikutnya. Seperti aturan deny, bidang tidak dapat menghapus [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior) saat tool lain tetap ada. Untuk memblokir tools di semua skills dan prompts, tambahkan aturan deny dalam [pengaturan izin](/docs/id/permissions) Anda.

620 630 

631<h4 id="when-only-managed-permission-rules-apply">

632 Ketika hanya aturan izin terkelola yang berlaku

633</h4>

634 

635Ketika organisasi Anda menetapkan `allowManagedPermissionRulesOnly` dalam pengaturan terkelola, Claude Code mengabaikan `allowed-tools` dalam skill proyek dan pribadi serta dalam [sumber lain yang tercantum dalam entri pengaturan tersebut](/docs/id/settings-reference#allowmanagedpermissionrulesonly). Ini memerlukan Claude Code v2.1.282 atau lebih baru.

636 

637Tools yang dicantumkan oleh skill yang terdampak akan melalui aturan terkelola organisasi Anda dan permintaan izin normal sebagai gantinya. Jalankan `/status` untuk menampilkan daftar setiap skill yang `allowed-tools`-nya telah diabaikan oleh Claude Code sejauh ini dalam sesi. Perintah yang diinjeksikan dalam skill yang tidak diizinkan oleh aturan terkelola mana pun mengikuti [Pemeriksaan izin pada perintah yang diinjeksikan](#permission-checks-on-injected-commands).

638 

621<h3 id="pass-arguments-to-skills">639<h3 id="pass-arguments-to-skills">

622 Teruskan argumen ke skills640 Teruskan argumen ke skills

623</h3>641</h3>


766 784 

767Perintah yang diinjeksi tidak pernah meminta izin saat skill dirender. Claude Code memeriksa masing-masing terhadap [aturan izin](/docs/id/permissions) Anda terlebih dahulu. Perintah yang cocok dengan aturan deny membatalkan invokasi dengan `Shell command permission check failed for pattern "..."`.785Perintah yang diinjeksi tidak pernah meminta izin saat skill dirender. Claude Code memeriksa masing-masing terhadap [aturan izin](/docs/id/permissions) Anda terlebih dahulu. Perintah yang cocok dengan aturan deny membatalkan invokasi dengan `Shell command permission check failed for pattern "..."`.

768 786 

769Di luar [mode auto](/docs/id/permission-modes#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). Aturan deny dan ask masih mengganti `allowed-tools`. Lihat [Kelola izin](/docs/id/permissions#manage-permissions).787Di luar [auto mode](/docs/id/permission-modes#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](/docs/id/permissions#manage-permissions).

770 788 

771Dalam 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](/docs/id/permission-modes#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).789Dalam 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](/docs/id/permission-modes#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).

772 790 


840 Batasi akses skill Claude858 Batasi akses skill Claude

841</h3>859</h3>

842 860 

843Secara default, Claude dapat menginvokasi skill apa pun yang tidak memiliki `disable-model-invocation: true` yang ditetapkan. Skills yang mendefinisikan `allowed-tools` memberikan Claude akses ke alat tersebut tanpa persetujuan per-penggunaan selama giliran yang menginvokasi skill; hibah dihapus ketika Anda mengirim pesan berikutnya. [Pengaturan izin](/docs/id/permissions) Anda masih mengatur perilaku persetujuan dasar untuk semua alat lainnya. Beberapa perintah bawaan juga tersedia melalui alat Skill, termasuk `/init` dan `/security-review`. Perintah bawaan lainnya seperti `/compact` tidak.861Secara default, Claude dapat menginvokasi skill apa pun yang tidak memiliki `disable-model-invocation: true` yang ditetapkan. Skills yang mendefinisikan [`allowed-tools`](#pre-approve-tools-for-a-skill) memberikan Claude akses ke tool tersebut tanpa persetujuan per-penggunaan selama giliran yang menginvokasi skill; hibah dihapus ketika Anda mengirim pesan berikutnya. [Pengaturan izin](/docs/id/permissions) Anda masih mengatur perilaku persetujuan dasar untuk semua tool lainnya. Beberapa perintah bawaan juga tersedia melalui tool Skill, termasuk `/init` dan `/security-review`. Perintah bawaan lainnya seperti `/compact` tidak.

844 862 

845Tiga cara untuk mengontrol skill mana yang dapat diinvokasi Claude:863Tiga cara untuk mengontrol skill mana yang dapat diinvokasi Claude:

846 864 

sub-agents.md +6 −1

Details

1253| `x` | Hentikan fork yang dipilih jika sedang berjalan, atau tutup barisnya jika tidak lagi berjalan. Pada baris sesi utama, atau pada baris fork yang transkrinya Anda buka dengan `Enter`, `x` mengetik ke dalam prompt sebagai gantinya |1253| `x` | Hentikan fork yang dipilih jika sedang berjalan, atau tutup barisnya jika tidak lagi berjalan. Pada baris sesi utama, atau pada baris fork yang transkrinya Anda buka dengan `Enter`, `x` mengetik ke dalam prompt sebagai gantinya |

1254| `Esc` | Kembalikan fokus ke input prompt |1254| `Esc` | Kembalikan fokus ke input prompt |

1255 1255 

1256Dengan transkrip fork atau subagent terbuka, pesan tindak lanjut dan [skills](/docs/id/skills) pergi ke agen tersebut, tetapi perintah bawaan masih berjalan dalam percakapan utama Anda. Mulai dari v2.1.199, mengetik `/model` atau `/fast` dalam tampilan itu menampilkan pemberitahuan bahwa itu mengubah model percakapan utama atau mode cepat, bukan agen yang dilihat, daripada menjalankannya secara diam-diam.1256Dengan transkrip fork atau subagent terbuka, pesan tindak lanjut dan [skills](/docs/id/skills) pergi ke agent tersebut, dan perintah bawaan pergi ke percakapan utama Anda, dengan pengaman berikut:

1257 

1258* `/compact`, `/clear`, dan `/rewind` bekerja pada percakapan utama, sehingga Claude Code meminta Anda untuk mengonfirmasi sebelum menjalankan salah satunya dari tampilan ini.

1259* `/model` dan `/fast` mengatur model dan fast mode percakapan utama, bukan milik agent yang dilihat, sehingga keduanya tidak berjalan dari tampilan ini. Sebuah pemberitahuan menjelaskan alasannya.

1260 

1261Agar agent yang dilihat membaca pesan Anda sebelum pekerjaan yang sedang ditunggunya selesai, kirimkan dengan [`Ctrl+Enter` atau `Ctrl+X Ctrl+S`](/docs/id/keybindings#chat-actions). Setiap perintah shell atau subagent yang ditunggu agent dan dapat dipindahkan ke [latar belakang](/docs/id/tools-reference#background-commands) akan pindah ke sana dan terus berjalan. Ketika agent sedang menulis respons, atau menunggu pekerjaan yang tidak dapat dipindahkan ke latar belakang, agent tetap melanjutkan dan membaca pesan Anda setelah itu selesai. Memerlukan Claude Code v2.1.286 atau lebih baru.

1257 1262 

1258<h3 id="how-forks-differ-from-other-subagents">1263<h3 id="how-forks-differ-from-other-subagents">

1259 Bagaimana fork berbeda dari subagent lainnya1264 Bagaimana fork berbeda dari subagent lainnya

Details

231 231 

232Ketika perintah latar depan mencapai timeoutnya tanpa selesai, Claude Code memindahkannya ke latar belakang alih-alih menghentikannya, kecuali perintah dimulai dengan `sleep`. [Batas waktu](#time-limit-for-background-commands) perintah yang dipindahkan dihitung dari perpindahan, dan perintah subagent latar depan yang dipindahkan masih berhenti ketika run subagent itu berakhir.232Ketika perintah latar depan mencapai timeoutnya tanpa selesai, Claude Code memindahkannya ke latar belakang alih-alih menghentikannya, kecuali perintah dimulai dengan `sleep`. [Batas waktu](#time-limit-for-background-commands) perintah yang dipindahkan dihitung dari perpindahan, dan perintah subagent latar depan yang dipindahkan masih berhenti ketika run subagent itu berakhir.

233 233 

234Mengatur [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/id/env-vars#variables) menonaktifkan auto-backgrounding bersama dengan sisa fungsionalitas tugas latar belakang.234Mengatur [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1`](/docs/id/env-vars#variables) atau menjalankan dalam [bare mode](/docs/id/headless#start-faster-with-bare-mode) menonaktifkan auto-backgrounding bersama dengan sisa fungsionalitas tugas latar belakang, sehingga perintah yang mencapai timeoutnya akan berhenti sebagai gantinya.

235 235 

236Hasil perintah yang dipindahkan ke latar belakang menyatakan apa yang terjadi:236Hasil perintah yang dipindahkan ke latar belakang menyatakan apa yang terjadi:

237 237 


661 661 

662Aturan `WebFetch(domain:...)` eksplisit dalam `deny`, `ask`, atau `allow` mengambil alih himpunan pra-persetujuan, jadi Anda dapat memblokir domain pra-persetujuan atau memerlukan prompt untuknya.662Aturan `WebFetch(domain:...)` eksplisit dalam `deny`, `ask`, atau `allow` mengambil alih himpunan pra-persetujuan, jadi Anda dapat memblokir domain pra-persetujuan atau memerlukan prompt untuknya.

663 663 

664Ketika URL adalah tautan [artifact](/docs/id/artifacts) claude.ai, Claude Code juga dapat meminta persetujuan untuk membaca artifact itu sendiri. Untuk kasus-kasus saat Claude Code meminta persetujuan, lihat [Membaca artifact yang dibagikan kepada Anda](/docs/id/artifacts#read-an-artifact-shared-with-you).

665 

664WebFetch menetapkan header `User-Agent` yang dimulai dengan `Claude-User`, dan header `Accept` yang lebih menyukai Markdown daripada HTML sehingga server yang mendukung negosiasi konten dapat mengembalikan Markdown secara langsung.666WebFetch menetapkan header `User-Agent` yang dimulai dengan `Claude-User`, dan header `Accept` yang lebih menyukai Markdown daripada HTML sehingga server yang mendukung negosiasi konten dapat mengembalikan Markdown secara langsung.

665 667 

666Perintah sandboxed tidak mewarisi himpunan domain dokumentasi pra-persetujuan bawaan WebFetch. Untuk membiarkan perintah sandboxed mencapai domain tanpa prompt, tambahkan domain ke [`allowedDomains`](/docs/id/settings-reference#sandbox-network-alloweddomains) atau izinkan dengan aturan `WebFetch(domain:...)`, yang [sandbox juga hormati](/docs/id/sandboxing#network-isolation). WebFetch tidak pernah membaca daftar allowlist sandbox sebagai gantinya, jadi menambahkan domain ke sandbox atau daftar allowlist jaringan organisasi tidak menghentikan WebFetch dari memintanya.668Perintah sandboxed tidak mewarisi himpunan domain dokumentasi pra-persetujuan bawaan WebFetch. Untuk membiarkan perintah sandboxed mencapai domain tanpa prompt, tambahkan domain ke [`allowedDomains`](/docs/id/settings-reference#sandbox-network-alloweddomains) atau izinkan dengan aturan `WebFetch(domain:...)`, yang [sandbox juga hormati](/docs/id/sandboxing#network-isolation). WebFetch tidak pernah membaca daftar allowlist sandbox sebagai gantinya, jadi menambahkan domain ke sandbox atau daftar allowlist jaringan organisasi tidak menghentikan WebFetch dari memintanya.

Details

22| `curl: (23)` atau `curl: (56) Failure writing output to destination` | [Periksa konektivitas atau gunakan installer alternatif](#curl-56-failure-writing-output-to-destination) |22| `curl: (23)` atau `curl: (56) Failure writing output to destination` | [Periksa konektivitas atau gunakan installer alternatif](#curl-56-failure-writing-output-to-destination) |

23| `Killed` selama instalasi di Linux, atau `Installation was killed before it could finish (exit code 137)` | [Bebaskan memori atau tambahkan swap space](#install-killed-on-low-memory-linux-servers) |23| `Killed` selama instalasi di Linux, atau `Installation was killed before it could finish (exit code 137)` | [Bebaskan memori atau tambahkan swap space](#install-killed-on-low-memory-linux-servers) |

24| `Raw mode is not supported` selama instalasi | [Jalankan kembali installer](#raw-mode-is-not-supported-during-install) |24| `Raw mode is not supported` selama instalasi | [Jalankan kembali installer](#raw-mode-is-not-supported-during-install) |

25| `EACCES: permission denied` selama instalasi | [Perbaiki hak akses direktori instalasi](#permission-errors-during-installation) |

25| `TLS connect error` atau `SSL/TLS secure channel` | [Perbarui sertifikat CA](#tls-or-ssl-connection-errors) |26| `TLS connect error` atau `SSL/TLS secure channel` | [Perbarui sertifikat CA](#tls-or-ssl-connection-errors) |

26| `Failed to fetch version` atau tidak dapat menjangkau server download | [Periksa pengaturan jaringan dan proxy](#check-network-connectivity) |27| `Failed to fetch version` atau tidak dapat menjangkau server download | [Periksa pengaturan jaringan dan proxy](#check-network-connectivity) |

27| `irm is not recognized` atau `The token '&&' is not a valid statement separator` | [Gunakan perintah yang tepat untuk shell Anda](#wrong-install-command-on-windows) |28| `irm is not recognized` atau `The token '&&' is not a valid statement separator` | [Gunakan perintah yang tepat untuk shell Anda](#wrong-install-command-on-windows) |


295 Periksa izin direktori296 Periksa izin direktori

296</h3>297</h3>

297 298 

298Installer memerlukan akses tulis ke `~/.local/bin/` dan `~/.claude/` di macOS dan Linux. Di Windows lokasi instalasi berada di bawah `%USERPROFILE%`, yang dapat ditulis oleh pengguna Anda secara default, jadi bagian ini jarang berlaku di sana.299Instalasi yang gagal karena izin akan menyebutkan path yang tidak dapat dibuat atau ditulisnya. Di Windows, instalasi menulis di bawah `%USERPROFILE%`, yang dapat ditulis oleh pengguna Anda secara default, jadi bagian ini jarang berlaku di sana.

300 

301Di macOS dan Linux, instalasi menulis ke lokasi-lokasi berikut:

302 

303* `~/.claude/downloads/`: tempat perintah instalasi menyimpan binary yang diunduh

304* `~/.local/bin/`: launcher `claude`

305* `~/.local/share/claude/`: setiap versi yang diunduhnya

306* `~/.local/state/claude/`: file lock-nya

307* `~/.cache/claude/`: unduhan yang di-stage

308* [`~/.claude.json`](/docs/id/claude-directory): file konfigurasi global Anda, tempat installer mencatat metode instalasi

309 

310Jika Anda mengatur `XDG_DATA_HOME`, `XDG_STATE_HOME`, atau `XDG_CACHE_HOME`, instalasi menggunakan lokasi tersebut sebagai pengganti `~/.local/share`, `~/.local/state`, dan `~/.cache`. Jika Anda mengatur [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars), file konfigurasi global berada di bawah direktori tersebut alih-alih di direktori home Anda.

299 311 

300Periksa apakah direktori dapat ditulis:312Periksa apakah direktori dapat ditulis:

301 313 


998 Reset your login1010 Reset your login

999</h3>1011</h3>

1000 1012 

1001Saat login gagal dan penyebabnya tidak jelas, re-authentication yang bersih menyelesaikan sebagian besar kasus:1013Saat login gagal dan penyebabnya tidak jelas, autentikasi ulang yang bersih menyelesaikan sebagian besar kasus:

1002 1014 

10031. Jalankan `/logout` untuk sign out sepenuhnya10151. Jalankan `/logout` untuk sign out sepenuhnya

10042. Tutup Claude Code10162. Tutup Claude Code

10053. Restart dengan `claude` dan selesaikan proses authentication lagi10173. Restart dengan `claude` dan selesaikan proses autentikasi lagi

1006 1018 

1007Jika browser tidak terbuka secara otomatis selama login, tekan `c` untuk menyalin OAuth URL ke clipboard Anda, kemudian tempel ke browser secara manual. Ini juga berfungsi saat URL membungkus di seluruh baris di terminal sempit atau SSH dan tidak dapat diklik langsung.1019Jika browser tidak terbuka secara otomatis selama login, tekan `c` untuk menyalin OAuth URL ke clipboard Anda, kemudian tempel ke browser secara manual. Ini juga berfungsi saat URL membungkus di seluruh baris di terminal sempit atau SSH dan tidak dapat diklik langsung.

1008 1020 


1014 1026 

1015**Solusi:**1027**Solusi:**

1016 1028 

1017* Tekan Enter untuk coba ulang dan selesaikan login dengan cepat setelah browser terbuka1029* Tekan Enter untuk mencoba ulang dan selesaikan login dengan cepat setelah browser terbuka

1018* Ketik `c` untuk menyalin URL lengkap jika browser tidak terbuka secara otomatis1030* Ketik `c` untuk menyalin URL lengkap jika browser tidak terbuka secara otomatis

1019* Jika menggunakan sesi remote/SSH, browser mungkin terbuka di mesin yang salah. Salin URL yang ditampilkan di terminal dan buka di browser lokal Anda sebagai gantinya.1031* Jika menggunakan sesi remote/SSH, browser mungkin terbuka di mesin yang salah. Salin URL yang ditampilkan di terminal dan buka di browser lokal Anda sebagai gantinya.

1020 1032 


1024 1036 

1025Jika Anda melihat `API Error: 403 Request not allowed` setelah login:1037Jika Anda melihat `API Error: 403 Request not allowed` setelah login:

1026 1038 

1027* **Claude Pro/Max users**: verifikasi subscription Anda aktif di [claude.ai/settings](https://claude.ai/settings)1039* **Pengguna Claude Pro/Max**: verifikasi langganan Anda aktif di [claude.ai/settings](https://claude.ai/settings)

1028* **Anthropic Console users**: konfirmasi akun Anda memiliki role "Claude Code" atau "Developer". Admins menetapkan ini di Anthropic Console di bawah Settings → Members.1040* **Pengguna Anthropic Console**: konfirmasi akun Anda memiliki role "Claude Code" atau "Developer". Admin menetapkan ini di Anthropic Console di bawah Settings → Members.

1029* **Di belakang proxy**: corporate proxies dapat mengganggu permintaan API. Lihat [network configuration](/docs/id/network-config) untuk setup proxy.1041* **Di belakang proxy**: proxy perusahaan dapat mengganggu permintaan API. Lihat [konfigurasi jaringan](/docs/id/network-config) untuk setup proxy.

1030 1042 

1031<h3 id="claude-code-access-has-not-been-granted-for-this-account">1043<h3 id="claude-code-access-has-not-been-granted-for-this-account">

1032 Claude Code access has not been granted for this account1044 Claude Code access has not been granted for this account


1036 1048 

1037Untuk mendapatkan akses:1049Untuk mendapatkan akses:

1038 1050 

10391. Minta Owner organisasi Claude Anda untuk menetapkan custom role yang memberikan akses Claude Code ke salah satu grup Anda, atau untuk mengubah role Anda dari Custom ke standard role seperti User. Owners mengelola roles di [role settings](https://claude.ai/admin-settings/roles) organisasi.10511. Minta Owner organisasi Claude Anda untuk menetapkan custom role yang memberikan akses Claude Code ke salah satu grup Anda, atau untuk mengubah role Anda dari Custom ke standard role seperti User. Owner mengelola roles di [pengaturan role](https://claude.ai/admin-settings/roles) organisasi.

10402. Setelah Owner membuat perubahan, jalankan `claude` dan login lagi.10522. Setelah Owner membuat perubahan, jalankan `claude` dan login lagi.

1041 1053 

1042<h3 id="this-organization-has-been-disabled-with-an-active-subscription">1054<h3 id="this-organization-has-been-disabled-with-an-active-subscription">

1043 This organization has been disabled with an active subscription1055 This organization has been disabled with an active subscription

1044</h3>1056</h3>

1045 1057 

1046Jika Anda melihat `API Error: 400 ... "This organization has been disabled"` meskipun memiliki subscription Claude aktif, variabel environment `ANTHROPIC_API_KEY` menimpa subscription Anda. Ini biasanya terjadi saat API key lama dari employer atau project sebelumnya masih diatur di shell profile Anda.1058Jika Anda melihat `API Error: 400 ... "This organization has been disabled"` meskipun memiliki langganan Claude aktif, environment variable `ANTHROPIC_API_KEY` menimpa langganan Anda. Ini biasanya terjadi saat kunci API lama dari employer atau project sebelumnya masih diatur di shell profile Anda.

1047 1059 

1048Saat `ANTHROPIC_API_KEY` ada dan Anda telah menyetujuinya, Claude Code menggunakan key itu alih-alih OAuth credentials subscription Anda. Dalam mode non-interactive dengan flag `-p`, key selalu digunakan saat ada. Lihat [authentication precedence](/docs/id/authentication#authentication-precedence) untuk urutan resolusi lengkap.1060Saat `ANTHROPIC_API_KEY` ada dan Anda telah menyetujuinya, Claude Code menggunakan kunci itu alih-alih kredensial OAuth langganan Anda. Dalam mode non-interaktif dengan flag `-p`, kunci selalu digunakan saat ada. Lihat [prioritas autentikasi](/docs/id/authentication#authentication-precedence) untuk urutan resolusi lengkap.

1049 1061 

1050Untuk menggunakan subscription Anda sebagai gantinya, unset variabel environment dan hapus dari shell profile Anda:1062Untuk menggunakan langganan Anda sebagai gantinya, unset environment variable dan hapus dari shell profile Anda:

1051 1063 

1052<Tabs>1064<Tabs>

1053 <Tab title="macOS/Linux">1065 <Tab title="macOS/Linux">


1065 </Tab>1077 </Tab>

1066</Tabs>1078</Tabs>

1067 1079 

1068Periksa `~/.zshrc`, `~/.bashrc`, atau `~/.profile` untuk baris `export ANTHROPIC_API_KEY=...` dan hapus untuk membuat perubahan permanen. Di Windows, periksa PowerShell profile Anda di `$PROFILE` dan User environment variables Anda untuk `ANTHROPIC_API_KEY`. Jalankan `/status` di dalam Claude Code untuk mengkonfirmasi metode authentication mana yang aktif.1080Periksa `~/.zshrc`, `~/.bashrc`, atau `~/.profile` untuk baris `export ANTHROPIC_API_KEY=...` dan hapus untuk membuat perubahan permanen. Di Windows, periksa PowerShell profile Anda di `$PROFILE` dan User environment variables Anda untuk `ANTHROPIC_API_KEY`. Jalankan `/status` di dalam Claude Code untuk mengkonfirmasi metode autentikasi mana yang aktif.

1069 1081 

1070<h3 id="oauth-login-fails-in-wsl2-ssh-or-containers">1082<h3 id="oauth-login-fails-in-wsl2-ssh-or-containers">

1071 OAuth login fails in WSL2, SSH, or containers1083 OAuth login fails in WSL2, SSH, or containers


1073 1085 

1074Saat Claude Code berjalan di WSL2, pada mesin remote melalui SSH, atau di dalam container, browser biasanya terbuka di host yang berbeda dan redirectnya tidak dapat menjangkau server callback lokal Claude Code. Setelah Anda sign in, browser menampilkan kode login alih-alih redirect kembali secara otomatis. Tempel kode itu ke terminal di prompt `Paste code here if prompted` untuk menyelesaikan login.1086Saat Claude Code berjalan di WSL2, pada mesin remote melalui SSH, atau di dalam container, browser biasanya terbuka di host yang berbeda dan redirectnya tidak dapat menjangkau server callback lokal Claude Code. Setelah Anda sign in, browser menampilkan kode login alih-alih redirect kembali secara otomatis. Tempel kode itu ke terminal di prompt `Paste code here if prompted` untuk menyelesaikan login.

1075 1087 

1076Jika browser tidak terbuka sama sekali dari WSL2, atur variabel environment `BROWSER` ke path Windows browser Anda:1088Jika browser tidak terbuka sama sekali dari WSL2, atur environment variable `BROWSER` ke path Windows browser Anda:

1077 1089 

1078```bash theme={null}1090```bash theme={null}

1079export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"1091export BROWSER="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"


1096 1108 

1097Jika Claude Code meminta Anda untuk login lagi setelah sesi, OAuth token Anda mungkin telah kedaluwarsa.1109Jika Claude Code meminta Anda untuk login lagi setelah sesi, OAuth token Anda mungkin telah kedaluwarsa.

1098 1110 

1099Jalankan `/login` untuk re-authenticate. Jika ini terjadi sering, periksa bahwa jam sistem Anda akurat, karena validasi token bergantung pada timestamp yang benar.1111Jalankan `/login` untuk autentikasi ulang. Jika ini terjadi sering, periksa bahwa jam sistem Anda akurat, karena validasi token bergantung pada timestamp yang benar.

1112 

1113Sesi paralel pada satu mesin berbagi login yang disimpan dan mengoordinasikan pembaruannya sehingga hanya satu proses yang menyegarkan token pada satu waktu. Untuk mengetahui apa yang dilakukan sesi lainnya setelah Anda login lagi di salah satunya, lihat [Not logged in](/docs/id/errors#not-logged-in).

1100 1114 

1101Sesi paralel pada satu mesin berbagi login yang disimpan dan mengoordinasikan pembaruan tokennya sehingga hanya satu proses yang menyegarkan token pada satu waktu. Sebelum v2.1.211, membangunkan mesin dari sleep dapat menyebabkan dua sesi memperbarui dengan token yang sama, yang mencabut login yang disimpan dan meminta setiap sesi terbuka untuk login lagi sekaligus.1115Sebelum v2.1.211, membangunkan mesin dari sleep dapat menyebabkan dua sesi memperbarui dengan token yang sama, yang mencabut login yang disimpan dan meminta setiap sesi terbuka untuk login lagi sekaligus.

1102 1116 

1103Di macOS, Claude Code menyimpan credentials ke login Keychain. Saat Keychain menolak write, seperti saat terkunci di sesi SSH atau passwordnya tidak sinkron dengan password akun Anda, Claude Code menyimpan login Anda ke file plaintext `~/.claude/.credentials.json` sebagai gantinya. Login Console yang membuat API key gagal sampai Keychain dapat ditulis lagi.1117Di macOS, Claude Code menyimpan kredensial ke login Keychain. Saat Keychain menolak write, seperti saat terkunci di sesi SSH atau passwordnya tidak sinkron dengan password akun Anda, Claude Code menyimpan login Anda ke file plaintext `~/.claude/.credentials.json` sebagai gantinya. Login Console yang membuat kunci API gagal sampai Keychain dapat ditulis lagi.

1104 1118 

1105Untuk membuat Keychain dapat ditulis lagi dan memindahkan login Anda kembali ke Keychain terenkripsi:1119Untuk membuat Keychain dapat ditulis lagi dan memindahkan login Anda kembali ke Keychain terenkripsi:

1106 1120 

1107<Steps>1121<Steps>

1108 <Step title="Check Keychain access">1122 <Step title="Periksa akses Keychain">

1109 Jalankan `claude doctor` untuk memeriksa akses Keychain. Saat Keychain menolak writes, laporan mencantumkan peringatan yang dimulai dengan `macOS Keychain is not writable`, diikuti oleh perbaikan yang disarankan. Saat laporan tidak mencantumkan peringatan Keychain, Keychain dapat ditulis dan Anda dapat melompat ke langkah terakhir.1123 Jalankan `claude doctor` untuk memeriksa akses Keychain. Saat Keychain menolak writes, laporan mencantumkan peringatan yang dimulai dengan `macOS Keychain is not writable`, diikuti oleh perbaikan yang disarankan. Saat laporan tidak mencantumkan peringatan Keychain, Keychain dapat ditulis dan Anda dapat melompat ke langkah terakhir.

1110 </Step>1124 </Step>

1111 1125 

1112 <Step title="Unlock the Keychain">1126 <Step title="Buka kunci Keychain">

1113 ```bash theme={null}1127 ```bash theme={null}

1114 security unlock-keychain ~/Library/Keychains/login.keychain-db1128 security unlock-keychain ~/Library/Keychains/login.keychain-db

1115 ```1129 ```


1117 Masukkan password Keychain Anda saat perintah memintanya, kemudian jalankan `claude doctor` lagi. Saat unlock berhasil, laporan tidak lagi mencantumkan peringatan Keychain.1131 Masukkan password Keychain Anda saat perintah memintanya, kemudian jalankan `claude doctor` lagi. Saat unlock berhasil, laporan tidak lagi mencantumkan peringatan Keychain.

1118 </Step>1132 </Step>

1119 1133 

1120 <Step title="Resync the Keychain password if unlocking doesn't help">1134 <Step title="Sinkronkan ulang password Keychain jika membuka kunci tidak membantu">

1121 Buka Keychain Access, pilih keychain `login`, dan pilih **Edit > Change Password for Keychain "login"** untuk menyinkronkannya kembali dengan password akun Anda. Kemudian jalankan `claude doctor` lagi. Lanjutkan ke langkah berikutnya setelah laporan tidak lagi mencantumkan peringatan Keychain.1135 Buka Keychain Access, pilih keychain `login`, dan pilih **Edit > Change Password for Keychain "login"** untuk menyinkronkannya kembali dengan password akun Anda. Kemudian jalankan `claude doctor` lagi. Lanjutkan ke langkah berikutnya setelah laporan tidak lagi mencantumkan peringatan Keychain.

1122 </Step>1136 </Step>

1123 1137 

1124 <Step title="Log out and back in">1138 <Step title="Logout dan login kembali">

1125 Setelah Keychain dapat ditulis lagi, Claude Code memindahkan credentials kembali saat berikutnya menulis credential. Untuk memaksanya sekarang, jalankan `/logout` dan kemudian `/login`. Logout menghapus semua credentials yang disimpan, termasuk isi file plaintext, login server MCP yang disimpan, dan nilai sensitif plugin, jadi bersiaplah untuk re-authorize server MCP dan re-enter plugin secrets sesudahnya. Login lagi menyimpan login Anda di Keychain.1139 Setelah Keychain dapat ditulis lagi, Claude Code memindahkan kredensial kembali saat berikutnya menulis kredensial. Untuk memaksanya sekarang, jalankan `/logout` dan kemudian `/login`. Logout menghapus semua kredensial yang disimpan, termasuk isi file plaintext, login server MCP yang disimpan, dan nilai sensitif plugin, jadi bersiaplah untuk mengotorisasi ulang server MCP dan memasukkan ulang plugin secrets sesudahnya. Login lagi menyimpan login Anda di Keychain.

1126 </Step>1140 </Step>

1127</Steps>1141</Steps>

1128 1142 


1130 Bedrock, Agent Platform, or Foundry credentials not loading1144 Bedrock, Agent Platform, or Foundry credentials not loading

1131</h3>1145</h3>

1132 1146 

1133Jika Anda mengkonfigurasi Claude Code untuk menggunakan cloud provider dan melihat `Could not load credentials from any providers` di Amazon Bedrock, `Could not load the default credentials` di Google Cloud's Agent Platform, atau `ChainedTokenCredential authentication failed` di Microsoft Foundry, cloud provider CLI Anda mungkin tidak authenticated di shell saat ini.1147Jika Anda mengkonfigurasi Claude Code untuk menggunakan cloud provider dan melihat `Could not load credentials from any providers` di Amazon Bedrock, `Could not load the default credentials` di Google Cloud's Agent Platform, atau `ChainedTokenCredential authentication failed` di Microsoft Foundry, cloud provider CLI Anda mungkin tidak terautentikasi di shell saat ini.

1134 1148 

1135Untuk Amazon Bedrock, konfirmasi AWS credentials Anda valid:1149Untuk Amazon Bedrock, konfirmasi kredensial AWS Anda valid:

1136 1150 

1137```bash theme={null}1151```bash theme={null}

1138aws sts get-caller-identity1152aws sts get-caller-identity


1150az login1164az login

1151```1165```

1152 1166 

1153Jika credentials berfungsi di terminal Anda tetapi tidak di VS Code atau JetBrains extension, proses IDE mungkin tidak mewarisi environment shell Anda. Atur variabel environment provider di pengaturan IDE itu sendiri, atau luncurkan IDE dari terminal di mana mereka sudah diekspor.1167Jika kredensial berfungsi di terminal Anda tetapi tidak di ekstensi VS Code atau JetBrains, proses IDE mungkin tidak mewarisi environment shell Anda. Atur environment variable provider di pengaturan IDE itu sendiri, atau luncurkan IDE dari terminal di mana mereka sudah diekspor.

1154 1168 

1155Lihat [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), atau [Microsoft Foundry](/docs/id/microsoft-foundry) untuk setup provider lengkap.1169Lihat [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), atau [Microsoft Foundry](/docs/id/microsoft-foundry) untuk setup provider lengkap.

1156 1170 

Details

803. Pindahkan pekerjaan file besar ke [subagent](/docs/id/sub-agents) sehingga berjalan di jendela konteks terpisah803. Pindahkan pekerjaan file besar ke [subagent](/docs/id/sub-agents) sehingga berjalan di jendela konteks terpisah

814. Jalankan `/clear` jika percakapan sebelumnya tidak lagi diperlukan814. Jalankan `/clear` jika percakapan sebelumnya tidak lagi diperlukan

82 82 

83Jika error muncul kembali setelah `/clear`, jalankan [`/context`](/docs/id/debug-your-config) dan bandingkan baris `Messages` dengan baris-baris di atasnya:

84 

85* **`Messages` adalah baris terbesar**: file atau output tool dalam percakapan baru sedang mengisi ulang window, jadi kerjakan kembali langkah 1 hingga 3

86* **Gabungan baris-baris lainnya lebih besar**: apa yang dimuat saat sesi dimulai menyisakan terlalu sedikit ruang untuk bekerja, jadi [pangkas apa yang dimuat saat startup](/docs/id/errors#prompt-is-too-long)

87 

83<h3 id="command-hangs-or-freezes">88<h3 id="command-hangs-or-freezes">

84 Command hangs or freezes89 Command hangs or freezes

85</h3>90</h3>

ultrareview.md +5 −5

Details

153 Lacak tinjauan yang sedang berjalan153 Lacak tinjauan yang sedang berjalan

154</h2>154</h2>

155 155 

156Tinjauan biasanya memakan waktu 5 hingga 10 menit. Tinjauan berjalan sebagai tugas latar belakang, sehingga Anda dapat terus bekerja di sesi Anda, memulai perintah lain, atau menutup terminal sepenuhnya. Jika Anda memilih untuk [memposting temuan ke permintaan tarik](#post-findings-to-the-pull-request), jaga sesi tetap terbuka hingga tinjauan selesai; jika sesi berakhir terlebih dahulu, Claude Code tidak memposting apa pun.156Tinjauan biasanya memakan waktu 5 hingga 10 menit. Tinjauan berjalan sebagai tugas latar belakang, sehingga Anda dapat terus bekerja di sesi Anda atau memulai perintah lain. Jika Anda memilih untuk [memposting temuan ke pull request](#post-findings-to-the-pull-request), jaga sesi tetap terbuka hingga tinjauan selesai; jika sesi berakhir terlebih dahulu, Claude Code tidak memposting apa pun.

157 157 

158Gunakan `/tasks` untuk melihat tinjauan yang sedang berjalan dan selesai, buka tampilan detail untuk tinjauan, atau hentikan tinjauan yang sedang berlangsung. Jika Anda menghentikan tinjauan, Claude Code mengarsipkan sesi cloud dan tidak mengembalikan temuan parsial.158Gunakan `/tasks` untuk melihat tinjauan yang sedang berjalan dan selesai, buka tampilan detail untuk tinjauan, atau hentikan tinjauan yang sedang berlangsung. Jika Anda menghentikan tinjauan, Claude Code mengarsipkan sesi cloud dan tidak mengembalikan temuan parsial.

159 159 


181 181 

182Anda menyetujui fallback seluruh repositori dan prompt penagihan serta syarat ketika Anda menjalankan subperintah, sehingga jalankan dimulai tanpa menunggu input. Menjalankannya sendiri adalah apa yang dihitung sebagai persetujuan. Ketika Claude menjalankan subperintah untuk Anda sebagai gantinya, misalnya melalui alat Bash, Claude Code menolak tinjauan seluruh repositori.182Anda menyetujui fallback seluruh repositori dan prompt penagihan serta syarat ketika Anda menjalankan subperintah, sehingga jalankan dimulai tanpa menunggu input. Menjalankannya sendiri adalah apa yang dihitung sebagai persetujuan. Ketika Claude menjalankan subperintah untuk Anda sebagai gantinya, misalnya melalui alat Bash, Claude Code menolak tinjauan seluruh repositori.

183 183 

184Pada Claude Code v2.1.218 atau lebih baru, Anda juga dapat memulai tinjauan cloud dengan menjalankan `/code-review ultra` dalam sesi non-interaktif, misalnya `claude -p '/code-review ultra'`. Claude Code meluncurkan tinjauan dan mencetak tautan pelacakan tanpa menunggu temuan, tidak seperti `claude ultrareview`, yang memblokir hingga temuan tiba. Ketika tinjauan akan menagih kredit penggunaan, Claude Code berhenti sebelum meluncurkan dan mengarahkan Anda ke `claude ultrareview`, karena konfirmasi penagihan memerlukan sesi interaktif. Sebelum v2.1.218, `/code-review ultra` dalam sesi non-interaktif menjalankan tinjauan lokal.184`claude -p '/code-review ultra'` tidak memberikan temuan kepada Anda, jadi gunakan `claude ultrareview` dalam skrip. Jalankan `-p` meluncurkan tinjauan cloud dan keluar tanpa menunggunya. Ketika tinjauan akan menagih kredit penggunaan, jalankan `-p` berhenti tanpa meluncurkannya. Sebelum v2.1.218, `/code-review ultra` dalam sesi non-interaktif menjalankan tinjauan lokal.

185 185 

186Pesan kemajuan dan URL sesi langsung pergi ke stderr sehingga stdout tetap dapat diurai. Gunakan bendera ini untuk mengontrol output, timeout, dan apakah akan memposting temuan:186`claude ultrareview` menulis pesan kemajuannya ke stderr sehingga stdout tetap dapat diurai. Gunakan flag ini untuk mengontrol output, timeout, dan apakah akan memposting temuan:

187 187 

188| Bendera | Deskripsi |188| Bendera | Deskripsi |

189| - | - |189| - | - |


200* **1**: tinjauan gagal diluncurkan atau dihentikan sebelum selesai, sesi cloud mengalami kesalahan, atau timeout berlalu200* **1**: tinjauan gagal diluncurkan atau dihentikan sebelum selesai, sesi cloud mengalami kesalahan, atau timeout berlalu

201* **130**: Anda mengganggu subperintah dengan Ctrl-C201* **130**: Anda mengganggu subperintah dengan Ctrl-C

202 202 

203Jika Anda mengganggu subperintah, tinjauan jarak jauh terus berjalan; ikuti URL sesi yang dicetak ke stderr untuk menontonnya di browser.203Jika subperintah keluar sebelum temuan tiba, temuan tersebut tidak pernah mencapai terminal Anda, dan menjalankannya lagi akan memulai tinjauan baru alih-alih melanjutkan tinjauan tersebut. Tinjauan baru [dihitung sebagai jalankan](#pricing-and-free-runs) tersendiri.

204 204 

205Dengan `--post`, subperintah memulai posting tepat setelah mencetak temuan, dan mencetak tautan ke stderr.205Dengan `--post`, subperintah memulai posting tepat setelah mencetak temuan, dan mencetak tautan ke stderr.

206 206 

207* Jika jalankan gagal, dihentikan, atau timeout, atau jika Anda mengganggu, subperintah tidak memposting apa pun.207* Jika jalankan gagal, dihentikan, atau timeout, subperintah tidak memposting apa pun.

208* Jika tinjauan selesai tetapi komentar tidak diposting, Claude Code mencetak alasan ke stderr, dan temuan tetap di stdout sehingga Anda dapat mempostingnya dengan tangan.208* Jika tinjauan selesai tetapi komentar tidak diposting, Claude Code mencetak alasan ke stderr, dan temuan tetap di stdout sehingga Anda dapat mempostingnya dengan tangan.

209 209 

210Untuk tinjauan otomatis pada pull request GitHub, [Code Review](/docs/id/code-review) terintegrasi dengan repositori Anda secara langsung dan memposting temuan sebagai komentar PR inline tanpa langkah CLI.210Untuk tinjauan otomatis pada pull request GitHub, [Code Review](/docs/id/code-review) terintegrasi dengan repositori Anda secara langsung dan memposting temuan sebagai komentar PR inline tanpa langkah CLI.

vs-code.md +21 −3

Details

221* **Session titles**: sesi baru menerima judul yang dihasilkan AI berdasarkan pesan pertama Anda.221* **Session titles**: sesi baru menerima judul yang dihasilkan AI berdasarkan pesan pertama Anda.

222* **Rename and archive**: arahkan kursor ke sesi untuk mengungkapkan tindakan ini. Rename untuk memberikannya judul deskriptif, atau archive untuk memindahkannya ke grup **Archived sessions** di bagian bawah daftar.222* **Rename and archive**: arahkan kursor ke sesi untuk mengungkapkan tindakan ini. Rename untuk memberikannya judul deskriptif, atau archive untuk memindahkannya ke grup **Archived sessions** di bagian bawah daftar.

223 223 

224Jika percakapan terbuka di proses Claude Code lain, seperti `claude` di terminal atau jendela VS Code lain, pemberitahuan muncul menggantikan kotak prompt: `This conversation is still open somewhere else. Using it in two places at once can mix up its messages.` Untuk melanjutkan di sini, tutup percakapan di tempat lain tersebut lalu klik **Open here anyway**. Jika Anda mengklik tanpa menutupnya, percakapan terbuka di kedua tempat. Dengan [`claudeProcessWrapper`](#extension-settings) ditetapkan, ekstensi melewati pemeriksaan ini dan langsung membuka percakapan.

225 

224Secara default, sesi tanpa aktivitas selama 14 hari pindah ke **Archived sessions** secara otomatis, kecuali jika terbuka, belum dibaca, atau dalam [grup](#organize-sessions-into-groups). Pengarsipan otomatis memerlukan Claude Code v2.1.265 atau lebih baru. Untuk mengubah periode atau mematikannya, buka [Archive Inactive Sessions setting](vscode://settings/claudeCode.archiveInactiveSessions) dan pilih jumlah hari atau **Never**.226Secara default, sesi tanpa aktivitas selama 14 hari pindah ke **Archived sessions** secara otomatis, kecuali jika terbuka, belum dibaca, atau dalam [grup](#organize-sessions-into-groups). Pengarsipan otomatis memerlukan Claude Code v2.1.265 atau lebih baru. Untuk mengubah periode atau mematikannya, buka [Archive Inactive Sessions setting](vscode://settings/claudeCode.archiveInactiveSessions) dan pilih jumlah hari atau **Never**.

225 227 

226Untuk memulihkan sesi yang diarsipkan, perluas **Archived sessions** dan klik **Unarchive session**. Untuk memulihkan setiap sesi yang diarsipkan sekaligus, arahkan kursor ke header **Archived sessions** dalam daftar sesi di Activity Bar dan klik ikon unarchive-nya, yang memerlukan Claude Code v2.1.277 atau lebih baru. Sebelum v2.1.257, tindakannya adalah **Delete session**, yang menyembunyikan sesi tanpa cara untuk memulihkannya. Sesi yang Anda hapus kemudian muncul di bawah **Archived sessions** setelah Anda upgrade.228Untuk memulihkan sesi yang diarsipkan, perluas **Archived sessions** dan klik **Unarchive session**. Untuk memulihkan setiap sesi yang diarsipkan sekaligus, arahkan kursor ke header **Archived sessions** dalam daftar sesi di Activity Bar dan klik ikon unarchive-nya, yang memerlukan Claude Code v2.1.277 atau lebih baru. Sebelum v2.1.257, tindakannya adalah **Delete session**, yang menyembunyikan sesi tanpa cara untuk memulihkannya. Sesi yang Anda hapus kemudian muncul di bawah **Archived sessions** setelah Anda upgrade.


299 Gunakan sidebar untuk sesi Claude utama Anda dan buka tab tambahan untuk tugas sampingan. Claude mengingat lokasi pilihan Anda. Ikon daftar sesi Activity Bar terpisah dari panel Claude: daftar sesi selalu terlihat di Activity Bar, sementara ikon panel Claude hanya muncul di sana ketika panel ditambatkan ke sidebar kiri.301 Gunakan sidebar untuk sesi Claude utama Anda dan buka tab tambahan untuk tugas sampingan. Claude mengingat lokasi pilihan Anda. Ikon daftar sesi Activity Bar terpisah dari panel Claude: daftar sesi selalu terlihat di Activity Bar, sementara ikon panel Claude hanya muncul di sana ketika panel ditambatkan ke sidebar kiri.

300</Tip>302</Tip>

301 303 

304<h3 id="continue-conversations-after-a-reload">

305 Lanjutkan percakapan setelah reload

306</h3>

307 

302Setelah Anda menjalankan **Developer: Reload Window** atau memulai ulang VS Code, apakah percakapan kembali dengan percakapannya tergantung di mana percakapan itu dibuka:308Setelah Anda menjalankan **Developer: Reload Window** atau memulai ulang VS Code, apakah percakapan kembali dengan percakapannya tergantung di mana percakapan itu dibuka:

303 309 

304* **Editor tab**: percakapan kembali dengan tabnya.310* **Editor tab**: percakapan kembali dengan tabnya.

305* **Sidebar**: percakapan kembali jika Anda mengirim pesan atau Claude merespons di dalamnya dalam 10 menit terakhir. Jika tidak kembali, lanjutkan percakapan dari [Session history](#resume-past-conversations).311* **Sidebar**: percakapan kembali jika Anda mengirim pesan atau Claude merespons di dalamnya dalam 10 menit terakhir. Jika tidak kembali, lanjutkan percakapan dari [Session history](#resume-past-conversations).

306 312 

313Jika proses Claude Code lain masih membuka percakapan tersebut, Anda akan ditanya sebelum percakapan dibuka di sini, dengan pemberitahuan **Open here anyway** yang sama seperti saat Anda [melanjutkannya dari riwayat sesi](#resume-past-conversations).

314 

307Jika reload mengganggu Claude di tengah-tengah langkah, Claude melanjutkan langkah tersebut ketika percakapan kembali, dan pemberitahuan di chat menandai kelanjutannya. Memerlukan Claude Code v2.1.274 atau lebih baru. Jika langkah tersebut terganggu lebih dari satu jam yang lalu atau sesi terbuka di tempat lain, percakapan kembali dalam keadaan idle.315Jika reload mengganggu Claude di tengah-tengah langkah, Claude melanjutkan langkah tersebut ketika percakapan kembali, dan pemberitahuan di chat menandai kelanjutannya. Memerlukan Claude Code v2.1.274 atau lebih baru. Jika langkah tersebut terganggu lebih dari satu jam yang lalu atau sesi terbuka di tempat lain, percakapan kembali dalam keadaan idle.

308 316 

309Untuk mematikan kelanjutan, buka [pengaturan Continue After Reload](vscode://settings/claudeCode.continueAfterReload) dan hapus centangnya.317Untuk mematikan kelanjutan, buka [pengaturan Continue After Reload](vscode://settings/claudeCode.continueAfterReload) dan hapus centangnya. Mengatur [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/id/env-vars#variables) atau variabel `CLAUDE_CODE_RESUME_` lainnya di environment VS Code atau di [pengaturan `environmentVariables`](#extension-settings) tidak berpengaruh di panel, karena ekstensi menghapus variabel-variabel tersebut sebelum memulai sesi panel.

310 318 

311<h3 id="run-multiple-conversations">319<h3 id="run-multiple-conversations">

312 Jalankan beberapa percakapan320 Jalankan beberapa percakapan


572| `enableNewConversationShortcut` | `false` | Aktifkan Cmd/Ctrl+N untuk memulai percakapan baru |580| `enableNewConversationShortcut` | `false` | Aktifkan Cmd/Ctrl+N untuk memulai percakapan baru |

573| `enableReopenClosedSessionShortcut` | `true` | Gunakan Cmd/Ctrl+Shift+T untuk membuka kembali tab sesi Claude yang paling baru ditutup. Ketika tab terakhir yang ditutup bukan sesi Claude, pintasan menjalankan perintah reopen-closed-editor normal VS Code. |581| `enableReopenClosedSessionShortcut` | `true` | Gunakan Cmd/Ctrl+Shift+T untuk membuka kembali tab sesi Claude yang paling baru ditutup. Ketika tab terakhir yang ditutup bukan sesi Claude, pintasan menjalankan perintah reopen-closed-editor normal VS Code. |

574| `archiveInactiveSessions` | `14` | [Arsipkan sesi secara otomatis](#resume-past-conversations) setelah jumlah hari tanpa aktivitas ini: `1`, `2`, `7`, atau `14`. Atur `0` untuk mematikannya. Memerlukan Claude Code v2.1.265 atau lebih baru |582| `archiveInactiveSessions` | `14` | [Arsipkan sesi secara otomatis](#resume-past-conversations) setelah jumlah hari tanpa aktivitas ini: `1`, `2`, `7`, atau `14`. Atur `0` untuk mematikannya. Memerlukan Claude Code v2.1.265 atau lebih baru |

575| `continueAfterReload` | `true` | Setelah reload jendela, Claude [melanjutkan langkah yang terputus](#choose-where-claude-lives) dalam sesi yang dipulihkan. Memerlukan Claude Code v2.1.274 atau lebih baru |583| `continueAfterReload` | `true` | Setelah reload jendela, Claude [melanjutkan langkah yang terputus](#continue-conversations-after-a-reload) dalam sesi yang dipulihkan. Memerlukan Claude Code v2.1.274 atau lebih baru |

576| `hideOnboarding` | `false` | Sembunyikan daftar periksa onboarding (ikon topi kelulusan) |584| `hideOnboarding` | `false` | Sembunyikan daftar periksa onboarding (ikon topi kelulusan) |

577| `focusView` | `false` | Sembunyikan panggilan alat, hasil alat, dan pemikiran di balik baris yang dapat diperluas, meninggalkan prompt Anda dan respons Claude. Daftar tugas terbaru Claude tetap terlihat; ini memerlukan Claude Code v2.1.225 atau lebih baru. Anda juga dapat mengalihkan Focus view dari menu perintah. Memerlukan Claude Code v2.1.221 atau lebih baru |585| `focusView` | `false` | Sembunyikan panggilan alat, hasil alat, dan pemikiran di balik baris yang dapat diperluas, meninggalkan prompt Anda dan respons Claude. Daftar tugas terbaru Claude tetap terlihat; ini memerlukan Claude Code v2.1.225 atau lebih baru. Anda juga dapat mengalihkan Focus view dari menu perintah. Memerlukan Claude Code v2.1.221 atau lebih baru |

578| `respectGitIgnore` | `true` | Kecualikan pola .gitignore dari pencarian file dan dari [konteks seleksi](#reference-files-and-folders) |586| `respectGitIgnore` | `true` | Kecualikan pola .gitignore dari pencarian file dan dari [konteks seleksi](#reference-files-and-folders) |


666 674 

667Referensikan output terminal dalam prompt Anda menggunakan `@terminal:name` di mana `name` adalah judul terminal. Ini memungkinkan Claude melihat output perintah, pesan kesalahan, atau log tanpa menyalin dan menempel.675Referensikan output terminal dalam prompt Anda menggunakan `@terminal:name` di mana `name` adalah judul terminal. Ini memungkinkan Claude melihat output perintah, pesan kesalahan, atau log tanpa menyalin dan menempel.

668 676 

677<h3 id="move-a-running-command-or-subagent-to-the-background">

678 Pindahkan perintah atau subagent yang sedang berjalan ke latar belakang

679</h3>

680 

681Ketika Claude sedang menunggu perintah atau [subagent](/docs/id/sub-agents) yang memakan waktu lebih lama dari yang Anda inginkan, klik **Run in background** di bawah panggilan tool-nya dalam percakapan. Tindakan ini muncul setelah perintah berjalan sekitar dua detik, atau segera setelah subagent dimulai. Claude berhenti menunggu dan melanjutkan giliran, sementara perintah atau subagent tetap berjalan sebagai [tugas latar belakang](/docs/id/tools-reference#background-commands) yang memberi tahu Claude ketika selesai. Memerlukan Claude Code v2.1.287 atau lebih baru.

682 

683Untuk memeriksa tugas atau menghentikannya sementara itu, ketik `/tasks` di kotak prompt untuk membuka [peta agent](#use-the-prompt-box). Subagent tetap berada di tempatnya dalam pohon agent di sana, dan perintah dicantumkan di bawah agent dengan [output terbarunya di kartunya](#monitor-background-processes). Perintah yang Anda pindahkan ke latar belakang dengan cara ini tunduk pada [batas waktu untuk perintah latar belakang](/docs/id/tools-reference#time-limit-for-background-commands).

684 

669<h3 id="monitor-background-processes">685<h3 id="monitor-background-processes">

670 Pantau proses latar belakang686 Pantau proses latar belakang

671</h3>687</h3>

672 688 

673Ketik `/tasks` di kotak prompt untuk membuka [peta agen](#use-the-prompt-box), yang mencantumkan tugas latar belakang sesi, seperti server dev yang Claude biarkan berjalan sebagai perintah shell latar belakang. Klik tugas untuk membuka kartunya dan hentikan di sana. Memerlukan Claude Code v2.1.277 atau lebih baru.689Ketik `/tasks` di kotak prompt untuk membuka [peta agent](#use-the-prompt-box), yang mencantumkan tugas latar belakang sesi, seperti server dev yang Claude biarkan berjalan sebagai perintah shell latar belakang. Klik tugas untuk membuka kartunya, tempat Anda dapat menghentikannya. Memerlukan Claude Code v2.1.277 atau lebih baru.

690 

691Untuk perintah shell latar belakang, atau [monitor](/docs/id/tools-reference#monitor-tool) yang menjalankan perintah, kartu juga menampilkan output terbaru perintah dan memperbaruinya selama perintah berjalan.

674 692 

675<h3 id="connect-to-external-tools-with-mcp">693<h3 id="connect-to-external-tools-with-mcp">

676 Hubungkan ke alat eksternal dengan MCP694 Hubungkan ke alat eksternal dengan MCP

Details

75 75 

76 Dengan koneksi ini, sesi dapat mengkloning repositori publik apa pun, tetapi dapat bekerja di repositori pribadi hanya ketika Claude GitHub App diinstal di dalamnya. [Instal Claude GitHub App](https://github.com/apps/claude/installations/new) di setiap akun GitHub atau organisasi yang repositori pribadinya ingin Anda gunakan. Di organisasi GitHub, pemilik organisasi mungkin perlu menyetujui instalasi. Menginstal Aplikasi juga mengaktifkan [Auto-fix](/docs/id/claude-code-on-the-web#auto-fix-pull-requests), yang memungkinkan Claude merespons kegagalan CI dan komentar review pada pull request di repositori tersebut.76 Dengan koneksi ini, sesi dapat mengkloning repositori publik apa pun, tetapi dapat bekerja di repositori pribadi hanya ketika Claude GitHub App diinstal di dalamnya. [Instal Claude GitHub App](https://github.com/apps/claude/installations/new) di setiap akun GitHub atau organisasi yang repositori pribadinya ingin Anda gunakan. Di organisasi GitHub, pemilik organisasi mungkin perlu menyetujui instalasi. Menginstal Aplikasi juga mengaktifkan [Auto-fix](/docs/id/claude-code-on-the-web#auto-fix-pull-requests), yang memungkinkan Claude merespons kegagalan CI dan komentar review pada pull request di repositori tersebut.

77 77 

78 Saat Anda menghubungkan, Claude juga menautkan akun GitHub yang Anda miliki ke organisasi Claude Anda, jika akun tersebut telah menginstal Claude GitHub App. Pada paket Team dan Enterprise, admin melihat akun-akun tersebut di [daftar akun GitHub yang terhubung](/docs/id/admin-setup#connected-github-accounts).

79 

78 Jika onboarding meminta Anda untuk menginstal Claude GitHub App pada titik ini dan Anda lebih suka melakukannya nanti, klik **Skip**.80 Jika onboarding meminta Anda untuk menginstal Claude GitHub App pada titik ini dan Anda lebih suka melakukannya nanti, klik **Skip**.

79 </Step>81 </Step>

80 82 

worktrees.md +2 −0

Details

131 131 

132Worktrees subagent menggunakan [cabang dasar](#choose-the-base-branch) yang sama dengan `--worktree`, jadi mereka membuat cabang dari cabang default repositori Anda kecuali `worktree.baseRef` diatur ke `"head"`.132Worktrees subagent menggunakan [cabang dasar](#choose-the-base-branch) yang sama dengan `--worktree`, jadi mereka membuat cabang dari cabang default repositori Anda kecuali `worktree.baseRef` diatur ke `"head"`.

133 133 

134Subagent dalam worktree-nya sendiri mengambil file instruksi yang [dimuat saat mulai](/docs/id/sub-agents#what-loads-at-startup) dari percakapan utama Anda, bukan dari worktree-nya. Saat worktree tersebut berada di lokasi default di bawah `.claude/worktrees/`, subagent juga tidak memuat file `CLAUDE.md` atau direktori `.claude/rules/` di root worktree saat membaca file di sana, meskipun keduanya berbeda pada branch worktree tersebut.

135 

134<h3 id="clean-up-subagent-and-background-session-worktrees">136<h3 id="clean-up-subagent-and-background-session-worktrees">

135 Bersihkan subagent dan worktrees sesi latar belakang137 Bersihkan subagent dan worktrees sesi latar belakang

136</h3>138</h3>