SpyBara
Go Premium

Documentation 2026-10-24 22:59 UTC to 2026-10-25 23:58 UTC

58 files changed +755 −260. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

324 * Panggilan adalah single-shot, jadi tidak ada hasil sebelumnya.324 * Panggilan adalah single-shot, jadi tidak ada hasil sebelumnya.

325 * Kerusakan terjadi pada giliran pertama.325 * Kerusakan terjadi pada giliran pertama.

326 * Giliran sebelum kerusakan adalah `/clear` itu sendiri, jadi hasilnya hanya mencakup reset.326 * Giliran sebelum kerusakan adalah `/clear` itu sendiri, jadi hasilnya hanya mencakup reset.

3272. Jumlahkan `usage` pada pesan asisten sebagai gantinya, menghitung setiap respons API sekali, seperti yang dilakukan contoh [Track per-step usage](#track-per-step-usage). Dalam mode single-shot, jumlahkan semuanya; dalam mode input streaming, jumlahkan yang tiba setelah hasil terakhir. Ini memberi Anda token input dan cache loop utama. Penggunaan subagent tidak dapat dipulihkan dengan cara ini, begitu juga token output atau biaya USD, karena [per-step `output_tokens` adalah placeholder](#read-output-tokens-from-the-result-message).3272. Jumlahkan `usage` pada pesan asisten sebagai gantinya, menghitung setiap respons API sekali, seperti yang dilakukan contoh [Lacak penggunaan per-langkah](#track-per-step-usage). Dalam mode single-shot, jumlahkan semuanya; dalam mode input streaming, jumlahkan yang tiba setelah hasil terakhir. Ini memberi Anda token input dan cache loop utama. Penggunaan subagent tidak dapat dipulihkan dengan cara ini, begitu juga token output atau biaya USD, karena [`output_tokens` per-langkah adalah placeholder](#read-output-tokens-from-the-result-message).

328 328 

329### Lacak token cache329### Lacak token cache

330 330 

Details

771 771 

772Ketika callback melampaui timeout-nya, Claude Code membatalkannya dan membuang output-nya, dan sesi berlanjut daripada hang. Apa yang terjadi selanjutnya tergantung pada event:772Ketika callback melampaui timeout-nya, Claude Code membatalkannya dan membuang output-nya, dan sesi berlanjut daripada hang. Apa yang terjadi selanjutnya tergantung pada event:

773 773 

774* `PreToolUse`: Claude Code memblokir panggilan tool. Sebagai gantinya, Claude menerima hasil tool yang menyatakan hook tidak merespons sebelum timeout-nya, dan giliran berlanjut. Sebelum v2.1.210, Claude Code melaporkan timeout ke Claude sebagai user rejection, yang membuat unattended sessions berhenti dan menunggu input.774* `PreToolUse`: Claude Code memblokir panggilan tool. Jika setiap hook lain tidak mengembalikan apa pun atau hanya keputusan `allow`, hasil tool memberi tahu Claude bahwa hook tidak merespons sebelum timeout-nya, dan giliran berlanjut. Jika hook lain Anda sudah menolak panggilan tersebut, penolakannya tetap sampai ke Claude: hasil tool menyertakan alasan dari hook tersebut, dan teks timeout dapat mengikutinya.

775 

776 Sebelum v2.1.210, Claude Code melaporkan timeout ke Claude sebagai user rejection, yang membuat unattended sessions berhenti dan menunggu input.

775* `PostToolUse` dan `PostToolUseFailure`: Claude Code menyimpan hasil tool dan giliran berlanjut.777* `PostToolUse` dan `PostToolUseFailure`: Claude Code menyimpan hasil tool dan giliran berlanjut.

776* `UserPromptSubmit` dan [`UserPromptExpansion`](https://code.claude.com/docs/id/hooks#userpromptexpansion): Claude Code memblokir prompt dengan pesan yang menyebutkan hook dan timeout, dan sesi berlanjut. Sebelum v2.1.208, Claude Code mengakhiri query dengan `error_during_execution` ketika callback pada events ini timed out.778* `UserPromptSubmit` dan [`UserPromptExpansion`](https://code.claude.com/docs/id/hooks#userpromptexpansion): Claude Code memblokir prompt dengan pesan yang menyebutkan hook dan timeout, dan sesi berlanjut. Sebelum v2.1.208, Claude Code mengakhiri query dengan `error_during_execution` ketika callback pada events ini timed out.

777* `Stop` dan `SubagentStop`: callback yang timed-out dihitung sebagai tidak mengembalikan keputusan. Agent atau subagent berhenti seolah-olah callback itu telah mengizinkannya, dan keputusan dari hooks lain Anda pada event masih berlaku. Sebelum Claude Code v2.1.273, callback `Stop` atau `SubagentStop` yang timed-out dihitung sebagai failed hook run, dan Claude Code membuang keputusan hooks lain Anda pada event.779* `Stop` dan `SubagentStop`: callback yang timed-out dihitung sebagai tidak mengembalikan keputusan. Agent atau subagent berhenti seolah-olah callback itu telah mengizinkannya, dan keputusan dari hooks lain Anda pada event masih berlaku. Sebelum Claude Code v2.1.273, callback `Stop` atau `SubagentStop` yang timed-out dihitung sebagai failed hook run, dan Claude Code membuang keputusan hooks lain Anda pada event.

Details

128| `default` | Perilaku izin standar | Tidak ada persetujuan otomatis berbasis mode; panggilan yang memerlukan persetujuan dan tidak cocok dengan aturan izin memicu callback `canUseTool` Anda |128| `default` | Perilaku izin standar | Tidak ada persetujuan otomatis berbasis mode; panggilan yang memerlukan persetujuan dan tidak cocok dengan aturan izin memicu callback `canUseTool` Anda |

129| `dontAsk` | Tolak alih-alih meminta | Setiap panggilan yang sebaliknya akan meminta ditolak tanpa memanggil `canUseTool`, meskipun [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [sebagian panggilan tersebut](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods). Panggilan yang disetujui oleh `allowed_tools` atau aturan allow `settings.json` berjalan, begitu juga panggilan yang tidak memerlukan persetujuan dalam mode `default`. Beberapa panggilan, seperti [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths), ditolak bahkan ketika `allowed_tools` atau aturan allow cocok dengannya. Untuk daftarnya, lihat [Mode jangan tanya](#don’t-ask-mode-dontask) |129| `dontAsk` | Tolak alih-alih meminta | Setiap panggilan yang sebaliknya akan meminta ditolak tanpa memanggil `canUseTool`, meskipun [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui [sebagian panggilan tersebut](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods). Panggilan yang disetujui oleh `allowed_tools` atau aturan allow `settings.json` berjalan, begitu juga panggilan yang tidak memerlukan persetujuan dalam mode `default`. Beberapa panggilan, seperti [pembacaan dari jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths), ditolak bahkan ketika `allowed_tools` atau aturan allow cocok dengannya. Untuk daftarnya, lihat [Mode jangan tanya](#don’t-ask-mode-dontask) |

130| `acceptEdits` | Terima otomatis pengeditan file | Pengeditan file dan [operasi sistem file](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, dll.) secara otomatis disetujui |130| `acceptEdits` | Terima otomatis pengeditan file | Pengeditan file dan [operasi sistem file](#accept-edits-mode-acceptedits) (`mkdir`, `rm`, `mv`, dll.) secara otomatis disetujui |

131| `bypassPermissions` | Lewati pemeriksaan izin | Tools berjalan tanpa prompt izin, kecuali untuk [tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves). Gunakan dengan hati-hati |131| `bypassPermissions` | Lewati pemeriksaan izin | Tools berjalan tanpa prompt izin, kecuali untuk [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves). Gunakan dengan hati-hati |

132| `plan` | Mode perencanaan | Claude menjelajahi dan merencanakan tanpa mengedit file sumber Anda; pengeditan file tidak pernah auto-approved dan meminta melalui callback `canUseTool` Anda |132| `plan` | Mode perencanaan | Claude menjelajahi dan merencanakan tanpa mengedit file sumber Anda; pengeditan file tidak pernah auto-approved dan meminta melalui callback `canUseTool` Anda |

133| `auto` | Persetujuan yang diklasifikasikan model | Pengklasifikasi model meninjau tindakan seperti perintah shell dan permintaan jaringan, memungkinkan atau memblokir masing-masing yang ditinjau. Lihat [Mode Auto](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk ketersediaan dan urutan keputusan |133| `auto` | Persetujuan yang diklasifikasikan model | Pengklasifikasi model meninjau tindakan seperti perintah shell dan permintaan jaringan, memungkinkan atau memblokir masing-masing yang ditinjau. Lihat [Mode Auto](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk ketersediaan dan urutan keputusan |

134 134 


138>138>

139> Subagent mewarisi `plan`, `acceptEdits`, `auto`, atau `bypassPermissions` dari sesi utama, dan di bawah sesi utama dalam mode `default` atau `dontAsk`, subagent berjalan dalam mode yang Anda atur. Bahkan kemudian, Claude Code tidak pernah menerapkan nilai `"bypassPermissions"`, dan menerapkan nilai `"auto"` hanya ketika [auto mode tersedia](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk subagent tersebut. Pengecualian `bypassPermissions` memerlukan Claude Code v2.1.267 atau lebih baru.139> Subagent mewarisi `plan`, `acceptEdits`, `auto`, atau `bypassPermissions` dari sesi utama, dan di bawah sesi utama dalam mode `default` atau `dontAsk`, subagent berjalan dalam mode yang Anda atur. Bahkan kemudian, Claude Code tidak pernah menerapkan nilai `"bypassPermissions"`, dan menerapkan nilai `"auto"` hanya ketika [auto mode tersedia](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk subagent tersebut. Pengecualian `bypassPermissions` memerlukan Claude Code v2.1.267 atau lebih baru.

140>140>

141> Subagent mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberi mereka akses sistem penuh dan otonom. [Tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku.141> Subagent mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberi mereka akses sistem penuh dan otonom. [Tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku.

142 142 

143### Atur mode izin143### Atur mode izin

144 144 

Details

885| `disallowed_tools` | `list[str]` | `[]` | Tools untuk ditolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok di setiap mode izin, termasuk `bypassPermissions`, untuk perintah [seperti yang ditulis](https://code.claude.com/docs/id/permissions.md#bash-rule-limits). Lihat [Permissions](https://code.claude.com/docs/id/agent-sdk/permissions.md#allow-and-deny-rules) |885| `disallowed_tools` | `list[str]` | `[]` | Tools untuk ditolak. Nama bare seperti `"Bash"` menghapus tool dari konteks Claude. Aturan scoped seperti `"Bash(rm *)"` membiarkan tool tersedia dan menolak panggilan yang cocok di setiap mode izin, termasuk `bypassPermissions`, untuk perintah [seperti yang ditulis](https://code.claude.com/docs/id/permissions.md#bash-rule-limits). Lihat [Permissions](https://code.claude.com/docs/id/agent-sdk/permissions.md#allow-and-deny-rules) |

886| `enable_file_checkpointing` | `bool` | `False` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](https://code.claude.com/docs/id/agent-sdk/file-checkpointing.md) |886| `enable_file_checkpointing` | `bool` | `False` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](https://code.claude.com/docs/id/agent-sdk/file-checkpointing.md) |

887| `model` | `str \| None` | `None` | Alias model Claude atau nama model lengkap. Lihat [nilai yang diterima dan ID khusus penyedia](https://code.claude.com/docs/id/model-config.md#available-models) |887| `model` | `str \| None` | `None` | Alias model Claude atau nama model lengkap. Lihat [nilai yang diterima dan ID khusus penyedia](https://code.claude.com/docs/id/model-config.md#available-models) |

888| `fallback_model` | `str \| None` | `None` | Model fallback yang akan digunakan jika model utama gagal. Menerima daftar yang dipisahkan koma. Untuk panduan, lihat [Choose a model](https://code.claude.com/docs/id/agent-sdk/configuration.md#choose-a-model) |888| `fallback_model` | `str \| None` | `None` | Model fallback yang akan digunakan jika model utama gagal. Menerima daftar yang dipisahkan koma. Untuk panduan, lihat [Pilih model](https://code.claude.com/docs/id/agent-sdk/configuration.md#choose-a-model) |

889| `betas` | `list[SdkBeta]` | `[]` | Fitur beta untuk diaktifkan. Lihat [`SdkBeta`](#sdkbeta) untuk opsi yang tersedia |889| `betas` | `list[SdkBeta]` | `[]` | Fitur beta untuk diaktifkan. Lihat [`SdkBeta`](#sdkbeta) untuk opsi yang tersedia |

890| `output_format` | `dict[str, Any] \| None` | `None` | Format output untuk respons terstruktur (misalnya, `{"type": "json_schema", "schema": {...}}`). Lihat [Structured outputs](https://code.claude.com/docs/id/agent-sdk/structured-outputs.md) untuk detail |890| `output_format` | `dict[str, Any] \| None` | `None` | Format output untuk respons terstruktur (misalnya, `{"type": "json_schema", "schema": {...}}`). Lihat [Structured outputs](https://code.claude.com/docs/id/agent-sdk/structured-outputs.md) untuk detail |

891| `permission_prompt_tool_name` | `str \| None` | `None` | Nama tool MCP untuk prompt izin |891| `permission_prompt_tool_name` | `str \| None` | `None` | Nama tool MCP untuk prompt izin |


898| `max_buffer_size` | `int \| None` | `None` | Byte maksimal saat membuffer stdout CLI |898| `max_buffer_size` | `int \| None` | `None` | Byte maksimal saat membuffer stdout CLI |

899| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - SDK mengabaikan nilai ini. Gunakan callback `stderr` untuk output stderr CLI |899| `debug_stderr` | `Any` | `sys.stderr` | *Deprecated* - SDK mengabaikan nilai ini. Gunakan callback `stderr` untuk output stderr CLI |

900| `stderr` | `Callable[[str], None] \| None` | `None` | Fungsi callback untuk output stderr dari CLI |900| `stderr` | `Callable[[str], None] \| None` | `None` | Fungsi callback untuk output stderr dari CLI |

901| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Fungsi callback izin tool, dipanggil hanya ketika [alur izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) jatuh ke prompt. Tidak dipanggil untuk panggilan yang auto-approved oleh entri `allowed_tools`, aturan allow, atau `permission_mode`. Aturan allow tidak pre-approve [tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves). Lihat [`CanUseTool`](#canusetool) untuk detail |901| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Fungsi callback izin tool, dipanggil hanya ketika [alur izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) jatuh ke prompt. Tidak dipanggil untuk panggilan yang disetujui otomatis oleh entri `allowed_tools`, aturan allow, atau `permission_mode`. Aturan allow tidak menyetujui terlebih dahulu [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves). Lihat [`CanUseTool`](#canusetool) untuk detail |

902| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Konfigurasi hook untuk mengintersepsi event |902| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Konfigurasi hook untuk mengintersepsi event |

903| `user` | `str \| None` | `None` | Pada platform POSIX, akun pengguna OS tempat subprocess Claude Code berjalan. Claude Code menyimpan lingkungan proses induk, termasuk `HOME`, dan berjalan di `cwd` |903| `user` | `str \| None` | `None` | Pada platform POSIX, akun pengguna OS tempat subprocess Claude Code berjalan. Claude Code menyimpan lingkungan proses induk, termasuk `HOME`, dan berjalan di `cwd` |

904| `include_partial_messages` | `bool` | `False` | Sertakan event streaming pesan parsial. Ketika diaktifkan, pesan [`StreamEvent`](#streamevent) dihasilkan |904| `include_partial_messages` | `bool` | `False` | Sertakan event streaming pesan parsial. Ketika diaktifkan, pesan [`StreamEvent`](#streamevent) dihasilkan |


1216 1216 

1217Callback adalah pengganti SDK untuk prompt izin interaktif: dipanggil hanya ketika [alur evaluasi izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) diselesaikan ke prompt. Panggilan tool yang sudah disetujui oleh entri `allowed_tools`, aturan allow pengaturan, atau mode izin, seperti `acceptEdits` atau `bypassPermissions`, tidak pernah memanggilnya. Untuk gating setiap panggilan tool, gunakan hook [`PreToolUse`](https://code.claude.com/docs/id/agent-sdk/hooks) sebagai gantinya.1217Callback adalah pengganti SDK untuk prompt izin interaktif: dipanggil hanya ketika [alur evaluasi izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) diselesaikan ke prompt. Panggilan tool yang sudah disetujui oleh entri `allowed_tools`, aturan allow pengaturan, atau mode izin, seperti `acceptEdits` atau `bypassPermissions`, tidak pernah memanggilnya. Untuk gating setiap panggilan tool, gunakan hook [`PreToolUse`](https://code.claude.com/docs/id/agent-sdk/hooks) sebagai gantinya.

1218 1218 

1219Aturan allow tidak pre-approve [tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves); lihat [How permissions are evaluated](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) untuk mana dari mereka yang mencapai callback dan apa yang terjadi dalam mode `dontAsk` dan `auto`.1219Aturan allow tidak menyetujui terlebih dahulu [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves); lihat [Cara izin dievaluasi](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated) untuk mengetahui tindakan mana yang mencapai callback dan apa yang terjadi dalam mode `dontAsk` dan `auto`.

1220 1220 

1221### `ToolPermissionContext`1221### `ToolPermissionContext`

1222 1222 


2684 2684 

2685**Nama tool:** `AskUserQuestion`2685**Nama tool:** `AskUserQuestion`

2686 2686 

2687Mengajukan pertanyaan klarifikasi kepada pengguna selama eksekusi. Lihat [Handle approvals and user input](https://code.claude.com/docs/id/agent-sdk/user-input.md#handle-clarifying-questions) untuk detail penggunaan.2687Mengajukan pertanyaan klarifikasi kepada pengguna selama eksekusi. Lihat [Menangani persetujuan dan input pengguna](https://code.claude.com/docs/id/agent-sdk/user-input.md#handle-clarifying-questions) untuk detail penggunaan.

2688 2688 

2689**Input:**2689**Input:**

2690 2690 


2742 2742 

2743**Nama tool:** `Bash`2743**Nama tool:** `Bash`

2744 2744 

2745Untuk apa yang menetapkan batas ceiling foreground, lihat [Timeout and output limits](https://code.claude.com/docs/id/tools-reference.md#timeout-and-output-limits). Untuk batas waktu background, lihat [Time limit for background commands](https://code.claude.com/docs/id/tools-reference.md#time-limit-for-background-commands).2745Untuk apa yang menetapkan batas latar depan, lihat [Timeout dan batas output](https://code.claude.com/docs/id/tools-reference.md#timeout-and-output-limits). Untuk batas waktu latar belakang, lihat [Batas waktu untuk perintah latar belakang](https://code.claude.com/docs/id/tools-reference.md#time-limit-for-background-commands).

2746 2746 

2747**Input:**2747**Input:**

2748 2748 


3744>3744>

3745> Perintah yang berjalan dengan `dangerouslyDisableSandbox: True` memiliki akses sistem penuh. Pastikan handler `can_use_tool` Anda memvalidasi permintaan ini dengan hati-hati.3745> Perintah yang berjalan dengan `dangerouslyDisableSandbox: True` memiliki akses sistem penuh. Pastikan handler `can_use_tool` Anda memvalidasi permintaan ini dengan hati-hati.

3746>3746>

3747> Jika `permission_mode` diatur ke `bypassPermissions` dan `allowUnsandboxedCommands` diaktifkan, model dapat secara otonom menjalankan perintah di luar sandbox tanpa prompt persetujuan, kecuali untuk [tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves). Kombinasi ini secara efektif memungkinkan model untuk melarikan diri dari isolasi sandbox secara diam-diam.3747> Jika `permission_mode` diatur ke `bypassPermissions` dan `allowUnsandboxedCommands` diaktifkan, model dapat secara otonom menjalankan perintah di luar sandbox tanpa prompt persetujuan, kecuali untuk [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves). Kombinasi ini secara efektif memungkinkan model untuk melarikan diri dari isolasi sandbox secara diam-diam.

3748 3748 

3749## Lihat juga3749## Lihat juga

3750 3750 

3751* [SDK overview](https://code.claude.com/docs/id/agent-sdk/overview.md) - Konsep SDK umum3751* [Gambaran umum SDK](https://code.claude.com/docs/id/agent-sdk/overview.md) - Konsep SDK umum

3752* [TypeScript SDK reference](https://code.claude.com/docs/id/agent-sdk/typescript.md) - Dokumentasi SDK TypeScript3752* [Referensi SDK TypeScript](https://code.claude.com/docs/id/agent-sdk/typescript.md) - Dokumentasi SDK TypeScript

3753* [Custom tools](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) - Tentukan alat MCP dalam proses untuk Claude panggil3753* [Alat kustom](https://code.claude.com/docs/id/agent-sdk/custom-tools.md) - Tentukan alat MCP dalam proses untuk Claude panggil

3754* [CLI reference](https://code.claude.com/docs/id/cli-reference.md) - Antarmuka baris perintah3754* [Referensi CLI](https://code.claude.com/docs/id/cli-reference.md) - Antarmuka baris perintah

3755* [Common workflows](https://code.claude.com/docs/id/common-workflows.md) - Panduan langkah demi langkah3755* [Alur kerja umum](https://code.claude.com/docs/id/common-workflows.md) - Panduan langkah demi langkah

Details

309| `options.dir` | `string` | `undefined` | Direktori proyek untuk menemukan sesi. Ketika dihilangkan, mencari di semua proyek |309| `options.dir` | `string` | `undefined` | Direktori proyek untuk menemukan sesi. Ketika dihilangkan, mencari di semua proyek |

310| `options.limit` | `number` | `undefined` | Jumlah maksimum pesan yang akan dikembalikan |310| `options.limit` | `number` | `undefined` | Jumlah maksimum pesan yang akan dikembalikan |

311| `options.offset` | `number` | `undefined` | Jumlah pesan yang akan dilewati dari awal |311| `options.offset` | `number` | `undefined` | Jumlah pesan yang akan dilewati dari awal |

312| `options.includeSystemMessages` | `boolean` | `false` | Ketika `true`, juga mengembalikan pesan sistem seperti batas compact bersama pesan pengguna dan asisten |

312 313 

313#### Tipe pengembalian: `SessionMessage`314#### Tipe pengembalian: `SessionMessage`

314 315 

315| Properti | Tipe | Deskripsi |316| Properti | Tipe | Deskripsi |

316| :- | :- | :- |317| :- | :- | :- |

317| `type` | `"user" \| "assistant"` | Peran pesan |318| `type` | `"user" \| "assistant" \| "system"` | Peran pesan. `"system"` hanya muncul ketika `options.includeSystemMessages` adalah `true` |

318| `uuid` | `string` | Pengenal pesan unik |319| `uuid` | `string` | Pengenal pesan unik |

319| `session_id` | `string` | Sesi yang pesan ini milik |320| `session_id` | `string` | Sesi yang pesan ini milik |

320| `message` | `unknown` | Payload pesan mentah dari transkrip |321| `message` | `unknown` | Payload pesan mentah dari transkrip |


632 }): Promise<SDKControlReloadPluginsResponse>;633 }): Promise<SDKControlReloadPluginsResponse>;

633 reloadSkills(): Promise<SDKControlReloadSkillsResponse>;634 reloadSkills(): Promise<SDKControlReloadSkillsResponse>;

634 reloadOutputStyles(): Promise<SDKControlReloadOutputStylesResponse>;635 reloadOutputStyles(): Promise<SDKControlReloadOutputStylesResponse>;

636 seedReadState(path: string, mtime: number): Promise<void>;

635 accountInfo(): Promise<AccountInfo>;637 accountInfo(): Promise<AccountInfo>;

636 reconnectMcpServer(serverName: string): Promise<void>;638 reconnectMcpServer(serverName: string): Promise<void>;

637 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;639 toggleMcpServer(serverName: string, enabled: boolean): Promise<void>;

638 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;640 setMcpServers(servers: Record<string, McpServerConfig>): Promise<McpSetServersResult>;

641 setMcpPermissionModeOverride(

642 serverName: string,

643 mode: 'default' | 'auto' | null

644 ): Promise<{ warning?: string }>;

639 readMcpResource(serverName: string, uri: string): Promise<SDKControlMcpReadResourceResponse>;645 readMcpResource(serverName: string, uri: string): Promise<SDKControlMcpReadResourceResponse>;

640 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;646 streamInput(stream: AsyncIterable<SDKUserMessage>): Promise<void>;

641 stopTask(taskId: string): Promise<void>;647 stopTask(taskId: string): Promise<void>;

648 backgroundTasks(toolUseId?: string): Promise<boolean>;

642 close(): void;649 close(): void;

643}650}

644```651```


665| `reloadPlugins(options?)` | Memuat ulang plugin dari disk, sehingga plugin yang Anda instal atau edit di tengah sesi sampai ke sesi yang sedang berjalan. Diselesaikan dengan [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) yang mencantumkan perintah, subagent, plugin, dan status server MCP sesi. Memerlukan Agent SDK v0.2.85 atau lebih baru. [Opsi `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) memerlukan Agent SDK v0.3.268 atau lebih baru |672| `reloadPlugins(options?)` | Memuat ulang plugin dari disk, sehingga plugin yang Anda instal atau edit di tengah sesi sampai ke sesi yang sedang berjalan. Diselesaikan dengan [`SDKControlReloadPluginsResponse`](#sdkcontrolreloadpluginsresponse) yang mencantumkan perintah, subagent, plugin, dan status server MCP sesi. Memerlukan Agent SDK v0.2.85 atau lebih baru. [Opsi `holdOnCacheImpact`](#sdkcontrolreloadpluginsresponse) memerlukan Agent SDK v0.3.268 atau lebih baru |

666| `reloadSkills()` | Memuat ulang skill dari disk, sehingga skill yang Anda tambahkan atau edit di tengah sesi menjadi tersedia bagi sesi yang sedang berjalan. Diselesaikan dengan [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) yang mencantumkan skill yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.163 atau lebih baru |673| `reloadSkills()` | Memuat ulang skill dari disk, sehingga skill yang Anda tambahkan atau edit di tengah sesi menjadi tersedia bagi sesi yang sedang berjalan. Diselesaikan dengan [`SDKControlReloadSkillsResponse`](#sdkcontrolreloadskillsresponse) yang mencantumkan skill yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.163 atau lebih baru |

667| `reloadOutputStyles()` | Membaca ulang [gaya output](https://code.claude.com/docs/id/output-styles.md) dari disk, sehingga file gaya yang Anda tambahkan atau edit di tengah sesi menjadi tersedia bagi sesi yang sedang berjalan. Diselesaikan dengan [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) yang mencantumkan nama gaya yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.261 atau lebih baru |674| `reloadOutputStyles()` | Membaca ulang [gaya output](https://code.claude.com/docs/id/output-styles.md) dari disk, sehingga file gaya yang Anda tambahkan atau edit di tengah sesi menjadi tersedia bagi sesi yang sedang berjalan. Diselesaikan dengan [`SDKControlReloadOutputStylesResponse`](#sdkcontrolreloadoutputstylesresponse) yang mencantumkan nama gaya yang tersedia setelah pemuatan ulang. Memerlukan Agent SDK v0.3.261 atau lebih baru |

675| `seedReadState(path, mtime)` | Menandai file sebagai sudah dibaca sehingga Edit berikutnya tidak gagal dengan `File has not been read yet`. Lihat [`seedReadState()`](#seedreadstate). Memerlukan TypeScript SDK v0.2.83 atau lebih baru |

668| `accountInfo()` | Mengembalikan informasi akun |676| `accountInfo()` | Mengembalikan informasi akun |

669| `reconnectMcpServer(serverName)` | Menyambungkan ulang server MCP berdasarkan nama. Jika nama tersebut juga cocok dengan entri dalam file pengaturan seperti `.mcp.json` atau `~/.claude.json`, Claude Code menyambungkan ulang server yang Anda konfigurasikan melalui [`mcpServers`](#options) atau `setMcpServers()`, bukan entri file pengaturan. Urutan resolusi tersebut memerlukan Claude Code v2.1.257 atau lebih baru |677| `reconnectMcpServer(serverName)` | Menyambungkan ulang server MCP berdasarkan nama. Jika nama tersebut juga cocok dengan entri dalam file pengaturan seperti `.mcp.json` atau `~/.claude.json`, Claude Code menyambungkan ulang server yang Anda konfigurasikan melalui [`mcpServers`](#options) atau `setMcpServers()`, bukan entri file pengaturan. Urutan resolusi tersebut memerlukan Claude Code v2.1.257 atau lebih baru |

670| `toggleMcpServer(serverName, enabled)` | Mengaktifkan atau menonaktifkan server MCP berdasarkan nama, dengan resolusi nama yang sama seperti `reconnectMcpServer()`. Menonaktifkan server akan memutus koneksinya dan menghapus tool-nya. Lihat [`toggleMcpServer()`](#togglemcpserver) untuk versi Claude Code yang dibutuhkan untuk setiap jenis server |678| `toggleMcpServer(serverName, enabled)` | Mengaktifkan atau menonaktifkan server MCP berdasarkan nama, dengan resolusi nama yang sama seperti `reconnectMcpServer()`. Menonaktifkan server akan memutus koneksinya dan menghapus tool-nya. Lihat [`toggleMcpServer()`](#togglemcpserver) untuk versi Claude Code yang dibutuhkan untuk setiap jenis server |

671| `setMcpServers(servers)` | Mengganti server MCP yang dikelola metode ini: server yang ditambahkan melaluinya dan [server SDK in-process](#createsdkmcpserver). Diselesaikan dengan [`McpSetServersResult`](#mcpsetserversresult) yang menyebutkan server mana yang ditambahkan dan dihapus, serta error apa pun; bagian tersebut menjelaskan server lain mana yang tetap terhubung |679| `setMcpServers(servers)` | Mengganti server MCP yang dikelola metode ini: server yang ditambahkan melaluinya dan [server SDK in-process](#createsdkmcpserver). Diselesaikan dengan [`McpSetServersResult`](#mcpsetserversresult) yang menyebutkan server mana yang ditambahkan dan dihapus, serta error apa pun; bagian tersebut menjelaskan server lain mana yang tetap terhubung |

680| `setMcpPermissionModeOverride(serverName, mode)` | Menimpa mode izin untuk tool satu server MCP dengan mode yang lebih ketat daripada mode sesi, atau menghapus override dengan `null`. Hanya tersedia dalam mode input streaming. Lihat [`setMcpPermissionModeOverride()`](#setmcppermissionmodeoverride). Memerlukan TypeScript SDK v0.3.187 atau lebih baru |

672| `readMcpResource(serverName, uri)` | *Alpha.* Membaca satu resource `ui://` MCP Apps dari server MCP yang terhubung sehingga aplikasi Anda dapat merender widget sebuah tool. Diselesaikan dengan [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru |681| `readMcpResource(serverName, uri)` | *Alpha.* Membaca satu resource `ui://` MCP Apps dari server MCP yang terhubung sehingga aplikasi Anda dapat merender widget sebuah tool. Diselesaikan dengan [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse). Memerlukan TypeScript Agent SDK v0.3.280 atau lebih baru |

673| `streamInput(stream)` | Melakukan streaming pesan input ke query untuk percakapan multi-giliran |682| `streamInput(stream)` | Melakukan streaming pesan input ke query untuk percakapan multi-giliran |

674| `stopTask(taskId)` | Menghentikan tugas latar belakang yang sedang berjalan berdasarkan ID |683| `stopTask(taskId)` | Menghentikan tugas latar belakang yang sedang berjalan berdasarkan ID |

684| `backgroundTasks(toolUseId?)` | Memindahkan perintah Bash dan subagent yang sedang berjalan dan ditunggu oleh giliran ke latar belakang, sama seperti menekan Ctrl+B di terminal interaktif. Lihat [`backgroundTasks()`](#backgroundtasks). Memerlukan TypeScript SDK v0.2.139 atau lebih baru |

675| `close()` | Menutup query dan menghentikan proses yang mendasarinya. Mengakhiri query secara paksa dan membersihkan semua resource |685| `close()` | Menutup query dan menghentikan proses yang mendasarinya. Mengakhiri query secara paksa dan membersihkan semua resource |

676 686 

687#### `setMcpPermissionModeOverride()`

688 

689Menimpa mode izin untuk tool satu server MCP dengan mode yang lebih ketat daripada mode sesi, atau menghapus override dengan `null`. Gunakan ketika sesi berjalan dalam mode yang melewati permintaan izin per tindakan tetapi tool satu server tetap harus ditinjau. Memerlukan TypeScript SDK v0.3.187 atau lebih baru.

690 

691Teruskan salah satu dari tiga nilai sebagai `mode`:

692 

693* `'default'`: Claude Code mengevaluasi panggilan tool server tersebut seperti yang dilakukan [Manual mode](https://code.claude.com/docs/id/permission-modes.md#available-modes).

694* `'auto'`: Claude Code mengarahkan panggilan tool server tersebut melalui pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode). Claude Code menolak nilai ini ketika pengklasifikasi tidak tersedia untuk sesi.

695* `null`: menghapus override.

696 

697Override hanya berlaku selama sesi berada dalam mode yang melewati permintaan izin per tindakan: `bypassPermissions` atau `auto`. Dalam mode sesi lainnya, Claude Code mengabaikan override, sehingga override tidak pernah dapat memperluas apa yang diizinkan sesi.

698 

699Promise resolve dengan `{ warning }` ketika belum ada server dengan nama tersebut yang diketahui. Claude Code tetap menyimpan override dan menerapkannya begitu server dengan nama yang persis sama terhubung, sehingga peringatan tersebut merupakan pemeriksaan salah ketik, bukan kegagalan.

700 

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

702 

703#### `seedReadState()`

704 

705Menandai file sebagai sudah dibaca sehingga Edit berikutnya tidak gagal dengan `File has not been read yet`. Gunakan ketika aplikasi Anda telah membuang hasil `Read` sebelumnya dari konteks percakapan dan Claude akan mengedit file tersebut berikutnya. Memerlukan TypeScript SDK v0.2.83 atau lebih baru.

706 

707Teruskan `mtime` sebagai waktu modifikasi file pada saat pembacaan sebelumnya, dalam milidetik utuh sejak epoch, misalnya `Math.floor(stat.mtimeMs)`. Jika file di disk berubah setelah waktu tersebut, Claude Code melewatkan penandaan.

708 

709Promise resolve baik file ditandai maupun tidak, sehingga promise yang resolve tidak memberi tahu Anda mana yang terjadi.

710 

711#### `backgroundTasks()`

712 

713Memindahkan perintah Bash dan subagent yang sedang berjalan dan ditunggu oleh giliran ke latar belakang, sama seperti menekan Ctrl+B di terminal interaktif. Teruskan `toolUseId` dari sebuah panggilan tool untuk memindahkan ke latar belakang hanya perintah Bash atau subagent yang dimulai oleh panggilan tersebut, atau hilangkan untuk memindahkan setiap tugas latar depan ke latar belakang. Memerlukan TypeScript SDK v0.2.139 atau lebih baru.

714 

715Setiap panggilan tool yang dipindahkan ke latar belakang segera kembali ke Claude dengan hasil berjalan-di-latar-belakang, giliran berlanjut, dan Claude Code memancarkan [`SDKTaskNotificationMessage`](#sdktasknotificationmessage) ketika tugas selesai.

716 

717Dalam sesi yang mengaktifkan tugas latar belakang, promise resolve ke boolean:

718 

719* **`true`**: sebuah tugas dipindahkan ke latar belakang, atau Anda menghilangkan `toolUseId`.

720* **`false`**: `toolUseId` yang Anda teruskan tidak cocok dengan tugas latar depan mana pun.

721 

722Jika tugas latar belakang dinonaktifkan untuk sesi, seperti dengan [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/id/env-vars), promise akan reject dan tidak ada yang dipindahkan ke latar belakang.

723 

677#### `applyFlagSettings()`724#### `applyFlagSettings()`

678 725 

679Mengubah [pengaturan](https://code.claude.com/docs/id/settings.md) pada sesi yang sedang berjalan tanpa memulai ulang query. Gunakan ketika pengaturan yang tidak memiliki setter khusus perlu diubah di tengah sesi, seperti memperketat `permissions` setelah agent membaca input yang tidak tepercaya. `setModel()` dan `setPermissionMode()` adalah setter khusus untuk kedua kunci tersebut; `applyFlagSettings()` adalah bentuk umum yang menerima subset apa pun dari kunci pengaturan, dan meneruskan `model` di sini berperilaku sama seperti `setModel()`.726Mengubah [pengaturan](https://code.claude.com/docs/id/settings.md) pada sesi yang sedang berjalan tanpa memulai ulang query. Gunakan ketika pengaturan yang tidak memiliki setter khusus perlu diubah di tengah sesi, seperti memperketat `permissions` setelah agent membaca input yang tidak tepercaya. `setModel()` dan `setPermissionMode()` adalah setter khusus untuk kedua kunci tersebut; `applyFlagSettings()` adalah bentuk umum yang menerima subset apa pun dari kunci pengaturan, dan meneruskan `model` di sini berperilaku sama seperti `setModel()`.


1472 | SDKPermissionDeniedMessage1519 | SDKPermissionDeniedMessage

1473 | SDKPromptSuggestionMessage1520 | SDKPromptSuggestionMessage

1474 | SDKAPIRetryMessage1521 | SDKAPIRetryMessage

1522 | SDKControlRequestProgressMessage

1523 | SDKModelRefusalFallbackMessage

1524 | SDKModelRefusalNoFallbackMessage

1475 | SDKMirrorErrorMessage1525 | SDKMirrorErrorMessage

1476 | SDKInformationalMessage1526 | SDKInformationalMessage

1477 | SDKConversationResetMessage;1527 | SDKConversationResetMessage;

1478```1528```

1479 1529 

1530Tiga pesan dalam union ini melaporkan progres permintaan kontrol dan penolakan model. Masing-masing memiliki `type: "system"`, jadi bedakan dengan `subtype` yang tercantum pada masing-masing:

1531 

1532* `SDKControlRequestProgressMessage`, `subtype: "control_request_progress"`: melaporkan progres pada permintaan kontrol yang berjalan lama yang dikirim oleh klien Anda. `request_id` mencocokkan pesan dengan permintaan tersebut, dan `status` bernilai `"started"` atau `"api_retry"`. Memerlukan Agent SDK v0.3.203 atau lebih baru.

1533* `SDKModelRefusalFallbackMessage`, `subtype: "model_refusal_fallback"`: dipancarkan ketika model mengakhiri stream dengan penolakan dan giliran tersebut dicoba ulang pada model fallback. Membawa `original_model` dan `fallback_model`. Memerlukan Agent SDK v0.3.170 atau lebih baru.

1534* `SDKModelRefusalNoFallbackMessage`, `subtype: "model_refusal_no_fallback"`: dipancarkan ketika model mengakhiri stream dengan penolakan dan tidak ada retry yang dijalankan, misalnya karena tidak ada model fallback yang dikonfigurasi. Membawa `original_model`. Memerlukan Agent SDK v0.3.193 atau lebih baru.

1535 

1480### `SDKAssistantMessage`1536### `SDKAssistantMessage`

1481 1537 

1482Pesan respons asisten.1538Pesan respons asisten.


1636 stop_reason: string | null;1692 stop_reason: string | null;

1637 ttft_ms?: number;1693 ttft_ms?: number;

1638 ttft_stream_ms?: number;1694 ttft_stream_ms?: number;

1695 time_to_request_ms?: number;

1639 user_message_uuid?: string;1696 user_message_uuid?: string;

1640 user_message_uuids?: string[];1697 user_message_uuids?: string[];

1641 resume_reason?: string;1698 resume_reason?: string;


1701* `api_error_status`: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada atau `null` ketika giliran berakhir tanpa kesalahan API.1758* `api_error_status`: kode status HTTP dari kesalahan API yang mengakhiri percakapan. Tidak ada atau `null` ketika giliran berakhir tanpa kesalahan API.

1702* `ttft_ms`: waktu ke token pertama dalam milidetik, diukur ketika pesan asisten lengkap pertama tiba. Hadir hanya pada lengan kesuksesan.1759* `ttft_ms`: waktu ke token pertama dalam milidetik, diukur ketika pesan asisten lengkap pertama tiba. Hadir hanya pada lengan kesuksesan.

1703* `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.1760* `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.

1761* `time_to_request_ms`: waktu dalam milidetik dari awal giliran hingga Claude Code mengirim permintaan API. Hanya ada pada cabang success. Memerlukan Claude Code v2.1.162 atau lebih baru.

1704* `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.1762* `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.

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

1706* `resume_reason`: alasan giliran ini melanjutkan giliran yang terinterupsi oleh restart. Ada pada kedua cabang. Lihat [`resume_reason`](#resume_reason).1764* `resume_reason`: alasan giliran ini melanjutkan giliran yang terinterupsi oleh restart. Ada pada kedua cabang. Lihat [`resume_reason`](#resume_reason).


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

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

1774 1832 

1833Ketika hook [`UserPromptSubmit`](https://code.claude.com/docs/id/hooks#userpromptsubmit) memblokir pesan yang memulai gilirannya sendiri, atau menghentikannya dengan `continue: false`, Anda tetap mendapatkan hasil untuk pesan tersebut. Hasil tersebut adalah hasil success dengan `is_error: false` dan `num_turns: 0`, `result`-nya adalah [pesan blokir](https://code.claude.com/docs/id/hooks.md#what-a-blocked-prompt-leaves-behind) atau [pesan stop](https://code.claude.com/docs/id/hooks.md#json-output), dan hasil tersebut mengembalikan `uuid` pesan dengan aturan yang sama seperti hasil lainnya. Hasil tersebut tidak memiliki `terminal_reason`, dan tidak ada apa pun di dalamnya selain teks `result` yang menyatakan bahwa hook mengakhiri giliran. Pesan yang diblokir hook saat giliran lain sedang berjalan mungkin tidak mendapatkan hasil: lihat [`user_message_uuids`](#user_message_uuids).

1834 

1775#### `user_message_uuids`1835#### `user_message_uuids`

1776 1836 

1777`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.1837`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 1838 

1779Claude 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.1839Claude 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.

1780 1840 

1781Ketika Claude Code mengambil pesan reguler yang Anda kirim saat giliran berjalan, ia menambahkan `uuid` pesan itu ke daftar hasil.1841Ketika Claude Code mengambil pesan reguler yang Anda kirim saat giliran sedang berjalan, Claude Code menambahkan `uuid` pesan tersebut ke daftar hasil. Ketika hook [`UserPromptSubmit`](https://code.claude.com/docs/id/hooks#userpromptsubmit) memblokir pesan saat pengambilan, Claude Code membuangnya: pesan tersebut tidak pernah mencapai Claude dan tidak disimpan untuk giliran berikutnya. Anda tidak mendapatkan hasil untuknya, dan `uuid`-nya tidak muncul dalam daftar hasil mana pun. Jika hook dapat memblokir pesan, tetapkan timeout saat menunggu hasil yang mencantumkan pesan yang Anda kirim saat giliran sedang berjalan.

1842 

1843Hal itu berlaku ketika output hook hanya berupa blokir. Jika output menetapkan `continue: false`, bahkan di samping `decision: "block"`, atau hook adalah prompt hook yang menjawab [`ok: false`](https://code.claude.com/docs/id/hooks#response-schema) tanpa `continueOnBlock: true`, Claude Code menghentikan pesan alih-alih membuangnya. Pesan tersebut menunggu gilirannya sendiri, Anda mendapatkan hasil untuknya, dan teksnya tetap berada dalam percakapan, sehingga Claude melihatnya pada giliran berikutnya.

1782 1844 

1783Ketika balasan pertama atau hasil membawa `user_message_uuid` tanpa daftar, itu berasal dari versi Claude Code sebelumnya, jadi kembali ke bidang tunggal.1845Ketika balasan pertama atau hasil membawa `user_message_uuid` tanpa daftar, itu berasal dari versi Claude Code sebelumnya, jadi kembali ke bidang tunggal.

1784 1846 

channels.md +1 −1

Details

271 271 

272Pesan tiba di sesi Claude Code Anda. Terminal menampilkannya sebagai baris channel masuk seperti `← fakechat · web: what's in my working directory?`, sementara model menerimanya sebagai acara `<channel source="plugin:fakechat:fakechat">`, menggunakan nama server yang dibatasi plugin. Claude membacanya, melakukan pekerjaan, dan memanggil tool `reply` fakechat. Jika Claude Code meminta izin untuk balasan pertama, setujui itu. Jawabannya muncul di UI obrolan.272Pesan tiba di sesi Claude Code Anda. Terminal menampilkannya sebagai baris channel masuk seperti `← fakechat · web: what's in my working directory?`, sementara model menerimanya sebagai acara `<channel source="plugin:fakechat:fakechat">`, menggunakan nama server yang dibatasi plugin. Claude membacanya, melakukan pekerjaan, dan memanggil tool `reply` fakechat. Jika Claude Code meminta izin untuk balasan pertama, setujui itu. Jawabannya muncul di UI obrolan.

273 273 

274Jika Claude mengalami prompt izin saat Anda jauh dari terminal, sesi dijeda sampai Anda merespons. Server channel yang mendeklarasikan [kemampuan relai izin](https://code.claude.com/docs/id/channels-reference.md#relay-permission-prompts) dapat meneruskan prompt ini kepada Anda sehingga Anda dapat menyetujui atau menolak dari jarak jauh. Untuk penggunaan tanpa pengawasan, [`--dangerously-skip-permissions`](https://code.claude.com/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) melewati sebagian besar prompt, tetapi hanya gunakan di lingkungan yang Anda percayai. Bahkan kemudian, [actions no mode auto-approves](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku.274Jika Claude mengalami prompt izin saat Anda jauh dari terminal, sesi dijeda sampai Anda merespons. Server channel yang mendeklarasikan [kemampuan relai izin](https://code.claude.com/docs/id/channels-reference.md#relay-permission-prompts) dapat meneruskan prompt ini kepada Anda sehingga Anda dapat menyetujui atau menolak dari jarak jauh. Untuk penggunaan tanpa pengawasan, [`--dangerously-skip-permissions`](https://code.claude.com/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) melewati sebagian besar prompt, tetapi hanya gunakan di lingkungan yang Anda percayai. Bahkan kemudian, [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku.

275 275 

276Ketika Anda menjalankan channels dalam mode non-interaktif dengan `-p`, tool yang memerlukan input terminal, seperti pertanyaan pilihan ganda dan persetujuan plan mode, dinonaktifkan sehingga sesi tidak pernah macet menunggu input.276Ketika Anda menjalankan channels dalam mode non-interaktif dengan `-p`, tool yang memerlukan input terminal, seperti pertanyaan pilihan ganda dan persetujuan plan mode, dinonaktifkan sehingga sesi tidak pernah macet menunggu input.

277 277 

Details

582}582}

583```583```

584 584 

585Balasan jarak jauh yang tidak cocok dengan format yang diharapkan dengan tepat gagal dalam salah satu dari dua cara, dan dalam kedua kasus dialog terminal lokal tetap terbuka:585Jika balasan jarak jauh tidak berpengaruh dan dialog terminal lokal tetap terbuka, periksa penyebab-penyebab berikut:

586 586 

587* **Format berbeda**: regex handler inbound Anda gagal cocok, jadi teks seperti `approve it` atau `yes` tanpa ID jatuh melalui sebagai pesan normal ke Claude.587* **Format salah**: regex handler inbound Anda gagal cocok, jadi teks seperti `approve it` atau `yes` tanpa ID jatuh melalui sebagai pesan normal ke Claude.

588* **Format benar, ID salah**: server Anda memancarkan verdict, tetapi Claude Code tidak menemukan permintaan terbuka dengan ID itu dan menjatuhkannya diam-diam.588* **ID salah**: server Anda memancarkan verdict, tetapi Claude Code tidak menemukan permintaan terbuka dengan ID itu dan menjatuhkannya diam-diam.

589* **ID sudah digunakan oleh prompt sebelumnya**: server Anda memancarkan verdict dengan ID dari permintaan, tetapi prompt sebelumnya dalam sesi memiliki ID yang sama. Setelah sebuah ID berulang, Claude Code menjatuhkan verdict channel apa pun yang membawanya, sehingga balasan yang ditujukan untuk satu prompt tidak dapat menyetujui prompt lainnya. ID terdiri dari lima huruf acak, jadi pengulangan jarang terjadi. Jawab di terminal sebagai gantinya.

589 590 

590### Contoh lengkap591### Contoh lengkap

591 592 

Details

90 90 

91### Pesan yang dikirim di tengah giliran tidak di-checkpoint91### Pesan yang dikirim di tengah giliran tidak di-checkpoint

92 92 

93Di menu rewind, pesan yang Anda [ketik saat Claude masih bekerja](https://code.claude.com/docs/id/interactive-mode.md#queue-messages-while-claude-works) dapat ditandai **No code restore**. Claude membaca pesan tersebut sebelum gilirannya berakhir. [Checkpoint diambil untuk prompt yang memulai giliran](#how-checkpoints-work), sehingga pesan ini tidak memiliki checkpoint sendiri. Edit yang Claude buat setelah membacanya dihitung sebagai bagian dari prompt yang memulai giliran tersebut.93Di menu rewind, pesan yang Anda [ketik saat Claude masih bekerja](https://code.claude.com/docs/id/interactive-mode.md#queue-messages-while-claude-works) dapat ditandai **No code restore**. Pesan yang ditandai tidak memiliki [checkpoint](#how-checkpoints-work) sendiri.

94 94 

95Anda tidak perlu melakukan apa pun terhadap pesan itu sendiri. Untuk membatalkan perubahan file dari bagian sesi tersebut, pilih prompt yang memulai giliran dan pilih **Restore code** atau **Restore code and conversation**. Itu mengembalikan edit file Claude dari seluruh giliran, termasuk edit yang dibuat sebelum pesan Anda tiba. Memilih pesan yang ditandai tetap menawarkan **Restore conversation**, yang melakukan rewind percakapan ke pesan tersebut dan membiarkan file Anda apa adanya.95Untuk membatalkan edit file yang Claude buat setelah pesan tersebut, pilih prompt yang memulai giliran dan pilih **Restore code** atau **Restore code and conversation**. Itu mengembalikan edit file Claude dari seluruh giliran, termasuk edit yang dibuat sebelum pesan Anda tiba.

96 96 

97### Jalur symlink dan hard-link tidak dipulihkan97### Jalur symlink dan hard-link tidak dipulihkan

98 98 

Details

98 98 

99Peringatan dan persentase berasal dari header `anthropic-ratelimit-unified-*`, yang ditambahkan gateway ke setiap respons `/v1/messages` yang berhasil untuk pengembang yang memiliki batas. Header selalu menggambarkan batas pengembang itu sendiri: gateway menghapus header rate limit penyedia hulu, yang menggambarkan kuota bersama Anda, dan tidak pernah meneruskannya.99Peringatan dan persentase berasal dari header `anthropic-ratelimit-unified-*`, yang ditambahkan gateway ke setiap respons `/v1/messages` yang berhasil untuk pengembang yang memiliki batas. Header selalu menggambarkan batas pengembang itu sendiri: gateway menghapus header rate limit penyedia hulu, yang menggambarkan kuota bersama Anda, dan tidak pernah meneruskannya.

100 100 

101Pengeluaran yang dilihat pengembang adalah [perkiraan](#how-requests-are-priced) gateway sendiri, angka yang sama yang digunakan untuk menegakkan batas, dan bukan jumlah dari tagihan penyedia Anda. Claude Code membaca jumlah dolar dengan permintaan terpisah ke gateway. Jika Anda mengatur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` di mesin pengembang, seperti yang disarankan [Postur kepatuhan](https://code.claude.com/docs/id/claude-apps-gateway-deploy.md#compliance-posture), Claude Code melewati permintaan tersebut. Dengan variabel tersebut diatur, atau dengan server gateway yang lebih lama dari v2.1.284, bilah dan baris status tetap hanya menampilkan persentase.101Pengeluaran yang dilihat pengembang adalah [perkiraan](#how-requests-are-priced) gateway sendiri, angka yang sama yang digunakan untuk menegakkan batas. Angka ini bukan jumlah dari tagihan penyedia Anda. Claude Code membaca jumlah dolar dengan permintaan terpisah ke gateway, yang tetap dikirimnya meskipun Anda mengatur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` di mesin pengembang. Sebelum v2.1.295, Claude Code melewati permintaan tersebut ketika variabel itu diatur, dan `/usage` serta baris status menampilkan persentase dan tanggal reset, tanpa jumlah dolar.

102 102 

103## Referensi Admin API103## Referensi Admin API

104 104 

Details

18 18 

19* **Browser**: [claude.ai/code](https://claude.ai/code), juga disebut Claude Code di web19* **Browser**: [claude.ai/code](https://claude.ai/code), juga disebut Claude Code di web

20* **Mobile**: tab **Code** di [aplikasi Claude](https://code.claude.com/docs/id/mobile.md)20* **Mobile**: tab **Code** di [aplikasi Claude](https://code.claude.com/docs/id/mobile.md)

21* **Aplikasi desktop**: pilih **Cloud** alih-alih **Local** saat Anda [memulai sesi](https://code.claude.com/docs/id/desktop.md#run-long-running-tasks-in-the-cloud)21* **Aplikasi desktop**: pilih lingkungan di bawah **Cloud** pada pemilih lingkungan saat Anda [memulai sesi](https://code.claude.com/docs/id/desktop.md#run-long-running-tasks-in-the-cloud)

22* **Terminal**: [`claude --cloud`](#from-terminal-to-cloud)22* **Terminal**: [`claude --cloud`](#from-terminal-to-cloud)

23* **Tugas terjadwal cloud**: [eksekusi terjadwal dan terpicu](https://code.claude.com/docs/id/routines.md) masing-masing berjalan sebagai sesi cloud23* **Tugas terjadwal cloud**: [eksekusi terjadwal dan terpicu](https://code.claude.com/docs/id/routines.md) masing-masing berjalan sebagai sesi cloud

24 24 


247 247 

248### Tinjau perubahan248### Tinjau perubahan

249 249 

250Setiap sesi menampilkan indikator diff dengan baris yang ditambahkan dan dihapus, seperti `+42 -18`. Pilihnya untuk membuka tampilan diff, tinggalkan komentar sebaris pada baris tertentu, dan kirimkan ke Claude dengan pesan berikutnya.250Setelah Claude melakukan push perubahannya ke sebuah branch, kartu **Changes** di panel di samping obrolan menampilkan baris yang ditambahkan dan dihapus, seperti `+42 -18`. Klik jumlah baris pada kartu **Changes** untuk membuka tampilan diff.

251 251 

252Tampilan diff membandingkan perubahan sesi dengan branch dasarnya secara default. Untuk membandingkan dengan branch lain mana pun di repositori, pilih **Compare against** dan pilih salah satu.252* Anda juga dapat mengklik **Changes** di bilah judul sesi, atau di menu **⋮** pada bilah tersebut.

253* Untuk menampilkan panel saat disembunyikan, klik ikon **Show session rail** di bilah judul sesi, atau di menu **⋮** pada bilah tersebut.

254 

255Di tampilan diff, Anda dapat berkomentar pada baris dan membandingkan dengan branch lain:

256 

257* **Comment**: tinggalkan komentar sebaris pada baris tertentu, lalu kirimkan komentar tersebut ke Claude dengan pesan berikutnya

258* **Compare**: tampilan diff membandingkan perubahan sesi dengan branch dasarnya secara default. Untuk membandingkan dengan branch lain mana pun di repositori, pilih **Compare against** dan pilih salah satu

253 259 

254Claude Code menghitung diff ini dari konten blob git mentah, sehingga driver diff dan filter `textconv` yang dikonfigurasi di repositori tidak berlaku.260Claude Code menghitung diff ini dari konten blob git mentah, sehingga driver diff dan filter `textconv` yang dikonfigurasi di repositori tidak berlaku.

255 261 


313 319 

314### Arsipkan sesi320### Arsipkan sesi

315 321 

316Anda dapat mengarsipkan sesi untuk menjaga daftar sesi Anda tetap terorganisir. Sesi yang diarsipkan disembunyikan dari daftar sesi default tetapi dapat dilihat dengan memfilter sesi yang diarsipkan.322Arsipkan sesi untuk menghapusnya dari daftar sesi di bilah samping. Untuk mengarsipkan sesi, arahkan kursor ke sesi tersebut di bilah samping, buka menu **⋯**-nya, dan pilih **Archive**.

317 323 

318Untuk mengarsipkan sesi, arahkan ke sesi di bilah samping dan pilih ikon arsip.324#### Temukan sesi yang diarsipkan

325 

326Untuk melihat sesi yang Anda arsipkan, buka [claude.ai/code/sessions](https://claude.ai/code/sessions) dan buka tab **Archived**. Untuk mengembalikan sesi ke daftar sesi di bilah samping, arahkan kursor ke sesi tersebut di tab itu, buka menu **⋮**-nya, dan pilih **Unarchive**.

319 327 

320### Hapus sesi328### Hapus sesi

321 329 

322Menghapus sesi secara permanen menghapus sesi dan datanya. Tindakan ini tidak dapat dibatalkan. Anda dapat menghapus sesi dengan dua cara:330Menghapus sesi secara permanen menghapus sesi dan datanya. Tindakan ini tidak dapat dibatalkan. Hapus sesi dari bilah samping, dari menu sesi, atau dari tab **Archived** jika Anda sudah mengarsipkannya:

323 331 

324* **Dari bilah samping**: filter untuk sesi yang diarsipkan, kemudian arahkan ke sesi yang ingin Anda hapus dan pilih ikon hapus332* **Dari bilah samping**: arahkan kursor ke sesi, buka menu **⋯**-nya, dan pilih **Delete**

325* **Dari menu sesi**: buka sesi, pilih dropdown di sebelah judul sesi, dan pilih **Delete**333* **Dari menu sesi**: buka sesi, pilih dropdown di sebelah judul sesi, dan pilih **Delete**

334* **Dari tab Archived**: arahkan kursor ke sesi di [tab **Archived**](#find-an-archived-session), buka menu **⋮**-nya, dan pilih **Delete**

326 335 

327Anda akan diminta untuk mengonfirmasi sebelum sesi dihapus.336Anda akan diminta untuk mengonfirmasi sebelum sesi dihapus.

328 337 


336 345 

337Ada beberapa cara untuk mengaktifkan auto-fix tergantung di mana PR berasal dan perangkat apa yang Anda gunakan:346Ada beberapa cara untuk mengaktifkan auto-fix tergantung di mana PR berasal dan perangkat apa yang Anda gunakan:

338 347 

339* **PR yang dibuat dalam sesi cloud**: buka sesi di claude.ai/code, buka bilah status CI, dan pilih **Auto-fix**348* **PR yang dibuat dalam sesi cloud**: buka sesi di claude.ai/code dan temukan pull request di [kartu **Changes**](#review-changes). Buka menu **⋮** di samping judul pull request dan aktifkan **Auto-fix**

340* **Dari terminal Anda**: jalankan [`/autofix-pr`](https://code.claude.com/docs/id/commands) saat berada di cabang PR. Claude Code mendeteksi PR terbuka dengan `gh`, menelurkan sesi cloud, dan mengaktifkan auto-fix dalam satu langkah349* **Dari terminal Anda**: jalankan [`/autofix-pr`](https://code.claude.com/docs/id/commands) saat berada di cabang PR. Claude Code mendeteksi PR terbuka dengan `gh`, menelurkan sesi cloud, dan mengaktifkan auto-fix dalam satu langkah

341* **Dari aplikasi mobile**: beri tahu Claude untuk auto-fix PR, misalnya "watch this PR and fix any CI failures or review comments"350* **Dari aplikasi mobile**: beri tahu Claude untuk auto-fix PR, misalnya "watch this PR and fix any CI failures or review comments"

342* **PR yang ada**: tempel URL PR ke sesi dan beri tahu Claude untuk auto-fix351* **PR yang ada**: tempel URL PR ke sesi dan beri tahu Claude untuk auto-fix

343 352 

344Auto-fix adalah toggle per-PR. Untuk berhenti memantau, buka bilah status CI dalam sesi di claude.ai/code dan hapus toggle **Auto-fix**, atau beri tahu Claude untuk berhenti memantau PR.353Untuk berhenti memantau, matikan **Auto-fix** di menu **⋮** pull request pada [kartu **Changes**](#review-changes) sesi, atau beri tahu Claude untuk berhenti memantau PR.

345 354 

346### Bagaimana Claude merespons aktivitas PR355### Bagaimana Claude merespons aktivitas PR

347 356 


381* Coba lagi setelah satu menit, karena kapasitas disediakan sesuai permintaan390* Coba lagi setelah satu menit, karena kapasitas disediakan sesuai permintaan

382* Konfirmasi koneksi GitHub Anda dapat menjangkau repositori dengan mengikuti [No repositories appear after connecting GitHub](https://code.claude.com/docs/id/web-quickstart.md#no-repositories-appear-after-connecting-github)391* Konfirmasi koneksi GitHub Anda dapat menjangkau repositori dengan mengikuti [No repositories appear after connecting GitHub](https://code.claude.com/docs/id/web-quickstart.md#no-repositories-appear-after-connecting-github)

383 392 

393### Your new session couldn't start

394 

395Prompt Anda dikembalikan ke kotak tempat Anda mengirimkannya.

396 

397* **Connection lost**: periksa koneksi internet Anda serta VPN atau proxy apa pun yang Anda gunakan, lalu kirim prompt Anda lagi

398* **Server error**: tunggu sebentar, lalu kirim prompt Anda lagi. Jika pemberitahuan muncul kembali, periksa [status.claude.com](https://status.claude.com)

399 

400### Can't rewind to this message

401 

402**Rewind to here** gagal dengan kesalahan ini pada pesan mana pun kecuali yang terbaru ketika sesi Anda berjalan di [self-hosted runner](https://code.claude.com/docs/id/self-hosted-environments) dengan Claude Code sebelum v2.1.246. Minta pihak yang menjalankan runner organisasi Anda untuk [meng-upgrade-nya](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#pin-the-version).

403 

384### Unable to get organization UUID404### Unable to get organization UUID

385 405 

386`claude --cloud` dan `claude --teleport` memerlukan sign-in dengan akun claude.ai. Jika Anda mengautentikasi dengan kunci API, atau detail akun yang disimpan sudah usang, Anda akan melihat salah satu dari pesan berikut:406`claude --cloud` dan `claude --teleport` memerlukan sign-in dengan akun claude.ai. Jika Anda mengautentikasi dengan kunci API, atau detail akun yang disimpan sudah usang, Anda akan melihat salah satu dari pesan berikut:

Details

111 111 

112Project sekarang tercantum di bawah **Projects** di sidebar, dan percakapannya terbuka. [Batch pertama Anda](#your-first-batch) mencakup apa yang harus diatur sebelum Anda mengirimnya pekerjaan.112Project sekarang tercantum di bawah **Projects** di sidebar, dan percakapannya terbuka. [Batch pertama Anda](#your-first-batch) mencakup apa yang harus diatur sebelum Anda mengirimnya pekerjaan.

113 113 

114### Mulai dari sesi cloud yang ada114### Mulai dari sesi yang ada

115 115 

116Jika sesi cloud yang Anda mulai sendiri sedang melakukan pekerjaan yang seharusnya ada di project, buka menu sidebar-nya dan pilih **Move to project**, lalu pilih dari submenu:116Jika sesi cloud yang Anda mulai sendiri sedang melakukan pekerjaan yang seharusnya ada di project, buka menu sidebar-nya dan pilih **Move to project**, lalu pilih dari submenu:

117 117 


120 120 

121Banner **Set up project** juga dapat muncul di atas kotak pesan sesi cloud. Jika Anda menggunakannya alih-alih **Continue as new project**, hasilnya sama, kecuali giliran sesi yang sedang berjalan berhenti setelah project terbuka.121Banner **Set up project** juga dapat muncul di atas kotak pesan sesi cloud. Jika Anda menggunakannya alih-alih **Continue as new project**, hasilnya sama, kecuali giliran sesi yang sedang berjalan berhenti setelah project terbuka.

122 122 

123Sesi lokal tidak memiliki opsi ini. Untuk melanjutkan pekerjaannya di project, deskripsikan pekerjaan dalam percakapan project, atau push branch-nya, tambahkan repositori itu ke project, dan beri nama branch dalam tugas.123Sesi di mesin Anda sendiri mendapatkan menu sidebar yang sama di claude.ai/code setelah Anda menghubungkannya melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md#start-a-remote-control-session). Dari project, Claude tidak dapat membaca transkrip sesi yang terhubung saat [**Require trusted devices**](https://code.claude.com/docs/id/remote-control.md#trusted-devices) aktif untuk akun Anda. Jika pengaturan itu nonaktif:

124 

1251. Jika sesi belum terhubung, jalankan `/remote-control` di dalamnya. Jika sesi terhubung saat pengaturan itu aktif, putuskan sambungannya dan hubungkan kembali terlebih dahulu.

1262. Di browser, temukan baris sesi di sidebar di [claude.ai/code](https://claude.ai/code), buka menunya, dan pilih dari submenu yang sama.

127 

128Jika **Require trusted devices** aktif, atau Anda tidak menggunakan Remote Control, deskripsikan pekerjaan dalam percakapan project sendiri. Atau push branch sesi tersebut, tambahkan repositorinya ke project, dan beri tahu Claude nama branch-nya.

124 129 

125### Atur akses GitHub130### Atur akses GitHub

126 131 


425* **Cloud sessions**: setiap thread adalah [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) kecuali Anda meminta Claude untuk menjalankannya di mesin Anda. Bagaimanapun, Claude memulai dan melacaknya alih-alih Anda. Anda juga dapat membawa pekerjaan dari sesi cloud yang Anda mulai sendiri ke dalam project: pilih [**Move to project**](#start-from-an-existing-cloud-session) di menu sidebar sesi tersebut.430* **Cloud sessions**: setiap thread adalah [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) kecuali Anda meminta Claude untuk menjalankannya di mesin Anda. Bagaimanapun, Claude memulai dan melacaknya alih-alih Anda. Anda juga dapat membawa pekerjaan dari sesi cloud yang Anda mulai sendiri ke dalam project: pilih [**Move to project**](#start-from-an-existing-cloud-session) di menu sidebar sesi tersebut.

426* **Scheduled tasks**: ketika Anda meminta pekerjaan terjadwal dalam project, Claude membuat [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) yang berjalan sebagai thread dalam project itu dan muncul di tab **Scheduled tasks**-nya. Tugas terjadwal yang Anda buat di luar project terus bekerja sendiri.431* **Scheduled tasks**: ketika Anda meminta pekerjaan terjadwal dalam project, Claude membuat [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) yang berjalan sebagai thread dalam project itu dan muncul di tab **Scheduled tasks**-nya. Tugas terjadwal yang Anda buat di luar project terus bekerja sendiri.

427* **Remote Control**: [Remote Control](https://code.claude.com/docs/id/remote-control.md) menghubungkan claude.ai ke sesi Claude Code yang berjalan di mesin Anda. Ketika Anda meminta Claude dalam project untuk menjalankan thread di komputer Anda, project [menggunakan Remote Control untuk melakukannya](#run-a-thread-on-your-own-computer).432* **Remote Control**: [Remote Control](https://code.claude.com/docs/id/remote-control.md) menghubungkan claude.ai ke sesi Claude Code yang berjalan di mesin Anda. Ketika Anda meminta Claude dalam project untuk menjalankan thread di komputer Anda, project [menggunakan Remote Control untuk melakukannya](#run-a-thread-on-your-own-computer).

428* **Local sessions dan agent view**: sesi yang Anda mulai sendiri di terminal, IDE, atau environment lokal aplikasi desktop tidak dapat ditambahkan ke project. [Agent view](https://code.claude.com/docs/id/agent-view.md) adalah layar untuk melacak beberapa sesi lokal berdampingan, dan Anda masih memulai masing-masing dan memberikan tugasnya sendiri.433* **Local sessions dan agent view**: sesi yang Anda mulai sendiri di terminal, IDE, atau environment lokal aplikasi desktop tetap berada di luar project Anda, meskipun Anda dapat [membawa pekerjaannya ke dalam salah satu project](#start-from-an-existing-cloud-session). [Agent view](https://code.claude.com/docs/id/agent-view.md) adalah layar untuk melacak beberapa sesi lokal berdampingan, dan Anda masih memulai masing-masing dan memberikan tugasnya sendiri.

429* **Worktrees**: [worktree](https://code.claude.com/docs/id/worktrees.md) memberikan setiap sesi lokal salinan kerjanya sendiri dari repositori. Thread cloud tidak membutuhkannya: setiap thread mengkloning repositorinya ke sandbox cloud sendiri dan bekerja di branch sendiri.434* **Worktrees**: [worktree](https://code.claude.com/docs/id/worktrees.md) memberikan setiap sesi lokal salinan kerjanya sendiri dari repositori. Thread cloud tidak membutuhkannya: setiap thread mengkloning repositorinya ke sandbox cloud sendiri dan bekerja di branch sendiri.

430* **Agent teams**: [agent team](https://code.claude.com/docs/id/agent-teams.md) adalah satu sesi yang memulai sesi rekan untuk satu tugas, di mesin Anda atau di dalam sesi cloud, dan berakhir dengan tugas itu.435* **Agent teams**: [agent team](https://code.claude.com/docs/id/agent-teams.md) adalah satu sesi yang memulai sesi rekan untuk satu tugas, di mesin Anda atau di dalam sesi cloud, dan berakhir dengan tugas itu.

431* **Subagents**: [subagent](https://code.claude.com/docs/id/sub-agents.md) berjalan di dalam satu sesi, melakukan tugas sampingan dalam jendela konteks sendiri, dan mengembalikan ringkasan ke sesi itu. Thread project adalah sesi utuh yang Claude mulai dan yang melaporkan kembali ke percakapan project, dan thread masih dapat menggunakan subagents untuk tugas sampingannya sendiri.436* **Subagents**: [subagent](https://code.claude.com/docs/id/sub-agents.md) berjalan di dalam satu sesi, melakukan tugas sampingan dalam jendela konteks sendiri, dan mengembalikan ringkasan ke sesi itu. Thread project adalah sesi utuh yang Claude mulai dan yang melaporkan kembali ke percakapan project, dan thread masih dapat menggunakan subagents untuk tugas sampingannya sendiri.


437 442 

438* Project tersedia di claude.ai/code, di aplikasi desktop, dan di aplikasi mobile Claude, bukan di CLI terminal, ekstensi VS Code, atau plugin JetBrains, dan bukan melalui Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry.443* Project tersedia di claude.ai/code, di aplikasi desktop, dan di aplikasi mobile Claude, bukan di CLI terminal, ekstensi VS Code, atau plugin JetBrains, dan bukan melalui Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry.

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

440* Anda tidak dapat menambahkan sesi yang Anda mulai sendiri di mesin Anda ke project. Project mencapai mesin Anda hanya dengan [menjalankan thread di sana melalui Remote Control](#run-a-thread-on-your-own-computer), dan bagian itu mencantumkan apa yang dibutuhkannya.445* Anda tidak dapat menambahkan sesi yang Anda mulai sendiri di mesin Anda ke project, meskipun Anda dapat [membawa pekerjaannya ke dalam project](#start-from-an-existing-cloud-session). Project mencapai mesin Anda dengan [menjalankan thread di sana melalui Remote Control](#run-a-thread-on-your-own-computer), dan bagian itu mencantumkan apa yang dibutuhkannya.

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

442* Project milik satu pengguna. Anda tidak dapat berbagi project atau thread-nya dengan pengguna lain, dan transkrip thread tidak memiliki opsi berbagi yang dimiliki sesi cloud lain. Tidak ada kontrol tingkat organisasi untuk project selama beta.447* Project milik satu pengguna. Anda tidak dapat berbagi project atau thread-nya dengan pengguna lain, dan transkrip thread tidak memiliki opsi berbagi yang dimiliki sesi cloud lain. Tidak ada kontrol tingkat organisasi untuk project selama beta.

443* Thread milik satu project yang memulainya. Anda tidak dapat memindahkan atau menyalin thread ke project lain, atau memindahkannya keluar untuk berdiri sendiri. [**Move to project**](#start-from-an-existing-cloud-session) hanya berjalan dengan cara lain: itu membawa pekerjaan sesi cloud ke project. Anda tidak dapat menggabungkan dua project menjadi satu.448* Thread milik satu project yang memulainya. Anda tidak dapat memindahkan atau menyalin thread ke project lain, atau memindahkannya keluar untuk berdiri sendiri. [**Move to project**](#start-from-an-existing-cloud-session) hanya berjalan dengan cara lain: itu membawa pekerjaan sesi cloud ke project. Anda tidak dapat menggabungkan dua project menjadi satu.

code-review.md +1 −1

Details

67 67 

68* **Temuan**: komentar sebaris pada baris yang bersangkutan, dengan ringkasan di badan review68* **Temuan**: komentar sebaris pada baris yang bersangkutan, dengan ringkasan di badan review

69* **Check run**: bernama **Claude Code Review**, dengan temuan tercantum di [detailnya](https://code.claude.com/docs/id/code-review-pull-requests.md#check-run-output). Check run tidak berakhir dengan status gagal.69* **Check run**: bernama **Claude Code Review**, dengan temuan tercantum di [detailnya](https://code.claude.com/docs/id/code-review-pull-requests.md#check-run-output). Check run tidak berakhir dengan status gagal.

70* **Ketika tidak menemukan apa pun**: judul check run berbunyi **Code review found no issues**, dan Claude memposting catatan singkat yang sama pada pull request70* **Catatan sebagai pengganti temuan**: diposting ketika judul check run berbunyi **Code review found no issues**

71 71 

72Code Review memilih model Claude yang digunakan untuk menjalankan review, dan pengaturan admin-nya tidak menawarkan pilihan model. Untuk membuat review lebih atau kurang menyeluruh, ubah [tingkat review](#review-levels).72Code Review memilih model Claude yang digunakan untuk menjalankan review, dan pengaturan admin-nya tidak menawarkan pilihan model. Untuk membuat review lebih atau kurang menyeluruh, ubah [tingkat review](#review-levels).

73 73 

Details

152 152 

153### Cakupan review berikutnya153### Cakupan review berikutnya

154 154 

155Review berikutnya yang dimulai dengan sendirinya, seperti setelah push, berfokus pada apa yang berubah sejak review terakhir dan memposting lebih sedikit nit dan temuan pre-existing. Ringkasannya menghitung apa yang tidak disertakan, dalam baris yang diakhiri dengan "found and not posted" atau "outside the scope of this re-review and not posted."155Review berikutnya yang dimulai dengan sendirinya, seperti setelah push, berfokus pada apa yang berubah sejak review terakhir dan memposting lebih sedikit [nit dan temuan pre-existing](#severity-levels). Untuk melihat apakah review tersebut tidak menyertakan temuan sebagai akibatnya, cari kalimat yang menghitungnya di badan review:

156 

157* **Temuan pada kode yang tidak berubah sejak review terakhir**: kalimat diakhiri dengan "outside the scope of this re-review and not posted"

158* **Nit dan temuan pre-existing**: kalimat diakhiri dengan "found and not posted"

156 159 

157Untuk mendapatkan review yang tidak menghilangkan satu pun dari temuan tersebut, komentari [`@claude review`](#comment-commands). Review ini mencakup seluruh pull request lagi.160Untuk mendapatkan review yang tidak menghilangkan satu pun dari temuan tersebut, komentari [`@claude review`](#comment-commands). Review ini mencakup seluruh pull request lagi.

158 161 

Details

15| Judul check run | Artinya | Yang perlu dilakukan |15| Judul check run | Artinya | Yang perlu dilakukan |

16| :- | :- | :- |16| :- | :- | :- |

17| **Code review queued...** atau **Code review in progress...** | Review belum selesai | Tunggu hingga judulnya berubah |17| **Code review queued...** atau **Code review in progress...** | Review belum selesai | Tunggu hingga judulnya berubah |

18| **Code review found no issues** | Review selesai dan tidak menemukan apa pun untuk ditandai | Tidak ada |18| **Code review found no issues** | Review selesai dan tidak memposting temuan apa pun | Jika ini bukan review pertama untuk pull request tersebut, periksa isi review untuk melihat jumlah [temuan yang tidak disertakan oleh review](https://code.claude.com/docs/id/code-review-pull-requests.md#what-a-later-review-covers). Jika tidak, tidak ada |

19| Judul yang menyatakan bahwa masalah ditemukan | Review selesai dengan temuan | Jika Anda tidak melihatnya pada diff, lihat [Temukan masalah yang tidak ditampilkan sebagai komentar inline](#find-issues-that-aren’t-showing-as-inline-comments) |19| Judul yang menyatakan bahwa masalah ditemukan | Review selesai dengan temuan | Jika Anda tidak melihatnya pada diff, lihat [Temukan masalah yang tidak ditampilkan sebagai komentar inline](#find-issues-that-aren’t-showing-as-inline-comments) |

20| **Code review skipped — no new changes** | Review otomatis tidak berjalan pada push terbaru Anda | Untuk tetap mendapatkan review, beri komentar `@claude review` |20| **Code review skipped — no new changes** | Review otomatis tidak berjalan pada push terbaru Anda | Untuk tetap mendapatkan review, beri komentar `@claude review` |

21| **Code review not repeated — earlier findings still open** | Review otomatis tidak berjalan pada push terbaru Anda, dan temuan Important dari review sebelumnya masih terbuka | Push perbaikan, atau untuk tetap mendapatkan review, beri komentar `@claude review`. Lihat [Saat push mempertahankan hasil sebelumnya](https://code.claude.com/docs/id/code-review-pull-requests.md#when-a-push-keeps-the-earlier-result) |21| **Code review not repeated — earlier findings still open** | Review otomatis tidak berjalan pada push terbaru Anda, dan temuan Important dari review sebelumnya masih terbuka | Push perbaikan, atau untuk tetap mendapatkan review, beri komentar `@claude review`. Lihat [Saat push mempertahankan hasil sebelumnya](https://code.claude.com/docs/id/code-review-pull-requests.md#when-a-push-keeps-the-earlier-result) |

desktop.md +49 −18

Details

92| **Accept edits** | `acceptEdits` | Claude secara otomatis menerima edit file dan perintah filesystem umum seperti `mkdir`, `touch`, dan `mv`, tetapi masih meminta izin sebelum menjalankan perintah terminal lainnya. Gunakan ini ketika Anda mempercayai perubahan file dan menginginkan iterasi yang lebih cepat. |92| **Accept edits** | `acceptEdits` | Claude secara otomatis menerima edit file dan perintah filesystem umum seperti `mkdir`, `touch`, dan `mv`, tetapi masih meminta izin sebelum menjalankan perintah terminal lainnya. Gunakan ini ketika Anda mempercayai perubahan file dan menginginkan iterasi yang lebih cepat. |

93| **Plan** | `plan` | Claude membaca file dan menjalankan perintah untuk menjelajahi, kemudian mengusulkan rencana tanpa mengedit kode sumber Anda. Bagus untuk tugas kompleks di mana Anda ingin meninjau pendekatan terlebih dahulu. |93| **Plan** | `plan` | Claude membaca file dan menjalankan perintah untuk menjelajahi, kemudian mengusulkan rencana tanpa mengedit kode sumber Anda. Bagus untuk tugas kompleks di mana Anda ingin meninjau pendekatan terlebih dahulu. |

94| **Auto** | `auto` | Claude berjalan tanpa permintaan izin reguler; sebelum tindakan seperti perintah shell dan permintaan jaringan berjalan, pengklasifikasi latar belakang memeriksa bahwa mereka selaras dengan permintaan Anda. Muncul ketika [auto mode tersedia](#auto-mode-availability); tidak ada toggle Settings terpisah untuk itu. |94| **Auto** | `auto` | Claude berjalan tanpa permintaan izin reguler; sebelum tindakan seperti perintah shell dan permintaan jaringan berjalan, pengklasifikasi latar belakang memeriksa bahwa mereka selaras dengan permintaan Anda. Muncul ketika [auto mode tersedia](#auto-mode-availability); tidak ada toggle Settings terpisah untuk itu. |

95| **Bypass permissions** | `bypassPermissions` | Claude berjalan tanpa permintaan izin, kecuali untuk [tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves), pengklasifikasi keamanan ketika Claude [bertindak di situs eksternal](#browse-external-sites), atau tindakan desktop seperti menghapus sesi, meskipun tidak termasuk [mengarsipkan sesi](#work-across-sessions). Setara dengan `--dangerously-skip-permissions` di CLI. Di paket Pro dan Max, aktifkan di Settings → Claude Code Anda di bawah "Allow bypass permissions mode"; di paket Team dan Enterprise tidak ada toggle Settings, dan kebijakan organisasi mengontrolnya sebagai gantinya. Hanya gunakan ini di kontainer atau VM yang disandbox. |95| **Bypass permissions** | `bypassPermissions` | Claude berjalan tanpa permintaan izin, kecuali untuk [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves), pengklasifikasi keamanan ketika Claude [bertindak di situs eksternal](#browse-external-sites), atau tindakan desktop seperti menghapus sesi, meskipun tidak termasuk [mengarsipkan sesi](#work-across-sessions). Setara dengan `--dangerously-skip-permissions` di CLI. Di paket Pro dan Max, aktifkan di Settings → Claude Code Anda di bawah "Allow bypass permissions mode"; di paket Team dan Enterprise tidak ada toggle Settings, dan kebijakan organisasi mengontrolnya sebagai gantinya. Hanya gunakan ini di kontainer atau VM yang disandbox. |

96 96 

97Versi sebelumnya dari tab Code memberi label pada mode ini sebagai Ask permissions, Auto accept edits, dan Plan mode.97Versi sebelumnya dari tab Code memberi label pada mode ini sebagai Ask permissions, Auto accept edits, dan Plan mode.

98 98 


223 223 

224#### Sembunyikan atau tampilkan panel detail sesi224#### Sembunyikan atau tampilkan panel detail sesi

225 225 

226Untuk menyembunyikan atau menampilkan panel, klik **Hide session rail** atau **Show session rail** di bilah judul sesi, atau di menu **⋮** pada bilah tersebut ketika jendela sempit. Jika Anda masih tidak melihat panel, [periksa tata letak tab Code mana yang Anda miliki](#check-which-layout-you-have).226Untuk menyembunyikan atau menampilkan panel, klik **Hide session rail** atau **Show session rail** di bilah judul sesi, atau di menu **⋮** pada bilah tersebut. Jika Anda masih tidak melihat panel, [periksa tata letak tab Code mana yang Anda miliki](#check-which-layout-you-have).

227 227 

228### Jalankan perintah di terminal228### Jalankan perintah di terminal

229 229 


984 984 

985* **Sistem**: prosesor x86\_64 atau arm64. Mesin juga harus memenuhi [persyaratan sistem](https://code.claude.com/docs/id/setup.md#system-requirements) Claude Code. Di Linux, Claude Code memerlukan glibc 2.17 atau yang lebih baru, atau musl. Untuk melihat mana yang dimiliki mesin tersebut, jalankan `ldd --version` di sana. Pada distribusi berbasis musl seperti Alpine Linux, instal juga [paket yang dibutuhkan Claude Code](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions).985* **Sistem**: prosesor x86\_64 atau arm64. Mesin juga harus memenuhi [persyaratan sistem](https://code.claude.com/docs/id/setup.md#system-requirements) Claude Code. Di Linux, Claude Code memerlukan glibc 2.17 atau yang lebih baru, atau musl. Untuk melihat mana yang dimiliki mesin tersebut, jalankan `ldd --version` di sana. Pada distribusi berbasis musl seperti Alpine Linux, instal juga [paket yang dibutuhkan Claude Code](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions).

986* **SFTP**: server SSH harus menyediakan subsistem SFTP, yang diaktifkan oleh baris `Subsystem sftp` di `sshd_config`-nya. Untuk memeriksanya, hubungkan ke host dan port yang sama dengan `sftp` di terminal pada komputer Anda. Server yang berfungsi menampilkan prompt `sftp>`.986* **SFTP**: server SSH harus menyediakan subsistem SFTP, yang diaktifkan oleh baris `Subsystem sftp` di `sshd_config`-nya. Untuk memeriksanya, hubungkan ke host dan port yang sama dengan `sftp` di terminal pada komputer Anda. Server yang berfungsi menampilkan prompt `sftp>`.

987* **Sesi per koneksi**: Desktop di macOS dan Linux membuka beberapa sesi pada satu koneksi SSH. Jika `sshd_config` server mengatur `MaxSessions 1`, naikkan nilainya, misalnya ke nilai default OpenSSH yaitu 10.987* **`MaxSessions 1` di server**: untuk terhubung ke server yang `sshd_config`-nya menetapkan `MaxSessions 1`, lakukan salah satu dari berikut:

988 * **Komputer Anda menjalankan macOS atau Linux**: perbarui ke Claude Desktop v3.1623.0 atau yang lebih baru

989 * **Komputer Anda menjalankan Windows**: pastikan Desktop [terhubung melalui klien OpenSSH](#use-your-ssh-configuration), karena klien SSH bawaan Desktop tidak dapat terhubung ke server tersebut

990 * **Anda dapat mengubah server**: naikkan `MaxSessions`, misalnya ke nilai default OpenSSH yaitu 10

991* **Login dengan `MaxSessions 1`**: gunakan login yang berfungsi tanpa prompt, seperti kunci yang disimpan SSH agent Anda. Desktop masuk setidaknya dua kali setiap kali terhubung atau terhubung kembali. Perkirakan setidaknya satu login lagi untuk setiap tab [terminal](#run-commands-in-the-terminal), dan untuk setiap sesi Desktop tempat Anda menjalankan perintah yang diawali `!`. Tidak ada login tambahan untuk perintah yang dijalankan Claude.

992* **Kode sekali pakai dengan `MaxSessions 1`**: jika setiap login meminta input dari Anda, seperti dengan kode sekali pakai, perintah `!` gagal. Jalankan perintah tersebut di tab terminal sebagai gantinya, yang menampilkan prompt di panelnya sendiri.

988* **Folder instalasi**: Desktop menginstal program pembantu dan Claude Code di bawah `~/.claude/remote/` di direktori home Anda. Desktop menjalankannya dari sana, sehingga folder tersebut tidak boleh berada di sistem file yang di-mount dengan `noexec`. Sediakan sekitar 1 GB ruang disk di direktori home setiap pengguna yang terhubung. Untuk isi folder tersebut, lihat [File dan proses di mesin jarak jauh](#files-and-processes-on-the-remote-machine).993* **Folder instalasi**: Desktop menginstal program pembantu dan Claude Code di bawah `~/.claude/remote/` di direktori home Anda. Desktop menjalankannya dari sana, sehingga folder tersebut tidak boleh berada di sistem file yang di-mount dengan `noexec`. Sediakan sekitar 1 GB ruang disk di direktori home setiap pengguna yang terhubung. Untuk isi folder tersebut, lihat [File dan proses di mesin jarak jauh](#files-and-processes-on-the-remote-machine).

989* **Shell**: shell yang diatur untuk akun Anda di mesin jarak jauh harus dapat menjalankan perintah yang dikirim melalui SSH, seperti yang dilakukan Bash, Zsh, dan `sh`994* **Shell**: shell yang diatur untuk akun Anda di mesin jarak jauh harus dapat menjalankan perintah yang dikirim melalui SSH, seperti yang dilakukan Bash, Zsh, dan `sh`

990* **Jaringan**: Claude Code berjalan di mesin jarak jauh dan membuat permintaan jaringannya dari sana, sehingga mesin tersebut memerlukan [akses jaringan yang dibutuhkan Claude Code](https://code.claude.com/docs/id/network-config.md#network-access-requirements). Jika mesin tidak dapat mengunduh Claude Code, Desktop mengunduhnya di komputer Anda dan mengunggahnya. Permintaan Claude Code lainnya tetap dikirim dari mesin jarak jauh. Di mesin jarak jauh Linux, jika permintaan tersebut memerlukan proxy, [atur proxy tersebut untuk sesi SSH](#set-a-proxy-or-a-ca-certificate-for-ssh-sessions).995* **Jaringan**: Claude Code berjalan di mesin jarak jauh dan membuat permintaan jaringannya dari sana, sehingga mesin tersebut memerlukan [akses jaringan yang dibutuhkan Claude Code](https://code.claude.com/docs/id/network-config.md#network-access-requirements). Jika mesin tidak dapat mengunduh Claude Code, Desktop mengunduhnya di komputer Anda dan mengunggahnya. Permintaan Claude Code lainnya tetap dikirim dari mesin jarak jauh. Di mesin jarak jauh Linux, jika permintaan tersebut memerlukan proxy, [atur proxy tersebut untuk sesi SSH](#set-a-proxy-or-a-ca-certificate-for-ssh-sessions).


993 998 

994Jika mesin jarak jauh Linux menjangkau internet melalui proxy atau memerlukan sertifikat CA, tambahkan [variabel proxy dan CA](https://code.claude.com/docs/id/network-config.md) di bawah `env` di `~/.claude/settings.json` pada mesin tersebut. Tambahkan variabel tersebut meskipun Anda sudah mengekspornya di `~/.profile`, `~/.bash_profile`, `~/.zprofile`, atau `~/.zshrc` di mesin tersebut.999Jika mesin jarak jauh Linux menjangkau internet melalui proxy atau memerlukan sertifikat CA, tambahkan [variabel proxy dan CA](https://code.claude.com/docs/id/network-config.md) di bawah `env` di `~/.claude/settings.json` pada mesin tersebut. Tambahkan variabel tersebut meskipun Anda sudah mengekspornya di `~/.profile`, `~/.bash_profile`, `~/.zprofile`, atau `~/.zshrc` di mesin tersebut.

995 1000 

996Sesi SSH tidak mendapatkan variabel tersebut dari file-file itu, bahkan ketika `claude` di terminal pada mesin tersebut mendapatkannya. Sesi kemudian dapat macet, atau menampilkan **The connection from … to the API failed** atau **Authentication failed**, dan masuk kembali tidak membantu.1001Dalam sesi SSH, Claude Code tidak mendapatkan variabel dari file-file tersebut, meskipun `claude` di terminal di mesin itu mendapatkannya. Sesi kemudian dapat macet, atau menampilkan **The connection from … to the API failed** atau **Authentication failed**, dan masuk kembali tidak membantu.

997 1002 

998**1. Tambahkan variabel**1003**1. Tambahkan variabel**

999 1004 


1028 1033 

1029Mulai ulang mesin jarak jauh, atau keluar dari Desktop dan akhiri proses program pembantu, seperti pada dua langkah pertama untuk [menghapus program pembantu](#files-and-processes-on-the-remote-machine). Lakukan ini saat tidak ada tugas yang berjalan, karena cara mana pun akan menginterupsi pekerjaan Claude.1034Mulai ulang mesin jarak jauh, atau keluar dari Desktop dan akhiri proses program pembantu, seperti pada dua langkah pertama untuk [menghapus program pembantu](#files-and-processes-on-the-remote-machine). Lakukan ini saat tidak ada tugas yang berjalan, karena cara mana pun akan menginterupsi pekerjaan Claude.

1030 1035 

1031#### Menggunakan konfigurasi SSH Anda di macOS dan Linux1036#### Menggunakan konfigurasi SSH Anda

1032 1037 

1033Di macOS dan Linux, Desktop terhubung dengan menjalankan klien OpenSSH di komputer Anda, sehingga menggunakan `~/.ssh/config` Anda. Terhubung melalui klien OpenSSH memerlukan Claude Desktop v1.37937.0 atau yang lebih baru. Masukkan nama `Host` dari file tersebut di bidang **SSH host** untuk menggunakan pengaturan dari entrinya, seperti `HostName`, `User`, `IdentityFile`, `CertificateFile`, `ProxyJump`, dan `ProxyCommand`.1038Anda dapat menggunakan konfigurasi SSH Anda di macOS, Linux, dan Windows ketika Desktop terhubung melalui klien OpenSSH di komputer Anda:

1039 

1040* **macOS dan Linux**: Desktop terhubung dengan menjalankan klien OpenSSH di komputer Anda, sehingga menggunakan `~/.ssh/config` Anda. Terhubung melalui klien OpenSSH memerlukan Claude Desktop v1.37937.0 atau yang lebih baru.

1041* **Windows**: ketika Desktop terhubung melalui klien OpenSSH, Desktop menggunakan `%USERPROFILE%\.ssh\config` Anda. Jika Anda menggunakan akun Claude, bukan penyedia pihak ketiga, terhubung melalui klien OpenSSH memerlukan semua hal berikut:

1042 

1043 * Claude Desktop v2.2553.0 atau yang lebih baru. Untuk menemukan versi Anda, lihat [Memeriksa versi Anda](#check-your-version).

1044 * OpenSSH 9.4 dari Microsoft atau yang lebih baru

1045 * Desktop yang diinstal dengan tombol unduh di bagian atas halaman ini, karena Desktop dari Microsoft Store tidak terhubung melalui klien OpenSSH

1046 

1047 Jika Anda tidak dapat memenuhi persyaratan ini, atau Anda menggunakan penyedia pihak ketiga, lihat [Terhubung di Windows tanpa klien OpenSSH](#connect-on-windows-without-the-openssh-client).

1048 

1049Dengan klien OpenSSH, masukkan nama `Host` dari file konfigurasi Anda di kolom **SSH host**. Desktop kemudian menggunakan pengaturan dari entri `Host` tersebut, seperti `HostName`, `User`, `IdentityFile`, `CertificateFile`, `ProxyJump`, dan `ProxyCommand`.

1034 1050 

1035Sebelum Anda menambahkan koneksi, periksa klien dan entri tersebut di terminal pada komputer Anda:1051Sebelum Anda menambahkan koneksi, periksa klien dan entri tersebut di terminal pada komputer Anda:

1036 1052 

1037* **Versi klien**: jalankan `ssh -V`. Klien harus OpenSSH 7.6 atau yang lebih baru.1053* **Versi klien di macOS dan Linux**: jalankan `ssh -V`. Klien harus OpenSSH 7.6 atau yang lebih baru.

1038* **Entri**: jalankan `ssh` dengan nama `Host`, seperti `ssh devbox`. Jika gagal, perbaiki entri tersebut terlebih dahulu.1054* **Versi klien di Windows**: Desktop mencoba `ssh` di `PATH` Anda terlebih dahulu, jadi jalankan `ssh -V`. Klien lolos jika output menampilkan `OpenSSH_for_Windows_` dan 9.4 atau yang lebih baru. Jika tidak lolos, periksa dua folder yang dicoba Desktop berikutnya: jalankan `.\ssh.exe -V` di `C:\Windows\System32\OpenSSH`, lalu di `C:\Program Files\OpenSSH`.

1055* **Tidak ada klien yang lolos di Windows**: tambahkan fitur opsional **OpenSSH Client** di Windows dan instal pembaruan Windows yang tertunda, atau instal [build yang lebih baru dari Microsoft](https://learn.microsoft.com/en-us/troubleshoot/windows-server/system-management-components/upgrade-in-box-openssh-to-latest-openssh-release). Lalu keluar dan buka kembali Desktop. Untuk melihat apakah Desktop menemukan klien OpenSSH yang dapat digunakan, cari di [`ssh.log`](#get-desktops-logs-for-an-ssh-problem) untuk `Windows OpenSSH client:` beserta versinya, atau untuk `no usable Windows OpenSSH client`.

1056* **Entri**: di Windows, gunakan klien yang lolos pemeriksaan versi. Jalankan `ssh` dengan nama `Host`, seperti `ssh devbox`. Jika gagal, perbaiki entri terlebih dahulu.

1039 1057 

1040Anda dapat membiarkan bidang **SSH port** dan **SSH key (optional)** kosong. Jika Anda mengisi salah satunya, Desktop menggunakannya bersama entri tersebut:1058Anda dapat membiarkan bidang **SSH port** dan **SSH key (optional)** kosong. Jika Anda mengisi salah satunya, Desktop menggunakannya bersama entri tersebut:

1041 1059 

1042* **SSH port**: nilai di sini menimpa `Port` milik entri1060* **SSH port**: nilai di sini menimpa `Port` milik entri

1043* **SSH key (optional)**: Desktop menawarkan file kunci yang Anda pilih sebagai tambahan dari `IdentityFile` milik entri dan kunci-kunci di SSH agent Anda1061* **SSH key (optional)**: dengan klien OpenSSH, Desktop menawarkan file kunci yang Anda pilih selain `IdentityFile` entri dan kunci di SSH agent Anda. Di Windows, pilih kunci dalam format OpenSSH, karena `ssh` tidak membaca file PuTTY `.ppk`.

1062 

1063##### Terhubung di Windows tanpa klien OpenSSH

1064 

1065Di Windows, Anda terhubung melalui klien SSH bawaan Desktop jika komputer Anda tidak memenuhi [persyaratan untuk klien OpenSSH](#use-your-ssh-configuration). Dengan penyedia pihak ketiga, Anda terhubung melalui klien bawaan secara default, dan administrator Anda dapat mengubahnya. Untuk pengaturannya, lihat [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).

1066 

1067Dengan klien bawaan, Anda tetap dapat memasukkan nama `Host` dari konfigurasi SSH Anda di kolom **SSH host** jika `PATH` Anda memiliki perintah `ssh`, dengan batasan berikut:

1068 

1069* **Pengaturan dari entri**: Desktop mengambil `HostName`, `User`, `Port`, dan `IdentityFile`. Desktop juga mengambil `ProxyCommand` jika shell `sh` ada di `PATH` Anda.

1070* **SSH key (optional)**: kosongkan kolom ini untuk mempertahankan `IdentityFile` entri, karena file kunci yang Anda pilih di sini menggantikan `IdentityFile`

1071* **`CertificateFile` dan `ProxyJump`**: Desktop mengabaikan `CertificateFile`, dan koneksi gagal jika entri menetapkan `ProxyJump`. Untuk menggunakan salah satu pengaturan tersebut, [terhubunglah melalui klien OpenSSH](#use-your-ssh-configuration).

1044 1072 

1045##### Menjangkau mesin di balik jump host1073##### Menjangkau mesin di balik jump host

1046 1074 


1095 1123 

1096##### Menggunakan variabel dari shell Anda dalam `ProxyCommand`1124##### Menggunakan variabel dari shell Anda dalam `ProxyCommand`

1097 1125 

1098Untuk menggunakan environment variable milik Anda sendiri dalam perintah `ProxyCommand` atau `Match exec`, ekspor variabel tersebut di file startup shell, seperti `~/.zshrc`, lalu keluar dari Desktop dan buka kembali. Saat Desktop dimulai, Desktop membaca apa yang diekspor oleh login shell Anda, dan menyimpan nilai-nilai tersebut hingga Anda keluar.1126Di macOS dan Linux, untuk menggunakan environment variable Anda sendiri di perintah `ProxyCommand` atau `Match exec`, ekspor variabel tersebut di file startup shell, seperti `~/.zshrc`. Lalu keluar dan buka kembali Desktop. Saat Desktop dimulai, Desktop membaca apa yang diekspor login shell Anda, dan menyimpan nilai tersebut hingga Anda keluar.

1099 1127 

1100Hal ini memerlukan Claude Desktop v2.37337.0 atau yang lebih baru dan perintah `env` yang menerima `-0`, yang dapat Anda periksa dengan menjalankan `env -0` di terminal pada komputer Anda.1128Hal ini memerlukan Claude Desktop v2.37337.0 atau yang lebih baru dan perintah `env` yang menerima `-0`, yang dapat Anda periksa dengan menjalankan `env -0` di terminal pada komputer Anda.

1101 1129 


1103>1131>

1104> Jika shell Anda mengatur kredensial AWS sementara, [berikan profil kepada AWS CLI](#use-aws-credentials-in-a-proxycommand) alih-alih mengekspor variabel `AWS_*`.1132> Jika shell Anda mengatur kredensial AWS sementara, [berikan profil kepada AWS CLI](#use-aws-credentials-in-a-proxycommand) alih-alih mengekspor variabel `AWS_*`.

1105 1133 

1106##### Menggunakan kredensial AWS dalam `ProxyCommand`1134##### Menggunakan kredensial AWS di `ProxyCommand` di macOS dan Linux

1107 1135 

1108Jika Anda mengatur kredensial AWS sementara di file startup shell, `ProxyCommand` yang menjalankan AWS CLI dapat terhubung di terminal tetapi gagal di Desktop. Saat shell Anda mengekspor `AWS_SESSION_TOKEN`, `AWS_SECURITY_TOKEN`, atau `AWS_CREDENTIAL_EXPIRATION`, `ssh` dan `ProxyCommand` Anda di Desktop tidak mendapatkan kredensial AWS, `AWS_REGION`, atau `AWS_PROFILE` dari shell.1136Jika Anda mengatur kredensial AWS sementara di file startup shell, `ProxyCommand` yang menjalankan AWS CLI dapat terhubung di terminal tetapi gagal di Desktop. Saat shell Anda mengekspor `AWS_SESSION_TOKEN`, `AWS_SECURITY_TOKEN`, atau `AWS_CREDENTIAL_EXPIRATION`, `ssh` dan `ProxyCommand` Anda di Desktop tidak mendapatkan kredensial AWS, `AWS_REGION`, atau `AWS_PROFILE` dari shell.

1109 1137 


1242 1270 

1243##### Mempersiapkan tugas yang panjang1271##### Mempersiapkan tugas yang panjang

1244 1272 

1245* **Perbarui terlebih dahulu**: perbarui Desktop sebelum Anda memulai tugas yang panjang. Di macOS dan Windows, Desktop dapat memulai ulang dengan sendirinya untuk menginstal pembaruan yang telah diunduhnya. Restart tersebut menunggu selama Claude sedang mengerjakan tugas SSH. Di macOS dengan akun Claude, secara default restart tetap dapat dilakukan setelah pembaruan menunggu selama 72 jam.1273* **Perbarui terlebih dahulu**: perbarui Desktop sebelum Anda memulai tugas panjang. Di macOS dan Windows, Desktop dapat memulai ulang sendiri untuk menginstal pembaruan yang telah diunduhnya. Mulai ulang tersebut menunggu saat Claude sedang mengerjakan tugas SSH. Secara default, setelah pembaruan menunggu 72 jam, mulai ulang dapat dilanjutkan selama tugas berjalan jika Desktop dapat [bergabung kembali ke tugas sesudahnya](#reopen-a-session-after-you-quit-desktop).

1246* **Jangan keluar di Windows, atau sebelum v2.42304.0 dengan penyedia pihak ketiga**: setelah keluar di sana, Anda kehilangan tugas yang sedang berjalan, jadi biarkan Desktop tetap terbuka selama tugas berlangsung. Dalam kasus lain, lihat [apa yang Anda dapatkan kembali](#reopen-a-session-after-you-quit-desktop) sebelum Anda keluar.1274* **Periksa sebelum Anda keluar**: Anda tidak selalu mendapatkan kembali tugas yang berjalan setelah keluar atau memulai ulang, misalnya setelah beberapa pembaruan Desktop. Untuk kasus-kasusnya, lihat [Membuka kembali sesi setelah Anda keluar dari Desktop](#reopen-a-session-after-you-quit-desktop).

1275* **Pada versi lama, biarkan Desktop tetap terbuka**: di Windows dengan Claude Desktop sebelum v3.1623.0, Anda tidak mendapatkan kembali tugas yang berjalan setelah Desktop keluar atau dimulai ulang. Hal yang sama berlaku dengan penyedia pihak ketiga di macOS atau Linux sebelum v2.42304.0. Dalam kedua kasus, biarkan Desktop tetap terbuka selama tugas berjalan. Untuk menemukan versi Anda, lihat [Memeriksa versi Anda](#check-your-version).

1247* **Kurangi permintaan**: pilih mode izin, aturan, atau hook yang [membuat tugas lebih jarang menunggu Anda](#handle-requests-that-arrive-while-you-are-away)1276* **Kurangi permintaan**: pilih mode izin, aturan, atau hook yang [membuat tugas lebih jarang menunggu Anda](#handle-requests-that-arrive-while-you-are-away)

1248* **Periksa jump host**: jika jump host Anda meminta proses masuk, misalnya push ke ponsel, beralihlah ke metode login yang berfungsi tanpa prompt. Jika tidak, Desktop dapat mengirim push lain setiap kali mencoba terhubung kembali.1277* **Periksa jump host**: jika jump host Anda meminta proses masuk, misalnya push ke ponsel, beralihlah ke metode login yang berfungsi tanpa prompt. Jika tidak, Desktop dapat mengirim push lain setiap kali mencoba terhubung kembali.

1249* **Uji mesin jarak jauh**: mulai tugas singkat, keluar dari Desktop saat tugas masih berjalan, lalu buka sesi lagi jauh setelah tugas seharusnya selesai. Jika tugas belum selesai dan sesi tidak menampilkan error autentikasi, periksa mesin jarak jauh untuk [hal-hal yang dapat mengakhiri tugas](#limits-while-desktop-is-disconnected).1278* **Uji mesin jarak jauh**: mulai tugas singkat, keluar dari Desktop saat tugas masih berjalan, lalu buka sesi lagi jauh setelah tugas seharusnya selesai. Jika tugas belum selesai dan sesi tidak menampilkan error autentikasi, periksa mesin jarak jauh untuk [hal-hal yang dapat mengakhiri tugas](#limits-while-desktop-is-disconnected).


1320 1349 

1321Setelah Anda keluar dari Desktop, tugas tetap berjalan di mesin jarak jauh, tetapi berhenti ketika sesi dibuka lagi kecuali Desktop dapat bergabung kembali ke prosesnya. Selama Desktop ditutup, tugas berjalan hingga selesai, membutuhkan Anda, atau mencapai salah satu [batasan](#limits-while-desktop-is-disconnected).1350Setelah Anda keluar dari Desktop, tugas tetap berjalan di mesin jarak jauh, tetapi berhenti ketika sesi dibuka lagi kecuali Desktop dapat bergabung kembali ke prosesnya. Selama Desktop ditutup, tugas berjalan hingga selesai, membutuhkan Anda, atau mencapai salah satu [batasan](#limits-while-desktop-is-disconnected).

1322 1351 

1323* **Desktop di Windows**: Anda tidak mendapatkan kembali tugas yang sedang berjalan, karena Desktop tidak pernah bergabung kembali setelah keluar. Mulai Desktop lagi hanya ketika Anda memperkirakan tugas sudah selesai, karena sesi dapat terbuka saat Desktop dimulai.1352* **Desktop di Windows, tugas dimulai pada versi sebelum v3.1623.0**: Anda tidak mendapatkan kembali tugas tersebut, meskipun Desktop telah diperbarui sejak itu. Mulai Desktop lagi hanya ketika Anda memperkirakan tugas sudah selesai, karena sesi dapat terbuka saat Desktop dimulai, dan tugas berhenti ketika sesi terbuka. Jika Anda tidak tahu di versi mana Anda memulai tugas, tunggu juga hingga Anda memperkirakan tugas sudah selesai.

1324* **Penyedia pihak ketiga, tugas dari versi sebelumnya**: jika Anda memulai tugas di versi Desktop sebelum v2.42304.0, Anda juga tidak mendapatkannya kembali di macOS atau Linux. Mulai Desktop lagi hanya ketika Anda memperkirakan tugas sudah selesai.1353* **Penyedia pihak ketiga di macOS atau Linux, tugas dimulai pada versi sebelum v2.42304.0**: Anda tidak mendapatkan kembali tugas tersebut. Mulai Desktop lagi hanya ketika Anda memperkirakan tugas sudah selesai.

1325* **Tugas lainnya, dengan Desktop di macOS atau Linux**: mulai Desktop dan buka sesi, dan tugas berlanjut jika Desktop bergabung kembali. Desktop tidak selalu dapat bergabung kembali, misalnya setelah beberapa pembaruan Desktop, jadi [perbarui sebelum tugas panjang](#prepare-a-long-task).1354* **Tugas lainnya**: mulai Desktop dan buka sesi, dan tugas berlanjut jika Desktop bergabung kembali. Desktop tidak selalu dapat bergabung kembali, misalnya setelah beberapa pembaruan Desktop, jadi [perbarui sebelum tugas panjang](#prepare-a-long-task).

1326 1355 

1327Ketika Desktop tidak dapat bergabung kembali, Anda juga kehilangan persetujuan atau pertanyaan apa pun yang sedang menunggu Anda. Jika tugas tidak berlanjut dengan sendirinya, kirim pesan, dan Claude melanjutkan dari riwayat percakapan yang tersimpan.1356Ketika tugas berhenti, sesi dapat menampilkan `Restarting Claude Code on <host>…` saat Desktop memulai proses baru. Anda juga kehilangan persetujuan atau pertanyaan apa pun yang sedang menunggu Anda. Jika Claude tidak melanjutkan sendiri, kirim pesan, dan Claude melanjutkan dari riwayat percakapan yang tersimpan.

1328 1357 

1329Untuk deployment pihak ketiga, lihat [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).1358Untuk deployment pihak ketiga, lihat [SSH remote sessions in Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions).

1330 1359 


1411 1440 

1412Untuk mengetahui siapa yang terhubung ke mesin jarak jauh, baca log server SSH di mesin tersebut, tempat login dari Desktop terlihat seperti login dari terminal. Dengan Desktop di macOS atau Linux, perkirakan satu entri setiap kali Desktop terhubung, bukan satu entri untuk setiap sesi.1441Untuk mengetahui siapa yang terhubung ke mesin jarak jauh, baca log server SSH di mesin tersebut, tempat login dari Desktop terlihat seperti login dari terminal. Dengan Desktop di macOS atau Linux, perkirakan satu entri setiap kali Desktop terhubung, bukan satu entri untuk setiap sesi.

1413 1442 

1443Jika server menetapkan `MaxSessions 1`, akan ada setidaknya dua entri setiap kali Desktop terhubung atau terhubung kembali. Akan ada setidaknya satu entri tambahan untuk setiap tab terminal, dan untuk setiap sesi Desktop tempat Anda menjalankan perintah yang diawali dengan `!`.

1444 

1414Anda tidak akan menemukan koneksi SSH Desktop di [metrik dan event](https://code.claude.com/docs/id/monitoring-usage.md#available-metrics-and-events) Claude Code. Untuk mengetahui dari metrik dan event tersebut di mesin jarak jauh mana sebuah sesi SSH berjalan, lihat [Mengatribusikan telemetri ke sesi SSH Desktop](https://code.claude.com/docs/id/monitoring-usage.md#attribute-telemetry-to-desktop-ssh-sessions). Untuk riwayat koneksi yang direkam Desktop sendiri, lihat [Mendapatkan log Desktop untuk masalah SSH](#get-desktops-logs-for-an-ssh-problem).1445Anda tidak akan menemukan koneksi SSH Desktop di [metrik dan event](https://code.claude.com/docs/id/monitoring-usage.md#available-metrics-and-events) Claude Code. Untuk mengetahui dari metrik dan event tersebut di mesin jarak jauh mana sebuah sesi SSH berjalan, lihat [Mengatribusikan telemetri ke sesi SSH Desktop](https://code.claude.com/docs/id/monitoring-usage.md#attribute-telemetry-to-desktop-ssh-sessions). Untuk riwayat koneksi yang direkam Desktop sendiri, lihat [Mendapatkan log Desktop untuk masalah SSH](#get-desktops-logs-for-an-ssh-problem).

1415 1446 

1416#### Koneksi yang ditutup sebelum login1447#### Koneksi yang ditutup sebelum login


2112| - | - | - |2143| - | - | - |

2113| `<host>'s SSH server has SFTP turned off` | `[SFTP_UNAVAILABLE]` | Aktifkan SFTP di `sshd_config` server, seperti yang dijelaskan dalam [remote machine requirements](#remote-machine-requirements-for-ssh-sessions) |2144| `<host>'s SSH server has SFTP turned off` | `[SFTP_UNAVAILABLE]` | Aktifkan SFTP di `sshd_config` server, seperti yang dijelaskan dalam [remote machine requirements](#remote-machine-requirements-for-ssh-sessions) |

2114| `SFTP doesn't start on <host>` | `[SFTP_NOT_STARTED]` | Hubungkan ke host yang sama dengan `sftp` di terminal pada komputer Anda untuk melihat apa yang menghentikannya, lalu periksa pengaturan dan file yang disebutkan dalam pesan Desktop |2145| `SFTP doesn't start on <host>` | `[SFTP_NOT_STARTED]` | Hubungkan ke host yang sama dengan `sftp` di terminal pada komputer Anda untuk melihat apa yang menghentikannya, lalu periksa pengaturan dan file yang disebutkan dalam pesan Desktop |

2115| `<host> allows too few SSH sessions per connection` | `[SESSION_LIMIT]` | Naikkan `MaxSessions` di `sshd_config` server, misalnya ke nilai default OpenSSH yaitu 10 |2146| `<host> allows too few SSH sessions per connection` | `[SESSION_LIMIT]` | Perbarui ke Claude Desktop v3.1623.0 atau yang lebih baru, atau naikkan `MaxSessions` di `sshd_config` server, misalnya ke nilai default OpenSSH yaitu 10 |

2116| `<host> is out of disk space` | `[ENOSPC]` atau `[EDQUOT]` | Kosongkan ruang atau kuota di mesin remote, di direktori home Anda atau `/tmp` |2147| `<host> is out of disk space` | `[ENOSPC]` atau `[EDQUOT]` | Kosongkan ruang atau kuota di mesin remote, di direktori home Anda atau `/tmp` |

2117| `Free up disk space on this computer` | `[ENOSPC]` atau `[EDQUOT]`, dalam pesan yang diawali dengan `Couldn't prepare the deploy locally` | Kosongkan ruang di komputer Anda |2148| `Free up disk space on this computer` | `[ENOSPC]` atau `[EDQUOT]`, dalam pesan yang diawali dengan `Couldn't prepare the deploy locally` | Kosongkan ruang di komputer Anda |

2118| `Claude Code won't start on <host>` | `[CLI_UNRESPONSIVE]` | Tunggu sebentar, lalu coba lagi. Jika terus gagal, jalankan perintah yang disebutkan dalam pesan di mesin remote untuk melihat apakah Claude Code merespons di sana. |2149| `Claude Code won't start on <host>` | `[CLI_UNRESPONSIVE]` | Tunggu sebentar, lalu coba lagi. Jika terus gagal, jalankan perintah yang disebutkan dalam pesan di mesin remote untuk melihat apakah Claude Code merespons di sana. |

errors.md +2 −0

Details

327| `Cannot read this as an image: <path> is a pipe or a device` | [Tool errors](#file-is-too-large-to-read-as-an-image) |327| `Cannot read this as an image: <path> is a pipe or a device` | [Tool errors](#file-is-too-large-to-read-as-an-image) |

328| `subagent_type is required: the general-purpose agent is not available in this session` | [Tool errors](#subagent-type-is-required) |328| `subagent_type is required: the general-purpose agent is not available in this session` | [Tool errors](#subagent-type-is-required) |

329| `Error: this write left the memory index at MEMORY.md at ..., over its ... read limit` | [Tool errors](#memory-index-is-over-its-read-limit) |329| `Error: this write left the memory index at MEMORY.md at ..., over its ... read limit` | [Tool errors](#memory-index-is-over-its-read-limit) |

330| `Sandbox is required but failed to initialize: <reason>` | [Pemecahan masalah sandboxing](https://code.claude.com/docs/id/sandboxing.md#commands-refused-with-sandbox-is-required) |

331| `Sandbox is required (sandbox.failIfUnavailable) and stopped being available in this session: <reason>` | [Pemecahan masalah sandboxing](https://code.claude.com/docs/id/sandboxing.md#commands-refused-with-sandbox-is-required) |

330| `pkill: refusing to run` | [Tool errors](#pkill-pattern-matches-the-claude-code-process) |332| `pkill: refusing to run` | [Tool errors](#pkill-pattern-matches-the-claude-code-process) |

331| `Failed to write to <name>'s inbox — nothing was sent` | [Tool errors](#failed-to-write-to-a-teammate-inbox) |333| `Failed to write to <name>'s inbox — nothing was sent` | [Tool errors](#failed-to-write-to-a-teammate-inbox) |

332| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Tool errors](#failed-to-write-to-a-teammate-inbox) |334| `Failed to write the plan approval request to the lead's inbox — plan not submitted` | [Tool errors](#failed-to-write-to-a-teammate-inbox) |

fast-mode.md +2 −2

Details

80 80 

81Harga mode cepat datar di seluruh jendela konteks 1M token penuh. Untuk tarif Opus standar yang akan dibandingkan, lihat [referensi harga Claude](https://platform.claude.com/docs/id/about-claude/pricing).81Harga mode cepat datar di seluruh jendela konteks 1M token penuh. Untuk tarif Opus standar yang akan dibandingkan, lihat [referensi harga Claude](https://platform.claude.com/docs/id/about-claude/pricing).

82 82 

83Pertama kali Anda mengaktifkan fast mode dalam percakapan, Anda membayar harga token input tanpa cache fast mode penuh untuk seluruh konteks percakapan. Semakin dalam Anda berada dalam percakapan, semakin mahal biayanya, jadi mengaktifkan fast mode dari awal lebih murah. Biaya diterapkan sekali per percakapan, jadi mematikan dan menyalakan kembali fast mode nanti tidak mengulanginya. Untuk mekanismenya, lihat [bagaimana fast mode berinteraksi dengan prompt cache](https://code.claude.com/docs/id/prompt-caching.md#turning-on-fast-mode).83Pertama kali Anda mengaktifkan fast mode dalam percakapan, Anda membayar harga token input tanpa cache fast mode penuh untuk seluruh konteks percakapan. Semakin dalam Anda berada dalam percakapan, semakin mahal biayanya, jadi biaya ini paling kecil ketika Anda mengaktifkan fast mode di awal. Fast mode dan kecepatan standar menyimpan [cache terpisah](https://code.claude.com/docs/id/prompt-caching.md#turning-on-fast-mode), sehingga setiap peralihan berikutnya membaca sebagian atau seluruh percakapan tanpa cache lagi.

84 84 

85### Lihat di mana pengeluaran mode cepat muncul85### Lihat di mana pengeluaran mode cepat muncul

86 86 


167 167 

168Di balik gateway, periksa konfigurasi berikut, di mana Claude Code tidak mengirim pemeriksaan ketersediaan dan tidak memiliki pemeriksaan berhasil sebelumnya yang di-cache:168Di balik gateway, periksa konfigurasi berikut, di mana Claude Code tidak mengirim pemeriksaan ketersediaan dan tidak memiliki pemeriksaan berhasil sebelumnya yang di-cache:

169 169 

170* Anda mengarahkan `ANTHROPIC_BASE_URL` ke gateway Anda dan menetapkan [`ANTHROPIC_API_KEY`](https://code.claude.com/docs/id/llm-gateway-connect#set-the-base-url-and-credential) ke kunci yang dikeluarkan gateway yang tidak berformat kunci API Anthropic. Claude Code tidak mengirimkan kunci seperti itu ke `api.anthropic.com`.170* Anda mengarahkan `ANTHROPIC_BASE_URL` ke gateway Anda dan menetapkan [`ANTHROPIC_API_KEY`](https://code.claude.com/docs/id/llm-gateway-connect#set-the-base-url-and-credential) ke kunci yang dikeluarkan gateway yang tidak berformat kunci API Anthropic.

171* Anda menetapkan [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/id/env-vars), sehingga Claude Code melewati pemeriksaan.171* Anda menetapkan [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](https://code.claude.com/docs/id/env-vars), sehingga Claude Code melewati pemeriksaan.

172 172 

173Untuk mengembalikan fast mode dalam kedua konfigurasi tersebut, atur `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`.173Untuk mengembalikan fast mode dalam kedua konfigurasi tersebut, atur `CLAUDE_CODE_SKIP_FAST_MODE_NETWORK_ERRORS=1`.

Details

262 262 

263**Biaya konteks:** Rendah sampai digunakan. Skills hanya pengguna memiliki biaya nol sampai dipanggil.263**Biaya konteks:** Rendah sampai digunakan. Skills hanya pengguna memiliki biaya nol sampai dipanggil.

264 264 

265**Di subagent:** Skills bekerja berbeda di subagent. Alih-alih pemuatan on-demand, skills yang tercantum di field `skills` subagent sepenuhnya dimuat sebelumnya ke konteksnya saat peluncuran. Subagent masih dapat menemukan dan memanggil skills proyek, pengguna, dan plugin yang tidak tercantum melalui tool Skill.265**Di subagent:** Konten penuh skills yang tercantum di field `skills` subagent [dimuat ke konteksnya saat peluncuran](https://code.claude.com/docs/id/sub-agents.md#preload-skills-into-subagents), bukan on demand. Subagent masih dapat menemukan dan memanggil skills proyek, pengguna, dan plugin yang tidak tercantum melalui tool Skill.

266 266 

267> [!TIP]267> [!TIP]

268>268>

glossary.md +2 −2

Details

120 120 

121### Compaction121### Compaction

122 122 

123Ringkasan otomatis percakapan Anda ketika [context window](#context-window) mendekati batasnya. Output tool yang lebih lama dihapus terlebih dahulu, kemudian percakapan diringkas. Project-root CLAUDE.md dan auto memory bertahan compaction dan dimuat ulang dari disk; instruksi yang diberikan hanya dalam percakapan mungkin hilang. Jalankan `/compact` untuk memicu secara manual, secara opsional dengan fokus seperti `/compact focus on the API changes`.123Ringkasan otomatis percakapan Anda ketika [context window](#context-window) mendekati batasnya. Project-root CLAUDE.md dan auto memory bertahan compaction, tetapi instruksi yang diberikan hanya dalam percakapan mungkin tidak. Jalankan `/compact` untuk memicu secara manual, secara opsional dengan fokus seperti `/compact focus on the API changes`.

124 124 

125Pelajari lebih lanjut: [What survives compaction](https://code.claude.com/docs/id/context-window.md#what-survives-compaction) · [When context fills up](https://code.claude.com/docs/id/how-claude-code-works.md#when-context-fills-up)125Pelajari lebih lanjut: [What survives compaction](https://code.claude.com/docs/id/context-window.md#what-survives-compaction) · [When context fills up](https://code.claude.com/docs/id/how-claude-code-works.md#when-context-fills-up) · [Kapan Claude Code melakukan compaction pada percakapan yang Anda biarkan menganggur](https://code.claude.com/docs/id/settings-reference.md#idlecompaction)

126 126 

127### Connector127### Connector

128 128 

hooks.md +15 −5

Details

1426 1426 

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

1428 1428 

1429Hook Setup memiliki akses ke `CLAUDE_ENV_FILE`. Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya dalam sesi, 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).1429Hook Setup memiliki akses ke `CLAUDE_ENV_FILE`. Jika hook Anda menulis variabel ke file tersebut, variabel itu bertahan ke perintah Bash berikutnya dalam sesi, seperti pada [hook SessionStart](#persist-environment-variables). Hanya hook `type: "command"` yang berjalan pada `Setup`. Hook `type: "mcp_tool"` pada `Setup` selalu dilewati, seperti yang dijelaskan di [Field hook tool MCP](#mcp-tool-hook-fields).

1430 1430 

1431### InstructionsLoaded1431### InstructionsLoaded

1432 1432 


1483 1483 

1484[Hook callback Agent SDK](https://code.claude.com/docs/id/agent-sdk/hooks.md) 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.1484[Hook callback Agent SDK](https://code.claude.com/docs/id/agent-sdk/hooks.md) 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.

1485 1485 

1486#### `Esc` selama pemeriksaan prompt

1487 

1488Jika Anda menekan `Esc` atau menginterupsi sesi saat hook masih memeriksa prompt, pemeriksaan berhenti dan prompt tidak sampai ke Claude. Teks yang Anda ketik di terminal kembali ke input prompt, dan hook memeriksanya lagi saat Anda mengirimnya ulang.

1489 

1490Hook dapat memblokir prompt pada saat yang sama dengan Anda menginterupsi. Prompt kemudian tetap terblokir: Anda melihat [pesan blokir](#what-a-blocked-prompt-leaves-behind) dari hook tersebut, dan teks tidak kembali ke input.

1491 

1486#### Input UserPromptSubmit1492#### Input UserPromptSubmit

1487 1493 

1488Selain [kolom input umum](#common-input-fields), hook UserPromptSubmit menerima kolom `prompt` yang berisi teks yang dikirim. Konten tempelan yang diringkas menjadi placeholder `[Pasted text #N]` tiba dalam keadaan sudah diperluas di tempatnya. Dalam sesi tempat Claude Code [menandai teks tempelan untuk Claude](https://code.claude.com/docs/id/terminal-config.md#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.1494Selain [kolom input umum](#common-input-fields), hook UserPromptSubmit menerima kolom `prompt` yang berisi teks yang dikirim. Konten tempelan yang diringkas menjadi placeholder `[Pasted text #N]` tiba dalam keadaan sudah diperluas di tempatnya. Dalam sesi tempat Claude Code [menandai teks tempelan untuk Claude](https://code.claude.com/docs/id/terminal-config.md#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.


1741 1747 

1742Gunakan [kontrol keputusan PreToolUse](#pretooluse-decision-control) untuk mengizinkan, menolak, meminta konfirmasi, atau menangguhkan panggilan tool.1748Gunakan [kontrol keputusan PreToolUse](#pretooluse-decision-control) untuk mengizinkan, menolak, meminta konfirmasi, atau menangguhkan panggilan tool.

1743 1749 

1744[Hook callback Agent SDK](https://code.claude.com/docs/id/agent-sdk/hooks.md) pada `PreToolUse` yang melebihi timeout-nya memblokir panggilan tool, dan Claude menerima hasil error yang menyebutkan timeout tersebut.1750[Hook callback Agent SDK](https://code.claude.com/docs/id/agent-sdk/hooks.md#hook-timeout) pada `PreToolUse` yang melampaui timeout-nya akan memblokir panggilan tool.

1745 1751 

1746#### Input PreToolUse1752#### Input PreToolUse

1747 1753 


2970 2976 

2971Berjalan ketika perintah shell dalam percakapan utama mengubah direktori kerja, misalnya ketika Claude mengeksekusi perintah `cd`. Gunakan ini untuk bereaksi terhadap perubahan direktori: memuat ulang environment variable, mengaktifkan toolchain khusus proyek, atau menjalankan skrip penyiapan secara otomatis. Berpasangan dengan [FileChanged](#filechanged) untuk alat seperti [direnv](https://direnv.net/) yang mengelola lingkungan per direktori.2977Berjalan ketika perintah shell dalam percakapan utama mengubah direktori kerja, misalnya ketika Claude mengeksekusi perintah `cd`. Gunakan ini untuk bereaksi terhadap perubahan direktori: memuat ulang environment variable, mengaktifkan toolchain khusus proyek, atau menjalankan skrip penyiapan secara otomatis. Berpasangan dengan [FileChanged](#filechanged) untuk alat seperti [direnv](https://direnv.net/) yang mengelola lingkungan per direktori.

2972 2978 

2973Hook 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.2979Hook CwdChanged memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Jika hook Anda menulis variabel ke file tersebut, variabel tersebut bertahan ke perintah Bash berikutnya hingga event CwdChanged berikutnya, ketika Claude Code menghapusnya.

2974 2980 

2975CwdChanged tidak mendukung matcher dan dipicu pada setiap kejadian.2981CwdChanged tidak mendukung matcher dan dipicu pada setiap kejadian.

2976 2982 


3135* Claude Code mengisolasi [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md#how-file-edits-are-isolated) di worktree-nya sendiri3141* Claude Code mengisolasi [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md#how-file-edits-are-isolated) di worktree-nya sendiri

3136* [`claude remote-control`](https://code.claude.com/docs/id/remote-control#start-a-remote-control-session) dalam mode `worktree` memulai sesi di worktree-nya sendiri3142* [`claude remote-control`](https://code.claude.com/docs/id/remote-control#start-a-remote-control-session) dalam mode `worktree` memulai sesi di worktree-nya sendiri

3137 3143 

3138Ketika Claude menjalankan `git worktree add` melalui tool Bash alih-alih memanggil `EnterWorktree`, hook WorktreeCreate Anda tidak berjalan. Untuk memeriksa atau memblokir perintah tersebut, tambahkan hook [`PreToolUse`](#pretooluse) dengan matcher `Bash`.3144Hook WorktreeCreate tidak berjalan untuk worktree yang ditambahkan Claude melalui Bash, dan hook dari plugin tidak berjalan untuk worktree yang dibuat ketika Anda meluncurkan dengan `--worktree` dan [`--tmux`](https://code.claude.com/docs/id/cli-reference#cli-flags):

3145 

3146* **`git worktree add` melalui Bash**: untuk memeriksa atau memblokir perintah tersebut, tambahkan hook [`PreToolUse`](#pretooluse) dengan matcher `Bash`.

3147* **`--worktree` dengan `--tmux`**: Claude Code membuat worktree sebelum memuat plugin, sehingga hook WorktreeCreate dari plugin tidak berjalan. Agar hook Anda berjalan dengan kedua flag tersebut, definisikan hook di [file pengaturan](#configuration) sebagai gantinya. Sebelum v2.1.300, hook WorktreeCreate dari plugin juga tidak berjalan dengan `--worktree` saja.

3139 3148 

3140Secara default, Claude Code membuat salinan kerja terisolasi dengan `git worktree`. Mengonfigurasi hook WorktreeCreate menggantikan perilaku git default tersebut, sehingga Anda dapat menggunakan sistem kontrol versi lain seperti SVN, Perforce, atau Mercurial.3149Secara default, Claude Code membuat salinan kerja terisolasi dengan `git worktree`. Mengonfigurasi hook WorktreeCreate menggantikan perilaku git default tersebut, sehingga Anda dapat menggunakan sistem kontrol versi lain seperti SVN, Perforce, atau Mercurial.

3141 3150 


4077 4086 

4078Ketika async hook dijalankan, Claude Code memulai proses hook dan segera melanjutkan tanpa menunggu selesai. Hook menerima JSON input yang sama melalui stdin seperti hook sinkron.4087Ketika async hook dijalankan, Claude Code memulai proses hook dan segera melanjutkan tanpa menunggu selesai. Hook menerima JSON input yang sama melalui stdin seperti hook sinkron.

4079 4088 

4080Setelah proses latar belakang keluar, Claude Code mengirimkan bidang `additionalContext` dan `systemMessage` dari respons JSON hook ke Claude pada turn percakapan berikutnya. Tidak seperti `systemMessage` hook sinkron, tidak ada bidang yang ditampilkan kepada Anda.4089Setelah proses latar belakang keluar, Claude Code mengirimkan bidang `additionalContext` dan `systemMessage` dari respons JSON hook ke Claude pada giliran percakapan berikutnya, kecuali untuk [output `SessionStart` yang berulang](#limitations). Tidak seperti `systemMessage` hook sinkron, tidak ada bidang yang ditampilkan kepada Anda.

4081 4090 

4082Cetak respons JSON sendirian di stdout atau pada satu barisnya sendiri:4091Cetak respons JSON sendirian di stdout atau pada satu barisnya sendiri:

4083 4092 


4145 4154 

4146* Output hook disampaikan pada turn percakapan berikutnya. Jika sesi idle, respons menunggu sampai interaksi pengguna berikutnya. Pengecualian: hook `asyncRewake` yang keluar dengan kode 2 membangunkan Claude segera bahkan ketika sesi idle.4155* Output hook disampaikan pada turn percakapan berikutnya. Jika sesi idle, respons menunggu sampai interaksi pengguna berikutnya. Pengecualian: hook `asyncRewake` yang keluar dengan kode 2 membangunkan Claude segera bahkan ketika sesi idle.

4147* Setiap eksekusi membuat proses latar belakang terpisah.4156* Setiap eksekusi membuat proses latar belakang terpisah.

4157* Async hook `SessionStart` berjalan setiap kali event dipicu. Claude Code melewati output hook ketika teks `additionalContext` dan `systemMessage` cocok dengan apa yang terakhir diterima Claude dari hook tersebut, kecuali hook `SessionStart` sinkron telah menambahkan teks lain sejak saat itu. Claude Code mengirimkan teks tersebut ketika teksnya berubah, dan sekali lagi saat hook berjalan berikutnya setelah compaction atau `/clear`. Sebelum v2.1.295, Claude Code menambahkan teks yang sama ke percakapan lagi pada setiap resume.

4148 4158 

4149## Pertimbangan keamanan4159## Pertimbangan keamanan

4150 4160 

hooks-guide.md +1 −1

Details

954* Hook `PostToolUse` tidak dapat membatalkan tindakan karena alat sudah dieksekusi.954* Hook `PostToolUse` tidak dapat membatalkan tindakan karena alat sudah dieksekusi.

955* Hook [`PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) aktif ketika Claude Code akan meminta izin kepada Anda, atau ketika Claude Code seharusnya menolak secara otomatis panggilan yang tidak dapat menampilkan permintaan izin. Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan flag `-p`, hook ini tetap berjalan di luar [mode `dontAsk`](https://code.claude.com/docs/id/permission-modes#allow-only-pre-approved-tools-with-dontask-mode), dan panggilan yang tidak diputuskan oleh hook mana pun dan tidak dapat dijawab oleh hal lain akan ditolak.955* Hook [`PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) aktif ketika Claude Code akan meminta izin kepada Anda, atau ketika Claude Code seharusnya menolak secara otomatis panggilan yang tidak dapat menampilkan permintaan izin. Dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dengan flag `-p`, hook ini tetap berjalan di luar [mode `dontAsk`](https://code.claude.com/docs/id/permission-modes#allow-only-pre-approved-tools-with-dontask-mode), dan panggilan yang tidak diputuskan oleh hook mana pun dan tidak dapat dijawab oleh hal lain akan ditolak.

956* Hook `Stop` aktif kapan pun Claude selesai merespons, bukan hanya pada penyelesaian tugas. Mereka tidak aktif pada interupsi pengguna. Kesalahan API menjalankan [StopFailure](https://code.claude.com/docs/id/hooks.md#stopfailure) sebagai gantinya.956* Hook `Stop` aktif kapan pun Claude selesai merespons, bukan hanya pada penyelesaian tugas. Mereka tidak aktif pada interupsi pengguna. Kesalahan API menjalankan [StopFailure](https://code.claude.com/docs/id/hooks.md#stopfailure) sebagai gantinya.

957* Ketika beberapa hook `PreToolUse` mengembalikan [`updatedInput`](https://code.claude.com/docs/id/hooks#pretooluse) untuk menulis ulang argumen alat, yang terakhir selesai menang. Karena hooks berjalan secara paralel, urutannya tidak deterministik. Hindari memiliki lebih dari satu hook memodifikasi input alat yang sama.957* Ketika beberapa hook `PreToolUse` mengembalikan [`updatedInput`](https://code.claude.com/docs/id/hooks#pretooluse) untuk menulis ulang input tool, Claude Code tidak menggabungkan hasil penulisan ulang tersebut atau menjamin hasil penulisan ulang mana yang digunakan saat tool dijalankan. Hindari memiliki lebih dari satu hook yang menulis ulang input tool yang sama.

958 958 

959### Hooks dan mode izin959### Hooks dan mode izin

960 960 

Details

131 131 

132#### When context fills up132#### When context fills up

133 133 

134Claude Code mengelola konteks secara otomatis saat Anda mendekati batas. Claude menghapus output tool yang lebih lama terlebih dahulu, kemudian merangkum percakapan jika diperlukan. Permintaan Anda dan snippet kode kunci dipertahankan; instruksi terperinci dari awal percakapan mungkin hilang. Letakkan aturan persisten di CLAUDE.md daripada mengandalkan riwayat percakapan.134Claude Code mengelola konteks secara otomatis saat Anda mendekati batas. Claude Code melakukan compaction pada percakapan menjadi sebuah ringkasan. Ringkasan tersebut mempertahankan permintaan Anda dan snippet kode kunci, tetapi instruksi terperinci dari awal percakapan mungkin hilang. Letakkan aturan persisten di CLAUDE.md daripada mengandalkan riwayat percakapan.

135 135 

136Untuk mengontrol apa yang dipertahankan selama compacting, tambahkan bagian "Compact Instructions" ke CLAUDE.md atau jalankan `/compact` dengan fokus (seperti `/compact focus on the API changes`).136Untuk mengontrol apa yang dipertahankan selama compacting, tambahkan bagian "Compact Instructions" ke CLAUDE.md atau jalankan `/compact` dengan fokus (seperti `/compact focus on the API changes`).

137 137 

Details

659 659 

660Untuk mengikat ulang kunci yang menggulir daftar file atau mengubah perbandingan, lihat [Diff panel actions](https://code.claude.com/docs/id/keybindings.md#diff-panel-actions).660Untuk mengikat ulang kunci yang menggulir daftar file atau mengubah perbandingan, lihat [Diff panel actions](https://code.claude.com/docs/id/keybindings.md#diff-panel-actions).

661 661 

662Selama merge, rebase, cherry-pick, atau revert yang belum selesai, panel tetap menampilkan perubahan yang terakhir dibacanya dari git, sehingga panel tidak dipenuhi perubahan masuk dari operasi tersebut. Panel diperbarui pada penyegaran pertamanya setelah operasi berakhir, misalnya saat Claude berikutnya mengedit file.

663 

662### Diff dialog664### Diff dialog

663 665 

664Dialog diff terbuka sebagai blok berbingkai di atas prompt dan mencantumkan file yang Anda ubah dengan jumlah baris yang ditambahkan dan dihapus. Dialog membandingkannya dengan `HEAD`, atau dengan apa pun yang terakhir Anda [pilih di panel diff](#diff-panel) untuk repositori ini.666Dialog diff terbuka sebagai blok berbingkai di atas prompt dan mencantumkan file yang Anda ubah dengan jumlah baris yang ditambahkan dan dihapus. Dialog membandingkannya dengan `HEAD`, atau dengan apa pun yang terakhir Anda [pilih di panel diff](#diff-panel) untuk repositori ini.

keybindings.md +4 −4

Details

678 678 

679## Interaksi mode vim679## Interaksi mode vim

680 680 

681Ketika mode vim diaktifkan melalui `/config` → Editor mode, keybindings dan mode vim beroperasi secara independen:681Ketika Anda mengaktifkan mode vim melalui pengaturan Editor mode di `/config`, pintasan keyboard dan mode vim beroperasi secara independen:

682 682 

683* **Mode vim** menangani input pada tingkat input teks (gerakan kursor, mode, motions)683* **Mode vim** menangani input pada tingkat input teks: gerakan kursor, mode, dan motions

684* **Keybindings** menangani tindakan pada tingkat komponen (alihkan todos, kirim, dll.)684* **Pintasan keyboard** menangani tindakan pada tingkat komponen, seperti mengalihkan todos atau mengirim pesan

685* Tombol Escape dalam mode vim beralih dari INSERT ke mode NORMAL; itu tidak memicu `chat:cancel`685* Tombol Escape dalam mode vim mengalihkan mode INSERT ke mode NORMAL; tombol ini tidak memicu `chat:cancel`

686* Sebagian besar pintasan Ctrl+key melewati mode vim ke sistem keybinding686* Sebagian besar pintasan Ctrl+key melewati mode vim ke sistem keybinding

687* Kunci vim tidak dapat dipetakan ulang melalui file keybindings. Untuk memetakan urutan mode INSERT dua kunci seperti `jj` ke Escape, gunakan pengaturan [`vimInsertModeRemaps`](https://code.claude.com/docs/id/interactive-mode#remap-insert-mode-key-sequences)687* Kunci vim tidak dapat dipetakan ulang melalui file keybindings. Untuk memetakan urutan mode INSERT dua kunci seperti `jj` ke Escape, gunakan pengaturan [`vimInsertModeRemaps`](https://code.claude.com/docs/id/interactive-mode#remap-insert-mode-key-sequences)

688* Dalam mode NORMAL vim, `?` menampilkan menu bantuan (perilaku vim)688* Dalam mode NORMAL vim, `?` menampilkan menu bantuan (perilaku vim)

Details

306 306 

307## Tambahkan skills per-direktori307## Tambahkan skills per-direktori

308 308 

309Subdirektori apa pun dapat mendefinisikan [skills](https://code.claude.com/docs/id/skills.md) yang dibatasi pada stack-nya sendiri. Skill dimuat sesuai permintaan ketika Claude menentukan itu relevan, jadi tooling spesifik API tidak menghabiskan konteks selama pekerjaan frontend.309Subdirektori apa pun dapat mendefinisikan [skills](https://code.claude.com/docs/id/skills.md) yang dibatasi pada stack-nya sendiri. Skill dimuat sesuai permintaan ketika Claude menentukan itu relevan.

310 310 

311Skills hidup di bawah `.claude/skills/` di dalam direktori. Komitkan mereka bersama kode area itu sehingga siapa pun yang mengkloning repository mendapatkannya. Dalam monorepo ini dapat menjadi satu set skills per paket. Dalam codebase pohon tunggal besar itu satu set per subsistem seperti `src/db/.claude/skills/`.311Skills hidup di bawah `.claude/skills/` di dalam direktori. Komitkan mereka bersama kode area itu sehingga siapa pun yang mengkloning repository mendapatkannya. Dalam monorepo ini dapat menjadi satu set skills per paket. Dalam codebase pohon tunggal besar itu satu set per subsistem seperti `src/db/.claude/skills/`.

312 312 


347- Mock layanan eksternal di `src/__tests__/mocks/`347- Mock layanan eksternal di `src/__tests__/mocks/`

348```348```

349 349 

350Subdirektori berbeda memegang skills berbeda dengan cara yang sama: `packages/web/.claude/skills/component-patterns/` menjelaskan konvensi komponen frontend bukan pengujian. Ketika Claude bekerja pada file di `packages/api/`, itu memuat skill api-testing. Ketika itu bekerja di `packages/web/`, itu memuat component-patterns sebagai gantinya. Tidak ada skill direktori yang dimuat selama tugas yang lain.350Subdirektori berbeda memegang skills berbeda dengan cara yang sama: `packages/web/.claude/skills/component-patterns/` menjelaskan konvensi komponen frontend bukan pengujian. Ketika Claude bekerja pada file di `packages/api/`, itu memuat skill api-testing. Ketika itu bekerja di `packages/web/`, itu memuat component-patterns.

351 351 

352Anda juga dapat membatasi skill berdasarkan pola file bukan penempatan. Field frontmatter [`paths`](https://code.claude.com/docs/id/skills#frontmatter-reference) mengambil pola glob, dan Claude memuat skill secara otomatis hanya ketika bekerja dengan file yang cocok. Gunakan ini untuk skill yang hidup di `.claude/skills/` root repositori tetapi hanya berlaku untuk file tertentu, seperti skill migrasi database yang dibatasi pada `**/migrations/**`.352Anda juga dapat membatasi skill berdasarkan pola file bukan penempatan. Field frontmatter [`paths`](https://code.claude.com/docs/id/skills#frontmatter-reference) mengambil pola glob, dan Claude memuat skill secara otomatis hanya ketika bekerja dengan file yang cocok. Gunakan ini untuk skill yang hidup di `.claude/skills/` root repositori tetapi hanya berlaku untuk file tertentu, seperti skill migrasi database yang dibatasi pada `**/migrations/**`.

353 353 

Details

520| Kesalahan `400` pada setiap permintaan, dalam kata-kata gateway sendiri menolak jenis alat yang tidak dikenali, seperti `Input tag 'advisor_20260301'`, pada Claude Code v2.1.275 | Dalam peluncuran bertahap pada versi itu, permintaan membawa entri [alat advisor](https://code.claude.com/docs/id/advisor.md) bahkan dengan advisor dimatikan. API Anthropic menerimanya, tetapi gateway atau upstream yang memvalidasi jenis alat menolak seluruh permintaan; satu yang [meneruskan bidang badan permintaan tanpa perubahan](https://code.claude.com/docs/id/llm-gateway-protocol.md#forward-as-open-lists) meneruskannya tanpa terpengaruh. Entri adalah deklarasi yang tidak membawa konten percakapan | Perbarui ke v2.1.276 atau lebih baru, yang tidak mengirim entri di belakang gateway `ANTHROPIC_BASE_URL` kecuali Anda menghidupkan advisor. Pada v2.1.275, atur [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](https://code.claude.com/docs/id/env-vars), yang menghapus entri dari permintaan |520| Kesalahan `400` pada setiap permintaan, dalam kata-kata gateway sendiri menolak jenis alat yang tidak dikenali, seperti `Input tag 'advisor_20260301'`, pada Claude Code v2.1.275 | Dalam peluncuran bertahap pada versi itu, permintaan membawa entri [alat advisor](https://code.claude.com/docs/id/advisor.md) bahkan dengan advisor dimatikan. API Anthropic menerimanya, tetapi gateway atau upstream yang memvalidasi jenis alat menolak seluruh permintaan; satu yang [meneruskan bidang badan permintaan tanpa perubahan](https://code.claude.com/docs/id/llm-gateway-protocol.md#forward-as-open-lists) meneruskannya tanpa terpengaruh. Entri adalah deklarasi yang tidak membawa konten percakapan | Perbarui ke v2.1.276 atau lebih baru, yang tidak mengirim entri di belakang gateway `ANTHROPIC_BASE_URL` kecuali Anda menghidupkan advisor. Pada v2.1.275, atur [`CLAUDE_CODE_DISABLE_ADVISOR_TOOL=1`](https://code.claude.com/docs/id/env-vars), yang menghapus entri dari permintaan |

521| Model hilang dari pemilih `/model` | Nama model gateway tidak ada dalam daftar bawaan Claude Code, atau Claude Code menampilkan lineup [`modelPicker`](https://code.claude.com/docs/id/settings-reference#modelpicker) yang menggantikan opsi bawaan | Aktifkan [penemuan model gateway](#add-gateway-models-to-the-model-picker) atau tambahkan nama dengan variabel [konfigurasi model](https://code.claude.com/docs/id/model-config.md). Jika Claude Code menampilkan lineup `modelPicker` yang menggantikan, tambahkan model gateway ke dalamnya, atau minta administrator Anda untuk menambahkannya ketika pengaturan terkelola menyediakannya |521| Model hilang dari pemilih `/model` | Nama model gateway tidak ada dalam daftar bawaan Claude Code, atau Claude Code menampilkan lineup [`modelPicker`](https://code.claude.com/docs/id/settings-reference#modelpicker) yang menggantikan opsi bawaan | Aktifkan [penemuan model gateway](#add-gateway-models-to-the-model-picker) atau tambahkan nama dengan variabel [konfigurasi model](https://code.claude.com/docs/id/model-config.md). Jika Claude Code menampilkan lineup `modelPicker` yang menggantikan, tambahkan model gateway ke dalamnya, atau minta administrator Anda untuk menambahkannya ketika pengaturan terkelola menyediakannya |

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

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

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

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

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

Details

148| :- | :- |148| :- | :- |

149| `x-claude-code-request-class` | Jenis permintaan apa ini: `main` untuk giliran percakapan utama, `subagent` untuk giliran [subagent](https://code.claude.com/docs/id/sub-agents.md), `workflow` untuk agen yang berjalan di dalam alur kerja, `compaction` untuk permintaan peringkasan yang memadatkan percakapan, atau `auxiliary` untuk permintaan samping seperti judul sesi, pengklasifikasi, dan ringkasan. Dikirim pada setiap permintaan |149| `x-claude-code-request-class` | Jenis permintaan apa ini: `main` untuk giliran percakapan utama, `subagent` untuk giliran [subagent](https://code.claude.com/docs/id/sub-agents.md), `workflow` untuk agen yang berjalan di dalam alur kerja, `compaction` untuk permintaan peringkasan yang memadatkan percakapan, atau `auxiliary` untuk permintaan samping seperti judul sesi, pengklasifikasi, dan ringkasan. Dikirim pada setiap permintaan |

150| `x-claude-code-agent-type` | Jenis subagent yang mengeluarkan permintaan: nama jenis agen bawaan seperti `Explore`, `Plan`, atau `general-purpose`, atau `custom` untuk agen yang ditentukan pengguna, `teammate` untuk anggota [tim agen](https://code.claude.com/docs/id/agent-teams.md) yang berjalan dalam proses pemimpin, atau `fork` untuk [fork](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation). Hadir hanya pada giliran subagent sendiri; permintaan compaction atau samping subagent menyimpan ID agen tetapi tidak membawa jenis. Nama agen yang dipilih pengguna tidak pernah dikirim |150| `x-claude-code-agent-type` | Jenis subagent yang mengeluarkan permintaan: nama jenis agen bawaan seperti `Explore`, `Plan`, atau `general-purpose`, atau `custom` untuk agen yang ditentukan pengguna, `teammate` untuk anggota [tim agen](https://code.claude.com/docs/id/agent-teams.md) yang berjalan dalam proses pemimpin, atau `fork` untuk [fork](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation). Hadir hanya pada giliran subagent sendiri; permintaan compaction atau samping subagent menyimpan ID agen tetapi tidak membawa jenis. Nama agen yang dipilih pengguna tidak pernah dikirim |

151| `x-claude-code-compaction` | Hadir pada permintaan yang merangkum percakapan selama [compaction](https://code.claude.com/docs/id/prompt-caching.md#compacting-the-conversation). Nilainya menunjukkan apa yang memicunya: `auto` ketika context window mendekati kapasitas, `manual` untuk `/compact`, atau `reactive` ketika API menolak permintaan karena terlalu panjang. Nilainya juga `auto` untuk [idle compaction](https://code.claude.com/docs/id/settings-reference.md#idlecompaction). Tidak ada pada setiap permintaan lainnya |151| `x-claude-code-compaction` | Hadir pada permintaan yang merangkum percakapan selama [compaction](https://code.claude.com/docs/id/prompt-caching.md#compacting-the-conversation). Nilainya menunjukkan apa yang memicunya: `auto` ketika context window mendekati kapasitas, `manual` untuk `/compact`, atau `reactive` ketika API menolak permintaan karena terlalu panjang. Nilainya juga `auto` untuk [idle compaction](https://code.claude.com/docs/id/settings-reference.md#idlecompaction) dalam sesi terminal interaktif. Tidak ada pada setiap permintaan lainnya, termasuk permintaan yang menulis ringkasan di latar belakang sebelum compaction |

152| `x-claude-code-context-compacted` | Hadir sekali, pada permintaan percakapan utama pertama setelah compaction, dengan nilai yang sama seperti `x-claude-code-compaction`. Awalan percakapan sebelum permintaan ini tidak lagi digunakan, jadi cache yang dikunci padanya dapat dijatuhkan |152| `x-claude-code-context-compacted` | Hadir sekali, pada permintaan percakapan utama pertama setelah compaction, dengan nilai yang sama seperti `x-claude-code-compaction`. Awalan percakapan sebelum permintaan ini tidak lagi digunakan, jadi cache yang dikunci padanya dapat dijatuhkan |

153| `x-claude-code-prev-tool-durations` | Waktu run terukur dari panggilan alat yang hasilnya dibawa permintaan ini, sebagai `<name>=<ms>;<name>=<ms>`, misalnya `Bash=742;Read=9`. Dikirim pada permintaan berikutnya dari percakapan yang sama setelah batch panggilan alat, dari sesi utama atau subagent |153| `x-claude-code-prev-tool-durations` | Waktu run terukur dari panggilan alat yang hasilnya dibawa permintaan ini, sebagai `<name>=<ms>;<name>=<ms>`, misalnya `Bash=742;Read=9`. Dikirim pada permintaan berikutnya dari percakapan yang sama setelah batch panggilan alat, dari sesi utama atau subagent |

154| `x-claude-code-prompt-id` | UUID acak yang mengidentifikasi prompt pengguna yang dilayani permintaan. Permintaan yang melayani satu prompt berbagi nilai, termasuk giliran subagent yang dimulai prompt. Permintaan yang tidak dikaitkan dengan prompt menghilangkannya. Gunakan untuk mengelompokkan permintaan sesi berdasarkan prompt. Memerlukan Claude Code v2.1.283 atau lebih baru |154| `x-claude-code-prompt-id` | UUID acak yang mengidentifikasi prompt pengguna yang dilayani permintaan. Permintaan yang melayani satu prompt berbagi nilai, termasuk giliran subagent yang dimulai prompt. Permintaan yang tidak dikaitkan dengan prompt menghilangkannya. Gunakan untuk mengelompokkan permintaan sesi berdasarkan prompt. Memerlukan Claude Code v2.1.283 atau lebih baru |


238* Ketika upstream hanya menolak penanda `cache_control` pada pesan sistem mid-conversation, Claude Code mempertahankan pesan sistem dan mencoba ulang sekali dengan penanda dipindahkan. Penanda ditempatkan pada entri terakhir dalam `messages` yang bukan pesan sistem, dalam retry tersebut dan dalam permintaan berikutnya sampai Claude Code keluar238* Ketika upstream hanya menolak penanda `cache_control` pada pesan sistem mid-conversation, Claude Code mempertahankan pesan sistem dan mencoba ulang sekali dengan penanda dipindahkan. Penanda ditempatkan pada entri terakhir dalam `messages` yang bukan pesan sistem, dalam retry tersebut dan dalam permintaan berikutnya sampai Claude Code keluar

239* Ketika upstream menolak [tanda tangan pemikiran](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), termasuk dengan `400` yang pesannya mengatakan blok `bound to a different conversation`, Claude Code menghapus blok pemikiran sebelumnya dari permintaan, mengulangi, dan menjaganya keluar dari setiap permintaan kemudian. Respons baru masih menyertakan pemikiran239* Ketika upstream menolak [tanda tangan pemikiran](https://platform.claude.com/docs/en/build-with-claude/extended-thinking), termasuk dengan `400` yang pesannya mengatakan blok `bound to a different conversation`, Claude Code menghapus blok pemikiran sebelumnya dari permintaan, mengulangi, dan menjaganya keluar dari setiap permintaan kemudian. Respons baru masih menyertakan pemikiran

240* Ketika gateway atau upstream-nya menolak entri [alat advisor](https://code.claude.com/docs/id/advisor.md) dalam `tools` sebagai tipe alat yang tidak dikenali, Claude Code mengulangi permintaan sekali tanpa entri tersebut dan nilai `anthropic-beta`-nya. Permintaan kemudian ke URL dasar tersebut meninggalkan advisor keluar sampai Claude Code keluar, dan `/advisor` tidak tersedia untuk pengembang untuk waktu itu. Claude Code mengenali penolakan ini dengan respons `400` atau `422` yang pesannya menyebutkan tipe alat setelah `Input tag`, seperti `Input tag 'advisor_20260301'`. Sebelum v2.1.280, Claude Code tidak mengulangi penolakan ini240* Ketika gateway atau upstream-nya menolak entri [alat advisor](https://code.claude.com/docs/id/advisor.md) dalam `tools` sebagai tipe alat yang tidak dikenali, Claude Code mengulangi permintaan sekali tanpa entri tersebut dan nilai `anthropic-beta`-nya. Permintaan kemudian ke URL dasar tersebut meninggalkan advisor keluar sampai Claude Code keluar, dan `/advisor` tidak tersedia untuk pengembang untuk waktu itu. Claude Code mengenali penolakan ini dengan respons `400` atau `422` yang pesannya menyebutkan tipe alat setelah `Input tag`, seperti `Input tag 'advisor_20260301'`. Sebelum v2.1.280, Claude Code tidak mengulangi penolakan ini

241* Ketika upstream menolak `output_config.effort`, Claude Code mencoba ulang permintaan tanpa upaya dan tidak menyertakannya dalam permintaan berikutnya ke model tersebut sampai Claude Code keluar. Claude Code mengenali penolakan ini dari `400` yang pesannya menyebutkan `output_config.effort` bersama dengan `Extra inputs are not permitted`, atau menyatakan bahwa model tidak mendukung parameter effort241* Ketika upstream menolak `output_config.effort` atau nilai `anthropic-beta`-nya, Claude Code mencoba ulang dan tidak menambahkan keduanya ke permintaan untuk model tersebut sampai Claude Code keluar. Gateway Anda tidak memerlukan perubahan jika meneruskan `400` dari upstream tanpa modifikasi dan pesannya:

242 * Menyebutkan `output_config.effort` bersama dengan `Extra inputs are not permitted`

243 * Menyatakan bahwa model tidak mendukung parameter effort

244 * Diawali dengan `Unexpected value(s)` dan mencantumkan `effort-2025-11-24` untuk header `anthropic-beta`. Memerlukan v2.1.310 atau lebih baru. Pengembang yang [`ANTHROPIC_BETAS`](https://code.claude.com/docs/id/env-vars)-nya mencantumkan nilai tersebut tetap mengirimkannya dan mendapatkan `400`, jadi minta mereka menghapus entri tersebut

242* Ketika upstream menolak field `context_management` atau nilai `anthropic-beta`-nya, gateway melihat permintaan tersebut sekali lagi tanpa keduanya. Jika gateway melihatnya lagi dalam permintaan berikutnya dan upstream menolaknya lagi, retry yang sama terjadi. Claude Code mengenali penolakan ini dari pesannya, misalnya pesan yang berisi `context_management: Extra inputs are not permitted`. Sebelum v2.1.304, Claude Code tidak mencoba ulang penolakan ini245* Ketika upstream menolak field `context_management` atau nilai `anthropic-beta`-nya, gateway melihat permintaan tersebut sekali lagi tanpa keduanya. Jika gateway melihatnya lagi dalam permintaan berikutnya dan upstream menolaknya lagi, retry yang sama terjadi. Claude Code mengenali penolakan ini dari pesannya, misalnya pesan yang berisi `context_management: Extra inputs are not permitted`. Sebelum v2.1.304, Claude Code tidak mencoba ulang penolakan ini

243* Ketika upstream menolak field tool beta selain `defer_loading`, seperti `strict`, kesalahan `400` mencapai pengembang. Sebelum itu terjadi, gateway dapat melihat permintaan tersebut lagi [tanpa field pencarian tool](#retry-without-tool-search). Untuk berhenti mengirim field semacam itu, minta pengembang mengatur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities)246* Ketika upstream menolak field tool beta selain `defer_loading`, seperti `strict`, kesalahan `400` mencapai pengembang. Sebelum itu terjadi, gateway dapat melihat permintaan tersebut lagi [tanpa field pencarian tool](#retry-without-tool-search). Untuk berhenti mengirim field semacam itu, minta pengembang mengatur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`](#disable-pre-release-capabilities)

244 247 

Details

470Jika nama tersebut tidak tiba, periksa salah satu penyebab berikut:470Jika nama tersebut tidak tiba, periksa salah satu penyebab berikut:

471 471 

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

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

474* **Sebuah nilai mengandung spasi**: Claude Code kemudian tidak menyalin satu pun kunci ke event atau titik data dan tidak melaporkan error. [Hapus spasi dari nilai tersebut](#multi-team-organization-support).474* **Sebuah nilai mengandung spasi**: Claude Code kemudian tidak menyalin satu pun kunci ke event atau titik data dan tidak melaporkan error. [Hapus spasi dari nilai tersebut](#multi-team-organization-support).

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

476 476 


1403* `pre_tokens`: Perkiraan jumlah token sebelum compaction1403* `pre_tokens`: Perkiraan jumlah token sebelum compaction

1404* `post_tokens`: Perkiraan jumlah token setelah compaction1404* `post_tokens`: Perkiraan jumlah token setelah compaction

1405* `error`: Pesan kesalahan ketika compaction gagal1405* `error`: Pesan kesalahan ketika compaction gagal

1406* `precompute_reuse`: Hanya diatur ketika `trigger` bernilai `"manual"` atau untuk [idle compaction](https://code.claude.com/docs/id/settings-reference.md#idlecompaction), yang melaporkan `trigger` sebagai `"auto"`. Auto-compaction dapat menyiapkan ringkasan di latar belakang sebelum context window penuh, dan atribut ini mencatat apakah compaction menggunakan kembali ringkasan yang telah disiapkan tersebut. `"hit"` berarti ringkasan tersebut digunakan kembali; `"miss_custom_instructions"`, `"miss_hook"`, dan `"miss_not_ready"` memberikan alasan mengapa ringkasan baru dihitung sebagai gantinya1406* `precompute_reuse`: Hanya ditetapkan jika `trigger` adalah `"manual"`, atau jika `trigger` adalah `"auto"` untuk [idle compaction](https://code.claude.com/docs/id/settings-reference.md#idlecompaction) dalam sesi terminal interaktif. Auto-compaction dapat menyiapkan ringkasan di latar belakang sebelum context window penuh, dan atribut ini mencatat apakah compaction menggunakan kembali ringkasan yang telah disiapkan tersebut. `"hit"` berarti ringkasan digunakan kembali; `"miss_custom_instructions"`, `"miss_hook"`, dan `"miss_not_ready"` memberikan alasan mengapa ringkasan baru dihitung sebagai gantinya

1407 1407 

1408#### Event subagent selesai1408#### Event subagent selesai

1409 1409 

Details

29 29 

30Mode menetapkan garis dasar. Lapisi [aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) di atas untuk menyetujui sebelumnya atau memblokir alat tertentu. Aturan Deny memblokir di setiap mode, termasuk `bypassPermissions`. Aturan Deny dan ask tidak berlaku untuk [`EndConversation`](https://code.claude.com/docs/id/tools-reference#endconversation-tool-behavior) selama Claude masih memiliki setidaknya satu alat lain yang dapat dipanggilnya. Aturan Allow tidak berpengaruh dalam `bypassPermissions`.30Mode menetapkan garis dasar. Lapisi [aturan izin](https://code.claude.com/docs/id/permissions.md#manage-permissions) di atas untuk menyetujui sebelumnya atau memblokir alat tertentu. Aturan Deny memblokir di setiap mode, termasuk `bypassPermissions`. Aturan Deny dan ask tidak berlaku untuk [`EndConversation`](https://code.claude.com/docs/id/tools-reference#endconversation-tool-behavior) selama Claude masih memiliki setidaknya satu alat lain yang dapat dipanggilnya. Aturan Allow tidak berpengaruh dalam `bypassPermissions`.

31 31 

32### Tindakan yang tidak ada mode yang disetujui otomatis32### Tindakan yang tidak disetujui otomatis oleh mode mana pun

33 33 

34Claude Code tidak secara otomatis menyetujui hal-hal berikut di mode apa pun, termasuk `bypassPermissions`. Setiap poin menghubungkan ke bagian yang mengatakan apa yang terjadi sebagai gantinya di setiap mode:34Claude Code tidak secara otomatis menyetujui hal-hal berikut di mode apa pun, termasuk `bypassPermissions`. Setiap poin menghubungkan ke bagian yang mengatakan apa yang terjadi sebagai gantinya di setiap mode:

35 35 


244 244 

245Mode yang Anda pilih di pemilih mode diingat per folder dan mengambil alih `defaultMode` untuk folder itu. Plan adalah pengecualian: memilihnya berlaku hanya untuk sesi saat ini.245Mode yang Anda pilih di pemilih mode diingat per folder dan mengambil alih `defaultMode` untuk folder itu. Plan adalah pengecualian: memilihnya berlaku hanya untuk sesi saat ini.

246 246 

247Untuk di mana `defaultMode` masuk dalam file pengaturan, lihat contoh di bawah [Mulai dalam mode izin yang berbeda](#start-in-a-different-mode).247Untuk di mana `defaultMode` ditempatkan dalam file pengaturan, lihat contoh di bawah [Mulai dalam mode izin yang berbeda](#start-in-a-different-mode).

248 248 

249**Web dan mobile**249**Web dan mobile**

250 250 

251Di [claude.ai/code](https://claude.ai/code), gunakan dropdown mode di sebelah kotak prompt. Di aplikasi mobile, ketuk tombol **+** di kotak prompt, lalu **Permission**. Sesi cloud dan sesi Remote Control menawarkan mode izin yang berbeda:251Di [claude.ai/code](https://claude.ai/code), gunakan dropdown mode di baris di bawah kotak prompt. Di aplikasi mobile, ketuk tombol **+** di kotak prompt, lalu **Permission**. Sesi cloud dan sesi Remote Control menawarkan mode izin yang berbeda:

252 252 

253* **[Sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md)**: Accept edits, Plan, dan Auto. Accept edits sesuai dengan mode `default`: sesi cloud pra-menyetujui pengeditan file terlepas dari mode, jadi dropdown menampilkan Accept edits alih-alih Manual. Sesi cloud masih menghormati `defaultMode: "acceptEdits"` dari pengaturan. Auto mode muncul hanya ketika organisasi Anda mengizinkannya dan model yang dipilih mendukungnya. Bypass permissions tidak tersedia.253* **[Sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md)**: Accept edits, Plan, dan Auto. Accept edits sesuai dengan mode `default`: sesi cloud pra-menyetujui pengeditan file terlepas dari mode, jadi dropdown menampilkan Accept edits alih-alih Manual. Sesi cloud masih menghormati `defaultMode: "acceptEdits"` dari pengaturan. Auto mode muncul hanya ketika organisasi Anda mengizinkannya dan model yang dipilih mendukungnya. Bypass permissions tidak tersedia.

254* **[Sesi Remote Control](https://code.claude.com/docs/id/remote-control.md)** di mesin lokal Anda: Manual, Accept edits, Plan, dan Auto untuk sesi yang Anda mulai sendiri, dan Anda tidak dapat memilih Bypass permissions dari aplikasi. Untuk menggunakan Auto, sesi harus memenuhi [persyaratan ketersediaan](#eliminate-prompts-with-auto-mode) auto mode. Untuk thread proyek yang berjalan di komputer Anda, lihat [Jalankan thread di komputer Anda sendiri](https://code.claude.com/docs/id/claude-projects.md#run-a-thread-on-your-own-computer).254* **[Sesi Remote Control](https://code.claude.com/docs/id/remote-control.md)** di mesin lokal Anda: Manual, Accept edits, Plan, dan Auto untuk sesi yang Anda mulai sendiri, dan Anda tidak dapat memilih Bypass permissions dari aplikasi. Untuk menggunakan Auto, sesi harus memenuhi [persyaratan ketersediaan](#eliminate-prompts-with-auto-mode) auto mode. Untuk thread proyek yang berjalan di komputer Anda, lihat [Jalankan thread di komputer Anda sendiri](https://code.claude.com/docs/id/claude-projects.md#run-a-thread-on-your-own-computer).


647 647 

648Mode `bypassPermissions` menonaktifkan prompt izin dan pemeriksaan keamanan sehingga panggilan alat dijalankan segera, termasuk penulisan ke [jalur yang dilindungi](#protected-paths).648Mode `bypassPermissions` menonaktifkan prompt izin dan pemeriksaan keamanan sehingga panggilan alat dijalankan segera, termasuk penulisan ke [jalur yang dilindungi](#protected-paths).

649 649 

650[Tindakan yang tidak ada mode auto-approve](#actions-no-mode-auto-approves) masih meminta dalam mode ini. Membaca [artifact publik organisasi lain](https://code.claude.com/docs/id/artifacts.md#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.650[Tindakan yang tidak disetujui otomatis oleh mode mana pun](#actions-no-mode-auto-approves) masih meminta dalam mode ini. Membaca [artifact publik organisasi lain](https://code.claude.com/docs/id/artifacts.md#read-an-artifact-shared-with-you) memerlukan persetujuan Anda, dan mode ini tidak memintanya, sehingga Claude tidak dapat membacanya. Penolakan [Remove-Item di PowerShell](#remove-item-in-powershell) juga berlaku dalam mode ini.

651 651 

652Dua perlindungan [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) masih berlaku dalam mode ini, dan dalam sesi mode rencana terminal interaktif di mana bypass permissions tersedia:652Dua perlindungan [pesan lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) masih berlaku dalam mode ini, dan dalam sesi mode rencana terminal interaktif di mana bypass permissions tersedia:

653 653 

permissions.md +1 −1

Details

80| `plan` | Claude membaca file dan menjalankan perintah shell hanya-baca untuk menjelajahi tetapi tidak mengedit file sumber Anda; dengan [mode auto](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) tersedia, perintah yang disetujui classifier juga berjalan. Berlabel Plan di CLI dan ekstensi VS Code |80| `plan` | Claude membaca file dan menjalankan perintah shell hanya-baca untuk menjelajahi tetapi tidak mengedit file sumber Anda; dengan [mode auto](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) tersedia, perintah yang disetujui classifier juga berjalan. Berlabel Plan di CLI dan ekstensi VS Code |

81| `auto` | Berjalan tanpa prompt rutin; sebelum tindakan seperti perintah shell dan permintaan jaringan berjalan, [classifier](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) latar belakang memeriksa bahwa tindakan tersebut selaras dengan permintaan Anda |81| `auto` | Berjalan tanpa prompt rutin; sebelum tindakan seperti perintah shell dan permintaan jaringan berjalan, [classifier](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) latar belakang memeriksa bahwa tindakan tersebut selaras dengan permintaan Anda |

82| `dontAsk` | Secara otomatis menolak setiap panggilan yang sebaliknya akan meminta izin, meskipun [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui sebagian dari panggilan tersebut. Pembacaan file di direktori kerja Anda dan tindakan lain yang tidak memerlukan persetujuan masih berjalan, begitu juga dengan tool yang telah disetujui sebelumnya melalui `/permissions` atau aturan `permissions.allow`. `AskUserQuestion`, tool MCP yang ditandai [`requiresUserInteraction`](https://code.claude.com/docs/id/mcp#require-approval-for-a-specific-tool), [pembacaan dari jalur jaringan](#network-paths), dan tool konektor yang [diatur organisasi Anda ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan itu mencapai Claude Code ditolak bahkan jika Anda telah mengizinkannya |82| `dontAsk` | Secara otomatis menolak setiap panggilan yang sebaliknya akan meminta izin, meskipun [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui sebagian dari panggilan tersebut. Pembacaan file di direktori kerja Anda dan tindakan lain yang tidak memerlukan persetujuan masih berjalan, begitu juga dengan tool yang telah disetujui sebelumnya melalui `/permissions` atau aturan `permissions.allow`. `AskUserQuestion`, tool MCP yang ditandai [`requiresUserInteraction`](https://code.claude.com/docs/id/mcp#require-approval-for-a-specific-tool), [pembacaan dari jalur jaringan](#network-paths), dan tool konektor yang [diatur organisasi Anda ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools) dalam sesi di mana pengaturan itu mencapai Claude Code ditolak bahkan jika Anda telah mengizinkannya |

83| `bypassPermissions` | Melewati prompt izin, kecuali untuk [tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) |83| `bypassPermissions` | Melewati prompt izin, kecuali untuk [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) |

84 84 

85> [!WARNING]85> [!WARNING]

86>86>

Details

584 584 

585Perintah monitor dibatasi di mana itu dimulai dan apa yang dapat direferensikan:585Perintah monitor dibatasi di mana itu dimulai dan apa yang dapat direferensikan:

586 586 

587* **Sesi interaktif saja**: monitor plugin dimulai dalam sesi interaktif dan tidak pernah dalam mode non-interaktif dengan flag `-p`. Mereka juga tidak dimulai dalam sesi di mana penyedia API atau pengaturan telemetri membuat [Monitor tool](https://code.claude.com/docs/id/tools-reference.md#monitor-tool) tidak tersedia587* **Sesi interaktif**: monitor plugin tidak dimulai dalam mode non-interaktif dengan flag `-p`

588* **Versi minimum**: di Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, atau Microsoft Foundry, atau dengan `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` ditetapkan, monitor memerlukan Claude Code v2.1.310 atau lebih baru. Persyaratan ini berlaku ketika [pengambilan feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching) nonaktif

588* **Tidak ada konfigurasi pengguna**: `command` mendapat [variabel jalur](#path-variables-and-persistent-data) dan `${ENV_VAR}` dari lingkungan, tetapi tidak pernah `${user_config.*}`. Monitor yang mereferensikan satu tidak dimulai, dan proses monitor tidak menerima `CLAUDE_PLUGIN_OPTION_<KEY>` juga589* **Tidak ada konfigurasi pengguna**: `command` mendapat [variabel jalur](#path-variables-and-persistent-data) dan `${ENV_VAR}` dari lingkungan, tetapi tidak pernah `${user_config.*}`. Monitor yang mereferensikan satu tidak dimulai, dan proses monitor tidak menerima `CLAUDE_PLUGIN_OPTION_<KEY>` juga

589* **Menonaktifkan mid-session**: jika Anda menonaktifkan plugin mid-session, Claude Code tidak menghentikan monitor yang sudah berjalan. Mereka berhenti ketika sesi berakhir590* **Menonaktifkan mid-session**: jika Anda menonaktifkan plugin mid-session, Claude Code tidak menghentikan monitor yang sudah berjalan. Mereka berhenti ketika sesi berakhir

590 591 


647 648 

648Dalam jalur direktori data, `<id>` adalah identifier plugin dengan setiap karakter selain huruf, digit, `_`, dan `-` diganti dengan `-`, jadi `my-plugin@my-marketplace` menjadi `my-plugin-my-marketplace`.649Dalam jalur direktori data, `<id>` adalah identifier plugin dengan setiap karakter selain huruf, digit, `_`, dan `-` diganti dengan `-`, jadi `my-plugin@my-marketplace` menjadi `my-plugin-my-marketplace`.

649 650 

650Di Windows, jalur yang disubstitusikan menggunakan forward slashes sehingga shell tidak membaca backslashes sebagai escapes.651Di Windows, sebagian besar jalur yang disubstitusikan menggunakan forward slashes, seperti pada `C:/Users/you/...`. Jalur tersebut mempertahankan backslashes aslinya dalam [hook bentuk exec](https://code.claude.com/docs/id/hooks.md#exec-form-and-shell-form) dan dalam hook yang berjalan melalui PowerShell, yang merupakan shell default di Windows ketika Git Bash tidak terinstal.

651 652 

652### Pasang dependensi ke direktori data653### Pasang dependensi ke direktori data

653 654 

Details

148 148 

149Ketika dua nama berbeda dan seseorang menginstal dengan nama manifest, Claude Code melaporkan `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`. Jaga dua nama tetap sama. Untuk lebih lanjut tentang bagaimana Claude Code menggunakan dua nama, lihat [Referensi pemuatan plugin](https://code.claude.com/docs/id/plugins/loading.md#find-where-a-plugin-came-from).149Ketika dua nama berbeda dan seseorang menginstal dengan nama manifest, Claude Code melaporkan `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`. Jaga dua nama tetap sama. Untuk lebih lanjut tentang bagaimana Claude Code menggunakan dua nama, lihat [Referensi pemuatan plugin](https://code.claude.com/docs/id/plugins/loading.md#find-where-a-plugin-came-from).

150 150 

151### Jauhkan submodule yang tidak digunakan dari clone

152 

153Ketika seseorang menambahkan marketplace Anda, Claude Code meng-clone repositori dan hanya mengambil git submodule yang berisi file plugin. Memerlukan Claude Code v2.1.295 atau yang lebih baru.

154 

155Anda menentukan submodule mana yang diambil Claude Code melalui tempat Anda meletakkan setiap plugin:

156 

157* **Plugin di subdirektori**: Claude Code mengambil submodule di dalam direktori plugin dan submodule yang memuatnya. Letakkan submodule yang dibutuhkan plugin Anda di dalam direktori plugin, dan simpan submodule yang tidak dibutuhkan di luarnya

158* **Plugin di akar marketplace**: Claude Code mengambil setiap submodule dalam repositori segera setelah salah satu file plugin merujuk ke jalur di dalam salah satu submodule tersebut. Jika repositori Anda memiliki submodule besar yang hanya digunakan oleh build Anda, pindahkan plugin ke subdirektori

159 

160Jika plugin di akar menjalankan file dari submodule, tuliskan jalur file tersebut secara lengkap dalam konfigurasi hook atau server plugin, seperti `${CLAUDE_PLUGIN_ROOT}/vendor/tool/run.sh`. Claude Code membaca jalur tersebut untuk mengetahui apakah plugin membutuhkan submodule. Claude Code tidak dapat melihat jalur yang dibentuk oleh skrip saat skrip tersebut berjalan.

161 

162Untuk aturan lengkapnya, lihat [Git submodule dalam repositori marketplace](https://code.claude.com/docs/id/plugins/marketplace-reference.md#git-submodules-in-the-marketplace-repository).

163 

151## Pilih sumber plugin164## Pilih sumber plugin

152 165 

153Setiap entri plugin dalam `marketplace.json` memiliki `source` yang memberi tahu Claude Code tempat mengambil plugin itu. Pilih sumber berdasarkan tempat file plugin disimpan. Tabel mencantumkan sumber yang paling sering digunakan pemilik marketplace.166Setiap entri plugin dalam `marketplace.json` memiliki `source` yang memberi tahu Claude Code tempat mengambil plugin itu. Pilih sumber berdasarkan tempat file plugin disimpan. Tabel mencantumkan sumber yang paling sering digunakan pemilik marketplace.

Details

111Beri tahu pengguna apa yang setiap protokol butuhkan di mesin mereka:111Beri tahu pengguna apa yang setiap protokol butuhkan di mesin mereka:

112 112 

113* **SSH**: kunci harus bekerja tanpa prompt passphrase, misalnya karena dimuat di `ssh-agent`. Host harus sudah ada di `known_hosts`.113* **SSH**: kunci harus bekerja tanpa prompt passphrase, misalnya karena dimuat di `ssh-agent`. Host harus sudah ada di `known_hosts`.

114* **HTTPS**: Claude Code membiarkan helper kredensial git pengguna diaktifkan tetapi melarangnya dari prompting. Kredensial yang sudah disimpan helper bekerja; satu yang harus diminta gagal. Di GitHub, `gh auth login` diikuti oleh `gh auth setup-git` menyimpan satu.114* **HTTPS**: Claude Code membiarkan helper kredensial git pengguna diaktifkan tetapi melarangnya dari prompting, dan tidak menjalankan program askpass seperti yang diatur di `GIT_ASKPASS`. Kredensial yang sudah disimpan helper bekerja; satu yang harus diminta gagal. Di GitHub, `gh auth login` diikuti oleh `gh auth setup-git` menyimpan satu.

115 115 

116Untuk host GitHub Enterprise Server, pengguna memerlukan akses git ke host itu dari mesin mereka. Lihat [Plugin marketplaces on GHES](https://code.claude.com/docs/id/github-enterprise-server.md#plugin-marketplaces-on-ghes) untuk apa yang setiap permukaan Claude Code butuhkan untuk mencapai marketplace yang dihosting GHES.116Untuk host GitHub Enterprise Server, pengguna memerlukan akses git ke host itu dari mesin mereka. Lihat [Plugin marketplaces on GHES](https://code.claude.com/docs/id/github-enterprise-server.md#plugin-marketplaces-on-ghes) untuk apa yang setiap permukaan Claude Code butuhkan untuk mencapai marketplace yang dihosting GHES.

117 117 

Details

238 238 

239Marketplace pribadi adalah satu di repository yang Anda butuhkan kredensial untuk clone, di GitHub atau host git apa pun. Anda menambahkannya dengan perintah `/plugin marketplace add` atau `claude plugin marketplace add` yang sama seperti yang publik. Claude Code mengklonnya dengan kredensial git yang sudah ada di mesin Anda dan tidak pernah meminta, jadi setiap cara koneksi memiliki persyaratan:239Marketplace pribadi adalah satu di repository yang Anda butuhkan kredensial untuk clone, di GitHub atau host git apa pun. Anda menambahkannya dengan perintah `/plugin marketplace add` atau `claude plugin marketplace add` yang sama seperti yang publik. Claude Code mengklonnya dengan kredensial git yang sudah ada di mesin Anda dan tidak pernah meminta, jadi setiap cara koneksi memiliki persyaratan:

240 240 

241* **HTTPS**: pembantu kredensial git Anda berlaku, jadi akses yang Anda atur dengan `gh auth login`, Keychain macOS, atau `git-credential-store` berfungsi. Prompt interaktif ditekan, jadi host yang belum pernah Anda autentikasi gagal alih-alih meminta kata sandi.241* **HTTPS**: pembantu kredensial git Anda berlaku, jadi akses yang Anda atur dengan `gh auth login`, Keychain macOS, atau `git-credential-store` berfungsi. Prompt git dan program askpass dinonaktifkan, termasuk yang diatur di `GIT_ASKPASS`, sehingga clone gagal alih-alih meminta ketika git perlu menanyakan kredensial.

242* **SSH**: host harus sudah ada di file `known_hosts` Anda dan kunci harus berfungsi tanpa prompt passphrase. Jika setup git Anda menamai program SSH di `GIT_SSH_COMMAND`, `GIT_SSH`, atau `core.sshCommand` config git Anda, Claude Code menjalankan program itu.242* **SSH**: host harus sudah ada di file `known_hosts` Anda dan kunci harus berfungsi tanpa prompt passphrase. Jika setup git Anda menamai program SSH di `GIT_SSH_COMMAND`, `GIT_SSH`, atau `core.sshCommand` config git Anda, Claude Code menjalankan program itu.

243* **GitHub `owner/repo` shorthand**: Claude Code memeriksa apakah kunci SSH Anda mengautentikasi ke `github.com`, kemudian mengklonnya melalui SSH jika ya dan melalui HTTPS jika tidak. Atur [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](https://code.claude.com/docs/id/env-vars#variables) untuk melewati pemeriksaan itu dan selalu mengklonnya melalui HTTPS.243* **GitHub `owner/repo` shorthand**: Claude Code memeriksa apakah kunci SSH Anda mengautentikasi ke `github.com`, kemudian mengklonnya melalui SSH jika ya dan melalui HTTPS jika tidak. Atur [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](https://code.claude.com/docs/id/env-vars#variables) untuk melewati pemeriksaan itu dan selalu mengklonnya melalui HTTPS.

244 244 

Details

41* **Marketplace yang dideklarasikan pengaturan tetapi `known_marketplaces.json` tidak memiliki**: Claude Code mengklonnya, kemudian memuat ulang plugin dan mengunduh plugin yang diaktifkan yang belum di-cache41* **Marketplace yang dideklarasikan pengaturan tetapi `known_marketplaces.json` tidak memiliki**: Claude Code mengklonnya, kemudian memuat ulang plugin dan mengunduh plugin yang diaktifkan yang belum di-cache

42* **Marketplace yang dideklarasikan yang sumbernya berubah dalam pengaturan**: Claude Code mengambilnya kembali dari sumber baru dan menampilkan `Plugins changed. Run /reload-plugins to activate.`42* **Marketplace yang dideklarasikan yang sumbernya berubah dalam pengaturan**: Claude Code mengambilnya kembali dari sumber baru dan menampilkan `Plugins changed. Run /reload-plugins to activate.`

43 43 

44Plugin yang diaktifkan yang tidak diambil oleh jalur mana pun dan yang tidak memiliki direktori cache yang dapat digunakan menampilkan `Plugin "<name>" not cached at <path>` di tab **Errors** `/plugin`, dan `claude plugin list` menambahkan `— run /plugin to refresh` ke baris yang sama. Untuk perbaikannya, lihat [`Plugin "<name>" not cached at <path>`](https://code.claude.com/docs/id/plugins/troubleshooting#plugin-not-cached-at).44Plugin yang diaktifkan yang tidak diambil oleh jalur mana pun dan yang tidak memiliki direktori cache yang dapat digunakan menampilkan `Plugin "<name>" not cached at <path>` di tab **Errors** `/plugin`. Untuk perbaikannya, lihat [`Plugin "<name>" not cached at <path>`](https://code.claude.com/docs/id/plugins/troubleshooting#plugin-not-cached-at).

45 45 

46## Temukan dari mana plugin berasal46## Temukan dari mana plugin berasal

47 47 

Details

155| `workflows` | Path, or array of paths | File [Workflow](https://code.claude.com/docs/id/workflows.md#distribute-a-workflow-in-a-plugin) `.js` atau direktori. Menggantikan pemindaian default `workflows/` |155| `workflows` | Path, or array of paths | File [Workflow](https://code.claude.com/docs/id/workflows.md#distribute-a-workflow-in-a-plugin) `.js` atau direktori. Menggantikan pemindaian default `workflows/` |

156| `experimental` | Object | Kontainer untuk `themes`, `monitors`, dan `evals`, yang bentuk manifestnya mungkin masih berubah |156| `experimental` | Object | Kontainer untuk `themes`, `monitors`, dan `evals`, yang bentuk manifestnya mungkin masih berubah |

157| `experimental.themes` | Path, or array of paths | File tema atau direktori. Menggantikan pemindaian default `themes/`. Kunci `themes` tingkat atas masih dimuat, dengan peringatan `claude plugin validate` |157| `experimental.themes` | Path, or array of paths | File tema atau direktori. Menggantikan pemindaian default `themes/`. Kunci `themes` tingkat atas masih dimuat, dengan peringatan `claude plugin validate` |

158| [`experimental.monitors`](#monitors) | Path, or inline array | File `.json` yang menyimpan array monitors, atau array itu sendiri. Default ke `monitors/monitors.json`. Kunci `monitors` tingkat atas masih dimuat, dengan peringatan `claude plugin validate`. Monitor hanya berjalan dalam sesi interaktif, dan bukan di Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry |158| [`experimental.monitors`](#monitors) | Path, or inline array | File `.json` yang menyimpan array monitors, atau array itu sendiri. Default ke `monitors/monitors.json`. Kunci `monitors` tingkat atas masih dimuat, dengan peringatan `claude plugin validate`. Monitor [tidak dimulai dengan flag `-p`](https://code.claude.com/docs/id/plugins/components#monitors) |

159| `experimental.evals` | Path, or array of paths | Direktori yang menyimpan [eval cases](https://code.claude.com/docs/id/plugin-evals.md#use-a-different-eval-directory) plugin saat bukan default `evals/`. `claude plugin eval --eval-dir` menimpanya |159| `experimental.evals` | Path, or array of paths | Direktori yang menyimpan [eval cases](https://code.claude.com/docs/id/plugin-evals.md#use-a-different-eval-directory) plugin saat bukan default `evals/`. `claude plugin eval --eval-dir` menimpanya |

160 160 

161Di kolom Type, path adalah string relatif terhadap root plugin, seperti `"./custom/commands"`.161Di kolom Type, path adalah string relatif terhadap root plugin, seperti `"./custom/commands"`.


606}606}

607```607```

608 608 

609Di Windows, path yang disubstitusi menggunakan garis miring ke depan sehingga shell tidak membaca garis miring terbalik sebagai escape.609Di Windows, sebagian besar path yang disubstitusi menggunakan garis miring ke depan, seperti dalam `C:/Users/you/...`. Path tersebut mempertahankan garis miring terbalik aslinya dalam [hook bentuk exec](https://code.claude.com/docs/id/hooks.md#exec-form-and-shell-form) dan dalam hook yang berjalan melalui PowerShell, yang merupakan shell default di Windows saat Git Bash tidak diinstal.

610 610 

611## Standard layout611## Standard layout

612 612 

Details

172* **`url`**: Claude Code hanya mengambil `marketplace.json`, jadi jalur relatif tidak dapat diselesaikan. Berikan setiap plugin sumber objek sebagai gantinya, seperti `github` atau `git-subdir`.172* **`url`**: Claude Code hanya mengambil `marketplace.json`, jadi jalur relatif tidak dapat diselesaikan. Berikan setiap plugin sumber objek sebagai gantinya, seperti `github` atau `git-subdir`.

173* **`settings`**: jalur relatif ditolak sepenuhnya.173* **`settings`**: jalur relatif ditolak sepenuhnya.

174 174 

175#### Submodule git di repositori marketplace

176 

177Ketika Claude Code meng-clone repositori marketplace, Claude Code hanya mengambil submodule git yang menyimpan file plugin. Memerlukan Claude Code v2.1.295 atau lebih baru.

178 

179Versi sebelumnya mengambil setiap submodule, termasuk yang bersarang. Jika repositori memiliki submodule besar, Claude Code kemudian dapat melewati [timeout clone](https://code.claude.com/docs/id/plugins/troubleshooting.md#git-clone-timed-out-after-120s) saat mengambilnya.

180 

181Untuk plugin di subdirektori, seperti `./plugins/formatter`, Claude Code mengambil submodule dalam kasus berikut:

182 

183* **Plugin berada di dalam submodule**: submodule adalah direktori plugin atau direktori di atasnya

184* **Submodule berada di dalam plugin**: submodule berada di mana pun di bawah direktori plugin

185* **Tautan simbolis menunjuk ke dalam submodule**: tautan yang di-commit ke repositori memiliki target di dalam submodule

186 

187Plugin di akar marketplace, dengan `"source": "./"`, mendapatkan setiap submodule di repositori atau tidak satu pun. Claude Code mengambil setiap submodule ketika salah satu dari berikut ini menunjuk ke dalam submodule mana pun:

188 

189* **Direktori komponen**: direktori di akar yang menyimpan komponen plugin, seperti `skills/`, `hooks/`, atau `bin/`

190* **Jalur dalam konfigurasi plugin**: jalur dalam entri marketplace plugin, dalam `plugin.json`-nya, atau dalam file konfigurasi seperti `.mcp.json` atau `hooks/hooks.json`

191* **Tautan simbolis**: tautan yang di-commit ke repositori

192* **Teks dalam file plugin**: jalur submodule, seperti `vendor/tool`, yang ditulis dalam file konfigurasi atau dalam file di bawah direktori komponen

193 

194Ketika tidak satu pun dari itu yang menunjuk, Claude Code tidak mengambil submodule apa pun untuk plugin tersebut. Repositori yang sekaligus merupakan proyek dan plugin sering memiliki submodule yang hanya digunakan oleh build proyek, dan aturan ini mengecualikannya.

195 

196Claude Code juga mengambil setiap submodule ketika tidak dapat menentukan submodule mana yang menyimpan file plugin, seperti:

197 

198* **`SKILL.md` di akar**: seluruh repositori kemudian merupakan direktori satu skill

199* **File yang tidak dapat dibaca Claude Code**: file marketplace, salah satu file konfigurasi plugin, atau `.gitmodules`

200 

201Jika Anda menambahkan marketplace dengan `--sparse`, atau sumbernya menetapkan `sparsePaths`, Claude Code hanya melakukan checkout direktori yang disebutkan di sana dan tidak mengambil submodule apa pun. Versi sebelumnya melakukan hal yang sama.

202 

203Untuk menjaga submodule yang tidak digunakan plugin Anda tetap di luar clone, lihat [Jaga submodule yang tidak digunakan tetap di luar clone](https://code.claude.com/docs/id/plugins/create-marketplace.md#keep-unused-submodules-out-of-the-clone).

204 

175#### Nama bare di bawah pluginRoot205#### Nama bare di bawah pluginRoot

176 206 

177Nama bare adalah nama direktori tunggal tanpa `/`, seperti `"formatter"`. Untuk menulis nama bare daripada jalur `./`, atur [`metadata.pluginRoot`](#top-level-fields) ke direktori yang mereka selesaikan di bawahnya. Dengan `"pluginRoot": "./plugins"`, `"source": "formatter"` diselesaikan ke `./plugins/formatter`. Memerlukan Claude Code v2.1.239 atau lebih baru.207Nama bare adalah nama direktori tunggal tanpa `/`, seperti `"formatter"`. Untuk menulis nama bare daripada jalur `./`, atur [`metadata.pluginRoot`](#top-level-fields) ke direktori yang mereka selesaikan di bawahnya. Dengan `"pluginRoot": "./plugins"`, `"source": "formatter"` diselesaikan ke `./plugins/formatter`. Memerlukan Claude Code v2.1.239 atau lebih baru.

Details

313 313 

314#### Apa yang dikembalikan panggilan yang ditolak314#### Apa yang dikembalikan panggilan yang ditolak

315 315 

316Dalam hasil, `<reason>` mewakili `the session was stopped and nobody has sent input since`:316Dalam hasil, `<reason>` mewakili alasan panggilan ditolak. Setelah interupsi, alasannya adalah `the session was stopped and nobody has sent input since`. Untuk alasan lain, lihat [Panggilan yang ditolak dalam eksekusi `claude -p` dan sesi Agent SDK](#calls-refused-in-non-interactive-runs).

317 317 

318| Beberapa panggilan yang ditolak | Hasil sampai input pengguna berikutnya |318| Beberapa panggilan yang ditolak | Hasil |

319| :- | :- |319| :- | :- |

320| `$.prompt.submit` | Menyelesaikan dengan `{ drop: '<reason>' }` dan tidak mengantrekan prompt apa pun |320| `$.prompt.submit` | Menyelesaikan dengan `{ drop: '<reason>' }` dan tidak mengantrekan prompt apa pun |

321| `$.command.run` | Menolak dengan kesalahan yang pesannya diakhiri dengan `<reason>` |321| `$.command.run` | Menolak dengan kesalahan yang pesannya diakhiri dengan `<reason>` |


324| `$.session.send` ke rekan satu tim dalam [tim agent](https://code.claude.com/docs/id/agent-teams.md) | Menyelesaikan dengan `{ isDelivered: false, reason: 'Teammate "<name>" was not messaged: <reason>.' }`, dengan `<name>` adalah nama rekan satu tim tersebut |324| `$.session.send` ke rekan satu tim dalam [tim agent](https://code.claude.com/docs/id/agent-teams.md) | Menyelesaikan dengan `{ isDelivered: false, reason: 'Teammate "<name>" was not messaged: <reason>.' }`, dengan `<name>` adalah nama rekan satu tim tersebut |

325| [`$.tool.call`](https://code.claude.com/docs/id/plugins/mods/reference#mods-api-methods) untuk Bash dengan `run_in_background: true`, Monitor, atau CronCreate | Menyelesaikan dengan `{ deny: '<tool> was not run: it starts background work, a schedule or a goal, and <reason>' }`, dengan `<tool>` adalah nama tool tersebut |325| [`$.tool.call`](https://code.claude.com/docs/id/plugins/mods/reference#mods-api-methods) untuk Bash dengan `run_in_background: true`, Monitor, atau CronCreate | Menyelesaikan dengan `{ deny: '<tool> was not run: it starts background work, a schedule or a goal, and <reason>' }`, dengan `<tool>` adalah nama tool tersebut |

326 326 

327Bersamaan dengan hasil `$.session.send` dan `$.tool.call` ini, pengguna dapat melihat [toast `Stopped:`](https://code.claude.com/docs/id/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).327Saat salah satu panggilan `$.session.send` atau `$.tool.call` ini ditolak setelah interupsi dalam sesi interaktif, pengguna dapat melihat [toast `Stopped:`](https://code.claude.com/docs/id/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).

328 328 

329#### Pekerjaan yang dimulai mod Anda sebelum interupsi329#### Pekerjaan yang dimulai mod Anda sebelum interupsi

330 330 


341 341 

342Saat pekerjaan terjadwal jatuh tempo atau monitor memunculkan peristiwa sebelum input pengguna berikutnya, pengguna dapat melihat [toast `Stopped:`](https://code.claude.com/docs/id/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).342Saat pekerjaan terjadwal jatuh tempo atau monitor memunculkan peristiwa sebelum input pengguna berikutnya, pengguna dapat melihat [toast `Stopped:`](https://code.claude.com/docs/id/plugins/mods/troubleshoot#stopped-type-a-message-to-continue).

343 343 

344### Panggilan yang ditolak dalam eksekusi `claude -p` dan sesi Agent SDK

345 

346Dalam eksekusi `claude -p` atau sesi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md), hasil seperti `{ drop: 'the run reached its --max-turns limit' }` berarti eksekusi tersebut menolak panggilan mod Anda.

347 

348`$.prompt.submit` yang ditolak menyelesaikan dengan `{ drop: '<reason>' }`. Panggilan lain yang ditolak, seperti `$.command.run` dan `$.agent.spawn`, memberikan hasil yang ditunjukkan dalam [Apa yang dikembalikan panggilan yang ditolak](#what-refused-calls-return) dengan alasannya menggantikan `<reason>`. Temukan `<reason>` Anda di bawah untuk mengetahui apa yang harus dilakukan:

349 

350* **`the run reached its --max-turns limit`**: giliran dari prompt mod Anda dan dari subagent yang di-spawn-nya dihitung terhadap [`--max-turns`](https://code.claude.com/docs/id/cli-reference#cli-flags) atau [batas giliran](https://code.claude.com/docs/id/agent-sdk/configuration.md#limit-turns-and-spend) Agent SDK. Untuk mendapatkan lebih banyak giliran, mulai eksekusi dengan batas yang lebih tinggi. Jika tidak bisa, buat mod Anda berhenti melakukan panggilan yang ditolak. Jika eksekusi menerima prompt lain dari pengguna atau aplikasi SDK, hitungan giliran diatur ulang dan eksekusi kembali menerima panggilan.

351* **`the run is past its --max-budget-usd limit`**: mulai eksekusi dengan `--max-budget-usd` yang lebih tinggi, atau naikkan [batas pengeluaran](https://code.claude.com/docs/id/agent-sdk/configuration.md#limit-turns-and-spend) Agent SDK. Jika tidak bisa, buat mod Anda berhenti melakukan panggilan yang ditolak. Batas tersebut berlaku untuk total biaya eksekusi sejauh ini. Total itu terus bertambah saat eksekusi menerima prompt lain, sehingga retry mengembalikan alasan yang sama.

352* **`the host has ended its input`**: misalnya, aplikasi SDK mengakhiri [input streaming](https://code.claude.com/docs/id/agent-sdk/streaming-vs-single-mode.md)-nya, atau stdin ditutup pada eksekusi yang dimulai dengan [`--input-format stream-json`](https://code.claude.com/docs/id/cli-reference#cli-flags). Eksekusi sedang berakhir dan tidak menerima input lagi, sehingga retry mengembalikan alasan yang sama. Buat mod Anda berhenti melakukan panggilan yang ditolak. Jika Anda sendiri yang memulai eksekusi, lain kali biarkan input tersebut tetap terbuka sampai mod Anda tidak memiliki panggilan lagi untuk dilakukan.

353* **`the session was stopped and nobody has sent input since`**: eksekusi [diinterupsi](#calls-and-background-work-after-the-user-interrupts-a-turn), misalnya dengan [`interrupt()`](https://code.claude.com/docs/id/agent-sdk/typescript#query-object) milik Agent SDK. Untuk melakukan panggilan lagi setelah pesan berikutnya dari pengguna atau aplikasi SDK, ikuti [Coba ulang panggilan yang ditolak atau dibuang](#retry-a-refused-or-dropped-call).

354 

355### Eksekusi `claude -p` dengan mod Anda tidak pernah keluar

356 

357Jika mod Anda mengirimkan prompt di akhir setiap giliran, setiap prompt memulai giliran lain. Tanpa [`--max-turns`](https://code.claude.com/docs/id/cli-reference#cli-flags) atau `--max-budget-usd`, eksekusi `claude -p` yang memuat mod tersebut terus berjalan sampai Anda menghentikannya sendiri.

358 

359Agar eksekusi berakhir dengan sendirinya, tambahkan salah satu flag tersebut ke perintah di shell Anda. Jika orang lain yang memulai eksekusi, buat mod Anda berhenti mengirimkan prompt setelah pekerjaannya selesai. Perintah ini menambahkan `--max-turns`:

360 

361```bash theme={null}

362claude -p "find the TODOs" --max-turns 5

363```

364 

365Setelah eksekusi mencapai batas tersebut, prompt berikutnya dari mod [ditolak](#calls-refused-in-non-interactive-runs) alih-alih memulai giliran, dan eksekusi berakhir.

366 

367Jika eksekusi masih melewati batas, jalankan `claude --version` di shell Anda, dan [perbarui Claude Code](https://code.claude.com/docs/id/setup.md#update-claude-code) jika versi Anda lebih lama dari v2.1.304. Prompt dari mod ditolak saat mencapai batas mulai dari v2.1.299. Jika mod Anda men-spawn subagent, giliran subagent tersebut dihitung terhadap `--max-turns` mulai dari v2.1.304.

368 

344## Mengirim dan menerima pesan antar sesi369## Mengirim dan menerima pesan antar sesi

345 370 

346Sebuah mod dapat mengirim pesan teks biasa ke sesi Anda yang lain, ke salah satu subagent milik sesi ini, atau ke rekan tim dalam [tim agent](https://code.claude.com/docs/id/agent-teams.md) miliknya. Mod juga dapat mengamati pesan yang masuk dan keluar.371Sebuah mod dapat mengirim pesan teks biasa ke sesi Anda yang lain, ke salah satu subagent milik sesi ini, atau ke rekan tim dalam [tim agent](https://code.claude.com/docs/id/agent-teams.md) miliknya. Mod juga dapat mengamati pesan yang masuk dan keluar.


390| `$.http` | `fetch(url, init)` atas `http` atau `https`. Itu menyelesaikan ke `{ status, ok, headers, text }` setelah badan dibaca. |415| `$.http` | `fetch(url, init)` atas `http` atau `https`. Itu menyelesaikan ke `{ status, ok, headers, text }` setelah badan dibaca. |

391| `$.store` | Penyimpanan kunci-nilai JSON plugin Anda sendiri, disimpan antar sesi |416| `$.store` | Penyimpanan kunci-nilai JSON plugin Anda sendiri, disimpan antar sesi |

392| `$.env` | `get` dan `set` environment variable. Tulis nama sebagai string literal. |417| `$.env` | `get` dan `set` environment variable. Tulis nama sebagai string literal. |

393| `$.settings` | `read` apa yang dipegang file pengaturan dan kebijakan terkelola |418| `$.settings` | `read()` menyelesaikan ke semua pengaturan, digabungkan menjadi satu objek. Dengan `{ source }` atau `{ key }`, fungsi ini menyelesaikan ke [pengaturan satu sumber atau nilai satu kunci](#read-one-source-or-one-key) sebagai gantinya. |

394| `$.session` | `messages()` mengembalikan transkrip sebagai daftar `{ role, text, toolUses }`. Juga direktori kerja, model, dan lainnya. [`usage()`](https://code.claude.com/docs/id/plugins/mods/reference#mods-api-methods) mengembalikan penggunaan context window dan batas paket. |419| `$.session` | `messages()` mengembalikan transkrip sebagai daftar `{ role, text, toolUses }`. Juga direktori kerja, model, dan lainnya. [`usage()`](https://code.claude.com/docs/id/plugins/mods/reference#mods-api-methods) mengembalikan penggunaan context window dan batas paket. |

395| `$.mcp` | `call` tool pada server MCP yang terhubung |420| `$.mcp` | `call` tool pada server MCP yang terhubung |

396 421 


408* **`$.process.spawn started, and a plugin withheld its result:`**: mod yang menolak belum membaca output perintah sampai akhir. Claude Code menghentikan perintah jika masih berjalan.433* **`$.process.spawn started, and a plugin withheld its result:`**: mod yang menolak belum membaca output perintah sampai akhir. Claude Code menghentikan perintah jika masih berjalan.

409* **`$.process.spawn ran, and a plugin withheld its result:`**: mod yang menolak telah membaca output perintah sampai akhir, sehingga perintah tersebut telah keluar434* **`$.process.spawn ran, and a plugin withheld its result:`**: mod yang menolak telah membaca output perintah sampai akhir, sehingga perintah tersebut telah keluar

410 435 

436### Baca semua pengaturan, satu sumber, atau satu kunci

437 

438`$.settings.read()` menyelesaikan ke satu objek yang memuat pengaturan dari semua sumber yang digunakan, digabungkan berdasarkan [prioritas](https://code.claude.com/docs/id/settings.md#settings-precedence). Teruskan `{ source }` untuk membaca satu sumber saja, `{ key }` untuk membaca satu kunci, atau keduanya:

439 

440| Panggilan | Menyelesaikan ke |

441| :- | :- |

442| `$.settings.read()` | Pengaturan gabungan sebagai satu objek. Kunci tingkat atasnya adalah kunci dari file `settings.json`, seperti `permissions` dan `hooks`. |

443| `$.settings.read({ source: 'policy' })` | Pengaturan dari satu sumber tersebut sebagai satu objek, atau `{}` ketika sumber tersebut tidak memuat pengaturan apa pun |

444| `$.settings.read({ key: 'spinnerTipsEnabled' })` | Nilai kunci tersebut dalam pengaturan gabungan, atau `undefined` ketika kunci tidak diatur |

445| `$.settings.read({ key: 'spinnerTipsEnabled', source: 'user' })` | Nilai kunci tersebut dalam satu sumber tersebut, atau `undefined` ketika sumber tersebut tidak mengaturnya |

446 

447Untuk `source`, teruskan nama satu sumber pengaturan yang akan dibaca:

448 

449* **`user`**: `~/.claude/settings.json`

450* **`project`**: `.claude/settings.json`

451* **`local`**: `.claude/settings.local.json`

452* **`flag`**: apa yang Anda teruskan dengan `--settings`, dan pengaturan inline SDK

453* **`policy`**: [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources)

454 

455Untuk `key`, teruskan nama persis dari satu kunci tingkat atas, bukan jalur bertitik ke dalam objek bersarang. Argumen `key` memerlukan Claude Code v2.1.304 atau yang lebih baru.

456 

411## Langkah berikutnya457## Langkah berikutnya

412 458 

413* [React to events](https://code.claude.com/docs/id/plugins/mods/events.md): hook tool calls, prompts, dan turns459* [React to events](https://code.claude.com/docs/id/plugins/mods/events.md): hook tool calls, prompts, dan turns

Details

46 46 

47**4. Coba mod**47**4. Coba mod**

48 48 

49Gunakan apa yang Anda minta. Untuk prompt contoh, nama cabang saat ini muncul di atas kotak prompt. Jika mod tidak melakukan apa yang Anda inginkan, beri tahu Claude apa yang harus diubah. Mod dimuat ulang di akhir setiap giliran yang mengubah filenya, sehingga Anda dapat mencoba perubahan segera setelah Claude selesai.49Gunakan apa yang Anda minta. Untuk prompt contoh, nama branch saat ini muncul di atas kotak prompt. Jika mod tidak melakukan apa yang Anda inginkan, beri tahu Claude apa yang harus diubah. Mod dimuat ulang di akhir setiap giliran yang mengubah filenya, sehingga Anda dapat mencoba perubahan segera setelah Claude selesai.

50 

51Jika baris transkrip yang diawali dengan nama mod menyatakan bahwa [perubahan tidak dimuat](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#this-mods-change-didnt-load), tempelkan baris tersebut ke pesan Anda berikutnya saat Anda meminta Claude untuk memperbaikinya. Claude tidak melihat baris tersebut kecuali Anda menempelkannya.

50 52 

51### Gunakan mod di sesi lain53### Gunakan mod di sesi lain

52 54 

Details

93 93 

94## Hook apa yang dilakukan Claude94## Hook apa yang dilakukan Claude

95 95 

96Tangani peristiwa ini untuk melihat atau mengubah panggilan tool, prompt, atau giliran saat terjadi. Untuk setiap peristiwa dan apa yang dapat dikembalikan hook, lihat [referensi peristiwa](https://code.claude.com/docs/id/plugins/mods/reference.md#events).96Tangani peristiwa ini untuk melihat atau mengubah panggilan tool, prompt, giliran, atau pembacaan pengaturan saat terjadi. Untuk setiap peristiwa dan apa yang dapat dikembalikan hook, lihat [referensi peristiwa](https://code.claude.com/docs/id/plugins/mods/reference.md#events).

97 97 

98### Lindungi atau ubah panggilan tool98### Lindungi atau ubah panggilan tool

99 99 


115 115 

116Ketika Claude mencoba `git push --force`, perintah tidak berjalan dan tidak ada permintaan izin yang muncul, karena hook tidak pernah memanggil `next`. Claude membaca teks `deny` sebagai hasil tool, jadi tulislah sebagai instruksi yang dapat ditindaklanjuti Claude. Setiap perintah Bash lain berjalan seperti yang akan terjadi tanpa mod.116Ketika Claude mencoba `git push --force`, perintah tidak berjalan dan tidak ada permintaan izin yang muncul, karena hook tidak pernah memanggil `next`. Claude membaca teks `deny` sebagai hasil tool, jadi tulislah sebagai instruksi yang dapat ditindaklanjuti Claude. Setiap perintah Bash lain berjalan seperti yang akan terjadi tanpa mod.

117 117 

118Jika hook ini melempar error atau melampaui batas waktu, Claude Code melewatinya dan perintah berlanjut seperti yang akan terjadi tanpa mod. Untuk menolak perintah sebagai gantinya, [tambahkan handler `.catch`](#handle-a-hook-that-fails) ke hook tersebut.

119 

118Untuk bertindak setelah tool berjalan, `await next(e)`, lakukan pekerjaan Anda, dan kembalikan apa yang diberikan `next`. Hook ini mencatat setiap file `.mdx` yang diubah Claude, dengan [`$.ui.log`](https://code.claude.com/docs/id/plugins/mods/api#show-something-without-starting-a-turn), yang menambahkan baris redup ke transkrip yang tidak dibaca Claude:120Untuk bertindak setelah tool berjalan, `await next(e)`, lakukan pekerjaan Anda, dan kembalikan apa yang diberikan `next`. Hook ini mencatat setiap file `.mdx` yang diubah Claude, dengan [`$.ui.log`](https://code.claude.com/docs/id/plugins/mods/api#show-something-without-starting-a-turn), yang menambahkan baris redup ke transkrip yang tidak dibaca Claude:

119 121 

120```javascript theme={null}122```javascript theme={null}


177* **Pengguna mengetik jawaban**: `$.ui.ask` diselesaikan dengan teks yang diketik. Hook membandingkannya dengan `Run it`, jadi teks lain apa pun menolak perintah.179* **Pengguna mengetik jawaban**: `$.ui.ask` diselesaikan dengan teks yang diketik. Hook membandingkannya dengan `Run it`, jadi teks lain apa pun menolak perintah.

178* **Tidak ada yang menjawab**: `$.ui.ask` menolak ketika pengguna menutup pertanyaan atau memilih **Chat about this**, dan dalam eksekusi `claude -p`, sehingga blok `catch` membiarkan jawaban tetap `Refuse`180* **Tidak ada yang menjawab**: `$.ui.ask` menolak ketika pengguna menutup pertanyaan atau memilih **Chat about this**, dan dalam eksekusi `claude -p`, sehingga blok `catch` membiarkan jawaban tetap `Refuse`

179 181 

180Pertahankan penantian di dalam panggilan API mods seperti `$.ui.ask`, karena waktu tersebut tidak dihitung terhadap [batas waktu](https://code.claude.com/docs/id/plugins/mods/reference.md#limits) hook. Waktu yang dihabiskan untuk menunggu promise Anda sendiri tetap dihitung. Claude Code melewati hook yang melampaui batas waktu, sehingga perintah yang ditahan akan berjalan.182Pertahankan penantian di dalam panggilan API mods seperti `$.ui.ask`, karena waktu tersebut tidak dihitung terhadap [batas waktu](https://code.claude.com/docs/id/plugins/mods/reference.md#limits) hook. Waktu yang dihabiskan untuk menunggu promise Anda sendiri tetap dihitung.

183 

184Claude Code melewati hook yang melampaui batas waktu, sehingga perintah yang ditahan akan berjalan. Untuk menolaknya sebagai gantinya, rangkaikan [handler `.catch`](#handle-a-hook-that-fails) ke registrasi yang dikembalikan `on`. Handler tersebut terpisah dari blok `catch` di dalam hook.

181 185 

182#### Setujui atau tolak panggilan tool sebelum pengguna ditanya186#### Setujui atau tolak panggilan tool sebelum pengguna ditanya

183 187 


207 211 

208* **Di `main`**: hook mengembalikan `deny`, bahkan ketika suatu aturan mengizinkan `git push`212* **Di `main`**: hook mengembalikan `deny`, bahkan ketika suatu aturan mengizinkan `git push`

209* **Di branch lain, dan untuk perintah lain**: panggilan mendapatkan keputusan yang akan didapatnya tanpa mod213* **Di branch lain, dan untuk perintah lain**: panggilan mendapatkan keputusan yang akan didapatnya tanpa mod

214* **Hook melempar error atau melampaui batas waktu**: panggilan juga mendapatkan keputusan yang akan didapatnya tanpa mod. Untuk menolak panggilan sebagai gantinya, [tambahkan handler `.catch`](#handle-a-hook-that-fails) yang mengembalikan `{ decision: 'deny', reason: 'the reason' }`.

210 215 

211Hook mencocokkan teks perintah, jadi perlakukan sebagai pengingat untuk Claude. Untuk memblokir push ke `main` bagi semua orang, lindungi branch tersebut di host Git Anda.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.

212 217 


269 274 

270Ketika Anda mengirim prompt seperti `open a PR for this change`, pesan Anda terlihat sama dalam transkrip, dan Claude juga membaca baris seperti `Current branch: feature/auth` setelahnya. Prompt yang tidak menyebutkan pull request diteruskan tanpa perubahan, dan `git` tidak berjalan.275Ketika Anda mengirim prompt seperti `open a PR for this change`, pesan Anda terlihat sama dalam transkrip, dan Claude juga membaca baris seperti `Current branch: feature/auth` setelahnya. Prompt yang tidak menyebutkan pull request diteruskan tanpa perubahan, dan `git` tidak berjalan.

271 276 

272Untuk menghentikan prompt, kembalikan `{ drop: 'the reason' }` tanpa memanggil `next`. Teks tersebut kembali ke input prompt pengguna, dan mereka melihat `Prompt dropped by a hook:` diikuti alasan Anda, jadi tujukan alasan tersebut kepada mereka. Jika hook Anda mengembalikan `drop` setelah panggilan `next(e)`-nya meloloskan prompt, giliran tetap berjalan, dan hook [gagal](#handle-a-hook-that-fails) dengan pesan yang menyertakan `a drop after its next() was answered`.277Untuk menghentikan prompt, kembalikan `{ drop: 'the reason' }` tanpa memanggil `next`. Teks tersebut kembali ke input prompt pengguna, dan mereka melihat `Prompt dropped by a hook:` diikuti alasan Anda, jadi tujukan alasan tersebut kepada mereka. Prompt tetap diteruskan dalam kasus berikut:

278 

279* **Hook Anda mengembalikan `drop` setelah panggilan `next(e)`-nya meloloskan prompt**: giliran tetap berjalan, dan hook [gagal](#handle-a-hook-that-fails) dengan pesan yang menyertakan `a drop after its next() was answered`

280* **Hook Anda melempar error atau melampaui batas waktu**: Claude Code melewatinya dan mengirim prompt. [Tambahkan handler `.catch`](#handle-a-hook-that-fails) agar kegagalan tidak mengirim prompt yang seharusnya dihentikan oleh hook.

273 281 

274[Peristiwa lain](https://code.claude.com/docs/id/plugins/mods/reference.md#prompts-and-what-claude-reads) mencakup sisa apa yang dibaca Claude: `prompt.section` untuk setiap bagian system prompt, `prompt.context` untuk konteks yang dikirim dengan pesan pertama, dan `skill.prompt` untuk teks skill. Teks dari hook ini yang berubah antar permintaan [membatalkan cache prompt](https://code.claude.com/docs/id/prompt-caching.md). Dalam hook `skill.prompt`, Anda juga dapat membaca [dari plugin atau file mana skill tersebut berasal](https://code.claude.com/docs/id/plugins/mods/reference.md#skill-prompt-fields).282[Peristiwa lain](https://code.claude.com/docs/id/plugins/mods/reference.md#prompts-and-what-claude-reads) mencakup sisa apa yang dibaca Claude: `prompt.section` untuk setiap bagian system prompt, `prompt.context` untuk konteks yang dikirim dengan pesan pertama, dan `skill.prompt` untuk teks skill. Teks dari hook ini yang berubah antar permintaan [membatalkan cache prompt](https://code.claude.com/docs/id/prompt-caching.md). Dalam hook `skill.prompt`, Anda juga dapat membaca [dari plugin atau file mana skill tersebut berasal](https://code.claude.com/docs/id/plugins/mods/reference.md#skill-prompt-fields).

275 283 


305 313 

306Untuk melihat panggilan tool yang dijalankan sendiri oleh API selama permintaan, seperti panggilan ke [tool advisor](https://code.claude.com/docs/id/advisor.md), baca `result.serverToolUses`. Claude Code tidak menjalankan panggilan ini, sehingga tidak ada hook `tool.call` atau `tool.check` yang diaktifkan untuk panggilan tersebut. Bidang ini tidak ada ketika respons tidak memiliki panggilan semacam itu, dan memerlukan Claude Code v2.1.290 atau yang lebih baru.314Untuk melihat panggilan tool yang dijalankan sendiri oleh API selama permintaan, seperti panggilan ke [tool advisor](https://code.claude.com/docs/id/advisor.md), baca `result.serverToolUses`. Claude Code tidak menjalankan panggilan ini, sehingga tidak ada hook `tool.call` atau `tool.check` yang diaktifkan untuk panggilan tersebut. Bidang ini tidak ada ketika respons tidak memiliki panggilan semacam itu, dan memerlukan Claude Code v2.1.290 atau yang lebih baru.

307 315 

316### Ubah atau tolak pembacaan pengaturan

317 

318Hook `settings.read` berjalan pada pembacaan oleh mod dan pada pembacaan oleh Claude Code sendiri:

319 

320* **Pembacaan oleh mod**: mod memanggil [`$.settings.read`](https://code.claude.com/docs/id/plugins/mods/api#read-one-source-or-one-key).

321* **Pembacaan oleh Claude Code sendiri**: Claude Code menyusun pengaturan gabungan sesi. Pembacaan ini berulang ketika pengaturan atau plugin yang dimuat berubah.

322 

323Sebelum Anda mengandalkan salah satu pembacaan tersebut, periksa penjaga dan versi Anda:

324 

325* **Penjaga bawaan**: dengan pengaturan terkelola, atau dengan [`/login`](https://code.claude.com/docs/id/authentication#authentication-precedence) Team atau Enterprise sebagai kredensial sesi, [penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#know-what-happens-by-default) dapat melewati hook ini dalam mod yang Anda instal atau muat dengan `--plugin-dir`. Untuk memeriksanya, cari `settings.read bypassed by cc-plugin-sec-default` di [log debug](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#read-the-debug-log). Jika baris dengan teks tersebut menyebutkan mod Anda, minta administrator organisasi Anda untuk [menginstal mod tersebut sebagai salah satu mod organisasi](https://code.claude.com/docs/id/plugins/mods/admin.md#install-your-organizations-mods).

326* **Versi**: peristiwa yang diaktifkan pada pembacaan Claude Code sendiri, dan bidang `e.layers`, memerlukan Claude Code v2.1.304 atau yang lebih baru.

327 

328#### Apa yang diterima hook `settings.read`

329 

330| Bidang | Tipe | Isinya |

331| :- | :- | :- |

332| `e.layers` | array | Satu objek `{ source, settings }` untuk setiap sumber yang digunakan dan berisi pengaturan, mulai dari [prioritas](https://code.claude.com/docs/id/settings.md#settings-precedence) terendah: `plugin`, `user`, `project`, `local`, `flag`, `policy`. Kosong dalam `claude plugin test`. |

333| `e.source` | string | Satu sumber yang diminta mod, seperti dalam `$.settings.read({ source: 'policy' })`. `e.layers` kemudian hanya berisi lapisan tersebut. Tidak ada pada pembacaan Claude Code sendiri dan pada pembacaan lain atas pengaturan gabungan. |

334 

335Dalam `e.layers`, `plugin` berisi pengaturan yang disediakan plugin yang diaktifkan, dan hanya merupakan nama lapisan, bukan `source` yang dapat Anda teruskan ke `$.settings.read`. `flag` berisi pengaturan yang diteruskan dengan `--settings`, dan `policy` berisi pengaturan terkelola.

336 

337#### Bedakan pembacaan Claude Code sendiri dari pembacaan oleh mod

338 

339Pada [pembacaan Claude Code sendiri](#settings-read-hook), [`next.origin`](https://code.claude.com/docs/id/plugins/mods/reference#the-hook-function) adalah `{ plugin: 'engine', tier: 'core' }`, dan pada pembacaan oleh mod, `next.origin.plugin` adalah nama mod yang memanggil.

340 

341#### Apa yang dapat dikembalikan hook `settings.read`

342 

343Hook Anda dapat mengembalikan hasil [`next(e)`](https://code.claude.com/docs/id/plugins/mods/reference#the-hook-function) tanpa perubahan, `{ value }` miliknya sendiri, atau `{ deny: reason }`. Pada [pembacaan Claude Code sendiri](#settings-read-hook) dan pembacaan oleh mod, `{ value }` menggantikan apa yang diberikan pembacaan dan `{ deny: reason }` menolak pembacaan:

344 

345| Nilai kembalian | Pada pembacaan Claude Code sendiri | Pada pembacaan oleh mod |

346| :- | :- | :- |

347| `{ value }` | Untuk setiap kunci yang Anda ubah, apa yang Anda kembalikan menggantikan seluruh nilai kunci tersebut dalam pengaturan gabungan sesi, jika [sesuai dengan skema kunci](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#settings-read-key-refused) | Panggilan mod tersebut diselesaikan dengan `value` Anda, atau dengan `key` yang dimintanya yang diambil dari `value` Anda, jadi kembalikan objek utuh dan bukan array |

348| `{ deny: reason }` | Sesi mempertahankan pengaturan sebagaimana digabungkan sebelum hook mana pun menjawab, dan [log debug mencatat `reason` Anda](https://code.claude.com/docs/id/plugins/mods/troubleshoot#settings-read-refused) | Panggilan mod tersebut ditolak dengan `<calling mod>: $.settings.read: <reason>` |

349 

350Pada pembacaan Claude Code sendiri, susun `{ value }` Anda dari [`value` milik `next(e)`](#settings-read-next), karena kunci yang Anda hilangkan menjadi tidak ditetapkan. Di tempat Claude Code membaca kunci seperti `env` dari setiap sumber secara terpisah, mengubahnya dalam `value` Anda [tidak berpengaruh](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#settings-read-key-no-effect).

351 

352#### Apa yang diberikan `next(e)` kepada hook `settings.read`

353 

354`next(e)` diselesaikan dengan `{ value }` atau dengan `{ deny }`:

355 

356* **`{ value }`**: `value` adalah pengaturan gabungan, atau pengaturan satu sumber ketika [`e.source`](#settings-read-receives) ditetapkan. Jika hook yang [berjalan setelah hook Anda](#the-order-mods-run-in) mengembalikan `{ value }` miliknya sendiri, Anda mendapatkan `value` dari hook tersebut sebagai gantinya.

357* **`{ deny }`**: hook yang berjalan setelah hook Anda menolak pembacaan. Kembalikan `{ deny }` tersebut tanpa perubahan.

358 

359#### Ubah satu pengaturan dari hook `settings.read`

360 

361Pertama, periksa [mod mana yang mendapatkan peristiwa ini, dan sejak versi berapa](#settings-read-hook).

362 

363Untuk mengubah satu kunci, sebarkan `value` dari [`next(e)`](https://code.claude.com/docs/id/plugins/mods/reference#the-hook-function) dan tetapkan kunci tersebut, seperti yang dilakukan hook ini dengan [`spinnerTipsEnabled`](https://code.claude.com/docs/id/settings-reference#spinnertipsenabled). Hook tidak memeriksa [`next.origin`](#settings-read-origin), sehingga hook mengubah kunci tersebut baik pada [pembacaan Claude Code sendiri](#settings-read-hook) maupun pada pembacaan gabungan oleh mod:

364 

365```javascript theme={null}

366on('settings.read', async ($, e, next) => {

367 const read = await next(e)

368 // Pass through a read of one source, so that only the merged settings change.

369 // Pass through a { deny } from a later hook too: it has no value.

370 if (e.source || !read.value) return read

371 // Keep every other key and change this one

372 return { value: { ...read.value, spinnerTipsEnabled: false } }

373})

374```

375 

376Pada pembacaan Claude Code sendiri, jika hook Anda mengembalikan nilai di luar skema kunci, seperti string, hanya kunci tersebut yang mempertahankan nilai yang digabungkan sebelum hook mana pun menjawab. Log debug kemudian menyatakan [`the answer for <key> is no value the key can hold`](https://code.claude.com/docs/id/plugins/mods/troubleshoot#settings-read-key-refused). Jika nilai Anda sesuai dan kunci tetap tidak berubah, lihat [mengapa kunci yang dikembalikan tidak berpengaruh](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#settings-read-key-no-effect).

377 

308### Tangani peristiwa hook pengaturan378### Tangani peristiwa hook pengaturan

309 379 

310Hook pengaturan adalah hook perintah, HTTP, prompt, dan agent yang Anda konfigurasi dalam file pengaturan. Setiap [peristiwa hook pengaturan](https://code.claude.com/docs/id/hooks.md#hook-events), seperti `Stop`, `SessionEnd`, atau `PostToolUse`, juga merupakan peristiwa bernama `classic.` diikuti dengan nama peristiwa hook pengaturan tersebut, seperti `classic.Stop`. `e` adalah JSON yang diterima hook pengaturan di stdin, termasuk `transcript_path`.380Hook pengaturan adalah hook perintah, HTTP, prompt, dan agent yang Anda konfigurasi dalam file pengaturan. Setiap [peristiwa hook pengaturan](https://code.claude.com/docs/id/hooks.md#hook-events), seperti `Stop`, `SessionEnd`, atau `PostToolUse`, juga merupakan peristiwa bernama `classic.` diikuti dengan nama peristiwa hook pengaturan tersebut, seperti `classic.Stop`. `e` adalah JSON yang diterima hook pengaturan di stdin, termasuk `transcript_path`.

Details

508* **`Input`**: mengambil `onSubmit(value)` dan `onInput(value)`508* **`Input`**: mengambil `onSubmit(value)` dan `onInput(value)`

509* **`Select`**: mengambil `onSelect(value)` dengan pilihan dalam `options`, daftar setidaknya satu pilihan dengan nilai unik, seperti `[{ value: 'sm', label: 'Small' }, { value: 'lg', label: 'Large' }]`509* **`Select`**: mengambil `onSelect(value)` dengan pilihan dalam `options`, daftar setidaknya satu pilihan dengan nilai unik, seperti `[{ value: 'sm', label: 'Small' }, { value: 'lg', label: 'Large' }]`

510 510 

511Tes menekan atau mengetik ke kontrol dengan `key`-nya, jadi berikan masing-masing satu. Setiap penggunaan kontrol juga menembakkan [`ui.press`, `ui.input`, atau `ui.select`](https://code.claude.com/docs/id/plugins/mods/reference#interface) dengan `key` dalam `e.element`, dan mod lain dapat menangani event tersebut. Hook-nya berjalan sebelum callback Anda, jadi itu melihat apa yang pengguna ketik ke `Input` Anda dan dapat mengubahnya atau menjawab sebagai pengganti callback Anda. API mods tidak memiliki metode yang menekan tombol mod lain.511### Kontrol mana yang memerlukan `key`

512 

513Berikan prop `key` pada setiap `Input` dan `Select`, seperti `key: 'size'`. `Button` boleh tidak memiliki `key` ketika memiliki prop `label` atau satu anak berupa string. Key-nya kemudian adalah nilai `label` atau string tersebut.

514 

515Tes dan mod lain mengidentifikasi kontrol berdasarkan key-nya:

516 

517* **Tes**: sebuah [tes](https://code.claude.com/docs/id/plugins/mods/test.md#test-a-drawing) menekan atau mengetik ke kontrol berdasarkan key-nya.

518* **Mod lain**: Claude Code menembakkan [`ui.press`, `ui.input`, atau `ui.select`](https://code.claude.com/docs/id/plugins/mods/reference#interface) dengan key kontrol dalam `e.element` sebelum menjalankan callback kontrol tersebut. Hook mod lain untuk event tersebut melihat apa yang pengguna ketik ke `Input` Anda dan dapat mengubah teks itu atau mencegah callback Anda berjalan. API mods tidak memberi mod tersebut metode untuk menekan tombol Anda.

519 

520Jika sebuah pesan mengatakan `needs a key` atau `is drawn twice`, [temukan penyebabnya berdasarkan pesan tersebut](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#needs-a-key).

512 521 

513### Fokus keyboard dan pintasan keyboard522### Fokus keyboard dan pintasan keyboard

514 523 

Details

21| `.claude-plugin/plugin.json` | Ya | [Manifest](https://code.claude.com/docs/id/plugins/manifest-reference.md) plugin. Mod tidak menambahkan field wajib. |21| `.claude-plugin/plugin.json` | Ya | [Manifest](https://code.claude.com/docs/id/plugins/manifest-reference.md) plugin. Mod tidak menambahkan field wajib. |

22| `hooks/hooks.json` | Ya | `modules`: sebuah array dengan satu path, relatif terhadap file ini, ke modul hook, seperti dalam `"modules": ["./register.js"]`. Juga dapat memuat [hook pengaturan](https://code.claude.com/docs/id/hooks.md) di bawah `hooks`. |22| `hooks/hooks.json` | Ya | `modules`: sebuah array dengan satu path, relatif terhadap file ini, ke modul hook, seperti dalam `"modules": ["./register.js"]`. Juga dapat memuat [hook pengaturan](https://code.claude.com/docs/id/hooks.md) di bawah `hooks`. |

23| Modul hook, seperti [`hooks/register.js`](https://code.claude.com/docs/id/plugins/mods/create#write-a-mod-yourself) | Ya | Titik masuk mod. Mengekspor `register(on, options)`. Bernama `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts`, atau `.tsx`. Sebuah modul ES. |23| Modul hook, seperti [`hooks/register.js`](https://code.claude.com/docs/id/plugins/mods/create#write-a-mod-yourself) | Ya | Titik masuk mod. Mengekspor `register(on, options)`. Bernama `.js`, `.mjs`, `.cjs`, `.jsx`, `.ts`, `.mts`, `.cts`, atau `.tsx`. Sebuah modul ES. |

24| [`types/index.d.ts`](https://code.claude.com/docs/id/plugins/mods/interface#declare-the-values), dinamai oleh `types` di manifest | Saat mod menggunakan `$.state` atau menambahkan namespace ke API mod | Mendeklarasikan nilai `PluginState` dan namespace apa pun yang ditambahkan mod |24| [`types/index.d.ts`](https://code.claude.com/docs/id/plugins/mods/interface#declare-the-values), kecuali `types` di manifest menyebutkan path lain | Saat mod menggunakan `$.state` atau menambahkan namespace ke API mod | Mendeklarasikan nilai `PluginState` dan namespace apa pun yang ditambahkan mod. Untuk menghilangkan `types` dari manifest, Anda memerlukan v2.1.299 atau yang lebih baru. |

25| File yang namanya berakhiran `.test.ts` atau `.test.tsx` | Tidak | Tes yang dijalankan oleh [`claude plugin test`](https://code.claude.com/docs/id/plugins/mods/test#write-a-test) |25| File yang namanya berakhiran `.test.ts` atau `.test.tsx` | Tidak | Tes yang dijalankan oleh [`claude plugin test`](https://code.claude.com/docs/id/plugins/mods/test#write-a-test) |

26 26 

27`register` menerima `on` dan `options`. `options` memuat nilai-nilai field [`userConfig`](https://code.claude.com/docs/id/plugins/components#user-configuration) yang dideklarasikan manifest, dengan nilai default yang sudah diisi.27`register` menerima `on` dan `options`. `options` memuat nilai-nilai field [`userConfig`](https://code.claude.com/docs/id/plugins/components#user-configuration) yang dideklarasikan manifest, dengan nilai default yang sudah diisi.


110 110 

111### Perintah dan konfigurasi111### Perintah dan konfigurasi

112 112 

113Event perintah dan konfigurasi dipicu saat perintah dijalankan atau dicantumkan, dan saat baris `/config` ditampilkan atau diubah:113Event perintah dan konfigurasi dipicu saat perintah dijalankan atau dicantumkan, saat baris `/config` ditampilkan atau diubah, dan saat pembacaan pengaturan:

114 114 

115| Event | Dipicu saat | Hook dapat mengembalikan |115| Event | Dipicu saat | Hook dapat mengembalikan |

116| :- | :- | :- |116| :- | :- | :- |


118| `command.describe` | Sekali untuk setiap perintah, untuk daftar perintah | `{ description, argumentHint, isHidden }` |118| `command.describe` | Sekali untuk setiap perintah, untuk daftar perintah | `{ description, argumentHint, isHidden }` |

119| `config.set` | Sebuah baris `/config` akan berubah | `next({ ...e, value })` atau `{ deny: reason }` |119| `config.set` | Sebuah baris `/config` akan berubah | `next({ ...e, value })` atau `{ deny: reason }` |

120| `config.describe` | Sekali untuk setiap baris `/config` | `{ label, description, isHidden }` |120| `config.describe` | Sekali untuk setiap baris `/config` | `{ label, description, isHidden }` |

121| [`settings.read`](https://code.claude.com/docs/id/plugins/mods/events#settings-read-hook) | Sebuah mod memanggil [`$.settings.read`](https://code.claude.com/docs/id/plugins/mods/api#reach-files-processes-and-the-network), atau Claude Code membangun pengaturan gabungan sesi | `next(e)`, `{ value }`, atau `{ deny: reason }` |

122 

123#### `e.layers` dan `e.source` pada `settings.read`

124 

125* **`e.layers`**: satu objek `{ source, settings }` untuk setiap sumber yang digunakan yang memuat pengaturan, dengan [prioritas](https://code.claude.com/docs/id/settings.md#settings-precedence) terendah lebih dulu. Lihat [Apa yang diterima hook `settings.read`](https://code.claude.com/docs/id/plugins/mods/events#settings-read-receives).

126* **`e.source`**: satu sumber yang diminta oleh mod, seperti dalam `$.settings.read({ source: 'policy' })`. Tidak ada pada pembacaan milik Claude Code sendiri dan pada pembacaan lain apa pun atas pengaturan gabungan

127 

128Pada `settings.read`, pemicuan event pada pembacaan milik Claude Code sendiri dan field `e.layers` memerlukan Claude Code v2.1.304 atau yang lebih baru. Untuk kapan hook dijalankan dan apa yang dapat dikembalikan hook, beserta contohnya, lihat [Mengubah atau menolak pembacaan pengaturan](https://code.claude.com/docs/id/plugins/mods/events.md#settings-read-hook).

121 129 

122### Giliran130### Giliran

123 131 

Details

168 168 

169Sebelum v2.1.292, panggilan tersebut dijalankan untuk kedua kalinya, sehingga prompt dikirimkan, perintah dijalankan, atau subagent dimulai dua kali.169Sebelum v2.1.292, panggilan tersebut dijalankan untuk kedua kalinya, sehingga prompt dikirimkan, perintah dijalankan, atau subagent dimulai dua kali.

170 170 

171### `This mod's change didn't load` atau `the earlier version is no longer running`

172 

173Perubahan pada [mod yang ditulis Claude dalam sesi ini](https://code.claude.com/docs/id/plugins/mods/create.md#ask-claude-for-a-mod) tidak dapat dimuat. Baris transkrip dimulai dengan nama mod dan diakhiri dengan alasannya:

174 

175* `This mod's change didn't load, so the earlier version is still running: <reason>.`

176* `This mod didn't load, and the earlier version is no longer running: <reason>.`

177 

178Claude tidak melihat baris ini, jadi tempelkan baris tersebut ke pesan Anda berikutnya saat Anda meminta Claude untuk memperbaikinya.

179 

171### `$.agent.register refused: the hooks module that made the call is no longer loaded`180### `$.agent.register refused: the hooks module that made the call is no longer loaded`

172 181 

173Baris dimulai dengan nama mod Anda, seperti `first-mod: $.agent.register refused: the hooks module that made the call is no longer loaded (it was reloaded or removed)`, dan agent tidak terdaftar. Mod Anda dimuat ulang atau dibongkar sebelum panggilan tersebut. Pemuatan ulang memuat salinan baru dari modul hook, dan panggilan ini berasal dari kode yang masih berjalan di salinan lama, seperti hook yang belum selesai mengembalikan hasil.182Baris dimulai dengan nama mod Anda, seperti `first-mod: $.agent.register refused: the hooks module that made the call is no longer loaded (it was reloaded or removed)`, dan agent tidak terdaftar. Mod Anda dimuat ulang atau dibongkar sebelum panggilan tersebut. Pemuatan ulang memuat salinan baru dari modul hook, dan panggilan ini berasal dari kode yang masih berjalan di salinan lama, seperti hook yang belum selesai mengembalikan hasil.


225 234 

226Baca alasan di baris itu. Penyebab umum adalah prop yang tidak diambil elemen dan elemen yang tidak dimiliki aplikasi.235Baca alasan di baris itu. Penyebab umum adalah prop yang tidak diambil elemen dan elemen yang tidak dimiliki aplikasi.

227 236 

237### `needs a key`, `is drawn twice`, atau `key each once`

238 

239Sebuah elemen di tree yang dikembalikan hook `ui.render` Anda tidak memiliki [`key`](https://code.claude.com/docs/id/plugins/mods/interface#which-controls-need-a-key) yang valid, atau dua elemen menggunakan key yang sama. Temukan pesan yang Anda dapatkan:

240 

241* **`<Input> needs a key` atau `<Select> needs a key`**: elemen tersebut tidak memiliki prop `key`, atau `key`-nya kosong atau bukan string, seperti `key: 3`. Berikan string yang tidak kosong sebagai `key`-nya.

242* **`<Button> needs a key`**: berikan string yang tidak kosong sebagai `key` tombol tersebut

243* **`is drawn twice; each takes its own key`**: dua elemen dari jenis yang disebutkan pesan tersebut memiliki `key` yang sama, seperti `Input "size" is drawn twice; each takes its own key`. Berikan `key` tersendiri untuk setiap elemen.

244* **`key each once` dari `press` dalam [pengujian](https://code.claude.com/docs/id/plugins/mods/test.md#test-a-drawing)**: gambar memiliki lebih dari satu tombol dengan key yang Anda teruskan. Tombol dengan label yang sama dan tanpa prop `key` menggunakan label tersebut sebagai key-nya. Berikan `key` tersendiri untuk setiap tombol.

245 

228### Baris `ui.render` mengatakan `threw while drawn`246### Baris `ui.render` mengatakan `threw while drawn`

229 247 

230Baris tersebut menyebutkan [titik render](https://code.claude.com/docs/id/plugins/mods/reference.md#render-sites), lalu mengatakan `threw while drawn:` dan error-nya, seperti `first-mod: ui.render (ToolUse) threw while drawn: <error>; the engine drew its own`. Claude Code mengalami error tersebut saat menggambar tree yang dikembalikan hook [`ui.render`](https://code.claude.com/docs/id/plugins/mods/reference#interface) Anda, atau saat menggambar titik tersebut dari [`props` yang diteruskan hook Anda ke `next`](https://code.claude.com/docs/id/plugins/mods/interface#change-what-claude-code-already-draws). Akhiran `the engine drew its own` berarti titik tersebut menampilkan konten biasa Claude Code.248Baris tersebut menyebutkan [titik render](https://code.claude.com/docs/id/plugins/mods/reference.md#render-sites), lalu mengatakan `threw while drawn:` dan error-nya, seperti `first-mod: ui.render (ToolUse) threw while drawn: <error>; the engine drew its own`. Claude Code mengalami error tersebut saat menggambar tree yang dikembalikan hook [`ui.render`](https://code.claude.com/docs/id/plugins/mods/reference#interface) Anda, atau saat menggambar titik tersebut dari [`props` yang diteruskan hook Anda ke `next`](https://code.claude.com/docs/id/plugins/mods/interface#change-what-claude-code-already-draws). Akhiran `the engine drew its own` berarti titik tersebut menampilkan konten biasa Claude Code.


303 321 

304[Muat nilai yang disimpan lagi](https://code.claude.com/docs/id/plugins/mods/interface.md#load-a-saved-value-again-after-clear) dalam hook `classic.SessionStart`.322[Muat nilai yang disimpan lagi](https://code.claude.com/docs/id/plugins/mods/interface.md#load-a-saved-value-again-after-clear) dalam hook `classic.SessionStart`.

305 323 

324### Kunci yang dikembalikan hook `settings.read` Anda tidak berlaku

325 

326Entri `env` yang dikembalikan tidak menjadi environment variable. Aturan `allow`, `ask`, dan `deny` yang dikembalikan tidak diperiksa pada panggilan tool. Tetapkan itu di [file pengaturan](https://code.claude.com/docs/id/settings.md), atau panggil [`$.env.set`](https://code.claude.com/docs/id/plugins/mods/api#reach-files-processes-and-the-network) untuk environment variable.

327 

328Untuk kunci lain, periksa [mod mana yang mendapatkan `settings.read` dan sejak versi berapa](https://code.claude.com/docs/id/plugins/mods/events#settings-read-hook), lalu cari `settings.read` di [log debug](#read-the-debug-log) dan temukan salah satu baris berikut:

329 

330| Baris log | Arti dan langkah |

331| :- | :- |

332| `settings.read hook skipped`, setelah nama mod Anda | Hook Anda gagal. [Perbaiki error yang dilaporkan baris tersebut](#hook-skipped). |

333| `settings.read bypassed by cc-plugin-sec-default`, pada baris yang menyebutkan nama mod Anda sebelumnya | [Penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#know-what-happens-by-default) melewati hook Anda. Minta admin organisasi Anda untuk [menginstal mod tersebut sebagai salah satu mod organisasi](https://code.claude.com/docs/id/plugins/mods/admin.md#install-your-organizations-mods). |

334| `settings.read: the answer for <key> is no value the key can hold` | Nilai yang dikembalikan tidak sesuai dengan skema kunci tersebut. [Kembalikan nilai yang diizinkannya](#settings-read-key-refused). |

335| `settings.read: the merge never settles for <key>` | Kunci yang disebutkan baris tersebut mempertahankan nilai dari sumber pengaturan. Tetapkan kunci tersebut di file pengaturan. |

336| `answered settings.read without next()`, setelah nama sebuah mod | Hanya relevan jika mod tersebut [berjalan sebelum mod Anda](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in). Dalam hal itu, hook Anda tidak berjalan pada pembacaan tersebut. [Matikan mod tersebut](https://code.claude.com/docs/id/plugins/mods/overview.md#turn-mods-on-or-off), atau jika organisasi Anda yang men-deploy-nya, minta admin organisasi untuk melakukannya. |

337| `settings.read: refused to the engine` | Pembacaan ditolak, sehingga tidak ada `{ value }` dari hook mana pun yang diterapkan. [Temukan apa yang menolaknya](#settings-read-refused). |

338 

339Jika tidak ada baris yang menjelaskan kunci tersebut, periksa mod yang berjalan sebelum mod Anda untuk menemukan hook `settings.read` yang [mengubah kunci tersebut](https://code.claude.com/docs/id/plugins/mods/events.md#settings-read-example). Matikan mod tersebut, atau minta admin organisasi Anda untuk melakukannya. Jika tidak ada hook yang mengubahnya, tetapkan kunci tersebut di file pengaturan.

340 

341### `the answer for <key> is no value the key can hold`

342 

343Baris [log debug](#read-the-debug-log) ini berarti Claude Code menolak nilai yang dikembalikan hook [`settings.read`](https://code.claude.com/docs/id/plugins/mods/events#settings-read-hook) Anda untuk kunci yang disebutkan, dan hanya untuk kunci tersebut:

344 

345```text theme={null}

346settings.read: the answer for <key> is no value the key can hold; the settings' own value stands

347```

348 

349Nilai yang Anda kembalikan untuk kunci yang disebutkan tidak sesuai dengan skema kunci tersebut, misalnya dari segi tipe atau rentang. Kembalikan nilai yang diizinkan oleh entri kunci tersebut di [referensi pengaturan](https://code.claude.com/docs/id/settings-reference.md). Selama nilai Anda tidak sesuai, kunci tersebut mempertahankan nilai hasil penggabungan dari sumber pengaturan sebelum hook mana pun menjawab. Baris tersebut menyebutnya sebagai nilai milik pengaturan itu sendiri.

350 

351### `settings.read: refused to the engine`

352 

353Baris [log debug](#read-the-debug-log) ini berarti [pembacaan milik Claude Code sendiri](https://code.claude.com/docs/id/plugins/mods/events.md#settings-read-hook) ditolak, sehingga tidak ada `{ value }` dari hook mana pun yang diterapkan, termasuk milik Anda. Ketika sebuah hook `settings.read` menolak pembacaan tersebut dengan [`{ deny: reason }`](https://code.claude.com/docs/id/plugins/mods/events#settings-read-returns), baris tersebut memuat alasan dari hook itu:

354 

355```text theme={null}

356settings.read: refused to the engine (engine: $.settings.read: <reason>); the settings' own values stand

357```

358 

359Cari teks `<reason>` di kode hook Anda sendiri:

360 

361* **Kode Anda memuatnya**: hook Anda menolak pembacaan tersebut. Buat hook Anda mengembalikan `{ value }` ketika [`next.origin`](https://code.claude.com/docs/id/plugins/mods/events#settings-read-origin) menunjukkan pembacaan milik Claude Code sendiri.

362* **Kode Anda tidak memuatnya**: [matikan](https://code.claude.com/docs/id/plugins/mods/overview.md#turn-mods-on-or-off) mod Anda yang lain satu per satu. Setelah setiap langkah, jalankan ulang perintah sesi ini dari shell Anda dengan satu `--debug-file` pada path baru, dan cari `refused to the engine` di file tersebut. Jika baris tersebut ada, matikan mod berikutnya. Jika tidak, mod terakhir yang Anda matikan adalah yang menolak pembacaan tersebut, jadi biarkan tetap mati.

363 

364Jika tidak ada mod lain yang tersisa, gunakan [file pengaturan](https://code.claude.com/docs/id/settings.md) untuk kunci yang dikembalikan hook Anda. Nilai-nilainya tetap berlaku selama pembacaan ditolak.

365 

306## Baca debug log366## Baca debug log

307 367 

308Debug log memiliki baris untuk setiap modul Claude Code dimuat atau menolak, setiap hook yang gagal, dan setiap hasil yang ditolak, jadi di situlah untuk mencari ketika transkrip menunjukkan tidak ada. Untuk menulis satu, di shell Anda mulai Claude Code dengan `--debug`, atau dengan `--debug-file <path>` untuk memilih di mana itu pergi:368Debug log memiliki baris untuk setiap modul Claude Code dimuat atau menolak, setiap hook yang gagal, dan setiap hasil yang ditolak, jadi di situlah untuk mencari ketika transkrip menunjukkan tidak ada. Untuk menulis satu, di shell Anda mulai Claude Code dengan `--debug`, atau dengan `--debug-file <path>` untuk memilih di mana itu pergi:

Details

251 251 

252Pertama periksa repository itu sendiri: `owner/repo` yang salah eja, repository yang tidak ada, atau repository pribadi yang tidak dapat Anda lihat juga berakhir dalam pesan ini. Buka URL repository di browser Anda, atau jalankan `git ls-remote <url>` di terminal Anda, untuk mengonfirmasi bahwa itu ada dan Anda memiliki akses.252Pertama periksa repository itu sendiri: `owner/repo` yang salah eja, repository yang tidak ada, atau repository pribadi yang tidak dapat Anda lihat juga berakhir dalam pesan ini. Buka URL repository di browser Anda, atau jalankan `git ls-remote <url>` di terminal Anda, untuk mengonfirmasi bahwa itu ada dan Anda memiliki akses.

253 253 

254Jika repository benar, penyebabnya adalah kredensial. Claude Code menjalankan git dengan prompt interaktif dinonaktifkan, jadi tidak dapat meminta Anda untuk password, passphrase kunci, atau kredensial seperti yang dilakukan terminal Anda. Jika git perlu meminta, Anda melihat `fatal: Cannot prompt because user interactivity has been disabled` atau `terminal prompts disabled` dalam kesalahan asli. Hanya kredensial yang sudah berfungsi non-interaktif yang berhasil:254Jika repository benar, penyebabnya adalah kredensial. Claude Code mematikan prompt dan program askpass git, termasuk yang diatur di `GIT_ASKPASS`, dan menjalankan SSH dalam mode batch. Ketika git perlu meminta input, kesalahan klon menyertakan `fatal: Cannot prompt because user interactivity has been disabled`, `terminal prompts disabled`, atau `fatal: unable to get password from user`. Hanya kredensial yang dapat diperoleh git tanpa prompt atau program askpass yang berhasil:

255 255 

256* **SSH**: `ssh -T git@<host>` harus berhasil tanpa meminta passphrase, dan host harus sudah ada di `known_hosts`256* **SSH**: `ssh -T git@<host>` harus berhasil tanpa meminta passphrase, dan host harus sudah ada di `known_hosts`

257* **HTTPS**: credential helper Anda harus menyimpan token untuk host. Untuk GitHub, jalankan `gh auth login` dan `gh auth setup-git`. Untuk host lain, simpan personal access token di git credential helper Anda. Uji dengan `git ls-remote <url>`257* **HTTPS**: credential helper Anda harus menyimpan token untuk host. Untuk GitHub, jalankan `gh auth login` dan `gh auth setup-git`. Untuk host lain, simpan personal access token di git credential helper Anda. Untuk menguji, hapus pengaturan `GIT_ASKPASS` di terminal Anda dan jalankan `git -c core.askPass= ls-remote <url>`.

258 258 

259Setelah `git ls-remote` berhasil di terminal Anda tanpa prompt, jalankan add atau update lagi. Penambahan yang berhasil mencetak `Successfully added marketplace: <name>`. Update yang berhasil mencetak `Successfully updated marketplace: <name>` dari shell Anda, atau `✔ Updated 1 marketplace` dalam sesi.259Setelah pemeriksaan untuk protokol Anda berhasil tanpa prompt, jalankan add atau update lagi. Penambahan yang berhasil mencetak `Successfully added marketplace: <name>`. Update yang berhasil mencetak `Successfully updated marketplace: <name>` dari shell Anda, atau `✔ Updated 1 marketplace` dalam sesi.

260 260 

261Untuk membuat Claude Code melewati SSH untuk sumber GitHub `owner/repo`, atur `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`. Tanpanya, Claude Code mengklon sumber-sumber itu melalui SSH ketika kunci SSH untuk `github.com` terlihat dikonfigurasi, dan kembali ke HTTPS ketika klon SSH gagal.261Untuk membuat Claude Code melewati SSH untuk sumber GitHub `owner/repo`, atur `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`. Tanpanya, Claude Code mengklon sumber-sumber itu melalui SSH ketika kunci SSH untuk `github.com` terlihat dikonfigurasi, dan kembali ke HTTPS ketika klon SSH gagal.

262 262 


318 318 

319Jika repository adalah monorepo, batasi checkout ke direktori yang Anda beri nama dengan `claude plugin marketplace add <source> --sparse <paths>`.319Jika repository adalah monorepo, batasi checkout ke direktori yang Anda beri nama dengan `claude plugin marketplace add <source> --sparse <paths>`.

320 320 

321Jika repositori memiliki submodule git yang besar, perbarui Claude Code. Pada v2.1.295 dan yang lebih baru, Claude Code hanya mengambil [submodule yang berisi file plugin](https://code.claude.com/docs/id/plugins/marketplace-reference.md#git-submodules-in-the-marketplace-repository). Versi sebelumnya mengambil setiap submodule, yang dengan sendirinya dapat menghabiskan 120 detik tersebut.

322 

321### Marketplace updates keep failing offline323### Marketplace updates keep failing offline

322 324 

323Anda bekerja di lingkungan di mana host git marketplace tidak dapat dijangkau, dan setiap sesi mengulangi refresh yang gagal di latar belakang. Checkout marketplace Anda yang ada tetap di tempat dan startup tidak tertunda.325Anda bekerja di lingkungan di mana host git marketplace tidak dapat dijangkau, dan setiap sesi mengulangi refresh yang gagal di latar belakang. Checkout marketplace Anda yang ada tetap di tempat dan startup tidak tertunda.


609| `<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. |611| `<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. |

610| `... 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. |612| `... 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. |

611| `... 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. |613| `... 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. |

612| `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. |614| `Dependency "<dep>" (required by <plugin>) is in marketplace "<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. |

613 615 

614Untuk 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: tiga baris pertama adalah `dependency-unsatisfied` dan yang keempat adalah `dependency-version-unsatisfied`.616Untuk 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: tiga baris pertama adalah `dependency-unsatisfied` dan yang keempat adalah `dependency-version-unsatisfied`.

615 617 


979 981 

980### `${CLAUDE_PLUGIN_ROOT}` shows forward slashes on Windows982### `${CLAUDE_PLUGIN_ROOT}` shows forward slashes on Windows

981 983 

982Di Windows, hook plugin menerima `${CLAUDE_PLUGIN_ROOT}` sebagai `C:/Users/you/...` daripada `C:\Users\you\...`, dan script yang mengharapkan backslash rusak.984Di Windows, hook plugin yang berjalan melalui Git Bash menerima `${CLAUDE_PLUGIN_ROOT}` sebagai `C:/Users/you/...` daripada `C:\Users\you\...`, dan script yang mengharapkan backslash rusak.

983 985 

984Claude Code menjalankan hook bentuk shell melalui Git Bash di Windows dan mengganti root plugin dalam bentuk Win32 forward-slash dengan tujuan. Bash builtins, alat MSYS, dan binary Windows asli semuanya menerima bentuk itu.986Dengan Git Bash terinstal, [hook bentuk shell](https://code.claude.com/docs/id/hooks.md#exec-form-and-shell-form) berjalan melalui Git Bash secara default. Untuk hook yang berjalan melalui Git Bash, Claude Code meneruskan path dengan forward slash agar Bash tidak membaca backslash sebagai escape. Bash builtins, alat MSYS, dan binary Windows asli semuanya menerima bentuk itu.

985 987 

986Jika script Anda membutuhkan backslash, alihkan hook ke salah satu bentuk yang menyimpan path asli, dijelaskan di bawah [exec form and shell form](https://code.claude.com/docs/id/hooks.md#exec-form-and-shell-form):988Jika script Anda membutuhkan backslash, alihkan hook ke salah satu bentuk yang menyimpan path asli, dijelaskan di bawah [exec form and shell form](https://code.claude.com/docs/id/hooks.md#exec-form-and-shell-form):

987 989 


1090 1092 

1091Atau, host marketplace dalam repository git dan beri tahu pengguna untuk menambahkannya dengan URL repository. Untuk sumber git, Claude Code mengklon seluruh repository, jadi path relatif diselesaikan. Tipe sumber ada di [marketplace reference](https://code.claude.com/docs/id/plugins/marketplace-reference.md).1093Atau, host marketplace dalam repository git dan beri tahu pengguna untuk menambahkannya dengan URL repository. Untuk sumber git, Claude Code mengklon seluruh repository, jadi path relatif diselesaikan. Tipe sumber ada di [marketplace reference](https://code.claude.com/docs/id/plugins/marketplace-reference.md).

1092 1094 

1095### A root plugin's files from a git submodule are missing after install

1096 

1097Plugin Anda berada di root marketplace dan menjalankan atau membaca file dari submodule git milik repositori. Setelah instalasi, direktori submodule tersebut kosong. Sebelum v2.1.295, Claude Code mengambil setiap submodule, sehingga direktori tersebut terisi.

1098 

1099Ketika Claude Code mengklon marketplace Anda, Claude Code hanya mengambil [submodule yang berisi file plugin](https://code.claude.com/docs/id/plugins/marketplace-reference.md#git-submodules-in-the-marketplace-repository). Untuk plugin di root, Claude Code menentukannya dengan membaca path dalam konfigurasi plugin dan teks file-file plugin. Claude Code tidak dapat melihat path yang dibentuk oleh skrip saat skrip tersebut berjalan.

1100 

1101Tuliskan path ke dalam submodule secara lengkap di tempat yang dapat dibaca Claude Code, seperti `${CLAUDE_PLUGIN_ROOT}/vendor/tool/run.sh` dalam perintah hook. Claude Code kemudian mengambil setiap submodule dalam repositori untuk plugin tersebut.

1102 

1093### Marketplace validation errors1103### Marketplace validation errors

1094 1104 

1095Anda menjalankan `claude plugin validate .` dari direktori marketplace Anda dan itu melaporkan kesalahan atau peringatan pada file marketplace itu sendiri.1105Anda menjalankan `claude plugin validate .` dari direktori marketplace Anda dan itu melaporkan kesalahan atau peringatan pada file marketplace itu sendiri.


1121 1131 

1122### `Marketplace source '<source>' is blocked by enterprise policy`1132### `Marketplace source '<source>' is blocked by enterprise policy`

1123 1133 

1124Anda menjalankan `/plugin marketplace add`, `update`, atau instalasi, dan Claude Code menolak dengan baris ini. Untuk sumber GitHub atau git, host mengikuti sumber dalam tanda kurung, seperti dalam `'github:owner/repo' (github.com)`.1134Anda menjalankan `/plugin marketplace add`, `update`, atau instalasi, dan Claude Code menolak dengan baris ini.

1125 1135 

1126Administrator Anda menetapkan `blockedMarketplaces` atau `strictKnownMarketplaces` dalam pengaturan terkelola, dan sumber ini tidak diizinkan. Minta administrator Anda untuk mengizinkan sumber, atau tambahkan salah satu sumber yang diizinkan yang pesan cantumkan.1136Administrator Anda menetapkan `blockedMarketplaces` atau `strictKnownMarketplaces` dalam pengaturan terkelola, dan sumber ini tidak diizinkan. Minta administrator Anda untuk mengizinkan sumber, atau tambahkan salah satu sumber yang diizinkan yang pesan cantumkan.

1127 1137 

Details

100 100 

101### Mengaktifkan fast mode101### Mengaktifkan fast mode

102 102 

103Mengaktifkan [fast mode](https://code.claude.com/docs/id/fast-mode.md) menambahkan header permintaan yang merupakan bagian dari kunci cache, sehingga permintaan pertama yang dikirim Claude Code dengan fast mode aktif membaca seluruh riwayat percakapan tanpa cache hit. Claude Code menetapkan header itu sekali ketika giliran dimulai dan mempertahankannya selama seluruh giliran, sehingga ketika Anda mengaktifkan fast mode saat Claude sedang bekerja, cache miss akibat header terjadi pada permintaan pertama giliran Anda berikutnya. Token input yang tidak di-cache tersebut ditagih dengan [tarif fast mode](https://code.claude.com/docs/id/fast-mode.md#understand-the-cost-tradeoff), itulah mengapa mengaktifkannya di awal sesi lebih murah daripada mengaktifkannya jauh di tengah sesi yang panjang. Jika model Anda saat ini tidak mendukung fast mode, mengaktifkan fast mode juga [mengganti model Anda](#switching-models), dan pergantian itu dengan sendirinya memulai cache baru sejak permintaan berikutnya dalam giliran yang sedang berjalan.103[Fast mode](https://code.claude.com/docs/id/fast-mode.md) dan kecepatan standar menyimpan cache yang terpisah, sehingga setelah Anda mengaktifkan atau menonaktifkan fast mode, permintaan berikutnya tidak dapat menggunakan apa yang di-cache oleh kecepatan lainnya. Pertama kali Anda mengaktifkan fast mode dalam suatu percakapan, permintaan berikutnya membaca seluruh percakapan sejauh ini tanpa cache dengan [tarif fast mode](https://code.claude.com/docs/id/fast-mode.md#understand-the-cost-tradeoff). Agar biaya tersebut tetap kecil, aktifkan fast mode di awal sesi.

104 104 

105Biaya ini berlaku sekali per percakapan. Setelah giliran fast mode pertama, Claude Code terus mengirim header dan hanya mengubah pengaturan kecepatan permintaan, yang bukan bagian dari kunci cache. Mematikan fast mode, [fallback otomatis ke kecepatan standar](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits) setelah rate limit, dan mengaktifkannya kembali nanti semuanya mempertahankan cache. Jika Anda [kehabisan kredit penggunaan](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits) di tengah sesi, Claude Code mencoba ulang setiap permintaan fast mode yang ditolak dengan kecepatan standar dengan cara yang sama, sehingga fallback ini juga mempertahankan cache. `/clear` dan `/compact` mengatur ulang hal ini, karena keduanya memang membangun ulang cache pada titik-titik tersebut.105* Jika Anda mengaktifkannya saat Claude sedang bekerja, giliran tersebut selesai dengan kecepatan standar, dan Anda membayar pembacaan tanpa cache apa pun pada permintaan pertama giliran Anda berikutnya.

106* Jika model Anda saat ini tidak mendukung fast mode, mengaktifkan fast mode juga [mengganti model Anda ke Opus](https://code.claude.com/docs/id/fast-mode.md#toggle-fast-mode). [Pergantian model](#switching-models) itu dengan sendirinya memulai cache baru sejak permintaan berikutnya dalam giliran yang sedang berjalan.

107 

108Setiap peralihan berikutnya membaca tanpa cache apa pun yang belum di-cache oleh kecepatan tujuan Anda. Perubahan kecepatan yang dilakukan Claude Code dengan sendirinya, seperti [fallback ke kecepatan standar](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits) setelah rate limit dan kembalinya ke fast mode nanti, juga dihitung sebagai peralihan.

106 109 

107### Menghubungkan atau menghapus server MCP110### Menghubungkan atau menghapus server MCP

108 111 


184>187>

185> Compaction menguntungkan Anda ketika konteks yang Anda buang adalah konten yang tidak lagi Anda butuhkan. Untuk memilih kapan overhead-nya terjadi, jalankan `/compact` pada jeda alami dalam pekerjaan Anda, seperti di antara tugas, alih-alih menunggu auto-compaction terpicu di tengah tugas. Jika Anda telah menempuh jalur yang ingin Anda tinggalkan sepenuhnya, gunakan [`/rewind`](#rewinding-the-conversation) ke giliran sebelumnya sebagai gantinya. Rewind memotong kembali ke prefiks yang sudah di-cache, alih-alih membangun prefiks baru seperti yang dilakukan compaction.188> Compaction menguntungkan Anda ketika konteks yang Anda buang adalah konten yang tidak lagi Anda butuhkan. Untuk memilih kapan overhead-nya terjadi, jalankan `/compact` pada jeda alami dalam pekerjaan Anda, seperti di antara tugas, alih-alih menunggu auto-compaction terpicu di tengah tugas. Jika Anda telah menempuh jalur yang ingin Anda tinggalkan sepenuhnya, gunakan [`/rewind`](#rewinding-the-conversation) ke giliran sebelumnya sebagai gantinya. Rewind memotong kembali ke prefiks yang sudah di-cache, alih-alih membangun prefiks baru seperti yang dilakukan compaction.

186 189 

187Jika Anda membiarkan percakapan panjang menganggur dalam sesi terminal saat percakapan tersebut menggunakan [TTL satu jam](#which-ttl-each-request-gets), Claude Code dapat memadatkannya sesaat sebelum cache kedaluwarsa. Untuk menonaktifkan compaction saat menganggur, atur [`idleCompaction`](https://code.claude.com/docs/id/settings-reference#idlecompaction) ke `false`, yang memerlukan Claude Code v2.1.290 atau lebih baru.190Jika Anda membiarkan percakapan panjang menganggur saat percakapan tersebut menggunakan [TTL satu jam](#which-ttl-each-request-gets), Claude Code dapat memadatkannya. Untuk menonaktifkan compaction saat menganggur, atur [`idleCompaction`](https://code.claude.com/docs/id/settings-reference#idlecompaction) ke `false`, yang memerlukan Claude Code v2.1.290 atau lebih baru.

188 191 

189### Mengakumulasi banyak gambar192### Mengakumulasi banyak gambar

190 193 


309 312 

310Di Claude Code, cache secara efektif dicakup ke satu mesin dan direktori. Prompt sistem menanamkan jalur auto memory Anda, dan percakapan dibuka dengan pengumuman direktori kerja, platform, shell, dan versi OS. Dua sesi di direktori berbeda oleh karena itu membangun prefix berbeda dan melewatkan cache satu sama lain.313Di Claude Code, cache secara efektif dicakup ke satu mesin dan direktori. Prompt sistem menanamkan jalur auto memory Anda, dan percakapan dibuka dengan pengumuman direktori kerja, platform, shell, dan versi OS. Dua sesi di direktori berbeda oleh karena itu membangun prefix berbeda dan melewatkan cache satu sama lain.

311 314 

312Sesi yang Anda jalankan secara paralel di direktori yang sama membangun prefix yang cocok dan membaca cache satu sama lain. Sesi berurutan berbagi prefix hanya ketika snapshot status git yang diambil pada startup cocok, karena setiap percakapan juga membawa cabang dan commit terbaru dari snapshot itu.315* Sesi yang Anda jalankan secara paralel di direktori yang sama membangun prefix yang cocok dan dapat membaca cache satu sama lain.

316* Sesi berurutan berbagi prefix hanya ketika snapshot status git yang diambil saat startup cocok, karena setiap percakapan juga membawa branch dan commit terbaru dari snapshot tersebut.

317 

318Cache API yang mendasarinya lebih luas. Cache diisolasi di antara organisasi, dan pada beberapa penyedia, [di antara workspace dalam organisasi](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-storage-and-sharing). Dalam batas-batas itu, dua permintaan berbagi cache hanya ketika model, [kecepatan](#turning-on-fast-mode), dan prefix-nya cocok.

313 319 

314Cache API yang mendasarinya lebih luas. Cache diisolasi di antara organisasi, dan pada beberapa penyedia, [di antara workspace dalam organisasi](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#cache-storage-and-sharing). Dalam batas-batas itu, setiap dua permintaan dengan model dan prefix yang sama membaca cache yang sama. Untuk pemanggil Agent SDK yang menjalankan armada proses otomatis, lihat [improve prompt caching across users and machines](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines) untuk memindahkan lokasi auto memory keluar dari prompt sistem dan berbagi entri cache prompt sistem di seluruh pengguna dan mesin.320Untuk pemanggil Agent SDK yang menjalankan armada proses otomatis, lihat [improve prompt caching across users and machines](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines) untuk memindahkan lokasi auto memory keluar dari system prompt.

315 321 

316## Periksa kinerja cache322## Periksa kinerja cache

317 323 

Details

179* **Diff of your changes**: saat direktori sesi berada di repositori git, panel diff perangkat yang terhubung menampilkan perubahan Anda. Di cabang yang memiliki commit di depan cabang default repositori, panel menampilkan perubahan sejak cabang terpisah darinya, termasuk edit yang belum dilakukan. Di cabang default itu sendiri, atau di cabang yang tidak di depan, panel hanya menampilkan perubahan yang belum dilakukan.179* **Diff of your changes**: saat direktori sesi berada di repositori git, panel diff perangkat yang terhubung menampilkan perubahan Anda. Di cabang yang memiliki commit di depan cabang default repositori, panel menampilkan perubahan sejak cabang terpisah darinya, termasuk edit yang belum dilakukan. Di cabang default itu sendiri, atau di cabang yang tidak di depan, panel hanya menampilkan perubahan yang belum dilakukan.

180* **Model**: saat Anda memilih [model](https://code.claude.com/docs/id/model-config.md) dari perangkat yang terhubung, Claude Code menjalankan sesi pada model itu. Memerlukan Claude Code v2.1.238 atau lebih baru. Model yang Anda pilih dari kontrol model perangkat hanya berlaku untuk sesi saat ini. Saat Anda mengirim `/model <name>` dari perangkat ke sesi interaktif, Claude Code juga menetapkan default Anda untuk sesi baru.180* **Model**: saat Anda memilih [model](https://code.claude.com/docs/id/model-config.md) dari perangkat yang terhubung, Claude Code menjalankan sesi pada model itu. Memerlukan Claude Code v2.1.238 atau lebih baru. Model yang Anda pilih dari kontrol model perangkat hanya berlaku untuk sesi saat ini. Saat Anda mengirim `/model <name>` dari perangkat ke sesi interaktif, Claude Code juga menetapkan default Anda untuk sesi baru.

181* **Effort level**: saat Anda menetapkan [effort level](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) dari perangkat yang terhubung, dengan `/effort` atau kontrol effort perangkat, Claude Code menerapkannya ke sesi di mesin Anda. Jika Anda menyematkan level dengan `CLAUDE_CODE_EFFORT_LEVEL`, sesi menyimpan level itu, dan Claude Code menolak pilihan berbeda dari kontrol effort. Memilih level dari kontrol effort memerlukan Claude Code v2.1.234 atau lebih baru di mesin Anda.181* **Effort level**: saat Anda menetapkan [effort level](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) dari perangkat yang terhubung, dengan `/effort` atau kontrol effort perangkat, Claude Code menerapkannya ke sesi di mesin Anda. Jika Anda menyematkan level dengan `CLAUDE_CODE_EFFORT_LEVEL`, sesi menyimpan level itu, dan Claude Code menolak pilihan berbeda dari kontrol effort. Memilih level dari kontrol effort memerlukan Claude Code v2.1.234 atau lebih baru di mesin Anda.

182* **Reconnecting after a connection failure**: jalankan `/remote-control` untuk terhubung kembali. Jika pemadatan menulis ulang percakapan atau Anda beralih percakapan dengan `/resume` sementara itu, Claude Code mengarsipkan sesi server yang digunakannya bukan meninggalkannya dalam daftar sesi. Anda masih dapat menemukannya dengan [memfilter sesi yang diarsipkan](https://code.claude.com/docs/id/claude-code-on-the-web.md#archive-sessions). Beralih percakapan saat perangkat masih terhubung tidak mengarsipkan sesi.182* **Reconnecting after a connection failure**: jalankan `/remote-control` untuk terhubung kembali. Jika compaction menulis ulang percakapan atau Anda beralih percakapan dengan `/resume` sementara itu, Claude Code mengarsipkan sesi server yang digunakannya bukan meninggalkannya dalam daftar sesi. Anda masih dapat menemukan sesi itu di antara [sesi yang diarsipkan](https://code.claude.com/docs/id/claude-code-on-the-web.md#find-an-archived-session) Anda di claude.ai/code. Beralih percakapan saat perangkat masih terhubung tidak mengarsipkan sesi.

183 183 

184### Enable Remote Control for all sessions184### Enable Remote Control for all sessions

185 185 


401 401 

402## Pemecahan masalah402## Pemecahan masalah

403 403 

404### "Remote Control disconnected" atau "Can't reach"

405 

406Di [claude.ai/code](https://claude.ai/code) atau di aplikasi Desktop, pesan **Remote Control disconnected** atau **Can't reach** berarti browser atau aplikasi Anda kehilangan kontak dengan Claude Code di komputer Anda. Tidak satu pun dari pesan tersebut memberi tahu Anda apakah Claude atau subagent yang sedang Anda pantau masih bekerja di komputer Anda. Di komputer tersebut, periksa keadaan Claude Code dan ikuti langkah yang sesuai untuk terhubung kembali:

407 

408* **Sesi interaktif menampilkan `Remote Control disconnected`**: ikuti [langkah-langkah penyambungan kembali untuk alasan yang diberikan baris tersebut](#session-ended-elsewhere)

409* **Claude Code sedang berjalan dan tidak menampilkan kegagalan**: sesi interaktif terhubung kembali dengan sendirinya setelah mesin aktif dan online, jadi Anda tidak perlu melakukan apa pun. Jika Anda menggunakan `claude remote-control`, lihat **Extended network outage** di bawah [Batasan](#limitations)

410* **Claude Code tidak sedang berjalan**: [jalankan lagi dan pulihkan sesi](#resume-sessions-after-stopping-the-server)

411 

404### "Remote Control requires a claude.ai subscription"412### "Remote Control requires a claude.ai subscription"

405 413 

406Anda tidak masuk dengan akun claude.ai, atau kredensial lain diutamakan daripada login Anda. Pesan ini mengambil salah satu bentuk berikut:414Anda tidak masuk dengan akun claude.ai, atau kredensial lain diutamakan daripada login Anda. Pesan ini mengambil salah satu bentuk berikut:


463* **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.ai471* **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

464* **Dengan `claude remote-control`**: server berhenti dan mengarsipkan sesi yang dilayaninya, lalu keluar472* **Dengan `claude remote-control`**: server berhenti dan mengarsipkan sesi yang dilayaninya, lalu keluar

465 473 

466Anda masih dapat menemukan sesi yang diarsipkan dengan [memfilter sesi yang diarsipkan](https://code.claude.com/docs/id/claude-code-on-the-web.md#archive-sessions).474Untuk menemukan salah satu sesi ini lagi, buka [sesi yang diarsipkan](https://code.claude.com/docs/id/claude-code-on-the-web.md#find-an-archived-session) Anda di claude.ai/code.

467 475 

468Remote 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.476Remote 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.

469 477 

routines.md +24 −4

Details

293 293 

294#### Peristiwa yang didukung294#### Peristiwa yang didukung

295 295 

296Pemicu GitHub dapat berlangganan salah satu kategori peristiwa berikut. Dalam setiap kategori, Anda dapat memilih tindakan tertentu, seperti `pull_request.opened`, atau bereaksi terhadap semua tindakan dalam kategori tersebut.296Pilih peristiwa dari salah satu kategori berikut. Dalam setiap kategori, Anda dapat memilih tindakan tertentu, seperti `pull_request.opened`, atau bereaksi terhadap semua tindakan dalam kategori tersebut.

297 297 

298| Peristiwa | Dipicu ketika |298| Peristiwa | Dipicu ketika |

299| :- | :- |299| :- | :- |

300| Pull request | PR dibuka, ditutup, ditugaskan, diberi label, disinkronkan, atau diperbarui dengan cara lain |300| Pull request | PR dibuka, ditutup, ditugaskan, diberi label, disinkronkan, atau diperbarui dengan cara lain |

301| Release | Rilis dibuat, dipublikasikan, diedit, atau dihapus |301| Release | Rilis dibuat, dipublikasikan, diedit, atau dihapus |

302| Issue | Issue dibuka, diedit, ditutup, dibuka kembali, diberi label, ditugaskan, atau diperbarui dengan cara lain |

302 303 

303#### Filter pull request304#### Filter pull request

304 305 


333 334 

334Klik eksekusi mana pun untuk membukanya sebagai sesi penuh. Dari sana Anda dapat melihat apa yang dilakukan Claude, meninjau perubahan, membuat pull request, atau melanjutkan percakapan. Setiap sesi eksekusi bekerja seperti sesi lainnya: gunakan menu dropdown di sebelah judul sesi untuk mengganti nama, mengarsipkan, atau menghapusnya.335Klik eksekusi mana pun untuk membukanya sebagai sesi penuh. Dari sana Anda dapat melihat apa yang dilakukan Claude, meninjau perubahan, membuat pull request, atau melanjutkan percakapan. Setiap sesi eksekusi bekerja seperti sesi lainnya: gunakan menu dropdown di sebelah judul sesi untuk mengganti nama, mengarsipkan, atau menghapusnya.

335 336 

336> [!NOTE]337Di bawah **History** pada halaman detail tugas, baris setiap eksekusi yang telah selesai diakhiri dengan **Error** jika eksekusi gagal, **Cancelled** jika eksekusi dibatalkan, dan tanpa kedua kata tersebut jika eksekusi berhasil. Filter **Status** menamai ketiga hasil yang sama tersebut **Failed**, **Cancelled**, dan **Succeeded**. Hasil-hasil ini menunjukkan bagaimana sesi berakhir, bukan apakah Claude menyelesaikan pekerjaan yang dijelaskan prompt Anda, jadi buka eksekusi dan baca transkripnya untuk melihat apa yang terjadi.

337>338 

338> Status hijau dalam daftar eksekusi berarti sesi dimulai dan berakhir tanpa error infrastruktur. Ini tidak berarti pekerjaan yang dijelaskan prompt Anda berhasil. Buka eksekusi untuk membaca transkrip dan memastikan apa yang sebenarnya dilakukan Claude. Permintaan jaringan yang diblokir, tool konektor yang hilang, dan kegagalan dalam pekerjaan itu sendiri semuanya muncul di sana, bukan di indikator status.339* **Succeeded**: sesi berakhir tanpa Claude Code melaporkan kegagalan. Permintaan jaringan yang diblokir, tool konektor yang hilang, dan pekerjaan yang tidak dapat diselesaikan Claude muncul di transkrip, bukan di baris tersebut

340* **Failed**: sesi tidak selesai secara normal. Misalnya, sesi berhenti secara tidak terduga, berakhir dengan error, atau diarsipkan sebelum eksekusi dimulai

341* **Cancelled**: eksekusi tidak gagal, dan sesinya diarsipkan. Jika Anda mengarsipkan sesi dari eksekusi yang berhasil, eksekusi tersebut berubah menjadi **Cancelled**. Tidak ada yang perlu diubah pada tugas

342 

343Jika peringatan muncul di bawah **History**, lihat [Peringatan "The last run"](#the-last-run-didnt-start).

339 344 

340### Edit dan kontrol tugas terjadwal345### Edit dan kontrol tugas terjadwal

341 346 


499 504 

500Owner di organisasi Team atau Enterprise Anda kemungkinan telah mematikan toggle **Scheduled tasks (Was Routines)** di [**Organization settings > Capabilities > Remote sessions**](https://claude.ai/admin-settings/capabilities). Pada Claude Code v2.1.227 atau lebih baru, toggle yang sama juga menyembunyikan `/schedule` di CLI. Ini adalah pengaturan organisasi di sisi server, sehingga tidak dapat ditimpa dari konfigurasi lokal Anda. Minta Owner untuk mengaktifkan kembali tugas terjadwal untuk organisasi Anda.505Owner di organisasi Team atau Enterprise Anda kemungkinan telah mematikan toggle **Scheduled tasks (Was Routines)** di [**Organization settings > Capabilities > Remote sessions**](https://claude.ai/admin-settings/capabilities). Pada Claude Code v2.1.227 atau lebih baru, toggle yang sama juga menyembunyikan `/schedule` di CLI. Ini adalah pengaturan organisasi di sisi server, sehingga tidak dapat ditimpa dari konfigurasi lokal Anda. Minta Owner untuk mengaktifkan kembali tugas terjadwal untuk organisasi Anda.

501 506 

507### Peringatan "The last run"

508 

509Ketika sebuah peringatan di bawah **History** diawali dengan "The last run", temukan peringatan tersebut di kolom pertama dan lakukan apa yang disebutkan di barisnya. Peringatan akan hilang setelah run berikutnya dimulai.

510 

511| Peringatan | Yang harus dilakukan |

512| :- | :- |

513| "The last run didn't start because your organization had reached its limit on cloud sessions running at once." | Tugas tidak perlu diubah. Klik **Run now** nanti, atau tunggu run berikutnya |

514| "The last run didn't start because its cloud environment couldn't be found or used." | Di halaman detail tugas, buka menu di samping namanya, pilih **Edit**, dan temukan [pemilih lingkungan cloud](#environments-and-network-access). Jika tertulis **Unavailable environment**, lingkungan tersebut telah diarsipkan atau tidak lagi tersedia untuk akun Anda, jadi pilih lingkungan lain di sana dan simpan perubahan Anda. Jika tidak, coba lagi dengan **Run now** di halaman detail, atau pilih lingkungan lain di pemilih dan simpan perubahan Anda |

515| "The last run was blocked because it couldn't access something it needs, or your organization's policy doesn't allow it." | Pastikan [akses GitHub](#repositories-and-branch-permissions) Anda mencakup repositori tugas tersebut. Jika sudah, tanyakan kepada [Owner](https://code.claude.com/docs/id/server-managed-settings.md#access-control) organisasi Claude Anda apakah ada kebijakan yang memblokir tugas tersebut |

516| "The last run didn't start because of a problem that's usually temporary." | Klik **Run now** untuk mencoba lagi, atau tunggu run berikutnya |

517| "The last run didn't start because its repository or branch wasn't available." | Periksa di GitHub bahwa setiap repositori dalam tugas memiliki [branch tempat run dimulai](#repositories-and-branch-permissions). Periksa juga bahwa [akses GitHub](#repositories-and-branch-permissions) Anda mencakup setiap repositori, dan hubungkan kembali GitHub jika koneksi Anda telah kedaluwarsa |

518| "The last run didn't start because some of its settings weren't accepted." | Di halaman detail tugas, buka menu di samping namanya dan pilih **Edit**. Dialog tidak menandai pengaturan mana yang tidak diterima, jadi periksa setiap pengaturan di sana, termasuk nama tugas, prompt, model, repositori, lingkungan, konektor, dan pemicu |

519| "The last run stopped because a usage limit was reached." | Untuk mengetahui kapan run tugas dapat dimulai lagi setelah batas penggunaan tercapai, lihat [Penggunaan dan batas](#usage-and-limits) |

520| "The last run failed." | Klik **Run now** untuk mencoba lagi, atau tunggu run berikutnya. Run yang gagal tidak memiliki sesi yang dapat dibuka |

521 

502## Sumber daya terkait522## Sumber daya terkait

503 523 

504* [`/loop` dan penjadwalan dalam sesi](https://code.claude.com/docs/id/scheduled-tasks): jadwalkan tugas lokal dalam sesi CLI yang terbuka524* [`/loop` dan penjadwalan dalam sesi](https://code.claude.com/docs/id/scheduled-tasks): jadwalkan tugas lokal dalam sesi CLI yang terbuka

Details

54 54 

55[Mode izin](https://code.claude.com/docs/id/permission-modes.md) memutuskan apakah panggilan alat berjalan dan apakah Anda diminta terlebih dahulu. Isolasi membatasi apa yang dapat diakses perintah setelah berjalan. Keduanya bekerja bersama: ketika mode izin membiarkan tindakan berjalan tanpa bertanya kepada Anda, batas isolasi membatasi apa yang dapat dijangkau tindakan tersebut.55[Mode izin](https://code.claude.com/docs/id/permission-modes.md) memutuskan apakah panggilan alat berjalan dan apakah Anda diminta terlebih dahulu. Isolasi membatasi apa yang dapat diakses perintah setelah berjalan. Keduanya bekerja bersama: ketika mode izin membiarkan tindakan berjalan tanpa bertanya kepada Anda, batas isolasi membatasi apa yang dapat dijangkau tindakan tersebut.

56 56 

57Ketika Anda melewatkan `--dangerously-skip-permissions`, Claude bertindak tanpa bertanya kepada Anda terlebih dahulu. [Tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku.57Ketika Anda melewatkan `--dangerously-skip-permissions`, Claude bertindak tanpa bertanya kepada Anda terlebih dahulu. [Tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku.

58 58 

59Tanpa prompt untuk menangkap kesalahan, batas isolasi yang Anda pilih adalah apa yang melindungi sistem Anda. Selalu jalankan sesi `--dangerously-skip-permissions` di dalam container, VM, atau [sandbox runtime](#sandbox-runtime), sehingga alat file, server MCP, dan hooks juga berada di dalam batas. Pada Linux dan macOS, Claude Code menolak untuk memulai dengan flag ini ketika berjalan sebagai root, jadi jalankan container, VM, atau sandbox runtime sebagai pengguna non-root.59Tanpa prompt untuk menangkap kesalahan, batas isolasi yang Anda pilih adalah apa yang melindungi sistem Anda. Selalu jalankan sesi `--dangerously-skip-permissions` di dalam container, VM, atau [sandbox runtime](#sandbox-runtime), sehingga alat file, server MCP, dan hooks juga berada di dalam batas. Pada Linux dan macOS, Claude Code menolak untuk memulai dengan flag ini ketika berjalan sebagai root, jadi jalankan container, VM, atau sandbox runtime sebagai pengguna non-root.

60 60 


181 181 

182* [Sandboxing](https://code.claude.com/docs/id/sandboxing.md): konfigurasikan alat Bash bersandbox bawaan182* [Sandboxing](https://code.claude.com/docs/id/sandboxing.md): konfigurasikan alat Bash bersandbox bawaan

183* [Dev container](https://code.claude.com/docs/id/devcontainer.md): container pengembangan Docker yang telah dikonfigurasi sebelumnya183* [Dev container](https://code.claude.com/docs/id/devcontainer.md): container pengembangan Docker yang telah dikonfigurasi sebelumnya

184* [Security](https://code.claude.com/docs/id/security.md): model keamanan Claude Code lengkap184* [Keamanan](https://code.claude.com/docs/id/security.md): model keamanan Claude Code lengkap

185* [Secure deployment](https://code.claude.com/docs/id/agent-sdk/secure-deployment.md): panduan isolasi untuk aplikasi Agent SDK185* [Deployment yang aman](https://code.claude.com/docs/id/agent-sdk/secure-deployment.md): panduan isolasi untuk aplikasi Agent SDK

186* [Settings](https://code.claude.com/docs/id/settings-reference.md#sandbox-settings): semua kunci konfigurasi sandbox, termasuk pengiriman pengaturan terkelola186* [Pengaturan](https://code.claude.com/docs/id/settings-reference.md#sandbox-settings): semua kunci konfigurasi sandbox, termasuk pengiriman pengaturan terkelola

sandboxing.md +27 −3

Details

223* **Aturan ask untuk parameter**: tambahkan [aturan ask](https://code.claude.com/docs/id/permissions.md#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 cocok223* **Aturan ask untuk parameter**: tambahkan [aturan ask](https://code.claude.com/docs/id/permissions.md#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

224* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories)**: [Tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) membahas retry yang memunculkan permintaan izin saat pengaturan ini aktif224* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories)**: [Tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) membahas retry yang memunculkan permintaan izin saat pengaturan ini aktif

225 225 

226Selama perintah ditolak dengan [pesan `Sandbox is required`](#commands-refused-with-sandbox-is-required), Claude Code mengabaikan parameter `dangerouslyDisableSandbox` dan juga menolak retry tersebut.

227 

226#### Matikan retry dengan strict sandbox mode228#### Matikan retry dengan strict sandbox mode

227 229 

228Anda dapat menonaktifkan retry tanpa sandbox dengan mengatur `"allowUnsandboxedCommands": false` dalam [pengaturan sandbox](https://code.claude.com/docs/id/settings-reference.md#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`](https://code.claude.com/docs/id/settings-reference#sandbox-failifunavailable). Tab **Overrides** di `/sandbox` menampilkan pengaturan ini sebagai **Strict sandbox mode**.230Anda dapat menonaktifkan retry tanpa sandbox dengan mengatur `"allowUnsandboxedCommands": false` dalam [pengaturan sandbox](https://code.claude.com/docs/id/settings-reference.md#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`](https://code.claude.com/docs/id/settings-reference#sandbox-failifunavailable). Tab **Overrides** di `/sandbox` menampilkan pengaturan ini sebagai **Strict sandbox mode**.


685| :- | :- | :- |687| :- | :- | :- |

686| `/sandbox` | Apa yang dapat diakses perintah Bash setelah berjalan | Batas sandbox itu sendiri, dalam [mode auto-allow](#sandbox-modes) |688| `/sandbox` | Apa yang dapat diakses perintah Bash setelah berjalan | Batas sandbox itu sendiri, dalam [mode auto-allow](#sandbox-modes) |

687| [Auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) | Apakah setiap panggilan alat berjalan | Classifier yang meninjau tindakan |689| [Auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) | Apakah setiap panggilan alat berjalan | Classifier yang meninjau tindakan |

688| `--dangerously-skip-permissions` | Apakah setiap panggilan alat berjalan | Tidak ada. Pemeriksaan [Protected path](https://code.claude.com/docs/id/permission-modes.md#protected-paths) juga dilewati; [tindakan yang tidak ada mode auto-approve](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku |690| `--dangerously-skip-permissions` | Apakah setiap panggilan alat berjalan | Tidak ada. Pemeriksaan [jalur yang dilindungi](https://code.claude.com/docs/id/permission-modes.md#protected-paths) juga dilewati; [tindakan yang tidak disetujui otomatis oleh mode mana pun](https://code.claude.com/docs/id/permission-modes.md#actions-no-mode-auto-approves) masih berlaku |

689 691 

690Mode [auto-allow](#sandbox-modes) sandbox terpisah dari [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode): auto-allow menyetujui perintah Bash karena batas sandbox memuatnya, sementara auto mode menggunakan classifier untuk meninjau tindakan. Keduanya bekerja secara independen dan dapat dikombinasikan, dengan pengecualian yang tercantum di bawah [Sandbox modes](#sandbox-modes). Untuk memilih batas isolasi untuk run tanpa pengawasan, lihat [Sandbox environments](https://code.claude.com/docs/id/sandbox-environments.md#how-isolation-relates-to-permission-modes). Untuk tabel pasangan mode izin dan sandbox umum dengan flag yang memulai masing-masing, lihat [Common setups](https://code.claude.com/docs/id/permission-modes.md#common-setups).692Mode [auto-allow](#sandbox-modes) sandbox terpisah dari [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode): auto-allow menyetujui perintah Bash karena batas sandbox memuatnya, sementara auto mode menggunakan classifier untuk meninjau tindakan. Keduanya bekerja secara independen dan dapat dikombinasikan, dengan pengecualian yang tercantum di bawah [Sandbox modes](#sandbox-modes). Untuk memilih batas isolasi untuk run tanpa pengawasan, lihat [Sandbox environments](https://code.claude.com/docs/id/sandbox-environments.md#how-isolation-relates-to-permission-modes). Untuk tabel pasangan mode izin dan sandbox umum dengan flag yang memulai masing-masing, lihat [Common setups](https://code.claude.com/docs/id/permission-modes.md#common-setups).

691 693 


899 901 

900### File read-only 0-byte muncul di jalur pengaturan `.claude`, dan "Ya, dan jangan tanya lagi" tidak menyimpan902### File read-only 0-byte muncul di jalur pengaturan `.claude`, dan "Ya, dan jangan tanya lagi" tidak menyimpan

901 903 

902Di 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 dihentikan paksa sebelum pembersihan itu berjalan, misalnya oleh SIGKILL, placeholder tetap tertinggal. Sesi berikutnya mengikat placeholder tersebut sebagai read-only lagi pada setiap awal, sehingga penulisan pengaturan seperti menyimpan pilihan izin gagal di jalur tempat placeholder masih ada.904Di 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.

905 

906Placeholder tetap tertinggal dalam kasus-kasus seperti berikut:

907 

908* Sesi dihentikan paksa sebelum pembersihan itu berjalan, misalnya oleh SIGKILL

909* Sesi keluar saat perintah sandboxed masih berjalan, seperti perintah latar belakang

903 910 

904Jalankan `claude doctor` di terminal Anda untuk membuat daftar file placeholder yang tersisa. Peringatan [`Sandbox mask files left behind at write-deny paths`](https://code.claude.com/docs/id/errors#stale-sandbox-mask-files-left-by-a-killed-session) menyebutkan beberapa 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.911Sesi berikutnya mengikat placeholder tersebut sebagai read-only lagi pada setiap awal, sehingga penulisan pengaturan seperti menyimpan pilihan izin gagal di jalur tempat placeholder masih ada.

912 

913Jalankan `claude doctor` di terminal Anda untuk membuat daftar file placeholder yang tersisa. Peringatan [`Sandbox mask files left behind at write-deny paths`](https://code.claude.com/docs/id/errors#stale-sandbox-mask-files-left-by-a-killed-session) menyebutkan beberapa 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 ketika sesi dihentikan paksa, tanpa menandainya.

905 914 

906### `git` melalui SSH gagal saat sandbox aktif915### `git` melalui SSH gagal saat sandbox aktif

907 916 


1000 1009 

1001Sebelum v2.1.284, proxy terhubung ke alamat apa pun tempat hostname yang diizinkan di-resolve.1010Sebelum v2.1.284, proxy terhubung ke alamat apa pun tempat hostname yang diizinkan di-resolve.

1002 1011 

1012### Perintah ditolak dengan `Sandbox is required`

1013 

1014Jika Anda mewajibkan sandbox dengan [`sandbox.failIfUnavailable`](https://code.claude.com/docs/id/settings-reference#sandbox-failifunavailable) dan sandbox gagal dengan salah satu cara berikut setelah Claude Code dimulai, setiap perintah sandboxed yang dijalankan Claude ditolak dengan pesan yang ditampilkan. Sesi tetap berjalan, dan perintah yang ditolak tidak berjalan tanpa sandbox:

1015 

1016* **`Sandbox is required but failed to initialize: <reason>`**: Claude Code sudah dimulai, tetapi sandbox kemudian gagal diinisialisasi. Lakukan langkah yang diberikan oleh pesan tersebut: `Restart to retry.` atau `Fix the sandbox settings to retry`.

1017* **`Sandbox is required (sandbox.failIfUnavailable) and stopped being available in this session: <reason>`**: di Linux atau WSL2, sandbox sudah dimulai lalu Claude Code menemukan adanya dependensi yang hilang. Perbaiki apa yang disebutkan dalam alasan tersebut, seperti [menginstal dependensi yang hilang](#set-up-linux-and-wsl2), lalu mulai ulang Claude Code.

1018 

1019Perintah yang dikecualikan dan perintah yang Anda ketik sendiri tetap berjalan, dan Claude tidak dapat mencoba ulang perintah yang ditolak tanpa sandbox:

1020 

1021* **Perintah yang dikecualikan**: perintah yang cocok dengan entri [`excludedCommands`](#run-commands-outside-the-sandbox-with-excludedcommands) tetap berjalan di luar sandbox. Ketika salah satunya menulis ke jalur [`filesystem.allowWrite`](https://code.claude.com/docs/id/settings-reference#sandbox-filesystem-allowwrite) di luar direktori kerja Anda, penulisan itu melewati alur izin reguler. Di bawah [sandbox yang wajib oleh admin](#repository-settings-under-an-admin-required-sandbox), Claude Code mengabaikan entri dari pengaturan repositori

1022* **Perintah yang Anda ketik di [prompt mode shell `!`](https://code.claude.com/docs/id/interactive-mode#shell-mode-with-prefix)**: tetap berjalan di luar sandbox. Dalam [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), perintah tersebut juga ditolak

1023* **Retry tanpa sandbox**: Claude Code mengabaikan parameter `dangerouslyDisableSandbox` dari [retry tanpa sandbox](#the-unsandboxed-retry-escape-hatch)

1024 

1025Dalam sesi Linux dengan `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` ditetapkan, setiap perintah berjalan di dalam sandbox, sehingga perintah yang dikecualikan dan perintah yang Anda ketik juga ditolak.

1026 

1003### `/sandbox` gagal dengan `Sandbox settings are overridden by a higher-priority configuration`1027### `/sandbox` gagal dengan `Sandbox settings are overridden by a higher-priority configuration`

1004 1028 

1005`/sandbox` mencetak `Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.` alih-alih membuka panelnya ketika [tingkat pengaturan](https://code.claude.com/docs/id/settings.md#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.1029`/sandbox` mencetak `Error: Sandbox settings are overridden by a higher-priority configuration and cannot be changed locally.` alih-alih membuka panelnya ketika [tingkat pengaturan](https://code.claude.com/docs/id/settings.md#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.

Details

787 787 

788Untuk urutan penerapan sumber-sumber ini, lihat [prioritas pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence).788Untuk urutan penerapan sumber-sumber ini, lihat [prioritas pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence).

789 789 

790Ketika bidang kontrol Anthropic memasok sesi dengan [Claude Code hooks](https://code.claude.com/docs/id/hooks.md), runner memasangnya bersama, bukan di atas, konfigurasi Anda sendiri. Memerlukan Claude Code v2.1.229 atau lebih baru.790Ketika bidang kontrol Anthropic memasok sesi dengan [Claude Code hooks](https://code.claude.com/docs/id/hooks.md), runner memasangnya bersama, bukan di atas, konfigurasi Anda sendiri. Memerlukan Claude Code v2.1.229 atau lebih baru; runner yang lebih lama mengabaikan hook yang dipasok. Hook yang dipasok menjalankan `python3`, jadi pasang `python3` di [image runner](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#build-the-runner-image) Anda.

791 791 

792* **Di mana mereka mendarat**: runner menulis setiap skrip hook yang disediakan ke subdirektori `hooks/.ccr-launcher/` yang dicadangkan dari direktori konfigurasi sesi dan mendaftarkan skrip dalam file pengaturan terpisah yang dilewatkan ke sesi dengan `--settings`, meninggalkan `settings.json` yang ditanam dan skrip Anda sendiri di `hooks/<name>` tidak tersentuh. Runner membuat ulang subdirektori yang dicadangkan untuk setiap sesi dan tidak menabur konten host di `~/.claude/hooks/.ccr-launcher/` ke dalam sesi.792* **Di mana mereka mendarat**: runner menulis setiap skrip hook yang disediakan ke subdirektori `hooks/.ccr-launcher/` yang dicadangkan dari direktori konfigurasi sesi dan mendaftarkan skrip dalam file pengaturan terpisah yang dilewatkan ke sesi dengan `--settings`, meninggalkan `settings.json` yang ditanam dan skrip Anda sendiri di `hooks/<name>` tidak tersentuh. Runner membuat ulang subdirektori yang dicadangkan untuk setiap sesi dan tidak menabur konten host di `~/.claude/hooks/.ccr-launcher/` ke dalam sesi.

793* **Siapa yang menulisnya**: bidang kontrol mengisinya dari konstanta tetap dalam deployment-nya sendiri, tidak pernah dari input per-sesi atau pihak ketiga.793* **Siapa yang menulisnya**: bidang kontrol mengisinya dari konstanta tetap dalam deployment-nya sendiri, tidak pernah dari input per-sesi atau pihak ketiga.

Details

348 348 

349Resep di bawah menggunakan `--capacity 4`, jadi satu kontainer melayani hingga empat sesi bersamaan dari pemilik terkunci yang sama. Itu tidak memberikan isolasi kontainer per-sesi dalam [bagian pengerasan](#harden-your-deployment): sebelum menghubungkan lingkungan ke sistem produksi, jalankan resep pada `--capacity 1` dengan satu kontainer per sesi, atau gunakan [runner on-demand](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#on-demand-runners), yang juga menjaga rahasia lingkungan dari host yang menjalankan sesi. Jika Anda menambahkan [proxy git Anthropic](#use-the-anthropic-git-proxy) ke salah satu resep ini, juga ubah `--capacity` menjadi `1`.349Resep di bawah menggunakan `--capacity 4`, jadi satu kontainer melayani hingga empat sesi bersamaan dari pemilik terkunci yang sama. Itu tidak memberikan isolasi kontainer per-sesi dalam [bagian pengerasan](#harden-your-deployment): sebelum menghubungkan lingkungan ke sistem produksi, jalankan resep pada `--capacity 1` dengan satu kontainer per sesi, atau gunakan [runner on-demand](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#on-demand-runners), yang juga menjaga rahasia lingkungan dari host yang menjalankan sesi. Jika Anda menambahkan [proxy git Anthropic](#use-the-anthropic-git-proxy) ke salah satu resep ini, juga ubah `--capacity` menjadi `1`.

350 350 

351Dockerfile ini adalah titik awal minimal:351Dockerfile ini adalah titik awal minimal. Dockerfile ini menginstal `python3` karena [hook yang disediakan control plane Anthropic](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled) untuk sesi Claude Tag, termasuk hook yang membuat Claude memposting balasannya di Slack, menjalankan `python3`. Pertahankan `python3` pada `PATH` di gambar apa pun yang melayani sesi Claude Tag:

352 352 

353```dockerfile theme={null}353```dockerfile theme={null}

354FROM debian:bookworm-slim354FROM debian:bookworm-slim

355ARG CLAUDE_CODE_VERSION355ARG CLAUDE_CODE_VERSION

356RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq \356RUN apt-get update && apt-get install -y --no-install-recommends git curl ca-certificates openssh-client jq python3 \

357 && rm -rf /var/lib/apt/lists/*357 && rm -rf /var/lib/apt/lists/*

358RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \358RUN curl -fsSL "https://downloads.claude.ai/claude-code-releases/${CLAUDE_CODE_VERSION:?set with --build-arg CLAUDE_CODE_VERSION}/linux-x64/claude" \

359 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude359 -o /usr/local/bin/claude && chmod +x /usr/local/bin/claude


363ENTRYPOINT ["claude"]363ENTRYPOINT ["claude"]

364```364```

365 365 

366Tukar `linux-x64` untuk `linux-arm64` jika node Anda adalah ARM, atau untuk `linux-x64-musl` atau `linux-arm64-musl` pada gambar berbasis musl seperti Alpine; lihat [Alpine Linux setup](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions) untuk paket tambahan yang dibutuhkan gambar musl. URL adalah lokasi rilis Claude Code standar, jadi Anda dapat memverifikasi biner yang diunduh terhadap manifes yang ditandatangani rilis seperti yang dijelaskan dalam [Binary integrity and code signing](https://code.claude.com/docs/id/setup.md#binary-integrity-and-code-signing). Runner memerlukan Claude Code versi 2.1.224 atau lebih baru. Bangun gambar, kemudian dorong ke registri Anda dan referensikan dalam resep di bawah:366Tukar `linux-x64` untuk `linux-arm64` jika node Anda adalah ARM, atau untuk `linux-x64-musl` atau `linux-arm64-musl` pada gambar berbasis musl seperti Alpine; lihat [Alpine Linux setup](https://code.claude.com/docs/id/setup.md#alpine-linux-and-musl-based-distributions) untuk paket tambahan yang dibutuhkan gambar musl. URL adalah lokasi rilis Claude Code standar, jadi Anda dapat memverifikasi biner yang diunduh terhadap manifes yang ditandatangani rilis seperti yang dijelaskan dalam [Binary integrity and code signing](https://code.claude.com/docs/id/setup.md#binary-integrity-and-code-signing). Runner memerlukan Claude Code versi 2.1.224 atau lebih baru, atau 2.1.229 atau lebih baru untuk melayani sesi Claude Tag. Bangun gambar, kemudian dorong ke registri Anda dan referensikan dalam resep di bawah:

367 367 

368```bash theme={null}368```bash theme={null}

369docker build \369docker build \


768 * **Dengan hook `checkout`**: repositori yang di-checkout melalui [hook siklus hidup `checkout`](https://code.claude.com/docs/id/self-hosted-environments-configuration#checkout) tidak di-push. Buat snapshot repositori tersebut dari [hook `post-session`](https://code.claude.com/docs/id/self-hosted-environments-configuration#post-session) sebagai gantinya.768 * **Dengan hook `checkout`**: repositori yang di-checkout melalui [hook siklus hidup `checkout`](https://code.claude.com/docs/id/self-hosted-environments-configuration#checkout) tidak di-push. Buat snapshot repositori tersebut dari [hook `post-session`](https://code.claude.com/docs/id/self-hosted-environments-configuration#post-session) sebagai gantinya.

769 * **Sebelum mengaktifkan flag ini**: batasi siapa yang dapat melakukan push ke ref `claude/*` pada remote sumber. Saat dilanjutkan, runner mengambil branch yang sebelumnya di-push tanpa memverifikasi siapa yang melakukan push-nya.769 * **Sebelum mengaktifkan flag ini**: batasi siapa yang dapat melakukan push ke ref `claude/*` pada remote sumber. Saat dilanjutkan, runner mengambil branch yang sebelumnya di-push tanpa memverifikasi siapa yang melakukan push-nya.

770 * **Perubahan yang belum di-commit tetap hilang**: untuk meminta Claude melakukan commit dan push ketika selesai merespons, lihat [Prompt sessions to push their work](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)770 * **Perubahan yang belum di-commit tetap hilang**: untuk meminta Claude melakukan commit dan push ketika selesai merespons, lihat [Prompt sessions to push their work](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#prompt-sessions-to-push-their-work)

771* **Perintah yang terputus karena runner yang hilang dapat berjalan lagi**: ketika sesi dilanjutkan di runner lain, Claude melihat panggilan tool yang terinterupsi dengan hasil yang menyatakan bahwa hasil akhirnya tidak diketahui.

771* **Repositori yang ditambahkan di tengah sesi dapat gagal diklon**: Claude mengklonnya dengan `git clone` melalui HTTPS. Pada runner tanpa [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), klon gagal dengan kesalahan autentikasi git jika tidak ada apa pun di host yang dapat membaca repositori tersebut. Jika memungkinkan, pilih setiap repositori yang dibutuhkan sesi ketika Anda membuatnya.772* **Repositori yang ditambahkan di tengah sesi dapat gagal diklon**: Claude mengklonnya dengan `git clone` melalui HTTPS. Pada runner tanpa [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), klon gagal dengan kesalahan autentikasi git jika tidak ada apa pun di host yang dapat membaca repositori tersebut. Jika memungkinkan, pilih setiap repositori yang dibutuhkan sesi ketika Anda membuatnya.

772* **Beberapa konektor tidak muncul dalam sesi yang di-host sendiri**: konektor yang belum Anda hubungkan dalam pengaturan claude.ai tidak terdaftar dalam sesi yang di-host sendiri, dan sesi tidak akan meminta Anda untuk menghubungkannya. Hubungkan dalam Pengaturan terlebih dahulu, kemudian mulai sesi segar. Menambahkan konektor ke sesi yang sudah berjalan juga tidak membuat alat-alatnya tersedia untuk Claude; mulai sesi segar untuk mengambil konektor yang baru ditambahkan.773* **Beberapa konektor tidak muncul dalam sesi yang di-host sendiri**: konektor yang belum Anda hubungkan dalam pengaturan claude.ai tidak terdaftar dalam sesi yang di-host sendiri, dan sesi tidak akan meminta Anda untuk menghubungkannya. Hubungkan dalam Pengaturan terlebih dahulu, kemudian mulai sesi segar. Menambahkan konektor ke sesi yang sudah berjalan juga tidak membuat alat-alatnya tersedia untuk Claude; mulai sesi segar untuk mengambil konektor yang baru ditambahkan.

773* **Ketika seseorang mengarsipkan atau menghapus sesi, atau melepaskan runner-nya dari menu sesi**: jangan mengandalkan push [`--push-outcome-on-release`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags). Untuk menyimpan commit dalam kasus tersebut, push `HEAD` ke branch penyelamat dari [hook `post-session`](https://code.claude.com/docs/id/self-hosted-environments-configuration#post-session). Jika Anda memulai dari contoh di sana, ubah agar contoh tersebut melakukan push bahkan ketika tidak ada perubahan yang belum di-commit, karena contoh tersebut hanya melakukan push setelah commit snapshot.774* **Ketika seseorang mengarsipkan atau menghapus sesi, atau melepaskan runner-nya dari menu sesi**: jangan mengandalkan push [`--push-outcome-on-release`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags). Untuk menyimpan commit dalam kasus tersebut, push `HEAD` ke branch penyelamat dari [hook `post-session`](https://code.claude.com/docs/id/self-hosted-environments-configuration#post-session). Jika Anda memulai dari contoh di sana, ubah agar contoh tersebut melakukan push bahkan ketika tidak ada perubahan yang belum di-commit, karena contoh tersebut hanya melakukan push setelah commit snapshot.


824 Setelah runner ditingkatkan atau penyebabnya diperbaiki, coba ulang sesi tersebut atau mulai sesi baru. Jika tidak ada pemeriksaan ini yang menemukan penyebabnya, [laporkan masalah](#report-an-issue).825 Setelah runner ditingkatkan atau penyebabnya diperbaiki, coba ulang sesi tersebut atau mulai sesi baru. Jika tidak ada pemeriksaan ini yang menemukan penyebabnya, [laporkan masalah](#report-an-issue).

825 826 

826 Untuk sumber tempat sesi mendorong hasil, branch yang dihapus menggagalkan sesi. Untuk sumber git yang hanya dibaca oleh sesi, runner melewati sumber tersebut dan melanjutkan dengan sumber lainnya. Runner menggagalkan sesi ketika melewati sumber akan membuat sesi tidak memiliki repositori sama sekali. Sebelum v2.1.228, sesi semacam itu dimulai di direktori kosong.827 Untuk sumber tempat sesi mendorong hasil, branch yang dihapus menggagalkan sesi. Untuk sumber git yang hanya dibaca oleh sesi, runner melewati sumber tersebut dan melanjutkan dengan sumber lainnya. Runner menggagalkan sesi ketika melewati sumber akan membuat sesi tidak memiliki repositori sama sekali. Sebelum v2.1.228, sesi semacam itu dimulai di direktori kosong.

828* **Claude Tag terkadang tidak memposting balasannya di Slack**: pengingat balasan adalah [hook yang disediakan oleh control plane](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled). Pastikan runner adalah Claude Code v2.1.229 atau yang lebih baru dengan `claude --version`, karena runner yang lebih lama mengabaikan hook yang disediakan; pastikan `python3 --version` berhasil di dalam image runner, karena hook tersebut menjalankan `python3`; dan pastikan tidak ada file pengaturan yang mematikan hook, baik `disableAllHooks` di `managed-settings.json`, `~/.claude/settings.json` milik pengguna runner, atau `.claude/settings.json` atau `.claude/settings.local.json` milik repositori, maupun `allowManagedHooksOnly` atau [`strictPluginOnlyCustomization`](https://code.claude.com/docs/id/settings-reference#strictpluginonlycustomization) yang mencakup hook di pengaturan terkelola.

827* **Sesi dimulai tanpa salah satu repositorinya**: pada runner tanpa [hook `checkout`](https://code.claude.com/docs/id/self-hosted-environments-configuration#checkout), host git dapat menolak pemeriksaan akses runner untuk repositori yang hanya dibaca oleh sesi. Runner kemudian melewati repositori tersebut, mencatat baris `[runner:warn] could not access context source` yang menyebutkan penolakan tersebut, dan memulai sesi dengan repositori lainnya.829* **Sesi dimulai tanpa salah satu repositorinya**: pada runner tanpa [hook `checkout`](https://code.claude.com/docs/id/self-hosted-environments-configuration#checkout), host git dapat menolak pemeriksaan akses runner untuk repositori yang hanya dibaca oleh sesi. Runner kemudian melewati repositori tersebut, mencatat baris `[runner:warn] could not access context source` yang menyebutkan penolakan tersebut, dan memulai sesi dengan repositori lainnya.

828 830 

829 Runner hanya melewati penolakan yang jelas: host menjawab bahwa repositori tidak ditemukan, git tidak menemukan kredensial untuk host tersebut, atau autentikasi gagal. Kegagalan jaringan, timeout, atau HTTP `403` tetap menggagalkan dimulainya sesi, begitu pula penolakan untuk repositori tempat sesi mendorong hasil. Runner tetap menggagalkan sesi yang akan tidak memiliki repositori sama sekali jika dilewati. Dengan [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), runner hanya melewati repositori yang ditolak oleh git proxy itu sendiri.831 Runner hanya melewati penolakan yang jelas: host menjawab bahwa repositori tidak ditemukan, git tidak menemukan kredensial untuk host tersebut, atau autentikasi gagal. Kegagalan jaringan, timeout, atau HTTP `403` tetap menggagalkan dimulainya sesi, begitu pula penolakan untuk repositori tempat sesi mendorong hasil. Runner tetap menggagalkan sesi yang akan tidak memiliki repositori sama sekali jika dilewati. Dengan [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), runner hanya melewati repositori yang ditolak oleh git proxy itu sendiri.

Details

35 35 

36Instal pada host sebelum Anda memulai:36Instal pada host sebelum Anda memulai:

37 37 

38* **Claude Code v2.1.224 atau lebih baru**, dengan salah satu dari [metode instalasi standar](https://code.claude.com/docs/id/setup.md). Runner adalah bagian dari biner `claude` standar, dan versi sebelumnya tidak mengenali subperintah `self-hosted-runner`. Untuk menyematkan versi yang tepat yang dijalankan armada Anda, lihat [Instal versi tertentu](https://code.claude.com/docs/id/setup.md#install-a-specific-version). Untuk gambar kontainer, lihat Dockerfile di [Terapkan ke produksi](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#build-the-runner-image).38* **Claude Code v2.1.224 atau lebih baru**, dengan salah satu dari [metode instalasi standar](https://code.claude.com/docs/id/setup.md). Runner adalah bagian dari biner `claude` standar, dan versi sebelumnya tidak mengenali subperintah `self-hosted-runner`. Runner yang melayani sesi Claude Tag memerlukan v2.1.229 atau lebih baru serta `python3` pada `PATH`-nya, karena [hook yang disediakan oleh control plane](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#how-each-session’s-config-is-assembled) untuk sesi tersebut menjalankan `python3`. Untuk menyematkan versi yang tepat yang dijalankan armada Anda, lihat [Instal versi tertentu](https://code.claude.com/docs/id/setup.md#install-a-specific-version). Untuk gambar kontainer, lihat Dockerfile di [Terapkan ke produksi](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#build-the-runner-image).

39* **Git 2.24 atau lebih baru**. Beberapa opsi git pada halaman terapkan memerlukan versi yang lebih baru; [Konfigurasi git](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#configure-git) menyatakan setiap lantai.39* **Git 2.24 atau lebih baru**. Beberapa opsi git pada halaman terapkan memerlukan versi yang lebih baru; [Konfigurasi git](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#configure-git) menyatakan setiap lantai.

40 40 

41Konfirmasi host siap:41Konfirmasi host siap:

Details

52| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Pensiun runner pada timestamp Unix absolut dalam detik, untuk infrastruktur yang membunuh runner pada waktu yang diketahui; [Runner lifecycle](https://code.claude.com/docs/id/self-hosted-environments#runner-lifecycle) menjelaskan urutan release dan cara mengukur margin. Nilai sebelum 2001 atau setelah tahun 5138 ditolak oleh flag dan diabaikan oleh variabel lingkungan. |52| `--retire-at <epoch-seconds>` | `SELF_HOSTED_RUNNER_RETIRE_AT` | unset | Pensiun runner pada timestamp Unix absolut dalam detik, untuk infrastruktur yang membunuh runner pada waktu yang diketahui; [Runner lifecycle](https://code.claude.com/docs/id/self-hosted-environments#runner-lifecycle) menjelaskan urutan release dan cara mengukur margin. Nilai sebelum 2001 atau setelah tahun 5138 ditolak oleh flag dan diabaikan oleh variabel lingkungan. |

53| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Daftar aturan pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) mana yang dikirim control plane bersama sebuah sesi yang boleh mencapai sesi tersebut: `all`, `no-allow`, atau `none`. Lihat [Daftar aturan auto mode](#auto-mode-rule-lists) untuk apa yang diterapkan setiap nilai. Nilai yang tidak valid menghentikan runner saat startup. Memerlukan Claude Code v2.1.295 atau lebih baru. |53| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Daftar aturan pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) mana yang dikirim control plane bersama sebuah sesi yang boleh mencapai sesi tersebut: `all`, `no-allow`, atau `none`. Lihat [Daftar aturan auto mode](#auto-mode-rule-lists) untuk apa yang diterapkan setiap nilai. Nilai yang tidak valid menghentikan runner saat startup. Memerlukan Claude Code v2.1.295 atau lebih baru. |

54| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Berapa lama menunggu proses Claude keluar dengan bersih setelah session berakhir, sebelum force-killing. Naikkan nilai jika hook `SessionEnd` child sendiri memerlukan lebih banyak waktu. |54| `--session-stop-grace-sec <n>` | `SELF_HOSTED_RUNNER_SESSION_STOP_GRACE_MS` | `5` | Berapa lama menunggu proses Claude keluar dengan bersih setelah session berakhir, sebelum force-killing. Naikkan nilai jika hook `SessionEnd` child sendiri memerlukan lebih banyak waktu. |

55| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Lepaskan slot sesi jika child belum memberi sinyal di [activity channel](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#keep-stdin-and-file-descriptor-3-attached) bahwa ia telah diinisialisasi dalam N menit. N menit tersebut dimulai saat child dijalankan, setelah cloning, dan dimulai ulang pada setiap pesan `user` atau `assistant` yang dipancarkan child sebelum ia diinisialisasi atau melaporkan statusnya. Sebelum v2.1.299, timeout ini berhenti berlaku pada pesan semacam itu yang pertama dalam sesi. Untuk pelepasan setelah sinyal init, lihat `--release-idle-session-min`. `0` menonaktifkan. |55| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Berapa lama menunggu proses child yang belum diinisialisasi sebelum melepaskan slot sesi. Lihat [Timeout startup sesi](#session-startup-timeout) untuk kapan penghitungan dimulai dan sesi mana yang tetap dibiarkan berjalan. `0` menonaktifkan timeout. |

56| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Seed kepercayaan yang bertahan untuk setiap path repositori session sehingga `permissions.allow` dan `additionalDirectories` yang berkomitmen repo dihormati. Atur `false` untuk menghapus hibah izin yang berkomitmen repo dan mengonfigurasi aturan allow dalam `settings.json` konfigurasi host sebagai gantinya; pengaturan `sandbox.*` yang berkomitmen repo masih berlaku baik cara, itulah mengapa [repo-settings guard](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#harden-your-deployment) memindainya terlepas dari flag ini. |56| `--trust-workspace [bool]` | `SELF_HOSTED_RUNNER_TRUST_WORKSPACE` | on | Seed kepercayaan yang bertahan untuk setiap path repositori session sehingga `permissions.allow` dan `additionalDirectories` yang berkomitmen repo dihormati. Atur `false` untuk menghapus hibah izin yang berkomitmen repo dan mengonfigurasi aturan allow dalam `settings.json` konfigurasi host sebagai gantinya; pengaturan `sandbox.*` yang berkomitmen repo masih berlaku baik cara, itulah mengapa [repo-settings guard](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#harden-your-deployment) memindainya terlepas dari flag ini. |

57| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clone repositori di github.com melalui [Anthropic git proxy](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy) alih-alih auth git yang dikelola pelanggan. Memerlukan `--capacity 1` dan git 2.32 atau lebih baru; jika tidak, runner menolak untuk dimulai. Menggantikan flag rewrite. |57| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clone repositori di github.com melalui [Anthropic git proxy](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#use-the-anthropic-git-proxy) alih-alih auth git yang dikelola pelanggan. Memerlukan `--capacity 1` dan git 2.32 atau lebih baru; jika tidak, runner menolak untuk dimulai. Menggantikan flag rewrite. |

58 58 


61* **Flag**: startup gagal dengan error.61* **Flag**: startup gagal dengan error.

62* **Variabel lingkungan**: runner menjepit nilai ke ceiling timer daripada menolaknya.62* **Variabel lingkungan**: runner menjepit nilai ke ceiling timer daripada menolaknya.

63 63 

64### Timeout startup sesi

65 

66Jika sebuah sesi kehilangan slotnya selama giliran seperti `/code-review`, perbarui runner dan binary child ke v2.1.309 atau lebih baru. Dari v2.1.299 hingga v2.1.308, runner melepaskan sesi, bahkan di tengah giliran, begitu timeout startup terlewati tanpa pesan `user` atau `assistant`.

67 

68Dengan `--startup-timeout-min <n>`, runner melepaskan slot sesi ketika child-nya belum diinisialisasi dalam `<n>` menit setelah cloning. Selama giliran yang dimulai sebelum child diinisialisasi, sesi mempertahankan slotnya hingga `<n>` menit berlalu tanpa satu baris pun di [activity channel](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#keep-stdin-and-file-descriptor-3-attached) milik child. Setelah child diinisialisasi, runner mengosongkan hitungan tersebut dan `--release-idle-session-min` mengatur pelepasan. Untuk membatasi sesi yang child-nya hidup tetapi macet, atur `--kill-session-after-min`.

69 

64### Daftar aturan auto mode70### Daftar aturan auto mode

65 71 

66`--server-auto-mode-lists` memungkinkan Anda memutuskan aturan pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) mana dari luar runner yang mencapai sesi di runner Anda. Control plane Anthropic dapat mengirim daftar aturan bersama sebuah sesi dan meminta runner untuk menerapkannya. Beberapa entri mungkin merupakan aturan yang ditulis oleh admin organisasi Anda. Daftarnya adalah `environment`, `soft_deny`, dan `allow`:72`--server-auto-mode-lists` memungkinkan Anda memutuskan aturan pengklasifikasi [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) mana dari luar runner yang mencapai sesi di runner Anda. Control plane Anthropic dapat mengirim daftar aturan bersama sebuah sesi dan meminta runner untuk menerapkannya. Beberapa entri mungkin merupakan aturan yang ditulis oleh admin organisasi Anda. Daftarnya adalah `environment`, `soft_deny`, dan `allow`:


374 380 

375#### Menggabungkan metrik sesi dengan metrik runner381#### Menggabungkan metrik sesi dengan metrik runner

376 382 

377Untuk menempatkan metrik milik sesi di samping `claude_code_self_hosted_runner_session_idle_seconds`, lakukan join pada `session_id` milik runner:383Untuk melihat biaya yang telah dihabiskan sesi yang idle, lakukan join `claude_code_self_hosted_runner_session_idle_seconds` milik runner dengan metrik biaya Claude Code pada `ccr_session_id`. Metrik runner tidak membawa label tersebut, jadi berikan label itu dengan `label_replace`, seperti dalam kueri ini:

384 

385```text theme={null}

386sum by (ccr_session_id) (claude_code_cost_usage_total)

387and on (ccr_session_id)

388label_replace(

389 claude_code_self_hosted_runner_session_idle_seconds > 600,

390 "ccr_session_id", "cse_$1", "session_id", "session_(.*)"

391)

392```

393 

394Kueri ini mengembalikan satu hasil per sesi yang idle lebih dari sepuluh menit: biaya dalam dolar AS yang telah dihitung oleh proses Claude Code sesi tersebut sejauh ini. Untuk melakukan join dengan metrik Claude Code lainnya, ganti `claude_code_cost_usage_total` dalam kueri. Kueri ini berfungsi pada `--capacity` berapa pun.

378 395 

379* **Pada `--capacity` di atas satu**: lakukan join secara langsung. Pada `/metrics` milik runner, seri sesi membawa `session_id` yang sama dengan metrik tersebut, dalam bentuk `session_...`.396* **`session_id`**: pada port 9464, label tersebut pada metrik Claude Code berisi [`session.id`](https://code.claude.com/docs/id/monitoring-usage#standard-attributes) milik Claude Code sendiri, yang tidak cocok dengan seri runner mana pun. Join pada label itu tidak mengembalikan apa pun, jadi lakukan join pada `ccr_session_id`.

380* **Pada `--capacity 1`**: lakukan join pada `ccr_session_id` yang dikonversi. Secara default, setiap metrik Claude Code pada port 9464 membawa label tersebut, yang berisi ID sesi dalam bentuk `cse_...`. Dalam label baru, ganti prefiks `cse_` dengan `session_` untuk mendapatkan `session_id` milik runner. `session_id` milik metrik itu sendiri berisi [`session.id`](https://code.claude.com/docs/id/monitoring-usage#standard-attributes) milik Claude Code sendiri, yang tidak cocok dengan seri runner mana pun.397* **Metrik Claude Code tidak memiliki `ccr_session_id`**: periksa bahwa [`OTEL_METRICS_INCLUDE_SESSION_ID`](https://code.claude.com/docs/id/monitoring-usage#metrics-cardinality-control) tidak diatur ke `false`

381 398 

382### Semantik penghitung siklus hidup sesi399### Semantik penghitung siklus hidup sesi

383 400 

settings-reference.md +132 −115

Details

117| [`gcpAuthRefresh`](#gcpauthrefresh) | Segarkan [kredensial Google Cloud](https://code.claude.com/docs/id/google-vertex-ai.md#advanced-credential-configuration) dengan perintah Anda sendiri | Authentication and providers | Any file |117| [`gcpAuthRefresh`](#gcpauthrefresh) | Segarkan [kredensial Google Cloud](https://code.claude.com/docs/id/google-vertex-ai.md#advanced-credential-configuration) dengan perintah Anda sendiri | Authentication and providers | Any file |

118| [`hooks`](#hooks) | Jalankan perintah Anda sendiri sebagai [hooks](https://code.claude.com/docs/id/hooks.md) pada titik dalam siklus hidup Claude Code | Hooks and automation | Any file |118| [`hooks`](#hooks) | Jalankan perintah Anda sendiri sebagai [hooks](https://code.claude.com/docs/id/hooks.md) pada titik dalam siklus hidup Claude Code | Hooks and automation | Any file |

119| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Batasi variabel env mana yang dapat dimasukkan [HTTP hooks](https://code.claude.com/docs/id/hooks.md) ke header | Hooks and automation | Any file |119| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Batasi variabel env mana yang dapat dimasukkan [HTTP hooks](https://code.claude.com/docs/id/hooks.md) ke header | Hooks and automation | Any file |

120| [`idleCompaction`](#idlecompaction) | Hentikan Claude Code dari melakukan compaction pada percakapan panjang saat sesi terminal Anda idle | Memory and context | Any file |120| [`idleCompaction`](#idlecompaction) | Hentikan Claude Code dari melakukan compaction pada percakapan panjang yang sedang Anda tinggalkan | Memory and context | Any file |

121| [`includeCoAuthoredBy`](#includecoauthoredby) | Deprecated; gunakan `attribution` untuk menyembunyikan atau mengubah atribusi commit dan PR | Git and attribution | Any file |121| [`includeCoAuthoredBy`](#includecoauthoredby) | Deprecated; gunakan `attribution` untuk menyembunyikan atau mengubah atribusi commit dan PR | Git and attribution | Any file |

122| [`includeGitInstructions`](#includegitinstructions) | Hapus instruksi commit dan PR bawaan dari konteks Claude | Git and attribution | Any file |122| [`includeGitInstructions`](#includegitinstructions) | Hapus instruksi commit dan PR bawaan dari konteks Claude | Git and attribution | Any file |

123| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Dapatkan [notifikasi push](https://code.claude.com/docs/id/remote-control.md#mobile-push-notifications) ketika Claude menunggu Anda | Remote, desktop, and notifications | Any file |123| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Dapatkan [notifikasi push](https://code.claude.com/docs/id/remote-control.md#mobile-push-notifications) ketika Claude menunggu Anda | Remote, desktop, and notifications | Any file |


1229Di platform yang tidak didukung sandbox, Claude Code tidak dapat dimulai dengan kunci ini aktif. Lihat [Enforce sandboxing with managed settings](https://code.claude.com/docs/id/sandboxing.md#enforce-sandboxing-with-managed-settings).1229Di platform yang tidak didukung sandbox, Claude Code tidak dapat dimulai dengan kunci ini aktif. Lihat [Enforce sandboxing with managed settings](https://code.claude.com/docs/id/sandboxing.md#enforce-sandboxing-with-managed-settings).

1230 1230 

1231* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](https://code.claude.com/docs/id/sandboxing.md#repository-settings-under-an-admin-required-sandbox)1231* **Scope**: [`Any file`](#scopes), dengan [batasan pada pengaturan proyek dan lokal](https://code.claude.com/docs/id/sandboxing.md#repository-settings-under-an-admin-required-sandbox)

1232* **Type**: Boolean1232* **Tipe**: Boolean

1233 * `true`: Claude Code keluar dengan kesalahan saat startup ketika `sandbox.enabled` adalah `true` tetapi sandbox tidak dapat dimulai1233 * `true`: Claude Code keluar dengan error saat startup ketika `sandbox.enabled` bernilai `true` tetapi sandbox tidak dapat dimulai. Jika sandbox lolos pemeriksaan tersebut lalu gagal diinisialisasi, sesi tetap berjalan dan Claude Code [menolak setiap perintah yang di-sandbox](https://code.claude.com/docs/id/sandboxing.md#commands-refused-with-sandbox-is-required)

1234 * `false`: Claude Code menjalankan perintah tanpa sandbox ketika sandbox tidak dapat dimulai1234 * `false`: Claude Code menjalankan perintah tanpa sandbox ketika sandbox tidak dapat dimulai

1235* **Default**: `false`1235* **Default**: `false`

1236 1236 

1237Ini membuat setiap mesin terkelola menjalankan perintah dalam sandbox atau menolak untuk dimulai:1237Contoh ini mengaktifkan sandbox untuk mesin terkelola dan menetapkan `failIfUnavailable` ke `true`:

1238 1238 

1239```json managed-settings.json theme={null}1239```json managed-settings.json theme={null}

1240{1240{


2204 2204 

2205## Memori dan konteks2205## Memori dan konteks

2206 2206 

2207Kontrol apa yang dimuat Claude Code ke dalam konteks, bagaimana cara mengompaknya, dan di mana menyimpan memori dan rencana. Lihat [Kelola konteks](https://code.claude.com/docs/id/context-window.md) dan [Memori](https://code.claude.com/docs/id/memory.md).2207Kendalikan apa yang dimuat Claude Code ke dalam konteks, bagaimana Claude Code melakukan compaction, dan di mana Claude Code menyimpan memori dan rencana. Lihat [Kelola konteks](https://code.claude.com/docs/id/context-window.md) dan [Memori](https://code.claude.com/docs/id/memory.md).

2208 2208 

2209### `autoCompactEnabled`2209### `autoCompactEnabled`

2210 2210 

2211Buat Claude Code [mengompak percakapan secara otomatis](https://code.claude.com/docs/id/context-window.md#when-your-context-fills-up) ketika konteks mendekati batas. Muncul di `/config` sebagai **Auto-compact**, dan mengalihkannya di sana menulis kunci ini ke pengaturan pengguna Anda.2211Minta Claude Code [memadatkan percakapan secara otomatis](https://code.claude.com/docs/id/context-window.md#when-your-context-fills-up) saat konteks mendekati batas. Muncul di `/config` sebagai **Auto-compact**, dan mengubahnya di sana akan menulis kunci ini ke pengaturan pengguna Anda.

2212 2212 

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

2214* **Type**: Boolean2214* **Tipe**: Boolean

2215 * `true`: Claude Code mengompak percakapan secara otomatis ketika konteks mendekati batas2215 * `true`: Claude Code memadatkan percakapan secara otomatis saat konteks mendekati batas

2216 * `false`: Claude Code tidak mengompak secara otomatis2216 * `false`: Claude Code tidak memadatkan secara otomatis

2217* **Default**: `true`2217* **Default**: `true`

2218* **Per-session overrides**: [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/id/env-vars) mematikan auto-compact untuk satu sesi; mana pun dari keduanya yang mematikannya, yang lain tidak dapat menghidupkannya kembali2218* **Override per sesi**: [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/id/env-vars) mematikan auto-compact untuk satu sesi; mana pun dari keduanya yang mematikannya, yang lain tidak dapat menyalakannya kembali

2219 2219 

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

2221{2221{


2223}2223}

2224```2224```

2225 2225 

2226Perintah manual `/compact` terus bekerja saat auto-compact dimatikan. Jika Anda mematikan auto-compact, [idle compaction](#idlecompaction) juga ikut mati.2226Perintah manual `/compact` tetap berfungsi saat auto-compact dimatikan. Jika Anda mematikan auto-compact, [idle compaction](#idlecompaction) juga ikut mati.

2227 2227 

2228### `autoCompactWindow`2228### `autoCompactWindow`

2229 2229 

2230Atur seberapa penuh jendela konteks sebelum Claude Code [mengompak secara otomatis](https://code.claude.com/docs/id/context-window.md#when-your-context-fills-up).2230Atur seberapa penuh context window sebelum Claude Code [melakukan compaction secara otomatis](https://code.claude.com/docs/id/context-window.md#when-your-context-fills-up).

2231 2231 

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

2233* **Type**: jumlah token, dari `100000` hingga `1000000`. Claude Code membatasi nilai pada jendela konteks model Anda; [ringkasan model](https://platform.claude.com/docs/en/about-claude/models/overview) mencantumkan jendela setiap model2233* **Tipe**: jumlah token, dari `100000` hingga `1000000`. Claude Code membatasi nilainya pada context window model Anda; [ikhtisar model](https://platform.claude.com/docs/en/about-claude/models/overview) mencantumkan window setiap model

2234* **Default**: tidak diatur, jadi Claude Code memilih jendela yang disesuaikan untuk model Anda2234* **Default**: tidak diatur, sehingga Claude Code memilih window yang disesuaikan untuk model Anda

2235* **Per-session overrides**: [`--autocompact`](https://code.claude.com/docs/id/cli-reference#cli-flags) diutamakan daripada kunci ini untuk satu sesi, dan [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](https://code.claude.com/docs/id/env-vars) diutamakan daripada keduanya kecuali Claude Code [mengabaikan nilai variabel tersebut](https://code.claude.com/docs/id/model-config.md#claude_code_auto_compact_window-values)2235* **Override per sesi**: [`--autocompact`](https://code.claude.com/docs/id/cli-reference#cli-flags) diutamakan daripada kunci ini untuk satu sesi, dan [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](https://code.claude.com/docs/id/env-vars) diutamakan daripada keduanya kecuali Claude Code [mengabaikan nilai variabel tersebut](https://code.claude.com/docs/id/model-config.md#claude_code_auto_compact_window-values)

2236 2236 

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

2238{2238{


2240}2240}

2241```2241```

2242 2242 

2243Perintah [`/autocompact`](https://code.claude.com/docs/id/commands#all-commands) menyimpan window untuk model saat ini di bawah [`modelSettings`](#modelsettings), yang diutamakan daripada kunci ini dalam file yang sama untuk model tersebut. [Atur window auto-compact](https://code.claude.com/docs/id/model-config.md#set-the-auto-compact-window) mencakup cara perintah, flag, variabel, dan pengaturan berinteraksi.2243Perintah [`/autocompact`](https://code.claude.com/docs/id/commands#all-commands) menyimpan window untuk model saat ini di bawah [`modelSettings`](#modelsettings), yang diutamakan daripada kunci ini dalam file yang sama untuk model tersebut. [Mengatur auto-compact window](https://code.claude.com/docs/id/model-config.md#set-the-auto-compact-window) menjelaskan bagaimana perintah, flag, variabel, dan pengaturan saling berinteraksi.

2244 2244 

2245### `autoMemoryDirectory`2245### `autoMemoryDirectory`

2246 2246 

2247Simpan [memori otomatis](https://code.claude.com/docs/id/memory.md#storage-location) di direktori pilihan Anda alih-alih default per-proyek.2247Simpan [auto memory](https://code.claude.com/docs/id/memory.md#storage-location) di direktori pilihan Anda alih-alih default per proyek.

2248 2248 

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

2250* **Type**: string, jalur direktori absolut atau dengan awalan `~/`2250* **Tipe**: string, path direktori absolut atau berawalan `~/`

2251* **Default**: tidak diatur, jadi Claude Code menggunakan `~/.claude/projects/<project>/memory/`2251* **Default**: tidak diatur, sehingga Claude Code menggunakan `~/.claude/projects/<project>/memory/`

2252 2252 

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

2254{2254{


2256}2256}

2257```2257```

2258 2258 

2259Dari pengaturan proyek atau lokal, Claude Code menghormati kunci ini di bawah [aturan kepercayaan ruang kerja yang sama dengan hooks](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder), karena repositori yang dikloning dapat menyediakan file-file tersebut.2259Dari pengaturan proyek atau lokal, Claude Code menghormati kunci ini berdasarkan [aturan kepercayaan workspace yang sama seperti hook](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder), karena repositori yang di-clone dapat menyediakan file-file tersebut.

2260 2260 

2261### `autoMemoryEnabled`2261### `autoMemoryEnabled`

2262 2262 

2263Hidupkan atau matikan [memori otomatis](https://code.claude.com/docs/id/memory.md#enable-or-disable-auto-memory). Ketika `false`, Claude tidak membaca dari atau menulis ke direktori memori otomatis. Anda juga dapat mengalihkannya dengan `/memory` selama sesi, yang menulis kunci ini ke pengaturan pengguna Anda.2263Nyalakan atau matikan [auto memory](https://code.claude.com/docs/id/memory.md#enable-or-disable-auto-memory). Jika `false`, Claude tidak membaca dari atau menulis ke direktori auto memory. Anda juga dapat mengubahnya dengan `/memory` selama sesi, yang menulis kunci ini ke pengaturan pengguna Anda.

2264 2264 

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

2266* **Type**: Boolean2266* **Tipe**: Boolean

2267 * `true`: sama dengan tidak diatur; memori otomatis tetap aktif kecuali sesuatu yang mengungguli kunci ini mematikannya untuk sesi, seperti `--bare`, mode aman, atau `CLAUDE_CODE_DISABLE_AUTO_MEMORY`2267 * `true`: sama seperti tidak diatur; auto memory tetap menyala kecuali sesuatu yang berprioritas lebih tinggi daripada kunci ini mematikannya untuk sesi tersebut, seperti `--bare`, safe mode, atau `CLAUDE_CODE_DISABLE_AUTO_MEMORY`

2268 * `false`: Claude tidak membaca dari atau menulis ke direktori memori otomatis2268 * `false`: Claude tidak membaca dari atau menulis ke direktori auto memory

2269* **Default**: `true`2269* **Default**: `true`

2270* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](https://code.claude.com/docs/id/env-vars) mengambil alih kunci ini untuk satu sesi, dalam kedua arah2270* **Override per sesi**: [`CLAUDE_CODE_DISABLE_AUTO_MEMORY`](https://code.claude.com/docs/id/env-vars) diutamakan daripada kunci ini untuk satu sesi, ke arah mana pun

2271 2271 

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

2273{2273{


2277 2277 

2278### `bashOutputMaxChars`2278### `bashOutputMaxChars`

2279 2279 

2280Atur berapa banyak karakter dari [output](https://code.claude.com/docs/id/tools-reference.md#output-limits) perintah Bash atau PowerShell yang berhasil yang diterima Claude secara inline. Ketika output melampaui batas, Claude Code menyimpannya ke file dan Claude menerima pratinjau singkat ditambah jalur file. Naikkan batas ketika output perintah, seperti build verbose atau log test-suite lengkap, secara rutin melampaui default dan Anda ingin Claude membacanya tanpa membuka file. Memerlukan Claude Code v2.1.261 atau lebih baru.2280Atur berapa banyak karakter dari [output perintah Bash atau PowerShell yang berhasil yang diterima Claude secara inline](https://code.claude.com/docs/id/tools-reference.md#output-limits). Saat output melewati batas, Claude Code menyimpannya ke file dan Claude menerima pratinjau singkat beserta path file tersebut. Naikkan batasnya saat output perintah, seperti build yang verbose atau log test suite lengkap, secara rutin melebihi default dan Anda ingin Claude membacanya tanpa membuka file. Memerlukan Claude Code v2.1.261 atau yang lebih baru.

2281 2281 

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

2283* **Type**: jumlah karakter, bilangan bulat positif. Claude Code menjepit nilai ke dalam rentang `4000` hingga `128000`2283* **Tipe**: jumlah karakter, bilangan bulat positif. Claude Code membatasi nilainya dalam rentang `4000` hingga `128000`

2284* **Default**: tidak diatur, jadi Claude menerima hingga 30.000 karakter secara inline2284* **Default**: tidak diatur, sehingga Claude menerima hingga 30.000 karakter secara inline

2285 2285 

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

2287{2287{


2289}2289}

2290```2290```

2291 2291 

2292Ketika Anda menetapkan kunci ini, Claude Code mengabaikan variabel lingkungan [`BASH_MAX_OUTPUT_LENGTH`](https://code.claude.com/docs/id/env-vars).2292Saat Anda mengatur kunci ini, Claude Code mengabaikan environment variable [`BASH_MAX_OUTPUT_LENGTH`](https://code.claude.com/docs/id/env-vars).

2293 2293 

2294### `claudeMd`2294### `claudeMd`

2295 2295 

2296Injeksikan instruksi gaya CLAUDE.md sebagai memori yang dikelola organisasi tanpa menerapkan file terpisah. Claude Code memuat teks sebagai entri memori terkelola di depan file CLAUDE.md pengguna dan proyek.2296Sisipkan instruksi bergaya CLAUDE.md sebagai memori yang dikelola organisasi tanpa men-deploy file terpisah. Claude Code memuat teks tersebut sebagai entri memori terkelola sebelum file CLAUDE.md pengguna dan proyek.

2297 2297 

2298* **Scope**: [`Managed`](#scopes)2298* **Cakupan**: [`Managed`](#scopes)

2299* **Type**: string, teks file CLAUDE.md; tuliskan seperti yang Anda lakukan pada file, Markdown disertakan, dengan jeda baris sebagai `\n`2299* **Tipe**: string, teks file CLAUDE.md; tulis seperti Anda menulis file tersebut, termasuk Markdown, dengan jeda baris sebagai `\n`

2300* **Default**: tidak diatur2300* **Default**: tidak diatur

2301 2301 

2302Contoh ini menerapkan dua aturan sebagai daftar Markdown pendek:2302Contoh ini men-deploy dua aturan sebagai daftar Markdown singkat:

2303 2303 

2304```json managed-settings.json theme={null}2304```json managed-settings.json theme={null}

2305{2305{


2307}2307}

2308```2308```

2309 2309 

2310Lihat [Terapkan CLAUDE.md di seluruh organisasi](https://code.claude.com/docs/id/memory.md#deploy-organization-wide-claude-md).2310Lihat [Deploy CLAUDE.md untuk seluruh organisasi](https://code.claude.com/docs/id/memory.md#deploy-organization-wide-claude-md).

2311 2311 

2312### `claudeMdExcludes`2312### `claudeMdExcludes`

2313 2313 

2314Lewati file `CLAUDE.md` tertentu ketika Claude Code memuat [memori](https://code.claude.com/docs/id/memory.md#exclude-specific-claude-md-files). Dalam monorepo besar, gunakan untuk melewati file CLAUDE.md dari tim lain yang tidak relevan dengan pekerjaan Anda; [Kecualikan file CLAUDE.md yang tidak relevan](https://code.claude.com/docs/id/large-codebases.md#exclude-irrelevant-claude-md-files) dalam panduan codebases besar memandu kasus tersebut. Pola cocok dengan jalur file absolut.2314Lewati file `CLAUDE.md` tertentu saat Claude Code memuat [memori](https://code.claude.com/docs/id/memory.md#exclude-specific-claude-md-files). Dalam monorepo besar, gunakan ini untuk melewati file CLAUDE.md dari tim lain yang tidak relevan dengan pekerjaan Anda; [Kecualikan file CLAUDE.md yang tidak relevan](https://code.claude.com/docs/id/large-codebases.md#exclude-irrelevant-claude-md-files) dalam panduan codebase besar membahas kasus tersebut. Pola dicocokkan dengan path file absolut.

2315 2315 

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

2317* **Type**: array string, masing-masing pola glob atau jalur absolut2317* **Tipe**: array string, masing-masing berupa pola glob atau path absolut

2318* **Default**: tidak diatur, jadi Claude Code memuat setiap CLAUDE.md yang ditemukannya2318* **Default**: tidak diatur, sehingga Claude Code memuat setiap CLAUDE.md yang ditemukannya

2319 2319 

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

2321{2321{


2327 2327 

2328### `env`2328### `env`

2329 2329 

2330Atur variabel lingkungan untuk setiap sesi dan untuk subproses yang dimulai Claude Code darinya. Variabel apa pun dalam [referensi variabel lingkungan](https://code.claude.com/docs/id/env-vars.md) dapat masuk di sini, yang merupakan cara Anda menerapkannya ke setiap sesi atau meluncurkannya ke tim Anda. Pengaturan proyek dan lokal tidak dapat menetapkan [beberapa di antaranya](#variables-claude-code-ignores-in-env).2330Atur environment variable untuk setiap sesi dan untuk subproses yang dijalankan Claude Code dari sesi tersebut. Sebagian besar variabel dalam [referensi environment variable](https://code.claude.com/docs/id/env-vars.md) dapat ditempatkan di sini, yang merupakan cara Anda menerapkan variabel ke setiap sesi atau meluncurkannya ke tim Anda. Pengaturan proyek dan lokal tidak dapat mengatur [sebagian di antaranya](#variables-claude-code-ignores-in-env).

2331 2331 

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

2333* **Type**: objek yang memetakan nama variabel ke nilai string2333* **Tipe**: objek yang memetakan nama variabel ke nilai string

2334* **Default**: tidak diatur2334* **Default**: tidak diatur

2335 2335 

2336Contoh ini mematikan pemadatan otomatis dan merutekan permintaan API melalui proxy:2336Contoh ini mematikan compaction otomatis dan merutekan permintaan API melalui proxy:

2337 2337 

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

2339{2339{


2346 2346 

2347#### Bagaimana nilai `env` berinteraksi dengan shell Anda2347#### Bagaimana nilai `env` berinteraksi dengan shell Anda

2348 2348 

2349* Nilai di sini menimpa variabel yang sama yang diekspor di shell Anda, dan ketika lebih dari satu file pengaturan menetapkan variabel, [yang dengan preseden tertinggi](https://code.claude.com/docs/id/settings.md#settings-precedence) berlaku. [Variabel yang Claude Code abaikan dalam `env`](#variables-claude-code-ignores-in-env) mencantumkan pengecualian untuk pengaturan proyek dan lokal.2349* Nilai di sini menimpa variabel yang sama yang diekspor di shell Anda, dan saat lebih dari satu file pengaturan mengatur suatu variabel, yang memiliki [prioritas tertinggi](https://code.claude.com/docs/id/settings.md#settings-precedence) yang berlaku. [Variabel yang diabaikan Claude Code di `env`](#variables-claude-code-ignores-in-env) mencantumkan pengecualian untuk pengaturan proyek dan lokal.

2350* Ketika aplikasi Claude Desktop atau [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments) runner memulai sesi, lingkungan peluncuran yang dibangunnya mengambil alih: Claude Code mengabaikan nilai `env` dari file pengaturan apa pun untuk variabel yang sudah ditetapkan lingkungan peluncuran. [Debug log](https://code.claude.com/docs/id/debug-your-config.md) menyebutkan setiap variabel yang diabaikan.2350* Saat aplikasi Claude Desktop atau runner [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments) memulai sesi, lingkungan peluncuran yang dibangunnya yang diutamakan: Claude Code mengabaikan nilai `env` dari file pengaturan mana pun untuk variabel yang sudah diatur oleh lingkungan peluncuran. [Log debug](https://code.claude.com/docs/id/debug-your-config.md) menyebutkan setiap variabel yang diabaikan.

2351* Untuk membatalkan ekspor shell, atur variabel ke `""`. Claude Code memperlakukan nilai kosong sebagai tidak diatur untuk pemilihan penyedia, dan subproses mewarisi nilai kosong.2351* Untuk membatalkan ekspor shell, atur variabel ke `""`. Claude Code memperlakukan nilai kosong sebagai tidak diatur untuk pemilihan penyedia, dan subproses mewarisi nilai kosong tersebut.

2352* `NO_COLOR` dan `FORCE_COLOR` yang ditetapkan di sini hanya mencapai subproses. Untuk mengubah warna antarmuka Claude Code sendiri, atur di shell Anda sebelum meluncurkan `claude`.2352* `NO_COLOR` dan `FORCE_COLOR` yang diatur di sini hanya mencapai subproses. Untuk mengubah warna antarmuka Claude Code sendiri, atur keduanya di shell Anda sebelum menjalankan `claude`.

2353* Nilai di sini adalah teks biasa dalam file pengaturan dan mencapai setiap subproses yang dimulai Claude Code. Untuk token pembawa OTLP yang berputar, gunakan [`otelHeadersHelper`](#otelheadershelper); untuk kredensial API, gunakan [`apiKeyHelper`](#apikeyhelper).2353* Nilai di sini berupa teks biasa di file pengaturan dan mencapai setiap subproses yang dijalankan Claude Code. Untuk token bearer OTLP yang berotasi, gunakan [`otelHeadersHelper`](#otelheadershelper); untuk kredensial API, gunakan [`apiKeyHelper`](#apikeyhelper).

2354 2354 

2355#### Ketika Claude Code menerapkan nilai `env`2355#### Kapan Claude Code menerapkan nilai `env`

2356 2356 

2357* Dari pengaturan pengguna, `--settings`, dan pengaturan terkelola: saat startup, dan lagi dalam sesi yang berjalan ketika perubahan tersimpan mengubah `env` yang digabungkan.2357* Dari pengaturan pengguna, `--settings`, dan pengaturan terkelola: saat startup, dan lagi di sesi yang sedang berjalan saat perubahan yang disimpan mengubah `env` gabungan.

2358* Dari pengaturan proyek dan lokal: setelah Anda mempercayai ruang kerja, atau saat startup dalam mode `-p`, yang tidak pernah menampilkan dialog kepercayaan, dan lagi ketika perubahan tersimpan mengubah `env` yang digabungkan.2358* Dari pengaturan proyek dan lokal: setelah Anda memercayai workspace, atau saat startup dalam mode `-p`, yang tidak pernah menampilkan dialog kepercayaan, dan lagi saat perubahan yang disimpan mengubah `env` gabungan.

2359* Variabel yang Claude Code klasifikasikan sebagai aman, seperti pemilihan model, timeout dan batas, dan toggle fitur: saat startup dari setiap file pengaturan, kecuali [variabel yang tidak dapat ditetapkan pengaturan proyek dan lokal](#variables-claude-code-ignores-in-env).2359* Variabel yang diklasifikasikan Claude Code sebagai aman, seperti pemilihan model, timeout dan batas, serta toggle fitur: saat startup dari setiap file pengaturan, selain [variabel yang tidak dapat diatur oleh pengaturan proyek dan lokal](#variables-claude-code-ignores-in-env).

2360* Setelah Anda [memindahkan sesi dengan `/cd`](https://code.claude.com/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru: nilai `env` direktori baru, di atas direktori sebelumnya.2360* Setelah Anda [memindahkan sesi dengan `/cd`](https://code.claude.com/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau yang lebih baru: nilai `env` proyek dan lokal dari direktori baru, di atas nilai dari direktori sebelumnya.

2361 2361 

2362#### Variabel yang Claude Code abaikan dalam `env`2362#### Variabel yang diabaikan Claude Code di `env`

2363 2363 

2364* Pengaturan proyek dan lokal tidak dapat menetapkan variabel yang tidak boleh dikontrol repositori yang diperiksa; atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Claude Code menghapus masing-masing, kecuali beberapa nilai yang mematikan telemetri, dan mencatat peringatan yang dapat Anda lihat dengan `claude --debug`. Mereka termasuk:2364* Pengaturan proyek dan lokal tidak dapat mengatur variabel yang seharusnya tidak dikendalikan oleh repositori yang di-checkout; atur variabel tersebut di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Claude Code membuang masing-masing variabel tersebut, selain beberapa nilai yang mematikan telemetri, dan mencatat peringatan yang dapat Anda lihat dengan `claude --debug`. Variabel tersebut meliputi:

2365 2365 

2366 * Variabel yang memilih di mana Claude Code menyimpan atau menulis file-nya sendiri: `CLAUDE_CONFIG_DIR`, `CLAUDE_CODE_TMPDIR`, dan variabel direktori sistem operasi seperti `HOME`, `TMPDIR`, `TMP`, `TEMP`, dan keluarga `XDG_*`.2366 * Variabel yang memilih tempat Claude Code menyimpan atau menulis filenya sendiri: `CLAUDE_CONFIG_DIR`, `CLAUDE_CODE_TMPDIR`, dan variabel direktori sistem operasi seperti `HOME`, `TMPDIR`, `TMP`, `TEMP`, dan keluarga `XDG_*`.

2367 * Variabel Windows yang memilih program dan konfigurasi tingkat mesin untuk proses yang dimulai Claude Code, seperti `SystemRoot`, `ComSpec`, `ProgramData`, `LOCALAPPDATA`, `PATHEXT`, `PSModulePath`, dan keluarga `ProgramFiles`.2367 * Variabel Windows yang memilih program dan konfigurasi seluruh mesin untuk proses yang dijalankan Claude Code, seperti `SystemRoot`, `ComSpec`, `ProgramData`, `LOCALAPPDATA`, `PATHEXT`, `PSModulePath`, dan keluarga `ProgramFiles`.

2368 * Variabel yang mengekspor konten sesi: [`OTEL_LOG_RAW_API_BODIES`](https://code.claude.com/docs/id/env-vars#variables) dan pasangan pelacakan beta terperinci `ENABLE_BETA_TRACING_DETAILED` dan `BETA_TRACING_ENDPOINT`.2368 * Variabel yang mengekspor konten sesi: [`OTEL_LOG_RAW_API_BODIES`](https://code.claude.com/docs/id/env-vars#variables) dan pasangan tracing beta terperinci `ENABLE_BETA_TRACING_DETAILED` dan `BETA_TRACING_ENDPOINT`.

2369 * Variabel [OpenTelemetry exporter](https://code.claude.com/docs/id/monitoring-usage.md) yang menghidupkan telemetri, memilih ke mana telemetri pergi, atau memilih konten apa yang ditangkapnya:2369 * Variabel [exporter OpenTelemetry](https://code.claude.com/docs/id/monitoring-usage.md) yang menyalakan telemetri, memilih tujuannya, atau memilih konten yang ditangkapnya:

2370 2370 

2371 * `CLAUDE_CODE_ENABLE_TELEMETRY`, ditambah pasangan telemetri yang ditingkatkan beta `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` dan `ENABLE_ENHANCED_TELEMETRY_BETA`2371 * `CLAUDE_CODE_ENABLE_TELEMETRY`, ditambah pasangan beta telemetri yang ditingkatkan `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` dan `ENABLE_ENHANCED_TELEMETRY_BETA`

2372 * Pemilih exporter `OTEL_LOGS_EXPORTER`, `OTEL_METRICS_EXPORTER`, dan `OTEL_TRACES_EXPORTER`2372 * Pemilih exporter `OTEL_LOGS_EXPORTER`, `OTEL_METRICS_EXPORTER`, dan `OTEL_TRACES_EXPORTER`

2373 * Variabel konten `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_ASSISTANT_RESPONSES`, `OTEL_LOG_TOOL_CONTENT`, dan `OTEL_LOG_TOOL_DETAILS`2373 * Variabel konten `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_ASSISTANT_RESPONSES`, `OTEL_LOG_TOOL_CONTENT`, dan `OTEL_LOG_TOOL_DETAILS`

2374 * Variabel `OTEL_EXPORTER_OTLP_*` yang namanya berakhir dengan `_ENDPOINT`, `_HEADERS`, `_PROTOCOL`, `_CERTIFICATE`, `_CLIENT_KEY`, atau `_INSECURE`, dalam bentuk generik dan per-sinyal, seperti `OTEL_EXPORTER_OTLP_ENDPOINT` dan `OTEL_EXPORTER_OTLP_METRICS_HEADERS`2374 * Variabel `OTEL_EXPORTER_OTLP_*` yang namanya diakhiri dengan `_ENDPOINT`, `_HEADERS`, `_PROTOCOL`, `_CERTIFICATE`, `_CLIENT_KEY`, atau `_INSECURE`, dalam bentuk generik dan per sinyal, seperti `OTEL_EXPORTER_OTLP_ENDPOINT` dan `OTEL_EXPORTER_OTLP_METRICS_HEADERS`

2375 * `OTEL_EXPORTER_PROMETHEUS_HOST` dan `OTEL_EXPORTER_PROMETHEUS_PORT`2375 * `OTEL_EXPORTER_PROMETHEUS_HOST` dan `OTEL_EXPORTER_PROMETHEUS_PORT`

2376 2376 

2377 Hanya nilai-nilai ini yang masih berlaku dari pengaturan proyek dan lokal, karena mereka mematikan sesuatu: `none` untuk tiga pemilih exporter, dan nilai off seperti `0` untuk `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_CONTENT`, dan `OTEL_LOG_TOOL_DETAILS`. Nilai seperti itu menimpa variabel yang sama dalam pengaturan pengguna Anda, tetapi bukan yang ditetapkan lingkungan tempat Anda memulai Claude Code, file `--settings`, atau pengaturan terkelola.2377 Hanya nilai-nilai berikut yang masih berlaku dari pengaturan proyek dan lokal, karena nilai tersebut mematikan sesuatu: `none` untuk ketiga pemilih exporter, dan nilai mati seperti `0` untuk `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_CONTENT`, dan `OTEL_LOG_TOOL_DETAILS`. Nilai seperti itu menimpa variabel yang sama di pengaturan pengguna Anda, tetapi tidak menimpa variabel yang diatur oleh lingkungan tempat Anda menjalankan Claude Code, file `--settings`, atau pengaturan terkelola.

2378 2378 

2379 Ketika file pengaturan proyek atau lokal menetapkan variabel dalam grup ini, sesi interaktif lokal menampilkan pemberitahuan saat startup. Jalankan `/status` atau `claude doctor` untuk melihat mana yang Claude Code abaikan dan mana yang mematikan telemetri; keduanya mencantumkan nama, tidak pernah nilai. Jalankan non-interaktif dengan `-p` atau sesi Agent SDK tidak menampilkan pemberitahuan, jadi periksa bahwa kolektor Anda masih menerima data setelah Anda upgrade. Jika tidak, atur variabel dalam pengaturan pengguna Anda, pengaturan terkelola, lingkungan pekerjaan, atau file yang Anda lewatkan dengan `--settings`.2379 Saat file pengaturan proyek atau lokal mengatur variabel dalam grup ini, sesi interaktif lokal menampilkan pemberitahuan saat startup. Jalankan `/status` atau `claude doctor` untuk melihat variabel mana yang diabaikan Claude Code dan mana yang mematikan telemetri; keduanya mencantumkan nama, tidak pernah nilai. Eksekusi non-interaktif dengan `-p` atau sesi Agent SDK tidak menampilkan pemberitahuan, jadi periksa bahwa collector Anda masih menerima data setelah Anda melakukan upgrade. Jika tidak, atur variabel tersebut di pengaturan pengguna, pengaturan terkelola, lingkungan job, atau file yang Anda berikan dengan `--settings`.

2380 2380 

2381 Mengabaikan grup ini dalam pengaturan proyek dan lokal memerlukan Claude Code v2.1.282 atau lebih baru.2381 Pengabaian grup ini di pengaturan proyek dan lokal memerlukan Claude Code v2.1.282 atau yang lebih baru.

2382 * Variabel yang mengubah cara Claude Code dimulai atau disinkronkan, seperti `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR`, dan `CLAUDE_CODE_PLUGIN_SEED_DIR`.2382 * Variabel yang mengubah cara Claude Code dimulai atau disinkronkan, seperti `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR`, dan `CLAUDE_CODE_PLUGIN_SEED_DIR`.

2383 * Variabel [mode pembaca layar](https://code.claude.com/docs/id/accessibility.md) `CLAUDE_AX_SCREEN_READER` dan variabel lain yang namanya diawali dengan `CLAUDE_AX_`, seperti [`CLAUDE_AX_STARTUP_QUIET_MS`](https://code.claude.com/docs/id/env-vars#variables).2383 * Variabel [mode pembaca layar](https://code.claude.com/docs/id/accessibility.md) `CLAUDE_AX_SCREEN_READER` dan variabel lain yang namanya diawali dengan `CLAUDE_AX_`, seperti [`CLAUDE_AX_STARTUP_QUIET_MS`](https://code.claude.com/docs/id/env-vars#variables).

2384 * [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars#variables), yang mengatur pengatur waktu pada dialog yang tidak dijawab.2384 * [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars#variables), yang mengatur pengatur waktu pada dialog yang belum dijawab.

2385 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](https://code.claude.com/docs/id/env-vars#variables), yang mematikan pemrosesan lampiran.2385 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](https://code.claude.com/docs/id/env-vars#variables), yang mematikan pemrosesan lampiran.

2386 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](https://code.claude.com/docs/id/env-vars#variables), yang menghentikan Claude Code dari memperluas mention `@` untuk file dan direktori.2386 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](https://code.claude.com/docs/id/env-vars#variables), yang menghentikan Claude Code dari memperluas mention `@` untuk file dan direktori.

2387 2387 

2388 Sebelum v2.1.251, pengaturan proyek dan lokal juga dapat menetapkan variabel dalam daftar ini yang memilih di mana Claude Code menulis file-nya atau yang mengekspor konten sesi, kecuali `HOME` dan `XDG_CONFIG_HOME`. Sebelum v2.1.290, pengaturan tersebut juga dapat menetapkan variabel pengatur waktu dialog dan `CLAUDE_CODE_DISABLE_ATTACHMENTS`.2388 Sebelum v2.1.251, pengaturan proyek dan lokal juga dapat mengatur variabel dalam daftar ini yang memilih tempat Claude Code menulis filenya atau yang mengekspor konten sesi, kecuali `HOME` dan `XDG_CONFIG_HOME`. Sebelum v2.1.290, pengaturan tersebut juga dapat mengatur variabel pengatur waktu dialog dan `CLAUDE_CODE_DISABLE_ATTACHMENTS`.

2389* Variabel identitas yang dimiliki lingkungan hosting Claude Code, seperti `CLAUDE_CODE_REMOTE` dan `CLAUDE_CODE_ACCOUNT_UUID`, diabaikan dari setiap file.2389* Variabel identitas yang dimiliki oleh lingkungan hosting Claude Code, seperti `CLAUDE_CODE_REMOTE` dan `CLAUDE_CODE_ACCOUNT_UUID`, diabaikan dari setiap file.

2390* [`CLAUDE_CODE_MESSAGING_SOCKET` dan `CLAUDE_CODE_MESSAGING_TOKEN`](https://code.claude.com/docs/id/env-vars#variables), yang diekspor Claude Code sendiri, diabaikan dari setiap file. Mengabaikan variabel soket memerlukan Claude Code v2.1.224 atau lebih baru, dan mengabaikan token memerlukan v2.1.228 atau lebih baru.2390* [`CLAUDE_CODE_MESSAGING_SOCKET` dan `CLAUDE_CODE_MESSAGING_TOKEN`](https://code.claude.com/docs/id/env-vars#variables), yang diekspor sendiri oleh Claude Code, diabaikan dari setiap file. Pengabaian variabel socket memerlukan Claude Code v2.1.224 atau yang lebih baru, dan pengabaian token memerlukan v2.1.228 atau yang lebih baru.

2391* [`CLAUDE_CODE_PROJECT_DIR_NAME`](https://code.claude.com/docs/id/sessions#name-the-project-directory-yourself), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file; memerlukan v2.1.234 atau lebih baru.2391* [`CLAUDE_CODE_PROJECT_DIR_NAME`](https://code.claude.com/docs/id/sessions#name-the-project-directory-yourself), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file; memerlukan v2.1.234 atau yang lebih baru.

2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file.2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file.

2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file. Variabel memerlukan Claude Code v2.1.283 atau lebih baru.2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file. Variabel ini memerlukan Claude Code v2.1.283 atau yang lebih baru.

2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT`, dan `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file.2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT`, dan `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file.

2395* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` dan `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file. Variabel-variabel ini memerlukan Claude Code v2.1.304 atau lebih baru.2395* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` dan `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file. Variabel ini memerlukan Claude Code v2.1.304 atau yang lebih baru.

2396 2396 

2397### `fileCheckpointingEnabled`2397### `fileCheckpointingEnabled`

2398 2398 

2399Buat Claude Code membuat snapshot file sebelum setiap edit sehingga [`/rewind`](https://code.claude.com/docs/id/checkpointing) dapat memulihkannya. Muncul di `/config` sebagai **Rewind code (checkpoints)**, dan mengalihkannya di sana menulis kunci ini ke pengaturan pengguna Anda.2399Minta Claude Code membuat snapshot file sebelum setiap pengeditan agar [`/rewind`](https://code.claude.com/docs/id/checkpointing) dapat memulihkannya. Muncul di `/config` sebagai **Rewind code (checkpoints)**, dan mengubahnya di sana akan menulis kunci ini ke pengaturan pengguna Anda.

2400 2400 

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

2402* **Type**: Boolean2402* **Tipe**: Boolean

2403 * `true`: Claude Code membuat snapshot file sebelum setiap edit sehingga `/rewind` dapat memulihkannya2403 * `true`: Claude Code membuat snapshot file sebelum setiap pengeditan agar `/rewind` dapat memulihkannya

2404 * `false`: Claude Code tidak membuat snapshot file, jadi `/rewind` tidak dapat memulihkannya2404 * `false`: Claude Code tidak membuat snapshot file, sehingga `/rewind` tidak dapat memulihkannya

2405* **Default**: `true`2405* **Default**: `true`

2406* **Per-session overrides**: [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](https://code.claude.com/docs/id/env-vars) mematikan checkpointing untuk satu sesi; mana pun dari keduanya yang mematikannya, yang lain tidak dapat menghidupkannya kembali2406* **Override per sesi**: [`CLAUDE_CODE_DISABLE_FILE_CHECKPOINTING`](https://code.claude.com/docs/id/env-vars) mematikan checkpointing untuk satu sesi; mana pun dari keduanya yang mematikannya, yang lain tidak dapat menyalakannya kembali

2407 2407 

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

2409{2409{


2411}2411}

2412```2412```

2413 2413 

2414Dalam jalankan `-p` atau sesi Agent SDK, Claude Code mengabaikan kunci ini. SDK menghidupkan checkpointing dengan opsi `enableFileCheckpointing`-nya, dan jalankan `-p` bare memerlukan `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true`. Lihat [File checkpointing dalam Agent SDK](https://code.claude.com/docs/id/agent-sdk/file-checkpointing.md).2414Dalam eksekusi `-p` atau sesi Agent SDK, Claude Code mengabaikan kunci ini. SDK menyalakan checkpointing dengan opsi `enableFileCheckpointing`, dan eksekusi `-p` biasa memerlukan `CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING=true`. Lihat [File checkpointing di Agent SDK](https://code.claude.com/docs/id/agent-sdk/file-checkpointing.md).

2415 2415 

2416### `idleCompaction`2416### `idleCompaction`

2417 2417 

2418Idle compaction [mengompak](https://code.claude.com/docs/id/context-window.md#what-survives-compaction) percakapan panjang yang Anda tinggalkan, sesaat sebelum prompt cache-nya kedaluwarsa. Pesan Anda berikutnya kemudian mengirim ringkasan alih-alih seluruh percakapan. Ketika Anda kembali, percakapan menampilkan baris yang diawali dengan `Compacted while idle, before the prompt cache expired`.2418Idle compaction [memadatkan](https://code.claude.com/docs/id/context-window.md#what-survives-compaction) percakapan panjang yang Anda tinggalkan. Pesan Anda berikutnya kemudian mengirimkan ringkasan alih-alih seluruh percakapan. Setelah dipadatkan, percakapan menampilkan pemberitahuan:

2419 

2420* **Terminal**: baris yang diawali dengan `Compacted while idle, before the prompt cache expired`

2421* **[Panel chat VS Code](#idle-compaction-in-vs-code-and-the-desktop-app)**: pemberitahuan yang menyertakan `a summary written while you were away`

2422* **[Aplikasi desktop](#idle-compaction-in-vs-code-and-the-desktop-app)**: pemberitahuan yang sama, di dalam baris yang labelnya menyertakan `Claude Code notice`. Jika Anda tidak melihat baris tersebut atau teksnya, beralihlah ke [mode tampilan Verbose](https://code.claude.com/docs/id/desktop.md#switch-view-modes).

2419 2423 

2420Idle compaction aktif secara default untuk percakapan yang memenuhi semua kondisi berikut:2424Idle compaction menyala secara default untuk percakapan yang memenuhi semua kondisi berikut:

2421 2425 

2422* **Sesi**: Anda berada dalam sesi terminal interaktif2426* **Sesi**: Anda berada dalam sesi terminal interaktif, atau di panel chat ekstensi VS Code atau tab Code aplikasi desktop pada [akun yang dipilih Anthropic](#idle-compaction-in-vs-code-and-the-desktop-app)

2423* **Auto-compaction**: [`autoCompactEnabled`](#autocompactenabled) aktif2427* **Auto-compaction**: [`autoCompactEnabled`](#autocompactenabled) menyala

2424* **Prompt cache**: percakapan menggunakan [TTL prompt cache satu jam](https://code.claude.com/docs/id/prompt-caching.md#which-ttl-each-request-gets)2428* **Prompt cache**: percakapan menggunakan [TTL prompt cache satu jam](https://code.claude.com/docs/id/prompt-caching.md#which-ttl-each-request-gets)

2425* **Feature flag**: Claude Code dapat [mengambil feature flag dari Anthropic](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching)2429* **Feature flag**: Claude Code dapat [mengambil feature flag dari Anthropic](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching)

2426* **Ukuran**: konteks percakapan telah mencapai ambang token, yang dapat Anda [ubah](#change-the-idle-compaction-threshold) dari default 200.0002430* **Ukuran**: konteks percakapan telah mencapai ambang token, yang dapat Anda [ubah](#change-the-idle-compaction-threshold) dari default-nya sebesar 200.000

2427* **Waktu idle**: sekitar 54 menit telah berlalu sejak permintaan terakhir, dan komputer Anda dalam keadaan menyala pada saat itu2431* **Waktu idle**: sekitar 54 menit telah berlalu sejak permintaan terakhir, dan komputer Anda dalam keadaan menyala pada saat itu

2428 2432 

2429Untuk mematikan idle compaction, atur kunci ini ke `false`.2433Untuk mematikan idle compaction, atur kunci ini ke `false`.

2430 2434 

2431* **Scope**: [`Any file`](#scopes)2435* **Cakupan**: [`Any file`](#scopes)

2432* **Type**: Boolean2436* **Tipe**: Boolean

2433 * `true`: Claude Code mengompak percakapan idle yang memenuhi kondisi2437 * `true`: Claude Code memadatkan percakapan idle yang memenuhi kondisi

2434 * `false`: Claude Code tidak mengompak saat sesi Anda idle2438 * `false`: Claude Code tidak melakukan compaction saat sesi Anda idle

2435* **Default**: `true`2439* **Default**: `true`

2436* **Per-session overrides**: [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/id/env-vars) mematikan idle compaction bersama dengan auto-compaction2440* **Override per sesi**: [`DISABLE_AUTO_COMPACT`](https://code.claude.com/docs/id/env-vars) mematikan idle compaction bersama dengan auto-compaction

2437 2441 

2438```json settings.json theme={null}2442```json settings.json theme={null}

2439{2443{


2441}2445}

2442```2446```

2443 2447 

2444Untuk mematikan atau mengaktifkan idle compaction dari dalam sesi, jalankan `/config` dan ubah baris **Idle compaction**. Pilihan Anda disimpan ke pengaturan pengguna Anda dan langsung berlaku. Baris ini memerlukan Claude Code v2.1.302 atau lebih baru. Jika Anda menjalankan salah satu versi tersebut dan `/config` tidak menampilkan baris tersebut, periksa penyebab berikut:2448Untuk mematikan atau menyalakan idle compaction dari dalam sesi terminal, jalankan `/config` dan ubah baris **Idle compaction**. Pilihan Anda disimpan ke pengaturan pengguna Anda dan langsung berlaku. Baris ini memerlukan Claude Code v2.1.302 atau yang lebih baru. Jika Anda menjalankan salah satu versi tersebut dan `/config` tidak menampilkan baris tersebut, periksa penyebab berikut:

2445 2449 

2446* **Sumber pengaturan lain menetapkan kunci ini**: nilai dalam pengaturan terkelola, flag `--settings`, atau file pengaturan proyek atau lokal menimpa pengaturan pengguna Anda. Ubah kunci di sumber tersebut2450* **Sumber pengaturan lain mengatur kunci ini**: nilai di pengaturan terkelola, flag `--settings`, atau file pengaturan proyek atau lokal menimpa pengaturan pengguna Anda. Ubah kunci di sumber tersebut

2447* **Feature flag tidak tersedia**: di tempat Claude Code tidak dapat [mengambil feature flag dari Anthropic](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), idle compaction tidak berjalan, sehingga tidak ada yang perlu dimatikan2451* **Feature flag tidak tersedia**: jika Claude Code tidak dapat [mengambil feature flag dari Anthropic](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), idle compaction tidak berjalan, sehingga tidak ada yang perlu dimatikan

2448 2452 

2449Kunci ini memerlukan Claude Code v2.1.290 atau lebih baru. Pada versi sebelumnya, yang mengabaikan kunci ini, matikan [`autoCompactEnabled`](#autocompactenabled) untuk menghentikan idle compaction.2453Kunci ini memerlukan Claude Code v2.1.290 atau yang lebih baru. Pada versi sebelumnya, yang mengabaikan kunci ini, matikan [`autoCompactEnabled`](#autocompactenabled) untuk menghentikan idle compaction.

2450 2454 

2451#### Ubah ambang idle compaction2455#### Mengubah ambang idle compaction

2452 2456 

2453Atur [`CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS`](https://code.claude.com/docs/id/env-vars) ke jumlah token yang harus dicapai konteks percakapan sebelum idle compaction berlaku untuknya. Gunakan bilangan bulat positif. Nilai di bawah `100000` dinaikkan menjadi `100000`, ambang terendah.2457Atur [`CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS`](https://code.claude.com/docs/id/env-vars) ke jumlah token yang harus dicapai konteks percakapan sebelum idle compaction berlaku untuknya. Gunakan bilangan bulat positif. Nilai di bawah `100000` dinaikkan menjadi `100000`, ambang terendah.

2454 2458 

2455Dengan default, percakapan pada context window 200K melakukan auto-compact sebelum mencapai 200.000 token. Contoh ini menurunkan ambang menjadi 150.000 sehingga percakapan tersebut memenuhi syarat:2459Pada default, percakapan pada context window 200K akan auto-compact sebelum mencapai 200.000 token. Contoh ini menurunkan ambang menjadi 150.000 agar percakapan tersebut memenuhi syarat:

2456 2460 

2457```json settings.json theme={null}2461```json settings.json theme={null}

2458{2462{


2462}2466}

2463```2467```

2464 2468 

2469#### Idle compaction di VS Code dan aplikasi desktop

2470 

2471Pemberitahuan seperti ini berarti Claude Code [mengganti percakapan Anda sebelumnya dengan ringkasan](https://code.claude.com/docs/id/context-window.md#what-survives-compaction) yang sekarang menjadi dasar kerja Claude:

2472 

2473```text theme={null}

2474Compacted using a summary written while you were away · turn off with "idleCompaction": false in settings.json

2475```

2476 

2477Anda tidak perlu melakukan apa pun. Untuk mematikan idle compaction, atur `idleCompaction` ke `false` di `~/.claude/settings.json` atau [file pengaturan](https://code.claude.com/docs/id/settings.md#settings-files-and-who-they-affect) lainnya.

2478 

2479Di panel chat ekstensi VS Code dan tab Code aplikasi desktop, idle compaction berjalan untuk akun yang dipilih Anthropic. Claude Code menulis ringkasan saat Anda tidak ada, lalu melakukan compaction dengan ringkasan tersebut hanya jika pesan Anda berikutnya datang satu jam atau lebih setelah permintaan terakhir.

2480 

2465### `plansDirectory`2481### `plansDirectory`

2466 2482 

2467Pilih di mana Claude Code menyimpan file rencana yang ditulisnya dalam [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode). Claude Code menyelesaikan jalur relatif terhadap akar proyek.2483Pilih tempat Claude Code menyimpan file rencana yang ditulisnya dalam [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode). Claude Code me-resolve path relatif terhadap root proyek.

2468 2484 

2469* **Scope**: [`Any file`](#scopes)2485* **Cakupan**: [`Any file`](#scopes)

2470* **Type**: string, jalur relatif terhadap akar proyek2486* **Tipe**: string, path relatif terhadap root proyek

2471* **Default**: tidak diatur, jadi Claude Code menggunakan `~/.claude/plans`2487* **Default**: tidak diatur, sehingga Claude Code menggunakan `~/.claude/plans`

2472 2488 

2473```json settings.json theme={null}2489```json settings.json theme={null}

2474{2490{


2478 2494 

2479Claude Code menyimpan rencana di `~/.claude/plans` alih-alih direktori yang Anda atur dalam kasus seperti berikut:2495Claude Code menyimpan rencana di `~/.claude/plans` alih-alih direktori yang Anda atur dalam kasus seperti berikut:

2480 2496 

2481* **Di luar akar proyek**: jalur diselesaikan di luar akar proyek, seperti halnya `"../plans"`.2497* **Di luar root proyek**: path ter-resolve ke luar root proyek, seperti `"../plans"`.

2482* **Backslash di macOS, Linux, dan WSL**: jalur yang diselesaikan mengandung backslash, seperti halnya `"docs\\plans"` gaya Windows. Tulis `"docs/plans"`, yang juga berfungsi di Windows.2498* **Backslash di macOS, Linux, dan WSL**: path yang ter-resolve berisi backslash, seperti `"docs\\plans"` bergaya Windows. Tulis `"docs/plans"`, yang juga berfungsi di Windows.

2483 2499 

2484### `skillListingBudgetFraction`2500### `skillListingBudgetFraction`

2485 2501 

2486Setiap giliran, Claude melihat [daftar keterampilan Anda](https://code.claude.com/docs/id/skills.md#skill-descriptions-are-cut-short) dengan deskripsinya, dan Claude Code membatasi daftar itu pada bagian jendela konteks. Ketika daftar melampaui batas, Claude Code menyimpan nama setiap keterampilan tetapi menghapus deskripsi keterampilan yang paling jarang digunakan, sehingga Claude masih dapat memanggil keterampilan tersebut tetapi kurang mungkin memilih satu sendiri. Naikkan kunci ini untuk menyimpan lebih banyak deskripsi yang terlihat dengan mengorbankan lebih banyak konteks per giliran.2502Setiap giliran, Claude melihat [daftar skill Anda](https://code.claude.com/docs/id/skills.md#skill-descriptions-are-cut-short) beserta deskripsinya, dan Claude Code membatasi daftar tersebut pada porsi tertentu dari context window. Saat daftar melebihi batas, Claude Code mempertahankan nama setiap skill tetapi membuang deskripsi skill yang paling jarang digunakan, sehingga Claude masih dapat memanggil skill tersebut tetapi lebih kecil kemungkinannya untuk memilihnya sendiri. Naikkan kunci ini untuk menjaga lebih banyak deskripsi tetap terlihat dengan konsekuensi lebih banyak konteks per giliran.

2487 2503 

2488* **Scope**: [`Any file`](#scopes)2504* **Cakupan**: [`Any file`](#scopes)

2489* **Type**: angka, fraksi lebih besar dari `0` dan paling banyak `1`2505* **Tipe**: angka, pecahan yang lebih besar dari `0` dan paling banyak `1`

2490* **Default**: `0.01`, yang mereservasi 1% dari jendela konteks2506* **Default**: `0.01`, yang mencadangkan 1% dari context window

2491 2507 

2492```json settings.json theme={null}2508```json settings.json theme={null}

2493{2509{


2495}2511}

2496```2512```

2497 2513 

2498Untuk melihat berapa banyak konteks yang digunakan daftar dan keterampilan mana yang berkontribusi paling banyak, jalankan `/doctor`.2514Untuk melihat berapa banyak konteks yang digunakan daftar tersebut dan skill mana yang paling banyak berkontribusi, jalankan `/doctor`.

2499 2515 

2500### `skillListingMaxDescChars`2516### `skillListingMaxDescChars`

2501 2517 

2502Setiap giliran, Claude melihat [daftar keterampilan Anda](https://code.claude.com/docs/id/skills.md#skill-descriptions-are-cut-short) yang menampilkan teks `description` dan `when_to_use` setiap keterampilan. Kunci ini membatasi berapa banyak karakter dari teks itu yang ditampilkan Claude Code per keterampilan; teks yang lebih panjang dipotong pada batas.2518Setiap giliran, Claude melihat [daftar skill Anda](https://code.claude.com/docs/id/skills.md#skill-descriptions-are-cut-short) yang menampilkan teks `description` dan `when_to_use` setiap skill. Kunci ini membatasi berapa banyak karakter dari teks tersebut yang ditampilkan Claude Code per skill; teks yang lebih panjang dipotong pada batas tersebut.

2503 2519 

2504* **Scope**: [`Any file`](#scopes)2520* **Cakupan**: [`Any file`](#scopes)

2505* **Type**: jumlah karakter, bilangan bulat positif2521* **Tipe**: jumlah karakter, bilangan bulat positif

2506* **Default**: `1536`2522* **Default**: `1536`

2507 2523 

2508```json settings.json theme={null}2524```json settings.json theme={null}


2511}2527}

2512```2528```

2513 2529 

2514Naikkan untuk menyimpan deskripsi panjang utuh dengan mengorbankan lebih banyak konteks per giliran; turunkan untuk menyesuaikan lebih banyak keterampilan di bawah [`skillListingBudgetFraction`](#skilllistingbudgetfraction).2530Naikkan untuk menjaga deskripsi panjang tetap utuh dengan konsekuensi lebih banyak konteks per giliran; turunkan untuk memuat lebih banyak skill di bawah [`skillListingBudgetFraction`](#skilllistingbudgetfraction).

2515 2531 

2516### `taskOutputMaxChars`2532### `taskOutputMaxChars`

2517 2533 

2518> [!WARNING]2534> [!WARNING]

2519>2535>

2520> Dihapus dalam v2.1.277, bersama dengan alat `TaskOutput` yang diukurnya. Menetapkannya tidak berpengaruh pada versi saat ini. Claude membaca [file output](https://code.claude.com/docs/id/tools-reference.md#background-commands) tugas latar belakang dengan `Read` sebagai gantinya.2536> Dihapus di v2.1.277, bersama dengan tool `TaskOutput` yang ukurannya diatur olehnya. Mengaturnya tidak berpengaruh pada versi saat ini. Claude membaca [file output](https://code.claude.com/docs/id/tools-reference.md#background-commands) tugas latar belakang dengan `Read` sebagai gantinya.

2521 2537 

2522Melalui v2.1.276, Anda menetapkan kunci ini ke jumlah karakter dari [output tugas latar belakang](https://code.claude.com/docs/id/tools-reference.md#background-commands) yang diterima Claude secara inline ketika membacanya dengan alat `TaskOutput`.2538Hingga v2.1.276, Anda mengatur kunci ini ke jumlah karakter output [tugas latar belakang](https://code.claude.com/docs/id/tools-reference.md#background-commands) yang diterima Claude secara inline saat membaca tugas tersebut dengan tool `TaskOutput`.

2523 2539 

2524## Interface dan terminal2540## Interface dan terminal

2525 2541 


3522 3538 

3523* **Hook terkelola dan SDK berjalan**: hooks dari pengaturan terkelola dan hooks yang didaftarkan [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md) dalam proses3539* **Hook terkelola dan SDK berjalan**: hooks dari pengaturan terkelola dan hooks yang didaftarkan [Agent SDK](https://code.claude.com/docs/id/agent-sdk/overview.md) dalam proses

3524* **Hook plugin yang dipaksa diaktifkan berjalan**: hooks dari plugin yang dipaksa diaktifkan oleh pengaturan terkelola Anda melalui [`enabledPlugins`](#enabledplugins). Claude Code cocok dengan ID `plugin@marketplace` lengkap, jadi plugin dengan nama yang sama dari marketplace berbeda tetap diblokir. Ini memungkinkan Anda mendistribusikan hooks yang telah diverifikasi melalui marketplace organisasi sambil memblokir segalanya. Sebuah [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) dalam plugin seperti itu dimuat hanya ketika [dihitung sebagai milik organisasi Anda](https://code.claude.com/docs/id/plugins/mods/admin.md#install-your-organizations-mods)3540* **Hook plugin yang dipaksa diaktifkan berjalan**: hooks dari plugin yang dipaksa diaktifkan oleh pengaturan terkelola Anda melalui [`enabledPlugins`](#enabledplugins). Claude Code cocok dengan ID `plugin@marketplace` lengkap, jadi plugin dengan nama yang sama dari marketplace berbeda tetap diblokir. Ini memungkinkan Anda mendistribusikan hooks yang telah diverifikasi melalui marketplace organisasi sambil memblokir segalanya. Sebuah [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) dalam plugin seperti itu dimuat hanya ketika [dihitung sebagai milik organisasi Anda](https://code.claude.com/docs/id/plugins/mods/admin.md#install-your-organizations-mods)

3541* **Monitor dari plugin lain diblokir**: [monitor](https://code.claude.com/docs/id/plugins/components.md#monitors) milik sebuah plugin tidak dimulai kecuali plugin tersebut dipaksa diaktifkan. Memerlukan Claude Code v2.1.310 atau lebih baru

3525* **Segalanya yang lain diblokir**: user, project, dan local hooks, hooks dan mods dari plugin lain yang diinstal, dan hooks yang dideklarasikan dalam frontmatter agent. [Mods yang tertanam dalam Claude Code](https://code.claude.com/docs/id/plugins/mods/overview.md#mods-built-into-claude-code) terus berjalan. Untuk memblokir hanya mods pengguna, atur [`allowManagedModsOnly`](https://code.claude.com/docs/id/plugins/mods/admin#set-options-on-the-built-in-guard) sebagai gantinya.3542* **Segalanya yang lain diblokir**: user, project, dan local hooks, hooks dan mods dari plugin lain yang diinstal, dan hooks yang dideklarasikan dalam frontmatter agent. [Mods yang tertanam dalam Claude Code](https://code.claude.com/docs/id/plugins/mods/overview.md#mods-built-into-claude-code) terus berjalan. Untuk memblokir hanya mods pengguna, atur [`allowManagedModsOnly`](https://code.claude.com/docs/id/plugins/mods/admin#set-options-on-the-built-in-guard) sebagai gantinya.

3526* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](https://code.claude.com/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang dipaksa diaktifkan dalam `enabledPlugins` terkelola, kecuali Anda menyetel [`disableCommandPluginSources`](#disablecommandpluginsources) ke `false` secara eksplisit3543* **Plugin bersumber perintah dinonaktifkan**: Claude Code juga menonaktifkan plugin dengan [`command` source](https://code.claude.com/docs/id/plugins/marketplace-reference#command-plugin-source), termasuk plugin yang dipaksa diaktifkan dalam `enabledPlugins` terkelola, kecuali Anda menyetel [`disableCommandPluginSources`](#disablecommandpluginsources) ke `false` secara eksplisit

3527* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](https://code.claude.com/docs/id/plugins/host-marketplace#authenticate-archive-downloads) kecuali [`disableCommandPluginSources`](#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri. Memerlukan Claude Code v2.1.238 atau lebih baru3544* **Perintah marketplace `headersHelper` diblokir**: Claude Code juga memblokir marketplace [`headersHelper` commands](https://code.claude.com/docs/id/plugins/host-marketplace#authenticate-archive-downloads) kecuali [`disableCommandPluginSources`](#disablecommandpluginsources) secara eksplisit diatur ke `false`, kecuali untuk marketplace yang dideklarasikan oleh pengaturan terkelola itu sendiri. Memerlukan Claude Code v2.1.238 atau lebih baru

statusline.md +1 −1

Details

380* `used_percentage` dan `resets_at`: disertakan pada setiap respons, sehingga selalu ada setiap kali `spend_limit` ada. `used_percentage` berjalan dari 0 hingga 100, atau di atas 100 setelah Anda melampaui batas, dan `resets_at` adalah detik epoch Unix ketika periode batas direset.380* `used_percentage` dan `resets_at`: disertakan pada setiap respons, sehingga selalu ada setiap kali `spend_limit` ada. `used_percentage` berjalan dari 0 hingga 100, atau di atas 100 setelah Anda melampaui batas, dan `resets_at` adalah detik epoch Unix ketika periode batas direset.

381* `used_usd`, `limit_usd`, dan `period`: perkiraan pengeluaran Anda sejauh ini dan batas Anda dalam dolar AS, serta periode yang dicakup batas tersebut, salah satu dari `daily`, `weekly`, atau `monthly`. Gateway [menghitung `used_usd` dari jumlah token](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits#how-requests-are-priced), sehingga nilainya merupakan perkiraan dan bukan jumlah yang ditagihkan. Claude Code membacanya dari gateway dalam permintaan terpisah, sekitar setiap lima menit selama Anda mengirim permintaan. Jumlah dolar bisa sekitar lima menit lebih lama dari `used_percentage`, sehingga keduanya mungkin sempat tidak sesuai. Memerlukan v2.1.284 atau lebih baru pada Claude Code maupun gateway.381* `used_usd`, `limit_usd`, dan `period`: perkiraan pengeluaran Anda sejauh ini dan batas Anda dalam dolar AS, serta periode yang dicakup batas tersebut, salah satu dari `daily`, `weekly`, atau `monthly`. Gateway [menghitung `used_usd` dari jumlah token](https://code.claude.com/docs/id/claude-apps-gateway-spend-limits#how-requests-are-priced), sehingga nilainya merupakan perkiraan dan bukan jumlah yang ditagihkan. Claude Code membacanya dari gateway dalam permintaan terpisah, sekitar setiap lima menit selama Anda mengirim permintaan. Jumlah dolar bisa sekitar lima menit lebih lama dari `used_percentage`, sehingga keduanya mungkin sempat tidak sesuai. Memerlukan v2.1.284 atau lebih baru pada Claude Code maupun gateway.

382 382 

383Perlakukan `used_usd`, `limit_usd`, dan `period` sebagai opsional bahkan ketika `spend_limit` ada. Skrip Anda menerima persentase sebelum bidang-bidang tersebut, dan bidang-bidang tersebut tetap tidak ada jika Anda menetapkan `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, yang mematikan permintaan itu. Baca masing-masing dengan fallback dalam skrip Anda, seperti `jq -r '.rate_limits.spend_limit.used_usd // empty'`.383Perlakukan `used_usd`, `limit_usd`, dan `period` sebagai opsional bahkan ketika `spend_limit` ada, karena skrip Anda menerima persentase sebelum bidang-bidang tersebut. Baca masing-masing dengan fallback dalam skrip Anda, seperti `jq -r '.rate_limits.spend_limit.used_usd // empty'`. Sebelum Claude Code v2.1.295, bidang-bidang tersebut tetap tidak ada jika Anda menetapkan `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, yang mematikan permintaan itu.

384 384 

385### Bidang prompt cache385### Bidang prompt cache

386 386 

Details

121* **Sesi latar belakang**: [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) tidak melaporkan statusnya ke terminal Anda, bahkan saat Anda terhubung ke sesi tersebut. Agent view menampilkan statusnya sebagai gantinya.121* **Sesi latar belakang**: [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) tidak melaporkan statusnya ke terminal Anda, bahkan saat Anda terhubung ke sesi tersebut. Agent view menampilkan statusnya sebagai gantinya.

122* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](https://code.claude.com/docs/id/env-vars#variables)**: jika Anda mengatur variabel ini ke `1`, Claude Code tidak memeriksa dukungan atau melaporkan status. Hapus pengaturan variabel tersebut.122* **[`CLAUDE_CODE_DISABLE_TERMINAL_TITLE`](https://code.claude.com/docs/id/env-vars#variables)**: jika Anda mengatur variabel ini ke `1`, Claude Code tidak memeriksa dukungan atau melaporkan status. Hapus pengaturan variabel tersebut.

123 123 

124Judul tab tidak diawali dengan glyph status di terminal yang melaporkan dukungan untuk protokol tersebut. Terminal menampilkan status sesi itu sendiri, sehingga Claude Code tidak menyertakan glyph yang biasanya ditempatkan di depan judul pada terminal lain.

125 

124## Konfigurasi tmux126## Konfigurasi tmux

125 127 

126Ketika Claude Code berjalan di dalam tmux, secara default Shift+Enter mengirimkan alih-alih menyisipkan baris baru, dan notifikasi desktop serta [progress bar](https://code.claude.com/docs/id/settings-reference.md#terminalprogressbarenabled) tidak pernah mencapai terminal luar. Tambahkan baris-baris ini ke `~/.tmux.conf`, kemudian jalankan `tmux source-file ~/.tmux.conf` untuk menerapkannya ke server yang sedang berjalan:128Ketika Claude Code berjalan di dalam tmux, secara default Shift+Enter mengirimkan alih-alih menyisipkan baris baru, dan notifikasi desktop serta [progress bar](https://code.claude.com/docs/id/settings-reference.md#terminalprogressbarenabled) tidak pernah mencapai terminal luar. Tambahkan baris-baris ini ke `~/.tmux.conf`, kemudian jalankan `tmux source-file ~/.tmux.conf` untuk menerapkannya ke server yang sedang berjalan:

Details

258 258 

259File yang berubah di disk setelah Claude terakhir membacanya masih dapat diedit ketika `old_string` cocok dengan konten saat ini dengan tepat dan jelas serta Claude Code dapat membaca file tanpa meminta. Pencocokan terhadap konten file saat ini menjaga keamanan ini, dan hasilnya mencatat bahwa file membawa perubahan lain sehingga Claude membacanya kembali sebelum edit yang bergantung pada konten sekitar. Dalam kasus lain, seperti `old_string` yang sudah usang atau yang cocok lebih dari sekali tanpa `replace_all`, Claude membaca file lagi sebelum mengedit.259File yang berubah di disk setelah Claude terakhir membacanya masih dapat diedit ketika `old_string` cocok dengan konten saat ini dengan tepat dan jelas serta Claude Code dapat membaca file tanpa meminta. Pencocokan terhadap konten file saat ini menjaga keamanan ini, dan hasilnya mencatat bahwa file membawa perubahan lain sehingga Claude membacanya kembali sebelum edit yang bergantung pada konten sekitar. Dalam kasus lain, seperti `old_string` yang sudah usang atau yang cocok lebih dari sekali tanpa `replace_all`, Claude membaca file lagi sebelum mengedit.

260 260 

261Claude juga dapat mengedit file tanpa Read terpisah setelah melihat file tersebut dengan perintah Bash seperti `cat` atau `grep`. Perintah-perintah tersebut adalah `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep`, dan `rg`, masing-masing dijalankan pada satu file tanpa pipa atau pengalihan. Pencarian yang tidak menampilkan kecocokan apa pun tidak dihitung sebagai pembacaan, begitu pula perintah apa pun di luar daftar ini.261Claude juga dapat mengedit file tanpa Read terpisah setelah melihat file tersebut dengan perintah Bash seperti `cat` atau `grep`. Perintah-perintah tersebut adalah `cat`, `nl`, `bat`, `batcat`, `head`, `tail`, `sed -n 'X,Yp'`, `grep`, `egrep`, `fgrep`, dan `rg`, masing-masing dijalankan pada satu file tanpa pipa atau pengalihan. Jika perintah tidak menampilkan teks apa pun dari file tersebut, seperti ketika pencarian tidak menemukan kecocokan, pemeriksaan read-before-edit tetap berlaku.

262 262 

263Ketika Claude melihat file dengan cara ini, Claude Code juga memuat [`CLAUDE.md` subdirektori](https://code.claude.com/docs/id/memory#how-claude-md-files-load) dan [aturan dengan cakupan jalur](https://code.claude.com/docs/id/memory.md#path-specific-rules) apa pun yang berlaku untuk file tersebut. Lihat [Aturan izin Read dan Edit](https://code.claude.com/docs/id/permissions.md#read-and-edit) untuk perintah Bash mana yang dicakup oleh aturan deny `Read` dan `Edit` Anda.263Ketika Claude melihat file dengan cara ini, Claude Code juga memuat [`CLAUDE.md` subdirektori](https://code.claude.com/docs/id/memory#how-claude-md-files-load) dan [aturan dengan cakupan jalur](https://code.claude.com/docs/id/memory.md#path-specific-rules) apa pun yang berlaku untuk file tersebut. Lihat [Aturan izin Read dan Edit](https://code.claude.com/docs/id/permissions.md#read-and-edit) untuk perintah Bash mana yang dicakup oleh aturan deny `Read` dan `Edit` Anda.

264 264 


383 383 

384[Sumber WebSocket](#websocket-source) memiliki prompt persetujuan tersendiri, yang juga diputuskan oleh pengklasifikasi dalam auto mode.384[Sumber WebSocket](#websocket-source) memiliki prompt persetujuan tersendiri, yang juga diputuskan oleh pengklasifikasi dalam auto mode.

385 385 

386Tool ini tidak tersedia di Amazon Bedrock, Google Cloud's Agent Platform, atau Microsoft Foundry. Ini juga tidak tersedia ketika `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur. Di Windows, tool ini hanya tersedia ketika [Git Bash](https://code.claude.com/docs/id/setup.md#set-up-on-windows) terinstal.386Monitor memerlukan versi minimum atau Git Bash dalam kasus-kasus berikut:

387 

388* **Versi minimum**: di Amazon Bedrock, Claude Platform on AWS, Google Cloud's Agent Platform, atau Microsoft Foundry, atau ketika `DISABLE_TELEMETRY` atau `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur, Monitor memerlukan Claude Code v2.1.310 atau yang lebih baru. Persyaratan ini berlaku ketika [pengambilan feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching) dinonaktifkan

389* **Windows**: tool ini hanya tersedia ketika [Git Bash](https://code.claude.com/docs/id/setup.md#set-up-on-windows) terinstal

387 390 

388Plugin dapat mendeklarasikan monitors yang dimulai secara otomatis ketika plugin aktif, daripada meminta Claude untuk memulainya. Lihat [plugin monitors](https://code.claude.com/docs/id/plugins/components.md#monitors).391Plugin dapat mendeklarasikan monitors yang dimulai secara otomatis ketika plugin aktif, daripada meminta Claude untuk memulainya. Lihat [plugin monitors](https://code.claude.com/docs/id/plugins/components.md#monitors).

389 392 

Details

177 177 

178**1. Buka tampilan diff**178**1. Buka tampilan diff**

179 179 

180Indikator diff menunjukkan baris yang ditambahkan dan dihapus di seluruh sesi, misalnya `+42 -18`. Pilihnya untuk membuka tampilan diff, dengan daftar file di sebelah kiri dan perubahan di sebelah kanan.180Setelah Claude mendorong perubahannya ke sebuah branch, kartu **Changes** di panel di samping chat menunjukkan baris yang ditambahkan dan dihapus di seluruh sesi, misalnya `+42 -18`. Klik angka tersebut untuk membuka tampilan diff.

181 181 

182Diff membandingkan perubahan sesi terhadap cabang dasarnya secara default. Untuk membandingkan terhadap cabang yang berbeda, pilih **Compare against** dan pilih satu.182* Anda juga dapat mengklik **Changes** di bilah judul sesi, atau di menu **⋮** pada bilah tersebut.

183* Untuk menampilkan panel saat tersembunyi, klik ikon **Show session rail** di bilah judul sesi, atau di menu **⋮** pada bilah tersebut.

184 

185Diff membandingkan perubahan sesi terhadap branch dasarnya secara default. Untuk membandingkan terhadap branch yang berbeda, pilih **Compare against** dan pilih satu.

183 186 

184**2. Tinggalkan komentar inline**187**2. Tinggalkan komentar inline**

185 188 

186Pilih baris apa pun di diff, ketik umpan balik Anda, dan tekan Enter. Komentar antri sampai Anda mengirim pesan berikutnya, kemudian digabungkan dengannya. Claude melihat "di `src/auth.ts:47`, jangan tangkap kesalahan di sini" bersama instruksi utama Anda, jadi Anda tidak harus menjelaskan di mana masalahnya.189Pilih baris apa pun di diff, ketik umpan balik Anda, dan tekan Enter. Komentar antri sampai Anda mengirim pesan berikutnya, kemudian digabungkan dengannya. Claude melihat "di `src/auth.ts:47`, jangan tangkap kesalahan di sini" bersama instruksi utama Anda, jadi Anda tidak harus menjelaskan di mana masalahnya.

187 190 

188**3. Buat permintaan tarik**191**3. Buat pull request**

192 

193Ketika diff terlihat benar, [tampilkan panel lagi](https://code.claude.com/docs/id/claude-code-on-the-web.md#review-changes) jika kartu **Changes** tidak terlihat, lalu buat pull request atau draft dari kartu tersebut:

189 194 

190Ketika diff terlihat benar, pilih **Create PR** di bagian atas tampilan diff. Anda dapat membukanya sebagai PR penuh, draft, atau melompat ke halaman compose GitHub dengan judul dan deskripsi yang dihasilkan.195* Klik **Create PR**. Claude Code membuat pull request dengan judul dan deskripsi yang dihasilkan.

196* Untuk membuka draft sebagai gantinya, klik kanan **Create PR**, pilih **Create draft PR** untuk mengubah fungsi tombol tersebut, lalu klik tombolnya

191 197 

192**4. Terus ulangi setelah PR**198**4. Terus ulangi setelah PR**

193 199