SpyBara
Go Premium

Documentation 2026-10-13 23:57 UTC to 2026-10-14 22:58 UTC

74 files changed +1,629 −981. 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

17Pilih metode yang sesuai dengan seberapa sering Anda menggunakan pembaca layar:17Pilih metode yang sesuai dengan seberapa sering Anda menggunakan pembaca layar:

18 18 

19* Untuk satu sesi: jalankan `claude --ax-screen-reader`.19* Untuk satu sesi: jalankan `claude --ax-screen-reader`.

20* Untuk sesi yang dimulai dari satu shell: atur variabel lingkungan `CLAUDE_AX_SCREEN_READER` ke `1`. Di Bash atau Zsh, jalankan `export CLAUDE_AX_SCREEN_READER=1`. Di PowerShell, jalankan `$env:CLAUDE_AX_SCREEN_READER = "1"`. Tambahkan baris tersebut ke profil shell Anda untuk mempertahankannya untuk shell di masa depan.20* Untuk sesi yang dimulai dari satu shell: atur environment variable `CLAUDE_AX_SCREEN_READER` ke `1`. Di Bash atau Zsh, jalankan `export CLAUDE_AX_SCREEN_READER=1`. Di PowerShell, jalankan `$env:CLAUDE_AX_SCREEN_READER = "1"`. Tambahkan baris tersebut ke profil shell Anda untuk mempertahankannya untuk shell di masa depan.

21* Untuk setiap sesi di mesin: tambahkan `"axScreenReader": true` ke [file pengaturan](/docs/id/settings) pengguna Anda. Pengaturan ini berlaku di terminal apa pun, termasuk terminal terintegrasi VS Code.21* Untuk setiap sesi di mesin: tambahkan `"axScreenReader": true` ke [file pengaturan](/docs/id/settings) pengguna Anda. Pengaturan ini berlaku di terminal apa pun, termasuk terminal terintegrasi VS Code.

22 22 

23Jika Anda menggabungkan metode, Claude Code menerapkan flag [`--ax-screen-reader`](/docs/id/cli-reference#cli-flags) di atas variabel lingkungan [`CLAUDE_AX_SCREEN_READER`](/docs/id/env-vars#variables), dan variabel di atas pengaturan [`axScreenReader`](/docs/id/settings-reference#axscreenreader).23Jika Anda menggabungkan metode, Claude Code menerapkan flag [`--ax-screen-reader`](/docs/id/cli-reference#cli-flags) di atas environment variable [`CLAUDE_AX_SCREEN_READER`](/docs/id/env-vars#variables), dan variabel tersebut di atas pengaturan [`axScreenReader`](/docs/id/settings-reference#axscreenreader).

24 24 

25Jika Anda menggunakan Claude Code melalui SSH, atur variabel lingkungan atau pengaturan pada mesin jarak jauh tempat Claude Code berjalan.25Jika Anda menggunakan Claude Code melalui SSH, atur environment variable atau pengaturan pada mesin jarak jauh tempat Claude Code berjalan.

26 26 

27Baris pertama yang dicetak Claude Code mengonfirmasi mode: `[Screen Reader Mode: on via flag]`, `[Screen Reader Mode: on via env]`, atau `[Screen Reader Mode: on via settings]`.27Baris pertama yang dicetak Claude Code mengonfirmasi mode: `[Screen Reader Mode: on via flag]`, `[Screen Reader Mode: on via env]`, atau `[Screen Reader Mode: on via settings]`.

28 28 

Details

152 152 

153* **Pengaturan dan hook proyek**: pengaturan dan hook proyek mana yang [dimuat](/docs/id/agent-sdk/claude-code-features)153* **Pengaturan dan hook proyek**: pengaturan dan hook proyek mana yang [dimuat](/docs/id/agent-sdk/claude-code-features)

154* **Skills**: di mana [skill sesi ditemukan](/docs/id/agent-sdk/skills)154* **Skills**: di mana [skill sesi ditemukan](/docs/id/agent-sdk/skills)

155* **Penyimpanan sesi**: proyek mana yang [sesi tersimpan miliknya](/docs/id/agent-sdk/session-storage)155* **Penyimpanan sesi**: proyek mana yang [memiliki sesi tersimpan](/docs/id/agent-sdk/session-storage)

156 156 

157Untuk membiarkan alat menjangkau file di luar direktori kerja, tambahkan jalur dengan `additionalDirectories` (TypeScript) atau `add_dirs` (Python). Untuk cakupan hibah tersebut, lihat [Direktori tambahan memberikan akses file, bukan konfigurasi](/docs/id/permissions#additional-directories-grant-file-access-not-configuration).157Untuk membiarkan alat menjangkau file di luar direktori kerja, tambahkan jalur dengan `additionalDirectories` (TypeScript) atau `add_dirs` (Python). Untuk cakupan hibah tersebut, lihat [Direktori tambahan memberikan akses file, bukan konfigurasi](/docs/id/permissions#additional-directories-grant-file-access-not-configuration).

158 158 

Details

855 855 

856Status server jarak jauh juga dapat berubah setelah melaporkan `"connected"`. Ketika koneksi ke server itu terputus di tengah sesi, Claude Code memindahkan server kembali ke `"pending"` sambil [menghubungkan kembali](/docs/id/mcp#automatic-reconnection). Panggilan `mcpServerStatus()` yang lebih baru dalam TypeScript, atau [`ClaudeSDKClient.get_mcp_status()`](/docs/id/agent-sdk/python#methods) dalam Python, kemudian dapat melaporkan `"pending"` untuk server yang Anda lihat terhubung sebelumnya, tanpa perubahan konfigurasi di pihak Anda.856Status server jarak jauh juga dapat berubah setelah melaporkan `"connected"`. Ketika koneksi ke server itu terputus di tengah sesi, Claude Code memindahkan server kembali ke `"pending"` sambil [menghubungkan kembali](/docs/id/mcp#automatic-reconnection). Panggilan `mcpServerStatus()` yang lebih baru dalam TypeScript, atau [`ClaudeSDKClient.get_mcp_status()`](/docs/id/agent-sdk/python#methods) dalam Python, kemudian dapat melaporkan `"pending"` untuk server yang Anda lihat terhubung sebelumnya, tanpa perubahan konfigurasi di pihak Anda.

857 857 

858Setelah lima upaya penghubungan kembali gagal, server melaporkan `"failed"`, atau `"needs-auth"` ketika perlu diotorisasi lagi. Untuk mencoba lagi secara manual, panggil [`reconnectMcpServer()`](/docs/id/agent-sdk/typescript#methods) dalam TypeScript atau [`ClaudeSDKClient.reconnect_mcp_server()`](/docs/id/agent-sdk/python#methods) dalam Python.858Setelah lima upaya penghubungan kembali gagal, server melaporkan `"failed"`, atau `"needs-auth"` ketika perlu diotorisasi lagi. Server HTTP atau SSE yang berstatus `"failed"` masih dapat kembali ke `"connected"` tanpa panggilan dari Anda, karena Claude Code terus [mencoba ulang di latar belakang](/docs/id/mcp#mid-session-drops-of-a-remote-server) setelah terjadi kesalahan sementara. Untuk mencoba ulang secara manual, panggil [`reconnectMcpServer()`](/docs/id/agent-sdk/typescript#methods) dalam TypeScript atau [`ClaudeSDKClient.reconnect_mcp_server()`](/docs/id/agent-sdk/python#methods) dalam Python.

859 859 

860<h2 id="troubleshooting">860<h2 id="troubleshooting">

861 Troubleshooting861 Troubleshooting

Details

424 Konteks yang Claude Code tambahkan di luar system prompt424 Konteks yang Claude Code tambahkan di luar system prompt

425</h2>425</h2>

426 426 

427System reminders adalah pesan yang Claude Code tambahkan ke percakapan selama sesi untuk memberikan Claude konteks, seperti isi file CLAUDE.md Anda atau catatan bahwa file berubah di disk. Claude Code mengirimnya dalam percakapan, bukan dalam system prompt, sehingga mereka mencapai Claude apakah Anda menggunakan preset `claude_code` atau meneruskan string Anda sendiri sebagai `systemPrompt`.427System reminders adalah pesan yang Claude Code tambahkan ke percakapan selama sesi untuk memberikan Claude konteks, seperti isi file CLAUDE.md Anda atau catatan bahwa file berubah di disk. Claude Code mengirimnya dalam percakapan, bukan dalam system prompt, sehingga sebagian besar di antaranya mencapai Claude apakah Anda menggunakan preset `claude_code` atau meneruskan string Anda sendiri sebagai `systemPrompt`.

428 428 

429Bagian ini mencakup [reminders yang paling mungkin mengubah perilaku agen Anda](#reminders-claude-code-adds-to-the-conversation), cara [mematikan yang diganti agen Anda](#turn-off-the-context-your-agent-replaces), dan cara [melihat apa yang Claude terima](#see-what-claude-received) dalam permintaan tertentu.429Bagian ini mencakup [reminders yang paling mungkin mengubah perilaku agen Anda](#reminders-claude-code-adds-to-the-conversation), cara [mematikan yang diganti agen Anda](#turn-off-the-context-your-agent-replaces), dan cara [melihat apa yang Claude terima](#see-what-claude-received) dalam permintaan tertentu.

430 430 


467| Setiap file CLAUDE.md | Atur `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1` |467| Setiap file CLAUDE.md | Atur `CLAUDE_CODE_DISABLE_CLAUDE_MDS=1` |

468| Task list nudges, file-changed notes, dan daftar skill | Atur `CLAUDE_CODE_DISABLE_ATTACHMENTS=1` |468| Task list nudges, file-changed notes, dan daftar skill | Atur `CLAUDE_CODE_DISABLE_ATTACHMENTS=1` |

469 469 

470Instruksi commit dan pull request bawaan Claude Code bukan reminder. Mereka adalah bagian dari deskripsi Bash tool, sehingga mereka juga mencapai Claude ketika Anda meneruskan `systemPrompt` kustom.470Atur `includeGitInstructions` ke `false` untuk menyingkirkan instruksi commit dan pull request bawaan, yang merupakan bagian dari deskripsi tool Bash dan tetap mencapai Claude bahkan dengan `systemPrompt` kustom. Namun, dengan default minimal, `systemPrompt` kustom, atau agent thread utama kustom yang memiliki prompt sendiri, sesi dimulai tanpa snapshot status git.

471 471 

472Jika Anda mengatur `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code juga mengirim penyebutan file `@` sebagai teks biasa daripada memperluas mereka ke konten file. Daftar subagents yang tersedia dan notifikasi tugas latar belakang masih tiba.472Jika Anda mengatur `CLAUDE_CODE_DISABLE_ATTACHMENTS`, Claude Code juga mengirim penyebutan file `@` sebagai teks biasa daripada memperluas mereka ke konten file. Daftar subagent yang tersedia dan notifikasi tugas latar belakang masih tiba. Untuk menghentikan hanya perluasan penyebutan file `@`, atur [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/id/env-vars#variables) sebagai gantinya, pada Claude Code v2.1.299 atau yang lebih baru. Claude kemudian mendapatkan path yang disebutkan beserta catatan untuk membacanya dengan tool file-nya.

473 473 

474Contoh berikut adalah untuk agen yang membawa aturan commit sendiri dalam `append`. Ini mengatur kedua kunci `attribution` ke string kosong untuk menghapus trailer dan footer, dan mematikan `includeGitInstructions` sehingga instruksi alur kerja commit Claude Code sendiri tidak bersaing dengan milik Anda:474Contoh berikut adalah untuk agen yang membawa aturan commit sendiri dalam `append`. Ini mengatur kedua kunci `attribution` ke string kosong untuk menghapus trailer dan footer, dan mematikan `includeGitInstructions` sehingga instruksi alur kerja commit Claude Code sendiri tidak bersaing dengan milik Anda:

475 475 

Details

164| `mcpServers` | `(string \| object)[]` | Tidak | Server MCP yang tersedia untuk agen ini, berdasarkan nama atau konfigurasi inline |164| `mcpServers` | `(string \| object)[]` | Tidak | Server MCP yang tersedia untuk agen ini, berdasarkan nama atau konfigurasi inline |

165| `initialPrompt` | `string` | Tidak | Otomatis dikirimkan sebagai giliran pengguna pertama ketika agen ini berjalan sebagai agen thread utama. Diabaikan ketika agen dipanggil sebagai subagen |165| `initialPrompt` | `string` | Tidak | Otomatis dikirimkan sebagai giliran pengguna pertama ketika agen ini berjalan sebagai agen thread utama. Diabaikan ketika agen dipanggil sebagai subagen |

166| `maxTurns` | `number` | Tidak | Jumlah maksimum giliran agentic sebelum agen berhenti. Ketika agen mencapai batas, Claude Code mengembalikan output-nya yang ditandai sebagai parsial, dan Anda dapat [melanjutkan agen](#resume-subagents) untuk terus berlanjut. Penandaan parsial memerlukan Claude Code v2.1.246 atau lebih baru |166| `maxTurns` | `number` | Tidak | Jumlah maksimum giliran agentic sebelum agen berhenti. Ketika agen mencapai batas, Claude Code mengembalikan output-nya yang ditandai sebagai parsial, dan Anda dapat [melanjutkan agen](#resume-subagents) untuk terus berlanjut. Penandaan parsial memerlukan Claude Code v2.1.246 atau lebih baru |

167| `autoCompactWindow` | `number` | Tidak | Turunkan [jendela auto-compact](/docs/id/sub-agents#subagent-auto-compact-window) untuk agent ini ketika berjalan sebagai subagent, ke jumlah token dari `100000` hingga `1000000`. Memerlukan TypeScript Agent SDK v0.3.296 atau lebih baru. Python SDK [`AgentDefinition`](/docs/id/agent-sdk/python#agentdefinition) tidak memiliki field ini |

167| `background` | `boolean` | Tidak | Jalankan agen ini sebagai tugas latar belakang non-blocking ketika dipanggil |168| `background` | `boolean` | Tidak | Jalankan agen ini sebagai tugas latar belakang non-blocking ketika dipanggil |

168| `omitClaudeMd` | `boolean` | Tidak | Jalankan agen ini tanpa file CLAUDE.md pengguna, proyek, dan lokal ketika berjalan sebagai subagen; file kebijakan yang dikelola tetap dimuat. Diabaikan ketika agen berjalan sebagai agen thread utama. Memerlukan TypeScript Agent SDK v0.3.271 atau lebih baru. Python SDK [`AgentDefinition`](/docs/id/agent-sdk/python#agentdefinition) tidak memiliki field ini |169| `omitClaudeMd` | `boolean` | Tidak | Kecualikan file CLAUDE.md pengguna, proyek, dan lokal dari konteks awal agent ini; file kebijakan yang dikelola tetap dimuat. Diabaikan ketika agent berjalan sebagai agent thread utama. Memerlukan TypeScript Agent SDK v0.3.271 atau lebih baru. Python SDK [`AgentDefinition`](/docs/id/agent-sdk/python#agentdefinition) tidak memiliki field ini |

169| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | Tidak | Tingkat upaya penalaran untuk agen ini |170| `effort` | `'low' \| 'medium' \| 'high' \| 'xhigh' \| 'max' \| number` | Tidak | Tingkat upaya penalaran untuk agen ini |

170| `permissionMode` | `PermissionMode` | Tidak | Mode izin untuk eksekusi tool dalam agen ini. [Aturan pewarisan subagen](/docs/id/agent-sdk/permissions#available-modes) menentukan kapan itu berlaku |171| `permissionMode` | `PermissionMode` | Tidak | Mode izin untuk eksekusi tool dalam agen ini. [Aturan pewarisan subagen](/docs/id/agent-sdk/permissions#available-modes) menentukan kapan itu berlaku |

171 172 


200| Subagent menerima | Subagent tidak menerima |201| Subagent menerima | Subagent tidak menerima |

201| :- | :- |202| :- | :- |

202| Prompt sistem miliknya sendiri (`AgentDefinition.prompt`) dan prompt alat Agent | Riwayat percakapan induk atau hasil alat |203| Prompt sistem miliknya sendiri (`AgentDefinition.prompt`) dan prompt alat Agent | Riwayat percakapan induk atau hasil alat |

203| Project CLAUDE.md (dimuat melalui [`settingSources`](/docs/id/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)), kecuali agen menetapkan [`omitClaudeMd`](#agentdefinition-configuration) | Konten skill yang dimuat sebelumnya, kecuali tercantum dalam `AgentDefinition.skills` |204| Project CLAUDE.md (dimuat melalui [`settingSources`](/docs/id/agent-sdk/claude-code-features#control-filesystem-settings-with-settingsources)). Agent yang menetapkan [`omitClaudeMd`](#agentdefinition-configuration) dimulai tanpanya | Konten skill yang dimuat sebelumnya, kecuali tercantum dalam `AgentDefinition.skills` |

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

205 206 

206<Note>207<Note>

Details

908 | "malformed"908 | "malformed"

909 | "not_honoured"909 | "not_honoured"

910 >;910 >;

911 claude_code_version?: string;

911};912};

912```913```

913 914 


922 923 

923Field `sdkMcpServerManifests` pada permintaan dan field `sdk_mcp_manifests_parked` pada respons ditujukan untuk [server MCP SDK](/docs/id/agent-sdk/custom-tools) in-process yang Anda buat dengan [`createSdkMcpServer()`](#createsdkmcpserver). Aplikasi Anda tidak mengatur maupun membaca kedua field tersebut.924Field `sdkMcpServerManifests` pada permintaan dan field `sdk_mcp_manifests_parked` pada respons ditujukan untuk [server MCP SDK](/docs/id/agent-sdk/custom-tools) in-process yang Anda buat dengan [`createSdkMcpServer()`](#createsdkmcpserver). Aplikasi Anda tidak mengatur maupun membaca kedua field tersebut.

924 925 

926`claude_code_version` adalah versi Claude Code dari proses yang menjalankan giliran sesi. Nilainya sama dengan yang dibawa oleh pesan init [`SDKSystemMessage`](#sdksystemmessage), sehingga Anda dapat membaca versi CLI sebelum giliran pertama.

927 

928* Field ini memerlukan Agent SDK v0.3.296 atau lebih baru, yang membundel Claude Code v2.1.296.

929* Jika field bernilai `undefined` dan Anda mengatur `pathToClaudeCodeExecutable`, arahkan ke Claude Code v2.1.296 atau lebih baru.

930 

925Respons selalu melaporkan `fast_mode_state`, dan ketika sesuatu memblokir [fast mode](/docs/id/fast-mode), `fast_mode_disabled_reason` membawa kode alasan di sampingnya, sehingga Anda dapat menjelaskan keadaan yang terblokir alih-alih menurunkan ulang ketersediaannya. Kedua perilaku tersebut memerlukan Claude Code v2.1.219 atau lebih baru. Sebelum v2.1.219, respons menghilangkan `fast_mode_state` ketika fast mode tidak tersedia dan tidak pernah membawa alasan. Untuk kode alasan dan maknanya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.931Respons selalu melaporkan `fast_mode_state`, dan ketika sesuatu memblokir [fast mode](/docs/id/fast-mode), `fast_mode_disabled_reason` membawa kode alasan di sampingnya, sehingga Anda dapat menjelaskan keadaan yang terblokir alih-alih menurunkan ulang ketersediaannya. Kedua perilaku tersebut memerlukan Claude Code v2.1.219 atau lebih baru. Sebelum v2.1.219, respons menghilangkan `fast_mode_state` ketika fast mode tidak tersedia dan tidak pernah membawa alasan. Untuk kode alasan dan maknanya, lihat [`fast_mode_disabled_reason`](#sdkresultmessage) pada pesan hasil.

926 932 

927Wrapper respons kontrol untuk `initialize` yang berhasil juga membawa array `pending_permission_requests`. Field ini berada pada wrapper respons itu sendiri, bukan dalam payload `SDKControlInitializeResponse` di atas. Setiap entri adalah pesan `control_request` lengkap dengan bentuk `{ type: "control_request", request_id, request }` yang sama seperti yang di-streaming sesi untuk permintaan izin saat berjalan.933Wrapper respons kontrol untuk `initialize` yang berhasil juga membawa array `pending_permission_requests`. Field ini berada pada wrapper respons itu sendiri, bukan dalam payload `SDKControlInitializeResponse` di atas. Setiap entri adalah pesan `control_request` lengkap dengan bentuk `{ type: "control_request", request_id, request }` yang sama seperti yang di-streaming sesi untuk permintaan izin saat berjalan.


1218 skills?: string[];1224 skills?: string[];

1219 initialPrompt?: string;1225 initialPrompt?: string;

1220 maxTurns?: number;1226 maxTurns?: number;

1227 autoCompactWindow?: number;

1221 background?: boolean;1228 background?: boolean;

1222 omitClaudeMd?: boolean;1229 omitClaudeMd?: boolean;

1223 memory?: "user" | "project" | "local";1230 memory?: "user" | "project" | "local";


1238| `skills` | Tidak | Array nama skill yang dimuat terlebih dahulu ke dalam konteks agent |1245| `skills` | Tidak | Array nama skill yang dimuat terlebih dahulu ke dalam konteks agent |

1239| `initialPrompt` | Tidak | Dikirim otomatis sebagai giliran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |1246| `initialPrompt` | Tidak | Dikirim otomatis sebagai giliran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |

1240| `maxTurns` | Tidak | Jumlah maksimum giliran agentic (perjalanan bolak-balik API) sebelum berhenti |1247| `maxTurns` | Tidak | Jumlah maksimum giliran agentic (perjalanan bolak-balik API) sebelum berhenti |

1248| `autoCompactWindow` | Tidak | Menurunkan [jendela auto-compact](/docs/id/sub-agents#subagent-auto-compact-window) untuk agent ini ketika berjalan sebagai subagent, ke jumlah token dari `100000` hingga `1000000`. Memerlukan TypeScript Agent SDK v0.3.296 atau lebih baru |

1241| `background` | Tidak | Jalankan agent ini sebagai tugas latar belakang yang tidak memblokir saat dipanggil |1249| `background` | Tidak | Jalankan agent ini sebagai tugas latar belakang yang tidak memblokir saat dipanggil |

1242| `omitClaudeMd` | Tidak | Jalankan agent ini tanpa file CLAUDE.md user, project, dan local ketika berjalan sebagai subagent; file kebijakan terkelola tetap dimuat. Gunakan untuk agent yang mengambil semua yang dibutuhkannya dari prompt tool Agent. Diabaikan ketika agent ini berjalan sebagai agent thread utama. Memerlukan TypeScript Agent SDK v0.3.271 atau lebih baru |1250| `omitClaudeMd` | Tidak | Mengecualikan file CLAUDE.md user, project, dan local dari konteks awal agent ini; file kebijakan terkelola tetap dimuat. Gunakan untuk agent yang mengambil semua yang dibutuhkannya dari prompt tool Agent. Diabaikan ketika agent ini berjalan sebagai agent thread utama. Memerlukan TypeScript Agent SDK v0.3.271 atau lebih baru |

1243| `memory` | Tidak | Sumber memori untuk agent ini: `'user'`, `'project'`, atau `'local'` |1251| `memory` | Tidak | Sumber memori untuk agent ini: `'user'`, `'project'`, atau `'local'` |

1244| `effort` | Tidak | Tingkat effort penalaran untuk agent ini. Menerima nama tingkat atau bilangan bulat |1252| `effort` | Tidak | Tingkat effort penalaran untuk agent ini. Menerima nama tingkat atau bilangan bulat |

1245| `permissionMode` | Tidak | Mode izin untuk eksekusi tool dalam agent ini. [Aturan pewarisan subagent](/docs/id/agent-sdk/permissions#available-modes) menentukan kapan mode ini berlaku. Lihat [`PermissionMode`](#permissionmode) |1253| `permissionMode` | Tidak | Mode izin untuk eksekusi tool dalam agent ini. [Aturan pewarisan subagent](/docs/id/agent-sdk/permissions#available-modes) menentukan kapan mode ini berlaku. Lihat [`PermissionMode`](#permissionmode) |


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

2435* `senderTaskId`: ID tugas rekan kerja. Tidak ada untuk rekan lintas sesi.2443* `senderTaskId`: ID tugas rekan kerja. Tidak ada untuk rekan lintas sesi.

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

2437* `body`: badan pesan yang didekode dengan amplop peer dihapus, byte-tepat dengan apa yang dilihat model. Selalu ada untuk pesan rekan kerja; untuk rekan lintas sesi, ada hanya ketika giliran adalah tepat satu amplop peer yang dibentuk Claude Code. Render `name` dan `body` daripada mengurai ulang teks pesan. Memerlukan Claude Code v2.1.205 atau lebih baru.2445* `body`: isi pesan yang telah didekode dengan amplop peer dihapus, sama persis per byte dengan apa yang dilihat model. Ada untuk satu pesan rekan tim, tidak ada ketika beberapa pesan digabungkan; untuk peer lintas sesi, hanya ada ketika giliran tersebut tepat berupa satu amplop peer yang dibentuk oleh Claude Code. Tampilkan `name` dan `body` alih-alih mem-parsing ulang teks pesan. Sebelum v2.1.299, pesan yang digabungkan mempertahankan `body` pesan pertama. Memerlukan Claude Code v2.1.205 atau yang lebih baru.

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

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

2440 2448 


3266 Jenis Input Tool3274 Jenis Input Tool

3267</h2>3275</h2>

3268 3276 

3269Dokumentasi skema input untuk semua tool Claude Code bawaan. Jenis-jenis ini diekspor dari `@anthropic-ai/claude-agent-sdk/sdk-tools` dan dapat digunakan untuk interaksi tool yang aman tipe.3277Dokumentasi skema input untuk tool Claude Code bawaan. Jenis-jenis ini diekspor dari `@anthropic-ai/claude-agent-sdk/sdk-tools` dan dapat digunakan untuk interaksi tool yang aman tipe.

3270 3278 

3271<h3 id="toolinputschemas">3279<h3 id="toolinputschemas">

3272 `ToolInputSchemas`3280 `ToolInputSchemas`


3446 offset?: number;3454 offset?: number;

3447 limit?: number;3455 limit?: number;

3448 pages?: string;3456 pages?: string;

3457 allow_large?: boolean;

3449};3458};

3450```3459```

3451 3460 

3452Membaca file dari sistem file lokal, termasuk teks, gambar, PDF, dan notebook Jupyter. Gunakan `pages` untuk rentang halaman PDF (misalnya, `"1-5"`).3461Membaca file dari sistem file lokal, termasuk teks, gambar, PDF, dan notebook Jupyter.

3462 

3463* Gunakan `pages` untuk rentang halaman PDF (misalnya, `"1-5"`).

3464* `allow_large` memungkinkan Claude membaca file teks melebihi [batas ukuran biasa](/docs/id/tools-reference#large-files) ketika context window sesi masih memiliki ruang. Ini memerlukan Agent SDK v0.3.296 atau lebih baru, yang menyertakan Claude Code v2.1.296.

3453 3465 

3454Untuk PDF, Claude menerima konten file di dalam konten `tool_result` panggilan Read. Pembacaan yang mengembalikan [output](#tool-output-types) `pdf` membawa blok `text` ringkasan diikuti oleh blok `document`. Pembacaan yang mengembalikan output `parts` membawa blok `text` ringkasan diikuti oleh satu blok per halaman yang diekstrak: blok `image`, atau blok `text` yang menamai halaman ketika Claude Code tidak dapat merendernya sebagai gambar. Sebelum Agent SDK v0.3.242, Claude Code mengirimkan konten file sebagai pesan `user` terpisah setelah hasil tool.3466Untuk PDF, Claude menerima konten file di dalam konten `tool_result` panggilan Read. Pembacaan yang mengembalikan [output](#tool-output-types) `pdf` membawa blok `text` ringkasan diikuti oleh blok `document`. Pembacaan yang mengembalikan output `parts` membawa blok `text` ringkasan diikuti oleh satu blok per halaman yang diekstrak: blok `image`, atau blok `text` yang menamai halaman ketika Claude Code tidak dapat merendernya sebagai gambar. Sebelum Agent SDK v0.3.242, Claude Code mengirimkan konten file sebagai pesan `user` terpisah setelah hasil tool.

3455 3467 

agent-teams.md +2 −1

Details

270| **Daftar tugas** | Daftar item pekerjaan bersama yang diklaim dan diselesaikan oleh rekan kerja |270| **Daftar tugas** | Daftar item pekerjaan bersama yang diklaim dan diselesaikan oleh rekan kerja |

271| **Kotak surat** | Sistem pesan untuk komunikasi antar agent |271| **Kotak surat** | Sistem pesan untuk komunikasi antar agent |

272 272 

273Kotak surat setiap agent adalah file JSON di `~/.claude/teams/{team-name}/inboxes/{agent-name}.json`. Claude Code memvalidasi setiap entri ketika membaca file kotak surat. Entri yang tidak sesuai dengan format pesan dilaporkan sebagai kesalahan dan dihapus dari file; pesan yang valid masih disampaikan. Sebelum v2.1.207, satu entri kotak surat yang salah format menyebabkan kesalahan berulang setiap detik dan memblokir pengiriman untuk kotak surat itu sampai Anda menghapus file secara manual.273Kotak surat setiap agent adalah file JSON di `~/.claude/teams/{team-name}/inboxes/{agent-name}.json`. Claude Code memvalidasi setiap entri ketika membaca file kotak surat. Entri yang tidak sesuai dengan format pesan dilaporkan sebagai kesalahan dan dihapus dari file; pesan yang valid masih disampaikan.

274 274 

275Claude Code melaporkan pesan sebagai terkirim hanya ketika penulisan ke file kotak surat penerima berhasil, baik pesan itu teks biasa atau pesan protokol terstruktur seperti persetujuan rencana atau permintaan shutdown. Ketika penulisan gagal, misalnya karena disk penuh atau direktori kotak surat tidak dapat ditulis, agent pengirim menerima kesalahan dan tidak ada yang dikirim. Lihat [Failed to write to a teammate's inbox](/docs/id/errors#failed-to-write-to-a-teammate-inbox) untuk pesan kesalahan dan langkah pemulihan.275Claude Code melaporkan pesan sebagai terkirim hanya ketika penulisan ke file kotak surat penerima berhasil, baik pesan itu teks biasa atau pesan protokol terstruktur seperti persetujuan rencana atau permintaan shutdown. Ketika penulisan gagal, misalnya karena disk penuh atau direktori kotak surat tidak dapat ditulis, agent pengirim menerima kesalahan dan tidak ada yang dikirim. Lihat [Failed to write to a teammate's inbox](/docs/id/errors#failed-to-write-to-a-teammate-inbox) untuk pesan kesalahan dan langkah pemulihan.

276 276 


309* **`model`**: Claude Code menggunakan `model` definisi di mode tampilan mana pun ketika prompt spawn Anda tidak menamai satu. Lihat [bagaimana Claude Code memilih model rekan kerja](#specify-teammates-and-models).309* **`model`**: Claude Code menggunakan `model` definisi di mode tampilan mana pun ketika prompt spawn Anda tidak menamai satu. Lihat [bagaimana Claude Code memilih model rekan kerja](#specify-teammates-and-models).

310* **`disallowedTools`**: untuk rekan kerja dalam proses, Claude Code menghapus tool dalam `disallowedTools` definisi dari kumpulan tool rekan kerja. `SendMessage` dan Task tools yang ditambahkannya tetap tersedia bahkan ketika daftar tersebut menamainya.310* **`disallowedTools`**: untuk rekan kerja dalam proses, Claude Code menghapus tool dalam `disallowedTools` definisi dari kumpulan tool rekan kerja. `SendMessage` dan Task tools yang ditambahkannya tetap tersedia bahkan ketika daftar tersebut menamainya.

311* **`effort`**: untuk rekan kerja dalam proses, Claude Code menerapkan [`effort`](/docs/id/sub-agents#supported-frontmatter-fields) definisi di bawah [aturan effort frontmatter](/docs/id/model-config#set-the-effort-level).311* **`effort`**: untuk rekan kerja dalam proses, Claude Code menerapkan [`effort`](/docs/id/sub-agents#supported-frontmatter-fields) definisi di bawah [aturan effort frontmatter](/docs/id/model-config#set-the-effort-level).

312* **`autoCompactWindow`**: untuk rekan kerja dalam proses, Claude Code menerapkan [`autoCompactWindow`](/docs/id/sub-agents#supported-frontmatter-fields) definisi di bawah [aturan bidang tersebut](/docs/id/sub-agents#subagent-auto-compact-window). Rekan kerja split-pane mengabaikan bidang ini. Memerlukan Claude Code v2.1.296 atau yang lebih baru.

312* **Body**: untuk rekan kerja dalam proses, Claude Code menambahkan body definisi ke prompt sistem defaultnya sebagai instruksi tambahan. Untuk rekan kerja split-pane, Claude Code menggunakan body sebagai pengganti prompt sistem defaultnya.313* **Body**: untuk rekan kerja dalam proses, Claude Code menambahkan body definisi ke prompt sistem defaultnya sebagai instruksi tambahan. Untuk rekan kerja split-pane, Claude Code menggunakan body sebagai pengganti prompt sistem defaultnya.

313* **`skills`**: Claude Code tidak menerapkan `skills` definisi ke rekan kerja di mode tampilan mana pun. Rekan kerja memuat skills dari pengaturan proyek dan pengguna Anda.314* **`skills`**: Claude Code tidak menerapkan `skills` definisi ke rekan kerja di mode tampilan mana pun. Rekan kerja memuat skills dari pengaturan proyek dan pengguna Anda.

314* **`mcpServers`**: untuk rekan kerja split-pane, Claude Code menerapkan `mcpServers` definisi di bawah [aturan untuk bidang itu](/docs/id/sub-agents#scope-mcp-servers-to-a-subagent), yang mencakup sesi yang dimulai dengan `--agent` juga. Rekan kerja dalam proses mengabaikan bidang dan memuat server MCP dari pengaturan proyek dan pengguna Anda.315* **`mcpServers`**: untuk rekan kerja split-pane, Claude Code menerapkan `mcpServers` definisi di bawah [aturan untuk bidang itu](/docs/id/sub-agents#scope-mcp-servers-to-a-subagent), yang mencakup sesi yang dimulai dengan `--agent` juga. Rekan kerja dalam proses mengabaikan bidang dan memuat server MCP dari pengaturan proyek dan pengguna Anda.

agent-view.md +13 −13

Details

26 Mulai cepat26 Mulai cepat

27</h2>27</h2>

28 28 

29Panduan ini mencakup loop tampilan agen inti: kirim tugas, tonton barisnya diperbarui saat Claude bekerja, intip untuk memeriksanya dan balas, serta lampirkan untuk percakapan lengkap. Sesi yang Anda kirim terus berjalan setelah Anda menutup tampilan agen, jadi Anda dapat pergi dan kembali ke sesi tersebut.29Panduan ini mencakup loop tampilan agent inti: kirim tugas, tonton barisnya diperbarui saat Claude bekerja, intip untuk memeriksanya dan balas, serta lampirkan untuk percakapan lengkap. Sesi yang Anda kirim terus berjalan setelah Anda menutup tampilan agent, jadi Anda dapat pergi dan kembali ke sesi tersebut.

30 30 

31<Steps>31<Steps>

32 <Step title="Buka tampilan agen">32 <Step title="Buka tampilan agent">

33 Dari shell Anda, jalankan:33 Dari shell Anda, jalankan:

34 34 

35 ```bash theme={null}35 ```bash theme={null}

36 claude agents36 claude agents

37 ```37 ```

38 38 

39 Jika Anda belum menerima [dialog kepercayaan ruang kerja](/docs/id/permissions#project-allow-rules-and-workspace-trust) untuk direktori tersebut, Claude Code menampilkannya sebelum tampilan agen terbuka, dialog yang sama yang ditampilkan `claude`. Terima untuk menyimpan kepercayaan untuk ruang kerja dan lanjutkan. Jika Anda menolak, Claude Code keluar tanpa membuka tampilan agen.39 Jika Anda belum menerima [dialog kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust) untuk direktori tersebut, Claude Code menampilkannya sebelum tampilan agent terbuka, dialog yang sama yang ditampilkan `claude`. Terima untuk menyimpan kepercayaan untuk workspace dan lanjutkan. Jika Anda menolak, Claude Code keluar tanpa membuka tampilan agent.

40 40 

41 Tampilan agen terbuka dengan input di bagian bawah dan tabel yang terisi saat sesi dimulai. Tekan `Esc` untuk kembali ke shell Anda; jika Anda membuka tampilan agen dengan mengirim sesi ke latar belakang dengan `←`, `Esc` kembali ke percakapan tersebut. Sesi Anda terus berjalan saat Anda pergi dan muncul kembali saat Anda membuka tampilan agen berikutnya.41 Tampilan agent terbuka dengan input di bagian bawah dan tabel yang terisi saat sesi dimulai. Tekan `Esc` untuk kembali ke shell Anda; jika Anda membuka tampilan agent dengan mengirim sesi ke latar belakang dengan `←`, `Esc` kembali ke percakapan tersebut. Sesi Anda terus berjalan saat Anda pergi dan muncul kembali saat Anda membuka tampilan agent berikutnya.

42 </Step>42 </Step>

43 43 

44 <Step title="Kirim sesi">44 <Step title="Kirim sesi">

45 Ketik prompt yang menjelaskan tugas dan tekan `Enter`. Sesi latar belakang baru dimulai pada tugas tersebut dan muncul sebagai baris yang menunjukkan apakah sedang bekerja, menunggu Anda, atau selesai. Sesi baru menggunakan model yang ditampilkan di header tampilan agen. [Mode izin yang dimulainya](#permission-mode-model-and-effort) tergantung pada cara Anda membuka tampilan agen.45 Ketik prompt yang menjelaskan tugas dan tekan `Enter`. Sesi latar belakang baru dimulai pada tugas tersebut dan muncul sebagai baris yang menunjukkan apakah sedang bekerja, menunggu Anda, atau selesai. Sesi baru menggunakan model yang ditampilkan di header tampilan agent. [Mode izin yang dimulainya](#permission-mode-model-and-effort) tergantung pada cara Anda membuka tampilan agent.

46 46 

47 Setiap prompt yang Anda masukkan di sini memulai sesi baru sendiri. Mengetik prompt lain dan menekan `Enter` meluncurkan sesi kedua bersama yang pertama daripada mengirim tindak lanjut ke sesi tersebut. Anda dapat menjalankan beberapa secara paralel dengan cara ini.47 Setiap prompt yang Anda masukkan di sini memulai sesi baru sendiri. Mengetik prompt lain dan menekan `Enter` meluncurkan sesi kedua bersama yang pertama daripada mengirim tindak lanjut ke sesi tersebut. Anda dapat menjalankan beberapa secara paralel dengan cara ini.

48 48 


50 </Step>50 </Step>

51 51 

52 <Step title="Intip dan balas">52 <Step title="Intip dan balas">

53 Pilih baris dengan tombol panah dan tekan `Space` untuk membuka panel intip. Panel ini menampilkan output terbaru sesi atau pertanyaan yang sedang ditunggu, bukan transkrip lengkap. Ketik balasan dan tekan `Enter` untuk mengirimnya tanpa meninggalkan tampilan agen.53 Pilih baris dengan tombol panah dan tekan `Space` untuk membuka panel intip. Panel ini menampilkan output terbaru sesi atau pertanyaan yang sedang ditunggu, bukan transkrip lengkap. Ketik balasan dan tekan `Enter` untuk mengirimnya tanpa meninggalkan tampilan agent.

54 </Step>54 </Step>

55 55 

56 <Step title="Lampirkan dan lepaskan">56 <Step title="Lampirkan dan lepaskan">


60 <Step title="Bawa sesi yang ada ke dalam">60 <Step title="Bawa sesi yang ada ke dalam">

61 Langkah ini memerlukan sesi yang sedang berjalan. Jika Anda mengikuti langkah-langkah sebelumnya, Anda tidak memiliki sesi yang terbuka di terminal ini, jadi buka sesi `claude` biasa di terminal lain dan kirim pesan terlebih dahulu.61 Langkah ini memerlukan sesi yang sedang berjalan. Jika Anda mengikuti langkah-langkah sebelumnya, Anda tidak memiliki sesi yang terbuka di terminal ini, jadi buka sesi `claude` biasa di terminal lain dan kirim pesan terlebih dahulu.

62 62 

63 Untuk memindahkan sesi yang sudah Anda buka ke tampilan agen, jalankan `/bg` di dalamnya, atau tekan `←` pada prompt kosong untuk mengirimnya ke latar belakang dan membuka tampilan agen dalam satu langkah. Dalam sesi baru tanpa pesan apa pun, `/bg` meminta Anda untuk mengirim pesan terlebih dahulu, sementara `←` berfungsi langsung. Sesi terus berjalan dan muncul sebagai baris bersama yang Anda kirim.63 Untuk memindahkan sesi yang sudah Anda buka ke tampilan agent, jalankan `/bg` di dalamnya, atau tekan `←` pada prompt kosong untuk mengirimnya ke latar belakang dan membuka tampilan agent dalam satu langkah. Dalam sesi baru tanpa pesan apa pun, `/bg` meminta Anda untuk mengirim pesan terlebih dahulu, sementara `←` berfungsi langsung. Sesi terus berjalan dan muncul sebagai baris bersama yang Anda kirim.

64 </Step>64 </Step>

65</Steps>65</Steps>

66 66 

67Di dalam sesi `claude` biasa, petunjuk `←` footer prompt menghitung agen latar belakang yang menunggu Anda, seperti `← 2 agents`, dan kembali ke `← for agents` ketika tidak ada yang memerlukan input. Hitungan di atas 99 ditampilkan sebagai `99+`. Hitungan menyegarkan sekitar setiap sepuluh detik saat terminal difokuskan dan segera ketika fokus kembali. Warna berubah sebentar ketika bergerak dan ketika agen selesai, dan ketika sesi latar belakang selesai sementara tidak ada yang memerlukan input Anda, warna tersebut secara singkat menampilkan jumlah yang selesai, seperti `← 2 done`. Kedua kilatan ini mati ketika pengaturan [`prefersReducedMotion`](/docs/id/settings-reference#prefersreducedmotion) aktif, dan petunjuk tersembunyi dalam [mode pembaca layar](/docs/id/accessibility).67Di dalam sesi `claude` biasa, petunjuk `←` footer prompt menghitung agent latar belakang yang menunggu Anda, seperti `← 2 agents`, dan kembali ke `← for agents` ketika tidak ada yang memerlukan input. Hitungan di atas 99 ditampilkan sebagai `99+`. Hitungan menyegarkan sekitar setiap sepuluh detik saat terminal difokuskan dan segera ketika fokus kembali. Warna berubah sebentar ketika bergerak dan ketika agent selesai, dan ketika sesi latar belakang selesai sementara tidak ada yang memerlukan input Anda, petunjuk tersebut secara singkat menampilkan jumlah yang selesai, seperti `← 2 done`. Kedua kilatan ini mati ketika [pengaturan `prefersReducedMotion`](/docs/id/settings-reference#prefersreducedmotion) aktif, dan petunjuk tersembunyi dalam [mode pembaca layar](/docs/id/accessibility).

68 68 

69<h3 id="open-agent-view-by-default">69<h3 id="open-agent-view-by-default">

70 Buka tampilan agen secara default70 Buka tampilan agent secara default

71</h3>71</h3>

72 72 

73Untuk membuat `claude` tanpa argumen membuka tampilan agen alih-alih percakapan baru, aktifkan pengaturan `/config`.73Untuk membuat `claude` tanpa argumen membuka tampilan agent alih-alih percakapan baru, aktifkan pengaturan `/config`.

74 74 

75<Steps>75<Steps>

76 <Step title="Aktifkan pengaturan">76 <Step title="Aktifkan pengaturan">


88 claude88 claude

89 ```89 ```

90 90 

91 Tampilan agen terbuka sebagai pengganti percakapan baru.91 Tampilan agent terbuka sebagai pengganti percakapan baru.

92 </Step>92 </Step>

93</Steps>93</Steps>

94 94 

95Untuk memulai sesi biasa saat pengaturan aktif, berikan prompt: `claude "fix the login test"`. Untuk mematikan pengaturan, jalankan `/config defaultToAgentsView=false` dalam sesi biasa atau dalam sesi yang Anda lampirkan dari tampilan agen.95Untuk memulai sesi biasa saat pengaturan aktif, berikan prompt: `claude "fix the login test"`. Untuk mematikan pengaturan, jalankan `/config defaultToAgentsView=false` dalam sesi biasa atau dalam sesi yang Anda lampirkan dari tampilan agent.

96 96 

97<h2 id="monitor-sessions-with-agent-view">97<h2 id="monitor-sessions-with-agent-view">

98 Pantau sesi dengan tampilan agent98 Pantau sesi dengan tampilan agent


290 290 

291Baris tempat Anda menekan `←` juga mempertahankan nama yang tebal dan tidak redup setelah Anda memindahkan pilihan dengan tombol panah atau mouse, sehingga Anda dapat mengetahui dari sesi mana Anda datang.291Baris tempat Anda menekan `←` juga mempertahankan nama yang tebal dan tidak redup setelah Anda memindahkan pilihan dengan tombol panah atau mouse, sehingga Anda dapat mengetahui dari sesi mana Anda datang.

292 292 

293Jika tool sedang berjalan saat Anda menekan `←`, Claude Code menunggu hingga tool selesai sebelum mengirim ke latar belakang, dan Claude melanjutkan respons dalam sesi latar belakang. Tekan `←` lagi untuk mengirim ke latar belakang segera alih-alih menunggu. Ketika pekerjaan yang sedang berlangsung tidak dapat dibawa ke sesi latar belakang, Claude Code menampilkan dialog `Background this session?` terlebih dahulu, sama seperti dengan [`/background`](#from-inside-a-session).293Jika tool sedang berjalan saat Anda menekan `←`, Claude Code menunggu hingga tool selesai sebelum mengirim ke latar belakang, dan Claude melanjutkan respons dalam sesi latar belakang. Tekan `←` lagi untuk mengirim ke latar belakang segera alih-alih menunggu. Ketika pekerjaan latar belakang yang sedang berlangsung tidak dapat dibawa ke sesi latar belakang, Claude Code menampilkan dialog `Background this session?` terlebih dahulu, sama seperti dengan [`/background`](#from-inside-a-session).

294 294 

295Setelah sekitar sepuluh detik, Claude Code mengirim sesi ke latar belakang tanpa menunggu lebih lama, kecuali dalam kasus seperti berikut:295Setelah sekitar sepuluh detik, Claude Code mengirim sesi ke latar belakang tanpa menunggu lebih lama, kecuali dalam kasus seperti berikut:

296 296 

Details

219 Penyimpanan kredensial dan batas waktu resolusi219 Penyimpanan kredensial dan batas waktu resolusi

220</h4>220</h4>

221 221 

222Claude Code menyelesaikan rantai penyedia kredensial default AWS sekali dan menyimpan kredensial yang diselesaikan dalam memori. Kredensial tersebut digunakan kembali hingga lima menit sebelum kedaluwarsa, atau selama satu jam ketika tidak memiliki kedaluwarsa, jadi profil yang didukung SSO meminta kredensial dari IAM Identity Center sekitar sekali per masa hidup kredensial. Kesalahan kredensial dari API menghapus cache, dan percobaan ulang menyelesaikan kredensial segar. Memerlukan Claude Code v2.1.207 atau lebih baru.222Claude Code menyelesaikan rantai penyedia kredensial default AWS sekali dan menyimpan kredensial yang diselesaikan dalam memori. Kredensial tersebut digunakan kembali hingga lima menit sebelum kedaluwarsa, atau selama satu jam ketika tidak memiliki kedaluwarsa, jadi profil yang didukung SSO meminta kredensial dari IAM Identity Center sekitar sekali per masa hidup kredensial. Kesalahan kredensial dari API menghapus cache, dan retry menyelesaikan kredensial segar.

223 223 

224Cache mencakup setiap metode kredensial yang tercantum di awal langkah ini kecuali kunci API Amazon Bedrock, yang tidak menggunakan rantai penyedia. Untuk menyelesaikan rantai pada setiap permintaan, atur [`CLAUDE_CODE_SKIP_AWS_CRED_CACHE=1`](/docs/id/env-vars).224Cache mencakup setiap metode kredensial yang tercantum di awal langkah ini kecuali kunci API Amazon Bedrock, yang tidak menggunakan rantai penyedia. Untuk menyelesaikan rantai pada setiap permintaan, atur [`CLAUDE_CODE_SKIP_AWS_CRED_CACHE=1`](/docs/id/env-vars).

225 225 


276 276 

277`Expiration` bersifat opsional. Ketika perintah mengembalikan `Expiration` ISO 8601 yang valid, Claude Code menyimpan kredensial dalam cache hingga lima menit sebelum waktu itu. Tanpanya, kredensial disimpan dalam cache selama satu jam.277`Expiration` bersifat opsional. Ketika perintah mengembalikan `Expiration` ISO 8601 yang valid, Claude Code menyimpan kredensial dalam cache hingga lima menit sebelum waktu itu. Tanpanya, kredensial disimpan dalam cache selama satu jam.

278 278 

279Ketika Anda mengonfigurasi `awsCredentialExport` tanpa `awsAuthRefresh`, Claude Code menggunakan kredensial yang diekspor secara langsung dan tidak menyelesaikan kembali rantai penyedia kredensial default AWS pada startup. Memerlukan Claude Code v2.1.206 atau lebih baru.279Ketika Anda mengonfigurasi `awsCredentialExport` tanpa `awsAuthRefresh`, Claude Code menggunakan kredensial yang diekspor secara langsung dan tidak menyelesaikan kembali rantai penyedia kredensial default AWS pada startup.

280 280 

281<h3 id="3-configure-claude-code">281<h3 id="3-configure-claude-code">

282 3. Konfigurasi Claude Code282 3. Konfigurasi Claude Code


358* Untuk menggunakan Haiku untuk tugas latar belakang, atur `ANTHROPIC_DEFAULT_HAIKU_MODEL` ke ID model yang tersedia di akun Anda.358* Untuk menggunakan Haiku untuk tugas latar belakang, atur `ANTHROPIC_DEFAULT_HAIKU_MODEL` ke ID model yang tersedia di akun Anda.

359 359 

360<Warning>360<Warning>

361 Model Opus memiliki harga per-token yang lebih tinggi daripada model Sonnet, jadi penerapan yang tidak pin model utama ditagih dengan tarif Opus setelah diperbarui ke v2.1.207 atau lebih baru. Untuk menyimpan Sonnet 4.5 sebagai model utama, atur `ANTHROPIC_MODEL` ke ID model lengkapnya. Penerapan yang mengarahkan default dengan `ANTHROPIC_DEFAULT_SONNET_MODEL` dan tidak mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` menyimpan model Sonnet yang diarahkan sebagai default.361 Model Opus memiliki harga per-token yang lebih tinggi daripada model Sonnet, jadi jika Anda tidak pin model utama, Anda ditagih dengan tarif Opus. Untuk menggunakan Sonnet 4.5 sebagai model utama, atur `ANTHROPIC_MODEL` ke ID model lengkapnya. Deployment yang mengarahkan default dengan `ANTHROPIC_DEFAULT_SONNET_MODEL` dan tidak mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` menyimpan model Sonnet yang diarahkan sebagai default.

362</Warning>362</Warning>

363 363 

364Sebelum v2.1.280, model utama di Amazon Bedrock default ke Opus 5 dan alias `opus` diselesaikan ke Opus 5 dari v2.1.219. Pada v2.1.207 melalui v2.1.218, model utama di Amazon Bedrock default ke Opus 4.8 dan alias `opus` diselesaikan ke Opus 4.8. Sebelum v2.1.207, model utama default ke Sonnet 4.5, alias `opus` diselesaikan ke Opus 4.6, dan tugas latar belakang selalu menggunakan model utama.364Sebelum v2.1.280, model utama di Amazon Bedrock default ke Opus 5 dan alias `opus` diselesaikan ke Opus 5 dari v2.1.219. Pada v2.1.207 melalui v2.1.218, model utama di Amazon Bedrock default ke Opus 4.8 dan alias `opus` diselesaikan ke Opus 4.8.

365 365 

366Untuk menyesuaikan model lebih lanjut, gunakan salah satu metode ini:366Untuk menyesuaikan model lebih lanjut, gunakan salah satu metode ini:

367 367 


586 Gunakan endpoint Mantle586 Gunakan endpoint Mantle

587</h2>587</h2>

588 588 

589Mantle adalah endpoint Amazon Bedrock yang melayani model Claude melalui bentuk API Anthropic asli daripada Amazon Bedrock Invoke API. Ini menggunakan kredensial AWS yang sama [](#2-configure-aws-credentials) dan [konfigurasi `awsAuthRefresh`](#advanced-credential-configuration).589Mantle adalah endpoint Amazon Bedrock yang melayani model Claude melalui bentuk API Anthropic asli daripada Amazon Bedrock Invoke API. Ini menggunakan [kredensial AWS](#2-configure-aws-credentials) yang sama dan [konfigurasi `awsAuthRefresh`](#advanced-credential-configuration).

590 590 

591Mantle memiliki tindakan IAM-nya sendiri di bawah awalan `bedrock-mantle:`, jadi tindakan `bedrock:` dalam [konfigurasi IAM](#iam-configuration) tidak mencakupnya. Berikan identitas IAM Anda `bedrock-mantle:CreateInference` untuk inferensi dan `bedrock-mantle:CountTokens` untuk penghitungan token. Lihat [Making inference requests](https://docs.aws.amazon.com/bedrock/latest/userguide/inference.html) dan [Counting tokens](https://docs.aws.amazon.com/bedrock/latest/userguide/count-tokens.html) dalam dokumentasi AWS, dan [service authorization reference](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockpoweredbyawsmantle.html) untuk setiap tindakan Mantle.591Mantle memiliki tindakan IAM-nya sendiri di bawah awalan `bedrock-mantle:`, jadi tindakan `bedrock:` dalam [konfigurasi IAM](#iam-configuration) tidak mencakupnya. Berikan identitas IAM Anda `bedrock-mantle:CreateInference` untuk inferensi dan `bedrock-mantle:CountTokens` untuk penghitungan token. Lihat [Making inference requests](https://docs.aws.amazon.com/bedrock/latest/userguide/inference.html) dan [Counting tokens](https://docs.aws.amazon.com/bedrock/latest/userguide/count-tokens.html) dalam dokumentasi AWS, dan [service authorization reference](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockpoweredbyawsmantle.html) untuk setiap tindakan Mantle.

592 592 

artifacts.md +1 −1

Details

188 188 

189[Mode izin](/docs/id/permission-modes) Anda menentukan apa yang dilakukan Claude ketika komentar yang dikirim tiba:189[Mode izin](/docs/id/permission-modes) Anda menentukan apa yang dilakukan Claude ketika komentar yang dikirim tiba:

190 190 

191* **Claude membalas dengan sendirinya**: ketika mode izin Anda memungkinkan Claude memposting balasan tanpa meminta Anda, Claude membaca thread dan membalas, dan mengedit artefak ketika komentar meminta perubahan. Anda melihat `Auto-replied to comment thread on Artifact: <name>` atau `Auto-edited Artifact: <name> in response to a comment thread`.191* **Claude membalas dengan sendirinya**: jika Anda berada dalam mode izin yang memungkinkan Claude memposting balasan tanpa meminta Anda, Claude membaca thread dan membalas. Anda melihat `Auto-replied to comment thread on Artifact: <name>`.

192* **Claude menunggu Anda**: di luar plan mode, ketika memposting balasan memerlukan persetujuan Anda, Anda melihat `Comments are waiting on Artifact: <name>`. Claude kemudian meminta persetujuan Anda untuk membaca thread, dan lagi untuk memposting balasan.192* **Claude menunggu Anda**: di luar plan mode, ketika memposting balasan memerlukan persetujuan Anda, Anda melihat `Comments are waiting on Artifact: <name>`. Claude kemudian meminta persetujuan Anda untuk membaca thread, dan lagi untuk memposting balasan.

193* **Claude berhenti di plan mode**: Anda melihat `Comments are waiting on Artifact: <name>`, dan Claude tidak membalas sampai Anda meninggalkan plan mode dan memintanya membaca dan membalas.193* **Claude berhenti di plan mode**: Anda melihat `Comments are waiting on Artifact: <name>`, dan Claude tidak membalas sampai Anda meninggalkan plan mode dan memintanya membaca dan membalas.

194 194 

chrome.md +5 −5

Details

96 96 

97Prompt menawarkan tiga pilihan:97Prompt menawarkan tiga pilihan:

98 98 

99* **Install extension**: membuka halaman instalasi ekstensi di browser Anda dan memulai setup terpandu. Claude Code menunggu instalasi, menghubungkan ekstensi, dan mengaktifkan alat browser dalam sesi yang sama. Ketika koneksi siap, pilih "Continue with browser tools" dan Claude melanjutkan tugas di browser Anda. Anda dapat meninggalkan setup dengan memilih "Continue without browser tools" dan menyelesaikannya nanti dengan `/chrome`.99* **Install extension**: membuka halaman instalasi ekstensi di browser Anda dan memulai setup terpandu. Claude Code menunggu instalasi, menghubungkan ekstensi, dan mengaktifkan tool browser dalam sesi yang sama. Ketika koneksi siap, pilih "Continue with browser tools" dan Claude melanjutkan tugas di browser Anda. Anda dapat meninggalkan setup dengan memilih "Continue without browser tools" dan menyelesaikannya nanti dengan `/chrome`.

100* **Not now**: melanjutkan tugas tanpa alat browser. Claude Code dapat meminta lagi dalam sesi yang lebih baru.100* **Not now**: melanjutkan tugas tanpa tool browser. Claude Code dapat meminta lagi dalam sesi yang lebih baru.

101* **Don't ask again**: menghentikan prompt di sesi mendatang. Anda masih dapat menyiapkan integrasi kapan saja dengan `/chrome`.101* **Don't ask again**: menghentikan prompt di sesi mendatang. Anda masih dapat menyiapkan integrasi kapan saja dengan `/chrome`.

102 102 

103Dua kebijakan MCP terkelola mematikan prompt:103Dua kebijakan MCP terkelola mematikan prompt:


123 Kelola izin situs123 Kelola izin situs

124</h3>124</h3>

125 125 

126Izin tingkat situs diwarisi dari ekstensi Chrome. Kelola izin di pengaturan ekstensi Chrome untuk mengontrol situs mana yang dapat dijelajahi, diklik, dan diketik oleh Claude. Dalam [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), ketika pengklasifikasi mode otomatis itu sendiri menyetujui panggilan browser ke situs, ekstensi melewati pemeriksaan per-situsnya sendiri untuk panggilan itu, kecuali aturan izin Anda menolak situs apa pun ke Claude di Chrome.126Izin tingkat situs diwarisi dari ekstensi Chrome. Kelola izin di pengaturan ekstensi Chrome untuk mengontrol situs mana yang dapat dijelajahi, diklik, dan diketik oleh Claude. Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), ketika pengklasifikasi auto mode itu sendiri menyetujui panggilan browser ke situs, ekstensi melewati pemeriksaan per-situsnya sendiri untuk panggilan itu, kecuali aturan izin Anda menolak situs apa pun ke Claude in Chrome.

127 127 

128<h3 id="permission-prompts-in-vs-code-sessions">128<h3 id="permission-prompts-in-vs-code-sessions">

129 Dialog izin dalam sesi VS Code129 Dialog izin dalam sesi VS Code


134Dalam sesi yang terhubung ke browser Anda saat dimulai karena [Enabled by default](#enable-chrome-by-default) aktif, Claude Code meminta konfirmasi Anda sebelum tindakan browser di situs yang belum Anda izinkan, dalam mode izin Manual, Edit automatically, Auto, dan Bypass permissions. Dalam mode izin Auto dan Bypass permissions, hal ini berlaku hingga Anda mengetik `@browser` dalam sesi tersebut.134Dalam sesi yang terhubung ke browser Anda saat dimulai karena [Enabled by default](#enable-chrome-by-default) aktif, Claude Code meminta konfirmasi Anda sebelum tindakan browser di situs yang belum Anda izinkan, dalam mode izin Manual, Edit automatically, Auto, dan Bypass permissions. Dalam mode izin Auto dan Bypass permissions, hal ini berlaku hingga Anda mengetik `@browser` dalam sesi tersebut.

135 135 

136<h3 id="browser-tools-in-plan-mode">136<h3 id="browser-tools-in-plan-mode">

137 Alat browser dalam plan mode137 Tool browser dalam plan mode

138</h3>138</h3>

139 139 

140Dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), dialog izin muncul sebelum Claude merekam GIF, membuka tab baru, atau menjalankan pintasan. Dalam sesi CLI interaktif, jika [mode bypass permissions tersedia](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) dan [pengambilan feature-flag](/docs/id/env-vars#features-that-need-feature-flag-fetching) dimatikan, panggilan ini berjalan tanpa dialog izin.140Dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), dialog izin muncul sebelum Claude merekam GIF, membuka tab baru, atau menjalankan pintasan. Dalam sesi CLI interaktif, jika [mode bypass permissions tersedia](/docs/id/permission-modes#skip-all-checks-with-bypasspermissions-mode) dan [pengambilan feature-flag](/docs/id/env-vars#features-that-need-feature-flag-fetching) dimatikan, panggilan ini berjalan tanpa dialog izin.

141 141 

142Panggilan `tabs_context_mcp` juga meminta ketika menetapkan `createIfEmpty`, dan begitu juga panggilan `browser_batch` yang mencakup salah satu tindakan ini.142Panggilan `tabs_context_mcp` juga meminta izin ketika menetapkan `createIfEmpty`, dan begitu juga panggilan `browser_batch` yang mencakup salah satu tindakan ini.

143 143 

144<h2 id="example-workflows">144<h2 id="example-workflows">

145 Contoh alur kerja145 Contoh alur kerja

Details

1074 1074 

1075Konfigurasi [telemetri](#telemetry) gateway mendorong `OTEL_EXPORTER_OTLP_ENDPOINT`, jadi menetapkan `telemetry.forward_to` memicu dialog pada setiap klien interaktif. Dialog melindungi mesin pengembang dari gateway yang dikompromikan atau bermusuhan, bukan organisasi dari pengembang.1075Konfigurasi [telemetri](#telemetry) gateway mendorong `OTEL_EXPORTER_OTLP_ENDPOINT`, jadi menetapkan `telemetry.forward_to` memicu dialog pada setiap klien interaktif. Dialog melindungi mesin pengembang dari gateway yang dikompromikan atau bermusuhan, bukan organisasi dari pengembang.

1076 1076 

1077[Eksekusi non-interaktif](/docs/id/server-managed-settings#security-approval-dialogs), seperti `claude -p`, sesi Agent SDK, atau sesi di tab Code Claude Desktop, tidak dapat menampilkan dialog. Eksekusi tersebut menerapkan pengaturan yang dikirim hanya untuk eksekusi itu dan tidak mencatatnya sebagai disetujui, sehingga sesi interaktif pengembang berikutnya tetap menampilkan dialog. Sebelum v2.1.207, eksekusi non-interaktif menyimpan pengaturan sebagai disetujui dan tidak ada sesi interaktif berikutnya yang menampilkan dialog untuknya.1077[Eksekusi non-interaktif](/docs/id/server-managed-settings#security-approval-dialogs), seperti `claude -p`, sesi Agent SDK, atau sesi di tab Code Claude Desktop, tidak dapat menampilkan dialog. Eksekusi tersebut menerapkan pengaturan yang dikirim hanya untuk eksekusi itu dan tidak mencatatnya sebagai disetujui, sehingga sesi interaktif developer berikutnya tetap menampilkan dialog.

1078 1078 

1079Jika pengembang menolak, Claude Code keluar dari sesi itu daripada menerapkan kebijakan. Ketika Anda mendorong hook baru, atau variabel env apa pun yang memicu dialog, ke kebijakan yang luas, setiap pengembang yang cocok oleh karena itu melihat dialog dalam sesi interaktif mereka. Sesi interaktif yang berjalan menunjukkannya pada polling per jam berikutnya, dan sebaliknya muncul pada startup interaktif pengembang berikutnya.1079Jika pengembang menolak, Claude Code keluar dari sesi itu daripada menerapkan kebijakan. Ketika Anda mendorong hook baru, atau variabel env apa pun yang memicu dialog, ke kebijakan yang luas, setiap pengembang yang cocok oleh karena itu melihat dialog dalam sesi interaktif mereka. Sesi interaktif yang berjalan menunjukkannya pada polling per jam berikutnya, dan sebaliknya muncul pada startup interaktif pengembang berikutnya.

1080 1080 

Details

466 Untuk front end, Ingress yang dikelola AWS Load Balancer Controller menyediakan ALB internal. Beri anotasi dengan:466 Untuk front end, Ingress yang dikelola AWS Load Balancer Controller menyediakan ALB internal. Beri anotasi dengan:

467 467 

468 * `alb.ingress.kubernetes.io/scheme: internal` dan `alb.ingress.kubernetes.io/target-type: ip`468 * `alb.ingress.kubernetes.io/scheme: internal` dan `alb.ingress.kubernetes.io/target-type: ip`

469 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, jadi tidak ada catatan AAAA jangkauan publik yang diterbitkan untuk pemeriksaan jaringan pribadi `/login` [](/docs/id/claude-apps-gateway#prerequisites) menolak469 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, jadi tidak ada catatan AAAA jangkauan publik yang diterbitkan yang dapat ditolak oleh [pemeriksaan jaringan pribadi](/docs/id/claude-apps-gateway#prerequisites) `/login`

470 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, jadi grup keamanan frontend yang dikelola pengontrol mengakui hanya jaringan perusahaan Anda sebagai pengganti default `0.0.0.0/0`-nya470 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, jadi grup keamanan frontend yang dikelola pengontrol mengakui hanya jaringan perusahaan Anda sebagai pengganti default `0.0.0.0/0`-nya

471 * `alb.ingress.kubernetes.io/certificate-arn` dengan sertifikat ACM471 * `alb.ingress.kubernetes.io/certificate-arn` dengan sertifikat ACM

472 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, jadi pendengar tidak kembali ke kebijakan default warisan yang menerima TLS 1.0 dan 1.1472 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, jadi pendengar tidak kembali ke kebijakan default warisan yang menerima TLS 1.0 dan 1.1

Details

244| Persyaratan | Detail |244| Persyaratan | Detail |

245| - | - |245| - | - |

246| Status git bersih | Direktori kerja Anda tidak boleh memiliki perubahan yang tidak dicommit. Teleport meminta Anda untuk menyimpan perubahan jika diperlukan. |246| Status git bersih | Direktori kerja Anda tidak boleh memiliki perubahan yang tidak dicommit. Teleport meminta Anda untuk menyimpan perubahan jika diperlukan. |

247| Repositori yang benar | Anda harus menjalankan `--teleport` dari checkout repositori yang sama, bukan fork. Jika Anda menjalankannya dari checkout repositori yang berbeda, Claude Code menampilkan kesalahan yang menyebutkan repositori sesi dan checkout Anda. Jika Claude Code tidak dapat mengurai remote Anda menjadi nama host, misalnya alias host SSH seperti `git@work:owner/repo.git`, Claude Code meminta Anda untuk mengonfirmasi, dan menerima checkout ketika pemilik remote dan nama repositori cocok dengan repositori sesi. |247| Repositori yang benar | Anda harus menjalankan `--teleport` dari checkout repositori yang sama, bukan fork. Jika Anda menjalankannya dari checkout repositori yang berbeda, Claude Code menampilkan kesalahan yang menyebutkan repositori sesi dan repositori checkout Anda. Jika Claude Code tidak dapat mengurai remote Anda menjadi nama host, misalnya alias host SSH seperti `git@work:owner/repo.git`, Claude Code meminta Anda untuk mengonfirmasi, dan menerima checkout ketika pemilik remote dan nama repositori cocok dengan repositori sesi. |

248| Cabang tersedia | Cabang dari sesi cloud harus telah didorong ke remote. Teleport secara otomatis mengambil dan checkout. |248| Cabang tersedia | Cabang dari sesi cloud harus telah didorong ke remote. Teleport secara otomatis mengambil dan checkout. |

249| Akun yang sama | Anda harus diautentikasi ke akun claude.ai yang sama yang digunakan dalam sesi cloud. |249| Akun yang sama | Anda harus diautentikasi ke akun claude.ai yang sama yang digunakan dalam sesi cloud. |

250 250 


298 298 

299Sesi cloud mendukung [perintah bawaan](/docs/id/commands) yang menghasilkan keluaran teks. Perintah yang hanya berjalan di antarmuka terminal, seperti `/plugin` atau `/resume`, tidak tersedia. Perintah yang membuka pemilih atau panel di terminal berperilaku berbeda di sesi cloud:299Sesi cloud mendukung [perintah bawaan](/docs/id/commands) yang menghasilkan keluaran teks. Perintah yang hanya berjalan di antarmuka terminal, seperti `/plugin` atau `/resume`, tidak tersedia. Perintah yang membuka pemilih atau panel di terminal berperilaku berbeda di sesi cloud:

300 300 

301* **`/model`, `/effort`, `/color`, dan `/rename`**: teruskan nilai sebagai argumen, misalnya `/model sonnet`, alih-alih membuka pemilih terminal atau slider. Bentuk argumen memerlukan Claude Code v2.1.205 atau lebih baru di lingkungan sesi dan mengikuti [catatan ketersediaan](/docs/id/commands#all-commands) setiap perintah.301* **`/model`, `/effort`, `/color`, dan `/rename`**: teruskan nilai sebagai argumen, misalnya `/model sonnet`, alih-alih membuka pemilih terminal atau slider. Bentuk argumen mengikuti [catatan ketersediaan](/docs/id/commands#all-commands) setiap perintah.

302* **`/fast`**: mengalihkan [mode cepat](/docs/id/fast-mode#use-fast-mode-in-cloud-sessions) untuk sesi ketika mode cepat [tersedia di akun Anda](/docs/id/fast-mode#requirements). Memerlukan Claude Code v2.1.271 atau lebih baru di lingkungan sesi.302* **`/fast`**: mengalihkan [mode cepat](/docs/id/fast-mode#use-fast-mode-in-cloud-sessions) untuk sesi ketika mode cepat [tersedia di akun Anda](/docs/id/fast-mode#requirements). Memerlukan Claude Code v2.1.271 atau lebih baru di lingkungan sesi.

303* **`/config`**: di peramban Anda di claude.ai/code, membuka bagian Claude Code dari pengaturan Anda alih-alih menetapkan nilai, dan teks setelah perintah, termasuk `key=value`, diabaikan. Untuk mengubah pengaturan sesi cloud, atur [variabel lingkungan](/docs/id/cloud-environments#set-environment-variables) pada lingkungan, atau dalam sesi dengan satu repositori, komit kunci ke `.claude/settings.json` repositori tersebut. [Pengaturan di sesi cloud](/docs/id/settings#settings-in-cloud-sessions) mencantumkan apa yang dibaca setiap sesi.303* **`/config`**: di peramban Anda di claude.ai/code, membuka bagian Claude Code dari pengaturan Anda alih-alih menetapkan nilai, dan teks setelah perintah, termasuk `key=value`, diabaikan. Untuk mengubah pengaturan sesi cloud, atur [variabel lingkungan](/docs/id/cloud-environments#set-environment-variables) pada lingkungan, atau dalam sesi dengan satu repositori, komit kunci ke `.claude/settings.json` repositori tersebut. [Pengaturan di sesi cloud](/docs/id/settings#settings-in-cloud-sessions) mencantumkan apa yang dibaca setiap sesi.

304 304 


420* **Mesin virtual terisolasi**: setiap sesi berjalan di VM yang terisolasi dan dikelola Anthropic. Sesi yang organisasi Anda arahkan ke [lingkungan self-hosted](/docs/id/self-hosted-environments) berjalan pada infrastruktur Anda sendiri sebagai gantinya, di mana isolasi adalah tanggung jawab deployment Anda420* **Mesin virtual terisolasi**: setiap sesi berjalan di VM yang terisolasi dan dikelola Anthropic. Sesi yang organisasi Anda arahkan ke [lingkungan self-hosted](/docs/id/self-hosted-environments) berjalan pada infrastruktur Anda sendiri sebagai gantinya, di mana isolasi adalah tanggung jawab deployment Anda

421* <span id="default-allowed-domains" />**Kontrol akses jaringan**: di lingkungan yang dihosting Anthropic, akses jaringan dibatasi secara default dan dapat dinonaktifkan. Lihat [Akses jaringan](/docs/id/cloud-environments#network-access) untuk tingkat akses, [domain yang diizinkan secara default](/docs/id/cloud-environments#default-allowed-domains), dan lalu lintas yang tidak melewati daftar izin. Di lingkungan self-hosted, Anda membatasi egress sesi di batas jaringan Anda sendiri. Saat berjalan dengan akses jaringan dinonaktifkan, Claude Code masih dapat berkomunikasi dengan API Anthropic, yang mungkin memungkinkan data keluar dari VM.421* <span id="default-allowed-domains" />**Kontrol akses jaringan**: di lingkungan yang dihosting Anthropic, akses jaringan dibatasi secara default dan dapat dinonaktifkan. Lihat [Akses jaringan](/docs/id/cloud-environments#network-access) untuk tingkat akses, [domain yang diizinkan secara default](/docs/id/cloud-environments#default-allowed-domains), dan lalu lintas yang tidak melewati daftar izin. Di lingkungan self-hosted, Anda membatasi egress sesi di batas jaringan Anda sendiri. Saat berjalan dengan akses jaringan dinonaktifkan, Claude Code masih dapat berkomunikasi dengan API Anthropic, yang mungkin memungkinkan data keluar dari VM.

422* **Perlindungan kredensial**: di lingkungan yang dihosting Anthropic, kredensial git dan kunci penandatanganan tetap di luar sandbox, dan proxy mengautentikasi atas nama sesi dengan kredensial bersistem. Di lingkungan self-hosted, deployment Anda menyediakan kredensial git; lihat [Konfigurasi git](/docs/id/self-hosted-environments-deploy#configure-git)422* **Perlindungan kredensial**: di lingkungan yang dihosting Anthropic, kredensial git dan kunci penandatanganan tetap di luar sandbox, dan proxy mengautentikasi atas nama sesi dengan kredensial bersistem. Di lingkungan self-hosted, deployment Anda menyediakan kredensial git; lihat [Konfigurasi git](/docs/id/self-hosted-environments-deploy#configure-git)

423* **Rahasia jaringan**: di lingkungan yang dihosting Anthropic pada paket Pro dan Max, kunci yang Anda [tambahkan ke lingkungan cloud](/docs/id/cloud-environments#add-network-secrets) tetap di luar sandbox dengan cara yang sama, dilampirkan ke permintaan yang cocok setelah meninggalkan sesi. Lingkungan self-hosted tidak memiliki rahasia jaringan, dan paket Team dan Enterprise belum memilikinya423* **Rahasia jaringan**: di lingkungan yang dihosting Anthropic, kunci yang Anda [tambahkan ke lingkungan cloud](/docs/id/cloud-environments#add-network-secrets) tetap di luar sandbox dengan cara yang sama, dilampirkan ke permintaan yang cocok setelah meninggalkan sesi. Lingkungan self-hosted tidak memiliki rahasia jaringan

424* **Analisis aman**: kode dianalisis dan dimodifikasi dalam lingkungan terisolasi sesi sebelum membuat PR424* **Analisis aman**: kode dianalisis dan dimodifikasi dalam lingkungan terisolasi sesi sebelum membuat PR

425 425 

426<h2 id="troubleshooting">426<h2 id="troubleshooting">


472| Pesan | Artinya |472| Pesan | Artinya |

473| - | - |473| - | - |

474| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code dikonfigurasi untuk penyedia pihak ketiga. Pesan tersebut menyebutkan penyedia dengan label yang digunakan konfigurasi Anda, seperti `Amazon Bedrock` atau `Google Vertex AI`. Hapus konfigurasi penyedia tersebut, misalnya dengan menghapus pengaturan `CLAUDE_CODE_USE_BEDROCK`, lalu masuk dengan akun Anthropic (`claude auth login`). |474| `Cloud sessions aren't available with <provider>. They run on Anthropic's infrastructure and require an Anthropic account.` | Claude Code dikonfigurasi untuk penyedia pihak ketiga. Pesan tersebut menyebutkan penyedia dengan label yang digunakan konfigurasi Anda, seperti `Amazon Bedrock` atau `Google Vertex AI`. Hapus konfigurasi penyedia tersebut, misalnya dengan menghapus pengaturan `CLAUDE_CODE_USE_BEDROCK`, lalu masuk dengan akun Anthropic (`claude auth login`). |

475| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | Kebijakan organisasi `allow_remote_sessions` dinonaktifkan. |475| `Cloud sessions are disabled by your organization's policy. Contact your organization admin to enable them.` | Kebijakan `allow_remote_sessions` organisasi Anda dinonaktifkan; lihat [Cloud sessions are disabled by your organization's policy](/docs/id/errors#cloud-sessions-are-disabled-by-your-organizations-policy). Jika pesan justru menyebutkan kredensial yang digunakan sesi ini, lihat [Cloud sessions use your claude.ai login](/docs/id/errors#cloud-sessions-use-your-claude-ai-login). |

476| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code tidak dapat mengambil kebijakan organisasi Anda, sehingga menolak pengiriman alih-alih mengasumsikan sesi cloud diizinkan. Periksa koneksi jaringan Anda lalu coba lagi. |476| `Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.` | Claude Code belum selesai memuat kebijakan organisasi Anda, sehingga menolak pengiriman alih-alih mengasumsikan sesi cloud diizinkan. Periksa koneksi jaringan Anda lalu coba lagi. |

477| `Cloud sessions aren't available:` diikuti oleh penyebab | Pemuatan kebijakan organisasi Anda gagal, dan sisa pesan menjelaskan penyebabnya. Tindak lanjuti penyebab yang disebutkan; lihat [Couldn't verify your organization's policy for cloud sessions](/docs/id/errors#couldnt-verify-your-organizations-policy-for-cloud-sessions). |

477| `Attaching to an existing cloud session is not enabled for your account.` | Anda menjalankan `--cloud <session-id>` tanpa `-p`. Kirim pesan dengan `claude -p "your message" --cloud <session-id>`. |478| `Attaching to an existing cloud session is not enabled for your account.` | Anda menjalankan `--cloud <session-id>` tanpa `-p`. Kirim pesan dengan `claude -p "your message" --cloud <session-id>`. |

478| `Session not found: <id>` | ID atau URL tidak cocok dengan sesi yang dapat Anda akses. Periksa dengan URL claude.ai/code milik sesi tersebut. |479| `Session not found: <id>` | ID atau URL tidak cocok dengan sesi yang dapat Anda akses. Periksa dengan URL claude.ai/code milik sesi tersebut. |

479| `cloud session <id> is archived and cannot accept new messages` | Sesi telah diarsipkan. Mulai sesi baru sebagai gantinya. |480| `cloud session <id> is archived and cannot accept new messages` | Sesi telah diarsipkan. Mulai sesi baru sebagai gantinya. |

Details

1525| - | - | - |1525| - | - | - |

1526| `skills/<name>/SKILL.md` | `name`, `description`, `when_to_use`, `argument-hint`, `arguments`, `disable-model-invocation`, `user-invocable`, `allowed-tools`, `disallowed-tools`, `model`, `effort`, `context`, `agent`, `background`, `hooks`, `paths`, `shell`, `metadata`, `license`, `compatibility` | [Skill frontmatter](/docs/id/skills#frontmatter-reference) |1526| `skills/<name>/SKILL.md` | `name`, `description`, `when_to_use`, `argument-hint`, `arguments`, `disable-model-invocation`, `user-invocable`, `allowed-tools`, `disallowed-tools`, `model`, `effort`, `context`, `agent`, `background`, `hooks`, `paths`, `shell`, `metadata`, `license`, `compatibility` | [Skill frontmatter](/docs/id/skills#frontmatter-reference) |

1527| `commands/*.md` | Bidang skill kecuali `name` dan `paths` | [Skill frontmatter](/docs/id/skills#frontmatter-reference) |1527| `commands/*.md` | Bidang skill kecuali `name` dan `paths` | [Skill frontmatter](/docs/id/skills#frontmatter-reference) |

1528| `agents/*.md` | `name`, `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `maxTurns`, `skills`, `mcpServers`, `hooks`, `memory`, `background`, `effort`, `isolation`, `color`, `initialPrompt`, `omitClaudeMd`, `experimental` | [Subagent frontmatter](/docs/id/sub-agents#supported-frontmatter-fields) |1528| `agents/*.md` | `name`, `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `maxTurns`, `autoCompactWindow`, `skills`, `mcpServers`, `hooks`, `memory`, `background`, `effort`, `isolation`, `color`, `initialPrompt`, `omitClaudeMd`, `experimental` | [Subagent frontmatter](/docs/id/sub-agents#supported-frontmatter-fields) |

1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Output style frontmatter](/docs/id/output-styles#frontmatter) |1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Output style frontmatter](/docs/id/output-styles#frontmatter) |

1530| `rules/*.md` | `paths` | [Rule frontmatter](/docs/id/memory#rules-frontmatter-reference) |1530| `rules/*.md` | `paths` | [Rule frontmatter](/docs/id/memory#rules-frontmatter-reference) |

1531 1531 

Details

291 291 

292Claude Platform on AWS menggunakan ID model yang sama seperti Claude API langsung.292Claude Platform on AWS menggunakan ID model yang sama seperti Claude API langsung.

293 293 

294Alias default `fable`, `opus`, `sonnet`, dan `haiku` diselesaikan ke default bawaan Claude Code untuk Claude Platform on AWS, yang dapat tertinggal dari rilis terbaru. Tanpa `ANTHROPIC_DEFAULT_OPUS_MODEL`, alias `opus` diselesaikan ke Opus 5.5. Sebelum v2.1.280, alias tersebut diselesaikan ke Opus 5 dari v2.1.219, ke Opus 4.8 dari v2.1.207, dan ke Opus 4.7 sebelum itu.294Alias default `fable`, `opus`, `sonnet`, dan `haiku` diselesaikan ke default bawaan Claude Code untuk Claude Platform on AWS, yang dapat tertinggal dari rilis terbaru. Tanpa `ANTHROPIC_DEFAULT_OPUS_MODEL`, alias `opus` diselesaikan ke Opus 5.5. Sebelum v2.1.280, alias tersebut diselesaikan ke Opus 5 dari v2.1.219, dan ke Opus 4.8 dari v2.1.207.

295 295 

296Jika Anda menerapkan Claude Code ke tim, sematkan ID model secara eksplisit sehingga rilis baru tidak memindahkan semua orang sekaligus:296Jika Anda menerapkan Claude Code ke tim, sematkan ID model secara eksplisit sehingga rilis baru tidak memindahkan semua orang sekaligus:

297 297 

Details

347Misalnya:347Misalnya:

348 348 

349```text theme={null}349```text theme={null}

350Project ini menjaga p95 latency untuk API pembayaran di bawah 200 ms: profiling, perbaikan query dan caching, dan upgrade dependensi yang menyertainya, di repositori payments-api.350This project holds p95 latency for the payments API under 200 ms: profiling, query and caching fixes, and the dependency upgrades that come with them, in the payments-api repository.

351 351 

352- Branch dari main dan buka satu draft pull request per thread.352- Branch from main and open one draft pull request per thread.

353- Sebelum Anda menyebut pekerjaan selesai, jalankan `make test` dan `make lint` dan tempel baris ringkasan dalam pesan terakhir Anda.353- Before you call work done, run `make test` and `make lint` and paste the summary lines in your final message.

354- Jika Anda tidak dapat menjangkau sesuatu yang Anda butuhkan, seperti repositori, rahasia, API, atau konektor, katakan dengan tepat apa yang hilang dalam pesan pertama Anda dan berhenti. Jangan ganti, mock, atau tebak.354- If you can't reach something you need, such as a repository, a secret, an API, or a connector, say exactly what's missing in your first message and stop. Don't substitute, mock, or guess.

355- Jangan merge, force-push, atau ubah konfigurasi CI tanpa bertanya kepada saya di thread.355- Don't merge, force-push, or change CI configuration without asking me in the thread.

356```356```

357 357 

358Aturan tentang satu repositori, seperti perintah build-nya, termasuk dalam `CLAUDE.md` repositori itu, yang dibaca setiap thread cloud ketika repositori adalah bagian dari project. Setelah pekerjaan sedang berlangsung, ketika Anda mengoreksi thread, juga beri tahu Claude untuk mengingat koreksi: itu masuk ke [project memory](#give-a-project-standing-context) dan thread cloud yang lebih baru dimulai dengannya.358Aturan tentang satu repositori, seperti perintah build-nya, termasuk dalam `CLAUDE.md` repositori itu, yang dibaca setiap thread cloud ketika repositori adalah bagian dari project. Setelah pekerjaan sedang berlangsung, ketika Anda mengoreksi thread, juga beri tahu Claude untuk mengingat koreksi: itu masuk ke [project memory](#give-a-project-standing-context) dan thread cloud yang lebih baru dimulai dengannya.


414 414 

415* Skills, subagent, dan perintah: commit ke repositori yang Anda tambahkan ke project, misalnya skill di `.claude/skills/<skill-name>/SKILL.md`. Setiap thread cloud mengkloning setiap repositori dalam project dan memuat `.claude/skills/`, `.claude/agents/`, dan `.claude/commands/` dari masing-masing, jadi skill yang di-commit ke satu repositori tersedia di setiap thread cloud. Thread cloud juga memuat [skills yang Anda aktifkan untuk akun claude.ai Anda](/docs/id/skills#skills-in-cowork-and-cloud-sessions).415* Skills, subagent, dan perintah: commit ke repositori yang Anda tambahkan ke project, misalnya skill di `.claude/skills/<skill-name>/SKILL.md`. Setiap thread cloud mengkloning setiap repositori dalam project dan memuat `.claude/skills/`, `.claude/agents/`, dan `.claude/commands/` dari masing-masing, jadi skill yang di-commit ke satu repositori tersedia di setiap thread cloud. Thread cloud juga memuat [skills yang Anda aktifkan untuk akun claude.ai Anda](/docs/id/skills#skills-in-cowork-and-cloud-sessions).

416* Plugin: tambahkan di **Project settings > Plugins**; mereka dimuat ke setiap thread cloud baru. Plugin yang dideklarasikan repositori di `.claude/settings.json`-nya [tidak dimuat dalam thread cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup).416* Plugin: tambahkan di **Project settings > Plugins**; mereka dimuat ke setiap thread cloud baru. Plugin yang dideklarasikan repositori di `.claude/settings.json`-nya [tidak dimuat dalam thread cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup).

417* Server MCP: thread cloud mendapatkan tool MCP mereka dari konektor di akun claude.ai Anda, yang merupakan server MCP yang Anda hubungkan sekali di [claude.ai/customize/connectors](https://claude.ai/customize/connectors) atau melalui link **Manage connectors** di **Project settings > Environment**. Setiap thread cloud dapat menggunakan semuanya tanpa setup per-project. Percakapan project itu sendiri tidak memiliki konektor, jadi kirim pekerjaan yang membutuhkan konektor sebagai tugas untuk thread cloud. Dalam project dengan satu repositori, thread cloud juga memuat server MCP dari [`.mcp.json`](/docs/id/cloud-environments#what-carries-over-from-your-setup) repositori itu. [Bagaimana konektor mencapai Claude Code](/docs/id/mcp#how-connectors-reach-claude-code) mencantumkan aturan untuk sesi cloud dan pengaturan yang mematikan konektor.417* Server MCP: thread cloud mendapatkan tool MCP mereka dari konektor di akun claude.ai Anda, yang merupakan server MCP yang Anda hubungkan sekali di [claude.ai/customize/connectors](https://claude.ai/customize/connectors). Setiap thread cloud dapat menggunakan semuanya tanpa setup per-project. Percakapan project itu sendiri tidak memiliki konektor, jadi kirim pekerjaan yang membutuhkan konektor sebagai tugas untuk thread cloud. Dalam project dengan satu repositori, thread cloud juga memuat server MCP dari [`.mcp.json`](/docs/id/cloud-environments#what-carries-over-from-your-setup) repositori itu. [Bagaimana konektor mencapai Claude Code](/docs/id/mcp#how-connectors-reach-claude-code) mencantumkan aturan untuk sesi cloud dan pengaturan yang mematikan konektor.

418* Tool command-line dan paket: instal di [setup script](/docs/id/cloud-environments#setup-scripts) environment.418* Tool command-line dan paket: instal di [setup script](/docs/id/cloud-environments#setup-scripts) environment.

419 419 

420Untuk melihat konektor mana yang dimiliki thread cloud yang sedang berjalan di claude.ai/code, buka thread dan pilih **Connectors** dari menu **+** di samping kotak pesannya. Mematikan konektor di sana menghapusnya dari thread itu dan menyimpannya sebagai default akun Anda, jadi thread baru dan obrolan claude.ai dimulai tanpanya sampai Anda menyalakannya kembali. Thread cloud mengambil konektor yang Anda tambahkan atau hubungkan kembali setelah pesan berikutnya yang Anda kirimkan.420Untuk melihat konektor mana yang dimiliki thread cloud yang sedang berjalan di claude.ai/code, buka thread dan pilih **Connectors** dari menu **+** di samping kotak pesannya. Mematikan konektor di sana menghapusnya dari thread itu dan menyimpannya sebagai default akun Anda, jadi thread baru dan obrolan claude.ai dimulai tanpanya sampai Anda menyalakannya kembali. Thread cloud mengambil konektor yang Anda tambahkan atau hubungkan kembali setelah pesan berikutnya yang Anda kirimkan.


435| Project instructions | Memory | [Aturan berdiri](#give-a-project-standing-context) yang diterima setiap thread baru |435| Project instructions | Memory | [Aturan berdiri](#give-a-project-standing-context) yang diterima setiap thread baru |

436| Project repositories | Environment | Repositori yang dikloning thread baru |436| Project repositories | Environment | Repositori yang dikloning thread baru |

437| Cloud environment | Environment | [Cloud environment](#choose-an-environment-for-threads) yang dijalankan thread baru |437| Cloud environment | Environment | [Cloud environment](#choose-an-environment-for-threads) yang dijalankan thread baru |

438| Connectors | Environment | Link untuk mengelola connectors claude.ai yang didapatkan thread |

439| Plugins | Plugins | Plugins yang dimuat ke setiap thread baru |438| Plugins | Plugins | Plugins yang dimuat ke setiap thread baru |

440| Usage | Usage | [Penggunaan token](#usage-and-cost) berdasarkan thread dan model |439| Usage | Usage | [Penggunaan token](#usage-and-cost) berdasarkan thread dan model |

441| Memory | Memory | File [memory](#give-a-project-standing-context) project |440| Memory | Memory | File [memory](#give-a-project-standing-context) project |

Details

10 Lingkungan cloud berlaku untuk [sesi cloud](/docs/id/claude-code-on-the-web), yang tersedia pada paket Pro, Max, dan Team, serta untuk pengguna Enterprise dengan [kursi premium atau kursi Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).10 Lingkungan cloud berlaku untuk [sesi cloud](/docs/id/claude-code-on-the-web), yang tersedia pada paket Pro, Max, dan Team, serta untuk pengguna Enterprise dengan [kursi premium atau kursi Chat + Claude Code](https://support.claude.com/en/articles/11845131-use-claude-code-with-your-team-or-enterprise-plan).

11</Note>11</Note>

12 12 

13Setiap [sesi cloud](/docs/id/claude-code-on-the-web) berjalan di lingkungan cloud. Anda dapat mengonfigurasi lingkungan untuk mengizinkan atau menolak [akses jaringan](#access-levels), [menetapkan environment variable](#set-environment-variables) untuk sesi, pada paket Pro dan Max menyimpan [rahasia jaringan](#add-network-secrets) yang digunakan sesi tanpa melihatnya, dan menjalankan [skrip setup](#setup-scripts) sebelum Claude mulai bekerja.13Setiap [sesi cloud](/docs/id/claude-code-on-the-web) berjalan di lingkungan cloud. Anda dapat mengonfigurasi lingkungan untuk mengizinkan atau menolak [akses jaringan](#access-levels), [menetapkan environment variable](#set-environment-variables) untuk sesi, menyimpan [rahasia jaringan](#add-network-secrets) yang digunakan sesi tanpa melihatnya, dan menjalankan [skrip setup](#setup-scripts) sebelum Claude mulai bekerja.

14 14 

15Lingkungan yang sama berlaku di mana pun Anda memulai sesi cloud: [aplikasi Desktop](/docs/id/desktop), [aplikasi mobile Claude](/docs/id/mobile), browser Anda di [claude.ai/code](https://claude.ai/code), terminal dengan [`claude --cloud`](/docs/id/claude-code-on-the-web#from-terminal-to-cloud), [routines](/docs/id/routines), dan [Claude Tag](https://claude.com/docs/claude-tag/overview). Setiap permukaan ini juga dapat mengarahkan ke [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments). [Ketersediaan dan batasan](/docs/id/self-hosted-environments#availability-and-limitations) mencakup apa yang Claude belum dapat gunakan ketika sesi Claude Tag berjalan di dalamnya.15Lingkungan yang sama berlaku di mana pun Anda memulai sesi cloud: [aplikasi Desktop](/docs/id/desktop), [aplikasi mobile Claude](/docs/id/mobile), browser Anda di [claude.ai/code](https://claude.ai/code), terminal dengan [`claude --cloud`](/docs/id/claude-code-on-the-web#from-terminal-to-cloud), [routines](/docs/id/routines), dan [Claude Tag](https://claude.com/docs/claude-tag/overview). Setiap permukaan ini juga dapat mengarahkan ke [lingkungan yang di-host sendiri](/docs/id/self-hosted-environments). [Ketersediaan dan batasan](/docs/id/self-hosted-environments#availability-and-limitations) mencakup apa yang Claude belum dapat gunakan ketika sesi Claude Tag berjalan di dalamnya.

16 16 


44 Konfigurasi lingkungan Anda44 Konfigurasi lingkungan Anda

45</h2>45</h2>

46 46 

47Buat, edit, dan arsipkan lingkungan dari pemilih lingkungan, yang Anda jangkau di [claude.ai/code](https://claude.ai/code) setelah [onboarding web](/docs/id/web-quickstart), atau dari kotak prompt di [aplikasi Desktop](/docs/id/desktop#cloud-sessions). Lingkungan yang Anda buat bersifat pribadi untuk akun Anda; [lingkungan bersama](#organization-shared-environments) yang dibuat oleh Owner muncul di pemilih yang sama. Lihat [Alat yang diinstal](#installed-tools) untuk melihat apa yang tersedia tanpa konfigurasi apa pun.47Tambahkan, edit, dan arsipkan lingkungan dari pemilih lingkungan di bawah kotak pesan pada layar tempat Anda memulai sesi baru di [claude.ai/code](https://claude.ai/code). Untuk menjangkau layar tersebut, selesaikan [onboarding web](/docs/id/web-quickstart). Untuk aplikasi Desktop, lihat [Sesi cloud](/docs/id/desktop#cloud-sessions). Lingkungan yang Anda buat bersifat pribadi untuk akun Anda; [lingkungan bersama](#organization-shared-environments) yang dibuat oleh Owner muncul di pemilih bersama lingkungan tersebut. Lihat [Alat yang diinstal](#installed-tools) untuk melihat apa yang tersedia tanpa konfigurasi apa pun.

48 

49Pemilih hanya muncul sampai Anda mengirim pesan pertama sesi baru. Untuk mengedit lingkungan dari sesi cloud milik Anda yang sedang berjalan, pilih tanda caret setelah judul sesi di bagian atas, lalu pilih **Edit cloud environment**.

48 50 

49<Steps>51<Steps>

50 <Step title="Buka pemilih lingkungan">52 <Step title="Buka pemilih lingkungan">

51 Di [claude.ai/code](https://claude.ai/code), pilih ikon cloud yang menampilkan nama lingkungan saat ini, di baris di atas kotak pesan. Tidak ada halaman pengaturan atau URL langsung untuk pemilih.53 Di layar sesi baru, pilih kontrol pertama di baris di bawah kotak pesan.

52 

53 <Frame>

54 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-selector.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=cc2813a5664519eaf5a89d793ce5af26" alt="Pemilih lingkungan terbuka di atas kotak pesan di claude.ai/code. Tombol cloud yang menampilkan nama lingkungan Default duduk di baris di atas kotak pesan. Menu terbuka mencantumkan baris Local dengan label Download dan Desktop only, bagian Cloud di mana lingkungan Default dipilih dengan tanda centang dan menampilkan ikon roda gigi pengaturan saat hover, opsi Add cloud environment, dan bagian Remote Control dengan instruksi setup." width="1672" height="682" data-path="images/cloud-environment-selector.png" />

55 </Frame>

56 </Step>54 </Step>

57 55 

58 <Step title="Tambahkan atau edit lingkungan">56 <Step title="Tambahkan atau edit lingkungan">

59 Pilih **Cloud** untuk membuat daftar lingkungan Anda. Kemudian pilih **Add cloud environment**, atau arahkan ke lingkungan yang ada dan pilih ikon pengaturan yang muncul di sebelah kanan.57 * **Tambahkan lingkungan**: pilih **New environment** di bagian bawah menu untuk membuka dialog **New environment**. Isi formulir dan pilih **Add environment**. Sesi baru Anda kemudian menggunakan lingkungan yang Anda tambahkan.

58 * **Edit lingkungan**: temukan barisnya di bawah **Cloud**. Jika **Cloud** berupa satu baris, pilih baris tersebut untuk membuka daftar. Jika lingkungan Anda tidak tercantum di bawah **Cloud**, pilih baris **More** di bawah judul tersebut. Arahkan kursor ke baris lingkungan dan pilih ikon pengaturan yang muncul di sebelah kanannya untuk membuka dialognya.

60 59 

61 Dialog mencakup nama, tingkat akses jaringan, environment variable, dan skrip setup. Ketika Anda mengedit lingkungan cloud yang ada pada paket Pro atau Max, dialog juga mencakup [rahasia jaringan](#add-network-secrets).60 Dialog mencakup nama, tingkat akses jaringan, environment variable, dan skrip setup. Untuk menyimpan kunci yang digunakan sesi tanpa melihatnya, lihat [Tambahkan rahasia jaringan](#add-network-secrets).

62 

63 <Frame>

64 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="Dialog New cloud environment. Bidang Name dengan placeholder Default, pemilih Network access yang diatur ke Trusted dengan tautan ke kebijakan jaringan dan tingkat akses, kotak Environment variables yang menampilkan teks placeholder format .env dengan catatan bahwa nilai terlihat oleh siapa pun yang menggunakan lingkungan, kotak Setup script yang dijelaskan sebagai skrip Bash yang berjalan ketika sesi baru dimulai sebelum Claude Code diluncurkan, dan tombol Cancel dan Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />

65 </Frame>

66 </Step>61 </Step>

67</Steps>62</Steps>

68 63 


91 86 

92Sesi cloud juga menetapkan beberapa variabel sendiri ketika memulai. Untuk [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/id/claude-code-on-the-web#manage-context), nilai yang ditetapkan sesi menimpa nilai yang Anda tambahkan di sini, jadi menambahkan kunci itu di sini tidak berpengaruh.87Sesi cloud juga menetapkan beberapa variabel sendiri ketika memulai. Untuk [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/id/claude-code-on-the-web#manage-context), nilai yang ditetapkan sesi menimpa nilai yang Anda tambahkan di sini, jadi menambahkan kunci itu di sini tidak berpengaruh.

93 88 

94Siapa pun yang menggunakan lingkungan dapat membaca nilai. Pada paket Pro dan Max, gunakan [rahasia jaringan](#add-network-secrets) sebagai gantinya untuk kunci yang dapat dilampirkan proxy agent ke permintaan. [Permintaan yang tidak pernah mendapatkan rahasia](#requests-that-never-get-the-credential) tercantum di sana.89Siapa pun yang menggunakan lingkungan dapat membaca nilai. Dalam lingkungan yang di-host Anthropic, gunakan [rahasia jaringan](#add-network-secrets) sebagai gantinya untuk kunci yang dapat dilampirkan proxy agent ke permintaan. [Permintaan yang tidak pernah mendapatkan rahasia](#requests-that-never-get-the-credential) tercantum di sana.

95 90 

96<span id="add-api-credentials" />91<span id="add-api-credentials" />

97 92 


101 96 

102Rahasia jaringan adalah kunci API atau token yang Anda simpan di lingkungan cloud sehingga Claude dapat memanggil API itu dari sesi apa pun di lingkungan tanpa melihat kunci. Proxy agent Anthropic menambahkan kunci ke permintaan untuk host yang Anda cantumkan, setelah setiap permintaan meninggalkan VM sesi, sehingga kunci itu sendiri tetap berada di luar VM.97Rahasia jaringan adalah kunci API atau token yang Anda simpan di lingkungan cloud sehingga Claude dapat memanggil API itu dari sesi apa pun di lingkungan tanpa melihat kunci. Proxy agent Anthropic menambahkan kunci ke permintaan untuk host yang Anda cantumkan, setelah setiap permintaan meninggalkan VM sesi, sehingga kunci itu sendiri tetap berada di luar VM.

103 98 

104Rahasia jaringan tersedia pada paket Pro dan Max. Fitur ini belum tersedia pada paket Team atau Enterprise, jadi bagian **Network secrets** tidak muncul di dialog lingkungan pada paket tersebut.99Rahasia jaringan tersedia pada paket Pro, Max, Team, dan Enterprise. Untuk memeriksa apakah Anda dapat menambahkannya sendiri, lihat [Persyaratan](#requirements).

105 100 

106<h4 id="requirements">101<h4 id="requirements">

107 Persyaratan102 Persyaratan


109 104 

110Persyaratan ini menentukan apakah Anda dapat menambahkan rahasia dan apakah proxy agent dapat menggunakannya setelah ditambahkan:105Persyaratan ini menentukan apakah Anda dapat menambahkan rahasia dan apakah proxy agent dapat menggunakannya setelah ditambahkan:

111 106 

112* **Peran**: peran admin organisasi di organisasi claude.ai Anda107* **Peran**: pada paket Pro, Max, dan Team, Anda dapat menambahkan dan menghapus rahasia di lingkungan Anda sendiri apa pun peran Anda. Pada Team dan Enterprise, Owner memegang peran admin organisasi di organisasi claude.ai Anda dan Admin tidak, yang mengubah apa yang Anda lihat dalam kasus-kasus berikut:

113 * Pada Team dan Enterprise, Owner memegangnya dan Admin tidak108 * **Lingkungan Anda sendiri pada Enterprise**: dengan peran admin organisasi, Anda menambahkan dan menghapus rahasia. Tanpanya, bagian **Network secrets** mencantumkan rahasia di bawah catatan "Only an organization admin can add or delete network secrets", tanpa tombol **Add secret** atau tombol hapus. Minta Owner untuk menambahkan rahasia ke [lingkungan bersama](#organization-shared-environments), lalu jalankan sesi Anda di sana

114 * Pada Pro dan Max, Anda memegangnya di organisasi Anda sendiri109 * **Lingkungan bersama**: Owner [menambahkan dan menghapus rahasianya](#add-a-credential) dari pengaturan admin. Tanpa peran admin organisasi, minta Owner untuk menambahkan rahasia, karena dialog lingkungan tidak memiliki bagian **Network secrets**

110 * **Lingkungan Anda sendiri pada Team**: tanpa peran admin organisasi, **Add secret** membuka [formulir yang lebih singkat](#add-a-secret-without-the-role) yang menerima satu host

115* **Jenis lingkungan**: lingkungan cloud yang di-host Anthropic yang sudah ada. [Lingkungan yang di-host sendiri](/docs/id/self-hosted-environments) tidak memiliki rahasia jaringan111* **Jenis lingkungan**: lingkungan cloud yang di-host Anthropic yang sudah ada. [Lingkungan yang di-host sendiri](/docs/id/self-hosted-environments) tidak memiliki rahasia jaringan

116* **Jangkauan API**: API menerima koneksi dari internet, karena permintaan meninggalkan dari jaringan Anthropic112* **Jangkauan API**: API menerima koneksi dari internet, karena permintaan meninggalkan dari jaringan Anthropic

117* **Kunci enkripsi**: jika organisasi Anda menggunakan kunci enkripsi yang dikelola pelanggan, Anda tidak dapat menyimpan rahasia jaringan113* **Kunci enkripsi**: jika organisasi Anda menggunakan kunci enkripsi yang dikelola pelanggan, Anda tidak dapat menyimpan rahasia jaringan


122 118 

123Anda menambahkan rahasia satu per satu, dan Anda tidak dapat mengedit rahasia setelah menambahkannya. Untuk mengubah host atau nilai rahasia, hapus dan tambahkan lagi.119Anda menambahkan rahasia satu per satu, dan Anda tidak dapat mengedit rahasia setelah menambahkannya. Untuk mengubah host atau nilai rahasia, hapus dan tambahkan lagi.

124 120 

121Untuk menambahkan rahasia ke [lingkungan bersama](#organization-shared-environments), buka lingkungan tersebut untuk diedit dari halaman **Cloud environments** di [pengaturan admin](https://claude.ai/admin-settings), lalu lanjutkan langkah 1 dari bagian **Network secrets**. Jika Anda menggunakan paket Team dan tidak memegang [peran admin organisasi](#requirements), ikuti langkah 1 di lingkungan Anda sendiri, lalu [isi formulir yang lebih singkat](#add-a-secret-without-the-role).

122 

125<Steps>123<Steps>

126 <Step title="Buka rahasia jaringan lingkungan">124 <Step title="Buka rahasia jaringan lingkungan">

127 [Buka lingkungan untuk diedit](#configure-your-environment) di [claude.ai/code](https://claude.ai/code). Di dialog **Edit environment**, temukan bagian **Network secrets**. Anda melihat rahasia yang sudah ada di lingkungan, masing-masing dengan host yang berlaku.125 [Buka lingkungan untuk diedit](#configure-your-environment) di [claude.ai/code](https://claude.ai/code). Di dialog **Edit cloud environment**, temukan bagian **Network secrets**. Anda melihat rahasia yang sudah ada di lingkungan, masing-masing dengan host yang berlaku.

128 </Step>126 </Step>

129 127 

130 <Step title="Tambahkan rahasia">128 <Step title="Tambahkan rahasia">

131 Pilih **Add secret** dan isi formulir. Pertahankan **Credential type** default, **Bearer**, untuk kunci API yang berjalan di header permintaan, dan isi bidang ini:129 Pilih **Add secret** dan isi formulir. Pertahankan **Secret type** default, **Bearer**, untuk kunci API yang berjalan di header permintaan, dan isi bidang ini:

132 130 

133 * **Name**: label untuk rahasia, seperti `Internal billing API`131 * **Name**: label untuk rahasia, seperti `Internal billing API`

134 * **Allowed websites**: host API, seperti `api.example.com`. `*.` di depan cocok dengan setiap subdomain132 * **Allowed websites**: host API, seperti `api.example.com`. `*.` di depan cocok dengan setiap subdomain

135 * **Custom headers**: satu baris untuk header yang membawa kunci. Baris dimulai dengan `Authorization` sebagai **Name** header dan `Bearer` sebagai **Prefix**; tempel kunci itu sendiri sebagai **Value**. Untuk header seperti `X-Api-Key` yang mengambil nilai telanjang, ubah nama dan kosongkan prefix133 * **Custom headers**: satu baris untuk header yang membawa kunci. Baris dimulai dengan `Authorization` sebagai **Name** header dan `Bearer` sebagai **Prefix**; tempel kunci itu sendiri sebagai **Value**. Untuk header seperti `X-Api-Key` yang mengambil nilai telanjang, ubah nama dan kosongkan prefix

136 134 

137 Untuk API yang mengautentikasi dengan cara lain, pilih **Credential type** yang berbeda. Daftar adalah yang sama yang ditawarkan [Claude Tag](https://claude.com/docs/claude-tag/overview), integrasi Slack untuk paket Team dan Enterprise, untuk [koneksi](https://claude.com/docs/claude-tag/admins/add-connections).135 Untuk API yang mengautentikasi dengan cara lain, pilih **Secret type** yang berbeda. Daftar adalah yang sama yang ditawarkan [Claude Tag](https://claude.com/docs/claude-tag/overview), integrasi Slack untuk paket Team dan Enterprise, untuk [koneksi](https://claude.com/docs/claude-tag/admins/add-connections).

138 </Step>136 </Step>

139 137 

140 <Step title="Simpan rahasia">138 <Step title="Simpan rahasia">

141 Pilih **Connect**. Rahasia muncul dalam daftar dengan hostnya, disimpan tanpa tombol **Save changes** dialog. Anda tidak dapat melihat nilai lagi setelah menyimpan.139 Pilih **Add**. Rahasia muncul dalam daftar dengan hostnya, disimpan tanpa tombol **Save changes** dialog. Anda tidak dapat melihat nilai lagi setelah menyimpan.

142 </Step>140 </Step>

143</Steps>141</Steps>

144 142 

145Untuk mengonfirmasi rahasia berfungsi, mulai sesi di lingkungan dan minta Claude memanggil API, misalnya dengan `curl`. API menjawab seolah-olah kunci ada dalam permintaan, dan kunci tidak muncul di environment variable sesi atau di file apa pun. Jika daftar menandai rahasia **Not sent** sebagai gantinya, catatan di bawahnya menjelaskan alasannya dan apa yang harus dilakukan. Dua rahasia yang hostnya tumpang tindih tanpa cocok persis tidak mendapat penanda, dan proxy agent mengirim hanya satu dari keduanya.143Untuk mengonfirmasi rahasia berfungsi, mulai sesi di lingkungan dan minta Claude memanggil API, misalnya dengan `curl`. API menjawab seolah-olah kunci ada dalam permintaan, dan kunci tidak muncul di environment variable sesi atau di file apa pun. Jika daftar menandai rahasia **Not sent** sebagai gantinya, catatan di bawahnya menjelaskan alasannya dan apa yang harus dilakukan. Dua rahasia yang hostnya tumpang tindih tanpa cocok persis tidak mendapat penanda, dan proxy agent mengirim hanya satu dari keduanya.

146 144 

145<h4 id="add-a-secret-without-the-role">

146 Tambahkan rahasia pada paket Team tanpa peran admin organisasi

147</h4>

148 

149Jika Anda menggunakan paket Team dan tidak memegang [peran admin organisasi](#requirements), formulir **Add secret** menerima satu rahasia untuk satu host. Pilih **Add secret** di [bagian **Network secrets**](#add-a-credential) lingkungan Anda, isi bidang-bidang ini, lalu pilih tombol **Add secret** pada formulir:

150 

151* **Host**: satu host yang mendapatkan rahasia, seperti `api.example.com`. Formulir tidak menerima wildcard `*.`

152* **Name**: label opsional untuk rahasia

153* **Secret type**: **Token** untuk kunci yang berjalan di header permintaan, atau **Username and password**. Untuk token, tempel kunci sebagai **Value**

154 

147<h4 id="which-requests-get-the-credential">155<h4 id="which-requests-get-the-credential">

148 Permintaan mana yang mendapatkan rahasia156 Permintaan mana yang mendapatkan rahasia

149</h4>157</h4>


175 Arsipkan lingkungan183 Arsipkan lingkungan

176</h3>184</h3>

177 185 

178Untuk mengarsipkan salah satu lingkungan Anda sendiri, buka untuk diedit dan pilih **Archive**. Owner mengarsipkan [lingkungan bersama](#organization-shared-environments) dari halaman **Cloud environments** di pengaturan admin. Anda tidak dapat menghapus lingkungan, hanya mengarsipkannya.186Untuk mengarsipkan salah satu lingkungan Anda sendiri, buka untuk diedit, pilih **Archive environment**, dan konfirmasi. Jika lingkungan tersebut [dibagikan dengan organisasi Anda](#organization-shared-environments), Owner mengarsipkannya dari halaman **Cloud environments** di [pengaturan admin](https://claude.ai/admin-settings) sebagai gantinya, jadi mintalah kepada Owner kecuali Anda sendiri adalah Owner. Anda tidak dapat menghapus lingkungan, hanya mengarsipkannya.

179 187 

180Pengarsipan mempengaruhi sesi baru, bukan yang sedang berjalan:188Pengarsipan mempengaruhi sesi baru, bukan yang sedang berjalan:

181 189 


199 207 

200Owner memilih [lingkungan default](#the-default-environment) organisasi secara terpisah, di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).208Owner memilih [lingkungan default](#the-default-environment) organisasi secara terpisah, di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

201 209 

202Sesi setiap anggota di lingkungan bersama membaca variabelnya, jadi jangan sertakan rahasia di dalamnya. [Rahasia jaringan](#add-network-secrets), yang memberikan sesi kunci yang tidak dapat dibacanya, belum tersedia pada paket Team atau Enterprise.210Untuk memberikan sesi lingkungan bersama kunci yang tidak dapat dibacanya, tambahkan [rahasia jaringan](#add-network-secrets) ketika Anda mengedit lingkungan di halaman **Cloud environments**. Jangan sertakan rahasia di variabelnya, karena sesi setiap anggota membacanya.

203 211 

204<h3 id="set-the-environment-a-claude-tag-channel-uses">212<h3 id="set-the-environment-a-claude-tag-channel-uses">

205 Tetapkan lingkungan yang digunakan saluran Claude Tag213 Tetapkan lingkungan yang digunakan saluran Claude Tag


216 224 

217Setiap lingkungan menetapkan satu tingkat akses jaringan, yang mengontrol koneksi keluar yang dapat dibuat sesinya. Tingkat default, **Trusted**, memungkinkan registri paket dan [domain yang diizinkan lainnya](#default-allowed-domains); **Custom** mengambil daftar domain Anda sendiri.225Setiap lingkungan menetapkan satu tingkat akses jaringan, yang mengontrol koneksi keluar yang dapat dibuat sesinya. Tingkat default, **Trusted**, memungkinkan registri paket dan [domain yang diizinkan lainnya](#default-allowed-domains); **Custom** mengambil daftar domain Anda sendiri.

218 226 

219Untuk mengubah akses jaringan lingkungan, [buka untuk diedit](#configure-your-environment) dan gunakan pemilih **Network access** di dialog. Lingkungan [bersama](#organization-shared-environments) membuka read-only di sana, jadi Owner mengubah akses jaringannya dari halaman **Cloud environments** di [pengaturan admin](https://claude.ai/admin-settings) sebagai gantinya. Ikon cloud yang membuka pemilih muncul di permukaan aplikasi yang tercantum di bawah [Lingkungan Default](#the-default-environment) dan di [editor routine](/docs/id/routines#environments-and-network-access); lingkungan pribadi tidak memiliki halaman terpisah di pengaturan akun claude.ai Anda.227Untuk mengubah akses jaringan lingkungan, [buka untuk diedit](#configure-your-environment) dan gunakan pemilih **Network access** di dialog. Lingkungan [bersama](#organization-shared-environments) membuka read-only di sana, jadi Owner mengubah akses jaringannya dari halaman **Cloud environments** di [pengaturan admin](https://claude.ai/admin-settings) sebagai gantinya. Kontrol yang membuka pemilih muncul di surface aplikasi yang tercantum di bawah [Lingkungan Default](#the-default-environment) dan di [editor routine](/docs/id/routines#environments-and-network-access); lingkungan pribadi tidak memiliki halaman terpisah di pengaturan akun claude.ai Anda.

220 228 

221Ketika Anda mengubah akses jaringan lingkungan yang di-host Anthropic, sesi yang ada mengikuti pengaturan baru dalam waktu sekitar satu menit, untuk permintaan yang melewati [allowlist jaringan](#access-levels) sesi. Anda tidak perlu memulai sesi baru.229Ketika Anda mengubah akses jaringan lingkungan yang di-host Anthropic, sesi yang ada mengikuti pengaturan baru dalam waktu sekitar satu menit, untuk permintaan yang melewati [allowlist jaringan](#access-levels) sesi. Anda tidak perlu memulai sesi baru.

222 230 


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

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

276* **Pembatasan push**: proxy menolak penghapusan branch dan push apa pun selain branch, seperti tag. Proxy tidak membatasi branch mana yang dapat diperbarui oleh push. Untuk melakukannya, gunakan aturan perlindungan branch atau ruleset di GitHub.284* **Pembatasan push**: proxy menolak penghapusan branch dan push apa pun selain branch, seperti tag. Proxy tidak membatasi branch mana yang dapat diperbarui oleh push. Untuk melakukannya, gunakan aturan perlindungan branch atau ruleset di GitHub.

277* **Cakupan repositori**: proxy melayani permintaan API GitHub untuk repositori yang terlampir pada sesi. Permintaan API untuk repositori lain mendapat 403 yang pesannya diawali dengan `GitHub access to` dan berisi `is not enabled for this session`.285* **Cakupan repositori**: proxy melayani permintaan API GitHub untuk repositori yang terlampir pada sesi. Permintaan API untuk repositori lain mendapat 403 yang pesannya diawali dengan `GitHub access to` dan berisi `is not enabled for this session`. Arsip sumber yang Anda ambil melalui URL `github.com/{owner}/{repo}/archive/` atau `codeload.github.com` mendapat 403 yang sama ketika repositori tidak terlampir, bahkan repositori publik.

278* **Pembatasan GraphQL**: proxy menolak permintaan ke endpoint GraphQL GitHub dengan 403 yang pesannya diawali dengan `GitHub GraphQL is not available from Claude Code sessions` dan menyebutkan fallback REST, `gh api repos/{owner}/{repo}/...`. Subperintah `gh` yang menggunakan GraphQL, seperti `gh pr` dan `gh issue`, mendapat 403 yang sama. Pembatasan berlaku untuk setiap permintaan melalui proxy terlepas dari kredensial yang Anda berikan, jadi `GH_TOKEN` yang Anda tetapkan mendapat 403 yang sama. Claude tidak dapat menjangkau API GitHub yang hanya ada di GraphQL, seperti Projects v2, melalui proxy.286* **Pembatasan GraphQL**: proxy menolak permintaan ke endpoint GraphQL GitHub dengan 403 yang pesannya diawali dengan `GitHub GraphQL is not available from Claude Code sessions` dan menyebutkan fallback REST, `gh api repos/{owner}/{repo}/...`. Subperintah `gh` yang menggunakan GraphQL, seperti `gh pr` dan `gh issue`, mendapat 403 yang sama. Pembatasan berlaku untuk setiap permintaan melalui proxy terlepas dari kredensial yang Anda berikan, jadi `GH_TOKEN` yang Anda tetapkan mendapat 403 yang sama. Claude tidak dapat menjangkau API GitHub yang hanya ada di GraphQL, seperti Projects v2, melalui proxy.

279 287 

280File yang berkomitmen dari repositori publik tiba melalui `raw.githubusercontent.com`, yang ditangani [proxy keamanan](#security-proxy) sebagai gantinya. Domain itu ada dalam daftar [Trusted](#default-allowed-domains) default, jadi file tersebut tetap dapat dijangkau kecuali [tingkat akses](#access-levels) lingkungan mengecualikannya.288File yang berkomitmen dari repositori publik tiba melalui `raw.githubusercontent.com`, yang ditangani [proxy keamanan](#security-proxy) sebagai gantinya. Domain itu ada dalam daftar [Trusted](#default-allowed-domains) default, jadi file tersebut tetap dapat dijangkau kecuali [tingkat akses](#access-levels) lingkungan mengecualikannya.


318| Plugin yang hanya diaktifkan di pengaturan pengguna Anda | Tidak | `enabledPlugins` yang dibatasi pengguna hidup di `~/.claude/settings.json` di mesin Anda |326| Plugin yang hanya diaktifkan di pengaturan pengguna Anda | Tidak | `enabledPlugins` yang dibatasi pengguna hidup di `~/.claude/settings.json` di mesin Anda |

319| Server MCP yang Anda tambahkan dengan `claude mcp add` di cakupan lokal default atau cakupan pengguna | Tidak | Mereka menulis ke `~/.claude.json` di mesin Anda, bukan repo. Tambahkan server dengan `claude mcp add --scope project`, yang menulis [`.mcp.json`](/docs/id/mcp#project-scope) repo, dan commit file itu. Sesi dengan satu repositori memuat file itu |327| Server MCP yang Anda tambahkan dengan `claude mcp add` di cakupan lokal default atau cakupan pengguna | Tidak | Mereka menulis ke `~/.claude.json` di mesin Anda, bukan repo. Tambahkan server dengan `claude mcp add --scope project`, yang menulis [`.mcp.json`](/docs/id/mcp#project-scope) repo, dan commit file itu. Sesi dengan satu repositori memuat file itu |

320| Variabel transport di blok `env` `.claude/settings.json` repo Anda, seperti `NODE_EXTRA_CA_CERTS` dan [variabel sertifikat klien mTLS](/docs/id/network-config#mtls-authentication) | Tidak | Lingkungan hosting mengelola koneksi API sesi, jadi Claude Code mengabaikan kunci ini dan mencatat setiap kunci yang diabaikan di log debug sesi |328| Variabel transport di blok `env` `.claude/settings.json` repo Anda, seperti `NODE_EXTRA_CA_CERTS` dan [variabel sertifikat klien mTLS](/docs/id/network-config#mtls-authentication) | Tidak | Lingkungan hosting mengelola koneksi API sesi, jadi Claude Code mengabaikan kunci ini dan mencatat setiap kunci yang diabaikan di log debug sesi |

321| Kunci API dan token untuk layanan yang dipanggil Claude | Pada paket Pro dan Max, sebagai [rahasia jaringan](#add-network-secrets) | Anda menambahkan kunci sekali di lingkungan dan proxy agent melampirkannya ke permintaan untuk host yang Anda cantumkan. Kunci yang [tidak dapat dilampirkan](#requests-that-never-get-the-credential) proxy agent, atau kunci apa pun pada paket Team atau Enterprise, tetap berada dalam environment variable |329| Kunci API dan token untuk layanan yang dipanggil Claude | Di lingkungan yang di-host Anthropic, sebagai [rahasia jaringan](#add-network-secrets) | Anda menambahkan kunci sekali di lingkungan dan proxy agent melampirkannya ke permintaan untuk host yang Anda cantumkan. Kunci yang [tidak dapat dilampirkan](#requests-that-never-get-the-credential) proxy agent tetap berada dalam environment variable |

322| Auth interaktif seperti AWS SSO | Tidak | Tidak didukung. SSO memerlukan login berbasis browser yang tidak dapat berjalan di sesi cloud |330| Auth interaktif seperti AWS SSO | Tidak | Tidak didukung. SSO memerlukan login berbasis browser yang tidak dapat berjalan di sesi cloud |

323 331 

324Untuk membuat konfigurasi Anda sendiri tersedia di sesi cloud, commit ke repo.332Untuk membuat konfigurasi Anda sendiri tersedia di sesi cloud, commit ke repo.

325 333 

326Siapa pun yang menggunakan lingkungan dapat membaca environment variable dan skrip setupnya. Catatan dialog di bawah **Environment variables** menyatakan hal ini dan memperingatkan agar tidak menaruh rahasia di sana. Pada paket Pro dan Max, simpan kunci yang dapat dilampirkan proxy agent sebagai [rahasia jaringan](#add-network-secrets) sebagai gantinya.334Siapa pun yang menggunakan lingkungan dapat membaca environment variable dan skrip setupnya. Catatan dialog di bawah **Environment variables** menyatakan hal ini dan memperingatkan agar tidak menaruh rahasia di sana. Di lingkungan yang di-host Anthropic, simpan kunci yang dapat dilampirkan proxy agent sebagai [rahasia jaringan](#add-network-secrets) sebagai gantinya.

327 335 

328<h4 id="add-personal-preferences-without-committing-to-the-repo">336<h4 id="add-personal-preferences-without-committing-to-the-repo">

329 Tambahkan preferensi pribadi tanpa melakukan commit ke repo337 Tambahkan preferensi pribadi tanpa melakukan commit ke repo

code-review.md +0 −2

Details

155* Anda harus memiliki izin tulis, pertahankan, atau admin pada repositori155* Anda harus memiliki izin tulis, pertahankan, atau admin pada repositori

156* PR harus terbuka156* PR harus terbuka

157 157 

158Jika repositori milik organisasi dan keanggotaan Anda di organisasi tersebut bersifat pribadi, yang merupakan default GitHub, GitHub tidak mengidentifikasi Anda kepada Claude sebagai anggota. Claude mungkin masih bereaksi terhadap komentar Anda dengan 👀, tetapi tidak memulai ulasan kecuali Anda ditambahkan ke repositori secara langsung sebagai kolaborator, bahkan ketika tim atau izin dasar organisasi memberi Anda akses tulis. Untuk memperbaiki ini, [buat keanggotaan organisasi Anda publik](https://docs.github.com/en/account-and-profile/setting-up-and-managing-your-personal-account-on-github/managing-your-membership-in-organizations/publicizing-or-hiding-organization-membership) atau minta admin repositori untuk menambahkan Anda ke repositori sebagai kolaborator.

159 

160Tidak seperti pemicu otomatis, pemicu manual berjalan pada PR draf, karena permintaan eksplisit menandakan Anda menginginkan ulasan sekarang terlepas dari status draf.158Tidak seperti pemicu otomatis, pemicu manual berjalan pada PR draf, karena permintaan eksplisit menandakan Anda menginginkan ulasan sekarang terlepas dari status draf.

161 159 

162Jika ulasan sudah berjalan pada PR tersebut, permintaan antri sampai ulasan yang sedang berlangsung selesai. Anda dapat memantau kemajuan melalui jalankan pemeriksaan pada PR.160Jika ulasan sudah berjalan pada PR tersebut, permintaan antri sampai ulasan yang sedang berlangsung selesai. Anda dapat memantau kemajuan melalui jalankan pemeriksaan pada PR.

commands.md +6 −6

Details

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

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

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

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

71| `/chrome` | Konfigurasi pengaturan [Claude di Chrome](/docs/id/chrome) |71| `/chrome` | Konfigurasi pengaturan [Claude di Chrome](/docs/id/chrome) |

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

114| `/mcp [reconnect (<server>\|all)\|enable\|disable [<server>\|all]]` | Kelola koneksi server MCP dan autentikasi OAuth. Jalankan tanpa argumen untuk membuka daftar interaktif, atau berikan `reconnect`, `enable`, atau `disable` dengan nama server atau `all` untuk mengubah status koneksi tanpa membukanya. `reconnect all` [mencoba ulang setiap server yang gagal atau memerlukan autentikasi](/docs/id/mcp#retry-failed-servers-yourself). Dalam mode non-interaktif (`-p`), menjalankannya tanpa argumen mencetak ringkasan teks status server alih-alih membuka daftar; memerlukan Claude Code v2.1.205 atau lebih baru |114| `/mcp [reconnect (<server>\|all)\|enable\|disable [<server>\|all]]` | Kelola koneksi server MCP dan autentikasi OAuth. Jalankan tanpa argumen untuk membuka daftar interaktif, atau berikan `reconnect`, `enable`, atau `disable` dengan nama server atau `all` untuk mengubah status koneksi tanpa membukanya. `reconnect all` [mencoba ulang setiap server yang gagal atau memerlukan autentikasi](/docs/id/mcp#retry-failed-servers-yourself). Dalam mode non-interaktif (`-p`), menjalankannya tanpa argumen mencetak ringkasan teks status server alih-alih membuka daftar |

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

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

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


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

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

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

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

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

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

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

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

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

Details

419 * Anda dapat mereferensikan beberapa file dalam satu pesan (misalnya, "@file1.js and @file2.js")419 * Anda dapat mereferensikan beberapa file dalam satu pesan (misalnya, "@file1.js and @file2.js")

420</Tip>420</Tip>

421 421 

422Untuk mencegah referensi `@` menyertakan konten file dan daftar direktori dalam pesan Anda, atur [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/id/env-vars#variables) di shell atau pengaturan pengguna Anda. Claude kemudian menerima jalur yang Anda referensikan beserta catatan untuk membacanya menggunakan tool file miliknya. Variabel ini memerlukan Claude Code v2.1.299 atau yang lebih baru, dan Claude Code mengabaikannya dalam pengaturan proyek dan lokal.

423 

422***424***

423 425 

424<h3 id="run-claude-on-a-schedule">426<h3 id="run-claude-on-a-schedule">

Details

1602| System prompt dan gaya output | Keduanya masih berlaku |1602| System prompt dan gaya output | Keduanya masih berlaku |

1603| CLAUDE.md akar proyek dan aturan tanpa cakupan | Disuntikkan kembali dari disk |1603| CLAUDE.md akar proyek dan aturan tanpa cakupan | Disuntikkan kembali dari disk |

1604| Auto memory | Disuntikkan kembali dari disk |1604| Auto memory | Disuntikkan kembali dari disk |

1605| [Snapshot status Git](/docs/id/settings-reference#includegitinstructions) | Claude Code membaca yang baru dari repositori Anda |1605| [Snapshot status Git](/docs/id/settings-reference#includegitinstructions) | Jika sesi dimulai dengan snapshot tersebut, Claude Code membaca yang baru dari repositori Anda |

1606| Rencana yang ditulis Claude dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) | Disuntikkan kembali dari disk |1606| Rencana yang ditulis Claude dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) | Disuntikkan kembali dari disk |

1607| Aturan dengan frontmatter `paths:` | Claude Code memuat ulang mereka [sesuai kebutuhan](/docs/id/memory#path-specific-rules) |1607| Aturan dengan frontmatter `paths:` | Claude Code memuat ulang mereka [sesuai kebutuhan](/docs/id/memory#path-specific-rules) |

1608| CLAUDE.md bersarang di subdirektori | Claude Code memuat ulang mereka [sesuai kebutuhan](/docs/id/memory#how-claude-md-files-load) |1608| CLAUDE.md bersarang di subdirektori | Claude Code memuat ulang mereka [sesuai kebutuhan](/docs/id/memory#how-claude-md-files-load) |


1622 Ketika konteks Anda penuh1622 Ketika konteks Anda penuh

1623</h2>1623</h2>

1624 1624 

1625Claude Code secara otomatis dipadatkan saat Anda mendekati batas, sehingga jendela konteks yang penuh tidak mengakhiri sesi Anda. Lintasan otomatis bekerja dengan cara yang sama seperti langkah `/compact` dalam garis waktu. Lihat [Ketika konteks penuh](/docs/id/how-claude-code-works#when-context-fills-up) untuk apa yang dipertahankannya.1625Claude Code secara otomatis dipadatkan saat Anda mendekati batas, sehingga jendela konteks yang penuh tidak mengakhiri sesi Anda. Lintasan otomatis bekerja dengan cara yang sama seperti langkah `/compact` dalam garis waktu. Lihat [Ketika konteks penuh](/docs/id/how-claude-code-works#when-context-fills-up) untuk apa yang dipertahankannya. Untuk kapan Claude Code juga melakukan compaction pada percakapan yang Anda biarkan menganggur, lihat [idle compaction](/docs/id/settings-reference#idlecompaction).

1626 1626 

1627Anda juga dapat bertindak sebelum lintasan otomatis berjalan:1627Anda juga dapat bertindak sebelum lintasan otomatis berjalan:

1628 1628 

Details

128* **Toleransi untuk diinvokasi dari dalam dirinya sendiri.** Claude Code menerapkan peluncur ke setiap self-spawn bersarang, jadi peluncur yang memperoleh sumber daya eksklusif harus mendeteksi bahwa itu sudah memegangnya.128* **Toleransi untuk diinvokasi dari dalam dirinya sendiri.** Claude Code menerapkan peluncur ke setiap self-spawn bersarang, jadi peluncur yang memperoleh sumber daya eksklusif harus mendeteksi bahwa itu sudah memegangnya.

129* **Jangan tulis ke terminal sebelum Claude Code dimulai.** Apa pun yang dicetak sebelum `exec` dilaporkan sebagai penyebab kerusakan jika sesi mati sebelum inisialisasi.129* **Jangan tulis ke terminal sebelum Claude Code dimulai.** Apa pun yang dicetak sebelum `exec` dilaporkan sebagai penyebab kerusakan jika sesi mati sebelum inisialisasi.

130* **Jangan bergantung pada cara argumen dieja.** Nilai sebuah flag dapat tiba sebagai argumennya sendiri, `--flag value`, atau digabungkan dengan flag, `--flag=value`. Bentuk yang digunakan sebuah flag dapat berubah antar versi.130* **Jangan bergantung pada cara argumen dieja.** Nilai sebuah flag dapat tiba sebagai argumennya sendiri, `--flag value`, atau digabungkan dengan flag, `--flag=value`. Bentuk yang digunakan sebuah flag dapat berubah antar versi.

131* **Jalankan `exec` dari direktori tempat peluncur dimulai.** Claude Code bekerja di direktori tempat ia dimulai, sehingga peluncur yang mengubah direktori dapat memulai sesi di proyek yang salah. Jika peluncur harus memasuki namespace atau sandbox yang mengatur ulang direktori kerja, kembalilah ke direktori awal di dalamnya, sebelum `exec`.

131 132 

132<h3 id="format-of-the-launcher-value">133<h3 id="format-of-the-launcher-value">

133 Format nilai peluncur134 Format nilai peluncur

Details

170| Skill tidak muncul di `/skills` | File skill berada di `.claude/skills/name.md` bukan dalam folder | Gunakan folder dengan `SKILL.md` di dalamnya: `.claude/skills/name/SKILL.md`. |170| Skill tidak muncul di `/skills` | File skill berada di `.claude/skills/name.md` bukan dalam folder | Gunakan folder dengan `SKILL.md` di dalamnya: `.claude/skills/name/SKILL.md`. |

171| Skill muncul di `/skills` tetapi Claude tidak pernah menginvokasinya | Skill memiliki `disable-model-invocation: true` di frontmatter-nya, atau deskripsinya tidak cocok dengan cara Anda merumuskan permintaan | Periksa lencana di `/skills`: label "user-only" berarti Claude tidak akan memicunya sendiri. Lihat [skill invocation](/docs/id/skills). |171| Skill muncul di `/skills` tetapi Claude tidak pernah menginvokasinya | Skill memiliki `disable-model-invocation: true` di frontmatter-nya, atau deskripsinya tidak cocok dengan cara Anda merumuskan permintaan | Periksa lencana di `/skills`: label "user-only" berarti Claude tidak akan memicunya sendiri. Lihat [skill invocation](/docs/id/skills). |

172| Instruksi `CLAUDE.md` subdirektori tampak diabaikan | File subdirektori dimuat sesuai permintaan, bukan pada awal sesi | Untuk memuat `CLAUDE.md` sebuah subdirektori, minta Claude membaca file lain di subdirektori tersebut. Lihat [kapan file subdirektori dimuat](/docs/id/memory#how-claude-md-files-load). |172| Instruksi `CLAUDE.md` subdirektori tampak diabaikan | File subdirektori dimuat sesuai permintaan, bukan pada awal sesi | Untuk memuat `CLAUDE.md` sebuah subdirektori, minta Claude membaca file lain di subdirektori tersebut. Lihat [kapan file subdirektori dimuat](/docs/id/memory#how-claude-md-files-load). |

173| Subagent mengabaikan instruksi `CLAUDE.md` | Agen Explore dan Plan bawaan melewati `CLAUDE.md`. Subagent kustom memuatnya dengan cara yang sama seperti percakapan utama, kecuali definisinya menetapkan [`omitClaudeMd`](/docs/id/sub-agents#supported-frontmatter-fields) | Untuk Explore atau Plan, nyatakan kembali instruksi dalam prompt delegasi Anda. Untuk subagent yang menetapkan `omitClaudeMd`, hapus bidang tersebut. Untuk subagent kustom lainnya, letakkan instruksi penting di badan file agen, yang menjadi system prompt agen. Lihat [apa yang dimuat saat startup](/docs/id/sub-agents#what-loads-at-startup). |173| Subagent mengabaikan instruksi `CLAUDE.md` | Agent Explore dan Plan bawaan melewati `CLAUDE.md` saat startup. Subagent kustom memuatnya dengan cara yang sama seperti percakapan utama, kecuali definisinya menetapkan [`omitClaudeMd`](/docs/id/sub-agents#supported-frontmatter-fields) | Untuk Explore atau Plan, nyatakan kembali instruksi dalam prompt delegasi Anda. Untuk subagent yang menetapkan `omitClaudeMd`, hapus bidang tersebut. Untuk subagent kustom lainnya, letakkan instruksi penting di badan file agent, yang menjadi system prompt agent. Lihat [apa yang dimuat saat startup](/docs/id/sub-agents#what-loads-at-startup). |

174| Logika pembersihan tidak pernah berjalan di akhir sesi | Tidak ada hook `SessionEnd` yang dikonfigurasi | Tambahkan hook `SessionEnd` di `settings.json`. Lihat [daftar acara hook](/docs/id/hooks#hook-events). |174| Logika pembersihan tidak pernah berjalan di akhir sesi | Tidak ada hook `SessionEnd` yang dikonfigurasi | Tambahkan hook `SessionEnd` di `settings.json`. Lihat [daftar acara hook](/docs/id/hooks#hook-events). |

175| Server MCP di `.mcp.json` tidak pernah dimuat | File berada di bawah `.claude/`, atau servernya berada di bawah kunci `servers` tingkat atas, seperti dalam `mcp.json` VS Code, bukan `mcpServers` | Konfigurasi MCP proyek berada di akar repositori sebagai `.mcp.json`, bukan di dalam `.claude/`, dengan server di bawah kunci `mcpServers`. Lihat [konfigurasi MCP](/docs/id/mcp). |175| Server MCP di `.mcp.json` tidak pernah dimuat | File berada di bawah `.claude/`, atau servernya berada di bawah kunci `servers` tingkat atas, seperti dalam `mcp.json` VS Code, bukan `mcpServers` | Konfigurasi MCP proyek berada di akar repositori sebagai `.mcp.json`, bukan di dalam `.claude/`, dengan server di bawah kunci `mcpServers`. Lihat [konfigurasi MCP](/docs/id/mcp). |

176| Server MCP ditambahkan di bawah `mcpServers` di `settings.json` tidak pernah muncul | `settings.json` tidak membaca kunci `mcpServers` | Tentukan server proyek di `.mcp.json` di akar repositori, atau jalankan `claude mcp add --scope user` untuk server berscopepengguna. Lihat [konfigurasi MCP](/docs/id/mcp). |176| Server MCP ditambahkan di bawah `mcpServers` di `settings.json` tidak pernah muncul | `settings.json` tidak membaca kunci `mcpServers` | Tentukan server proyek di `.mcp.json` di akar repositori, atau jalankan `claude mcp add --scope user` untuk server berscopepengguna. Lihat [konfigurasi MCP](/docs/id/mcp). |

desktop.md +135 −11

Details

101| **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. |101| **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. |

102| **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. |102| **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. |

103| **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. |103| **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. |

104| **Bypass permissions** | `bypassPermissions` | Claude berjalan tanpa permintaan izin, kecuali untuk [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves), pengklasifikasi keamanan ketika Claude [bertindak di situs eksternal](#browse-external-sites), atau tindakan desktop di mana Claude selalu meminta terlebih dahulu, seperti [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. |104| **Bypass permissions** | `bypassPermissions` | Claude berjalan tanpa permintaan izin, kecuali untuk [tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#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. |

105 105 

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

107 107 


131 131 

132Pane Browser juga dapat membuka file HTML statis, PDF, gambar, dan video dari proyek Anda. Klik path HTML, PDF, gambar, atau video di chat untuk membukanya di sana.132Pane Browser juga dapat membuka file HTML statis, PDF, gambar, dan video dari proyek Anda. Klik path HTML, PDF, gambar, atau video di chat untuk membukanya di sana.

133 133 

134<Note>

135 Dalam [sesi SSH](#ssh-sessions), Claude tidak dapat membuka aplikasi Anda di pane Browser, karena Claude tidak memiliki tool pane tersebut di sana. Untuk melihat aplikasi sendiri, [teruskan port-nya ke komputer Anda](#reach-a-port-on-the-remote-machine).

136</Note>

137 

134Dari pane Browser, Anda dapat:138Dari pane Browser, Anda dapat:

135 139 

136* Berinteraksi dengan aplikasi yang sedang berjalan langsung di pane Browser140* Berinteraksi dengan aplikasi yang sedang berjalan langsung di pane Browser


218 222 

219<Note>223<Note>

220 Pemantauan PR memerlukan [GitHub CLI (`gh`)](https://cli.github.com/) untuk diinstal dan diautentikasi di mesin Anda. Jika `gh` tidak diinstal, Desktop akan meminta Anda untuk memasangnya saat pertama kali Anda mencoba membuat PR.224 Pemantauan PR memerlukan [GitHub CLI (`gh`)](https://cli.github.com/) untuk diinstal dan diautentikasi di mesin Anda. Jika `gh` tidak diinstal, Desktop akan meminta Anda untuk memasangnya saat pertama kali Anda mencoba membuat PR.

225 

226 Dalam [sesi SSH](#ssh-sessions), siapkan `git` dan `gh` di mesin jarak jauh sebelum Anda mengklik **Create PR**, karena Claude melakukan push branch dan menjalankan `gh pr create` di sana. Instal `gh` di sana sendiri, karena Desktop tidak meminta Anda melakukannya dalam sesi SSH. Kemudian periksa di sana bahwa `git push` berfungsi dan bahwa `gh auth status` melaporkan bahwa Anda sudah masuk.

221</Note>227</Note>

222 228 

223<h2 id="arrange-your-workspace">229<h2 id="arrange-your-workspace">


453 459 

454Claude Code menerapkan empat perilaku keamanan lintas sesi:460Claude Code menerapkan empat perilaku keamanan lintas sesi:

455 461 

456* Sebelum mengarsipkan sesi apa pun, Claude meminta Anda terlebih dahulu. Anda melihat kartu persetujuan di setiap mode izin, termasuk izin Auto dan Bypass.462* Anda mendapatkan kartu persetujuan sebelum Claude mengarsipkan sesi, kecuali dalam Auto mode dan Bypass permissions mode, di mana Claude dapat mengarsipkan sesi tanpa kartu tersebut. Agar ditanya terlebih dahulu, beralihlah ke Manual.

457* Melalui surface ini, Claude tidak dapat mengirim pesan lintas sesi dari sesi yang tidak ada yang menonton, seperti jalankan tugas terjadwal, dan tidak dapat mengirimkan pesan ke satu.463* Melalui surface ini, Claude tidak dapat mengirim pesan lintas sesi dari sesi yang tidak ada yang menonton, seperti jalankan tugas terjadwal, dan tidak dapat mengirimkan pesan ke satu.

458* Claude Code memeriksa setiap pesan dari surface ini terhadap [kontrol inbound](/docs/id/cross-session-messaging#control-inbound-messages) sesi penerima, bahkan ketika sesi penerima tidak memiliki [cross-session messaging](/docs/id/cross-session-messaging#availability) itu sendiri. Jika Anda mengatur [`crossSessionInbound`](/docs/id/settings-reference#crosssessioninbound) ke `refuse` di sesi penerima, Claude Code menghapus pesan dari surface ini. Claude Code melaporkan penolakan ke aplikasi desktop Claude. Sebelum v2.1.234, Claude Code menghapus setiap pesan dari surface ini ke sesi penerima tanpa cross-session messaging.464* Claude Code memeriksa setiap pesan dari surface ini terhadap [kontrol inbound](/docs/id/cross-session-messaging#control-inbound-messages) sesi penerima, bahkan ketika sesi penerima tidak memiliki [cross-session messaging](/docs/id/cross-session-messaging#availability) itu sendiri. Jika Anda mengatur [`crossSessionInbound`](/docs/id/settings-reference#crosssessioninbound) ke `refuse` di sesi penerima, Claude Code menghapus pesan dari surface ini. Claude Code melaporkan penolakan ke aplikasi desktop Claude. Sebelum v2.1.234, Claude Code menghapus setiap pesan dari surface ini ke sesi penerima tanpa cross-session messaging.

459* Claude Code mengutip setiap pesan masuk dan mengatribusikannya ke sesi yang mengirimnya, dan Claude masih mengikuti pengaturan izin sesi penerima sendiri saat bertindak atas satu.465* Claude Code mengutip setiap pesan masuk dan mengatribusikannya ke sesi yang mengirimnya, dan Claude masih mengikuti pengaturan izin sesi penerima sendiri saat bertindak atas satu.


546 552 

547[Skills](/docs/id/skills) memperluas apa yang dapat dilakukan Claude. Claude memuatnya secara otomatis ketika relevan, atau Anda dapat menginvokan satu secara langsung: ketik `/` di kotak prompt atau klik tombol **+** dan pilih **Slash commands** untuk melihat apa yang tersedia. Ini mencakup [built-in commands](/docs/id/commands), [custom skills](/docs/id/skills#create-your-first-skill) Anda, project skills dari basis kode Anda, dan skills dari [installed plugins](/docs/id/plugins/install) apa pun. Pilih satu dan itu muncul disorot di bidang input. Ketik tugas Anda setelahnya dan kirim seperti biasa.553[Skills](/docs/id/skills) memperluas apa yang dapat dilakukan Claude. Claude memuatnya secara otomatis ketika relevan, atau Anda dapat menginvokan satu secara langsung: ketik `/` di kotak prompt atau klik tombol **+** dan pilih **Slash commands** untuk melihat apa yang tersedia. Ini mencakup [built-in commands](/docs/id/commands), [custom skills](/docs/id/skills#create-your-first-skill) Anda, project skills dari basis kode Anda, dan skills dari [installed plugins](/docs/id/plugins/install) apa pun. Pilih satu dan itu muncul disorot di bidang input. Ketik tugas Anda setelahnya dan kirim seperti biasa.

548 554 

549Anda dapat mengirim perintah saat Claude sedang bekerja, sama seperti pesan lainnya, dan sesi kembali ke idle setelah giliran selesai. Sebelum v2.1.206, perintah yang dikirim di tengah giliran dapat membuat sesi tetap menampilkan sebagai berjalan dan pesan yang Anda kirim setelahnya tidak terkirim.555Anda dapat mengirim perintah saat Claude sedang bekerja, sama seperti pesan lainnya, dan sesi kembali ke idle setelah giliran selesai.

550 556 

551Sesi lokal memuat personal skills Anda dari `~/.claude/skills/`. Sesi [SSH](#ssh-sessions) membaca `~/.claude/skills/` dari direktori home host jarak jauh, bukan dari mesin Anda.557Sesi lokal memuat personal skills Anda dari `~/.claude/skills/`. Sesi [SSH](#ssh-sessions) membaca `~/.claude/skills/` dari direktori home host jarak jauh, bukan dari mesin Anda.

552 558 


693 699 

694* **`true`**: Claude menemukan dan menggunakan port gratis secara otomatis. Cocok untuk sebagian besar dev server.700* **`true`**: Claude menemukan dan menggunakan port gratis secara otomatis. Cocok untuk sebagian besar dev server.

695* **`false`**: Claude gagal dengan kesalahan. Gunakan ini ketika server Anda harus menggunakan port tertentu, seperti untuk callback OAuth atau allowlist CORS.701* **`false`**: Claude gagal dengan kesalahan. Gunakan ini ketika server Anda harus menggunakan port tertentu, seperti untuk callback OAuth atau allowlist CORS.

696* **Not set (default)**: Claude menanyakan apakah server memerlukan port itu, kemudian menyimpan jawaban Anda.702* **Not set (default)**: server Anda mendapatkan port bebas berikutnya, seperti dengan `true`, kecuali dalam satu kasus di bawah. Sebelum Claude Desktop v2.37337.0, Claude menanyakan apakah server memerlukan port yang persis itu, lalu menyimpan jawaban Anda di `launch.json`.

697 703 

698Ketika Claude memilih port yang berbeda, itu melewatkan port yang ditugaskan ke server Anda melalui variabel lingkungan `PORT`.704Jika port pilihan Anda sedang digunakan dan `autoPort` tidak diatur, server Anda tetap berhenti ketika semua kondisi berikut terpenuhi:

705 

706* Anda memulai server melalui skrip `npm`, `yarn`, `pnpm`, atau `bun`.

707* Port pilihan Anda di-hardcode dalam skrip tersebut, atau Claude tidak dapat memeriksa skrip tersebut.

708* Anda tidak meneruskan port di `runtimeArgs`.

709 

710Dalam kasus tersebut, bebaskan port, hapus nilai yang di-hardcode, atau ubah `port` agar cocok dengan skrip. Mengatur `"autoPort": true` sebagai gantinya hanya berfungsi untuk skrip yang membaca `PORT`.

711 

712Buat server Anda membaca port-nya dari environment variable `PORT`, yang membawa port yang ditetapkan. Ketika Claude memindahkan server Anda ke port yang berbeda, Claude juga menulis ulang nilai `--port` atau `-p` di `runtimeArgs` agar sesuai.

699 713 

700<h4 id="examples">714<h4 id="examples">

701 Examples715 Examples


785 Local sessions799 Local sessions

786</h3>800</h3>

787 801 

788Aplikasi desktop tidak selalu mewarisi lingkungan shell lengkap Anda. Di macOS, ketika Anda meluncurkan aplikasi dari Dock atau Finder, itu membaca profil shell Anda, seperti `~/.zshrc` atau `~/.bashrc`, untuk mengekstrak `PATH` dan set tetap variabel Claude Code, tetapi variabel lain yang Anda ekspor di sana tidak diambil. Di Windows, aplikasi mewarisi variabel lingkungan pengguna dan sistem tetapi tidak membaca profil PowerShell.802Aplikasi desktop tidak selalu mewarisi lingkungan shell lengkap Anda. Di macOS, ketika Anda meluncurkan aplikasi dari Dock atau Finder, itu membaca profil shell Anda, seperti `~/.zshrc` atau `~/.bashrc`, untuk memberikan `PATH` dan set tetap variabel Claude Code kepada Claude Code, tetapi variabel lain yang Anda ekspor di sana tidak diambil. Di Windows, aplikasi mewarisi variabel lingkungan pengguna dan sistem tetapi tidak membaca profil PowerShell.

789 803 

790Untuk mengatur variabel lingkungan untuk sesi lokal dan dev server di platform apa pun, buka dropdown lingkungan di kotak prompt, arahkan ke **Local**, dan klik ikon gear untuk membuka editor lingkungan lokal. Variabel yang Anda simpan di sini disimpan terenkripsi di mesin Anda dan berlaku untuk setiap sesi lokal dan server pratinjau yang Anda mulai. Anda juga dapat menambahkan variabel ke kunci `env` di file `~/.claude/settings.json` Anda, meskipun ini hanya mencapai sesi Claude dan bukan dev server. Lihat [environment variables](/docs/id/env-vars) untuk daftar lengkap variabel yang didukung.804Untuk mengatur variabel lingkungan untuk sesi lokal dan dev server di platform apa pun, buka dropdown lingkungan di kotak prompt, arahkan ke **Local**, dan klik ikon gear untuk membuka editor lingkungan lokal. Variabel yang Anda simpan di sini disimpan terenkripsi di mesin Anda dan berlaku untuk setiap sesi lokal dan server pratinjau yang Anda mulai. Anda juga dapat menambahkan variabel ke kunci `env` di file `~/.claude/settings.json` Anda, meskipun ini hanya mencapai sesi Claude dan bukan dev server. Lihat [environment variables](/docs/id/env-vars) untuk daftar lengkap variabel yang didukung.

791 805 


813Lihat [Configure cloud environments](/docs/id/cloud-environments) untuk detail tentang mengonfigurasi akses jaringan dan variabel lingkungan.827Lihat [Configure cloud environments](/docs/id/cloud-environments) untuk detail tentang mengonfigurasi akses jaringan dan variabel lingkungan.

814 828 

815<h3 id="ssh-sessions">829<h3 id="ssh-sessions">

816 SSH sessions830 Sesi SSH

817</h3>831</h3>

818 832 

819Sesi SSH memungkinkan Anda menjalankan Claude Code di mesin jarak jauh sambil menggunakan aplikasi desktop sebagai antarmuka Anda. Ini berguna untuk bekerja dengan basis kode yang tinggal di cloud VM, dev container, atau server dengan perangkat keras atau dependensi tertentu.833Sesi SSH memungkinkan Anda menjalankan Claude Code di mesin jarak jauh sambil menggunakan aplikasi desktop sebagai antarmuka Anda. Ini berguna untuk bekerja dengan basis kode yang tinggal di cloud VM, dev container, atau server dengan perangkat keras atau dependensi tertentu.


840 854 

841Mesin jarak jauh Linux atau macOS memerlukan prosesor yang didukung, server SSH dengan SFTP, folder instalasi yang tidak di-mount dengan `noexec`, shell yang berfungsi, dan akses jaringan. Periksa setiap persyaratan sebelum Anda terhubung, atau ketika koneksi gagal setelah Anda masuk:855Mesin jarak jauh Linux atau macOS memerlukan prosesor yang didukung, server SSH dengan SFTP, folder instalasi yang tidak di-mount dengan `noexec`, shell yang berfungsi, dan akses jaringan. Periksa setiap persyaratan sebelum Anda terhubung, atau ketika koneksi gagal setelah Anda masuk:

842 856 

843* **Sistem**: prosesor x86\_64 atau arm64. Mesin juga harus memenuhi [persyaratan sistem](/docs/id/setup#system-requirements) Claude Code.857* **Sistem**: prosesor x86\_64 atau arm64. Mesin juga harus memenuhi [persyaratan sistem](/docs/id/setup#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](/docs/id/setup#alpine-linux-and-musl-based-distributions).

844* **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>`.858* **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>`.

845* **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.859* **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.

846* **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.860* **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).

847* **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`861* **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`

848* **Jaringan**: Claude Code berjalan di mesin jarak jauh dan membuat permintaan jaringannya dari sana, sehingga mesin tersebut memerlukan [akses jaringan yang dibutuhkan Claude Code](/docs/id/network-config#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.862* **Jaringan**: Claude Code berjalan di mesin jarak jauh dan membuat permintaan jaringannya dari sana, sehingga mesin tersebut memerlukan [akses jaringan yang dibutuhkan Claude Code](/docs/id/network-config#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.

849 863 


878 892 

879Masukkan `devbox` di bidang **SSH host**.893Masukkan `devbox` di bidang **SSH host**.

880 894 

895<h5 id="use-variables-from-your-shell-in-a-proxycommand">

896 Menggunakan variabel dari shell Anda dalam `ProxyCommand`

897</h5>

898 

899Untuk 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.

900 

901Hal 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.

902 

881<h5 id="raise-the-ssh-connection-timeout">903<h5 id="raise-the-ssh-connection-timeout">

882 Menaikkan timeout koneksi SSH904 Menaikkan timeout koneksi SSH

883</h5>905</h5>


894 916 

895`ssh` menggunakan nilai pertama yang ditemukannya untuk sebuah host, jadi letakkan entri tersebut di atas entri `Host *` mana pun yang mengatur `ConnectTimeout`. Untuk memastikannya, jalankan `ssh -G devbox` di terminal pada komputer Anda. Output-nya mencakup `connecttimeout 120`. Setelah Anda mengubah nilainya, keluar dari Desktop dan buka kembali.917`ssh` menggunakan nilai pertama yang ditemukannya untuk sebuah host, jadi letakkan entri tersebut di atas entri `Host *` mana pun yang mengatur `ConnectTimeout`. Untuk memastikannya, jalankan `ssh -G devbox` di terminal pada komputer Anda. Output-nya mencakup `connecttimeout 120`. Setelah Anda mengubah nilainya, keluar dari Desktop dan buka kembali.

896 918 

919<h5 id="forwarding-settings-that-desktop-leaves-off">

920 Pengaturan forwarding yang dibiarkan mati oleh Desktop

921</h5>

922 

923Pada koneksinya ke mesin jarak jauh, Desktop membiarkan `ForwardAgent`, `ForwardX11`, `LocalForward`, `RemoteForward`, `DynamicForward`, dan `Tunnel` dalam keadaan mati, bahkan jika konfigurasi SSH Anda mengaktifkannya. Di [terminal](#run-commands-in-the-terminal) atau perintah `!`, perkirakan bahwa pengaturan forwarding Anda [hanya terkadang berlaku](#limits-while-desktop-is-disconnected), karena Desktop dapat memulai `ssh` terpisah di sana yang mengikuti pengaturan tersebut.

924 

925* **Untuk menjangkau port di mesin jarak jauh**: [teruskan port tersebut sendiri](#reach-a-port-on-the-remote-machine)

926* **Untuk menggunakan kunci Anda sendiri dari mesin jarak jauh**: siapkan kredensial di mesin jarak jauh itu sendiri, misalnya untuk `git push`

927 

928Agar Desktop tidak meneruskan SSH agent atau port Anda, jalankan `ssh -G devbox` di terminal pada komputer Anda. Lalu jalankan lagi seperti Desktop dapat menjalankannya, dengan nilai `hostname` dan `user` yang dicetaknya, seperti pada `ssh -G -o HostName=devbox.internal.example.com -l alice devbox`. Output kedua dapat menampilkan pengaturan dari blok `Match` yang dilewati oleh output pertama.

929 

930Cari di kedua output baris `forwardagent` yang bernilai selain `no`, dan baris yang diawali dengan `localforward`, `remoteforward`, atau `dynamicforward`. Jika Anda menemukannya, hapus pengaturan tersebut dari konfigurasi SSH Anda. Lakukan hal yang sama untuk host yang dijangkau oleh `ProxyCommand` Anda dengan `ssh`.

931 

932<h4 id="reach-a-port-on-the-remote-machine">

933 Menjangkau port di mesin jarak jauh

934</h4>

935 

936Untuk membuka server yang berjalan di mesin jarak jauh, seperti dev server di port 3000, teruskan port tersebut sendiri. Di terminal pada komputer Anda, jalankan `ssh` dengan `-L` dan host yang Anda hubungkan, seperti `devbox`:

937 

938```bash theme={null}

939ssh -N -L 3000:localhost:3000 devbox

940```

941 

942Jika Anda mengisi **SSH port** atau **SSH key (optional)** pada koneksi, tambahkan `-p` atau `-i` dengan nilai yang sama. Biarkan perintah tersebut berjalan, dan buka `http://localhost:3000` di browser pada komputer Anda untuk menjangkau port 3000 di mesin jarak jauh. Jika `ssh` mencetak `open failed: administratively prohibited`, minta administrator mesin tersebut untuk mengizinkan TCP forwarding, yang dikontrol oleh `AllowTcpForwarding` di `sshd_config` server SSH.

943 

897<h4 id="windows-remote-machines">944<h4 id="windows-remote-machines">

898 Mesin jarak jauh Windows945 Mesin jarak jauh Windows

899</h4>946</h4>


925Claude Code berjalan sebagai proses di mesin jarak jauh, di bawah program pembantu latar belakang yang diinstal Desktop di sana, sehingga tidak memerlukan koneksi SSH Anda untuk tetap berjalan. Perilaku di bagian ini memerlukan Claude Desktop v2.31226.0 atau yang lebih baru.972Claude Code berjalan sebagai proses di mesin jarak jauh, di bawah program pembantu latar belakang yang diinstal Desktop di sana, sehingga tidak memerlukan koneksi SSH Anda untuk tetap berjalan. Perilaku di bagian ini memerlukan Claude Desktop v2.31226.0 atau yang lebih baru.

926 973 

927<Warning>974<Warning>

928 Jika Anda masuk ke Desktop dengan akun Claude, jangan mengandalkan tugas untuk berjalan semalaman. Desktop memperbarui proses masuk tersebut untuk tugas hanya selama Desktop berjalan dan terhubung, sehingga masa berlaku proses masuk tugas dapat habis setelah Anda terputus, lalu tugas berhenti. Sisa waktu saat Anda terputus bervariasi.975 Jika Anda masuk ke Desktop dengan akun Claude, jangan mengandalkan tugas untuk berjalan semalaman. Desktop memperbarui proses masuk tersebut untuk tugas hanya selama Desktop berjalan dan terhubung, sehingga masa berlaku proses masuk tugas dapat habis setelah Anda terputus, lalu tugas berhenti. Sisa waktu saat Anda terputus bervariasi, dan bisa hanya beberapa menit.

929 976 

930 Pekerjaan yang telah dilakukan sejauh ini tetap berada di mesin jarak jauh, dan Anda dapat melanjutkannya dengan mengirim pesan saat Anda kembali.977 Pekerjaan yang telah dilakukan sejauh ini tetap berada di mesin jarak jauh, dan Anda dapat melanjutkannya dengan mengirim pesan saat Anda kembali.

931 978 


1076 1123 

1077Bidang ini memerlukan Claude Desktop v1.44121.0 atau yang lebih baru. Jika organisasi Anda membatasi folder mana yang boleh digunakan sesi, Desktop menyembunyikan bidang ini dan menyimpan worktree di dalam proyek.1124Bidang ini memerlukan Claude Desktop v1.44121.0 atau yang lebih baru. Jika organisasi Anda membatasi folder mana yang boleh digunakan sesi, Desktop menyembunyikan bidang ini dan menyimpan worktree di dalam proyek.

1078 1125 

1126<h4 id="files-and-processes-on-the-remote-machine">

1127 File dan proses di mesin jarak jauh

1128</h4>

1129 

1130Desktop menginstal program pembantu dan Claude Code di bawah `~/.claude/remote/` di direktori home setiap pengguna yang terhubung ke mesin jarak jauh Linux atau macOS. Program pembantu tidak mendengarkan pada port jaringan apa pun, tetapi Claude Code dan program yang dimulainya, seperti server MCP dan server pengembangan, dapat melakukannya.

1131 

1132| Folder | Isi |

1133| - | - |

1134| `~/.claude/remote/srv/` | Program pembantu, dalam satu folder per versi |

1135| `~/.claude/remote/ccd-cli/` | Claude Code, dalam satu file per versi |

1136| `~/.claude/remote/run/` | File runtime program pembantu, seperti socket dan log-nya, dalam satu folder per komputer yang terhubung |

1137| `~/.claude/remote/plugins/` | Plugin yang disalin Desktop dari komputer pengguna |

1138| [`~/.claude/uploads/`](/docs/id/claude-directory#clear-local-data) | File yang dilampirkan pengguna ke pesan, dalam satu folder per sesi |

1139 

1140Untuk mencantumkan proses milik satu pengguna, jalankan `pgrep -fl "$HOME/.claude/remote/"` di mesin jarak jauh sebagai pengguna tersebut, atau dengan direktori home pengguna tersebut sebagai pengganti `$HOME`:

1141 

1142* **Program pembantu**: satu atau beberapa proses `server` untuk setiap komputer yang terhubung

1143* **Claude Code**: proses yang dimulai program pembantu untuk sesi pengguna, masing-masing dari file yang dinamai sesuai versinya, seperti `2.1.295-…`

1144 

1145Desktop menjangkau program pembantu melalui koneksi SSH pengguna, melalui Unix socket `rpc.sock` di folder program pembantu di bawah `~/.claude/remote/run/`. Selain root, pengguna lain di mesin tersebut tidak dapat terhubung ke socket itu, karena socket tersebut memiliki mode 600 dan foldernya memiliki mode 700.

1146 

1147Untuk mengetahui kapan program pembantu berhenti dengan sendirinya, lihat [Batasan saat Desktop terputus](#limits-while-desktop-is-disconnected).

1148 

1149Untuk menghapus program pembantu dan Claude Code bagi satu pengguna:

1150 

1151<Steps>

1152 <Step title="Keluar dari Desktop">

1153 Keluar dari Desktop di setiap komputer tempat pengguna tersebut terhubung. Desktop menginstal kedua program tersebut lagi saat berikutnya terhubung, dan dapat terhubung kembali dengan sendirinya.

1154 </Step>

1155 

1156 <Step title="Akhiri proses">

1157 Dengan masuk sebagai pengguna tersebut di mesin jarak jauh, jalankan `kill` dengan setiap ID proses yang dicantumkan oleh [`pgrep`](#files-and-processes-on-the-remote-machine).

1158 </Step>

1159 

1160 <Step title="Hapus folder">

1161 Hapus `~/.claude/remote/`. Untuk menghapus file milik Claude Code sendiri di `~/.claude/` dan `~/.claude.json`, lihat [Menghapus file konfigurasi](/docs/id/setup#remove-configuration-files).

1162 </Step>

1163</Steps>

1164 

1165<h5 id="end-one-session’s-process">

1166 Mengakhiri proses satu sesi

1167</h5>

1168 

1169Untuk mengakhiri proses Claude Code milik satu sesi, [arsipkan sesi tersebut](#work-in-parallel-with-sessions) di Desktop selama Desktop terhubung ke mesin jarak jauh. Proses tetap berjalan setelah tugasnya selesai dan setelah Anda keluar dari Desktop.

1170 

1171Sebelum Anda mengarsipkan sesi yang memiliki worktree, lihat [Bekerja secara paralel dengan sesi](#work-in-parallel-with-sessions).

1172 

1173<h5 id="see-who-connected-to-the-remote-machine">

1174 Melihat siapa yang terhubung ke mesin jarak jauh

1175</h5>

1176 

1177Untuk 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.

1178 

1179<h4 id="use-mcp-servers-set-up-on-the-remote-machine">

1180 Menggunakan server MCP yang disiapkan di mesin jarak jauh

1181</h4>

1182 

1183Untuk menggunakan [server MCP](/docs/id/mcp) dari `~/.claude.json` atau `.mcp.json` sebuah proyek dalam sesi SSH, siapkan server tersebut di file-file itu pada mesin jarak jauh. Claude Code memulai server stdio-nya di sana, jadi instal perintah yang dijalankan server tersebut di mesin jarak jauh. Untuk server dari `claude_desktop_config.json`, lihat [Batasan saat Desktop terputus](#limits-while-desktop-is-disconnected).

1184 

1079<h4 id="open-an-ssh-session-from-a-link">1185<h4 id="open-an-ssh-session-from-a-link">

1080 Membuka sesi SSH dari tautan1186 Membuka sesi SSH dari tautan

1081</h4>1187</h4>


1207* **Cowork**: tidak ada satu pun kunci yang berlaku untuk sesi [Cowork](https://claude.com/docs/cowork/overview) atau tugas terjadwal Cowork1313* **Cowork**: tidak ada satu pun kunci yang berlaku untuk sesi [Cowork](https://claude.com/docs/cowork/overview) atau tugas terjadwal Cowork

1208* **Sesi cloud**: tidak ada satu pun kunci yang mengubah ketersediaan [sesi cloud](#cloud-sessions). Untuk mematikannya, gunakan pengaturan **Cloud sessions** di bawah [Admin console controls](#admin-console-controls).1314* **Sesi cloud**: tidak ada satu pun kunci yang mengubah ketersediaan [sesi cloud](#cloud-sessions). Untuk mematikannya, gunakan pengaturan **Cloud sessions** di bawah [Admin console controls](#admin-console-controls).

1209 1315 

1210Saat Anda menyesuaikan contoh tersebut, periksa hostname dan versi Desktop:1316Saat Anda menyesuaikan contoh tersebut, periksa hostname, versi Desktop, dan hak akses file:

1211 1317 

1212* **Hostname**: pastikan bahwa sebuah pola di `sshHostAllowlist` cocok dengan hostname setiap entri `sshConfigs`, tanpa `user@`, atau developer tidak dapat terhubung ke host tersebut. Untuk cara Desktop mencocokkan hostname, lihat [Restrict which SSH hosts users can connect to](#restrict-which-ssh-hosts-users-can-connect-to).1318* **Hostname**: pastikan bahwa sebuah pola di `sshHostAllowlist` cocok dengan hostname setiap entri `sshConfigs`, tanpa `user@`, atau developer tidak dapat terhubung ke host tersebut. Untuk cara Desktop mencocokkan hostname, lihat [Restrict which SSH hosts users can connect to](#restrict-which-ssh-hosts-users-can-connect-to).

1213* **Versi**: `disableDesktopLocalSessions` memerlukan Claude Desktop v1.37937.0 atau yang lebih baru1319* **Versi**: `disableDesktopLocalSessions` memerlukan Claude Desktop v1.37937.0 atau yang lebih baru

1320* **Hak akses file**: pastikan bahwa akun setiap developer di komputer dapat membaca file pengaturan terkelola. Desktop tidak menerapkan kunci dalam file yang tidak dapat dibaca oleh akun tersebut, dan Claude Code juga [dimulai tanpa kunci-kunci tersebut](/docs/id/managed-settings#find-entries-claude-code-dropped).

1214 1321 

1215Letakkan ketiga kunci tersebut dalam satu [sumber terkelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources), yaitu sumber berperingkat tertinggi yang Anda kirimkan. Jika Anda mengirimkan [pengaturan yang dikelola server](/docs/id/server-managed-settings), simpan juga salinan ketiga kunci tersebut dalam kebijakan MDM atau file pengaturan terkelola berperingkat tertinggi di setiap komputer. Desktop mengambil pengaturan yang dikelola server saat diluncurkan, dan salinan di komputer berlaku sampai pengambilan berhasil.1322Letakkan ketiga kunci tersebut dalam satu [sumber terkelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources), yaitu sumber berperingkat tertinggi yang Anda kirimkan. Jika Anda mengirimkan [pengaturan yang dikelola server](/docs/id/server-managed-settings), simpan juga salinan ketiga kunci tersebut dalam kebijakan MDM atau file pengaturan terkelola berperingkat tertinggi di setiap komputer. Desktop mengambil pengaturan yang dikelola server saat diluncurkan, dan salinan di komputer berlaku sampai pengambilan berhasil.

1216 1323 


1558 1665 

1559Jika toggle MCP server tidak merespons atau server gagal terhubung di Windows, periksa bahwa server dikonfigurasi dengan benar di pengaturan Anda, mulai ulang aplikasi, verifikasi proses server berjalan di Task Manager, dan tinjau log server untuk kesalahan koneksi.1666Jika toggle MCP server tidak merespons atau server gagal terhubung di Windows, periksa bahwa server dikonfigurasi dengan benar di pengaturan Anda, mulai ulang aplikasi, verifikasi proses server berjalan di Task Manager, dan tinjau log server untuk kesalahan koneksi.

1560 1667 

1668<h3 id="ssh-connection-fails-after-you-log-in">

1669 SSH connection fails after you log in

1670</h3>

1671 

1672Temukan judul kartu, atau kode yang mengakhiri pesan kesalahan, di tabel ini, lalu lakukan apa yang disebutkan di kolom terakhir. Untuk melihat pesannya, pilih **View details** pada kartu kegagalan.

1673 

1674| Judul pada kartu | Kode | Yang harus dilakukan |

1675| - | - | - |

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

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

1678| `<host> allows too few SSH sessions per connection` | `[SESSION_LIMIT]` | Naikkan `MaxSessions` di `sshd_config` server, misalnya ke nilai default OpenSSH yaitu 10 |

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

1680| `This computer is out of disk space` | `[ENOSPC]` atau `[EDQUOT]`, dalam pesan yang diawali dengan `Couldn't prepare the deploy locally` | Kosongkan ruang di komputer Anda |

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

1682 

1683Untuk pesan lainnya, periksa [remote machine requirements](#remote-machine-requirements-for-ssh-sessions).

1684 

1561<h3 id="app-won’t-quit">1685<h3 id="app-won’t-quit">

1562 App won't quit1686 App won't quit

1563</h3>1687</h3>

env-vars.md +10 −4

Details

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

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

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

271| `CLAUDE_CODE_DISABLE_FILE_MENTIONS` | Tetapkan ke `1` untuk menghentikan Claude Code memperluas [penyebutan `@`](/docs/id/common-workflows#reference-files-and-directories) file dan direktori. Sebagai gantinya, Claude mendapatkan path yang disebutkan beserta catatan untuk membacanya menggunakan tool file-nya. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Memerlukan Claude Code v2.1.299 atau yang lebih baru |

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

272| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | Tetapkan ke `1` untuk menghentikan Claude Code membaca skrip yang diteruskan ke shell dengan `-c`, seperti `bash -c 'rm -rf ~'`, untuk penghapusan [path kritis](/docs/id/permission-modes#removals-inside-nested-commands-and-inline-scripts). Claude Code tetap memeriksa target variabel shell dan parameter posisional dalam skrip tersebut, dan pemeriksaan path kritis lainnya tetap berjalan. Tetapkan di lingkungan yang menjalankan Claude Code, karena Claude Code mengabaikan salinan yang dikirimkan melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.288 atau lebih baru |273| `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT` | Tetapkan ke `1` untuk menghentikan Claude Code membaca skrip yang diteruskan ke shell dengan `-c`, seperti `bash -c 'rm -rf ~'`, untuk penghapusan [path kritis](/docs/id/permission-modes#removals-inside-nested-commands-and-inline-scripts). Claude Code tetap memeriksa target variabel shell dan parameter posisional dalam skrip tersebut, dan pemeriksaan path kritis lainnya tetap berjalan. Tetapkan di lingkungan yang menjalankan Claude Code, karena Claude Code mengabaikan salinan yang dikirimkan melalui blok `env` pengaturan. Memerlukan Claude Code v2.1.288 atau lebih baru |

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


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

329| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Setel ke `1` untuk melewati instalasi otomatis ekstensi IDE. Setara dengan menyetel [`autoInstallIdeExtension`](/docs/id/settings-reference#autoinstallideextension) ke `false` |330| `CLAUDE_CODE_IDE_SKIP_AUTO_INSTALL` | Setel ke `1` untuk melewati instalasi otomatis ekstensi IDE. Setara dengan menyetel [`autoInstallIdeExtension`](/docs/id/settings-reference#autoinstallideextension) ke `false` |

330| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Setel ke `1` untuk melewati validasi entri lockfile IDE selama koneksi. Gunakan saat koneksi otomatis gagal menemukan IDE Anda meskipun IDE sedang berjalan |331| `CLAUDE_CODE_IDE_SKIP_VALID_CHECK` | Setel ke `1` untuk melewati validasi entri lockfile IDE selama koneksi. Gunakan saat koneksi otomatis gagal menemukan IDE Anda meskipun IDE sedang berjalan |

332| `CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS` | Ukuran konteks, dalam token, saat [idle compaction](/docs/id/settings-reference#idlecompaction) berlaku untuk sebuah percakapan (default: `200000`). Menerima bilangan bulat positif, dan nilai lain diabaikan. Nilai di bawah `100000` dinaikkan menjadi `100000`, ambang terendah. Idle compaction aktif secara default untuk percakapan yang memenuhi kondisinya. Untuk menonaktifkannya, atur `idleCompaction` ke `false`. Memerlukan Claude Code v2.1.290 atau yang lebih baru |

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

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

333| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Panjang maksimum dalam karakter dari setiap deskripsi tool MCP dan instruksi setiap server MCP yang dikirim Claude Code ke model (default: 2048). Claude Code [memotong teks yang lebih panjang](/docs/id/mcp#for-mcp-server-authors). Menerima bilangan bulat positif dalam digit biasa. Nilai lain diabaikan dan default berlaku. Memerlukan Claude Code v2.1.280 atau lebih baru |335| `CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH` | Panjang maksimum dalam karakter untuk setiap deskripsi tool MCP dan instruksi setiap server MCP yang dikirim Claude Code ke model. Nilai yang Anda atur menggantikan kedua [batas default](/docs/id/mcp#for-mcp-server-authors): 4096, dan 16384 untuk deskripsi tool yang dimuat Claude melalui tool search. Claude Code memotong teks yang lebih panjang. Menerima bilangan bulat positif dalam digit biasa. Nilai lain apa pun diabaikan dan default berlaku. Memerlukan Claude Code v2.1.280 atau lebih baru |

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

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

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


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

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

361| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | Penundaan awal dalam milidetik, menggantikan default 500, dari exponential backoff di antara [retry otomatis](/docs/id/errors#tune-retry-behavior) permintaan yang ditolak API dengan error overloaded `529`. Naikkan untuk menyebarkan retry dalam jendela yang lebih panjang saat API mencapai kapasitas. Berikan milidetik utuh dari 500 hingga 32000 dalam digit biasa; Claude Code memperlakukan nilai lain sebagai tidak disetel. Tidak berpengaruh saat `CLAUDE_CODE_RETRY_WATCHDOG` disetel ke `1`, atau saat permintaan yang ditolak dikirim dalam [fast mode](/docs/id/fast-mode#handle-rate-limits). Memerlukan Claude Code v2.1.292 atau lebih baru |363| `CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS` | Penundaan awal dalam milidetik, menggantikan default 500, dari exponential backoff di antara [retry otomatis](/docs/id/errors#tune-retry-behavior) permintaan yang ditolak API dengan error overloaded `529`. Naikkan untuk menyebarkan retry dalam jendela yang lebih panjang saat API mencapai kapasitas. Berikan milidetik utuh dari 500 hingga 32000 dalam digit biasa; Claude Code memperlakukan nilai lain sebagai tidak disetel. Tidak berpengaruh saat `CLAUDE_CODE_RETRY_WATCHDOG` disetel ke `1`, atau saat permintaan yang ditolak dikirim dalam [fast mode](/docs/id/fast-mode#handle-rate-limits). Memerlukan Claude Code v2.1.292 atau lebih baru |

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

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

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

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


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

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

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

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

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

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

386| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Waktu maksimum dalam milidetik yang dihabiskan setiap permintaan API untuk menunggu error `429` dan `529` saat `CLAUDE_CODE_RETRY_WATCHDOG` disetel. Setelah waktu tersebut habis, error serupa berikutnya mengakhiri permintaan. Berikan bilangan bulat positif dalam digit biasa, seperti `1800000` untuk 30 menit. Saat tidak disetel, penantian tidak memiliki batas. Memerlukan Claude Code v2.1.295 atau lebih baru |389| `CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS` | Waktu maksimum dalam milidetik yang dihabiskan setiap permintaan API untuk menunggu error `429` dan `529` saat `CLAUDE_CODE_RETRY_WATCHDOG` disetel. Setelah waktu tersebut habis, error serupa berikutnya mengakhiri permintaan. Berikan bilangan bulat positif dalam digit biasa, seperti `1800000` untuk 30 menit. Saat tidak disetel, penantian tidak memiliki batas. Memerlukan Claude Code v2.1.295 atau lebih baru |


437| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | Saat `CLAUDE_AUTO_BACKGROUND_TASKS` diatur ke `1`, berapa lama Claude Code menunggu sebelum setiap pengingat kepada Claude untuk memeriksa [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang masih berjalan. Menerima satu atau beberapa durasi tunggu yang dipisahkan koma dalam detik bulat dari `1` hingga `86400`, seperti `600` atau `600,1800,3600`. Setiap nilai adalah durasi tunggu sebelum pengingat berikutnya, dan nilai terakhir diulang. Hanya menerima digit biasa; nilai atau penulisan lainnya dibaca sebagai tidak diatur. Jika tidak diatur, tidak ada pengingat. Memerlukan Claude Code v2.1.283 atau yang lebih baru |440| `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` | Saat `CLAUDE_AUTO_BACKGROUND_TASKS` diatur ke `1`, berapa lama Claude Code menunggu sebelum setiap pengingat kepada Claude untuk memeriksa [subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang masih berjalan. Menerima satu atau beberapa durasi tunggu yang dipisahkan koma dalam detik bulat dari `1` hingga `86400`, seperti `600` atau `600,1800,3600`. Setiap nilai adalah durasi tunggu sebelum pengingat berikutnya, dan nilai terakhir diulang. Hanya menerima digit biasa; nilai atau penulisan lainnya dibaca sebagai tidak diatur. Jika tidak diatur, tidak ada pengingat. Memerlukan Claude Code v2.1.283 atau yang lebih baru |

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

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

443| `CLAUDE_CODE_YOU_SHOULD_KNOW_DEBUG` | Atur ke `1` untuk menampilkan, di atas prompt, satu baris untuk masing-masing dari tiga pemeriksaan terakhir yang dilakukan [mod You should know](/docs/id/interactive-mode#you-should-know-suggestions) dalam sesi ini. Gunakan untuk memastikan mod sedang melakukan pemeriksaan saat tidak ada catatan yang muncul. Memerlukan Claude Code v2.1.287 atau yang lebih baru |

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

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

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


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

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

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

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

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

457| `DISABLE_COST_WARNINGS` | Atur ke `1` untuk menonaktifkan pesan peringatan biaya |461| `DISABLE_COST_WARNINGS` | Atur ke `1` untuk menonaktifkan pesan peringatan biaya |

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


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

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

480| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |484| `ENABLE_PROMPT_CACHING_1H_BEDROCK` | Deprecated. Gunakan `ENABLE_PROMPT_CACHING_1H` sebagai gantinya |

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

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

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

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


593* Menjalankan [`claude import` atau perintah `/import`](/docs/id/cli-reference#cli-commands)597* Menjalankan [`claude import` atau perintah `/import`](/docs/id/cli-reference#cli-commands)

594* Menjalankan [`/skill-doctor`](/docs/id/skills#find-unused-skills) atau membuka laporannya di tab **Stats** `/plugin`598* Menjalankan [`/skill-doctor`](/docs/id/skills#find-unused-skills) atau membuka laporannya di tab **Stats** `/plugin`

595* Menyinkronkan [skills](/docs/id/skills#where-synced-skills-load) dan [plugin](/docs/id/plugins/loading#synced-plugins) yang diaktifkan untuk akun claude.ai Anda ke sesi terminal Anda599* Menyinkronkan [skills](/docs/id/skills#where-synced-skills-load) dan [plugin](/docs/id/plugins/loading#synced-plugins) yang diaktifkan untuk akun claude.ai Anda ke sesi terminal Anda

600* Mengaktifkan [mod You should know](/docs/id/interactive-mode#you-should-know-suggestions)

596* Menggunakan [tool advisor](/docs/id/advisor#requirements)601* Menggunakan [tool advisor](/docs/id/advisor#requirements)

597* Membaca atau membalas [komentar pada artifact](/docs/id/artifacts#collect-comments-on-an-artifact)602* Membaca atau membalas [komentar pada artifact](/docs/id/artifacts#collect-comments-on-an-artifact)

598* Meminta Claude membaca [artifact publik milik organisasi lain](/docs/id/artifacts#read-an-artifact-shared-with-you)603* Meminta Claude membaca [artifact publik milik organisasi lain](/docs/id/artifacts#read-an-artifact-shared-with-you)


600* Mendapatkan [umpan balik yang disusun Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), yang diaktifkan Claude Code melalui flag yang diambil605* Mendapatkan [umpan balik yang disusun Claude](/docs/id/tools-reference#sendfeedback-tool-behavior), yang diaktifkan Claude Code melalui flag yang diambil

601* Meminta Claude [memperlakukan tempelan besar sebagai teks yang ditempel, bukan diketik](/docs/id/terminal-config#how-claude-treats-pasted-text); konten di balik placeholder `[Pasted text #N]` sampai ke Claude tanpa penanda606* Meminta Claude [memperlakukan tempelan besar sebagai teks yang ditempel, bukan diketik](/docs/id/terminal-config#how-claude-treats-pasted-text); konten di balik placeholder `[Pasted text #N]` sampai ke Claude tanpa penanda

602* Meminta Claude Code [mengecualikan tool MCP yang skema inputnya akan ditolak oleh API](/docs/id/mcp#tools-with-invalid-input-schemas); Claude Code tetap mengirimkan skema tersebut, dan permintaan yang menyertakannya gagal dengan [error 400 yang menyebut tool berdasarkan posisinya](/docs/id/errors#tool-input-schema-is-invalid)607* Meminta Claude Code [mengecualikan tool MCP yang skema inputnya akan ditolak oleh API](/docs/id/mcp#tools-with-invalid-input-schemas); Claude Code tetap mengirimkan skema tersebut, dan permintaan yang menyertakannya gagal dengan [error 400 yang menyebut tool berdasarkan posisinya](/docs/id/errors#tool-input-schema-is-invalid)

608* Meminta Claude Code [memadatkan percakapan panjang saat sesi terminal Anda sedang idle](/docs/id/settings-reference#idlecompaction), sesaat sebelum cache prompt satu jam kedaluwarsa

603 609 

604<h3 id="first-session-after-an-install-or-upgrade">610<h3 id="first-session-after-an-install-or-upgrade">

605 Sesi pertama setelah instalasi atau upgrade611 Sesi pertama setelah instalasi atau upgrade

errors.md +162 −11

Details

134| `proxy refused the connection` | [Network](#the-proxy-refused-the-connection) |134| `proxy refused the connection` | [Network](#the-proxy-refused-the-connection) |

135| `403` dengan `GitHub GraphQL is not available from Claude Code sessions` dalam sesi cloud | [GitHub proxy](/docs/id/cloud-environments#github-proxy) |135| `403` dengan `GitHub GraphQL is not available from Claude Code sessions` dalam sesi cloud | [GitHub proxy](/docs/id/cloud-environments#github-proxy) |

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

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

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

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

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


153| `Request too large for the API's 32MB request limit` | [Request errors](#request-too-large) |154| `Request too large for the API's 32MB request limit` | [Request errors](#request-too-large) |

154| `Image was too large` | [Request errors](#image-was-too-large) |155| `Image was too large` | [Request errors](#image-was-too-large) |

155| `Unable to resize image` | [Request errors](#unable-to-resize-image) |156| `Unable to resize image` | [Request errors](#unable-to-resize-image) |

157| `Request rejected as unprocessable by the model` | [Request errors](#request-rejected-as-unprocessable-by-the-model) |

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

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

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

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

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

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

160| `There's an issue with the selected model` | [Request errors](#theres-an-issue-with-the-selected-model) |164| `There's an issue with the selected model` | [Request errors](#theres-an-issue-with-the-selected-model) |

161| `Model ... is not a recognized model id` | [Request errors](#model-is-not-a-recognized-model-id) |165| `Model ... is not a recognized model id` | [Request errors](#model-is-not-a-recognized-model-id) |


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

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

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

201| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#cloud-sessions-are-disabled-by-your-organizations-policy) |205| `Cloud sessions use your claude.ai login`, di akhir penolakan kebijakan yang menyebutkan kredensial | [Command-line errors](#cloud-sessions-use-your-claude-ai-login) |

206| `Couldn't verify your organization's policy for cloud sessions` | [Command-line errors](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

207| `Cloud sessions aren't available:` diikuti alasan mengapa kebijakan organisasi Anda tidak dapat dimuat | [Command-line errors](#couldnt-verify-your-organizations-policy-for-cloud-sessions) |

202| `Cloud sessions need a claude.ai sign-in` | [Unable to get organization UUID](/docs/id/claude-code-on-the-web#unable-to-get-organization-uuid) |208| `Cloud sessions need a claude.ai sign-in` | [Unable to get organization UUID](/docs/id/claude-code-on-the-web#unable-to-get-organization-uuid) |

209| `Nothing was stashed: "<path>" is now a folder in place of a tracked file or link` / `are now folders in place of tracked files or links` | [Command-line errors](#nothing-was-stashed-because-a-folder-replaced-a-tracked-file) |

203| `Error: --json-schema is not a valid JSON Schema` | [Command-line errors](#the-json-schema-value-is-not-a-valid-json-schema) |210| `Error: --json-schema is not a valid JSON Schema` | [Command-line errors](#the-json-schema-value-is-not-a-valid-json-schema) |

204| `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) |211| `Error: Invalid --agents configuration:` | [Command-line errors](#invalid-agents-configuration) |

205| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Command-line errors](#invalid-agents-configuration) |212| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Command-line errors](#invalid-agents-configuration) |


259| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Command-line errors](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |266| `Output styles are saved to local settings (.claude/settings.local.json), which this session doesn't load` | [Command-line errors](#output-styles-are-saved-to-local-settings-which-this-session-doesnt-load) |

260| `/recap only runs when you ask for it yourself in this session` | [Command-line errors](#recap-only-runs-when-you-ask-for-it-yourself) |267| `/recap only runs when you ask for it yourself in this session` | [Command-line errors](#recap-only-runs-when-you-ask-for-it-yourself) |

261| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Plugin errors](#plugin-eval-is-currently-in-early-access) |268| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Plugin errors](#plugin-eval-is-currently-in-early-access) |

269| `cannot be evaluated where sessions load it` | [Test plugins with evals](/docs/id/plugin-evals#cannot-be-evaluated-where-sessions-load-it) |

262| `Marketplace "<name>" is registered from an untrusted source` | [Plugin errors](#marketplace-is-registered-from-an-untrusted-source) |270| `Marketplace "<name>" is registered from an untrusted source` | [Plugin errors](#marketplace-is-registered-from-an-untrusted-source) |

263| `Claude Code refuses the marketplace name "<name>"` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |271| `Claude Code refuses the marketplace name "<name>"` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |

264| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |272| `Marketplace name impersonates an official Anthropic/Claude marketplace` | [Plugin errors](#claude-code-refuses-the-marketplace-name) |


358| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [Fullscreen rendering](/docs/id/fullscreen#fullscreen-renderer-didnt-finish-starting) |366| `Claude Code's fullscreen renderer didn't finish starting last time on this machine` / `Claude Code's fullscreen renderer has repeatedly failed to start on this machine` | [Fullscreen rendering](/docs/id/fullscreen#fullscreen-renderer-didnt-finish-starting) |

359| `Claude Code exited after an unrecoverable interface error (...)` | [Configuration warnings](#exited-after-an-unrecoverable-interface-error) |367| `Claude Code exited after an unrecoverable interface error (...)` | [Configuration warnings](#exited-after-an-unrecoverable-interface-error) |

360| `Agent descriptions are over the 15.0k-token limit` | [Configuration warnings](#agent-descriptions-are-over-the-15000-token-limit) |368| `Agent descriptions are over the 15.0k-token limit` | [Configuration warnings](#agent-descriptions-are-over-the-15000-token-limit) |

369| `hook needs quotes around a path with a space` | [Configuration warnings](#hook-needs-quotes-around-a-path-with-a-space) |

361| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Configuration warnings](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |370| `Not loaded: rename <path>, then restart — its name uses "<name>", a name reserved for the skills synced from your claude.ai account` | [Configuration warnings](#a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved) |

371| `N skill or command names refused: run with --debug to see which ([names]), rename, then restart` | [Configuration warnings](#skill-or-command-name-refused) |

362| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [Configuration warnings](#workspace-has-not-been-trusted) |372| `Ignoring N permissions.allow entries from ... this workspace has not been trusted` | [Configuration warnings](#workspace-has-not-been-trusted) |

363| `is a network path, which cannot be added as a working directory` | [Configuration warnings](#working-directory-is-a-network-path) |373| `is a network path, which cannot be added as a working directory` | [Configuration warnings](#working-directory-is-a-network-path) |

364| `Remote managed settings failed to load (<cause>)` | [Configuration warnings](#remote-managed-settings-failed-to-load) |374| `Remote managed settings failed to load (<cause>)` | [Configuration warnings](#remote-managed-settings-failed-to-load) |


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

448| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/id/env-vars) | unset | Waktu maksimum dalam milidetik yang dihabiskan setiap permintaan API untuk menunggu kesalahan `429` dan `529` ketika `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan. Ketika tidak ditetapkan, waktu tunggunya tidak terbatas. Memerlukan Claude Code v2.1.295 atau lebih baru. |458| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/id/env-vars) | unset | Waktu maksimum dalam milidetik yang dihabiskan setiap permintaan API untuk menunggu kesalahan `429` dan `529` ketika `CLAUDE_CODE_RETRY_WATCHDOG` ditetapkan. Ketika tidak ditetapkan, waktu tunggunya tidak terbatas. Memerlukan Claude Code v2.1.295 atau lebih baru. |

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

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

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

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

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


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

2046 2057 

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

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

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

2050 2061 

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


2097 2108 

2098Sebelum v2.1.236, Claude Code menampilkan TypeError JavaScript mentah daripada pesan-pesan ini.2109Sebelum v2.1.236, Claude Code menampilkan TypeError JavaScript mentah daripada pesan-pesan ini.

2099 2110 

2111<h3 id="failed-to-fetch-session-from-sessions-api">

2112 Failed to fetch session from Sessions API

2113</h3>

2114 

2115Pesan ini berarti Claude Code menemukan [sesi cloud yang Anda minta untuk ditarik ke terminal Anda](/docs/id/claude-code-on-the-web#from-cloud-to-terminal) tetapi tidak dapat membaca riwayat percakapannya dari server Anthropic, sehingga tidak membukanya:

2116 

2117```text theme={null}

2118Failed to fetch session from Sessions API: Failed to fetch session logs

2119```

2120 

2121Anda melihatnya setelah `claude --teleport`, `/teleport`, atau memilih sesi dalam daftar [`/tasks`](/docs/id/commands). `claude --teleport <session-id>` mencetaknya dan keluar dengan kode 1.

2122 

2123**Yang harus dilakukan:**

2124 

2125* Jalankan teleport yang sama lagi. Jika gagal dengan cara yang sama, [laporkan masalahnya](#report-an-error)

2126 

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

2128 

2100<h3 id="couldnt-reconnect-to-your-remote-control-session">2129<h3 id="couldnt-reconnect-to-your-remote-control-session">

2101 Couldn't reconnect to your Remote Control session2130 Couldn't reconnect to your Remote Control session

2102</h3>2131</h3>


2344* Jika pesan melaporkan batas dimensi atau ukuran, ubah ukuran atau kompres ulang gambar di bawah batas itu sebelum melampirkan.2373* Jika pesan melaporkan batas dimensi atau ukuran, ubah ukuran atau kompres ulang gambar di bawah batas itu sebelum melampirkan.

2345* Jika pesan menyebutkan penyebab, seperti JPEG CMYK, WebP animasi, atau file yang mungkin rusak, simpan ulang gambar dalam format yang pesan sarankan dan lampirkan lagi.2374* Jika pesan menyebutkan penyebab, seperti JPEG CMYK, WebP animasi, atau file yang mungkin rusak, simpan ulang gambar dalam format yang pesan sarankan dan lampirkan lagi.

2346 2375 

2376<h3 id="request-rejected-as-unprocessable-by-the-model">

2377 Request rejected as unprocessable by the model

2378</h3>

2379 

2380API menolak permintaan sebagai permintaan yang tidak dapat diproses oleh model. Pesan tersebut berasal dari API itu sendiri.

2381 

2382```text theme={null}

2383API Error: 400 Request rejected as unprocessable by the model (too many or oversized images, or unsupported parameters)

2384```

2385 

2386Claude Code dapat menghapus gambar dan dokumen tertua dari permintaan yang ditolak lalu mengirimkannya lagi. Sebelum v2.1.290, Claude Code tidak menghapus gambar pada penolakan ini, sehingga sesi panjang yang mengakumulasi ratusan gambar dapat gagal dengan kesalahan ini di setiap giliran.

2387 

2388**Yang harus dilakukan:**

2389 

2390* Jika pesan terus muncul dalam percakapan yang berisi gambar atau dokumen, hapus sendiri gambar atau dokumen tersebut. Tekan Esc dua kali untuk mundur melewati giliran yang menambahkannya, atau jalankan `/clear` untuk memulai dari awal.

2391 

2347<h3 id="pdf-errors">2392<h3 id="pdf-errors">

2348 Kesalahan PDF2393 Kesalahan PDF

2349</h3>2394</h3>


2413* Hapus atau [nonaktifkan](/docs/id/mcp#disable-a-server-without-removing-it) server MCP yang mendeklarasikan skema tidak valid. Kesalahan hanya menyebutkan tool berdasarkan posisi. Pada v2.1.216 atau lebih baru, periksa log setiap server untuk baris yang menyebutkan tool yang skema input-nya akan ditolak. Jika tidak ada log yang menyebutkan satu, nonaktifkan server satu per satu.2458* Hapus atau [nonaktifkan](/docs/id/mcp#disable-a-server-without-removing-it) server MCP yang mendeklarasikan skema tidak valid. Kesalahan hanya menyebutkan tool berdasarkan posisi. Pada v2.1.216 atau lebih baru, periksa log setiap server untuk baris yang menyebutkan tool yang skema input-nya akan ditolak. Jika tidak ada log yang menyebutkan satu, nonaktifkan server satu per satu.

2414* Jika Anda memelihara server, perbaiki `input_schema` tool. Skema harus berupa JSON Schema yang valid, dan nama properti tingkat atas harus panjang 1 hingga 64 karakter dan hanya menggunakan huruf ASCII dan angka, `_`, `.`, dan `-`. Lihat [Tool dengan skema input tidak valid](/docs/id/mcp#tools-with-invalid-input-schemas).2459* Jika Anda memelihara server, perbaiki `input_schema` tool. Skema harus berupa JSON Schema yang valid, dan nama properti tingkat atas harus panjang 1 hingga 64 karakter dan hanya menggunakan huruf ASCII dan angka, `_`, `.`, dan `-`. Lihat [Tool dengan skema input tidak valid](/docs/id/mcp#tools-with-invalid-input-schemas).

2415 2460 

2461<h3 id="mcp-tool-name-over-128-characters">

2462 Nama tool MCP lebih dari 128 karakter

2463</h3>

2464 

2465Server MCP mencantumkan tool yang nama lengkapnya, seperti `mcp__<server>__<tool>`, lebih panjang dari 128 karakter yang diterima API. Claude Code [tidak menyertakan tool tersebut dalam tool yang dikirimnya ke Claude](/docs/id/mcp#tools-with-names-longer-than-128-characters), dan tool lain dari server tersebut tetap berfungsi. Dalam sesi yang Anda mulai dengan `claude --debug` dari shell Anda, Claude Code menulis pesan ini ke log debug di `~/.claude/debug/<session-id>.txt`:

2466 

2467```text theme={null}

2468Tool "mcp__<server>__<tool>" is not sent to Claude: its name has <N> characters and the API accepts at most 128

2469```

2470 

2471**Yang harus dilakukan:**

2472 

2473* Jika Anda memelihara server, perpendek nama tool tersebut.

2474* Jika server ada di [konfigurasi MCP](/docs/id/mcp#mcp-installation-scopes) Anda, beri server tersebut nama yang lebih pendek di sana, seperti `db` sebagai pengganti `analytics-database`. Lalu perbarui apa pun yang merujuk ke server atau tool-nya dengan nama lama, seperti [aturan izin](/docs/id/permissions#mcp) dan [matcher hook](/docs/id/hooks#match-mcp-tools).

2475* Jika [plugin membundel server tersebut](/docs/id/mcp#plugin-provided-mcp-servers), nama lengkap tool juga menyertakan nama plugin. Minta pemelihara plugin untuk memperpendek nama server atau tool.

2476 

2477Sebelum v2.1.292, Claude Code tetap mengirim tool tersebut, dan API menolak setiap permintaan yang menyertakannya dengan `API Error: 400 ... tools.N.custom.name: String should have at most 128 characters`.

2478 

2416<h3 id="tool-use-name-over-200-characters">2479<h3 id="tool-use-name-over-200-characters">

2417 tool\_use.name lebih dari 200 karakter2480 tool\_use.name lebih dari 200 karakter

2418</h3>2481</h3>


3022 3085 

3023Pesan ini muncul ketika Anda [membuat sesi cloud dari terminal](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) dan ketika Anda mengirimkan perintah yang memerlukan sesi cloud, seperti `/teleport`, `/remote-env`, atau `/web-setup`. Sebelum v2.1.268, mengirimkan salah satu perintah tersebut mengembalikan [`Unknown command`](#unknown-command).3086Pesan ini muncul ketika Anda [membuat sesi cloud dari terminal](/docs/id/claude-code-on-the-web#from-terminal-to-cloud) dan ketika Anda mengirimkan perintah yang memerlukan sesi cloud, seperti `/teleport`, `/remote-env`, atau `/web-setup`. Sebelum v2.1.268, mengirimkan salah satu perintah tersebut mengembalikan [`Unknown command`](#unknown-command).

3024 3087 

3025Ini adalah kebijakan organisasi di sisi server, sehingga tidak dapat ditimpa dari pengaturan lokal, environment variable, atau flag CLI.3088Jika pesan justru menyebutkan kredensial yang digunakan sesi ini dan diakhiri dengan `Cloud sessions use your claude.ai login.`, lihat [Cloud sessions use your claude.ai login](#cloud-sessions-use-your-claude-ai-login). Jika Claude Code sama sekali tidak dapat memuat kebijakan organisasi Anda, Anda akan melihat [pesan yang berbeda](#couldnt-verify-your-organizations-policy-for-cloud-sessions) sebagai gantinya.

3026 

3027Jika Claude Code belum memuat kebijakan organisasi Anda atau tidak dapat mengambilnya, perintah tersebut menjawab dengan `Couldn't verify your organization's policy for cloud sessions. Check your network connection, then restart Claude Code and try again.`.

3028 3089 

3029**Yang perlu dilakukan:**3090**Yang perlu dilakukan:**

3030 3091 

3031* Minta [Owner](/docs/id/server-managed-settings#access-control) di organisasi Anda untuk mengaktifkan sesi cloud di pengaturan admin Claude Code di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)3092* Minta [Owner](/docs/id/server-managed-settings#access-control) di organisasi Anda untuk mengaktifkan sesi cloud di pengaturan admin Claude Code di [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code)

3032* Jika pesan menyatakan bahwa kebijakan tidak dapat diverifikasi, periksa koneksi jaringan Anda, lalu mulai ulang Claude Code dan coba lagi3093 

3094<h3 id="cloud-sessions-use-your-claude-ai-login">

3095 Cloud sessions use your claude.ai login

3096</h3>

3097 

3098Ketika [penolakan kebijakan](#cloud-sessions-are-disabled-by-your-organizations-policy) menyebutkan kredensial yang digunakan sesi ini dan diakhiri dengan kalimat ini, Claude Code memeriksa kebijakan sesi cloud dari organisasi yang menerbitkan kredensial tersebut. Organisasi tersebut dapat berbeda dari organisasi tempat login claude.ai Anda berada:

3099 

3100```text theme={null}

3101Cloud sessions are disabled by your organization's policy. This session is using ANTHROPIC_API_KEY, so Claude Code checked the policy for the organization that key belongs to. Cloud sessions use your claude.ai login.

3102```

3103 

3104Kalimat terakhir berarti bahwa sesi cloud berjalan dengan login claude.ai Anda, bukan dengan kredensial tersebut. Bentuk ini muncul ketika Anda memulai, melanjutkan, atau mengirim pesan ke sesi cloud dari shell Anda, seperti dengan `--cloud` atau `--teleport`. Sebelum v2.1.296, Claude Code juga mencetak bentuk yang meminta Anda menghubungi admin organisasi dalam kasus ini.

3105 

3106<h3 id="couldnt-verify-your-organizations-policy-for-cloud-sessions">

3107 Couldn't verify your organization's policy for cloud sessions

3108</h3>

3109 

3110Pesan-pesan ini berarti Claude Code tidak dapat memuat kebijakan organisasi Anda, yang diperiksanya sebelum membuat, melanjutkan, atau mengirim pesan ke [sesi cloud](/docs/id/claude-code-on-the-web). Selama permintaan kebijakan belum selesai, pesannya adalah:

3111 

3112```text theme={null}

3113Couldn't verify your organization's policy for cloud sessions. Check your network connection and try again.

3114```

3115 

3116Di dalam sesi, perintah yang memerlukan sesi cloud, seperti `/teleport` atau `/web-setup`, juga memberikan pesan ini. Hal ini terjadi bahkan ketika shell Anda akan mencetak bentuk `Cloud sessions aren't available:`, dan kalimat keduanya berbunyi `Check your network connection, then restart Claude Code and try again.`

3117 

3118Setelah permintaan kebijakan gagal, pesan menyebutkan apa yang gagal. Hal ini berlaku ketika Anda memulai, melanjutkan, atau mengirim pesan ke sesi cloud dari shell Anda dengan flag seperti `--cloud` atau `--teleport`. Tanpa rute ke API, pesannya berbunyi:

3119 

3120```text theme={null}

3121Cloud sessions aren't available: couldn't reach api.anthropic.com to load your organization's policy. Check your network or proxy.

3122```

3123 

3124Kegagalan lain mengikuti pembuka yang sama dengan penyebabnya masing-masing, seperti proxy yang menolak permintaan dengan HTTP 403, kesalahan server, atau kredensial yang tidak diterima API. Ketika API tidak menerima kredensial yang digunakan sesi ini sebagai pengganti login claude.ai Anda, seperti environment variable `ANTHROPIC_API_KEY`, pesan juga dapat menyebutkannya dan meminta Anda untuk menghapusnya:

3125 

3126```text theme={null}

3127Cloud sessions aren't available: api.anthropic.com didn't accept this session's credentials when Claude Code asked for your organization's policy. Cloud sessions use your claude.ai login. ANTHROPIC_API_KEY is set, so this session is using API-key auth — unset it (or run in a shell without it) to use cloud sessions.

3128```

3129 

3130Sebelum v2.1.296, kegagalan ini juga mencetak pesan `Couldn't verify`.

3131 

3132**Yang harus dilakukan:**

3133 

3134* Untuk pesan `Couldn't verify`, periksa koneksi jaringan Anda dan coba lagi. Di dalam sesi, mulai ulang Claude Code terlebih dahulu

3135* Untuk pesan `Cloud sessions aren't available:`, lakukan apa yang diperlukan oleh penyebabnya, seperti memeriksa proxy Anda atau menghapus kredensial yang disebutkannya, lalu jalankan perintah lagi

3136 

3137<h3 id="nothing-was-stashed-because-a-folder-replaced-a-tracked-file">

3138 Nothing was stashed because a folder replaced a tracked file

3139</h3>

3140 

3141Pesan ini berarti sebuah folder di checkout Anda kini berada di tempat yang sebelumnya ditempati file atau link yang dilacak git. Pesan ini muncul setelah Anda memilih opsi stash saat menarik [sesi cloud](/docs/id/claude-code-on-the-web#from-cloud-to-terminal) ke terminal Anda, misalnya dengan `claude --teleport` atau `/teleport`. Melakukan stash pada kondisi tersebut dapat menghapus file di dalam folder, sehingga Claude Code menolak stash dan membiarkan checkout serta index Anda tidak berubah:

3142 

3143```text wrap theme={null}

3144Error: Nothing was stashed: "f" is now a folder in place of a tracked file or link, and stashing could delete what's in it for good. Commit the change or move the folder somewhere else, then try again.

3145```

3146 

3147**Yang perlu dilakukan:**

3148 

3149* Lakukan commit atas perubahan tersebut atau pindahkan folder ke tempat lain, seperti yang disebutkan pesan, lalu jalankan teleport lagi

3033 3150 

3034<h3 id="the-json-schema-value-is-not-a-valid-json-schema">3151<h3 id="the-json-schema-value-is-not-a-valid-json-schema">

3035 Nilai `--json-schema` bukan JSON Schema yang valid3152 Nilai `--json-schema` bukan JSON Schema yang valid


3427 3544 

3428Claude Code menampilkan kesalahan yang sama untuk skill apa pun yang [menyisipkan konteks dinamis](/docs/id/skills#when-an-injected-command-fails), dan perintah sisipan yang gagal membatalkan pemanggilan skill tersebut. Dua string terkait muncul bahkan sebelum perintah dijalankan:3545Claude Code menampilkan kesalahan yang sama untuk skill apa pun yang [menyisipkan konteks dinamis](/docs/id/skills#when-an-injected-command-fails), dan perintah sisipan yang gagal membatalkan pemanggilan skill tersebut. Dua string terkait muncul bahkan sebelum perintah dijalankan:

3429 3546 

3430* `Shell command permission check failed for pattern "..."`: pemeriksaan izin perintah tidak mengizinkannya. [Pemeriksaan izin pada perintah sisipan](/docs/id/skills#permission-checks-on-injected-commands) membahas hasil mana yang membatalkan di setiap mode izin dan cara menyetujui perintah terlebih dahulu dengan `allowed-tools`3547* `Shell command permission check failed for pattern "..."`: pemeriksaan izin perintah tidak mengizinkannya. [Pemeriksaan izin pada perintah sisipan](/docs/id/skills#permission-checks-on-injected-commands) menjelaskan hasil mana yang membatalkan di setiap mode izin dan cara menyetujui perintah sebelumnya dengan `allowed-tools`

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

3432 3549 

3433**Yang perlu dilakukan:**3550**Yang perlu dilakukan:**

3434 3551 


3577 3694 

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

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

3580* **Anda meneruskan base branch yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuk berbunyi ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; ketika Claude Code tidak dapat mengetahui apakah clone Anda dangkal (shallow), Claude Code menyarankan `git fetch --unshallow origin` sebagai gantinya. Sebelum v2.1.221, petunjuk menyarankan `git fetch --unshallow origin` untuk setiap base branch yang diambil, dan pada clone yang lengkap perintah tersebut gagal dengan `fatal: --unshallow on a complete repository does not make sense`.3697* **Anda meneruskan base branch yang tidak ada di clone Anda**: Claude Code mengambilnya dari origin sebelum membandingkan. Petunjuknya berbunyi ``<branch> was fetched from origin but shares no history with HEAD. If another branch is your real base, pass it explicitly (`/code-review ultra <branch>`)``; ketika Claude Code tidak dapat mengetahui apakah clone Anda shallow, ia justru menyarankan `git fetch --unshallow origin`. Sebelum v2.1.221, petunjuk tersebut menyarankan `git fetch --unshallow origin` untuk setiap base branch yang diambil, dan pada clone yang lengkap perintah tersebut gagal dengan `fatal: --unshallow on a complete repository does not make sense`.

3581 3698 

3582**Yang perlu dilakukan:**3699**Yang perlu dilakukan:**

3583 3700 


3835 Claude Code couldn't restart3952 Claude Code couldn't restart

3836</h3>3953</h3>

3837 3954 

3838Claude Code sedang memulai ulang, misalnya untuk beralih ke atau dari rendering layar penuh setelah Anda menjalankan [`/tui`](/docs/id/fullscreen#enable-fullscreen-rendering). Claude Code menutup sesi tetapi tidak dapat memulai proses baru, sehingga mencetak pesan ini dan keluar dengan status 1:3955Jika pesan ini menyatakan bahwa percakapan Anda tersimpan, percakapan tersebut ada di disk dan Anda dapat melanjutkannya dari titik berhentinya. Claude Code sedang memulai ulang dirinya sendiri, misalnya untuk beralih ke atau dari rendering fullscreen setelah Anda menjalankan [`/tui`](/docs/id/fullscreen#enable-fullscreen-rendering), dan tidak dapat memulai proses baru, sehingga keluar dengan status 1:

3839 3956 

3840```text theme={null}3957```text theme={null}

3841Claude Code couldn't restart. Your conversation is saved. Start Claude Code again and run /resume to pick it up.3958Claude Code couldn't restart. Your conversation is saved. Start Claude Code again and run /resume to pick it up.


3845 3962 

3846**Yang perlu dilakukan:**3963**Yang perlu dilakukan:**

3847 3964 

3848* Jalankan `claude` lagi di shell Anda dari direktori yang sama. Jika pesan menyebutkan bahwa percakapan Anda tersimpan, jalankan [`/resume`](/docs/id/sessions#resume-a-session) di sesi baru dan pilih percakapan tersebut3965* Jalankan `claude` lagi di shell Anda. Jika pesan menyatakan bahwa percakapan Anda tersimpan, jalankan [`/resume`](/docs/id/sessions#resume-a-session) di sesi baru dan pilih percakapannya. Jika tidak ada di daftar, [perluas picker sesi](/docs/id/sessions#where-the-session-picker-looks)

3849* Jika proses mulai ulang terus gagal, mulai Claude Code dari shell Anda dengan [`claude --debug-file claude-debug.log`](/docs/id/cli-reference#cli-flags). Jika mulai ulang dari sesi tersebut gagal, `claude-debug.log` di direktori tempat Anda memulai mencatat baris `Failed to relaunch:` dengan error dari sistem operasi. Sertakan baris tersebut saat Anda [melaporkan masalahnya](#report-an-error)3966* Jika proses mulai ulang terus gagal, mulai Claude Code dari shell Anda dengan [`claude --debug-file claude-debug.log`](/docs/id/cli-reference#cli-flags). Jika mulai ulang dari sesi tersebut gagal, `claude-debug.log` di direktori tempat Anda memulai mencatat baris `Failed to relaunch:` dengan error dari sistem operasi. Sertakan baris tersebut saat Anda [melaporkan masalahnya](#report-an-error)

3850 3967 

3851<h3 id="couldnt-open-claude-desktop">3968<h3 id="couldnt-open-claude-desktop">


5366* Perpendek frontmatter `description` dari file agent Anda, atau minta Claude untuk memangkasnya untuk Anda.5483* Perpendek frontmatter `description` dari file agent Anda, atau minta Claude untuk memangkasnya untuk Anda.

5367* Hapus file agent yang tidak lagi Anda gunakan.5484* Hapus file agent yang tidak lagi Anda gunakan.

5368 5485 

5486<h3 id="hook-needs-quotes-around-a-path-with-a-space">

5487 Hook needs quotes around a path with a space

5488</h3>

5489 

5490Notifikasi dalam tampilan percakapan ini berarti skrip sebuah hook tidak dijalankan karena jalurnya mengandung spasi dan tidak diberi tanda kutip. Hook tersebut adalah hook [`asyncRewake`](/docs/id/hooks#run-hooks-in-the-background) dalam bentuk shell. Dalam `command`-nya, interpreter seperti `python3` diikuti oleh placeholder jalur tanpa tanda kutip, dan jalur yang telah diselesaikan mengandung spasi.

5491 

5492Notifikasi dimulai dengan nama event hook dan menyebutkan skripnya:

5493 

5494```text theme={null}

5495Stop hook needs quotes around a path with a space (check.py)

5496```

5497 

5498**Yang harus dilakukan:**

5499 

5500* Dalam `command` dari hook yang menjalankan skrip yang disebutkan notifikasi, apit jalur dengan tanda kutip ganda. Dalam file JSON, tuliskan sebagai `"command": "python3 \"${CLAUDE_PLUGIN_ROOT}/hooks/check.py\""`.

5501 

5369<h3 id="a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved">5502<h3 id="a-skill-command-or-workflow-wasnt-loaded-because-its-name-is-reserved">

5370 Skill, command, atau workflow tidak dimuat karena namanya dicadangkan5503 Skill, command, atau workflow tidak dimuat karena namanya dicadangkan

5371</h3>5504</h3>


5386 5519 

5387Sebelum v2.1.282, Claude Code memuat skills dan commands dengan nama-nama ini.5520Sebelum v2.1.282, Claude Code memuat skills dan commands dengan nama-nama ini.

5388 5521 

5522<h3 id="skill-or-command-name-refused">

5523 Skill or command name refused

5524</h3>

5525 

5526Pemberitahuan startup ini berarti Claude Code menolak nama dari setidaknya satu [skill atau perintah kustom](/docs/id/skills), sehingga item tersebut tidak dimuat atau dimuat tanpa bidang `name`-nya:

5527 

5528```text theme={null}

55291 skill or command name refused: run with --debug to see which ([names]), rename, then restart — a name may not hold hidden, direction-changing or blank-like characters, < or >, or be over 256 characters

5530```

5531 

5532* **Tidak dimuat**: Claude Code menolak nama yang digunakan oleh skill atau perintah, seperti nama direktorinya atau nama file atau subfolder file perintah. Item tersebut tidak ada di menu `/` dan Claude tidak dapat memanggilnya. Barisnya dalam log debug berbunyi `<name> is not offered`.

5533* **Bidang `name` diabaikan**: Claude Code menolak frontmatter `name` sebuah skill. Skill tersebut tetap dimuat, tetapi menu `/` tidak menampilkan nilai `name` dan mengetiknya tidak memanggil skill tersebut. Barisnya dalam log debug berbunyi `<name value> is not shown for <skill>`.

5534 

5535**Yang harus dilakukan:**

5536 

5537* Mulai Claude Code dengan `claude --debug` dari shell Anda dan cari `[names]` di [log debug](/docs/id/debug-your-config). Setiap nama yang dihitung pemberitahuan memiliki satu baris di sana. Baris tersebut menuliskan beberapa karakter tersembunyi sebagai kode, seperti `\u{200B}` untuk zero-width space, sehingga Anda dapat melihat letaknya.

5538* Hapus [karakter yang tidak boleh ada dalam nama skill](/docs/id/skills#characters-a-skill-name-cant-hold) dengan mengganti nama folder atau file atau mengedit baris `name:`, atau perpendek nama yang lebih dari 256 karakter. Kemudian restart sesi, kecuali file berada di direktori yang [dipantau perubahannya](/docs/id/skills#live-change-detection) oleh Claude Code. Untuk skill dari plugin yang tidak Anda tulis, minta pembuat plugin untuk mengganti namanya.

5539 

5389<h3 id="workspace-has-not-been-trusted">5540<h3 id="workspace-has-not-been-trusted">

5390 Workspace belum dipercaya5541 Workspace belum dipercaya

5391</h3>5542</h3>

Details

220</table>220</table>

221 221 

222<span id="fn1" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>1</sup> Di Platform Agent Google Cloud, web search tersedia untuk Opus 4, Sonnet 4, Haiku 4.5, dan model yang lebih baru.<br />222<span id="fn1" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>1</sup> Di Platform Agent Google Cloud, web search tersedia untuk Opus 4, Sonnet 4, Haiku 4.5, dan model yang lebih baru.<br />

223<span id="fn2" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>2</sup> Di penyedia ini, auto mode mendukung hanya Claude Sonnet 5 atau yang lebih baru, Opus 4.7 atau yang lebih baru, Haiku 5.5, dan model Fable. Lihat [Konfigurasi Auto mode](/docs/id/auto-mode-config). Untuk mode izin yang dimulai sesi di penyedia ini, lihat [Mode mana yang dimulai sesi](/docs/id/permission-modes#which-mode-a-session-starts-in). Di v2.1.158 hingga v2.1.206, auto mode di penyedia ini juga memerlukan pengaturan `CLAUDE_CODE_ENABLE_AUTO_MODE=1`; v2.1.207 menghapus persyaratan.<br />223<span id="fn2" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>2</sup> Di penyedia ini, auto mode mendukung hanya Claude Sonnet 5 atau yang lebih baru, Opus 4.7 atau yang lebih baru, Haiku 5.5, dan model Fable. Lihat [Konfigurasi Auto mode](/docs/id/auto-mode-config). Untuk mode izin yang dimulai sesi di penyedia ini, lihat [Mode mana yang dimulai sesi](/docs/id/permission-modes#which-mode-a-session-starts-in).<br />

224<span id="fn3" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>3</sup> Tunduk pada perjanjian Anda dengan penyedia cloud.<br />224<span id="fn3" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>3</sup> Tunduk pada perjanjian Anda dengan penyedia cloud.<br />

225<span id="fn4" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>4</sup> Dashboard dan API saja. [Metrik kontribusi](/docs/id/analytics#enable-contribution-metrics) memerlukan organisasi Team atau Enterprise claude.ai.<br />225<span id="fn4" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>4</sup> Dashboard dan API saja. [Metrik kontribusi](/docs/id/analytics#enable-contribution-metrics) memerlukan organisasi Team atau Enterprise claude.ai.<br />

226<span id="fn5" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>5</sup> Memerlukan Claude Code v2.1.224 atau yang lebih baru di macOS dan Linux, termasuk Linux di dalam WSL 2. Di Windows asli, memerlukan Claude Code v2.1.234 atau yang lebih baru. Dengan autentikasi kunci API, pesan hanya mesin yang sama. Di Amazon Bedrock, Claude Platform di AWS, Platform Agent Google Cloud, dan Microsoft Foundry, pesan hanya mesin yang sama dan memerlukan Claude Code v2.1.248 atau yang lebih baru. Claude dapat menemukan [sesi cloud](/docs/id/claude-code-on-the-web) Anda dan sesi Anda di mesin lain hanya dari sesi yang terhubung ke [Remote Control](/docs/id/remote-control). Untuk terhubung, Anda memerlukan masuk claude.ai dan [persyaratan Remote Control lainnya](/docs/id/remote-control#requirements). Lihat [Pesan sesi di mesin lain](/docs/id/cross-session-messaging#message-sessions-on-other-machines).226<span id="fn5" style={{display: 'block', position: 'relative', top: '-120px'}} /><sup>5</sup> Memerlukan Claude Code v2.1.224 atau yang lebih baru di macOS dan Linux, termasuk Linux di dalam WSL 2. Di Windows asli, memerlukan Claude Code v2.1.234 atau yang lebih baru. Dengan autentikasi kunci API, pesan hanya mesin yang sama. Di Amazon Bedrock, Claude Platform di AWS, Platform Agent Google Cloud, dan Microsoft Foundry, pesan hanya mesin yang sama dan memerlukan Claude Code v2.1.248 atau yang lebih baru. Claude dapat menemukan [sesi cloud](/docs/id/claude-code-on-the-web) Anda dan sesi Anda di mesin lain hanya dari sesi yang terhubung ke [Remote Control](/docs/id/remote-control). Untuk terhubung, Anda memerlukan masuk claude.ai dan [persyaratan Remote Control lainnya](/docs/id/remote-control#requirements). Lihat [Pesan sesi di mesin lain](/docs/id/cross-session-messaging#message-sessions-on-other-machines).

Details

282 282 

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

284 284 

285 **Di subagents:** Skills bekerja berbeda di subagents. Alih-alih pemuatan on-demand, skills yang tercantum di field `skills:` subagent sepenuhnya dimuat sebelumnya ke konteksnya saat peluncuran. Subagents masih dapat menemukan dan memanggil skills proyek, pengguna, dan plugin yang tidak tercantum melalui alat Skill.285 **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.

286 286 

287 <Tip>Gunakan `disable-model-invocation: true` untuk skills dengan efek samping. Ini menghemat konteks dan memastikan skills tersebut hanya berjalan ketika Anda menyebut namanya.</Tip>287 <Tip>Gunakan `disable-model-invocation: true` untuk skills dengan efek samping. Ini menghemat konteks dan memastikan skills tersebut hanya berjalan ketika Anda menyebut namanya.</Tip>

288 </Tab>288 </Tab>


312 312 

313 **Apa yang dimuat:** Konteks segar dan terisolasi yang berisi:313 **Apa yang dimuat:** Konteks segar dan terisolasi yang berisi:

314 314 

315 * Prompt sistem agen, bukan prompt sistem Claude Code315 * System prompt milik agent itu sendiri, bukan system prompt Claude Code

316 * Konten penuh skills yang tercantum di field `skills:` agen316 * Konten penuh skills yang tercantum di field `skills:` agent

317 * CLAUDE.md dan status git, kecuali agen Explore dan Plan bawaan [menghilangkan keduanya](/docs/id/sub-agents#what-loads-at-startup), dan agen yang definisinya menetapkan [`omitClaudeMd`](/docs/id/sub-agents#supported-frontmatter-fields) melewati file CLAUDE.md pengguna, proyek, dan lokal317 * CLAUDE.md dan status git. Agent Explore dan Plan bawaan [dimulai tanpa keduanya](/docs/id/sub-agents#what-loads-at-startup), dan agent yang definisinya menetapkan [`omitClaudeMd`](/docs/id/sub-agents#supported-frontmatter-fields) dimulai tanpa file CLAUDE.md pengguna, proyek, dan lokal.

318 * Apa pun konteks yang agen utama lewatkan dalam prompt318 * Apa pun konteks yang agent utama lewatkan dalam prompt

319 319 

320 Untuk [fork](/docs/id/sub-agents#fork-the-current-conversation), Claude Code memuat percakapan induk sejauh ini, prompt sistem, dan alat sebagai gantinya.320 Untuk [fork](/docs/id/sub-agents#fork-the-current-conversation), Claude Code memuat percakapan induk sejauh ini, prompt sistem, dan alat sebagai gantinya.

321 321 

Details

22 22 

23| Fitur | Dukungan GHES | Catatan |23| Fitur | Dukungan GHES | Catatan |

24| :- | :- | :- |24| :- | :- | :- |

25| Cloud sessions | ✅ Didukung | Pemilik menghubungkan instans GHES sekali; pengembang menggunakan `claude --cloud` atau [claude.ai/code](https://claude.ai/code) seperti biasa |25| Sesi cloud | ✅ Didukung | Pemilik menghubungkan instans GHES sekali; pengembang menggunakan `claude --cloud` atau [claude.ai/code](https://claude.ai/code) |

26| Code Review | ✅ Didukung | Tinjauan PR otomatis yang sama seperti github.com |26| Code Review | ✅ Didukung | Tinjauan PR otomatis yang sama seperti github.com |

27| Claude Security | ✅ Didukung | Tersedia dalam beta publik untuk paket Enterprise di [claude.ai/security](https://claude.ai/security) |27| Claude Security | ✅ Didukung | Tersedia dalam beta publik untuk paket Enterprise di [claude.ai/security](https://claude.ai/security) |

28| Teleport sessions | ✅ Didukung | Pindahkan sesi antara cloud dan terminal dengan `--teleport` |28| Teleport sessions | ✅ Didukung | Pindahkan sesi antara cloud dan terminal dengan `--teleport` |


35 Penyiapan admin35 Penyiapan admin

36</h2>36</h2>

37 37 

38Seorang Owner menghubungkan instance GHES Anda ke Claude Code satu kali. Setelah itu, developer di organisasi Anda dapat menggunakan repositori GHES tanpa konfigurasi tambahan apa pun. Anda memerlukan peran Owner atau Primary Owner di organisasi Claude Anda serta izin untuk membuat GitHub App di instance GHES Anda.38Seorang Owner menghubungkan instance GHES Anda ke Claude Code satu kali. Anda memerlukan peran Owner atau Primary Owner di organisasi Claude Anda serta izin untuk membuat GitHub App di instance GHES Anda.

39 39 

40Penyiapan terpandu menghasilkan manifest GitHub App dan mengarahkan Anda ke instance GHES Anda untuk membuat app dengan satu klik. Jika lingkungan Anda memblokir alur pengalihan tersebut, tersedia [penyiapan manual alternatif](#manual-setup).40Penyiapan terpandu menghasilkan manifest GitHub App dan mengarahkan Anda ke instance GHES Anda untuk membuat app dengan satu klik. Jika lingkungan Anda memblokir alur pengalihan tersebut, tersedia [penyiapan manual alternatif](#manual-setup).

41 41 


103 Alur kerja pengembang103 Alur kerja pengembang

104</h2>104</h2>

105 105 

106Setelah admin Anda menghubungkan instans GHES, tidak ada konfigurasi sisi pengembang yang diperlukan. Claude Code mendeteksi nama host GHES Anda secara otomatis dari git remote di direktori kerja Anda.106Claude Code mendeteksi nama host GHES Anda secara otomatis dari git remote di direktori kerja Anda.

107 107 

108Kloning repositori dari instans GHES Anda seperti biasa, mengganti `github.example.com` dan jalur repositori dengan nama host GHES dan repositori Anda:108Kloning repositori dari instans GHES Anda seperti biasa, mengganti `github.example.com` dan jalur repositori dengan nama host GHES dan repositori Anda:

109 109 


228 228 

229Jika `claude --cloud` gagal dengan kesalahan kloning, verifikasi bahwa seorang Owner telah menyelesaikan pengaturan untuk instans GHES Anda dan bahwa GitHub App dipasang di repositori tempat Anda bekerja. Tanyakan kepada Owner yang menghubungkan instans untuk mengonfirmasi bahwa nama host yang terdaftar dalam pengaturan Claude cocok dengan nama host di git remote Anda.229Jika `claude --cloud` gagal dengan kesalahan kloning, verifikasi bahwa seorang Owner telah menyelesaikan pengaturan untuk instans GHES Anda dan bahwa GitHub App dipasang di repositori tempat Anda bekerja. Tanyakan kepada Owner yang menghubungkan instans untuk mengonfirmasi bahwa nama host yang terdaftar dalam pengaturan Claude cocok dengan nama host di git remote Anda.

230 230 

231Jika sesi berhenti dengan "Authentication failed while accessing the repository", Anda mungkin belum menghubungkan akun GitHub Enterprise Anda sendiri. Hubungkan akun tersebut dari pemilih repositori di [claude.ai/code](https://claude.ai/code), kemudian mulai sesi baru.

232 

231<h3 id="marketplace-add-fails-with-a-policy-error">233<h3 id="marketplace-add-fails-with-a-policy-error">

232 Penambahan pasar gagal dengan kesalahan kebijakan234 Penambahan pasar gagal dengan kesalahan kebijakan

233</h3>235</h3>

Details

261* Untuk menggunakan Haiku untuk tugas latar belakang, atur `ANTHROPIC_DEFAULT_HAIKU_MODEL` ke ID model yang tersedia di proyek Anda.261* Untuk menggunakan Haiku untuk tugas latar belakang, atur `ANTHROPIC_DEFAULT_HAIKU_MODEL` ke ID model yang tersedia di proyek Anda.

262 262 

263<Warning>263<Warning>

264 Model Opus memiliki harga per-token yang lebih tinggi daripada model Sonnet, jadi penerapan yang tidak pin model utama ditagih dengan tarif Opus setelah diperbarui ke v2.1.207 atau lebih baru. Untuk menjaga Sonnet 4.5 sebagai model utama, atur `ANTHROPIC_MODEL` ke ID model lengkapnya. Penerapan yang mengarahkan default dengan `ANTHROPIC_DEFAULT_SONNET_MODEL` dan tidak mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` menjaga model Sonnet yang diarahkan sebagai default.264 Model Opus memiliki harga per-token yang lebih tinggi daripada model Sonnet, jadi jika Anda tidak melakukan pin model utama, Anda ditagih dengan tarif Opus. Untuk menggunakan Sonnet 4.5 sebagai model utama, atur `ANTHROPIC_MODEL` ke ID model lengkapnya. Deployment yang mengarahkan default dengan `ANTHROPIC_DEFAULT_SONNET_MODEL` dan tidak mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` menjaga model Sonnet yang diarahkan sebagai default.

265</Warning>265</Warning>

266 266 

267Sebelum v2.1.280, model utama di Google Cloud's Agent Platform default ke Opus 5 dan alias `opus` diselesaikan ke Opus 5 dari v2.1.219. Pada v2.1.207 melalui v2.1.218, model utama di Google Cloud's Agent Platform default ke Opus 4.8 dan alias `opus` diselesaikan ke Opus 4.8. Sebelum v2.1.207, model utama default ke Sonnet 4.5, alias `opus` diselesaikan ke Opus 4.6, dan tugas latar belakang selalu menggunakan model utama.267Sebelum v2.1.280, model utama di Google Cloud's Agent Platform default ke Opus 5 dan alias `opus` diselesaikan ke Opus 5 dari v2.1.219. Pada v2.1.207 melalui v2.1.218, model utama di Google Cloud's Agent Platform default ke Opus 4.8 dan alias `opus` diselesaikan ke Opus 4.8.

268 268 

269Untuk menyesuaikan model lebih lanjut:269Untuk menyesuaikan model lebih lanjut:

270 270 

headless.md +6 −6

Details

38 Mulai lebih cepat dengan bare mode38 Mulai lebih cepat dengan bare mode

39</h3>39</h3>

40 40 

41Tambahkan `--bare` untuk mengurangi waktu startup dengan melewati penemuan otomatis hooks, skills, perintah kustom, [subagents](/docs/id/sub-agents), plugins yang diinstal, server MCP, auto memory, dan CLAUDE.md. Tanpanya, `claude -p` memuat [konteks](/docs/id/how-claude-code-works#the-context-window) yang sama dengan sesi interaktif, termasuk apa pun yang dikonfigurasi di direktori kerja atau `~/.claude`.41Tambahkan `--bare` untuk mengurangi waktu startup dengan melewati penemuan otomatis hooks, skills, perintah kustom, [subagents](/docs/id/sub-agents), plugins yang diinstal, server MCP, auto memory, dan CLAUDE.md. Tanpanya, `claude -p` menemukan dan memuat semuanya seperti yang dilakukan sesi interaktif, termasuk apa pun yang dikonfigurasi di direktori kerja atau `~/.claude`.

42 42 

43Bare mode berguna untuk CI dan skrip di mana Anda memerlukan hasil yang sama di setiap mesin. Hook di `~/.claude` rekan kerja atau server MCP di `.mcp.json` proyek tidak akan berjalan, karena bare mode tidak pernah membacanya. Direktori yang Anda beri nama dengan `--add-dir` adalah pengecualian parsial: bare mode memuat skills dari folder `.claude/skills/` nya, tetapi masih melewati folder `.claude/commands/` dan `.claude/agents/` nya. [Skills dari direktori tambahan](/docs/id/skills#skills-from-additional-directories) mencakup apa yang dimuat dan tidak dimuat.43Bare mode berguna untuk CI dan skrip di mana Anda memerlukan hasil yang sama di setiap mesin. Hook di `~/.claude` rekan kerja atau server MCP di `.mcp.json` proyek tidak akan berjalan, karena bare mode tidak pernah membacanya. Direktori yang Anda beri nama dengan `--add-dir` adalah pengecualian parsial: bare mode memuat skills dari folder `.claude/skills/` nya, tetapi masih melewati folder `.claude/commands/` dan `.claude/agents/` nya. [Skills dari direktori tambahan](/docs/id/skills#skills-from-additional-directories) mencakup apa yang dimuat dan tidak dimuat.

44 44 


184 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'184 --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"string"}}},"required":["functions"]}'

185```185```

186 186 

187Jika nilainya bukan JSON Schema yang valid, `claude` keluar dengan `Error: --json-schema is not a valid JSON Schema` diikuti oleh diagnostik validator. Claude Code menerima skema yang menggunakan kata kunci `format`, seperti `"format": "email"`, tetapi memperlakukan `format` sebagai anotasi dan tidak memberlakukannya. Sebelum v2.1.205, Claude Code secara diam-diam mengabaikan skema yang tidak valid dan mengembalikan teks yang tidak terstruktur, dan memperlakukan skema apa pun yang berisi `format` sebagai tidak valid.187Jika nilainya bukan JSON Schema yang valid, `claude` keluar dengan `Error: --json-schema is not a valid JSON Schema` diikuti oleh diagnostik validator. Claude Code menerima skema yang menggunakan kata kunci `format`, seperti `"format": "email"`, tetapi memperlakukan `format` sebagai anotasi dan tidak memberlakukannya.

188 188 

189<Tip>189<Tip>

190 Gunakan alat seperti [jq](https://jqlang.org/) untuk mengurai respons dan mengekstrak bidang tertentu:190 Gunakan alat seperti [jq](https://jqlang.org/) untuk mengurai respons dan mengekstrak bidang tertentu:


281Acara `system/init` melaporkan metadata sesi termasuk model, tool, server MCP, dan plugin yang dimuat. Ini adalah acara pertama dalam stream kecuali acara startup mendahuluinya:281Acara `system/init` melaporkan metadata sesi termasuk model, tool, server MCP, dan plugin yang dimuat. Ini adalah acara pertama dalam stream kecuali acara startup mendahuluinya:

282 282 

283* Acara `plugin_install`, ketika [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/id/env-vars) diatur.283* Acara `plugin_install`, ketika [`CLAUDE_CODE_SYNC_PLUGIN_INSTALL`](/docs/id/env-vars) diatur.

284* [Acara `hook_started`, `hook_progress`, dan `hook_response`](/docs/id/agent-sdk/typescript#sdkhookstartedmessage), saat hook [`SessionStart`](/docs/id/hooks#sessionstart) atau [`Setup`](/docs/id/hooks#setup) yang dikonfigurasi berjalan. Acara ini di-stream saat hook menghasilkannya. Claude Code v2.1.169 hingga v2.1.203 mengirimkannya dalam satu batch setelah hook selesai, masih sebelum `system/init`; v2.1.204 mengembalikan pengiriman langsung.284* [Acara `hook_started`, `hook_progress`, dan `hook_response`](/docs/id/agent-sdk/typescript#sdkhookstartedmessage), saat hook [`SessionStart`](/docs/id/hooks#sessionstart) atau [`Setup`](/docs/id/hooks#setup) yang dikonfigurasi berjalan. Acara ini di-stream saat hook menghasilkannya.

285 285 

286Acara ini juga membawa array `capabilities` opsional dari string yang menamai perilaku protokol yang diimplementasikan versi Claude Code ini, seperti `interrupt_receipt_v1` atau `interrupt_cancel_queued_v1`. Periksanya untuk mendeteksi fitur alih-alih membandingkan string versi, dan abaikan nilai yang tidak Anda kenali. Bidang ini memerlukan Claude Code v2.1.205 atau lebih baru dan tidak ada di versi sebelumnya. Lihat [`SDKSystemMessage`](/docs/id/agent-sdk/typescript#sdksystemmessage) untuk daftar kemampuan.286Acara ini juga membawa array `capabilities` opsional dari string yang menamai perilaku protokol yang diimplementasikan versi Claude Code ini, seperti `interrupt_receipt_v1` atau `interrupt_cancel_queued_v1`. Periksanya untuk mendeteksi fitur alih-alih membandingkan string versi, dan abaikan nilai yang tidak Anda kenali. Lihat [`SDKSystemMessage`](/docs/id/agent-sdk/typescript#sdksystemmessage) untuk daftar kemampuan.

287 287 

288<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">288<h4 id="fail-ci-when-a-plugin-or-mcp-server-doesn’t-load">

289 Gagalkan CI ketika plugin atau server MCP tidak dimuat289 Gagalkan CI ketika plugin atau server MCP tidak dimuat


388 388 

389 * [Skills](/docs/id/skills) yang dipanggil pengguna dan perintah kustom berfungsi. Sertakan `/skill-name` dalam string prompt dan Claude Code memperluasnya sebelum menjalankan.389 * [Skills](/docs/id/skills) yang dipanggil pengguna dan perintah kustom berfungsi. Sertakan `/skill-name` dalam string prompt dan Claude Code memperluasnya sebelum menjalankan.

390 * Perintah bawaan yang hanya berjalan di antarmuka terminal, seperti `/login`, tidak tersedia.390 * Perintah bawaan yang hanya berjalan di antarmuka terminal, seperti `/login`, tidak tersedia.

391 * `/model`, `/effort`, `/fast`, `/color`, dan `/rename` menerima nilai sebagai argumen, misalnya `/model sonnet`, dan `/mcp` tanpa argumen mencetak ringkasan teks status server. Bentuk-bentuk ini memerlukan Claude Code v2.1.205 atau lebih baru dan mengikuti [catatan ketersediaan](/docs/id/commands#all-commands) setiap perintah.391 * `/model`, `/effort`, `/fast`, `/color`, dan `/rename` menerima nilai sebagai argumen, misalnya `/model sonnet`, dan `/mcp` tanpa argumen mencetak ringkasan teks status server. Bentuk-bentuk ini mengikuti [catatan ketersediaan](/docs/id/commands#all-commands) setiap perintah.

392 * Untuk mengubah pengaturan, berikan `key=value` ke `/config`, misalnya `/config thinking=false`.392 * Untuk mengubah pengaturan, berikan `key=value` ke `/config`, misalnya `/config thinking=false`.

393 * `/output-style <style>` beralih [gaya output](/docs/id/output-styles) dan `/output-style` saja mencantumkannya. Memerlukan Claude Code v2.1.269 atau lebih baru.393 * `/output-style <style>` beralih [gaya output](/docs/id/output-styles) dan `/output-style` saja mencantumkannya. Memerlukan Claude Code v2.1.269 atau lebih baru.

394</Note>394</Note>


407 407 

408Dalam skrip, `"$1"` mewakili argumen pertama yang Anda berikan di baris perintah. Jalankan `bash review.sh 123` dan shell mengganti `"$1"` dengan `123`, jadi skrip mengambil diff untuk PR 123. Claude Code mencetak tinjauan sebagai JSON, dengan teks di bidang `result`.408Dalam skrip, `"$1"` mewakili argumen pertama yang Anda berikan di baris perintah. Jalankan `bash review.sh 123` dan shell mengganti `"$1"` dengan `123`, jadi skrip mengambil diff untuk PR 123. Claude Code mencetak tinjauan sebagai JSON, dengan teks di bidang `result`.

409 409 

410Lihat [flag system prompt](/docs/id/cli-reference#system-prompt-flags) untuk opsi lebih lanjut termasuk `--system-prompt` untuk sepenuhnya mengganti prompt default.410Lihat [flag system prompt](/docs/id/cli-reference#system-prompt-flags) untuk opsi lebih lanjut termasuk `--system-prompt` untuk sepenuhnya mengganti prompt default. Jika Anda menggantinya, jalankan juga dimulai tanpa [snapshot status git](/docs/id/settings-reference#includegitinstructions).

411 411 

412<h3 id="continue-conversations">412<h3 id="continue-conversations">

413 Lanjutkan percakapan413 Lanjutkan percakapan

hipaa-setup.md +1 −0

Details

228| `--cloud`, `/teleport`, dan [Remote Control](/docs/id/remote-control) ditolak | [Sesi cloud](/docs/id/claude-code-on-the-web) dan Remote Control nonaktif |228| `--cloud`, `/teleport`, dan [Remote Control](/docs/id/remote-control) ditolak | [Sesi cloud](/docs/id/claude-code-on-the-web) dan Remote Control nonaktif |

229| `/feedback` dan `/bug` tidak tersedia | Pengiriman umpan balik nonaktif |229| `/feedback` dan `/bug` tidak tersedia | Pengiriman umpan balik nonaktif |

230| Claude tidak dapat memublikasikan [artifact](/docs/id/artifacts) | Publikasi artifact nonaktif |230| Claude tidak dapat memublikasikan [artifact](/docs/id/artifacts) | Publikasi artifact nonaktif |

231| Tool MCP dimuat ke dalam konteks sejak awal | [MCP Tool Search](/docs/id/mcp#configure-tool-search) nonaktif. Baik `ENABLE_TOOL_SEARCH` maupun pengaturan terkelola tidak dapat mengaktifkannya kembali |

231| Server MCP atau hook yang membaca `ANTHROPIC_API_KEY` berhenti melakukan autentikasi | Claude Code [menghapus kredensial Anthropic](#anthropic-credentials-in-commands-hooks-and-mcp-servers) dari proses yang dijalankannya |232| Server MCP atau hook yang membaca `ANTHROPIC_API_KEY` berhenti melakukan autentikasi | Claude Code [menghapus kredensial Anthropic](#anthropic-credentials-in-commands-hooks-and-mcp-servers) dari proses yang dijalankannya |

232| Pembatasan tetap ada setelah `/login` ke organisasi lain | Status HIPAA bertahan hingga Claude Code dimulai ulang |233| Pembatasan tetap ada setelah `/login` ke organisasi lain | Status HIPAA bertahan hingga Claude Code dimulai ulang |

233 234 

hooks.md +427 −401

Details

827 827 

828Exit code hook Anda memberi tahu Claude Code apakah akan melanjutkan tindakan yang memicu hook, seperti panggilan tool atau prompt. Eksekusi yang selesai memiliki salah satu dari tiga hasil:828Exit code hook Anda memberi tahu Claude Code apakah akan melanjutkan tindakan yang memicu hook, seperti panggilan tool atau prompt. Eksekusi yang selesai memiliki salah satu dari tiga hasil:

829 829 

830* **Berhasil**: hook Anda keluar dengan 0. Claude Code menerapkan field [output JSON](#json-output) apa pun yang dicetak hook Anda, dan tindakan dilanjutkan kecuali field tersebut memblokir atau menolaknya.830* **Berhasil**: hook Anda keluar dengan 0. Claude Code menerapkan field [output JSON](#json-output) apa pun yang dicetak hook Anda, dan tindakan dilanjutkan kecuali field tersebut memblokir atau menolaknya. [Hook yang memulai proses latar belakang](#hooks-that-start-a-background-process) membahas pengecualiannya.

831* **Error blocking**: hook Anda keluar dengan 2. Pada [event yang dapat memblokir](#exit-code-2-behavior-per-event), Claude Code menghentikan tindakan.831* **Error blocking**: hook Anda keluar dengan 2. Pada [event yang dapat memblokir](#exit-code-2-behavior-per-event), Claude Code menghentikan tindakan.

832* **Error non-blocking**: hook Anda keluar dengan kode lain, atau gagal dengan cara lain, seperti tidak dapat dimulai atau mencetak JSON yang tidak valid. Tindakan dilanjutkan, dan pada event seperti `PreToolUse` Anda melihat pemberitahuan `<hook name> hook error` di transkrip. Jika Anda ingin hook yang gagal memblokir tindakan, atur [`onFailure: "block"`](#block-the-action-when-a-hook-fails).832* **Error non-blocking**: hook Anda keluar dengan kode lain, atau gagal dengan cara lain, seperti tidak dapat dimulai atau mencetak JSON yang tidak valid. Tindakan dilanjutkan, dan pada event seperti `PreToolUse` Anda melihat pemberitahuan `<hook name> hook error` di transkrip. Jika Anda ingin hook yang gagal memblokir tindakan, atur [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

833 833 


932* Hook `command`, `http`, atau `mcp_tool` yang mengalami timeout tidak memblokir panggilan tool. Panggilan berlanjut melalui [alur izin](/docs/id/permissions) normal, jadi jangan mengandalkan hook yang macet untuk berfungsi sebagai gerbang. Untuk memblokir panggilan ketika hook `command` atau `http` mengalami timeout, atur [`onFailure: "block"`](#block-the-action-when-a-hook-fails).932* Hook `command`, `http`, atau `mcp_tool` yang mengalami timeout tidak memblokir panggilan tool. Panggilan berlanjut melalui [alur izin](/docs/id/permissions) normal, jadi jangan mengandalkan hook yang macet untuk berfungsi sebagai gerbang. Untuk memblokir panggilan ketika hook `command` atau `http` mengalami timeout, atur [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

933* [Callback hook Agent SDK](/docs/id/agent-sdk/hooks) yang melebihi timeout-nya [memblokir panggilan tool](#pretooluse).933* [Callback hook Agent SDK](/docs/id/agent-sdk/hooks) yang melebihi timeout-nya [memblokir panggilan tool](#pretooluse).

934 934 

935<h4 id="hooks-that-start-a-background-process">

936 Hook yang memulai proses latar belakang

937</h4>

938 

939Jika hook perintah Anda membuat keputusannya dalam proses latar belakang lalu keluar, penolakan yang dicetak proses tersebut setelah Claude Code berhenti membaca tidak memblokir panggilan tool. Untuk hook yang tidak [async](#run-hooks-in-the-background), Claude Code selesai membaca output hook sesaat setelah proses hook itu sendiri keluar.

940 

941Cetak keputusan sebelum Anda memulai proses latar belakang, dan alihkan stdout dan stderr proses tersebut. Jika skrip Anda mencetak allow, lalu memulai proses latar belakang tanpa mengalihkan stdout dan stderr proses tersebut, Claude Code memblokir panggilan tool. Error hook menyertakan `refusing to honor the suspect capture`.

942 

943Skrip hook `PreToolUse` ini mencetak keputusan dengan `policy-check.sh`, lalu mengunggah metrik di latar belakang:

944 

945```bash theme={null}

946#!/bin/bash

947"$CLAUDE_PROJECT_DIR"/.claude/hooks/policy-check.sh || exit $?

948"$CLAUDE_PROJECT_DIR"/.claude/hooks/upload-metrics.sh >/dev/null 2>&1 &

949```

950 

951Bagian lain dari skrip melakukan hal berikut:

952 

953* **`|| exit $?`**: menjadikan exit code pemeriksaan sebagai exit code hook itu sendiri, sehingga pemeriksaan yang keluar dengan 2 untuk menolak tetap memblokir. Jika tidak, hook keluar dengan kode dari baris terakhir, yaitu 0.

954* **`>/dev/null 2>&1 &`**: menjalankan `upload-metrics.sh` di latar belakang dengan output yang dialihkan, sehingga proses tersebut tidak membuat output hook tetap terbuka.

955 

956Untuk menguji skrip, buat `policy-check.sh` keluar dengan 2, lalu picu panggilan tool yang cocok dengan hook. Panggilan tool diblokir.

957 

935<h4 id="block-the-action-when-a-hook-fails">958<h4 id="block-the-action-when-a-hook-fails">

936 Memblokir tindakan ketika hook gagal959 Memblokir tindakan ketika hook gagal

937</h4>960</h4>


1245 Event hook1268 Event hook

1246</h2>1269</h2>

1247 1270 

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

1249 1272 

1250<h3 id="sessionstart">1273<h3 id="sessionstart">

1251 SessionStart1274 SessionStart


1253 1276 

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

1255 1278 

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

1257 1280 

1258Nilai matcher berkaitan dengan cara sesi dimulai:1281Nilai matcher berkaitan dengan cara sesi dimulai:

1259 1282 


1265| `compact` | Compaction otomatis atau manual |1288| `compact` | Compaction otomatis atau manual |

1266| `fork` | Sesi baru yang di-fork dari sesi yang sudah ada: `--fork-session` dengan `--resume` atau `--continue`, salinan latar belakang `/fork`, `/branch`, atau percakapan yang Anda [pindahkan ke latar belakang](/docs/id/agent-view#from-inside-a-session) |1289| `fork` | Sesi baru yang di-fork dari sesi yang sudah ada: `--fork-session` dengan `--resume` atau `--continue`, salinan latar belakang `/fork`, `/branch`, atau percakapan yang Anda [pindahkan ke latar belakang](/docs/id/agent-view#from-inside-a-session) |

1267 1290 

1268Sebelum v2.1.214, sesi yang di-fork melaporkan source `"resume"`.1291Sebelum v2.1.214, sesi hasil fork melaporkan source `"resume"`.

1269 1292 

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

1271 1294 


1273 1296 

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

1275 1298 

1276Selama salah satu penantian tersebut, tekan `Esc` untuk mengambil kembali prompt ke input tanpa mengirimnya. Hook tetap berjalan.1299Selama salah satu penantian tersebut, tekan `Esc` untuk mengembalikan prompt ke input tanpa mengirimnya. Hook tetap berjalan.

1277 1300 

1278<h4 id="sessionstart-input">1301<h4 id="sessionstart-input">

1279 Input SessionStart1302 Input SessionStart

1280</h4>1303</h4>

1281 1304 

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

1283 1306 

1284| Field | Deskripsi |1307| Kolom | Deskripsi |

1285| :- | :- |1308| :- | :- |

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

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

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

1289| `session_title` | Judul kustom sesi, ada saat judul tersebut ditetapkan, misalnya dengan `--name`, `/rename`, output `sessionTitle` dari hook, atau `renameSession()` dari Agent SDK. Hook yang mengeluarkan `sessionTitle` dapat memeriksa field ini terlebih dahulu agar tidak menimpa judul kustom yang sudah ada |1312| `session_title` | Judul kustom sesi, ada jika telah ditetapkan, misalnya dengan `--name`, `/rename`, output `sessionTitle` dari hook, atau `renameSession()` dari Agent SDK. Hook yang menghasilkan `sessionTitle` dapat memeriksa kolom ini terlebih dahulu agar tidak menimpa judul kustom yang sudah ada |

1290 1313 

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

1292 1315 

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

1294 1317 

1295| Field | Deskripsi |1318| Kolom | Deskripsi |

1296| :- | :- |1319| :- | :- |

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

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

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

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

1301 1324 

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

1303 1326 


1320 Kontrol keputusan SessionStart1343 Kontrol keputusan SessionStart

1321</h4>1344</h4>

1322 1345 

1323Hook SessionStart dapat menambahkan konteks untuk Claude, menyediakan pesan pengguna pertama, menetapkan judul sesi, memantau file, dan memuat ulang skill. Kembalikan field untuk masing-masing, selain [field output JSON](#json-output) yang tersedia untuk semua hook:1346Hook SessionStart dapat menambahkan konteks untuk Claude, menyediakan pesan pengguna pertama, menetapkan judul sesi, memantau file, dan memuat ulang skill. Kembalikan kolom untuk masing-masing, selain [kolom output JSON](#json-output) yang tersedia untuk semua hook:

1324 1347 

1325| Field | Deskripsi |1348| Kolom | Deskripsi |

1326| :- | :- |1349| :- | :- |

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

1328| `initialUserMessage` | String yang digunakan sebagai pesan pengguna pertama dari sesi, dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. String ini menjadi giliran pertama meskipun Anda tidak memberikan prompt. Prompt yang Anda berikan akan mengikuti sebagai giliran berikutnya |1351| `initialUserMessage` | String yang digunakan sebagai pesan pengguna pertama sesi, dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. String ini menjadi giliran pertama meskipun Anda tidak memberikan prompt. Prompt yang Anda berikan menyusul sebagai giliran berikutnya |

1329| `sessionTitle` | Menetapkan judul sesi, dengan efek yang sama seperti `/rename`. Berlaku ketika `source` bernilai `"startup"`, `"resume"`, atau `"fork"` |1352| `sessionTitle` | Menetapkan judul sesi, dengan efek yang sama seperti `/rename`. Berlaku saat `source` bernilai `"startup"`, `"resume"`, atau `"fork"` |

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

1331| `reloadSkills` | Boolean. Ketika `true`, Claude Code memindai ulang direktori [skill](/docs/id/skills) dan perintah setelah hook SessionStart selesai. Lihat [Memuat ulang skill yang dipasang hook](#reload-skills-that-a-hook-installs) |1354| `reloadSkills` | Boolean. Saat `true`, Claude Code memindai ulang direktori [skill](/docs/id/skills) dan perintah setelah hook SessionStart selesai. Lihat [Memuat ulang skill yang diinstal hook](#reload-skills-that-a-hook-installs) |

1332 1355 

1333Output ini menambahkan konteks dan memberi nama sesi:1356Output ini menambahkan konteks dan memberi nama sesi:

1334 1357 


1344 1367 

1345Hook yang hanya menambahkan konteks dapat mencetaknya tanpa membangun JSON, karena Claude Code menambahkan [stdout teks biasa](#exit-code-0) dari hook SessionStart ke konteks Claude.1368Hook yang hanya menambahkan konteks dapat mencetaknya tanpa membangun JSON, karena Claude Code menambahkan [stdout teks biasa](#exit-code-0) dari hook SessionStart ke konteks Claude.

1346 1369 

1347Jika hook SessionStart dari plugin Anda menyediakan `initialUserMessage` atau `sessionTitle`, pasang plugin tersebut sebelum sesi dimulai. Claude Code mengabaikan kedua field tersebut dari plugin yang selesai dipasang setelah hook SessionStart berjalan.1370Jika hook SessionStart plugin Anda menyediakan `initialUserMessage` atau `sessionTitle`, instal plugin sebelum sesi dimulai. Claude Code mengabaikan kedua kolom tersebut dari plugin yang selesai diinstal setelah hook SessionStart berjalan.

1348 1371 

1349<h4 id="reload-skills-that-a-hook-installs">1372<h4 id="reload-skills-that-a-hook-installs">

1350 Memuat ulang skill yang dipasang hook1373 Memuat ulang skill yang diinstal hook

1351</h4>1374</h4>

1352 1375 

1353Agar skill yang dipasang oleh hook SessionStart tersedia dalam sesi yang sama, kembalikan `reloadSkills`. Penemuan skill biasanya berjalan sebelum hook SessionStart selesai, sehingga tanpanya, file yang ditulis hook ke `~/.claude/skills/` atau `.claude/skills/` bisa belum ada ketika prompt pertama berjalan.1376Agar skill yang diinstal oleh hook SessionStart tersedia dalam sesi yang sama, kembalikan `reloadSkills`. Penemuan skill biasanya berjalan sebelum hook SessionStart selesai, sehingga tanpanya, file yang ditulis hook ke `~/.claude/skills/` atau `.claude/skills/` dapat belum ada saat prompt pertama berjalan.

1354 1377 

1355Contoh ini menyinkronkan repositori skill bersama dan meminta pemindaian ulang:1378Contoh ini menyinkronkan repositori skill bersama dan meminta pemindaian ulang:

1356 1379 


1369 Mempertahankan environment variable1392 Mempertahankan environment variable

1370</h4>1393</h4>

1371 1394 

1372Hook SessionStart memiliki akses ke environment variable `CLAUDE_ENV_FILE`, yang menyediakan path file tempat Anda dapat mempertahankan environment variable untuk perintah shell yang dijalankan Claude di kemudian waktu dalam sesi.1395Hook SessionStart memiliki akses ke environment variable `CLAUDE_ENV_FILE`, yang menyediakan path file tempat Anda dapat mempertahankan environment variable untuk perintah shell yang dijalankan Claude nanti dalam sesi.

1373 1396 

1374Untuk menetapkan environment variable satu per satu, tulis pernyataan `export` ke `CLAUDE_ENV_FILE`. Gunakan append (`>>`) untuk mempertahankan variabel yang ditetapkan oleh hook lain:1397Untuk menetapkan environment variable satu per satu, tulis pernyataan `export` ke `CLAUDE_ENV_FILE`. Gunakan append (`>>`) untuk mempertahankan variabel yang ditetapkan oleh hook lain:

1375 1398 


1404exit 01427exit 0

1405```1428```

1406 1429 

1407Setiap perintah Bash menjalankan isi file sebagai kode shell sebelum perintah itu sendiri, sehingga baris di sana dapat menggunakan apa pun yang dievaluasi Bash, seperti referensi `$PATH` dalam `export PATH="$PATH:./node_modules/.bin"`.1430Setiap perintah Bash menjalankan isi file sebagai kode shell sebelum perintah itu sendiri, sehingga baris di dalamnya dapat menggunakan apa pun yang dievaluasi Bash, seperti referensi `$PATH` dalam `export PATH="$PATH:./node_modules/.bin"`.

1408 1431 

1409<a id="persisted-variables-in-powershell-commands" />1432<a id="persisted-variables-in-powershell-commands" />

1410 1433 


1412 Variabel yang dipertahankan dalam perintah PowerShell1435 Variabel yang dipertahankan dalam perintah PowerShell

1413</h5>1436</h5>

1414 1437 

1415Perintah [PowerShell](/docs/id/tools-reference#powershell-tool) juga menerima variabel dari `CLAUDE_ENV_FILE`, di Claude Code v2.1.296 atau yang lebih baru, tetapi PowerShell tidak pernah menjalankan file tersebut. Sebagai gantinya, Claude Code membaca penetapan di dalamnya dan menyalinnya ke environment perintah PowerShell. Hal ini hanya dilakukan ketika setiap baris merupakan salah satu dari berikut, di seluruh yang ditulis oleh setiap hook dalam sesi ini dan skrip apa pun yang Anda [tetapkan sebagai `CLAUDE_ENV_FILE`](/docs/id/env-vars) sebelum peluncuran:1438Perintah [PowerShell](/docs/id/tools-reference#powershell-tool) juga menerima variabel dari `CLAUDE_ENV_FILE`, di Claude Code v2.1.296 atau lebih baru, tetapi PowerShell tidak pernah menjalankan file tersebut. Sebagai gantinya, Claude Code membaca penugasan dari file itu dan menyalinnya ke environment perintah PowerShell. Hal ini hanya dilakukan jika setiap baris merupakan salah satu dari berikut ini, mencakup semua yang ditulis oleh setiap hook dalam sesi ini dan skrip apa pun yang [Anda tetapkan sebagai `CLAUDE_ENV_FILE`](/docs/id/env-vars) sebelum peluncuran:

1416 1439 

1417* Baris kosong atau komentar `#`1440* Baris kosong atau komentar `#`

1418* Satu penetapan di awal baris, ditulis `export NAME=value`, `declare -x NAME=value`, atau `NAME=value`, dengan nilai yang akan digunakan Bash persis seperti yang tertulis, terdiri dari campuran bagian-bagian berikut: teks tanpa tanda kutip yang hanya menggunakan huruf, angka, dan karakter `_ @ % + = : , . / -`, teks dalam tanda kutip tunggal, dan teks dalam tanda kutip ganda di mana setiap `$`, backtick, atau `"` di dalamnya di-escape dengan backslash1441* Satu penugasan di awal baris, ditulis `export NAME=value`, `declare -x NAME=value`, atau `NAME=value`, dengan nilai yang akan digunakan Bash persis seperti yang ditulis, tersusun dari campuran bagian-bagian berikut: teks tanpa tanda kutip yang hanya menggunakan huruf, angka, dan karakter `_ @ % + = : , . / -`, teks dalam tanda kutip tunggal, dan teks dalam tanda kutip ganda yang setiap `$`, backtick, atau `"` di dalamnya di-escape dengan backslash

1419 1442 

1420Jika ada baris dengan jenis lain, seperti `export PATH="$PATH:./node_modules/.bin"` dengan `$PATH` yang tidak di-escape, perintah `source`, atau string `$'...'` yang dicetak oleh `direnv export bash`, perintah PowerShell tidak menerima variabel apa pun, dan `claude --debug` mencatat `Session environment is not all plain assignments`. Perintah Bash tetap menerima semuanya. Di Windows, perintah PowerShell juga tidak menerima variabel yang nilainya mengandung `/` atau `\`, karena Git Bash dan Windows menulis path secara berbeda. Perintah PowerShell yang berjalan dalam [sandbox](/docs/id/sandboxing) tidak menerima variabel apa pun.1443Jika ada baris dari jenis lain, seperti `export PATH="$PATH:./node_modules/.bin"` dengan `$PATH` yang tidak di-escape, perintah `source`, atau string `$'...'` yang dicetak oleh `direnv export bash`, perintah PowerShell tidak menerima satu pun variabel, dan `claude --debug` mencatat `Session environment is not all plain assignments`. Perintah Bash tetap menerima semuanya. Di Windows, perintah PowerShell juga tidak menerima variabel yang nilainya mengandung `/` atau `\`, karena Git Bash dan Windows menulis path secara berbeda. Perintah PowerShell yang berjalan dalam [sandbox](/docs/id/sandboxing) tidak menerima satu pun variabel.

1421 1444 

1422<Note>1445<Note>

1423 `CLAUDE_ENV_FILE` tersedia untuk hook SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged), dan [FileChanged](#filechanged). Event hook lain tidak memiliki akses ke variabel ini, begitu pula hook yang berjalan di PowerShell, baik melalui [`"shell": "powershell"`](#command-hook-fields) maupun secara default di Windows tanpa Git Bash.1446 `CLAUDE_ENV_FILE` tersedia untuk hook SessionStart, [Setup](#setup), [CwdChanged](#cwdchanged), dan [FileChanged](#filechanged). Event hook lainnya tidak memiliki akses ke variabel ini, demikian pula hook yang berjalan di PowerShell, baik melalui [`"shell": "powershell"`](#command-hook-fields) maupun secara default di Windows tanpa Git Bash.

1424</Note>1447</Note>

1425 1448 

1426<h3 id="setup">1449<h3 id="setup">

1427 Setup1450 Setup

1428</h3>1451</h3>

1429 1452 

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

1431 1454 

1432Nilai matcher berkaitan dengan flag CLI yang memicu hook:1455Nilai matcher berkaitan dengan flag CLI yang memicu hook:

1433 1456 


1438 1461 

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

1440 1463 

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

1442 1465 

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

1444 1467 

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

1446 1469 

1447<h4 id="setup-input">1470<h4 id="setup-input">

1448 Input Setup1471 Input Setup

1449</h4>1472</h4>

1450 1473 

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

1452 1475 

1453```json theme={null}1476```json theme={null}

1454{1477{


1464 Kontrol keputusan Setup1487 Kontrol keputusan Setup

1465</h4>1488</h4>

1466 1489 

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

1468 1491 

1469Hook 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 [field hook tool MCP](#mcp-tool-hook-fields).1492Hook 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).

1470 1493 

1471<h3 id="instructionsloaded">1494<h3 id="instructionsloaded">

1472 InstructionsLoaded1495 InstructionsLoaded

1473</h3>1496</h3>

1474 1497 

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

1476 1499 

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

1478 1501 

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

1480 1503 

1481<h4 id="instructionsloaded-input">1504<h4 id="instructionsloaded-input">

1482 Input InstructionsLoaded1505 Input InstructionsLoaded

1483</h4>1506</h4>

1484 1507 

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

1486 1509 

1487| Field | Deskripsi |1510| Kolom | Deskripsi |

1488| :- | :- |1511| :- | :- |

1489| `file_path` | Path absolut ke file instruksi yang dimuat |1512| `file_path` | Path absolut ke file instruksi yang dimuat |

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


1509 Kontrol keputusan InstructionsLoaded1532 Kontrol keputusan InstructionsLoaded

1510</h4>1533</h4>

1511 1534 

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

1513 1536 

1514<h3 id="userpromptsubmit">1537<h3 id="userpromptsubmit">

1515 UserPromptSubmit1538 UserPromptSubmit

1516</h3>1539</h3>

1517 1540 

1518Berjalan saat prompt dikirimkan, sebelum Claude memprosesnya. Ini memungkinkan Anda1541Berjalan saat prompt dikirim, sebelum Claude memprosesnya. Ini memungkinkan Anda

1519menambahkan konteks tambahan berdasarkan prompt/percakapan, memvalidasi prompt, atau1542menambahkan konteks tambahan berdasarkan prompt/percakapan, memvalidasi prompt, atau

1520memblokir jenis prompt tertentu.1543memblokir jenis prompt tertentu.

1521 1544 


1525* [Subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang melapor kembali ke sesi yang memulainya1548* [Subagent latar belakang](/docs/id/sub-agents#run-subagents-in-foreground-or-background) yang melapor kembali ke sesi yang memulainya

1526* [Pesan yang dikirim sesi lain](/docs/id/cross-session-messaging) ke percakapan utama Anda1549* [Pesan yang dikirim sesi lain](/docs/id/cross-session-messaging) ke percakapan utama Anda

1527 1550 

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

1529 1552 

1530Selain hook perintah yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), hook perintah, HTTP, atau tool MCP `UserPromptSubmit` yang mencapai timeout-nya akan dibatalkan dan output-nya, termasuk `additionalContext` apa pun, dibuang. Prompt tetap sampai ke Claude tanpa konteks tersebut. Untuk memblokir prompt sebagai gantinya, tetapkan [`onFailure: "block"`](#block-the-action-when-a-hook-fails) pada hook perintah atau HTTP. Transkrip menampilkan pemberitahuan yang menyebutkan hook, timeout yang dipicu, dan bahwa output telah dibuang.1553Selain hook perintah yang Anda jalankan dengan [`async: true`](#run-hooks-in-the-background), hook perintah, HTTP, atau tool MCP `UserPromptSubmit` yang mencapai timeout-nya akan dibatalkan dan output-nya, termasuk `additionalContext` apa pun, dibuang. Prompt tetap sampai ke Claude tanpa konteks tersebut. Untuk memblokir prompt sebagai gantinya, tetapkan [`onFailure: "block"`](#block-the-action-when-a-hook-fails) pada hook perintah atau HTTP. Transkrip menampilkan pemberitahuan yang menyebutkan hook, timeout yang terpicu, dan bahwa output telah dibuang.

1531 1554 

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

1533 1556 

1534<h4 id="userpromptsubmit-input">1557<h4 id="userpromptsubmit-input">

1535 Input UserPromptSubmit1558 Input UserPromptSubmit

1536</h4>1559</h4>

1537 1560 

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

1539 1562 

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

1541 1564 

1542```json theme={null}1565```json theme={null}

1543{1566{


1554 Kontrol keputusan UserPromptSubmit1577 Kontrol keputusan UserPromptSubmit

1555</h4>1578</h4>

1556 1579 

1557Hook `UserPromptSubmit` dapat mengontrol apakah prompt yang dikirimkan diproses dan menambahkan konteks. Semua [field output JSON](#json-output) tersedia.1580Hook `UserPromptSubmit` dapat mengontrol apakah prompt yang dikirim diproses dan dapat menambahkan konteks. Semua [kolom output JSON](#json-output) tersedia.

1558 1581 

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

1560 1583 

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

1562* **JSON dengan `additionalContext`**: gunakan format JSON di bawah ini untuk kontrol yang lebih besar. Field `additionalContext` ditambahkan sebagai konteks1585* **JSON dengan `additionalContext`**: gunakan format JSON di bawah ini untuk kontrol yang lebih besar. Kolom `additionalContext` ditambahkan sebagai konteks

1563 1586 

1564Tidak satu pun saluran ini menghasilkan entri transkrip yang terlihat. Stdout biasa dan nilai `additionalContext` masing-masing disisipkan sebagai system reminder yang diawali dengan nama hook; Claude membaca keduanya. Untuk memastikan pengiriman, periksa [log debug](#debug-hooks).1587Tidak satu pun dari kedua saluran ini menghasilkan entri transkrip yang terlihat. Stdout biasa dan nilai `additionalContext` masing-masing disisipkan sebagai system reminder yang diawali dengan nama hook; Claude membaca keduanya. Untuk memastikan pengiriman, periksa [debug log](#debug-hooks).

1565 1588 

1566Untuk memblokir prompt, kembalikan objek JSON dengan `decision` bernilai `"block"`:1589Untuk memblokir prompt, kembalikan objek JSON dengan `decision` bernilai `"block"`:

1567 1590 

1568| Field | Deskripsi |1591| Kolom | Deskripsi |

1569| :- | :- |1592| :- | :- |

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

1571| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"`. Tidak ditambahkan ke konteks |1594| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"`. Tidak ditambahkan ke konteks |

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

1573| `sessionTitle` | Menetapkan judul sesi. Gunakan untuk memberi nama sesi secara otomatis berdasarkan konten prompt |1596| `sessionTitle` | Menetapkan judul sesi. Gunakan untuk memberi nama sesi secara otomatis berdasarkan isi prompt |

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

1575 1598 

1576Hook yang memblokir dengan keluar menggunakan 2 diarahkan dengan cara yang sama seperti `reason`: pesan pemblokiran menampilkan teks stderr kepada pengguna, dan teks tersebut tidak ditambahkan ke konteks.1599Hook yang memblokir dengan keluar menggunakan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan pemblokiran menampilkan teks stderr kepada pengguna, dan teks tersebut tidak ditambahkan ke konteks.

1577 1600 

1578```json theme={null}1601```json theme={null}

1579{1602{


1589```1612```

1590 1613 

1591<h4 id="what-a-blocked-prompt-leaves-behind">1614<h4 id="what-a-blocked-prompt-leaves-behind">

1592 Apa yang ditinggalkan prompt yang diblokir1615 Jejak yang ditinggalkan prompt yang diblokir

1593</h4>1616</h4>

1594 1617 

1595Prompt yang diblokir tidak pernah sampai ke Claude, tetapi teksnya tidak dihapus di semua tempat. Secara default, pesan pemblokiran yang ditampilkan kepada pengguna diakhiri dengan `Original prompt:` diikuti teks yang dikirimkan, dan Claude Code menulis pesan tersebut ke file transkrip sesi di disk. Untuk menghilangkan teks dari pesan, cetak JSON dengan `"suppressOriginalPrompt": true` di dalam `hookSpecificOutput`. Ini berfungsi baik saat hook memblokir dengan `decision: "block"` maupun dengan keluar menggunakan 2.1618Prompt yang diblokir tidak pernah sampai ke Claude, tetapi teksnya tidak dihapus dari semua tempat. Secara default, pesan pemblokiran yang ditampilkan kepada pengguna diakhiri dengan `Original prompt:` diikuti teks yang dikirim, dan Claude Code menulis pesan tersebut ke file transkrip sesi di disk. Untuk menghilangkan teks dari pesan, cetak JSON dengan `"suppressOriginalPrompt": true` di dalam `hookSpecificOutput`. Ini berfungsi baik saat hook memblokir dengan `decision: "block"` maupun dengan keluar menggunakan kode 2.

1596 1619 

1597`suppressOriginalPrompt` hanya mengubah pesan pemblokiran. Teks yang dikirimkan tetap dapat muncul di file lokal seperti transkrip sesi dan riwayat prompt Anda, jadi hook pemblokir bukan cara untuk mencegah rahasia tersimpan di disk. Untuk membatasi atau menghapus file tersebut, lihat [Penyimpanan plaintext](/docs/id/claude-directory#plaintext-storage) dan [Menghapus data lokal](/docs/id/claude-directory#clear-local-data).1620`suppressOriginalPrompt` hanya mengubah pesan pemblokiran. Teks yang dikirim tetap dapat muncul di file lokal seperti transkrip sesi dan riwayat prompt Anda, sehingga hook pemblokiran bukanlah cara untuk menjaga rahasia agar tidak tersimpan di disk. Untuk membatasi atau menghapus file-file tersebut, lihat [Penyimpanan plaintext](/docs/id/claude-directory#plaintext-storage) dan [Menghapus data lokal](/docs/id/claude-directory#clear-local-data).

1598 1621 

1599<h3 id="userpromptexpansion">1622<h3 id="userpromptexpansion">

1600 UserPromptExpansion1623 UserPromptExpansion

1601</h3>1624</h3>

1602 1625 

1603Berjalan saat perintah yang diketik pengguna diperluas menjadi prompt sebelum sampai ke Claude. Gunakan ini untuk memblokir perintah tertentu dari pemanggilan langsung, menyisipkan konteks untuk skill tertentu, atau mencatat perintah mana yang dipanggil pengguna. Misalnya, hook yang cocok dengan `deploy` dapat memblokir `/deploy` kecuali ada file persetujuan, atau hook yang cocok dengan skill review dapat menambahkan daftar periksa review tim sebagai `additionalContext`.1626Berjalan saat perintah yang diketik pengguna diperluas menjadi prompt sebelum sampai ke Claude. Gunakan ini untuk memblokir perintah tertentu agar tidak dipanggil secara langsung, menyisipkan konteks untuk skill tertentu, atau mencatat perintah mana yang dipanggil pengguna. Misalnya, hook yang cocok dengan `deploy` dapat memblokir `/deploy` kecuali ada file persetujuan, atau hook yang cocok dengan skill review dapat menambahkan daftar periksa review tim sebagai `additionalContext`.

1604 1627 

1605Event ini mencakup jalur yang tidak dicakup `PreToolUse`: hook `PreToolUse` yang cocok dengan tool `Skill` hanya dipicu saat Claude memanggil tool tersebut, tetapi mengetik `/skillname` secara langsung melewati `PreToolUse`. `UserPromptExpansion` dipicu pada jalur langsung tersebut.1628Event ini mencakup jalur yang tidak dicakup `PreToolUse`: hook `PreToolUse` yang cocok dengan tool `Skill` hanya dipicu saat Claude memanggil tool tersebut, tetapi mengetik `/skillname` secara langsung melewati `PreToolUse`. `UserPromptExpansion` dipicu pada jalur langsung tersebut.

1606 1629 

1607Dicocokkan pada `command_name`. Biarkan matcher kosong agar dipicu pada setiap perintah berjenis prompt.1630Dicocokkan pada `command_name`. Biarkan matcher kosong agar dipicu pada setiap perintah bertipe prompt.

1608 1631 

1609<h4 id="userpromptexpansion-input">1632<h4 id="userpromptexpansion-input">

1610 Input UserPromptExpansion1633 Input UserPromptExpansion

1611</h4>1634</h4>

1612 1635 

1613Selain [field input umum](#common-input-fields), hook UserPromptExpansion menerima `expansion_type`, `command_name`, `command_args`, `command_source`, dan string `prompt` asli. Field `expansion_type` bernilai `slash_command` untuk skill dan perintah kustom, atau `mcp_prompt` untuk prompt server MCP.1636Selain [kolom input umum](#common-input-fields), hook UserPromptExpansion menerima `expansion_type`, `command_name`, `command_args`, `command_source`, dan string `prompt` asli. Kolom `expansion_type` bernilai `slash_command` untuk skill dan perintah kustom, atau `mcp_prompt` untuk prompt server MCP.

1614 1637 

1615```json theme={null}1638```json theme={null}

1616{1639{


1631 Kontrol keputusan UserPromptExpansion1654 Kontrol keputusan UserPromptExpansion

1632</h4>1655</h4>

1633 1656 

1634Hook `UserPromptExpansion` dapat memblokir perluasan atau menambahkan konteks. Semua [field output JSON](#json-output) tersedia.1657Hook `UserPromptExpansion` dapat memblokir perluasan atau menambahkan konteks. Semua [kolom output JSON](#json-output) tersedia.

1635 1658 

1636| Field | Deskripsi |1659| Kolom | Deskripsi |

1637| :- | :- |1660| :- | :- |

1638| `decision` | `"block"` mencegah perintah diperluas. Hilangkan untuk membiarkannya berlanjut |1661| `decision` | `"block"` mencegah perintah diperluas. Hilangkan untuk membiarkannya berlanjut |

1639| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"` |1662| `reason` | Ditampilkan kepada pengguna saat `decision` bernilai `"block"` |

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

1641 1664 

1642Hook yang memblokir dengan keluar menggunakan 2 diarahkan dengan cara yang sama seperti `reason`: pesan pemblokiran menampilkan teks stderr kepada pengguna.1665Hook yang memblokir dengan keluar menggunakan kode 2 diarahkan dengan cara yang sama seperti `reason`: pesan pemblokiran menampilkan teks stderr kepada pengguna.

1643 1666 

1644```json theme={null}1667```json theme={null}

1645{1668{


1656 MessageDisplay1679 MessageDisplay

1657</h3>1680</h3>

1658 1681 

1659Berjalan saat pesan asisten di-streaming ke layar. Claude Code menampilkan pesan secara bertahap: setiap kali sekelompok baris yang baru selesai siap dirender, hook berjalan sekali dengan baris-baris tersebut dan Claude Code merender teks pengganti dari hook di tempatnya. Pesan yang panjang menghasilkan beberapa panggilan; pesan yang pendek mungkin hanya menghasilkan satu.1682Berjalan saat pesan asisten di-stream ke layar. Claude Code menampilkan pesan secara bertahap: setiap kali sekelompok baris yang baru selesai siap dirender, hook berjalan sekali dengan baris-baris tersebut dan Claude Code merender teks pengganti dari hook di tempatnya. Pesan yang panjang menghasilkan beberapa panggilan; pesan yang pendek mungkin hanya menghasilkan satu.

1660 1683 

1661Gunakan MessageDisplay untuk:1684Gunakan MessageDisplay untuk:

1662 1685 

1663* menghapus markdown untuk tampilan minimal1686* menghapus markdown untuk tampilan minimal

1664* mentransformasi teks yang ditampilkan aplikasi Agent SDK kepada penggunanya1687* mengubah teks yang ditampilkan aplikasi Agent SDK kepada penggunanya

1665* menyamarkan kunci API atau hostname internal dari respons Claude1688* menyamarkan kunci API atau hostname internal dari respons Claude

1666 1689 

1667Claude Code menahan setiap kelompok hingga hook Anda kembali, jadi jaga agar hook tetap cepat. Jika hook gagal atau mencapai timeout, Claude Code menampilkan teks asli. Timeout default untuk event ini adalah 10 detik; jika hook Anda memerlukan waktu lebih lama, tetapkan field `timeout` dalam entri hook.1690Claude Code menahan setiap kelompok hingga hook Anda kembali, jadi jaga agar hook tetap cepat. Jika hook gagal atau mengalami timeout, Claude Code menampilkan teks asli. Timeout default untuk event ini adalah 10 detik; jika hook Anda memerlukan lebih banyak waktu, tetapkan kolom `timeout` dalam entri hook.

1668 1691 

1669MessageDisplay hanya untuk tampilan: teks pengganti hanya mengubah apa yang dirender di layar. Transkrip dan apa yang dilihat Claude tetap menyimpan teks asli, sehingga Claude tidak pernah melihat penggantinya, dan mode verbose menampilkan teks asli. Hook hanya menerima teks pesan asisten, sehingga hasil tool dan teks yang Anda ketik dirender tanpa perubahan.1692MessageDisplay hanya untuk tampilan: teks pengganti hanya mengubah apa yang dirender di layar. Transkrip dan apa yang dilihat Claude tetap menggunakan teks asli, sehingga Claude tidak pernah melihat teks pengganti, dan mode verbose menampilkan teks asli. Hook hanya menerima teks pesan asisten, sehingga hasil tool dan teks yang Anda ketik dirender tanpa perubahan.

1670 1693 

1671MessageDisplay tidak mendukung matcher dan dipicu untuk setiap pesan asisten yang men-streaming teks; pesan tanpa teks, seperti respons yang hanya berisi panggilan tool, tidak memicunya.1694MessageDisplay tidak mendukung matcher dan dipicu untuk setiap pesan asisten yang men-stream teks; pesan tanpa teks, seperti respons yang hanya berisi panggilan tool, tidak memicunya.

1672 1695 

1673Dalam run non-interaktif, termasuk kueri Agent SDK dan `claude -p`, MessageDisplay berjalan sekali per pesan asisten, bukan sekali per kelompok baris. Panggilan tunggal tersebut tiba setelah pesan selesai dan membawa teks pesan lengkap: `index` bernilai `0`, `final` bernilai `true`, dan `delta` berisi seluruh pesan. Hook yang mengumpulkan teks `delta` untuk setiap pesan menerima total teks yang sama di kedua mode.1696Dalam eksekusi non-interaktif, termasuk kueri Agent SDK dan `claude -p`, MessageDisplay berjalan sekali per pesan asisten alih-alih sekali per kelompok baris. Panggilan tunggal tersebut tiba setelah pesan selesai dan membawa teks pesan lengkap: `index` bernilai `0`, `final` bernilai `true`, dan `delta` berisi seluruh pesan. Hook yang mengumpulkan teks `delta` untuk setiap pesan menerima total teks yang sama di kedua mode.

1674 1697 

1675<h4 id="messagedisplay-input">1698<h4 id="messagedisplay-input">

1676 Input MessageDisplay1699 Input MessageDisplay

1677</h4>1700</h4>

1678 1701 

1679Selain [field input umum](#common-input-fields), hook MessageDisplay menerima pengenal untuk giliran dan pesan, posisi panggilan ini dalam pesan, dan teks baru di `delta`. Batas kelompok bergantung pada cara teks di-streaming, jadi gunakan `index` dan `final` untuk melacak kemajuan melalui pesan alih-alih mengharapkan baris dikelompokkan dengan cara tertentu.1702Selain [kolom input umum](#common-input-fields), hook MessageDisplay menerima pengidentifikasi untuk giliran dan pesan, posisi panggilan ini di dalam pesan, dan teks baru dalam `delta`. Batas kelompok bergantung pada cara teks di-stream, jadi gunakan `index` dan `final` untuk melacak kemajuan melalui pesan alih-alih mengharapkan baris dikelompokkan dengan cara tertentu.

1680 1703 

1681| Field | Deskripsi |1704| Kolom | Deskripsi |

1682| :- | :- |1705| :- | :- |

1683| `turn_id` | UUID giliran saat ini |1706| `turn_id` | UUID giliran saat ini |

1684| `message_id` | UUID pesan asisten yang sedang ditampilkan. Stabil di setiap kelompok dari pesan yang sama. Ini bukan id `msg_…` dari API, sehingga tidak dapat dikorelasikan dengan id pesan transkrip |1707| `message_id` | UUID pesan asisten yang sedang ditampilkan. Tetap sama di setiap kelompok dari pesan yang sama. Ini bukan id API `msg_…`, sehingga tidak dapat dikorelasikan dengan id pesan transkrip |

1685| `index` | Indeks berbasis nol dari kelompok ini dalam pesan |1708| `index` | Indeks berbasis nol dari kelompok ini di dalam pesan |

1686| `final` | `true` pada kelompok terakhir pesan. Setiap pesan memiliki tepat satu kelompok final |1709| `final` | `true` pada kelompok terakhir pesan. Setiap pesan memiliki tepat satu kelompok final |

1687| `delta` | Baris yang baru selesai sejak kelompok sebelumnya, termasuk baris baru penutupnya. Selalu berupa baris utuh, kecuali kelompok final yang dapat berakhir di tengah baris. Dalam run interaktif, delta kelompok final kosong saat pesan berakhir dengan baris baru, jadi perlakukan `final`, bukan delta yang tidak kosong, sebagai sinyal akhir pesan. Dalam run Agent SDK dan `claude -p`, panggilan tunggal membawa seluruh pesan |1710| `delta` | Baris-baris yang baru selesai sejak kelompok sebelumnya, termasuk newline penutupnya. Selalu berupa baris utuh, kecuali kelompok final yang dapat berakhir di tengah baris. Dalam eksekusi interaktif, delta kelompok final kosong jika pesan berakhir dengan newline, jadi perlakukan `final`, bukan delta yang tidak kosong, sebagai sinyal akhir pesan. Dalam eksekusi Agent SDK dan `claude -p`, panggilan tunggal membawa seluruh pesan |

1688 1711 

1689```json theme={null}1712```json theme={null}

1690{1713{


1704 Output MessageDisplay1727 Output MessageDisplay

1705</h4>1728</h4>

1706 1729 

1707Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook MessageDisplay dapat mengembalikan `displayContent` untuk menggantikan delta di layar:1730Selain [kolom output JSON](#json-output) yang tersedia untuk semua hook, hook MessageDisplay dapat mengembalikan `displayContent` untuk menggantikan delta di layar:

1708 1731 

1709| Field | Deskripsi |1732| Kolom | Deskripsi |

1710| :- | :- |1733| :- | :- |

1711| `displayContent` | Teks yang ditampilkan sebagai pengganti delta. Hilangkan untuk menampilkan teks asli |1734| `displayContent` | Teks yang ditampilkan sebagai pengganti delta. Hilangkan untuk menampilkan teks asli |

1712 1735 


1788 </Tab>1811 </Tab>

1789</Tabs>1812</Tabs>

1790 1813 

1791Kelompok tanpa markdown diteruskan tanpa perubahan. Jika skrip gagal, misalnya karena `jq` tidak ada, Claude Code menampilkan teks asli dan mencatat kegagalan hanya di [output debug](#debug-hooks), bukan di sesi.1814Kelompok tanpa markdown diteruskan tanpa perubahan. Jika skrip gagal, misalnya karena `jq` tidak ada, Claude Code menampilkan teks asli dan mencatat kegagalan tersebut hanya di [output debug](#debug-hooks), bukan di dalam sesi.

1792 1815 

1793<h3 id="pretooluse">1816<h3 id="pretooluse">

1794 PreToolUse1817 PreToolUse

1795</h3>1818</h3>

1796 1819 

1797Berjalan setelah Claude membuat parameter tool dan sebelum memproses panggilan tool. Dicocokkan pada nama tool apa pun kecuali `EndConversation`: tool bawaan seperti `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion`, dan `ExitPlanMode`, serta [nama tool MCP](#match-mcp-tools) apa pun.1820Berjalan setelah Claude membuat parameter tool dan sebelum memproses panggilan tool. Cocok dengan nama tool apa pun kecuali `EndConversation`: tool bawaan seperti `Bash`, `PowerShell`, `Edit`, `Write`, `Read`, `Glob`, `Grep`, `Agent`, `Workflow`, `WebFetch`, `WebSearch`, `AskUserQuestion`, dan `ExitPlanMode`, serta [nama tool MCP](#match-mcp-tools) apa pun.

1798 1821 

1799Untuk menjalankan hook saat file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged) alih-alih mencocokkan tool pengedit file berdasarkan nama. Tidak seperti PreToolUse, Claude Code menjalankan hook FileChanged setelah perubahan, dan hook tersebut tidak memiliki kontrol keputusan, sehingga tidak dapat memblokir penulisan.1822Untuk menjalankan hook saat file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged) alih-alih mencocokkan tool pengeditan file berdasarkan nama. Tidak seperti PreToolUse, Claude Code menjalankan hook FileChanged setelah perubahan terjadi, dan hook tersebut tidak memiliki kontrol keputusan, sehingga tidak dapat memblokir penulisan.

1800 1823 

1801<Warning>1824<Warning>

1802 PreToolUse hanya berjalan saat Claude memanggil tool. File yang Anda [referensikan dengan `@` dalam prompt](/docs/id/common-workflows#reference-files-and-directories) ditambahkan tanpa panggilan tool apa pun: Claude Code menyisipkan kontennya saat menyusun prompt, sehingga tidak ada hook PreToolUse yang dipicu untuk file tersebut, termasuk hook yang cocok dengan `Read`. Untuk memblokir path tertentu dari referensi `@`, gunakan [aturan deny `Read`](/docs/id/permissions#read-and-edit) sebagai gantinya.1825 PreToolUse hanya berjalan saat Claude memanggil tool. Secara default, file yang Anda [rujuk dengan `@` di prompt Anda](/docs/id/common-workflows#reference-files-and-directories) ditambahkan tanpa panggilan tool apa pun. Claude Code menyisipkan isinya saat membangun prompt, sehingga tidak ada hook PreToolUse yang dipicu untuk file tersebut, termasuk hook yang cocok dengan `Read`. PreToolUse juga tidak dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).

1803 1826 

1804 PreToolUse juga tidak dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).1827 Anda dapat memblokir path tertentu dari referensi `@`, atau mematikan penyisipan:

1828 

1829 * **Memblokir path tertentu**: tambahkan [aturan deny `Read`](/docs/id/permissions#read-and-edit) untuk path tersebut

1830 * **Mematikan penyisipan**: tetapkan [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](/docs/id/env-vars#variables) di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Claude kemudian mendapatkan path yang disebutkan beserta catatan untuk membacanya menggunakan tool file-nya. Jika Claude melakukannya, hook PreToolUse Anda yang cocok akan berjalan. Variabel ini memerlukan Claude Code v2.1.299 atau lebih baru, dan Claude Code mengabaikannya di pengaturan proyek dan lokal.

1805</Warning>1831</Warning>

1806 1832 

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

1808 1834 

1809[Hook callback Agent SDK](/docs/id/agent-sdk/hooks) pada `PreToolUse` yang melebihi timeout-nya memblokir panggilan tool, dan Claude menerima hasil error yang menyebutkan timeout tersebut. Penolakan eksplisit yang dikembalikan oleh hook lain tetap diutamakan.1835[Hook callback Agent SDK](/docs/id/agent-sdk/hooks) pada `PreToolUse` yang melampaui timeout-nya akan memblokir panggilan tool, dan Claude menerima hasil error yang menyebutkan timeout tersebut. Penolakan eksplisit yang dikembalikan oleh hook lain tetap diutamakan.

1810 1836 

1811<h4 id="pretooluse-input">1837<h4 id="pretooluse-input">

1812 Input PreToolUse1838 Input PreToolUse

1813</h4>1839</h4>

1814 1840 

1815Selain [field input umum](#common-input-fields), hook PreToolUse menerima `tool_name`, `tool_input`, dan `tool_use_id`.1841Selain [kolom input umum](#common-input-fields), hook PreToolUse menerima `tool_name`, `tool_input`, dan `tool_use_id`.

1816 1842 

1817Untuk [tool MCP](#match-mcp-tools), input juga membawa `mcp_server`, sebuah objek dengan `name` server dan `source` yang menyatakan dari mana definisi server berasal. Nilai `source` mencakup `plugin`, `sdk`, dan cakupan konfigurasi seperti `user` dan `project`. [`McpServerProvenance`](/docs/id/agent-sdk/typescript#mcpserverprovenance) dalam referensi Agent SDK mencantumkan semuanya dan menjelaskan cara memperlakukan nilai yang tidak Anda kenali. Dasarkan keputusan kepercayaan pada `source`, bukan pada `name` atau prefiks nama tool `mcp__<server>__`. Field `mcp_server` memerlukan Claude Code v2.1.274 atau yang lebih baru.1843Untuk [tool MCP](#match-mcp-tools), input juga membawa `mcp_server`, sebuah objek dengan `name` server dan `source` yang menyatakan asal definisi server tersebut. Nilai `source` mencakup `plugin`, `sdk`, dan cakupan konfigurasi seperti `user` dan `project`. [`McpServerProvenance`](/docs/id/agent-sdk/typescript#mcpserverprovenance) dalam referensi Agent SDK mencantumkan semuanya dan menjelaskan cara memperlakukan nilai yang tidak Anda kenali. Dasarkan keputusan kepercayaan pada `source`, bukan pada `name` atau prefiks nama tool `mcp__<server>__`. Kolom `mcp_server` memerlukan Claude Code v2.1.274 atau lebih baru.

1818 1844 

1819Untuk tool file `Write`, `Edit`, dan `Read`, `tool_input.file_path` selalu absolut:1845Untuk tool file `Write`, `Edit`, dan `Read`, `tool_input.file_path` selalu absolut:

1820 1846 

1821* Claude Code memperluas `~` dan path relatif sebelum hook berjalan, sehingga hook yang mencocokkan path tidak dapat dilewati melalui `~` atau penulisan relatif dari path yang sama1847* Claude Code memperluas `~` dan path relatif sebelum hook berjalan, sehingga hook yang mencocokkan path tidak dapat dilewati melalui `~` atau penulisan relatif dari path yang sama

1822* Di Windows, path tiba dengan pemisah backslash, bahkan saat hook Anda berjalan di Git Bash tempat `$PWD` terlihat seperti `/c/project`1848* Di Windows, path tiba dengan pemisah backslash, bahkan saat hook Anda berjalan di Git Bash tempat `$PWD` terlihat seperti `/c/project`

1823* Perbandingan yang ditulis dengan garis miring maju, seperti pemeriksaan `/src/`, tidak pernah cocok dengan path backslash, dan panggilan tool berlanjut seolah-olah hook tidak memiliki apa pun untuk diblokir1849* Perbandingan yang ditulis dengan garis miring, seperti pemeriksaan `/src/`, tidak pernah cocok dengan path backslash, dan panggilan tool berlanjut seolah-olah hook tidak menemukan apa pun untuk diblokir

1824* Normalisasikan pemisah sebelum membandingkan: `FILE_PATH="${FILE_PATH//\\//}"` di Bash, atau `file_path.replace("\\", "/")` di Python, lalu cocokkan segmen path seperti `/src/` alih-alih menjangkar dengan `^`, karena path bersifat absolut1850* Normalisasikan pemisah sebelum membandingkan: `FILE_PATH="${FILE_PATH//\\//}"` di Bash, atau `file_path.replace("\\", "/")` di Python, lalu cocokkan segmen path seperti `/src/` alih-alih menambatkan dengan `^`, karena path-nya absolut

1825 1851 

1826Panggilan `Write` di Windows mengirimkan:1852Panggilan `Write` di Windows mengirimkan:

1827 1853 


1837}1863}

1838```1864```

1839 1865 

1840Field `tool_input` bergantung pada tool:1866Kolom `tool_input` bergantung pada tool:

1841 1867 

1842<a id="bash" />1868<a id="bash" />

1843 1869 


1847 1873 

1848Menjalankan perintah shell.1874Menjalankan perintah shell.

1849 1875 

1850| Field | Tipe | Contoh | Deskripsi |1876| Kolom | Tipe | Contoh | Deskripsi |

1851| :- | :- | :- | :- |1877| :- | :- | :- | :- |

1852| `command` | string | `"npm test"` | Perintah shell yang akan dijalankan |1878| `command` | string | `"npm test"` | Perintah shell yang akan dijalankan |

1853| `description` | string | `"Run test suite"` | Deskripsi opsional tentang apa yang dilakukan perintah |1879| `description` | string | `"Run test suite"` | Deskripsi opsional tentang apa yang dilakukan perintah |

1854| `timeout` | number | `120000` | Timeout opsional dalam milidetik. Nilai di atas [maksimum](/docs/id/tools-reference#bash-tool-behavior) dikurangi menjadi maksimum alih-alih ditolak |1880| `timeout` | number | `120000` | Timeout opsional dalam milidetik. Nilai di atas [batas maksimum](/docs/id/tools-reference#bash-tool-behavior) dikurangi ke batas maksimum alih-alih ditolak |

1855| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |1881| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |

1856 1882 

1857Saat perintah Bash mengubah file dalam repositori Git, Claude Code dapat merekam apa yang berubah. Claude Code merekam perubahan di setiap mode izin saat pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled) mengaktifkan perekaman; entri pengaturan tersebut menjelaskan file mana yang dapat menetapkannya. Jika tidak, Claude Code merekamnya hanya dalam auto mode dan mode `bypassPermissions`, dan hanya saat Claude Code mengarahkan Claude untuk mengedit file melalui Bash. Tetapkan `bashEditDiffEnabled` ke `false` untuk mematikan perekaman. Perintah latar belakang dan perintah read-only tidak membawa diff.1883Saat perintah Bash mengubah file di repositori Git, Claude Code dapat mencatat apa yang berubah. Claude Code mencatat perubahan di setiap mode izin saat pengaturan [`bashEditDiffEnabled`](/docs/id/settings-reference#basheditdiffenabled) mengaktifkan pencatatan; entri pengaturan tersebut menjelaskan file mana yang dapat menetapkannya. Jika tidak, Claude Code hanya mencatatnya di auto mode dan mode `bypassPermissions`, dan hanya saat Claude Code mengarahkan Claude untuk mengedit file melalui Bash. Tetapkan `bashEditDiffEnabled` ke `false` untuk mematikan pencatatan. Perintah latar belakang dan perintah read-only tidak membawa diff.

1858 1884 

1859[Hook PostToolUse](#posttooluse) Anda kemudian menerima file yang berubah di `tool_response.bashEditDiff`. Daftar tersebut mencakup apa yang berubah di bawah repositori saat perintah berjalan. File yang diabaikan Git dan file di submodule tidak dicantumkan. Memerlukan Claude Code v2.1.269 atau yang lebih baru.1885[Hook PostToolUse](#posttooluse) Anda kemudian menerima file yang berubah dalam `tool_response.bashEditDiff`. Daftar tersebut mencakup apa yang berubah di dalam repositori selama perintah berjalan. File yang diabaikan Git dan file di submodule tidak dicantumkan. Memerlukan Claude Code v2.1.269 atau lebih baru.

1860 1886 

1861<Note>1887<Note>

1862 Daftar ini bersifat best effort dan dalam beta publik. Claude Code dapat melewatkan perubahan, menyertakan file yang diubah proses lain pada saat yang sama, atau berhenti pada batas ukurannya. Bentuk field dapat berubah. Gunakan daftar ini untuk menemukan apa yang perlu ditinjau, bukan untuk menegakkan kebijakan.1888 Daftar ini bersifat upaya terbaik dan dalam beta publik. Claude Code dapat melewatkan perubahan, menyertakan file yang diubah oleh proses lain pada saat yang sama, atau berhenti pada batas ukurannya. Bentuk kolom dapat berubah. Gunakan daftar ini untuk menemukan apa yang perlu ditinjau, bukan untuk menegakkan kebijakan.

1863</Note>1889</Note>

1864 1890 

1865`changedFiles` dan `files` mencantumkan apa yang diubah perintah; field lainnya menyatakan seberapa lengkap dan seberapa andal daftar tersebut.1891`changedFiles` dan `files` mencantumkan apa yang diubah oleh perintah; kolom lainnya menyatakan seberapa lengkap dan seberapa andal daftar tersebut.

1866 1892 

1867| Field | Tipe | Contoh | Deskripsi |1893| Kolom | Tipe | Contoh | Deskripsi |

1868| :- | :- | :- | :- |1894| :- | :- | :- | :- |

1869| `changedFiles` | array | `["/path/to/src/app.ts"]` | Path absolut file yang diubah perintah, paling banyak 200. Ada setiap kali `files` berisi diff atau `moreFiles` di atas nol |1895| `changedFiles` | array | `["/path/to/src/app.ts"]` | Path absolut dari file yang diubah perintah, paling banyak 200. Ada setiap kali `files` berisi diff atau `moreFiles` di atas nol |

1870| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diff hingga 5 file yang berubah, untuk ditampilkan. `created` atau `deleted` bernilai `true` untuk file yang ditambahkan atau dihapus oleh perintah |1896| `files` | array | `[{"filePath": "/path/to/src/app.ts", "hunks": [...]}]` | Diff dari hingga 5 file yang berubah, untuk ditampilkan. `created` atau `deleted` bernilai `true` untuk file yang ditambahkan atau dihapus perintah |

1871| `moreFiles` | number | `2` | Jumlah file yang berubah tanpa diff di `files` |1897| `moreFiles` | number | `2` | Jumlah file yang berubah tanpa diff di `files` |

1872| `unavailable` | boolean | `true` | Ditetapkan saat diff tidak lengkap atau tidak dapat diambil |1898| `unavailable` | boolean | `true` | Ditetapkan saat diff tidak lengkap atau tidak dapat diambil |

1873| `skipped` | boolean | `true` | Ditetapkan untuk perintah Git yang memindahkan working tree, seperti `git checkout` atau `git stash`, sehingga Claude Code tidak mengambil diff |1899| `skipped` | boolean | `true` | Ditetapkan untuk perintah Git yang memindahkan working tree, seperti `git checkout` atau `git stash`, sehingga Claude Code tidak mengambil diff |

1874| `shared` | boolean | `true` | Ditetapkan saat panggilan tool Bash lain, seperti milik subagent, berjalan di repositori yang sama pada saat yang sama, sehingga beberapa perubahan yang dicantumkan mungkin berasal dari perintah tersebut |1900| `shared` | boolean | `true` | Ditetapkan saat panggilan tool Bash lain, seperti milik subagent, berjalan di repositori yang sama pada saat yang sama, sehingga beberapa perubahan yang tercantum mungkin berasal dari perintah tersebut |

1875 1901 

1876<a id="powershell" />1902<a id="powershell" />

1877 1903 


1881 1907 

1882Menjalankan perintah PowerShell. Lihat [tool PowerShell](/docs/id/tools-reference#powershell-tool) untuk ketersediaan berdasarkan platform.1908Menjalankan perintah PowerShell. Lihat [tool PowerShell](/docs/id/tools-reference#powershell-tool) untuk ketersediaan berdasarkan platform.

1883 1909 

1884Field-nya sama dengan tool Bash, dengan string perintah di `command`:1910Kolomnya sama dengan tool Bash, dengan string perintah di `command`:

1885 1911 

1886| Field | Tipe | Contoh | Deskripsi |1912| Kolom | Tipe | Contoh | Deskripsi |

1887| :- | :- | :- | :- |1913| :- | :- | :- | :- |

1888| `command` | string | `"Get-ChildItem -Recurse"` | Perintah PowerShell yang akan dijalankan |1914| `command` | string | `"Get-ChildItem -Recurse"` | Perintah PowerShell yang akan dijalankan |

1889| `description` | string | `"List files recursively"` | Deskripsi opsional tentang apa yang dilakukan perintah |1915| `description` | string | `"List files recursively"` | Deskripsi opsional tentang apa yang dilakukan perintah |

1890| `timeout` | number | `120000` | Timeout opsional dalam milidetik |1916| `timeout` | number | `120000` | Timeout opsional dalam milidetik |

1891| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |1917| `run_in_background` | boolean | `false` | Apakah perintah dijalankan di latar belakang |

1892 1918 

1893Cocokkan `Bash|PowerShell` dalam hook yang memeriksa perintah shell, sehingga hook tersebut mencakup kedua tool:1919Cocokkan `Bash|PowerShell` di hook yang memeriksa perintah shell, agar mencakup kedua tool:

1894 1920 

1895* Di Windows, di mana pun tool PowerShell diaktifkan, Claude memperlakukan PowerShell sebagai shell utama dan mengarahkan perintah shell melaluinya.1921* Di Windows, di mana pun tool PowerShell diaktifkan, Claude memperlakukan PowerShell sebagai shell utama dan mengarahkan perintah shell melaluinya.

1896* Di Windows tanpa Git Bash, tool ini diaktifkan secara otomatis dan Claude Code sama sekali tidak mendaftarkan tool Bash.1922* Di Windows tanpa Git Bash, tool tersebut diaktifkan secara otomatis dan Claude Code sama sekali tidak mendaftarkan tool Bash.

1897* Hook yang hanya mencocokkan `Bash` tidak pernah dipicu di sana.1923* Hook yang hanya cocok dengan `Bash` tidak pernah dipicu di sana.

1898 1924 

1899<h5 id="write">1925<h5 id="write">

1900 Write1926 Write


1902 1928 

1903Membuat atau menimpa file.1929Membuat atau menimpa file.

1904 1930 

1905| Field | Tipe | Contoh | Deskripsi |1931| Kolom | Tipe | Contoh | Deskripsi |

1906| :- | :- | :- | :- |1932| :- | :- | :- | :- |

1907| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan ditulis |1933| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan ditulis |

1908| `content` | string | `"file content"` | Konten yang akan ditulis ke file |1934| `content` | string | `"file content"` | Konten yang akan ditulis ke file |


1911 Edit1937 Edit

1912</h5>1938</h5>

1913 1939 

1914Mengganti string dalam file yang sudah ada.1940Mengganti string di file yang sudah ada.

1915 1941 

1916| Field | Tipe | Contoh | Deskripsi |1942| Kolom | Tipe | Contoh | Deskripsi |

1917| :- | :- | :- | :- |1943| :- | :- | :- | :- |

1918| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan diedit |1944| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan diedit |

1919| `old_string` | string | `"original text"` | Teks yang akan dicari dan diganti |1945| `old_string` | string | `"original text"` | Teks yang akan dicari dan diganti |


1924 Read1950 Read

1925</h5>1951</h5>

1926 1952 

1927Membaca konten file.1953Membaca isi file.

1928 1954 

1929| Field | Tipe | Contoh | Deskripsi |1955| Kolom | Tipe | Contoh | Deskripsi |

1930| :- | :- | :- | :- |1956| :- | :- | :- | :- |

1931| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan dibaca |1957| `file_path` | string | `"/path/to/file.txt"` | Path absolut ke file yang akan dibaca |

1932| `offset` | number | `10` | Nomor baris opsional untuk mulai membaca |1958| `offset` | number | `10` | Nomor baris opsional untuk mulai membaca |


1938 1964 

1939Menemukan file yang cocok dengan pola glob.1965Menemukan file yang cocok dengan pola glob.

1940 1966 

1941| Field | Tipe | Contoh | Deskripsi |1967| Kolom | Tipe | Contoh | Deskripsi |

1942| :- | :- | :- | :- |1968| :- | :- | :- | :- |

1943| `pattern` | string | `"**/*.ts"` | Pola glob untuk mencocokkan file |1969| `pattern` | string | `"**/*.ts"` | Pola glob untuk mencocokkan file |

1944| `path` | string | `"/path/to/dir"` | Direktori opsional tempat pencarian. Default-nya adalah direktori kerja saat ini |1970| `path` | string | `"/path/to/dir"` | Direktori opsional untuk pencarian. Default-nya adalah direktori kerja saat ini |

1945 1971 

1946<h5 id="grep">1972<h5 id="grep">

1947 Grep1973 Grep

1948</h5>1974</h5>

1949 1975 

1950Mencari konten file dengan ekspresi reguler.1976Mencari isi file dengan ekspresi reguler.

1951 1977 

1952| Field | Tipe | Contoh | Deskripsi |1978| Kolom | Tipe | Contoh | Deskripsi |

1953| :- | :- | :- | :- |1979| :- | :- | :- | :- |

1954| `pattern` | string | `"TODO.*fix"` | Pola ekspresi reguler yang akan dicari |1980| `pattern` | string | `"TODO.*fix"` | Pola ekspresi reguler yang dicari |

1955| `path` | string | `"/path/to/dir"` | File atau direktori opsional tempat pencarian |1981| `path` | string | `"/path/to/dir"` | File atau direktori opsional untuk pencarian |

1956| `glob` | string | `"*.ts"` | Pola glob opsional untuk memfilter file |1982| `glob` | string | `"*.ts"` | Pola glob opsional untuk memfilter file |

1957| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, atau `"count"`. Default-nya adalah `"files_with_matches"` |1983| `output_mode` | string | `"content"` | `"content"`, `"files_with_matches"`, atau `"count"`. Default-nya adalah `"files_with_matches"` |

1958| `-i` | boolean | `true` | Pencarian tanpa membedakan huruf besar/kecil |1984| `-i` | boolean | `true` | Pencarian tanpa membedakan huruf besar/kecil |


1964 1990 

1965Mengambil dan memproses konten web.1991Mengambil dan memproses konten web.

1966 1992 

1967| Field | Tipe | Contoh | Deskripsi |1993| Kolom | Tipe | Contoh | Deskripsi |

1968| :- | :- | :- | :- |1994| :- | :- | :- | :- |

1969| `url` | string | `"https://example.com/api"` | URL tempat konten diambil |1995| `url` | string | `"https://example.com/api"` | URL untuk mengambil konten |

1970| `prompt` | string | `"Extract the API endpoints"` | Prompt yang dijalankan pada konten yang diambil |1996| `prompt` | string | `"Extract the API endpoints"` | Prompt yang dijalankan pada konten yang diambil |

1971| `offset` | number | `100000` | Jumlah karakter opsional yang dilewati dari awal halaman. Claude menetapkannya untuk terus membaca halaman yang panjang. Memerlukan Claude Code v2.1.290 atau yang lebih baru |1997| `offset` | number | `100000` | Jumlah karakter opsional yang dilewati dari awal halaman. Claude menetapkannya untuk melanjutkan membaca halaman yang panjang. Memerlukan Claude Code v2.1.290 atau lebih baru |

1972 1998 

1973<h5 id="websearch">1999<h5 id="websearch">

1974 WebSearch2000 WebSearch


1976 2002 

1977Mencari di web.2003Mencari di web.

1978 2004 

1979| Field | Tipe | Contoh | Deskripsi |2005| Kolom | Tipe | Contoh | Deskripsi |

1980| :- | :- | :- | :- |2006| :- | :- | :- | :- |

1981| `query` | string | `"react hooks best practices"` | Kueri pencarian |2007| `query` | string | `"react hooks best practices"` | Kueri pencarian |

1982| `allowed_domains` | array | `["docs.example.com"]` | Opsional: hanya sertakan hasil dari domain ini |2008| `allowed_domains` | array | `["docs.example.com"]` | Opsional: hanya sertakan hasil dari domain-domain ini |

1983| `blocked_domains` | array | `["spam.example.com"]` | Opsional: kecualikan hasil dari domain ini |2009| `blocked_domains` | array | `["spam.example.com"]` | Opsional: kecualikan hasil dari domain-domain ini |

1984 2010 

1985<h5 id="agent">2011<h5 id="agent">

1986 Agent2012 Agent


1988 2014 

1989Memunculkan [subagent](/docs/id/sub-agents).2015Memunculkan [subagent](/docs/id/sub-agents).

1990 2016 

1991| Field | Tipe | Contoh | Deskripsi |2017| Kolom | Tipe | Contoh | Deskripsi |

1992| :- | :- | :- | :- |2018| :- | :- | :- | :- |

1993| `prompt` | string | `"Find all API endpoints"` | Tugas yang akan dilakukan agent |2019| `prompt` | string | `"Find all API endpoints"` | Tugas yang akan dikerjakan agent |

1994| `description` | string | `"Find API endpoints"` | Deskripsi singkat tugas |2020| `description` | string | `"Find API endpoints"` | Deskripsi singkat tugas |

1995| `subagent_type` | string | `"Explore"` | Jenis agent khusus yang akan digunakan |2021| `subagent_type` | string | `"Explore"` | Tipe agent khusus yang digunakan |

1996| `model` | string | `"sonnet"` | Alias model opsional untuk menimpa default |2022| `model` | string | `"sonnet"` | Alias model opsional untuk menimpa default |

1997 2023 

1998Saat panggilan Agent di latar depan selesai, [hook PostToolUse](#posttooluse) Anda menerima hasil subagent dan telemetri run di `tool_response`. Baca field ini untuk memeriksa run; untuk rekapitulasi token dan biaya di seluruh subagent, gunakan [penghitung token dan biaya](/docs/id/monitoring-usage#token-counter) yang difilter ke `query_source` `"subagent"`, karena `totalTokens` dan `usage` hanya mencakup permintaan terakhir:2024Saat panggilan Agent latar depan selesai, [hook PostToolUse](#posttooluse) Anda menerima hasil subagent dan telemetri eksekusi dalam `tool_response`. Baca kolom-kolom ini untuk memeriksa eksekusi; untuk rekapitulasi token dan biaya di seluruh subagent, gunakan [penghitung token dan biaya](/docs/id/monitoring-usage#token-counter) yang difilter ke `query_source` `"subagent"`, karena `totalTokens` dan `usage` hanya mencakup permintaan terakhir:

1999 2025 

2000| Field | Tipe | Contoh | Deskripsi |2026| Kolom | Tipe | Contoh | Deskripsi |

2001| :- | :- | :- | :- |2027| :- | :- | :- | :- |

2002| `status` | string | `"completed"` | `"completed"` untuk subagent latar depan, `"async_launched"` untuk subagent latar belakang. Subagent berjalan di latar belakang secara default, sehingga panggilan Agent yang menghilangkan `run_in_background` juga menghasilkan `"async_launched"` |2028| `status` | string | `"completed"` | `"completed"` untuk subagent latar depan, `"async_launched"` untuk subagent latar belakang. Subagent berjalan di latar belakang secara default, sehingga panggilan Agent yang tidak menyertakan `run_in_background` juga menghasilkan `"async_launched"` |

2003| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengenal untuk run subagent |2029| `agentId` | string | `"a4d2c8f1e0b3a297"` | Pengidentifikasi untuk eksekusi subagent |

2004| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks akhir subagent, atau, untuk subagent yang laporannya melalui `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai gantinya |2030| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | Blok teks terakhir subagent, atau, untuk subagent yang laporannya melalui `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai gantinya |

2005| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model tempat subagent dimulai, yang mungkin berbeda dari model yang diminta |2031| `resolvedModel` | string | `"claude-sonnet-4-5"` | Model yang digunakan subagent saat mulai, yang mungkin berbeda dari model yang diminta |

2006| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Model yang digunakan secara berurutan, dengan pengulangan berturut-turut diciutkan; hanya ditetapkan saat model ditukar di tengah run. Memerlukan Claude Code v2.1.212 atau yang lebih baru |2032| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | Model yang digunakan secara berurutan, dengan pengulangan berturut-turut digabungkan; hanya ditetapkan saat model ditukar di tengah eksekusi. Memerlukan Claude Code v2.1.212 atau lebih baru |

2007| `totalTokens` | number | `12450` | Jumlah token dari permintaan API terakhir subagent: token input, output, dan cache digabungkan. Ini bukan total di seluruh run |2033| `totalTokens` | number | `12450` | Jumlah token dari permintaan API terakhir subagent: gabungan token input, output, dan cache. Ini bukan total di seluruh eksekusi |

2008| `totalDurationMs` | number | `48211` | Durasi waktu nyata run subagent |2034| `totalDurationMs` | number | `48211` | Durasi waktu nyata eksekusi subagent |

2009| `totalToolUseCount` | number | `7` | Jumlah panggilan tool yang dilakukan subagent |2035| `totalToolUseCount` | number | `7` | Jumlah panggilan tool yang dilakukan subagent |

2010| `usage` | object | `{"input_tokens": 8320, ...}` | Rincian token per jenis dari permintaan API terakhir: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |2036| `usage` | object | `{"input_tokens": 8320, ...}` | Rincian token per tipe dari permintaan API terakhir: `input_tokens`, `output_tokens`, `cache_creation_input_tokens`, `cache_read_input_tokens` |

2011 2037 

2012Pada Claude Code v2.1.271 atau yang lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference), yang disediakan Claude Code dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), mengirimkan laporannya melalui tool tersebut alih-alih mengembalikannya sebagai teks. Field `content` dari hasil `completed`-nya kemudian membawa catatan singkat tentang penyerahan tersebut, bukan laporan itu sendiri. Untuk membaca laporan, cocokkan hook `PreToolUse` atau `PostToolUse` pada `SubagentHandback` dan baca `tool_input.message`.2038Di Claude Code v2.1.271 atau lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference), yang disediakan Claude Code di [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), menyampaikan laporannya melalui tool tersebut alih-alih mengembalikannya sebagai teks. Kolom `content` dari hasil `completed`-nya kemudian membawa catatan singkat tentang penyerahan tersebut, bukan laporannya sendiri. Untuk membaca laporan, cocokkan hook `PreToolUse` atau `PostToolUse` pada `SubagentHandback` dan baca `tool_input.message`.

2013 2039 

2014Untuk subagent latar belakang, tool kembali saat tugas berpindah ke latar belakang, sehingga `tool_response` tidak membawa field penggunaan: peluncuran latar belakang langsung kembali, dan tugas latar depan yang dipindahkan Claude Code ke latar belakang di tengah run kembali pada transisi tersebut. Respons ini memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.2040Untuk subagent latar belakang, tool kembali saat tugas berpindah ke latar belakang, sehingga `tool_response` tidak membawa kolom penggunaan: peluncuran latar belakang langsung kembali, dan tugas latar depan yang dipindahkan Claude Code ke latar belakang di tengah eksekusi kembali pada transisi tersebut. Respons tersebut memiliki `status: "async_launched"`, `agentId`, `description`, `prompt`, `outputFile`, dan `resolvedModel`.

2015 2041 

2016Pada respons `completed`, `resolvedModel` menyebutkan model tempat subagent dimulai, yang dapat berbeda dari nilai `model` di `tool_input`, seperti saat `availableModels` atau override lain berlaku. Pada respons `async_launched`, `resolvedModel` menyebutkan model yang digunakan saat agent berpindah ke latar belakang, sehingga penukaran yang terjadi sebelum dipindahkan ke latar belakang tercermin di sana. `modelsUsed` dan perilaku `resolvedModel` pada saat pemindahan ke latar belakang memerlukan Claude Code v2.1.212 atau yang lebih baru.2042Pada respons `completed`, `resolvedModel` menyebutkan model yang digunakan subagent saat mulai, yang dapat berbeda dari nilai `model` di `tool_input`, misalnya saat `availableModels` atau override lain berlaku. Pada respons `async_launched`, `resolvedModel` menyebutkan model yang digunakan saat agent berpindah ke latar belakang, sehingga pertukaran yang terjadi sebelum pemindahan ke latar belakang tercermin di sana. `modelsUsed` dan perilaku `resolvedModel` pada saat pemindahan ke latar belakang memerlukan Claude Code v2.1.212 atau lebih baru.

2017 2043 

2018<a id="askuserquestion" />2044<a id="askuserquestion" />

2019 2045 


2023 2049 

2024Mengajukan satu hingga empat pertanyaan pilihan ganda kepada pengguna.2050Mengajukan satu hingga empat pertanyaan pilihan ganda kepada pengguna.

2025 2051 

2026| Field | Tipe | Contoh | Deskripsi |2052| Kolom | Tipe | Contoh | Deskripsi |

2027| :- | :- | :- | :- |2053| :- | :- | :- | :- |

2028| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React", "description": "Component library"}, {"label": "Vue", "description": "Progressive framework"}], "multiSelect": false}]` | Pertanyaan yang akan disajikan, masing-masing dengan string `question`, `header` singkat, array `options`, dan flag `multiSelect` opsional |2054| `questions` | array | `[{"question": "Which framework?", "header": "Framework", "options": [{"label": "React", "description": "Component library"}, {"label": "Vue", "description": "Progressive framework"}], "multiSelect": false}]` | Pertanyaan yang akan ditampilkan, masing-masing dengan string `question`, `header` singkat, array `options`, dan flag `multiSelect` opsional |

2029| `answers` | object | `{"Which framework?": "React"}` | Opsional. Memetakan teks pertanyaan ke label opsi yang dipilih. Jawaban multi-pilihan menggabungkan label dengan koma. Claude tidak menetapkan field ini; berikan melalui `updatedInput` untuk menjawab secara terprogram |2055| `answers` | object | `{"Which framework?": "React"}` | Opsional. Memetakan teks pertanyaan ke label opsi yang dipilih. Jawaban pilihan ganda menggabungkan label dengan koma. Claude tidak menetapkan kolom ini; berikan melalui `updatedInput` untuk menjawab secara terprogram |

2030 2056 

2031<h5 id="exitplanmode">2057<h5 id="exitplanmode">

2032 ExitPlanMode2058 ExitPlanMode

2033</h5>2059</h5>

2034 2060 

2035Menyajikan rencana dan meminta pengguna untuk menyetujuinya sebelum Claude meninggalkan [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode). Claude menulis rencana ke file di disk sebelum memanggil tool, sehingga `tool_input` literal dari model biasanya kosong. Claude Code menyisipkan konten rencana dan path file sebelum meneruskan input ke hook.2061Menampilkan rencana dan meminta pengguna untuk menyetujuinya sebelum Claude meninggalkan [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode). Claude menulis rencana ke file di disk sebelum memanggil tool, sehingga `tool_input` literal dari model biasanya kosong. Claude Code menyisipkan isi rencana dan path file sebelum meneruskan input ke hook.

2036 2062 

2037| Field | Tipe | Contoh | Deskripsi |2063| Kolom | Tipe | Contoh | Deskripsi |

2038| :- | :- | :- | :- |2064| :- | :- | :- | :- |

2039| `plan` | string | `"## Refactor auth\n1. Extract..."` | Konten rencana dalam Markdown. Disisipkan dari file rencana di disk |2065| `plan` | string | `"## Refactor auth\n1. Extract..."` | Isi rencana dalam Markdown. Disisipkan dari file rencana di disk |

2040| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Path ke file rencana. Disisipkan |2066| `planFilePath` | string | `"/Users/.../plans/refactor-auth.md"` | Path ke file rencana. Disisipkan |

2041| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecated. Claude Code menerima field ini tetapi mengabaikannya. Sebelum v2.1.205, field ini membawa izin berbasis prompt yang diminta Claude untuk mengimplementasikan rencana |2067| `allowedPrompts` | array | `[{"tool": "Bash", "prompt": "run tests"}]` | Deprecated. Claude Code menerima kolom ini tetapi mengabaikannya. Sebelum v2.1.205, kolom ini membawa izin berbasis prompt yang diminta Claude untuk mengimplementasikan rencana |

2042 2068 

2043Di `PostToolUse`, `tool_response` adalah objek dengan field `plan` dan `filePath` yang berisi rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk konten rencana alih-alih membaca ulang file dari disk.2069Di `PostToolUse`, `tool_response` adalah objek dengan kolom `plan` dan `filePath` yang berisi rencana yang disetujui, ditambah flag status internal. Baca `tool_response.plan` untuk isi rencana alih-alih membaca ulang file dari disk.

2044 2070 

2045<h4 id="pretooluse-decision-control">2071<h4 id="pretooluse-decision-control">

2046 Kontrol keputusan PreToolUse2072 Kontrol keputusan PreToolUse

2047</h4>2073</h4>

2048 2074 

2049Hook `PreToolUse` dapat mengontrol apakah panggilan tool berlanjut. Tidak seperti hook lain yang menggunakan field `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberinya kontrol yang lebih kaya: empat hasil (allow, deny, ask, atau defer) ditambah kemampuan untuk memodifikasi input tool sebelum eksekusi.2075Hook `PreToolUse` dapat mengontrol apakah panggilan tool dilanjutkan. Tidak seperti hook lain yang menggunakan kolom `decision` tingkat atas, PreToolUse mengembalikan keputusannya di dalam objek `hookSpecificOutput`. Ini memberinya kontrol yang lebih kaya: empat hasil (allow, deny, ask, atau defer) ditambah kemampuan untuk mengubah input tool sebelum eksekusi.

2050 2076 

2051| Field | Deskripsi |2077| Kolom | Deskripsi |

2052| :- | :- |2078| :- | :- |

2053| `permissionDecision` | `"allow"` melewati permintaan izin, kecuali untuk [tindakan yang tidak disetujui otomatis oleh mode mana pun](/docs/id/permission-modes#actions-no-mode-auto-approves), untuk [pembacaan dari path jaringan](/docs/id/permissions#network-paths), dan untuk `AskUserQuestion` dan `ExitPlanMode`, yang memerlukan [`updatedInput` yang dipasangkan dengannya](#allow-with-updatedinput). `"deny"` mencegah panggilan tool. `"ask"` meminta pengguna untuk mengonfirmasi. `"defer"` keluar dengan baik sehingga tool dapat dilanjutkan nanti. [Aturan deny dan ask](/docs/id/permissions#manage-permissions) tetap dievaluasi terlepas dari apa yang dikembalikan hook |2079| `permissionDecision` | `"allow"` melewati permintaan izin, kecuali untuk [tindakan yang tidak disetujui otomatis oleh mode mana pun](/docs/id/permission-modes#actions-no-mode-auto-approves), untuk [pembacaan dari path jaringan](/docs/id/permissions#network-paths), dan untuk `AskUserQuestion` serta `ExitPlanMode`, yang memerlukan [`updatedInput` yang dipasangkan dengannya](#allow-with-updatedinput). `"deny"` mencegah panggilan tool. `"ask"` meminta pengguna untuk mengonfirmasi. `"defer"` keluar dengan baik sehingga tool dapat dilanjutkan nanti. [Aturan deny dan ask](/docs/id/permissions#manage-permissions) tetap dievaluasi apa pun yang dikembalikan hook |

2054| `permissionDecisionReason` | Untuk `"ask"`, ditampilkan kepada pengguna dalam permintaan izin. Saat Claude Code [menolak panggilan](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) dalam run `-p` tempat tidak ada yang dapat menjawab permintaan tersebut, Claude membaca alasan tersebut di hasil tool sebagai gantinya. Untuk `"deny"`, ditampilkan kepada Claude. Untuk `"allow"` dan `"defer"`, hanya ditulis ke [log debug](#debug-hooks) |2080| `permissionDecisionReason` | Untuk `"ask"`, ditampilkan kepada pengguna dalam permintaan izin. Saat Claude Code [menolak panggilan](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) dalam eksekusi `-p` tempat tidak ada yang dapat menjawab permintaan tersebut, Claude membaca alasannya di hasil tool sebagai gantinya. Untuk `"deny"`, ditampilkan kepada Claude. Untuk `"allow"` dan `"defer"`, hanya ditulis ke [debug log](#debug-hooks) |

2055| `updatedInput` | Memodifikasi parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan field yang tidak berubah bersama field yang dimodifikasi. Claude Code mengevaluasi aturan izin dan [kelayakan latar belakang otomatis](/docs/id/tools-reference#foreground-commands-that-move-to-the-background) perintah Bash terhadap input yang dikembalikan hook Anda, bukan input yang dikirim Claude. Gabungkan dengan `"allow"` untuk menyetujui secara otomatis, atau `"ask"` untuk menampilkan input yang dimodifikasi kepada pengguna. Untuk `"defer"`, diabaikan |2081| `updatedInput` | Mengubah parameter input tool sebelum eksekusi. Menggantikan seluruh objek input, jadi sertakan kolom yang tidak berubah bersama kolom yang diubah. Claude Code mengevaluasi aturan izin dan [kelayakan auto-background](/docs/id/tools-reference#foreground-commands-that-move-to-the-background) perintah Bash terhadap input yang dikembalikan hook Anda, bukan input yang dikirim Claude. Kombinasikan dengan `"allow"` untuk menyetujui otomatis, atau `"ask"` untuk menampilkan input yang diubah kepada pengguna. Untuk `"defer"`, diabaikan |

2056| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Diabaikan saat `permissionDecision` bernilai `"defer"`. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |2082| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Diabaikan saat `permissionDecision` bernilai `"defer"`. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

2057 2083 

2058Saat beberapa hook PreToolUse mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `defer` > `ask` > `allow`.2084Saat beberapa hook PreToolUse mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `defer` > `ask` > `allow`.

2059 2085 

2060Hook yang memblokir dengan keluar menggunakan 2 diarahkan dengan cara yang sama seperti `"deny"`: Claude melihat pesan stderr sebagai alasan penolakan.2086Hook yang memblokir dengan keluar menggunakan kode 2 diarahkan dengan cara yang sama seperti `"deny"`: Claude melihat pesan stderr sebagai alasan penolakan.

2061 2087 

2062Saat hook mengembalikan `"ask"`, permintaan izin yang ditampilkan kepada pengguna menyertakan label yang mengidentifikasi asal hook: `[settings]` untuk hook dari file pengaturan mana pun atau dari frontmatter agent, `[plugin:<name>]` untuk hook plugin, atau `[skill]` untuk hook dari frontmatter skill. Ini membantu pengguna memahami sumber konfigurasi mana yang meminta konfirmasi.2088Saat hook mengembalikan `"ask"`, permintaan izin yang ditampilkan kepada pengguna menyertakan label yang mengidentifikasi asal hook: `[settings]` untuk hook dari file pengaturan mana pun atau dari frontmatter agent, `[plugin:<name>]` untuk hook plugin, atau `[skill]` untuk hook dari frontmatter skill. Ini membantu pengguna memahami sumber konfigurasi mana yang meminta konfirmasi.

2063 2089 

2064`"ask"` dari hook juga memaksa permintaan izin dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode): pengklasifikasi tetap dapat menolak panggilan tool, tetapi tidak dapat menyetujuinya secara diam-diam. Sebelum v2.1.211, pengklasifikasi dapat menyetujui perintah Bash yang berjalan di luar [sandbox](/docs/id/sandboxing) tanpa menampilkan permintaan yang diminta hook; pengklasifikasi tetap menerapkan aturan keamanannya sendiri pada perintah tersebut, dan `"deny"` dari hook selalu dihormati.2090`"ask"` dari hook juga memaksa permintaan izin di [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode): pengklasifikasi tetap dapat menolak panggilan tool, tetapi tidak dapat menyetujui panggilan tersebut secara diam-diam. Sebelum v2.1.211, pengklasifikasi dapat menyetujui perintah Bash yang berjalan di luar [sandbox](/docs/id/sandboxing) tanpa menampilkan permintaan yang diminta hook; pengklasifikasi tetap menerapkan aturan keamanannya sendiri pada perintah tersebut, dan `"deny"` dari hook selalu dipatuhi.

2065 2091 

2066```json theme={null}2092```json theme={null}

2067{2093{


2078```2104```

2079 2105 

2080<Note>2106<Note>

2081 PreToolUse sebelumnya menggunakan field `decision` dan `reason` tingkat atas, tetapi field tersebut sudah deprecated untuk event ini. Gunakan `hookSpecificOutput.permissionDecision` dan `hookSpecificOutput.permissionDecisionReason` sebagai gantinya. Nilai deprecated `"approve"` dan `"block"` masing-masing dipetakan ke `"allow"` dan `"deny"`. Event lain seperti PostToolUse dan Stop tetap menggunakan `decision` dan `reason` tingkat atas sebagai format saat ini.2107 PreToolUse sebelumnya menggunakan kolom `decision` dan `reason` tingkat atas, tetapi kolom tersebut sudah deprecated untuk event ini. Gunakan `hookSpecificOutput.permissionDecision` dan `hookSpecificOutput.permissionDecisionReason` sebagai gantinya. Nilai deprecated `"approve"` dan `"block"` masing-masing dipetakan ke `"allow"` dan `"deny"`. Event lain seperti PostToolUse dan Stop tetap menggunakan `decision` dan `reason` tingkat atas sebagai format saat ini.

2082</Note>2108</Note>

2083 2109 

2084<h4 id="allow-with-updatedinput">2110<h4 id="allow-with-updatedinput">

2085 Tool yang memerlukan interaksi pengguna2111 Tool yang memerlukan interaksi pengguna

2086</h4>2112</h4>

2087 2113 

2088`AskUserQuestion` dan `ExitPlanMode` memerlukan interaksi pengguna. Dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, Claude Code hanya menawarkannya saat run memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) untuk menerima permintaan, seperti callback `canUseTool` Agent SDK.2114`AskUserQuestion` dan `ExitPlanMode` memerlukan interaksi pengguna. Dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, Claude Code hanya menawarkannya saat eksekusi memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs) untuk menerima permintaan, seperti callback `canUseTool` Agent SDK.

2089 2115 

2090Hook `PreToolUse` memenuhi persyaratan tersebut saat melakukan hal berikut:2116Hook `PreToolUse` memenuhi persyaratan tersebut jika melakukan hal berikut:

2091 2117 

20921. Membaca input tool dari stdin21181. Membaca input tool dari stdin

20932. Mengumpulkan jawaban melalui UI Anda sendiri21192. Mengumpulkan jawaban melalui UI Anda sendiri

20943. Mengembalikan `permissionDecision: "allow"` bersama `updatedInput` yang berisi jawaban, sehingga tool berjalan tanpa meminta21203. Mengembalikan `permissionDecision: "allow"` bersama `updatedInput` yang berisi jawaban, sehingga tool berjalan tanpa permintaan

2095 2121 

2096Mengembalikan `"allow"` saja tidak cukup untuk tool ini.2122Mengembalikan `"allow"` saja tidak cukup untuk tool-tool ini.

2097 2123 

2098Untuk `AskUserQuestion`, kembalikan array `questions` asli dan tambahkan objek [`answers`](#askuserquestion) yang memetakan teks setiap pertanyaan ke jawaban yang dipilih. Output ini menjawab satu pertanyaan dengan `React`:2124Untuk `AskUserQuestion`, kembalikan array `questions` asli dan tambahkan objek [`answers`](#askuserquestion) yang memetakan teks setiap pertanyaan ke jawaban yang dipilih. Output ini menjawab satu pertanyaan dengan `React`:

2099 2125 


2117}2143}

2118```2144```

2119 2145 

2120Tool MCP yang ditandai server-nya dengan [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) lebih ketat: hook tidak dapat melewati permintaan persetujuannya dengan `"allow"`, dengan atau tanpa `updatedInput`, karena Claude Code tidak dapat memastikan bahwa hook telah mengumpulkan interaksi yang dibutuhkan tool.2146Tool MCP yang ditandai oleh server-nya dengan [`_meta["anthropic/requiresUserInteraction"]`](/docs/id/mcp#require-approval-for-a-specific-tool) lebih ketat: hook tidak dapat melewati permintaan persetujuannya dengan `"allow"`, dengan atau tanpa `updatedInput`, karena Claude Code tidak dapat memastikan bahwa hook telah mengumpulkan interaksi yang dibutuhkan tool tersebut.

2121 2147 

2122<h4 id="defer-a-tool-call-for-later">2148<h4 id="defer-a-tool-call-for-later">

2123 Menangguhkan panggilan tool untuk nanti2149 Menangguhkan panggilan tool untuk nanti

2124</h4>2150</h4>

2125 2151 

2126`"defer"` ditujukan untuk integrasi yang menjalankan `claude -p` sebagai subproses dan membaca output JSON-nya, seperti aplikasi Agent SDK atau UI kustom yang dibangun di atas Claude Code. Ini memungkinkan proses pemanggil tersebut menjeda Claude pada panggilan tool, mengumpulkan input melalui antarmukanya sendiri, dan melanjutkan dari titik terakhir. Claude Code hanya menghormati nilai ini dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Dalam sesi interaktif, Claude Code mencatat peringatan dan mengabaikan hasil hook.2152`"defer"` ditujukan untuk integrasi yang menjalankan `claude -p` sebagai subproses dan membaca output JSON-nya, seperti aplikasi Agent SDK atau UI kustom yang dibangun di atas Claude Code. Nilai ini memungkinkan proses pemanggil tersebut menjeda Claude pada panggilan tool, mengumpulkan input melalui antarmukanya sendiri, dan melanjutkan dari titik terakhir. Claude Code hanya mematuhi nilai ini dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`. Dalam sesi interaktif, Claude Code mencatat peringatan dan mengabaikan hasil hook.

2127 2153 

2128Tool `AskUserQuestion` adalah kasus yang umum: Claude ingin menanyakan sesuatu kepada pengguna, tetapi tidak ada terminal untuk menjawabnya. Run `-p` hanya menawarkan `AskUserQuestion` saat memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs), seperti tool MCP yang Anda teruskan dengan `--permission-prompt-tool`, jadi mulai run dengan salah satunya. Perjalanan bolak-baliknya bekerja seperti ini:2154Tool `AskUserQuestion` adalah kasus yang umum: Claude ingin menanyakan sesuatu kepada pengguna, tetapi tidak ada terminal untuk menjawabnya. Eksekusi `-p` hanya menawarkan `AskUserQuestion` saat memiliki [host izin](/docs/id/headless#turn-off-permission-prompts-in-unattended-runs), seperti tool MCP yang Anda berikan dengan `--permission-prompt-tool`, jadi mulailah eksekusi dengan salah satunya. Alur bolak-baliknya berjalan seperti ini:

2129 2155 

21301. Claude memanggil `AskUserQuestion`. Hook `PreToolUse` dipicu.21561. Claude memanggil `AskUserQuestion`. Hook `PreToolUse` dipicu.

21312. Hook mengembalikan `permissionDecision: "defer"`. Tool tidak dieksekusi. Proses keluar dengan `stop_reason: "tool_deferred"` dan panggilan tool yang tertunda dipertahankan dalam transkrip.21572. Hook mengembalikan `permissionDecision: "defer"`. Tool tidak dieksekusi. Proses keluar dengan `stop_reason: "tool_deferred"` dan panggilan tool yang tertunda dipertahankan dalam transkrip.


21334. Proses pemanggil menjalankan `claude -p --resume <session-id>` dengan host izin yang sama. Panggilan tool yang sama memicu `PreToolUse` lagi.21594. Proses pemanggil menjalankan `claude -p --resume <session-id>` dengan host izin yang sama. Panggilan tool yang sama memicu `PreToolUse` lagi.

21345. Hook mengembalikan `permissionDecision: "allow"` dengan jawaban di `updatedInput`. Tool dieksekusi dan Claude melanjutkan.21605. Hook mengembalikan `permissionDecision: "allow"` dengan jawaban di `updatedInput`. Tool dieksekusi dan Claude melanjutkan.

2135 2161 

2136Field `deferred_tool_use` membawa `id`, `name`, dan `input` tool. `input` adalah parameter yang dihasilkan Claude untuk panggilan tool, yang ditangkap sebelum eksekusi:2162Kolom `deferred_tool_use` membawa `id`, `name`, dan `input` dari tool. `input` adalah parameter yang dihasilkan Claude untuk panggilan tool, yang ditangkap sebelum eksekusi:

2137 2163 

2138```json theme={null}2164```json theme={null}

2139{2165{


2149}2175}

2150```2176```

2151 2177 

2152Tidak ada timeout atau batas retry. Sesi tetap berada di disk hingga Anda melanjutkannya, dengan tunduk pada pembersihan retensi [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays), yang menghapus file sesi setelah 30 hari secara default, mengikuti [aturan pembersihan retensi](/docs/id/claude-directory#cleaned-up-automatically). Jika jawaban belum siap saat Anda melanjutkan, hook dapat mengembalikan `"defer"` lagi dan proses keluar dengan cara yang sama. Proses pemanggil mengontrol kapan memutus loop dengan akhirnya mengembalikan `"allow"` atau `"deny"` dari hook.2178Tidak ada timeout atau batas retry. Sesi tetap berada di disk hingga Anda melanjutkannya, dengan tunduk pada pembersihan retensi [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays), yang menghapus file sesi setelah 30 hari secara default, mengikuti [aturan pembersihan retensi](/docs/id/claude-directory#cleaned-up-automatically). Jika jawaban belum siap saat Anda melanjutkan, hook dapat mengembalikan `"defer"` lagi dan proses keluar dengan cara yang sama. Proses pemanggil mengontrol kapan memutus perulangan dengan pada akhirnya mengembalikan `"allow"` atau `"deny"` dari hook.

2153 2179 

2154`"defer"` hanya berfungsi saat Claude melakukan satu panggilan tool dalam giliran tersebut. Jika Claude melakukan beberapa panggilan tool sekaligus, `"defer"` diabaikan dengan peringatan dan tool berlanjut melalui alur izin normal. Batasan ini ada karena resume hanya dapat menjalankan ulang satu tool: tidak ada cara untuk menangguhkan satu panggilan dari sekelompok panggilan tanpa membiarkan yang lain tidak terselesaikan.2180`"defer"` hanya berfungsi saat Claude melakukan satu panggilan tool dalam giliran tersebut. Jika Claude melakukan beberapa panggilan tool sekaligus, `"defer"` diabaikan dengan peringatan dan tool berlanjut melalui alur izin normal. Batasan ini ada karena resume hanya dapat menjalankan ulang satu tool: tidak ada cara untuk menangguhkan satu panggilan dari sekumpulan panggilan tanpa membiarkan yang lain tidak terselesaikan.

2155 2181 

2156Jika tool yang ditangguhkan tidak lagi tersedia saat Anda melanjutkan, proses keluar dengan `stop_reason: "tool_deferred_unavailable"` dan `is_error: true` sebelum hook dipicu. Ini terjadi saat server MCP yang menyediakan tool tidak terhubung untuk sesi yang dilanjutkan. Payload `deferred_tool_use` tetap disertakan sehingga Anda dapat mengidentifikasi tool mana yang hilang.2182Jika tool yang ditangguhkan tidak lagi tersedia saat Anda melanjutkan, proses keluar dengan `stop_reason: "tool_deferred_unavailable"` dan `is_error: true` sebelum hook dipicu. Ini terjadi saat server MCP yang menyediakan tool tersebut tidak terhubung untuk sesi yang dilanjutkan. Payload `deferred_tool_use` tetap disertakan sehingga Anda dapat mengidentifikasi tool mana yang hilang.

2157 2183 

2158<Note>2184<Note>

2159 Untuk melanjutkan sesi yang ditangguhkan dalam plan mode, berikan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) bersama `--resume` agar Claude Code dapat menyajikan rencana untuk disetujui. Untuk kondisi lainnya, lihat [Melanjutkan dalam plan mode dengan `-p`](/docs/id/sessions#resume-in-plan-mode-with-p). Memerlukan Claude Code v2.1.246 atau yang lebih baru.2185 Untuk melanjutkan sesi yang ditangguhkan dalam plan mode, berikan [`--permission-prompt-tool`](/docs/id/cli-reference#cli-flags) bersama `--resume` agar Claude Code dapat menampilkan rencana untuk disetujui. Untuk kondisi lainnya, lihat [Melanjutkan dalam plan mode dengan `-p`](/docs/id/sessions#resume-in-plan-mode-with-p). Memerlukan Claude Code v2.1.246 atau lebih baru.

2160 2186 

2161 Saat Anda melanjutkan dengan `-p`, Claude Code tidak memulihkan mode izin tersimpan lainnya. Claude Code memulai run dalam mode izin yang akan digunakan oleh run `claude -p` baru, jadi teruskan `--permission-mode` atau `--dangerously-skip-permissions` lagi jika sesi yang ditangguhkan menggunakannya. Saat Anda melanjutkan dengan `claude --resume <session-id>` tanpa `-p`, Claude Code memulihkan mode izin yang tersimpan, dengan pengecualian yang tercantum di [mode izin saat resume](/docs/id/sessions#permission-mode-on-resume).2187 Saat Anda melanjutkan dengan `-p`, Claude Code tidak memulihkan mode izin tersimpan lainnya. Claude Code memulai eksekusi dalam mode izin yang akan digunakan oleh eksekusi `claude -p` baru, jadi berikan `--permission-mode` atau `--dangerously-skip-permissions` lagi jika sesi yang ditangguhkan menggunakannya. Saat Anda melanjutkan dengan `claude --resume <session-id>` tanpa `-p`, Claude Code memulihkan mode izin yang tersimpan, dengan pengecualian yang tercantum di [mode izin saat resume](/docs/id/sessions#permission-mode-on-resume).

2162</Note>2188</Note>

2163 2189 

2164<h3 id="permissionrequest">2190<h3 id="permissionrequest">

2165 PermissionRequest2191 PermissionRequest

2166</h3>2192</h3>

2167 2193 

2168Berjalan saat Claude Code akan meminta izin Anda untuk menggunakan tool. Dalam sesi yang tidak dapat menampilkan permintaan, seperti subagent latar belakang dalam [mode non-interaktif](/docs/id/headless), Claude Code tetap menjalankan hook ini, dan jika tidak ada hook yang mengembalikan keputusan, Claude Code menolak panggilan tool. Untuk panggilan yang mencapai `--permission-prompt-tool` atau [callback `canUseTool`](/docs/id/agent-sdk/permissions) Agent SDK, hook berjalan bersama host Anda, dan mana pun yang memutuskan lebih dulu yang berlaku.2194Berjalan saat Claude Code akan meminta izin Anda untuk menggunakan tool. Dalam sesi yang tidak dapat menampilkan permintaan, seperti subagent latar belakang dalam [mode non-interaktif](/docs/id/headless), Claude Code tetap menjalankan hook ini, dan jika tidak ada hook yang mengembalikan keputusan, Claude Code menolak panggilan tool tersebut. Untuk panggilan yang mencapai `--permission-prompt-tool` atau [callback `canUseTool`](/docs/id/agent-sdk/permissions) Agent SDK, hook berjalan bersamaan dengan host Anda, dan mana pun yang memutuskan lebih dulu yang berlaku.

2169Gunakan [kontrol keputusan PermissionRequest](#permissionrequest-decision-control) untuk mengizinkan atau menolak atas nama pengguna.2195Gunakan [kontrol keputusan PermissionRequest](#permissionrequest-decision-control) untuk mengizinkan atau menolak atas nama pengguna.

2170 2196 

2171Gunakan event ini saat Anda memerlukan sinyal tepat ketika Claude meminta izin untuk menggunakan tool. Claude Code menjalankan hook [Notification](#notification) dengan jenis `permission_prompt` hanya setelah permintaan menunggu sekitar enam detik.2197Gunakan event ini saat Anda memerlukan sinyal tepat ketika Claude meminta izin untuk menggunakan tool. Claude Code menjalankan hook [Notification](#notification) dengan tipe `permission_prompt` hanya setelah permintaan menunggu sekitar enam detik.

2172 2198 

2173Claude Code tidak menjalankan hook PermissionRequest untuk [permintaan jaringan](/docs/id/sandboxing#network-isolation) dari perintah yang berjalan di sandbox. Untuk mendapatkan sinyal bagi permintaan tersebut, gunakan jenis notifikasi `permission_prompt`.2199Claude Code tidak menjalankan hook PermissionRequest untuk [permintaan jaringan](/docs/id/sandboxing#network-isolation) dari perintah yang berjalan dalam sandbox. Untuk mendapatkan sinyal bagi permintaan izin tersebut, gunakan tipe notifikasi `permission_prompt`.

2174 2200 

2175Dicocokkan pada nama tool, dengan nilai yang sama seperti PreToolUse.2201Dicocokkan pada nama tool, dengan nilai yang sama seperti PreToolUse.

2176 2202 


2180 2206 

2181Hook PermissionRequest menerima field `tool_name` dan `tool_input` seperti hook PreToolUse, tetapi tanpa `tool_use_id`. Untuk tool MCP, hook ini juga menerima objek [`mcp_server`](#pretooluse-input). Array `permission_suggestions` opsional berisi [pembaruan izin](#permission-update-entries) yang disarankan Claude Code untuk permintaan ini, seperti menambahkan aturan allow atau mengubah mode izin.2207Hook PermissionRequest menerima field `tool_name` dan `tool_input` seperti hook PreToolUse, tetapi tanpa `tool_use_id`. Untuk tool MCP, hook ini juga menerima objek [`mcp_server`](#pretooluse-input). Array `permission_suggestions` opsional berisi [pembaruan izin](#permission-update-entries) yang disarankan Claude Code untuk permintaan ini, seperti menambahkan aturan allow atau mengubah mode izin.

2182 2208 

2183Array `permission_suggestions` bukan daftar persis dari opsi yang Anda lihat, karena setiap dialog izin membangun opsinya sendiri. Beberapa dialog, seperti dialog untuk pengeditan file, sama sekali tidak membaca array tersebut dan menurunkan opsinya dari permintaan itu sendiri. Dialog yang membacanya tetap dapat menahan opsi yang sarannya tetap ada di array, misalnya saat [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) menyembunyikan opsi penyimpanan aturan. Dialog juga dapat menawarkan opsi yang tidak memiliki entri saran, seperti [**Yes, and switch to auto mode**](/docs/id/permission-modes#switch-permission-modes), yang mengubah mode izin secara langsung alih-alih melalui pembaruan izin.2209Array `permission_suggestions` bukan daftar persis dari opsi yang Anda lihat, karena setiap dialog izin membangun opsinya sendiri. Beberapa dialog, seperti dialog untuk pengeditan file, sama sekali tidak membaca array tersebut dan menurunkan opsinya dari permintaan itu sendiri. Dialog yang membacanya tetap dapat menahan opsi yang sarannya tetap ada di array, misalnya ketika [`allowManagedPermissionRulesOnly`](/docs/id/settings-reference#allowmanagedpermissionrulesonly) menyembunyikan opsi penyimpanan aturan. Dialog tersebut juga dapat menawarkan opsi yang tidak memiliki entri saran, seperti [**Yes, and switch to auto mode**](/docs/id/permission-modes#switch-permission-modes), yang mengubah mode izin secara langsung, bukan melalui pembaruan izin.

2184 2210 

2185Hook PreToolUse berjalan sebelum setiap panggilan tool, terlepas dari apakah panggilan tersebut memerlukan izin. Hook PermissionRequest hanya berjalan saat Claude Code akan meminta izin Anda, atau saat Claude Code jika tidak demikian akan menolak otomatis panggilan yang tidak dapat menampilkan permintaan. Tidak satu pun event ini dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).2211Hook PreToolUse berjalan sebelum setiap panggilan tool, baik panggilan tersebut memerlukan izin maupun tidak. Hook PermissionRequest hanya berjalan ketika Claude Code akan meminta izin kepada Anda, atau ketika Claude Code akan menolak secara otomatis panggilan yang tidak dapat menampilkan permintaan izin. Kedua event ini tidak dipicu untuk [`EndConversation`](/docs/id/tools-reference#endconversation-tool-behavior).

2186 2212 

2187```json theme={null}2213```json theme={null}

2188{2214{


2241 Entri pembaruan izin2267 Entri pembaruan izin

2242</h4>2268</h4>

2243 2269 

2244Field output `updatedPermissions` dan [field input `permission_suggestions`](#permissionrequest-input) sama-sama menggunakan array objek entri yang sama. Setiap entri memiliki `type` yang menentukan field lainnya, serta `destination` yang mengontrol ke mana perubahan ditulis.2270Field output `updatedPermissions` dan [field input `permission_suggestions`](#permissionrequest-input) sama-sama menggunakan array objek entri yang sama. Setiap entri memiliki `type` yang menentukan field lainnya, dan `destination` yang mengontrol ke mana perubahan ditulis.

2245 2271 

2246| `type` | Field | Efek |2272| `type` | Field | Efek |

2247| :- | :- | :- |2273| :- | :- | :- |

2248| `addRules` | `rules`, `behavior`, `destination` | Menambahkan aturan izin. `rules` adalah array objek `{toolName, ruleContent?}`. Hilangkan `ruleContent` untuk mencocokkan seluruh tool. `behavior` adalah `"allow"`, `"deny"`, atau `"ask"` |2274| `addRules` | `rules`, `behavior`, `destination` | Menambahkan aturan izin. `rules` adalah array objek `{toolName, ruleContent?}`. Hilangkan `ruleContent` untuk mencocokkan seluruh tool. `behavior` adalah `"allow"`, `"deny"`, atau `"ask"` |

2249| `replaceRules` | `rules`, `behavior`, `destination` | Mengganti semua aturan dengan `behavior` yang diberikan di `destination` dengan `rules` yang disediakan |2275| `replaceRules` | `rules`, `behavior`, `destination` | Menggantikan semua aturan dengan `behavior` tertentu di `destination` dengan `rules` yang diberikan |

2250| `removeRules` | `rules`, `behavior`, `destination` | Menghapus aturan yang cocok dengan `behavior` yang diberikan |2276| `removeRules` | `rules`, `behavior`, `destination` | Menghapus aturan yang cocok dengan `behavior` tertentu |

2251| `setMode` | `mode`, `destination` | Mengubah mode izin. Mode yang valid adalah `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, dan `manual` sebagai alias untuk `default` |2277| `setMode` | `mode`, `destination` | Mengubah mode izin. Mode yang valid adalah `default`, `auto`, `acceptEdits`, `dontAsk`, `bypassPermissions`, `plan`, dan `manual` sebagai alias untuk `default` |

2252| `addDirectories` | `directories`, `destination` | Menambahkan direktori kerja. `directories` adalah array string path |2278| `addDirectories` | `directories`, `destination` | Menambahkan direktori kerja. `directories` adalah array string path |

2253| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |2279| `removeDirectories` | `directories`, `destination` | Menghapus direktori kerja |

2254 2280 

2255<Note>2281<Note>

2256 `setMode` dengan `bypassPermissions` hanya berlaku jika Anda meluncurkan sesi dengan mode bypass yang sudah tersedia: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, atau `permissions.defaultMode: "bypassPermissions"` di [pengaturan pengguna, `--settings`, atau pengaturan terkelola](/docs/id/settings-reference#permissions-defaultmode). Jika tidak, pembaruan tidak berpengaruh apa pun. Pembaruan juga tidak berpengaruh ketika [`permissions.disableBypassPermissionsMode`](/docs/id/permissions#managed-settings) menonaktifkan mode tersebut, atau ketika sesi dimulai dalam [mode terbatas](/docs/id/cli-reference#cli-flags).2282 `setMode` dengan `bypassPermissions` hanya berlaku jika Anda meluncurkan sesi dengan mode bypass yang sudah tersedia: `--dangerously-skip-permissions`, `--permission-mode bypassPermissions`, `--allow-dangerously-skip-permissions`, atau `permissions.defaultMode: "bypassPermissions"` di [pengaturan pengguna, `--settings`, atau pengaturan terkelola](/docs/id/settings-reference#permissions-defaultmode). Jika tidak, pembaruan tersebut tidak berpengaruh. Pembaruan juga tidak berpengaruh ketika [`permissions.disableBypassPermissionsMode`](/docs/id/permissions#managed-settings) menonaktifkan mode tersebut, atau ketika sesi dimulai dalam [restricted mode](/docs/id/cli-reference#cli-flags).

2257 2283 

2258 `bypassPermissions` tidak pernah disimpan sebagai `defaultMode` terlepas dari `destination`.2284 `bypassPermissions` tidak pernah disimpan sebagai `defaultMode` terlepas dari `destination`.

2259</Note>2285</Note>

2260 2286 

2261Field `destination` pada setiap entri menentukan apakah perubahan tetap berada di memori atau disimpan ke file pengaturan.2287Field `destination` pada setiap entri menentukan apakah perubahan tetap di memori atau disimpan ke file pengaturan.

2262 2288 

2263| `destination` | Menulis ke |2289| `destination` | Menulis ke |

2264| :- | :- |2290| :- | :- |

2265| `session` | hanya di memori, dibuang saat sesi berakhir |2291| `session` | hanya di memori, dibuang ketika sesi berakhir |

2266| `localSettings` | `.claude/settings.local.json` |2292| `localSettings` | `.claude/settings.local.json` |

2267| `projectSettings` | `.claude/settings.json` |2293| `projectSettings` | `.claude/settings.json` |

2268| `userSettings` | `~/.claude/settings.json` |2294| `userSettings` | `~/.claude/settings.json` |

2269 2295 

2270Sebuah hook dapat mengembalikan salah satu `permission_suggestions` yang diterimanya sebagai output `updatedPermissions` miliknya sendiri.2296Hook dapat mengembalikan salah satu `permission_suggestions` yang diterimanya sebagai output `updatedPermissions`-nya sendiri.

2271 2297 

2272<h3 id="posttooluse">2298<h3 id="posttooluse">

2273 PostToolUse2299 PostToolUse

2274</h3>2300</h3>

2275 2301 

2276Berjalan segera setelah sebuah tool selesai dengan sukses.2302Berjalan segera setelah tool berhasil diselesaikan.

2277 2303 

2278Mencocokkan nama tool, dengan nilai yang sama seperti PreToolUse.2304Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2279 2305 

2280Gunakan pencocokan yang lebih luas ketika nama tool bukan filter yang tepat:2306Cocokkan secara lebih luas ketika nama tool bukan filter yang tepat:

2281 2307 

2282* Untuk menjalankan hook setelah tool apa pun selesai dengan sukses, hilangkan `matcher` atau setel ke `"*"`. Hook Anda kemudian dapat menemukan sendiri apa yang berubah, misalnya dengan menjalankan `git status --porcelain`, yang juga mencantumkan file yang tidak terlacak yang terlewat oleh `git diff`. Untuk panggilan tool yang gagal, tambahkan hook yang sama di bawah [PostToolUseFailure](#posttoolusefailure).2308* Untuk menjalankan hook setelah tool apa pun berhasil diselesaikan, hilangkan `matcher` atau atur ke `"*"`. Hook Anda kemudian dapat menemukan sendiri apa yang berubah, misalnya dengan menjalankan `git status --porcelain`, yang juga mencantumkan file yang tidak terlacak yang terlewat oleh `git diff`. Untuk panggilan tool yang gagal, tambahkan hook yang sama di bawah [PostToolUseFailure](#posttoolusefailure).

2283* Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged). Claude Code tidak menjalankan hook `PostToolUse` yang mencocokkan `Edit|Write` ketika perintah `Bash` atau proses di luar Claude Code menulis ulang file yang sama.2309* Untuk menjalankan hook ketika file tertentu berubah di disk, apa pun yang menulisnya, gunakan [FileChanged](#filechanged). Claude Code tidak menjalankan hook `PostToolUse` yang mencocokkan `Edit|Write` ketika perintah `Bash` atau proses di luar Claude Code menulis ulang file yang sama.

2284 2310 

2285<h4 id="posttooluse-input">2311<h4 id="posttooluse-input">

2286 Input PostToolUse2312 Input PostToolUse

2287</h4>2313</h4>

2288 2314 

2289Hook `PostToolUse` dipicu setelah sebuah tool berhasil dieksekusi. Input mencakup `tool_input`, yaitu argumen yang dikirim ke tool, dan `tool_response`, yaitu hasil yang dikembalikannya. Skema persis untuk keduanya bergantung pada tool. Path `tool_input` untuk tool file tiba dalam format yang sama seperti untuk [PreToolUse](#pretooluse-input): selalu absolut, dengan pemisah bawaan platform, sehingga menggunakan backslash di Windows. Untuk tool MCP, input juga membawa objek [`mcp_server`](#pretooluse-input).2315Hook `PostToolUse` dipicu setelah tool berhasil dieksekusi. Input mencakup `tool_input`, yaitu argumen yang dikirim ke tool, dan `tool_response`, yaitu hasil yang dikembalikannya. Skema persis untuk keduanya bergantung pada tool. Path `tool_input` pada tool file tiba dalam format yang sama seperti untuk [PreToolUse](#pretooluse-input): selalu absolut, dengan separator native platform, jadi backslash di Windows. Untuk tool MCP, input juga membawa objek [`mcp_server`](#pretooluse-input).

2290 2316 

2291```json theme={null}2317```json theme={null}

2292{2318{


2325| `reason` | Penjelasan yang ditampilkan kepada Claude ketika `decision` adalah `"block"` |2351| `reason` | Penjelasan yang ditampilkan kepada Claude ketika `decision` adalah `"block"` |

2326| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |2352| `additionalContext` | String yang ditambahkan ke konteks Claude bersama hasil tool. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

2327| `classifierContext` | Catatan singkat tentang hasil panggilan ini untuk pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan untuk Claude. Lihat [Menganotasi hasil untuk pengklasifikasi auto mode](#annotate-a-result-for-the-auto-mode-classifier). Memerlukan Claude Code v2.1.236 atau lebih baru |2353| `classifierContext` | Catatan singkat tentang hasil panggilan ini untuk pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan untuk Claude. Lihat [Menganotasi hasil untuk pengklasifikasi auto mode](#annotate-a-result-for-the-auto-mode-classifier). Memerlukan Claude Code v2.1.236 atau lebih baru |

2328| `updatedToolOutput` | Mengganti output tool dengan nilai yang diberikan sebelum dikirim ke Claude. Nilai harus sesuai dengan bentuk output tool |2354| `updatedToolOutput` | Menggantikan output tool dengan nilai yang diberikan sebelum dikirim ke Claude. Nilai harus sesuai dengan bentuk output tool |

2329| `updatedMCPToolOutput` | Mengganti output hanya untuk [tool MCP](#match-mcp-tools). Sebaiknya gunakan `updatedToolOutput`, yang berfungsi untuk semua tool |2355| `updatedMCPToolOutput` | Menggantikan output hanya untuk [tool MCP](#match-mcp-tools). Utamakan `updatedToolOutput`, yang berfungsi untuk semua tool |

2330 2356 

2331Contoh di bawah ini mengganti output dari panggilan `Bash`. Nilai pengganti sesuai dengan bentuk output tool `Bash`:2357Contoh di bawah ini menggantikan output dari panggilan `Bash`. Nilai pengganti sesuai dengan bentuk output tool `Bash`:

2332 2358 

2333```json theme={null}2359```json theme={null}

2334{2360{


2346```2372```

2347 2373 

2348<Warning>2374<Warning>

2349 `updatedToolOutput` hanya mengubah apa yang dilihat Claude. Tool sudah berjalan pada saat hook dipicu, sehingga file apa pun yang ditulis, perintah yang dieksekusi, atau permintaan jaringan yang dikirim sudah berlaku. Telemetri seperti span tool OpenTelemetry dan event analitik juga menangkap output asli sebelum hook berjalan. Untuk mencegah atau memodifikasi panggilan tool sebelum dijalankan, gunakan hook [PreToolUse](#pretooluse).2375 `updatedToolOutput` hanya mengubah apa yang dilihat Claude. Tool sudah berjalan pada saat hook dipicu, sehingga file apa pun yang ditulis, perintah yang dieksekusi, atau permintaan jaringan yang dikirim sudah berlaku. Telemetri seperti span tool OpenTelemetry dan event analitik juga menangkap output asli sebelum hook berjalan. Untuk mencegah atau memodifikasi panggilan tool sebelum berjalan, gunakan hook [PreToolUse](#pretooluse) sebagai gantinya.

2350 2376 

2351 Nilai pengganti harus sesuai dengan bentuk output tool. Tool bawaan mengembalikan objek terstruktur, bukan string biasa. Misalnya, `Bash` mengembalikan objek dengan field `stdout`, `stderr`, `interrupted`, dan `isImage`. Untuk tool bawaan, nilai yang tidak sesuai dengan skema output tool akan diabaikan dan output asli yang digunakan. Output tool MCP diteruskan tanpa validasi skema. Menghapus detail error yang dibutuhkan Claude dapat menyebabkannya melanjutkan berdasarkan asumsi yang salah.2377 Nilai pengganti harus sesuai dengan bentuk output tool. Tool bawaan mengembalikan objek terstruktur, bukan string biasa. Misalnya, `Bash` mengembalikan objek dengan field `stdout`, `stderr`, `interrupted`, dan `isImage`. Untuk tool bawaan, nilai yang tidak sesuai dengan skema output tool akan diabaikan dan output asli yang digunakan. Output tool MCP diteruskan tanpa validasi skema. Menghapus detail error yang dibutuhkan Claude dapat menyebabkannya melanjutkan berdasarkan asumsi yang salah.

2352</Warning>2378</Warning>


2355 Menganotasi hasil untuk pengklasifikasi auto mode2381 Menganotasi hasil untuk pengklasifikasi auto mode

2356</h4>2382</h4>

2357 2383 

2358Kembalikan `classifierContext` untuk mengirim catatan singkat tentang hasil panggilan tool ke pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan ke Claude. Pengklasifikasi [tidak pernah menerima hasil tool itu sendiri](/docs/id/permission-modes#how-the-classifier-evaluates-actions), sehingga field ini adalah cara yang didukung untuk memberi tahu pengklasifikasi sesuatu tentang apa yang dikembalikan oleh sebuah panggilan sebelum meninjau tindakan berikutnya. Field ini memerlukan Claude Code v2.1.236 atau lebih baru.2384Kembalikan `classifierContext` untuk mengirim catatan singkat tentang hasil panggilan tool ke pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), bukan ke Claude. Pengklasifikasi [tidak pernah menerima hasil tool itu sendiri](/docs/id/permission-modes#how-the-classifier-evaluates-actions), sehingga field ini adalah cara yang didukung untuk memberi tahunya sesuatu tentang apa yang dikembalikan oleh panggilan sebelum pengklasifikasi meninjau tindakan selanjutnya. Field ini memerlukan Claude Code v2.1.236 atau lebih baru.

2359 2385 

2360Contoh di bawah ini memberi tahu pengklasifikasi dari mana output sebuah query berasal:2386Contoh di bawah ini memberi tahu pengklasifikasi dari mana output kueri berasal:

2361 2387 

2362```json theme={null}2388```json theme={null}

2363{2389{


2368}2394}

2369```2395```

2370 2396 

2371Seberapa besar bobot yang diberikan pengklasifikasi pada catatan tersebut bergantung pada di mana Anda mengonfigurasi hook:2397Seberapa besar bobot yang diberikan pengklasifikasi pada catatan tersebut bergantung pada tempat Anda mengonfigurasi hook:

2372 2398 

2373* **Hook yang dikonfigurasi di Claude Code**: untuk hook dari file pengaturan, plugin, skill, dan frontmatter agent, pengklasifikasi memperlakukan catatan sebagai konteks yang disediakan aplikasi dan belum diverifikasi. Catatan tersebut tidak pernah menetapkan niat pengguna, dan jika catatan mengklaim bahwa Anda menyetujui atau meminta sesuatu, pengklasifikasi memeriksa klaim tersebut terhadap pesan Anda sendiri dalam percakapan2399* **Hook yang dikonfigurasi di Claude Code**: untuk hook dari file pengaturan, plugin, skill, dan frontmatter agent, pengklasifikasi memperlakukan catatan sebagai konteks yang tidak terverifikasi dan disediakan oleh aplikasi. Catatan tidak pernah menetapkan niat pengguna, dan jika catatan mengklaim bahwa Anda menyetujui atau meminta sesuatu, pengklasifikasi memeriksa klaim tersebut terhadap pesan Anda sendiri dalam percakapan

2374* **Callback Agent SDK dalam proses**: ketika aplikasi yang menyematkan Claude Code mendaftarkan hook sebagai [callback TypeScript SDK](/docs/id/agent-sdk/hooks) dan mengembalikan catatan selama sesi aktif, pengklasifikasi dapat menimbang pernyataan pengguna yang diteruskan dalam catatan sebagai niat pengguna. Pernyataan semacam itu dapat memenuhi persyaratan persetujuan yang akan diterima pengklasifikasi dari pesan yang Anda kirim, tetapi tidak pernah mencabut blokir yang juga tidak dapat dicabut oleh pesan Anda sendiri. Setelah sesi dilanjutkan, Claude Code memperlakukan catatan yang dipulihkan sebagai konteks yang belum diverifikasi. Ketika hook dari kedua kelompok menganotasi panggilan yang sama, pengklasifikasi memperlakukan catatan gabungan sebagai belum diverifikasi2400* **Callback Agent SDK in-process**: ketika aplikasi yang menyematkan Claude Code mendaftarkan hook sebagai [callback TypeScript SDK](/docs/id/agent-sdk/hooks) dan mengembalikan catatan selama sesi aktif, pengklasifikasi dapat menimbang pernyataan pengguna yang diteruskan dalam catatan sebagai niat pengguna. Pernyataan semacam itu dapat memenuhi persyaratan persetujuan yang akan diterima pengklasifikasi dari pesan yang Anda kirim, tetapi tidak pernah mencabut blokir yang juga tidak dapat dicabut oleh pesan Anda sendiri. Setelah sesi dilanjutkan, Claude Code memperlakukan catatan yang dipulihkan sebagai konteks yang tidak terverifikasi. Ketika hook dari kedua kelompok menganotasi panggilan yang sama, pengklasifikasi memperlakukan catatan gabungan sebagai tidak terverifikasi

2375 2401 

2376Claude Code menerapkan batasan berikut saat menyampaikan catatan:2402Claude Code menerapkan batasan berikut saat mengirimkan catatan:

2377 2403 

2378* **Panjang**: Claude Code membatasi catatan untuk satu panggilan tool hingga 2.000 karakter dan memotong sisanya. Batas ini dibagi di antara setiap hook yang merespons panggilan tersebut2404* **Panjang**: Claude Code membatasi catatan untuk satu panggilan tool hingga 2.000 karakter dan memotong sisanya. Batas ini dibagi di antara setiap hook yang merespons panggilan tersebut

2379* **Hanya respons sinkron**: Claude Code mengabaikan field ini dalam respons hook yang [berjalan di latar belakang](#run-hooks-in-the-background), karena respons tersebut tiba setelah Claude Code mencatat hasil tool2405* **Hanya respons sinkron**: Claude Code mengabaikan field ini dalam respons hook yang [berjalan di latar belakang](#run-hooks-in-the-background), karena respons tersebut tiba setelah Claude Code mencatat hasil tool

2380* **Panggilan yang tidak dicatat pengklasifikasi**: transkrip pengklasifikasi menghilangkan pencarian read-only seperti pembacaan file dan pencarian. Claude Code membuang catatan yang dilampirkan pada salah satu panggilan tersebut2406* **Panggilan yang tidak dicatat pengklasifikasi**: transkrip pengklasifikasi menghilangkan pencarian read-only seperti pembacaan file dan pencarian. Claude Code membuang catatan yang dilampirkan pada salah satu panggilan tersebut

2381* **Interaksi dengan penulisan ulang**: ketika catatan menjelaskan output yang Anda ganti dengan `updatedToolOutput`, kembalikan kedua field dalam respons hook yang sama. Claude Code membuang catatan jika penulisan ulang tersebut ditolak atau penulisan ulang dari hook lain menggantikannya. Claude Code menyampaikan catatan yang Anda kembalikan tanpa penulisan ulang meskipun hook lain menulis ulang output2407* **Interaksi dengan penulisan ulang**: ketika catatan mendeskripsikan output yang Anda ganti dengan `updatedToolOutput`, kembalikan kedua field dalam respons hook yang sama. Claude Code membuang catatan jika penulisan ulang tersebut ditolak atau penulisan ulang dari hook lain menggantikannya. Claude Code mengirimkan catatan yang Anda kembalikan tanpa penulisan ulang bahkan ketika hook lain menulis ulang output

2382 2408 

2383<Warning>2409<Warning>

2384 Pengklasifikasi membaca konten yang Anda tempatkan di `classifierContext` sebagai informasi dari aplikasi yang meng-host sesi, jadi jangan salin output tool yang tidak tepercaya atau teks pihak ketiga ke dalamnya. Batasi catatan pada pernyataan singkat tentang satu panggilan ini, seperti fakta tentang asalnya atau pernyataan pengguna tentangnya; jangan gunakan field ini untuk menyampaikan pesan yang tidak terkait atau serangkaian event.2410 Pengklasifikasi membaca konten yang Anda tempatkan di `classifierContext` sebagai informasi dari aplikasi yang menghosting sesi, jadi jangan menyalin output tool yang tidak tepercaya atau teks pihak ketiga ke dalamnya. Batasi catatan pada pernyataan singkat tentang satu panggilan ini, seperti fakta tentang asalnya atau pernyataan pengguna tentangnya; jangan gunakan field ini untuk mengirimkan pesan yang tidak terkait atau aliran event.

2385</Warning>2411</Warning>

2386 2412 

2387<h3 id="posttoolusefailure">2413<h3 id="posttoolusefailure">


2390 2416 

2391Berjalan ketika tool yang mulai dieksekusi gagal: tool melempar error, atau tool MCP mengembalikan hasil error. Gunakan ini untuk mencatat kegagalan, mengirim peringatan, atau memberikan umpan balik korektif kepada Claude.2417Berjalan ketika tool yang mulai dieksekusi gagal: tool melempar error, atau tool MCP mengembalikan hasil error. Gunakan ini untuk mencatat kegagalan, mengirim peringatan, atau memberikan umpan balik korektif kepada Claude.

2392 2418 

2393Mencocokkan nama tool, dengan nilai yang sama seperti PreToolUse.2419Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2394 2420 

2395<Note>2421<Note>

2396 Event ini tidak dipicu untuk panggilan tool yang ditolak sebelum eksekusi: nama tool yang tidak dikenal, input yang gagal validasi skema atau validasi khusus tool, atau penolakan izin. Penolakan validasi dikembalikan sebagai hasil `tool_use_error` dan terjadi sebelum hook berjalan, sehingga tidak memicu `PreToolUse` maupun `PostToolUseFailure`. Penolakan izin memicu `PreToolUse` tetapi tidak memicu event ini; lihat [PermissionDenied](#permissiondenied).2422 Event ini tidak dipicu untuk panggilan tool yang ditolak sebelum eksekusi: nama tool yang tidak dikenal, input yang gagal dalam validasi skema atau validasi khusus tool, atau penolakan izin. Penolakan validasi dikembalikan sebagai hasil `tool_use_error` dan terjadi sebelum hook berjalan, sehingga tidak memicu `PreToolUse` maupun `PostToolUseFailure`. Penolakan izin memicu `PreToolUse` tetapi tidak memicu event ini; lihat [PermissionDenied](#permissiondenied).

2397</Note>2423</Note>

2398 2424 

2399<h4 id="posttoolusefailure-input">2425<h4 id="posttoolusefailure-input">

2400 Input PostToolUseFailure2426 Input PostToolUseFailure

2401</h4>2427</h4>

2402 2428 

2403Hook PostToolUseFailure menerima field `tool_name` dan `tool_input` yang sama seperti PostToolUse, beserta informasi error sebagai field tingkat atas. Untuk tool MCP, hook juga menerima objek [`mcp_server`](#pretooluse-input). Misalnya, perintah `npm test` yang gagal mungkin mengirimkan:2429Hook PostToolUseFailure menerima field `tool_name` dan `tool_input` yang sama seperti PostToolUse, bersama dengan informasi error sebagai field tingkat atas. Untuk tool MCP, hook ini juga menerima objek [`mcp_server`](#pretooluse-input). Misalnya, perintah `npm test` yang gagal mungkin mengirimkan:

2404 2430 

2405```json theme={null}2431```json theme={null}

2406{2432{


2423 2449 

2424| Field | Deskripsi |2450| Field | Deskripsi |

2425| :- | :- |2451| :- | :- |

2426| `error` | String yang menjelaskan apa yang salah. Formatnya bergantung pada tool yang gagal |2452| `error` | String yang mendeskripsikan apa yang salah. Formatnya bergantung pada tool yang gagal |

2427| `is_interrupt` | Boolean opsional. True ketika kegagalan mencapai Claude Code sebagai pembatalan (abort), bukan sebagai error yang dilaporkan tool. Membatalkan tool yang sedang berjalan tidak memicu hook ini; hasil tool membawa pesan interupsi sebagai gantinya |2453| `is_interrupt` | Boolean opsional. True ketika kegagalan mencapai Claude Code sebagai pembatalan (abort), bukan sebagai error yang dilaporkan tool. Membatalkan tool yang sedang berjalan tidak memicu hook ini; hasil tool membawa pesan interupsi sebagai gantinya |

2428| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Tidak termasuk waktu yang dihabiskan dalam permintaan izin dan hook PreToolUse |2454| `duration_ms` | Opsional. Waktu eksekusi tool dalam milidetik. Tidak termasuk waktu yang dihabiskan dalam permintaan izin dan hook PreToolUse |

2429 2455 


2456 PostToolBatch2482 PostToolBatch

2457</h3>2483</h3>

2458 2484 

2459Berjalan sekali setelah setiap panggilan tool dalam satu batch selesai, sebelum Claude Code mengirim permintaan berikutnya ke model. `PostToolUse` dipicu sekali per tool, yang berarti dipicu secara bersamaan ketika Claude melakukan panggilan tool paralel. `PostToolBatch` dipicu tepat sekali dengan batch lengkap, sehingga ini adalah tempat yang tepat untuk menyuntikkan konteks yang bergantung pada kumpulan tool yang berjalan, bukan pada satu tool tertentu. Tidak ada matcher untuk event ini.2485Berjalan sekali setelah setiap panggilan tool dalam satu batch telah diselesaikan, sebelum Claude Code mengirim permintaan berikutnya ke model. `PostToolUse` dipicu sekali per tool, yang berarti dipicu secara bersamaan ketika Claude melakukan panggilan tool paralel. `PostToolBatch` dipicu tepat sekali dengan batch lengkap, sehingga menjadi tempat yang tepat untuk menyisipkan konteks yang bergantung pada kumpulan tool yang berjalan, bukan pada satu tool tertentu. Tidak ada matcher untuk event ini.

2460 2486 

2461<h4 id="posttoolbatch-input">2487<h4 id="posttoolbatch-input">

2462 Input PostToolBatch2488 Input PostToolBatch

2463</h4>2489</h4>

2464 2490 

2465Selain [field input umum](#common-input-fields), hook PostToolBatch menerima `tool_calls`, sebuah array yang menjelaskan setiap panggilan tool dalam batch:2491Selain [field input umum](#common-input-fields), hook PostToolBatch menerima `tool_calls`, yaitu array yang mendeskripsikan setiap panggilan tool dalam batch:

2466 2492 

2467```json theme={null}2493```json theme={null}

2468{2494{


2488}2514}

2489```2515```

2490 2516 

2491`tool_response` berisi konten yang sama yang diterima model dalam blok `tool_result` yang bersesuaian. Nilainya adalah string terserialisasi atau array content-block, persis seperti yang dikeluarkan tool. Untuk `Read`, artinya teks yang diawali nomor baris, bukan konten file mentah. Respons bisa berukuran besar, jadi parse hanya field yang Anda butuhkan.2517`tool_response` berisi konten yang sama yang diterima model dalam blok `tool_result` yang bersangkutan. Nilainya adalah string yang diserialisasi atau array content-block, persis seperti yang dikeluarkan tool. Untuk `Read`, itu berarti teks dengan awalan nomor baris, bukan konten file mentah. Respons bisa berukuran besar, jadi parse hanya field yang Anda butuhkan.

2492 2518 

2493<Note>2519<Note>

2494 Bentuk `tool_response` berbeda dari milik `PostToolUse`. `PostToolUse` meneruskan objek `Output` terstruktur milik tool, seperti `{filePath: "...", type: "create"}` untuk `Write`; `PostToolBatch` meneruskan konten `tool_result` terserialisasi yang dilihat model.2520 Bentuk `tool_response` berbeda dari milik `PostToolUse`. `PostToolUse` meneruskan objek `Output` terstruktur dari tool, seperti `{filePath: "...", type: "create"}` untuk `Write`; `PostToolBatch` meneruskan konten `tool_result` terserialisasi yang dilihat model.

2495</Note>2521</Note>

2496 2522 

2497<h4 id="posttoolbatch-decision-control">2523<h4 id="posttoolbatch-decision-control">

2498 Kontrol keputusan PostToolBatch2524 Kontrol keputusan PostToolBatch

2499</h4>2525</h4>

2500 2526 

2501Hook `PostToolBatch` dapat menyuntikkan konteks untuk Claude. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:2527Hook `PostToolBatch` dapat menyisipkan konteks untuk Claude. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, skrip hook Anda dapat mengembalikan field khusus event berikut:

2502 2528 

2503| Field | Deskripsi |2529| Field | Deskripsi |

2504| :- | :- |2530| :- | :- |

2505| `additionalContext` | String konteks yang disuntikkan sekali sebelum panggilan model berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) untuk detail penyampaian, apa yang harus dimasukkan, dan bagaimana sesi yang dilanjutkan menangani nilai sebelumnya |2531| `additionalContext` | String konteks yang disisipkan sekali sebelum panggilan model berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) untuk detail pengiriman, apa yang perlu dimasukkan, dan bagaimana sesi yang dilanjutkan menangani nilai sebelumnya |

2506 2532 

2507```json theme={null}2533```json theme={null}

2508{2534{


2513}2539}

2514```2540```

2515 2541 

2516Mengembalikan `decision: "block"` atau `continue: false` menghentikan agentic loop sebelum panggilan model berikutnya. Pesan pemblokiran berasal dari `reason` atau `stopReason` JSON, atau dari stderr pada exit 2. Anda melihatnya sebagai peringatan di transkrip, dan pesan tersebut tetap berada dalam percakapan, sehingga Claude melihatnya ketika percakapan berlanjut.2542Mengembalikan `decision: "block"` atau `continue: false` menghentikan agentic loop sebelum panggilan model berikutnya. Pesan pemblokiran berasal dari `reason` atau `stopReason` JSON, atau dari stderr pada exit 2. Anda melihatnya sebagai peringatan di transkrip, dan pesan tersebut tetap ada dalam percakapan, sehingga Claude melihatnya ketika percakapan berlanjut.

2517 2543 

2518<h3 id="permissiondenied">2544<h3 id="permissiondenied">

2519 PermissionDenied2545 PermissionDenied

2520</h3>2546</h3>

2521 2547 

2522Berjalan ketika [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) menolak panggilan tool, termasuk ketika menolak tanpa putusan pengklasifikasi karena [pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action) atau responsnya tidak dapat di-parse. Hook ini hanya dipicu dalam auto mode: hook ini tidak berjalan ketika Anda menolak dialog izin secara manual, ketika hook `PreToolUse` memblokir panggilan, atau ketika aturan `deny` cocok. Gunakan untuk mencatat penolakan, menyesuaikan konfigurasi, atau memberi tahu model bahwa ia boleh mencoba ulang panggilan tool.2548Berjalan ketika [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) menolak panggilan tool, termasuk ketika menolak tanpa putusan pengklasifikasi karena [pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action) atau responsnya tidak dapat di-parse. Hook ini hanya dipicu dalam auto mode: hook ini tidak berjalan ketika Anda menolak dialog izin secara manual, ketika hook `PreToolUse` memblokir panggilan, atau ketika aturan `deny` cocok. Gunakan ini untuk mencatat penolakan, menyesuaikan konfigurasi, atau memberi tahu model bahwa model dapat mencoba ulang panggilan tool.

2523 2549 

2524Mencocokkan nama tool, dengan nilai yang sama seperti PreToolUse.2550Mencocokkan berdasarkan nama tool, dengan nilai yang sama seperti PreToolUse.

2525 2551 

2526<h4 id="permissiondenied-input">2552<h4 id="permissiondenied-input">

2527 Input PermissionDenied2553 Input PermissionDenied

2528</h4>2554</h4>

2529 2555 

2530Selain [field input umum](#common-input-fields), hook PermissionDenied menerima `tool_name`, `tool_input`, `tool_use_id`, dan `reason`. Untuk tool MCP, hook juga menerima objek [`mcp_server`](#pretooluse-input).2556Selain [field input umum](#common-input-fields), hook PermissionDenied menerima `tool_name`, `tool_input`, `tool_use_id`, dan `reason`. Untuk tool MCP, hook ini juga menerima objek [`mcp_server`](#pretooluse-input).

2531 2557 

2532```json theme={null}2558```json theme={null}

2533{2559{


2548 2574 

2549| Field | Deskripsi |2575| Field | Deskripsi |

2550| :- | :- |2576| :- | :- |

2551| `reason` | Alasan penolakan. Untuk putusan pengklasifikasi, di sebagian besar sesi berisi nama aturan yang cocok dalam kurung siku, seperti `[Data Exfiltration]`; lihat [Meninjau penolakan](/docs/id/auto-mode-config#review-denials) untuk bentuk lainnya. Untuk [penolakan tanpa putusan](#permissiondenied-decision-control), diawali dengan `Auto mode could not evaluate this action and is blocking it for safety`. Untuk penolakan karena model pengklasifikasi tidak tersedia, berisi teks tetap `Classifier unavailable` |2577| `reason` | Alasan penolakan. Untuk putusan pengklasifikasi, di sebagian besar sesi alasan ini menyebutkan aturan yang cocok dalam tanda kurung siku, seperti `[Data Exfiltration]`; lihat [Meninjau penolakan](/docs/id/auto-mode-config#review-denials) untuk bentuk lainnya. Untuk [penolakan tanpa putusan](#permissiondenied-decision-control), alasan dimulai dengan `Auto mode could not evaluate this action and is blocking it for safety`. Untuk penolakan karena model pengklasifikasi tidak tersedia, alasannya adalah teks tetap `Classifier unavailable` |

2552 2578 

2553<h4 id="permissiondenied-decision-control">2579<h4 id="permissiondenied-decision-control">

2554 Kontrol keputusan PermissionDenied2580 Kontrol keputusan PermissionDenied

2555</h4>2581</h4>

2556 2582 

2557Hook PermissionDenied dapat memberi tahu model bahwa ia boleh mencoba ulang panggilan tool yang ditolak. Kembalikan objek JSON dengan `hookSpecificOutput.retry` disetel ke `true`:2583Hook PermissionDenied dapat memberi tahu model bahwa model dapat mencoba ulang panggilan tool yang ditolak. Kembalikan objek JSON dengan `hookSpecificOutput.retry` diatur ke `true`:

2558 2584 

2559```json theme={null}2585```json theme={null}

2560{2586{


2565}2591}

2566```2592```

2567 2593 

2568Ketika `retry` bernilai `true`, Claude Code menambahkan pesan ke percakapan yang memberi tahu model bahwa ia boleh mencoba ulang panggilan tool. Claude Code tidak membatalkan penolakan itu sendiri. Jika hook Anda tidak mengembalikan JSON, atau mengembalikan `retry: false`, penolakan tetap berlaku dan model menerima pesan penolakan asli.2594Ketika `retry` bernilai `true`, Claude Code menambahkan pesan ke percakapan yang memberi tahu model bahwa model dapat mencoba ulang panggilan tool. Claude Code tidak membatalkan penolakan itu sendiri. Jika hook Anda tidak mengembalikan JSON, atau mengembalikan `retry: false`, penolakan tetap berlaku dan model menerima pesan penolakan asli.

2569 2595 

2570Claude Code mengabaikan `retry: true` ketika pengklasifikasi [tidak menghasilkan putusan atas tindakan tersebut](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action): responsnya tidak dapat di-parse, atau pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri. Untuk penolakan tersebut, Claude Code sudah memberi tahu model dalam pesan penolakan apakah harus mencoba ulang nanti atau melanjutkan.2596Claude Code mengabaikan `retry: true` ketika pengklasifikasi tidak menghasilkan [putusan atas tindakan tersebut](/docs/id/errors#auto-mode-cannot-determine-the-safety-of-an-action): responsnya tidak dapat di-parse, atau pemeriksaan keamanan yang terpisah dari auto mode menolak permintaan pengklasifikasi itu sendiri. Untuk penolakan tersebut, Claude Code sudah memberi tahu model dalam pesan penolakan apakah harus mencoba ulang nanti atau melanjutkan.

2571 2597 

2572<h3 id="notification">2598<h3 id="notification">

2573 Notification2599 Notification

2574</h3>2600</h3>

2575 2601 

2576Berjalan ketika Claude Code mengirim notifikasi. Mencocokkan jenis notifikasi. Hilangkan matcher untuk menjalankan hook untuk semua jenis notifikasi.2602Berjalan ketika Claude Code mengirim notifikasi. Mencocokkan berdasarkan jenis notifikasi. Hilangkan matcher untuk menjalankan hook untuk semua jenis notifikasi.

2577 2603 

2578Anda menerima event hook ini bahkan ketika notifikasi desktop dimatikan: pengaturan `preferredNotifChannel`, termasuk `notifications_disabled`, hanya mengubah cara Anda diberi peringatan, bukan apakah hook Anda berjalan.2604Anda menerima event hook ini bahkan ketika notifikasi desktop dimatikan: pengaturan `preferredNotifChannel`, termasuk `notifications_disabled`, hanya mengubah cara Anda diberi peringatan, bukan apakah hook Anda berjalan.

2579 2605 


2588| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |2614| `elicitation_response` | Respons elicitation MCP dikirim kembali ke server |

2589| `agent_needs_input` | Sesi latar belakang mulai menunggu input Anda saat [agent view](/docs/id/agent-view) terbuka di terminal. Juga dipicu ketika sesi terminal menampilkan kepada Anda [pertanyaan penyiapan terminal dari rekan tim agent](/docs/id/agent-teams#choose-a-display-mode) atau pemberitahuan auto mode tentang [biaya permintaan pengklasifikasi](/docs/id/auto-mode-classifier-billing) dan Anda belum mengetik selama sekitar enam detik |2615| `agent_needs_input` | Sesi latar belakang mulai menunggu input Anda saat [agent view](/docs/id/agent-view) terbuka di terminal. Juga dipicu ketika sesi terminal menampilkan kepada Anda [pertanyaan penyiapan terminal dari rekan tim agent](/docs/id/agent-teams#choose-a-display-mode) atau pemberitahuan auto mode tentang [biaya permintaan pengklasifikasi](/docs/id/auto-mode-classifier-billing) dan Anda belum mengetik selama sekitar enam detik |

2590| `agent_completed` | Sesi latar belakang selesai atau gagal. Hanya dipicu saat [agent view](/docs/id/agent-view) terbuka di terminal |2616| `agent_completed` | Sesi latar belakang selesai atau gagal. Hanya dipicu saat [agent view](/docs/id/agent-view) terbuka di terminal |

2591| `quota_auto_resume_fired` | Claude Code melanjutkan tugas Anda setelah batas penggunaan claude.ai menjedanya: pada saat reset, atau lebih cepat ketika sesuatu yang Anda lakukan di Claude Code selama menunggu, seperti menambahkan kredit penggunaan, meningkatkan paket Anda, atau berpindah model, membuat penggunaan tersedia kembali, dengan [pengecualian pengaturan model](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset) |2617| `quota_auto_resume_fired` | Claude Code melanjutkan tugas Anda setelah batas penggunaan claude.ai menjedanya: pada saat reset, atau lebih cepat ketika sesuatu yang Anda lakukan di Claude Code selama menunggu, seperti menambahkan kredit penggunaan, meningkatkan paket Anda, atau beralih model, membuat penggunaan tersedia kembali, dengan [pengecualian pengaturan model](/docs/id/interactive-mode#wait-for-a-usage-limit-to-reset) |

2592| `quota_auto_resume_stale` | Batas penggunaan claude.ai di-reset saat komputer Anda dalam mode tidur selama lebih dari sekitar 30 menit. Claude Code menunggu Anda menekan `Enter` alih-alih melanjutkan. Setelah tidur yang lebih singkat, Claude Code melanjutkan dan memicu `quota_auto_resume_fired` sebagai gantinya |2618| `quota_auto_resume_stale` | Batas penggunaan claude.ai di-reset saat komputer Anda dalam mode tidur selama lebih dari sekitar 30 menit. Claude Code menunggu Anda menekan `Enter` alih-alih melanjutkan. Setelah tidur yang lebih singkat, Claude Code melanjutkan dan memicu `quota_auto_resume_fired` sebagai gantinya |

2593| `quota_auto_resume_disabled` | Claude Code mengakhiri penantiannya atas batas penggunaan claude.ai tanpa melanjutkan tugas Anda: [`autoContinueAtUsageLimit`](/docs/id/settings-reference#autocontinueatusagelimit) dimatikan atau reset bergeser lebih dari 24 jam ke depan selama penantian yang dimulai Claude Code sendiri, tugas yang dilanjutkan terus mencapai batas, atau kelanjutan diblokir sebelum mencapai model. Tidak dipicu ketika Anda menekan `Esc` atau `Ctrl+C`, atau memilih **Don't continue automatically** |2619| `quota_auto_resume_disabled` | Claude Code mengakhiri penantiannya untuk batas penggunaan claude.ai tanpa melanjutkan tugas Anda: [`autoContinueAtUsageLimit`](/docs/id/settings-reference#autocontinueatusagelimit) dimatikan atau reset bergeser lebih dari 24 jam selama penantian yang dimulai Claude Code sendiri, tugas yang dilanjutkan terus mencapai batas, atau kelanjutan diblokir sebelum mencapai model. Tidak dipicu ketika Anda menekan `Esc` atau `Ctrl+C`, atau memilih **Don't continue automatically** |

2594 2620 

2595Jenis `quota_auto_resume_fired`, `quota_auto_resume_stale`, dan `quota_auto_resume_disabled` memerlukan Claude Code v2.1.234 atau lebih baru.2621Jenis `quota_auto_resume_fired`, `quota_auto_resume_stale`, dan `quota_auto_resume_disabled` memerlukan Claude Code v2.1.234 atau lebih baru.

2596 2622 


2599`agent_needs_input` untuk pertanyaan penyiapan terminal dari rekan tim memerlukan Claude Code v2.1.248 atau lebih baru.2625`agent_needs_input` untuk pertanyaan penyiapan terminal dari rekan tim memerlukan Claude Code v2.1.248 atau lebih baru.

2600 2626 

2601<Note>2627<Note>

2602 Jenis `permission_prompt`, `idle_prompt`, `elicitation_dialog`, dan `elicitation_url_dialog` berbagi waktu yang sama dengan notifikasi desktop, sehingga dalam sesi terminal Anda hanya melihatnya ketika Anda tampak sedang tidak berada di terminal:2628 Jenis `permission_prompt`, `idle_prompt`, `elicitation_dialog`, dan `elicitation_url_dialog` berbagi pengaturan waktu dengan notifikasi desktop, sehingga dalam sesi terminal Anda hanya melihatnya ketika Anda tampak jauh dari terminal:

2603 2629 

2604 * Harapkan `permission_prompt` setelah Anda tidak mengetik selama sekitar enam detik. Timer dimulai saat permintaan izin muncul, dan setiap penekanan tombol menundanya. Untuk menjalankan hook segera ketika Claude meminta izin untuk menggunakan tool, gunakan [PermissionRequest](#permissionrequest) sebagai gantinya.2630 * Harapkan `permission_prompt` setelah Anda tidak mengetik selama sekitar enam detik. Timer dimulai ketika permintaan izin muncul, dan setiap penekanan tombol menundanya. Untuk menjalankan hook segera ketika Claude meminta izin untuk menggunakan tool, gunakan [PermissionRequest](#permissionrequest) sebagai gantinya.

2605 * Harapkan `idle_prompt` sekitar 60 detik setelah Claude selesai merespons, dan hanya jika Anda belum mengetik sejak itu dan tidak ada agent latar belakang, seperti [subagent](/docs/id/sub-agents) latar belakang, yang masih berjalan. Claude Code tidak mengirim `idle_prompt` saat menunggu batas penggunaan claude.ai di-reset. Ketika penantian berakhir dengan sendirinya, salah satu jenis `quota_auto_resume_*` dipicu sebagai gantinya.2631 * Harapkan `idle_prompt` sekitar 60 detik setelah Claude selesai merespons, dan hanya jika Anda belum mengetik sejak itu dan tidak ada agent latar belakang, seperti [subagent](/docs/id/sub-agents) latar belakang, yang masih berjalan. Claude Code tidak mengirim `idle_prompt` saat menunggu batas penggunaan claude.ai di-reset. Ketika penantian berakhir dengan sendirinya, salah satu jenis `quota_auto_resume_*` dipicu sebagai gantinya.

2606 * Harapkan `elicitation_dialog` untuk formulir elicitation, atau `elicitation_url_dialog` untuk permintaan URL browser, setelah Anda tidak mengetik selama sekitar enam detik. Keduanya berbagi batas enam detik yang sama dengan `permission_prompt`: timer dimulai saat dialog muncul, dan setiap penekanan tombol menundanya.2632 * Harapkan `elicitation_dialog` untuk formulir elicitation, atau `elicitation_url_dialog` untuk permintaan URL browser, setelah Anda tidak mengetik selama sekitar enam detik. Keduanya berbagi gerbang enam detik yang sama dengan `permission_prompt`: timer dimulai ketika dialog muncul, dan setiap penekanan tombol menundanya.

2607 2633 

2608 Permintaan izin atau elicitation yang tiba saat dialog lain sedang tampil di layar tetap menggunakan batas enam detik yang sama, dihitung sejak permintaan tiba. Notifikasinya dapat sampai kepada Anda saat permintaan tersebut masih menunggu di belakang dialog yang terbuka.2634 Permintaan izin atau elicitation yang tiba saat dialog lain sedang ditampilkan di layar tetap menggunakan gerbang enam detik yang sama, dihitung sejak permintaan tiba. Notifikasinya dapat mencapai Anda saat permintaan masih menunggu di belakang dialog yang terbuka.

2609</Note>2635</Note>

2610 2636 

2611Claude Code mengatur waktu `permission_prompt` secara berbeda dalam sesi di mana Claude Code mengirim permintaan izin ke [callback `canUseTool`](/docs/id/agent-sdk/user-input) milik Agent SDK, yaitu cara Claude Desktop dan ekstensi VS Code meng-host Claude Code:2637Claude Code mengatur waktu `permission_prompt` secara berbeda dalam sesi di mana Claude Code mengirim permintaan izin ke [callback `canUseTool`](/docs/id/agent-sdk/user-input) milik Agent SDK, yang merupakan cara Claude Desktop dan ekstensi VS Code menghosting Claude Code:

2612 2638 

2613* Harapkan `permission_prompt` sekitar enam detik setelah Claude meminta izin. Claude Code tidak menundanya saat Anda mengetik.2639* Harapkan `permission_prompt` sekitar enam detik setelah Claude meminta izin. Claude Code tidak menundanya saat Anda mengetik.

2614* Jika Anda atau hook [PermissionRequest](#permissionrequest) menjawab lebih cepat, Claude Code tidak menjalankan `permission_prompt`.2640* Jika Anda atau hook [PermissionRequest](#permissionrequest) menjawab lebih cepat, Claude Code tidak menjalankan `permission_prompt`.

2615* Setel [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/id/env-vars) ke `1` untuk mematikan `permission_prompt` dalam sesi-sesi ini.2641* Atur [`CLAUDE_CODE_DISABLE_PERMISSION_PROMPT_NOTIFY_HOOKS`](/docs/id/env-vars) ke `1` untuk mematikan `permission_prompt` dalam sesi ini.

2616 2642 

2617Sebelum v2.1.233, `permission_prompt` tidak dipicu dalam sesi-sesi ini.2643Sebelum v2.1.233, `permission_prompt` tidak dipicu dalam sesi ini.

2618 2644 

2619Gunakan matcher terpisah untuk menjalankan handler yang berbeda tergantung pada jenis notifikasi. Konfigurasi ini memicu skrip peringatan khusus izin ketika Claude membutuhkan persetujuan izin dan notifikasi berbeda ketika Claude menganggur:2645Gunakan matcher terpisah untuk menjalankan handler yang berbeda tergantung pada jenis notifikasi. Konfigurasi ini memicu skrip peringatan khusus izin ketika Claude membutuhkan persetujuan izin dan notifikasi yang berbeda ketika Claude sedang idle:

2620 2646 

2621```json theme={null}2647```json theme={null}

2622{2648{


2649 Input Notification2675 Input Notification

2650</h4>2676</h4>

2651 2677 

2652Selain [field input umum](#common-input-fields), hook Notification menerima `message` berisi teks notifikasi, `title` opsional, dan `notification_type` yang menunjukkan jenis mana yang dipicu.2678Selain [field input umum](#common-input-fields), hook Notification menerima `message` dengan teks notifikasi, `title` opsional, dan `notification_type` yang menunjukkan jenis mana yang dipicu.

2653 2679 

2654```json theme={null}2680```json theme={null}

2655{2681{


2663}2689}

2664```2690```

2665 2691 

2666Hook Notification tidak dapat memblokir atau memodifikasi notifikasi. Claude Code membuang field `systemMessage` dan `continue` miliknya tetapi tetap mengeluarkan [`terminalSequence`](#emit-terminal-notifications), yang menjadi andalan contoh notifikasi desktop. Hook Notification ditujukan untuk efek samping seperti meneruskan notifikasi ke layanan eksternal.2692Hook Notification tidak dapat memblokir atau memodifikasi notifikasi. Claude Code membuang field `systemMessage` dan `continue` mereka tetapi tetap mengeluarkan [`terminalSequence`](#emit-terminal-notifications), yang menjadi andalan contoh notifikasi desktop. Hook Notification ditujukan untuk efek samping seperti meneruskan notifikasi ke layanan eksternal.

2667 2693 

2668<h3 id="subagentstart">2694<h3 id="subagentstart">

2669 SubagentStart2695 SubagentStart

2670</h3>2696</h3>

2671 2697 

2672Berjalan ketika Claude memunculkan subagent dengan tool Agent, ketika Claude [melanjutkan subagent](/docs/id/sub-agents#resume-subagents), dan setiap kali rekan tim [tim agent](/docs/id/agent-teams) dalam proses menangani pesan baru. Mendukung matcher untuk memfilter berdasarkan nama jenis agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [subagent kustom](/docs/id/sub-agents), ini adalah field `name` dari frontmatter agent, bukan nama file.2698Berjalan ketika Claude memunculkan subagent dengan tool Agent, ketika Claude [melanjutkan subagent](/docs/id/sub-agents#resume-subagents), dan setiap kali rekan tim [tim agent](/docs/id/agent-teams) in-process menangani pesan baru. Mendukung matcher untuk memfilter berdasarkan nama jenis agent. Untuk agent bawaan, ini adalah nama agent seperti `general-purpose`, `Explore`, atau `Plan`. Untuk [subagent kustom](/docs/id/sub-agents), ini adalah field `name` dari frontmatter agent, bukan nama file.

2673 2699 

2674Untuk subagent yang disertakan oleh [plugin](/docs/id/plugins/overview), jenis agent adalah pengenal dengan cakupan plugin seperti `my-plugin:reviewer`, bukan nama frontmatter polos. Titik dua menempatkan nama dengan cakupan plugin pada jalur regular expression, jadi jangkarkan matcher dengan `^` dan `$` untuk pencocokan persis: `^my-plugin:reviewer$`.2700Untuk subagent yang dikirimkan oleh [plugin](/docs/id/plugins/overview), jenis agent adalah pengidentifikasi dengan cakupan plugin seperti `my-plugin:reviewer`, bukan nama frontmatter polos. Titik dua menempatkan nama dengan cakupan plugin pada jalur ekspresi reguler, jadi jangkarkan matcher dengan `^` dan `$` untuk kecocokan persis: `^my-plugin:reviewer$`.

2675 2701 

2676<h4 id="subagentstart-input">2702<h4 id="subagentstart-input">

2677 Input SubagentStart2703 Input SubagentStart

2678</h4>2704</h4>

2679 2705 

2680Selain [field input umum](#common-input-fields), hook SubagentStart menerima `agent_id` berisi pengenal unik untuk subagent dan `agent_type` berisi nama agent yang difilter oleh matcher.2706Selain [field input umum](#common-input-fields), hook SubagentStart menerima `agent_id` dengan pengidentifikasi unik untuk subagent dan `agent_type` dengan nama agent yang difilter oleh matcher.

2681 2707 

2682```json theme={null}2708```json theme={null}

2683{2709{


2690}2716}

2691```2717```

2692 2718 

2693Hook SubagentStart tidak dapat memblokir pembuatan subagent, tetapi dapat menyuntikkan konteks ke dalam subagent. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan:2719Hook SubagentStart tidak dapat memblokir pembuatan subagent, tetapi dapat menyisipkan konteks ke dalam subagent. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan:

2694 2720 

2695| Field | Deskripsi |2721| Field | Deskripsi |

2696| :- | :- |2722| :- | :- |


2705}2731}

2706```2732```

2707 2733 

2708Ketika hook berjalan lagi untuk subagent yang sama, Claude Code menyuntikkan konteks yang dikembalikan hanya jika konteks subagent belum memuat salinan dari eksekusi sebelumnya. Salinan yang disuntikkan saat peluncuran tetap di tempatnya, sehingga [prompt cache](/docs/id/prompt-caching#subagents-and-the-cache) subagent tetap utuh. Setelah [auto-compaction](/docs/id/sub-agents#auto-compaction) membuang salinan tersebut, Claude Code menyuntikkan konteks dari eksekusi berikutnya lagi.2734Ketika hook berjalan lagi untuk subagent yang sama, Claude Code menyisipkan konteks yang dikembalikan hanya ketika konteks subagent belum memuat salinan dari eksekusi sebelumnya. Salinan yang disisipkan saat peluncuran tetap di tempatnya, sehingga [prompt cache](/docs/id/prompt-caching#subagents-and-the-cache) subagent tetap utuh. Setelah [auto-compaction](/docs/id/sub-agents#auto-compaction) membuang salinan tersebut, Claude Code menyisipkan konteks dari eksekusi berikutnya lagi.

2709 2735 

2710<h3 id="subagentstop">2736<h3 id="subagentstop">

2711 SubagentStop2737 SubagentStop

2712</h3>2738</h3>

2713 2739 

2714Berjalan ketika subagent Claude Code selesai merespons. Mencocokkan jenis agent, dengan nilai yang sama seperti SubagentStart.2740Berjalan ketika subagent Claude Code selesai merespons. Mencocokkan berdasarkan jenis agent, dengan nilai yang sama seperti SubagentStart.

2715 2741 

2716<h4 id="subagentstop-input">2742<h4 id="subagentstop-input">

2717 Input SubagentStop2743 Input SubagentStop

2718</h4>2744</h4>

2719 2745 

2720Selain [field input umum](#common-input-fields), hook SubagentStop menerima `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, dan `last_assistant_message`. Field `agent_type` adalah nilai yang digunakan untuk pemfilteran matcher. `transcript_path` adalah transkrip sesi utama, sedangkan `agent_transcript_path` adalah transkrip milik subagent sendiri yang disimpan dalam folder `subagents/` bersarang. Field `last_assistant_message` berisi konten teks dari respons akhir subagent, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip.2746Selain [field input umum](#common-input-fields), hook SubagentStop menerima `stop_hook_active`, `agent_id`, `agent_type`, `agent_transcript_path`, dan `last_assistant_message`. Field `agent_type` adalah nilai yang digunakan untuk pemfilteran matcher. `transcript_path` adalah transkrip sesi utama, sedangkan `agent_transcript_path` adalah transkrip milik subagent itu sendiri yang disimpan dalam folder `subagents/` bersarang. Field `last_assistant_message` berisi konten teks dari respons akhir subagent, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip.

2721 2747 

2722Tidak setiap event SubagentStop berasal dari subagent yang dimunculkan Claude. Claude Code juga menjalankan agent internal untuk beberapa fiturnya sendiri, seperti [saran prompt](/docs/id/interactive-mode#prompt-suggestions) dan [pertanyaan sampingan `/btw`](/docs/id/interactive-mode#side-questions-with-%2Fbtw), dan SubagentStop juga dipicu ketika salah satunya selesai. Untuk event tersebut, `agent_type` adalah nama agent yang dijalankan oleh sesi itu sendiri, seperti yang disetel dengan [`--agent`](/docs/id/cli-reference#cli-flags) atau [pengaturan `agent`](/docs/id/settings-reference#agent), dan berupa string kosong ketika sesi berjalan tanpa agent tersebut.2748Tidak setiap event SubagentStop berasal dari subagent yang dimunculkan Claude. Claude Code juga menjalankan agent internal untuk beberapa fiturnya sendiri, seperti [saran prompt](/docs/id/interactive-mode#prompt-suggestions) dan [pertanyaan sampingan `/btw`](/docs/id/interactive-mode#side-questions-with-%2Fbtw), dan SubagentStop juga dipicu ketika salah satu dari agent tersebut selesai. Untuk event tersebut, `agent_type` adalah nama agent yang dijalankan oleh sesi itu sendiri, seperti yang diatur dengan [`--agent`](/docs/id/cli-reference#cli-flags) atau [pengaturan `agent`](/docs/id/settings-reference#agent), dan string kosong ketika sesi berjalan tanpanya.

2723 2749 

2724`matcher` yang menyebutkan jenis agent tidak cocok dengan `agent_type` kosong. Hook yang matcher-nya dihilangkan, `""`, atau `"*"`, atau berupa regular expression yang cocok dengan string kosong, juga berjalan untuk event dengan `agent_type` kosong.2750`matcher` yang menyebutkan jenis agent tidak mencocokkan `agent_type` yang kosong. Hook yang matcher-nya dihilangkan, `""`, atau `"*"`, atau merupakan ekspresi reguler yang cocok dengan string kosong, juga berjalan untuk event dengan `agent_type` kosong.

2725 2751 

2726Pada Claude Code v2.1.271 atau lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference) menyampaikan laporannya melalui tool tersebut sebelum berhenti. Field `last_assistant_message` kemudian berisi teks penutup subagent, jika ada, yang bukan laporan yang disampaikan. Laporan tersebut adalah input `message` dari panggilan itu, yang diterima sebagai `tool_input.message` oleh hook `PreToolUse` atau `PostToolUse` yang dicocokkan pada `SubagentHandback`.2752Pada Claude Code v2.1.271 atau lebih baru, subagent yang berjalan dengan tool [`SubagentHandback`](/docs/id/tools-reference) mengirimkan laporannya melalui tool tersebut sebelum berhenti. Field `last_assistant_message` kemudian memuat teks penutup subagent, jika ada, yang bukan merupakan laporan yang dikirimkan. Laporan tersebut adalah input `message` dari panggilan itu, yang diterima oleh hook `PreToolUse` atau `PostToolUse` yang mencocokkan `SubagentHandback` sebagai `tool_input.message`.

2727 2753 

2728Hook SubagentStop juga menerima array `background_tasks` dan `session_crons` yang dijelaskan di bagian [Input Stop](#stop-input). Kedua array memiliki cakupan sesi induk, bukan subagent.2754Hook SubagentStop juga menerima array `background_tasks` dan `session_crons` yang dijelaskan di bawah [Input Stop](#stop-input). Kedua array tersebut dicakup ke sesi induk, bukan subagent.

2729 2755 

2730```json theme={null}2756```json theme={null}

2731{2757{


2744}2770}

2745```2771```

2746 2772 

2747Hook SubagentStop menggunakan format kontrol keputusan yang sama seperti [hook Stop](#stop-decision-control), termasuk `hookSpecificOutput.additionalContext` dengan `hookEventName` disetel ke `"SubagentStop"`, untuk umpan balik non-error yang membuat subagent tetap berjalan. Mengembalikan `decision: "block"` dengan `reason` membuat subagent tetap berjalan dan menyampaikan `reason` kepada subagent sebagai instruksi berikutnya. Hook yang memblokir dengan exit 2 menyampaikan pesan stderr-nya dengan cara yang sama. Untuk menyuntikkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.2773Hook SubagentStop menggunakan format kontrol keputusan yang sama dengan [hook Stop](#stop-decision-control), termasuk `hookSpecificOutput.additionalContext` dengan `hookEventName` diatur ke `"SubagentStop"`, untuk umpan balik non-error yang membuat subagent tetap berjalan. Mengembalikan `decision: "block"` dengan `reason` membuat subagent tetap berjalan dan mengirimkan `reason` ke subagent sebagai instruksi berikutnya. Hook yang memblokir dengan keluar dengan kode 2 mengirimkan pesan stderr-nya dengan cara yang sama. Untuk menyisipkan konteks ke sesi induk setelah subagent kembali, gunakan hook [`PostToolUse`](#posttooluse) pada tool `Agent` sebagai gantinya.

2748 2774 

2749<h3 id="taskcreated">2775<h3 id="taskcreated">

2750 TaskCreated2776 TaskCreated

2751</h3>2777</h3>

2752 2778 

2753Berjalan ketika tugas sedang dibuat melalui tool `TaskCreate`. Gunakan untuk menegakkan konvensi penamaan, mewajibkan deskripsi tugas, atau mencegah tugas tertentu dibuat. Dalam [sesi tanpa tool Task](/docs/id/tools-reference#task-tool-availability), event ini tidak dipicu.2779Berjalan ketika tugas sedang dibuat melalui tool `TaskCreate`. Gunakan ini untuk menegakkan konvensi penamaan, mewajibkan deskripsi tugas, atau mencegah tugas tertentu dibuat. Dalam [sesi tanpa tool Task](/docs/id/tools-reference#task-tool-availability), event ini tidak dipicu.

2754 2780 

2755Hook TaskCreated tidak mendukung matcher dan dipicu pada setiap kejadian.2781Hook TaskCreated tidak mendukung matcher dan dipicu pada setiap kejadian.

2756 2782 


2776 2802 

2777| Field | Deskripsi |2803| Field | Deskripsi |

2778| :- | :- |2804| :- | :- |

2779| `task_id` | Pengenal tugas yang sedang dibuat |2805| `task_id` | Pengidentifikasi tugas yang sedang dibuat |

2780| `task_subject` | Judul tugas |2806| `task_subject` | Judul tugas |

2781| `task_description` | Deskripsi rinci tugas. Mungkin tidak ada |2807| `task_description` | Deskripsi terperinci tentang tugas. Mungkin tidak ada |

2782| `teammate_name` | Nama rekan tim yang membuat tugas. Mungkin tidak ada |2808| `teammate_name` | Nama rekan tim yang membuat tugas. Mungkin tidak ada |

2783| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2809| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2784| `agent_id` | Pada event ini, [field input umum](#common-input-fields) ini mengidentifikasi subagent atau [rekan tim dalam proses](/docs/id/agent-teams#choose-a-display-mode) yang membuat tugas. Mungkin tidak ada. Memerlukan Claude Code v2.1.290 atau lebih baru |2810| `agent_id` | Pada event ini, [field input umum](#common-input-fields) ini mengidentifikasi subagent atau [rekan tim in-process](/docs/id/agent-teams#choose-a-display-mode) yang membuat tugas. Mungkin tidak ada. Memerlukan Claude Code v2.1.290 atau lebih baru |

2785 2811 

2786<h4 id="taskcreated-decision-control">2812<h4 id="taskcreated-decision-control">

2787 Kontrol keputusan TaskCreated2813 Kontrol keputusan TaskCreated

2788</h4>2814</h4>

2789 2815 

2790Hook TaskCreated dapat memblokir pembuatan dengan exit code 2 atau dengan keputusan JSON. Apa pun caranya, Claude Code menghapus tugas dan mengembalikan pesan Anda kepada Claude sebagai error tool. Claude Code mengabaikan `continue: false` dari event ini dan Claude terus bekerja.2816Hook TaskCreated dapat memblokir pembuatan dengan exit code 2 atau dengan keputusan JSON. Dengan cara mana pun, Claude Code menghapus tugas dan mengembalikan pesan Anda kepada Claude sebagai error tool. Claude Code mengabaikan `continue: false` dari event ini dan Claude terus bekerja.

2791 2817 

2792* **Exit code 2**: Claude Code mengembalikan teks stderr sebagai pesan.2818* **Exit code 2**: Claude Code mengembalikan teks stderr sebagai pesan.

2793* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code mengembalikan `reason` sebagai pesan.2819* **JSON `{"decision": "block", "reason": "..."}`**: Claude Code mengembalikan `reason` sebagai pesan.


2811 TaskCompleted2837 TaskCompleted

2812</h3>2838</h3>

2813 2839 

2814Berjalan ketika tugas sedang ditandai sebagai selesai. Ini dipicu dalam dua situasi: ketika agent mana pun secara eksplisit menandai tugas sebagai selesai melalui tool TaskUpdate, atau ketika rekan tim [tim agent](/docs/id/agent-teams) menyelesaikan gilirannya dengan tugas yang sedang berlangsung. Gunakan untuk menegakkan kriteria penyelesaian seperti lolos pengujian atau pemeriksaan lint sebelum tugas dapat ditutup.2840Berjalan ketika tugas sedang ditandai sebagai selesai. Ini dipicu dalam dua situasi: ketika agent mana pun secara eksplisit menandai tugas sebagai selesai melalui tool TaskUpdate, atau ketika rekan tim [tim agent](/docs/id/agent-teams) menyelesaikan gilirannya dengan tugas yang sedang berlangsung. Gunakan ini untuk menegakkan kriteria penyelesaian seperti lulus pengujian atau pemeriksaan lint sebelum tugas dapat ditutup.

2815 2841 

2816Hook TaskCompleted tidak mendukung matcher dan dipicu pada setiap kejadian.2842Hook TaskCompleted tidak mendukung matcher dan dipicu pada setiap kejadian.

2817 2843 


2838 2864 

2839| Field | Deskripsi |2865| Field | Deskripsi |

2840| :- | :- |2866| :- | :- |

2841| `task_id` | Pengenal tugas yang sedang diselesaikan |2867| `task_id` | Pengidentifikasi tugas yang sedang diselesaikan |

2842| `task_subject` | Judul tugas |2868| `task_subject` | Judul tugas |

2843| `task_description` | Deskripsi rinci tugas. Mungkin tidak ada |2869| `task_description` | Deskripsi terperinci tentang tugas. Mungkin tidak ada |

2844| `teammate_name` | Nama rekan tim yang menyelesaikan tugas. Mungkin tidak ada |2870| `teammate_name` | Nama rekan tim yang menyelesaikan tugas. Mungkin tidak ada |

2845| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |2871| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

2846| `agent_id` | Pada event ini, [field input umum](#common-input-fields) ini mengidentifikasi subagent atau [rekan tim dalam proses](/docs/id/agent-teams#choose-a-display-mode) yang menyelesaikan tugas. Mungkin tidak ada. Memerlukan Claude Code v2.1.290 atau lebih baru |2872| `agent_id` | Pada event ini, [field input umum](#common-input-fields) ini mengidentifikasi subagent atau [rekan tim in-process](/docs/id/agent-teams#choose-a-display-mode) yang menyelesaikan tugas. Mungkin tidak ada. Memerlukan Claude Code v2.1.290 atau lebih baru |

2847 2873 

2848<h4 id="taskcompleted-decision-control">2874<h4 id="taskcompleted-decision-control">

2849 Kontrol keputusan TaskCompleted2875 Kontrol keputusan TaskCompleted


2852Hook TaskCompleted mendukung dua cara untuk mengontrol penyelesaian tugas:2878Hook TaskCompleted mendukung dua cara untuk mengontrol penyelesaian tugas:

2853 2879 

2854* **Exit code 2**: tugas tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik.2880* **Exit code 2**: tugas tidak ditandai sebagai selesai dan pesan stderr diumpankan kembali ke model sebagai umpan balik.

2855* **JSON `{"continue": false, "stopReason": "..."}`**: ketika rekan tim yang menyelesaikan gilirannya memicu event, ini menghentikan rekan tim sepenuhnya, sesuai dengan perilaku hook `Stop`. `stopReason` ditampilkan kepada pengguna. Ketika tool `TaskUpdate` memicu event, Claude Code mengabaikan `continue: false`; exit code 2 tetap memblokir penyelesaian.2881* **JSON `{"continue": false, "stopReason": "..."}`**: ketika rekan tim yang menyelesaikan gilirannya memicu event, menghentikan rekan tim sepenuhnya, sesuai dengan perilaku hook `Stop`. `stopReason` ditampilkan kepada pengguna. Ketika tool `TaskUpdate` memicu event, Claude Code mengabaikan `continue: false`; exit code 2 tetap memblokir penyelesaian.

2856 2882 

2857Contoh ini menjalankan pengujian dan memblokir penyelesaian tugas jika pengujian gagal:2883Contoh ini menjalankan pengujian dan memblokir penyelesaian tugas jika pengujian gagal:

2858 2884 


2879[StopFailure](#stopfailure) sebagai gantinya.2905[StopFailure](#stopfailure) sebagai gantinya.

2880 2906 

2881<Tip>2907<Tip>

2882 Perintah [`/goal`](/docs/id/goal) adalah pintasan bawaan untuk hook Stop berbasis prompt dengan cakupan sesi. Gunakan ketika Anda ingin Claude terus bekerja menuju suatu kondisi tanpa menulis konfigurasi hook.2908 Perintah [`/goal`](/docs/id/goal) adalah pintasan bawaan untuk hook Stop berbasis prompt dengan cakupan sesi. Gunakan ini ketika Anda ingin Claude terus bekerja menuju suatu kondisi tanpa menulis konfigurasi hook.

2883</Tip>2909</Tip>

2884 2910 

2885<h4 id="stop-input">2911<h4 id="stop-input">

2886 Input Stop2912 Input Stop

2887</h4>2913</h4>

2888 2914 

2889Selain [field input umum](#common-input-fields), hook Stop menerima `stop_hook_active`, `last_assistant_message`, `background_tasks`, dan `session_crons`. Field `stop_hook_active` bernilai `true` ketika Claude Code sudah melanjutkan sebagai akibat dari stop hook. Periksa nilai ini atau proses transkrip untuk menghindari pemblokiran pada kondisi yang tidak akan pernah terselesaikan.2915Selain [field input umum](#common-input-fields), hook Stop menerima `stop_hook_active`, `last_assistant_message`, `background_tasks`, dan `session_crons`. Field `stop_hook_active` bernilai `true` ketika Claude Code sudah melanjutkan sebagai akibat dari hook stop. Periksa nilai ini atau proses transkrip untuk menghindari pemblokiran pada kondisi yang tidak akan pernah terselesaikan.

2890 2916 

2891Claude Code menerapkan batas 8 kelanjutan berturut-turut: setelah stop hook melanjutkan giliran delapan kali berturut-turut, Claude Code menimpa blokir berikutnya dan mengakhiri giliran. Hitungan kelanjutan berturut-turut di-reset setiap kali Claude memanggil tool. Untuk menaikkan batas, setel [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/id/env-vars).2917Claude Code menerapkan batas 8 kelanjutan berturut-turut: setelah hook stop melanjutkan giliran delapan kali berturut-turut, Claude Code menimpa blokir berikutnya dan mengakhiri giliran. Hitungan kelanjutan berturut-turut di-reset setiap kali Claude memanggil tool. Untuk menaikkan batas, atur [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](/docs/id/env-vars).

2892 2918 

2893Field `last_assistant_message` berisi konten teks dari respons akhir Claude, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip. Untuk hook yang bertindak pada giliran yang baru selesai, seperti hook pembacaan nyaring atau notifikasi, gunakan field ini alih-alih membaca `transcript_path`: file transkrip tidak dijamin menyertakan pesan akhir pada saat Stop di semua versi.2919Field `last_assistant_message` berisi konten teks dari respons akhir Claude, sehingga hook dapat mengaksesnya tanpa mem-parse file transkrip. Untuk hook yang bertindak pada giliran yang baru saja selesai, seperti hook pembacaan nyaring atau notifikasi, gunakan field ini alih-alih membaca `transcript_path`: file transkrip tidak dijamin menyertakan pesan akhir pada saat Stop di semua versi.

2894 2920 

2895Array `background_tasks` dan `session_crons` memungkinkan hook membedakan "sesi sudah selesai" dari "sesi dijeda menunggu pekerjaan latar belakang untuk membangunkannya kembali". Kedua array ada ketika registri tugas dapat dijangkau dan kosong ketika tidak ada yang sedang berjalan atau dijadwalkan.2921Array `background_tasks` dan `session_crons` memungkinkan hook membedakan "sesi telah selesai" dari "sesi dijeda menunggu pekerjaan latar belakang untuk membangunkannya kembali". Kedua array ada ketika registri tugas dapat dijangkau dan kosong ketika tidak ada yang sedang berjalan atau dijadwalkan.

2896 2922 

2897Setiap entri dalam `background_tasks` menjelaskan satu tugas yang sedang berjalan dan menggunakan field berikut:2923Setiap entri dalam `background_tasks` mendeskripsikan satu tugas yang sedang berjalan dan menggunakan field berikut:

2898 2924 

2899| Field | Deskripsi |2925| Field | Deskripsi |

2900| :- | :- |2926| :- | :- |

2901| `id` | Pengenal tugas |2927| `id` | Pengidentifikasi tugas |

2902| `type` | Label jenis tugas yang mudah dibaca seperti `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, atau `MCP task`. Setiap label mengidentifikasi fitur Claude Code mana yang membuat tugas tersebut. Kembali ke diskriminan mentah untuk jenis yang tidak dikenali |2928| `type` | Label jenis tugas yang mudah dibaca seperti `shell`, `subagent`, `monitor`, `workflow`, `teammate`, `cloud session`, atau `MCP task`. Setiap label mengidentifikasi fitur Claude Code mana yang membuat tugas. Kembali ke diskriminan mentah untuk jenis yang tidak dikenali |

2903| `status` | Status tugas saat ini |2929| `status` | Status tugas saat ini |

2904| `description` | Deskripsi teks bebas, dibatasi 1000 karakter dengan penanda `… [+N chars]` di dalam string ketika dipotong |2930| `description` | Deskripsi teks bebas, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` di dalam string ketika dipotong |

2905| `command` | Baris perintah shell, dibatasi 1000 karakter. Hanya ada untuk tugas `shell` |2931| `command` | Baris perintah shell, dibatasi hingga 1000 karakter. Hanya ada untuk tugas `shell` |

2906| `agent_type` | Nama jenis subagent. Hanya ada untuk tugas `subagent` |2932| `agent_type` | Nama jenis subagent. Hanya ada untuk tugas `subagent` |

2907| `server` | Nama server MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |2933| `server` | Nama server MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |

2908| `tool` | Nama tool MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |2934| `tool` | Nama tool MCP. Hanya ada untuk tugas `monitor` dan `MCP task` |

2909| `name` | Nama workflow. Hanya ada untuk tugas `workflow` |2935| `name` | Nama workflow. Hanya ada untuk tugas `workflow` |

2910 2936 

2911Setiap entri dalam `session_crons` menjelaskan satu wakeup terjadwal dengan cakupan sesi, yang bersumber dari `CronCreate`, `ScheduleWakeup`, dan `/loop`:2937Setiap entri dalam `session_crons` mendeskripsikan satu wakeup terjadwal dengan cakupan sesi, yang bersumber dari `CronCreate`, `ScheduleWakeup`, dan `/loop`:

2912 2938 

2913| Field | Deskripsi |2939| Field | Deskripsi |

2914| :- | :- |2940| :- | :- |

2915| `id` | Pengenal tugas cron |2941| `id` | Pengidentifikasi tugas cron |

2916| `schedule` | Ekspresi cron, misalnya `0 9 * * 1-5` |2942| `schedule` | Ekspresi cron, misalnya `0 9 * * 1-5` |

2917| `recurring` | `false` untuk wakeup sekali jalan yang jadwalnya mengodekan satu waktu pemicuan, `true` untuk tugas yang dipicu ulang pada setiap kecocokan |2943| `recurring` | `false` untuk wakeup sekali jalan yang jadwalnya mengodekan satu waktu pemicuan, `true` untuk tugas yang dipicu ulang pada setiap kecocokan |

2918| `prompt` | Prompt yang dikirim ketika cron dipicu, dibatasi 1000 karakter dengan penanda `… [+N chars]` yang sama |2944| `prompt` | Prompt yang dikirimkan ketika cron dipicu, dibatasi hingga 1000 karakter dengan penanda `… [+N chars]` yang sama |

2919 2945 

2920Contoh ini menunjukkan input Stop dengan satu tugas shell yang sedang berjalan dan satu cron berulang:2946Contoh ini menunjukkan input Stop dengan satu tugas shell yang sedang berjalan dan satu cron berulang:

2921 2947 


2957| Field | Deskripsi |2983| Field | Deskripsi |

2958| :- | :- |2984| :- | :- |

2959| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |2985| `decision` | `"block"` mencegah Claude berhenti. Hilangkan untuk mengizinkan Claude berhenti |

2960| `reason` | Wajib ketika `decision` adalah `"block"`. Memberi tahu Claude mengapa ia harus melanjutkan |2986| `reason` | Wajib ketika `decision` adalah `"block"`. Memberi tahu Claude mengapa harus melanjutkan |

2961| `hookSpecificOutput.additionalContext` | Umpan balik non-error untuk Claude. Percakapan berlanjut sehingga Claude dapat menindaklanjutinya, tetapi tidak seperti `decision: "block"`, ini ditampilkan di transkrip sebagai umpan balik hook, bukan error hook |2987| `hookSpecificOutput.additionalContext` | Umpan balik non-error untuk Claude. Percakapan berlanjut sehingga Claude dapat menindaklanjutinya, tetapi tidak seperti `decision: "block"`, ini ditampilkan di transkrip sebagai umpan balik hook, bukan error hook |

2962 2988 

2963Hook yang memblokir dengan exit 2 diarahkan dengan cara yang sama seperti `reason`: Claude menerima pesan stderr sebagai penjelasan mengapa ia harus melanjutkan.2989Hook yang memblokir dengan keluar dengan kode 2 dirutekan dengan cara yang sama seperti `reason`: Claude menerima pesan stderr sebagai penjelasan mengapa harus melanjutkan.

2964 2990 

2965```json theme={null}2991```json theme={null}

2966{2992{


2969}2995}

2970```2996```

2971 2997 

2972Gunakan `additionalContext` ketika hook bekerja sesuai rancangan dan memberikan panduan kepada Claude, seperti "jalankan rangkaian pengujian sebelum selesai". Ini membuat percakapan terus berjalan melalui perlindungan loop yang sama seperti `decision: "block"`, yaitu input `stop_hook_active` dan batas 8 kelanjutan berturut-turut, tetapi transkrip melabelinya `Stop hook feedback` dan tidak ada notifikasi error hook yang ditampilkan:2998Gunakan `additionalContext` ketika hook bekerja sesuai rancangan dan memberikan panduan kepada Claude, seperti "jalankan test suite sebelum selesai". Ini membuat percakapan terus berjalan melalui perlindungan loop yang sama seperti `decision: "block"`, yaitu input `stop_hook_active` dan batas 8 kelanjutan berturut-turut, tetapi transkrip melabelinya `Stop hook feedback` dan tidak ada notifikasi error hook yang ditampilkan:

2973 2999 

2974```json theme={null}3000```json theme={null}

2975{3001{


2984 StopFailure3010 StopFailure

2985</h3>3011</h3>

2986 3012 

2987Berjalan sebagai pengganti [Stop](#stop) ketika giliran berakhir karena error API. Claude Code mengabaikan output dan exit code hook, kecuali [`terminalSequence`](#emit-terminal-notifications). Gunakan untuk mencatat kegagalan, mengirim peringatan, atau mengambil tindakan pemulihan ketika Claude tidak dapat menyelesaikan respons karena rate limit, masalah autentikasi, atau error API lainnya.3013Berjalan alih-alih [Stop](#stop) ketika giliran berakhir karena error API. Claude Code mengabaikan output dan exit code hook, kecuali [`terminalSequence`](#emit-terminal-notifications). Gunakan ini untuk mencatat kegagalan, mengirim peringatan, atau mengambil tindakan pemulihan ketika Claude tidak dapat menyelesaikan respons karena rate limit, masalah autentikasi, atau error API lainnya.

2988 3014 

2989<h4 id="stopfailure-input">3015<h4 id="stopfailure-input">

2990 Input StopFailure3016 Input StopFailure


2996| :- | :- |3022| :- | :- |

2997| `error` | Jenis error: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |3023| `error` | Jenis error: `rate_limit`, `overloaded`, `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |

2998| `error_details` | Detail tambahan tentang error, jika tersedia |3024| `error_details` | Detail tambahan tentang error, jika tersedia |

2999| `last_assistant_message` | Teks error yang dirender dan ditampilkan dalam percakapan. Tidak seperti `Stop` dan `SubagentStop`, di mana field ini berisi output percakapan Claude, untuk `StopFailure` field ini berisi string error API itu sendiri, seperti `"API Error: Rate limit reached"` |3025| `last_assistant_message` | Teks error yang dirender yang ditampilkan dalam percakapan. Tidak seperti `Stop` dan `SubagentStop`, di mana field ini memuat output percakapan Claude, untuk `StopFailure` field ini berisi string error API itu sendiri, seperti `"API Error: Rate limit reached"` |

3000 3026 

3001```json theme={null}3027```json theme={null}

3002{3028{


3010}3036}

3011```3037```

3012 3038 

3013Hook StopFailure tidak memiliki kontrol keputusan. Hook ini hanya berjalan untuk keperluan notifikasi dan logging.3039Hook StopFailure tidak memiliki kontrol keputusan. Hook ini hanya berjalan untuk tujuan notifikasi dan pencatatan log.

3014 3040 

3015<h3 id="teammateidle">3041<h3 id="teammateidle">

3016 TeammateIdle3042 TeammateIdle

3017</h3>3043</h3>

3018 3044 

3019Berjalan ketika rekan tim [tim agent](/docs/id/agent-teams) akan menganggur setelah menyelesaikan gilirannya. Gunakan untuk menegakkan gerbang kualitas sebelum rekan tim berhenti bekerja, seperti mewajibkan pemeriksaan lint yang lolos atau memverifikasi bahwa file output ada.3045Berjalan ketika rekan tim [tim agent](/docs/id/agent-teams) akan menjadi idle setelah menyelesaikan gilirannya. Gunakan ini untuk menegakkan gerbang kualitas sebelum rekan tim berhenti bekerja, seperti mewajibkan lulus pemeriksaan lint atau memverifikasi bahwa file output ada.

3020 3046 

3021Hook TeammateIdle tidak mendukung matcher dan dipicu pada setiap kejadian.3047Hook TeammateIdle tidak mendukung matcher dan dipicu pada setiap kejadian.

3022 3048 


3040 3066 

3041| Field | Deskripsi |3067| Field | Deskripsi |

3042| :- | :- |3068| :- | :- |

3043| `teammate_name` | Nama rekan tim yang akan menganggur |3069| `teammate_name` | Nama rekan tim yang akan menjadi idle |

3044| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |3070| `team_name` | Deprecated. Nama tim yang diturunkan dari sesi; akan dihapus dalam rilis mendatang |

3045| `agent_id` | Pada event ini, [field input umum](#common-input-fields) ini mengidentifikasi [rekan tim dalam proses](/docs/id/agent-teams#choose-a-display-mode) yang akan menganggur. Mungkin tidak ada. Memerlukan Claude Code v2.1.290 atau lebih baru |3071| `agent_id` | Pada event ini, [field input umum](#common-input-fields) ini mengidentifikasi [rekan tim in-process](/docs/id/agent-teams#choose-a-display-mode) yang akan menjadi idle. Mungkin tidak ada. Memerlukan Claude Code v2.1.290 atau lebih baru |

3046 3072 

3047<h4 id="teammateidle-decision-control">3073<h4 id="teammateidle-decision-control">

3048 Kontrol keputusan TeammateIdle3074 Kontrol keputusan TeammateIdle


3050 3076 

3051Hook TeammateIdle mendukung dua cara untuk mengontrol perilaku rekan tim:3077Hook TeammateIdle mendukung dua cara untuk mengontrol perilaku rekan tim:

3052 3078 

3053* **Exit code 2**: rekan tim menerima pesan stderr sebagai umpan balik dan terus bekerja alih-alih menganggur.3079* **Exit code 2**: rekan tim menerima pesan stderr sebagai umpan balik dan terus bekerja alih-alih menjadi idle.

3054* **JSON `{"continue": false, "stopReason": "..."}`**: menghentikan rekan tim sepenuhnya, sesuai dengan perilaku hook `Stop`. `stopReason` ditampilkan kepada pengguna.3080* **JSON `{"continue": false, "stopReason": "..."}`**: menghentikan rekan tim sepenuhnya, sesuai dengan perilaku hook `Stop`. `stopReason` ditampilkan kepada pengguna.

3055 3081 

3056Contoh ini memeriksa bahwa artefak build ada sebelum mengizinkan rekan tim menganggur:3082Contoh ini memeriksa bahwa artefak build ada sebelum mengizinkan rekan tim menjadi idle:

3057 3083 

3058```bash theme={null}3084```bash theme={null}

3059#!/bin/bash3085#!/bin/bash


3070 ConfigChange3096 ConfigChange

3071</h3>3097</h3>

3072 3098 

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

3074 3100 

3075Claude Code menjalankan hook ConfigChange ketika file pengaturan, file kebijakan terkelola, atau file skill berubah. Untuk kebijakan terkelola, Claude Code menjalankannya hanya ketika `managed-settings.json` atau file di `managed-settings.d/` berubah. Claude Code menerapkan [pengaturan yang dikelola server](/docs/id/server-managed-settings) dan perubahan pada preferensi terkelola macOS atau kebijakan registri Windows tanpa menjalankannya. Di WSL dengan [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings), Claude Code juga menerapkan file pengaturan terkelola sisi Windows yang berubah pada polling kebijakannya tanpa menjalankannya.3101Claude Code menjalankan hook ConfigChange ketika file pengaturan, file kebijakan terkelola, atau file skill berubah. Untuk kebijakan terkelola, Claude Code menjalankannya hanya ketika `managed-settings.json` atau file di `managed-settings.d/` berubah. Claude Code menerapkan [pengaturan yang dikelola server](/docs/id/server-managed-settings) dan perubahan pada preferensi terkelola macOS atau kebijakan registri Windows tanpa menjalankannya. Di WSL dengan [`wslInheritsWindowsSettings`](/docs/id/settings-reference#wslinheritswindowssettings), Claude Code juga menerapkan file pengaturan terkelola sisi Windows yang berubah pada polling kebijakannya tanpa menjalankannya.

3076 3102 


3139}3165}

3140```3166```

3141 3167 

3142Perubahan `policy_settings` tidak dapat diblokir. Hook tetap dipicu untuk sumber `policy_settings` ketika file pengaturan terkelola di mesin berubah, sehingga Anda dapat menggunakannya untuk mencatat pengeditan tersebut, tetapi keputusan pemblokiran apa pun diabaikan. Ini memastikan pengaturan yang dikelola perusahaan selalu berlaku. Claude Code tidak menjalankan hook `ConfigChange` ketika [pengaturan yang dikelola server](/docs/id/server-managed-settings) tiba atau diperbarui.3168Perubahan `policy_settings` tidak dapat diblokir. Hook tetap dipicu untuk sumber `policy_settings` ketika file pengaturan terkelola di mesin berubah, sehingga Anda dapat menggunakannya untuk mencatat pengeditan tersebut, tetapi setiap keputusan pemblokiran diabaikan. Ini memastikan pengaturan yang dikelola perusahaan selalu berlaku. Claude Code tidak menjalankan hook `ConfigChange` ketika [pengaturan yang dikelola server](/docs/id/server-managed-settings) tiba atau diperbarui.

3143 3169 

3144Claude Code bertindak berdasarkan keputusan pemblokiran dari output JSON hook ConfigChange dan membuang `systemMessage` dan `continue`. Perubahan yang diblokir tidak menampilkan pesan apa pun kepada Anda atau kepada Claude, baik Anda memblokir dengan `reason` maupun dengan stderr pada exit 2. Claude Code hanya menulis satu baris ke log debug.3170Claude Code bertindak berdasarkan keputusan pemblokiran dari output JSON hook ConfigChange dan membuang `systemMessage` dan `continue`. Perubahan yang diblokir tidak menampilkan pesan apa pun kepada Anda atau kepada Claude, baik Anda memblokir dengan `reason` maupun dengan stderr pada exit 2. Claude Code hanya menulis satu baris ke log debug.

3145 3171 


3147 CwdChanged3173 CwdChanged

3148</h3>3174</h3>

3149 3175 

3150Berjalan ketika perintah shell dalam percakapan utama mengubah direktori kerja, misalnya ketika Claude mengeksekusi perintah `cd`. Gunakan untuk bereaksi terhadap perubahan direktori: memuat ulang environment variable, mengaktifkan toolchain khusus proyek, atau menjalankan skrip penyiapan secara otomatis. Berpasangan dengan [FileChanged](#filechanged) untuk alat seperti [direnv](https://direnv.net/) yang mengelola environment per direktori.3176Berjalan 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.

3151 3177 

3152Hook 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, saat Claude Code menghapusnya.3178Hook 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.

3153 3179 

3154CwdChanged tidak mendukung matcher dan dipicu pada setiap kejadian.3180CwdChanged tidak mendukung matcher dan dipicu pada setiap kejadian.

3155 3181 


3174 Output CwdChanged3200 Output CwdChanged

3175</h4>3201</h4>

3176 3202 

3177Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook CwdChanged dapat mengembalikan `watchPaths` untuk secara dinamis menetapkan path file mana yang dipantau oleh [FileChanged](#filechanged):3203Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook CwdChanged dapat mengembalikan `watchPaths` untuk mengatur secara dinamis path file mana yang dipantau oleh [FileChanged](#filechanged):

3178 3204 

3179| Field | Deskripsi |3205| Field | Deskripsi |

3180| :- | :- |3206| :- | :- |

3181| `watchPaths` | Array path absolut. Menggantikan daftar pantau dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Mengembalikan array kosong akan mengosongkan daftar dinamis, yang umum dilakukan saat memasuki direktori baru |3207| `watchPaths` | Array path absolut. Menggantikan daftar pantauan dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Mengembalikan array kosong akan mengosongkan daftar dinamis, yang umum dilakukan saat memasuki direktori baru |

3182 3208 

3183Hook CwdChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir perubahan direktori.3209Hook CwdChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir perubahan direktori.

3184 3210 

3185Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON-nya dan membuang `continue`. Dalam sesi interaktif, Claude Code menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tersebut tidak mencapai aliran pesan SDK.3211Claude Code membaca `watchPaths` dan `systemMessage` dari output JSON mereka dan membuang `continue`. Dalam sesi interaktif, Claude Code menampilkan `systemMessage` sebagai notifikasi terminal singkat. Pesan tersebut tidak mencapai aliran pesan SDK.

3186 3212 

3187<h3 id="directoryadded">3213<h3 id="directoryadded">

3188 DirectoryAdded3214 DirectoryAdded

3189</h3>3215</h3>

3190 3216 

3191Berjalan setelah Anda menambahkan direktori kerja di tengah sesi dengan perintah `/add-dir`, atau setelah klien SDK menambahkannya dengan permintaan kontrol `register_repo_root`. Gunakan untuk menyiapkan repositori yang baru ditambahkan, misalnya dengan menginstal dependensinya.3217Berjalan setelah Anda menambahkan direktori kerja di tengah sesi dengan perintah `/add-dir`, atau setelah klien SDK menambahkannya dengan permintaan kontrol `register_repo_root`. Gunakan ini untuk menyiapkan repositori yang baru ditambahkan, misalnya dengan menginstal dependensinya.

3192 3218 

3193Claude Code tidak memicu event ini ketika:3219Claude Code tidak memicu event ini ketika:

3194 3220 

3195* Anda meneruskan direktori dengan flag startup `--add-dir`; [SessionStart](#sessionstart) mencakup direktori tersebut3221* Anda meneruskan direktori dengan flag startup `--add-dir`; [SessionStart](#sessionstart) mencakup direktori tersebut

3196* Anda menambahkan direktori pada tab Workspace di `/permissions`3222* Anda menambahkan direktori di tab Workspace `/permissions`

3197* Anda menambahkan direktori yang sudah merupakan direktori kerja atau berada di dalamnya3223* Anda menambahkan direktori yang sudah menjadi direktori kerja atau berada di dalamnya

3198 3224 

3199Claude Code memicu DirectoryAdded setelah memperbarui status sandbox dan izin, sehingga tool yang di-sandbox sudah melihat direktori baru saat hook Anda berjalan. Perintah hook sendiri berjalan tanpa sandbox.3225Claude Code memicu DirectoryAdded setelah menyegarkan status sandbox dan izin, sehingga tool yang di-sandbox sudah melihat direktori baru ketika hook Anda berjalan. Perintah hook itu sendiri berjalan tanpa sandbox.

3200 3226 

3201Claude Code tidak menunggu hook: penambahan selesai segera, dan hook berjalan di latar belakang dengan timeout default 600 detik.3227Claude Code tidak menunggu hook: penambahan selesai segera, dan hook berjalan di latar belakang dengan timeout default 600 detik.

3202 3228 


3215 3241 

3216| Field | Deskripsi |3242| Field | Deskripsi |

3217| :- | :- |3243| :- | :- |

3218| `directory` | Path absolut direktori yang ditambahkan |3244| `directory` | Path absolut dari direktori yang ditambahkan |

3219| `source` | Cara direktori ditambahkan, `"slash_command"` untuk `/add-dir` atau `"register_repo_root"` untuk permintaan kontrol SDK |3245| `source` | Cara direktori ditambahkan, `"slash_command"` untuk `/add-dir` atau `"register_repo_root"` untuk permintaan kontrol SDK |

3220 3246 

3221```json theme={null}3247```json theme={null}


3229}3255}

3230```3256```

3231 3257 

3232Hook DirectoryAdded tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir penambahan, yang sudah selesai saat hook berjalan. Claude Code membuang field `continue` dari output JSON-nya dan menampilkan sisanya secara berbeda per sumber:3258Hook DirectoryAdded tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir penambahan, yang sudah selesai ketika hook berjalan. Claude Code membuang field `continue` dari output JSON mereka dan menampilkan sisanya secara berbeda per sumber:

3233 3259 

3234* `slash_command`: Claude Code menyampaikan `systemMessage` hook kepada Claude sebagai konteks pada giliran percakapan berikutnya, alih-alih menampilkannya kepada Anda. Jumlah hook yang gagal muncul di transkrip. Output kegagalan lengkap masuk ke log debug3260* `slash_command`: Claude Code mengirimkan `systemMessage` hook kepada Claude sebagai konteks pada giliran percakapan berikutnya, alih-alih menampilkannya kepada Anda. Jumlah hook yang gagal muncul di transkrip. Output kegagalan lengkap masuk ke log debug

3235* `register_repo_root`: Claude Code menulis output `systemMessage` dan output kegagalan hanya ke log debug3261* `register_repo_root`: Claude Code menulis output `systemMessage` dan output kegagalan hanya ke log debug

3236 3262 

3237<h3 id="filechanged">3263<h3 id="filechanged">

3238 FileChanged3264 FileChanged

3239</h3>3265</h3>

3240 3266 

3241Berjalan ketika file yang dipantau berubah di disk. Claude Code mendeteksi perubahan dengan pemantau sistem file, bukan dengan memeriksa panggilan tool, sehingga Claude Code menjalankan hook apa pun yang mengubah file: panggilan tool `Edit` atau `Write`, skrip yang dijalankan Claude dengan `Bash`, atau proses yang sepenuhnya di luar Claude Code. Penggunaan umum adalah memuat ulang environment variable ketika file konfigurasi proyek berubah.3267Berjalan ketika file yang dipantau berubah di disk. Claude Code mendeteksi perubahan dengan filesystem watcher, bukan dengan memeriksa panggilan tool, sehingga hook dijalankan apa pun yang mengubah file tersebut: panggilan tool `Edit` atau `Write`, skrip yang dijalankan Claude dengan `Bash`, atau proses yang sepenuhnya berada di luar Claude Code. Penggunaan umumnya adalah memuat ulang environment variable ketika file konfigurasi proyek berubah.

3242 3268 

3243`matcher` untuk event ini memiliki dua peran:3269`matcher` untuk event ini memiliki dua peran:

3244 3270 

3245* **Membangun daftar pantau**: nilai dipisah pada `|` dan setiap segmen didaftarkan sebagai nama file literal di direktori kerja, sehingga `".envrc|.env"` memantau tepat kedua file tersebut. Pola regex tidak berguna di sini: nilai seperti `^\.env` akan memantau file yang secara literal bernama `^\.env`.3271* **Membangun daftar pantauan**: nilainya dipisahkan pada `|` dan setiap segmen didaftarkan sebagai nama file literal di direktori kerja, sehingga `".envrc|.env"` memantau tepat kedua file tersebut. Pola regex tidak berguna di sini: nilai seperti `^\.env` akan memantau file yang secara literal bernama `^\.env`.

3246* **Memfilter hook mana yang berjalan**: ketika file yang dipantau berubah, nilai yang sama memfilter grup hook mana yang berjalan menggunakan [aturan matcher](#matcher-patterns) standar terhadap nama dasar file yang berubah.3272* **Memfilter hook mana yang berjalan**: ketika file yang dipantau berubah, nilai yang sama memfilter grup hook mana yang berjalan menggunakan [aturan matcher](#matcher-patterns) standar terhadap basename file yang berubah.

3247 3273 

3248Contoh ini menormalkan akhir baris di `data.csv` setelah setiap perubahan, termasuk perintah `Bash` atau skrip eksternal yang menulis ulang file:3274Contoh ini menormalkan akhir baris di `data.csv` setelah perubahan apa pun, termasuk perintah `Bash` atau skrip eksternal yang menulis ulang file tersebut:

3249 3275 

3250```json theme={null}3276```json theme={null}

3251{3277{


3265}3291}

3266```3292```

3267 3293 

3268Hook membaca path absolut file yang berubah dari field `file_path` pada [input JSON](#filechanged-input) di stdin. Penjaga `grep`-nya menguji hal yang sama yang dihapus oleh `perl`, yaitu CR di akhir baris, sehingga eksekusi setelah normalisasi keluar tanpa menyentuh file. Penjaga yang lebih longgar akan berulang tanpa henti, karena `perl -i` menulis ulang file bahkan ketika tidak mengganti apa pun dan Claude Code menjalankan hook lagi setelah setiap penulisan ulang. Simpan skrip ini di `/path/to/normalize-line-endings.sh` dan buat agar dapat dieksekusi:3294Hook membaca path absolut file yang berubah dari field `file_path` pada [input JSON](#filechanged-input) di stdin. Pemeriksaan `grep`-nya menguji hal yang sama dengan yang dihapus oleh `perl`, yaitu CR di akhir baris, sehingga eksekusi setelah normalisasi keluar tanpa menyentuh file. Pemeriksaan yang lebih longgar akan berulang tanpa henti, karena `perl -i` menulis ulang file bahkan ketika tidak mengganti apa pun dan Claude Code menjalankan hook lagi setelah setiap penulisan ulang. Simpan skrip ini di `/path/to/normalize-line-endings.sh` dan jadikan dapat dieksekusi:

3269 3295 

3270```bash theme={null}3296```bash theme={null}

3271#!/bin/bash3297#!/bin/bash


3275fi3301fi

3276```3302```

3277 3303 

3278Untuk memastikan hook berfungsi, minta Claude menambahkan baris CRLF ke `data.csv` dengan perintah `Bash`. Claude Code menjalankan hook dan file berakhir dengan akhir baris LF.3304Untuk memastikan hook berfungsi, minta Claude menambahkan baris CRLF ke `data.csv` dengan perintah `Bash`. Claude Code menjalankan hook dan file akhirnya memiliki akhir baris LF.

3279 3305 

3280Untuk memantau file yang tidak dapat Anda sebutkan di awal, kembalikan [`watchPaths`](#filechanged-output) dari hook untuk memperbarui daftar pantau secara dinamis. Claude Code memulai pemantau hanya ketika sesuatu menyebutkan file untuk dipantau, jadi isi daftar awal dengan grup FileChanged yang matcher-nya menyebutkan setidaknya satu file, atau dengan hook [SessionStart](#sessionstart-decision-control) atau [CwdChanged](#cwdchanged) yang mengembalikan `watchPaths`. Matcher tetap memfilter grup hook mana yang berjalan ketika file yang dipantau berubah, jadi berikan grup yang menangani path dinamis matcher yang dihilangkan, yang cocok dengan setiap file yang dipantau dan tidak menambahkan apa pun ke daftar pantau. Matcher `"*"` juga cocok dengan setiap file, tetapi Claude Code mendaftarkannya di daftar pantau seperti nilai lainnya, sebagai file literal bernama `*`.3306Untuk memantau file yang tidak dapat Anda sebutkan di awal, kembalikan [`watchPaths`](#filechanged-output) dari hook untuk memperbarui daftar pantauan secara dinamis. Claude Code memulai watcher hanya ketika ada sesuatu yang menyebutkan file untuk dipantau, jadi isi daftar awal dengan grup FileChanged yang matcher-nya menyebutkan setidaknya satu file, atau dengan hook [SessionStart](#sessionstart-decision-control) atau [CwdChanged](#cwdchanged) yang mengembalikan `watchPaths`. Matcher tetap memfilter grup hook mana yang berjalan ketika file yang dipantau berubah, jadi berikan grup yang menangani path dinamis matcher yang dihilangkan, yang cocok dengan setiap file yang dipantau dan tidak menambahkan apa pun ke daftar pantauan. Matcher `"*"` juga cocok dengan setiap file, tetapi Claude Code mendaftarkannya di daftar pantauan seperti nilai lainnya, sebagai file literal bernama `*`.

3281 3307 

3282Hook FileChanged memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya hingga event [CwdChanged](#cwdchanged) berikutnya, saat Claude Code menghapusnya.3308Hook FileChanged memiliki akses ke [`CLAUDE_ENV_FILE`](#persist-environment-variables). Variabel yang ditulis ke file tersebut bertahan ke perintah Bash berikutnya hingga event [CwdChanged](#cwdchanged) berikutnya, saat Claude Code menghapusnya.

3283 3309 


3307 Output FileChanged3333 Output FileChanged

3308</h4>3334</h4>

3309 3335 

3310Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook FileChanged dapat mengembalikan `watchPaths` untuk secara dinamis memperbarui path file mana yang dipantau:3336Selain [field output JSON](#json-output) yang tersedia untuk semua hook, hook FileChanged dapat mengembalikan `watchPaths` untuk memperbarui secara dinamis path file mana yang dipantau:

3311 3337 

3312| Field | Deskripsi |3338| Field | Deskripsi |

3313| :- | :- |3339| :- | :- |

3314| `watchPaths` | Array path absolut. Menggantikan daftar pantau dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Gunakan ini ketika skrip hook Anda menemukan file tambahan untuk dipantau berdasarkan file yang berubah |3340| `watchPaths` | Array path absolut. Menggantikan daftar pantauan dinamis saat ini. Path dari konfigurasi `matcher` Anda selalu dipantau. Gunakan ini ketika skrip hook Anda menemukan file tambahan untuk dipantau berdasarkan file yang berubah |

3315 3341 

3316Hook FileChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir terjadinya perubahan file.3342Hook FileChanged tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir terjadinya perubahan file.

3317 3343 


3336 3362 

3337Karena hook menggantikan perilaku default sepenuhnya, [`.worktreeinclude`](/docs/id/worktrees#copy-gitignored-files-into-worktrees) tidak diproses. Jika Anda perlu menyalin file konfigurasi lokal seperti `.env` ke worktree baru, lakukan di dalam skrip hook Anda.3363Karena hook menggantikan perilaku default sepenuhnya, [`.worktreeinclude`](/docs/id/worktrees#copy-gitignored-files-into-worktrees) tidak diproses. Jika Anda perlu menyalin file konfigurasi lokal seperti `.env` ke worktree baru, lakukan di dalam skrip hook Anda.

3338 3364 

3339Hook harus mengembalikan path ke direktori worktree yang dibuat. Claude Code menggunakan path ini sebagai direktori kerja untuk sesi terisolasi. Lihat [Output WorktreeCreate](#worktreecreate-output) untuk mengetahui cara setiap jenis hook mengembalikan path.3365Hook harus mengembalikan path ke direktori worktree yang dibuat. Claude Code menggunakan path ini sebagai direktori kerja untuk sesi terisolasi. Lihat [output WorktreeCreate](#worktreecreate-output) untuk cara setiap jenis hook mengembalikan path.

3340 3366 

3341Claude Code bertindak berdasarkan keberhasilan hook dan path yang dikembalikan, serta membuang `systemMessage` dan `continue`.3367Claude Code bertindak berdasarkan keberhasilan hook dan path yang dikembalikan, serta membuang `systemMessage` dan `continue`.

3342 3368 


3359}3385}

3360```3386```

3361 3387 

3362Hook membaca `name` worktree dari input JSON di stdin, melakukan checkout salinan baru ke direktori baru, lalu mencetak path direktori tersebut. `echo` pada baris terakhir adalah yang dibaca Claude Code sebagai path worktree. Alihkan output lainnya ke stderr agar tidak mengganggu path.3388Hook membaca `name` worktree dari input JSON di stdin, melakukan checkout salinan baru ke direktori baru, dan mencetak path direktori tersebut. `echo` pada baris terakhir adalah yang dibaca Claude Code sebagai path worktree. Alihkan output lain ke stderr agar tidak mengganggu path.

3363 3389 

3364<h4 id="worktreecreate-input">3390<h4 id="worktreecreate-input">

3365 Input WorktreeCreate3391 Input WorktreeCreate

3366</h4>3392</h4>

3367 3393 

3368Selain [kolom input umum](#common-input-fields), hook WorktreeCreate menerima kolom `name`. Ini adalah pengidentifikasi slug untuk worktree baru, baik yang ditentukan oleh pengguna maupun yang dibuat otomatis, misalnya `bold-oak-a3f2`.3394Selain [field input umum](#common-input-fields), hook WorktreeCreate menerima field `name`. Ini adalah pengidentifikasi slug untuk worktree baru, baik yang ditentukan oleh pengguna maupun yang dibuat otomatis, misalnya `bold-oak-a3f2`.

3369 3395 

3370```json theme={null}3396```json theme={null}

3371{3397{


3381 Output WorktreeCreate3407 Output WorktreeCreate

3382</h4>3408</h4>

3383 3409 

3384Hook WorktreeCreate tidak menggunakan model keputusan allow/block standar. Sebagai gantinya, keberhasilan atau kegagalan hook menentukan hasilnya. Hook harus mengembalikan path ke direktori worktree yang dibuat:3410Hook WorktreeCreate tidak menggunakan model keputusan allow/block standar. Sebaliknya, keberhasilan atau kegagalan hook menentukan hasilnya. Hook harus mengembalikan path ke direktori worktree yang dibuat:

3385 3411 

3386* **Hook perintah** (`type: "command"`): cetak path sebagai baris tidak kosong terakhir dari stdout. Claude Code menghapus kode escape ANSI sebelum membaca baris tersebut, sehingga banner startup shell yang dicetak sebelum `echo` Anda diabaikan. Alihkan output hook lainnya ke stderr.3412* **Hook command** (`type: "command"`): cetak path sebagai baris tidak kosong terakhir dari stdout. Claude Code menghapus kode escape ANSI sebelum membaca baris tersebut, sehingga banner startup shell yang dicetak sebelum `echo` Anda diabaikan. Alihkan output hook lainnya ke stderr.

3387* **Hook HTTP** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` di badan respons.3413* **Hook HTTP** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` di body respons.

3388 3414 

3389Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan error.3415Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan error.

3390 3416 

3391Claude Code menyelesaikan path relatif terhadap direktori tempat hook dijalankan, dengan meringkas segmen `.` atau `..` di dalamnya. Jika path yang dihasilkan bukan direktori yang dapat dimasuki Claude Code, sesi mencetak error yang menyebutkan path tersebut dan keluar dengan kode 1.3417Claude Code me-resolve path relatif terhadap direktori tempat hook dijalankan, dengan meringkas segmen `.` atau `..` di dalamnya. Jika path yang dihasilkan bukan direktori yang dapat dimasuki Claude Code, sesi mencetak error yang menyebutkan path tersebut dan keluar dengan kode 1.

3392 3418 

3393Claude Code menolak path absolut yang berisi segmen `.` atau `..`, serta path apa pun yang melewati symlink di bawah root repositori, karena symlink yang di-commit ke repositori dapat mengalihkan worktree ke luar repositori. Error tersebut menyebutkan komponen yang ditolak. Kembalikan path yang dinormalisasi dan tidak melewati symlink di dalam repositori. Sebelum v2.1.216, pembuatan worktree mengikuti path dari hook tanpa penyaringan ini.3419Claude Code menolak path absolut yang berisi segmen `.` atau `..`, dan path apa pun yang melewati symlink di bawah root repositori, karena symlink yang di-commit ke repositori dapat mengalihkan worktree ke luar repositori. Error tersebut menyebutkan komponen yang ditolak. Kembalikan path yang sudah dinormalisasi dan tidak melewati symlink di dalam repositori. Sebelum v2.1.216, pembuatan worktree mengikuti path dari hook tanpa pemeriksaan ini.

3394 3420 

3395<h3 id="worktreeremove">3421<h3 id="worktreeremove">

3396 WorktreeRemove3422 WorktreeRemove

3397</h3>3423</h3>

3398 3424 

3399Berjalan saat Claude Code membersihkan worktree yang dibuat oleh hook [`WorktreeCreate`](#worktreecreate) Anda. Event ini dipicu ketika:3425Berjalan ketika Claude Code membersihkan worktree yang dibuat oleh hook [`WorktreeCreate`](#worktreecreate) Anda. Event ini terpicu ketika:

3400 3426 

3401* Anda keluar dari [sesi worktree](/docs/id/worktrees#start-claude-in-a-worktree) interaktif dan memilih untuk menghapus worktree saat Claude Code meminta Anda3427* Anda keluar dari [sesi worktree](/docs/id/worktrees#start-claude-in-a-worktree) interaktif dan memilih untuk menghapus worktree ketika Claude Code meminta Anda

3402* Anda keluar dari sesi worktree interaktif yang belum Anda [beri nama](/docs/id/sessions#name-your-sessions), Claude Code tidak menemukan file yang berubah atau tidak terlacak, dan menghapus worktree tanpa meminta Anda3428* Anda keluar dari sesi worktree interaktif yang belum Anda [beri nama](/docs/id/sessions#name-your-sessions), Claude Code tidak menemukan file yang berubah atau tidak terlacak, dan Claude Code menghapus worktree tanpa meminta konfirmasi Anda

3403* Anda menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang berjalan di worktree tersebut3429* Anda menghapus [sesi latar belakang](/docs/id/agent-view#what-deleting-a-session-removes) yang berjalan di worktree tersebut

3404* Anda meminta Claude untuk keluar dan menghapus worktree selama sesi, dan Claude menghapusnya dengan tool [`ExitWorktree`](/docs/id/tools-reference)3430* Anda meminta Claude untuk keluar dan menghapus worktree selama sesi, dan Claude menghapusnya dengan tool [`ExitWorktree`](/docs/id/tools-reference)

3405* Sesi yang dimulai oleh [`claude remote-control`](/docs/id/remote-control#start-a-remote-control-session) dalam mode `worktree` berakhir tanpa crash, dan Claude Code tidak menemukan file yang berubah atau tidak terlacak serta tidak ada commit baru di worktree-nya3431* Sesi yang dimulai oleh [`claude remote-control`](/docs/id/remote-control#start-a-remote-control-session) dalam mode `worktree` berakhir tanpa crash, dan Claude Code tidak menemukan file yang berubah atau tidak terlacak serta tidak ada commit baru di worktree-nya

3406* Anda menghentikan `claude remote-control` saat sesi yang dimulainya dalam mode `worktree` masih berjalan, dan Claude Code tidak menemukan file yang berubah atau tidak terlacak serta tidak ada commit baru di worktree-nya3432* Anda menghentikan `claude remote-control` saat sesi yang dimulainya dalam mode `worktree` masih berjalan, dan Claude Code tidak menemukan file yang berubah atau tidak terlacak serta tidak ada commit baru di worktree-nya

3407 3433 

3408Ketika subagent atau agent workflow selesai, Claude Code mempertahankan worktree yang dibuat hook WorktreeCreate Anda untuknya dan tidak menjalankan hook WorktreeRemove Anda. Hapus sendiri worktree tersebut ketika pekerjaan selesai.3434Ketika subagent atau agent workflow selesai, Claude Code menyimpan worktree yang dibuat oleh hook WorktreeCreate Anda untuknya dan tidak menjalankan hook WorktreeRemove Anda. Hapus sendiri worktree tersebut ketika pekerjaan selesai.

3409 3435 

3410Claude Code tidak meminta konfirmasi Anda sebelum hook Anda berjalan untuk panggilan `ExitWorktree` atau pembersihan `claude remote-control`. `ExitWorktree` menolak menghapus worktree yang dibuat hook kecuali panggilan tersebut meneruskan [`discard_changes: true`](/docs/id/agent-sdk/typescript#exitworktree), yang menjadikan hook Anda pemeriksaan terakhir pada jalur tersebut.3436Claude Code tidak meminta konfirmasi Anda sebelum hook Anda berjalan untuk panggilan `ExitWorktree` atau pembersihan `claude remote-control`. `ExitWorktree` menolak menghapus worktree yang dibuat hook kecuali panggilan tersebut menyertakan [`discard_changes: true`](/docs/id/agent-sdk/typescript#exitworktree), yang menjadikan hook Anda sebagai pemeriksaan terakhir pada jalur tersebut.

3411 3437 

3412Claude Code menggunakan git untuk mencari file yang berubah atau tidak terlacak, sehingga tidak menemukan apa pun di worktree yang bukan checkout git atau tidak berada di dalamnya, meskipun direktori tersebut berisi pekerjaan yang belum di-commit. Periksa pekerjaan tersebut di hook WorktreeRemove Anda sebelum hook menghapus apa pun.3438Claude Code menggunakan git untuk mencari file yang berubah atau tidak terlacak, sehingga tidak menemukan apa pun di worktree yang bukan checkout git atau tidak berada di dalamnya, bahkan ketika direktori tersebut berisi pekerjaan yang belum di-commit. Periksa pekerjaan tersebut di hook WorktreeRemove Anda sebelum hook menghapus apa pun.

3413 3439 

3414Untuk worktree berbasis git, Claude Code menangani pembersihan secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate, pasangkan dengan hook WorktreeRemove untuk mengontrol pembersihan:3440Untuk worktree berbasis git, Claude Code menangani pembersihan secara otomatis dengan `git worktree remove`. Jika Anda mengonfigurasi hook WorktreeCreate, pasangkan dengan hook WorktreeRemove untuk mengontrol pembersihan:

3415 3441 

3416* **Tanpa hook WorktreeRemove**: Claude Code beralih ke git sebagai fallback untuk penghapusan saat keluar atau melalui `ExitWorktree`, dan mempertahankan worktree saat `claude remote-control` melakukan pembersihan:3442* **Tanpa hook WorktreeRemove**: Claude Code melakukan fallback ke git untuk penghapusan saat keluar atau melalui `ExitWorktree`, dan menyimpan worktree ketika `claude remote-control` melakukan pembersihan:

3417 * **Anda keluar dari sesi worktree, atau Claude memanggil `ExitWorktree`**: Claude Code menghapus path yang dikembalikan hook WorktreeCreate Anda seperti yang dilakukan `git worktree remove --force`, sehingga worktree yang dikenali git akan dihapus. Worktree yang tidak dikenali git, misalnya yang dibuat hook Anda dengan sistem kontrol versi non-git, tetap ada di disk.3443 * **Anda keluar dari sesi worktree, atau Claude memanggil `ExitWorktree`**: Claude Code menghapus path yang dikembalikan oleh hook WorktreeCreate Anda seperti yang dilakukan `git worktree remove --force`, sehingga worktree yang dikenali git akan dihapus. Worktree yang tidak dikenali git, misalnya yang dibuat hook Anda dengan sistem kontrol versi non-git, tetap ada di disk.

3418 * **`claude remote-control` membersihkan worktree sebuah sesi**: worktree tetap ada di disk, dan terminal yang menjalankan `claude remote-control` menampilkan `worktree removal failed, kept: <path>`.3444 * **`claude remote-control` membersihkan worktree sesi**: worktree tetap ada di disk, dan terminal yang menjalankan `claude remote-control` menampilkan `worktree removal failed, kept: <path>`.

3419 * **Anda menghapus sesi latar belakang**: lihat [Apa yang dihapus saat menghapus sesi](/docs/id/agent-view#what-deleting-a-session-removes).3445 * **Anda menghapus sesi latar belakang**: lihat [Apa yang dihapus saat menghapus sesi](/docs/id/agent-view#what-deleting-a-session-removes).

3420* **Hook keluar dengan 0**: worktree dianggap telah dihapus. Claude Code tidak membaca apa pun lagi dari hook, jadi pastikan hook Anda telah menghapus direktori tersebut.3446* **Hook keluar dengan 0**: worktree dianggap telah dihapus. Claude Code tidak membaca apa pun lagi dari hook, jadi pastikan hook Anda telah menghapus direktori tersebut.

3421* **Hook keluar dengan non-zero**: penghapusan gagal jika direktori di `worktree_path` masih ada setelahnya, dan worktree tetap ada di disk tanpa fallback git. Hook yang telah menghapus direktori sebelum keluar dengan non-zero dianggap telah menghapus. Untuk cara kegagalan dilaporkan, lihat [Input WorktreeRemove](#worktreeremove-input).3447* **Hook keluar dengan non-zero**: penghapusan gagal jika direktori di `worktree_path` masih ada setelahnya, dan worktree tetap ada di disk tanpa fallback git. Hook yang menghapus direktori sebelum keluar dengan non-zero dianggap telah menghapus. Untuk cara kegagalan dilaporkan, lihat [input WorktreeRemove](#worktreeremove-input).

3422 3448 

3423Claude Code tidak pernah menghapus branch milik worktree yang dibuat hook, karena Claude Code hanya mengetahui path yang dikembalikan hook WorktreeCreate Anda. Jika hook WorktreeCreate Anda membuat branch, hapus branch tersebut di hook WorktreeRemove Anda.3449Claude Code tidak pernah menghapus branch milik worktree yang dibuat hook, karena Claude Code hanya mengetahui path yang dikembalikan oleh hook WorktreeCreate Anda. Jika hook WorktreeCreate Anda membuat branch, hapus branch tersebut di hook WorktreeRemove Anda.

3424 3450 

3425Claude Code membuang [kolom output JSON](#json-output) dari hook WorktreeRemove, seperti `systemMessage` dan `continue`.3451Claude Code membuang [field output JSON](#json-output) hook WorktreeRemove, seperti `systemMessage` dan `continue`.

3426 3452 

3427Untuk penghapusan sesi latar belakang, Claude Code memverifikasi path worktree yang tersimpan sebelum menjalankan hook dan menolak path yang merupakan symlink atau melewati symlink di bawah root repositori. Pada jalur tersebut, hook berjalan untuk worktree yang masih berisi file hanya ketika Anda mengonfirmasi penghapusan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes); untuk worktree seperti itu, [`claude rm`](/docs/id/agent-view#manage-sessions-from-the-shell) justru mempertahankan sesi dan worktree. Sebelum v2.1.216, hook berjalan pada path yang tersimpan tanpa pemeriksaan ini.3453Untuk penghapusan sesi latar belakang, Claude Code memverifikasi path worktree yang tersimpan sebelum menjalankan hook dan menolak path yang merupakan symlink atau melewati symlink di bawah root repositori. Pada jalur tersebut, hook berjalan untuk worktree yang masih berisi file hanya ketika Anda mengonfirmasi penghapusan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes); untuk worktree seperti itu, [`claude rm`](/docs/id/agent-view#manage-sessions-from-the-shell) justru menyimpan sesi dan worktree. Sebelum v2.1.216, hook berjalan pada path yang tersimpan tanpa pemeriksaan ini.

3428 3454 

3429Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` dalam input hook. Contoh ini membaca path tersebut dan menghapus direktorinya:3455Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` dalam input hook. Contoh ini membaca path tersebut dan menghapus direktorinya:

3430 3456 


3449 Input WorktreeRemove3475 Input WorktreeRemove

3450</h4>3476</h4>

3451 3477 

3452Selain [kolom input umum](#common-input-fields), hook WorktreeRemove menerima kolom `worktree_path`, yaitu path absolut ke worktree yang sedang dihapus.3478Selain [field input umum](#common-input-fields), hook WorktreeRemove menerima field `worktree_path`, yaitu path absolut ke worktree yang sedang dihapus.

3453 3479 

3454```json theme={null}3480```json theme={null}

3455{3481{


3465 3491 

3466* Worktree tetap ada di disk, dan perintah serta stderr hook dikirim ke [log debug](#debug-hooks).3492* Worktree tetap ada di disk, dan perintah serta stderr hook dikirim ke [log debug](#debug-hooks).

3467* Jika Anda sedang menghapus sesi latar belakang, sesi tersebut juga tetap ada. Pesan penolakan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes) melaporkan bagaimana hook berakhir, seperti `exited 1`, mengutip awal stderr-nya, dan menyatakan apakah menghapus sesi lagi tetap akan menghapus direktori tersebut.3493* Jika Anda sedang menghapus sesi latar belakang, sesi tersebut juga tetap ada. Pesan penolakan di [agent view](/docs/id/agent-view#what-deleting-a-session-removes) melaporkan bagaimana hook berakhir, seperti `exited 1`, mengutip awal stderr-nya, dan menyatakan apakah menghapus sesi lagi tetap akan menghapus direktori tersebut.

3468* Jika `claude remote-control` sedang membersihkan worktree sebuah sesi, terminal yang menjalankannya menampilkan `worktree removal failed, kept: <path>`.3494* Jika `claude remote-control` sedang membersihkan worktree sesi, terminal yang menjalankannya menampilkan `worktree removal failed, kept: <path>`.

3469 3495 

3470<h3 id="precompact">3496<h3 id="precompact">

3471 PreCompact3497 PreCompact


3475 3501 

3476Nilai matcher menunjukkan apakah compaction dipicu secara manual atau otomatis:3502Nilai matcher menunjukkan apakah compaction dipicu secara manual atau otomatis:

3477 3503 

3478| Matcher | Kapan dipicu |3504| Matcher | Kapan terpicu |

3479| :- | :- |3505| :- | :- |

3480| `manual` | `/compact` |3506| `manual` | `/compact` |

3481| `auto` | Auto-compact saat percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |3507| `auto` | Auto-compact ketika percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window), dan [idle compaction](/docs/id/settings-reference#idlecompaction) |

3482 3508 

3483Keluar dengan kode 2 untuk memblokir compaction. Untuk `/compact` manual, pesan stderr ditampilkan kepada pengguna. Anda juga dapat memblokir dengan mengembalikan JSON dengan `"decision": "block"`.3509Keluar dengan kode 2 untuk memblokir compaction. Untuk `/compact` manual, pesan stderr ditampilkan kepada pengguna. Anda juga dapat memblokir dengan mengembalikan JSON dengan `"decision": "block"`.

3484 3510 

3485Memblokir compaction otomatis memiliki efek berbeda tergantung kapan dipicu. Jika compaction dipicu secara proaktif sebelum batas konteks, Claude Code melewatinya dan percakapan berlanjut tanpa di-compact. Jika compaction dipicu untuk pulih dari error batas konteks yang sudah dikembalikan oleh API, error yang mendasarinya muncul dan permintaan saat ini gagal.3511Memblokir compaction otomatis memiliki efek berbeda tergantung kapan terpicu. Jika compaction dipicu secara proaktif sebelum batas konteks, Claude Code melewatinya dan percakapan berlanjut tanpa di-compact. Jika compaction dipicu untuk memulihkan dari error batas konteks yang sudah dikembalikan oleh API, error yang mendasarinya muncul dan permintaan saat ini gagal.

3486 3512 

3487Claude Code membuang kolom `systemMessage` dan `continue` dari hook PreCompact.3513Claude Code membuang field `systemMessage` dan `continue` dari hook PreCompact.

3488 3514 

3489<h4 id="precompact-input">3515<h4 id="precompact-input">

3490 Input PreCompact3516 Input PreCompact

3491</h4>3517</h4>

3492 3518 

3493Selain [kolom input umum](#common-input-fields), hook PreCompact menerima `trigger` dan `custom_instructions`. Untuk `manual`, `custom_instructions` berisi apa yang diteruskan pengguna ke `/compact` dan bernilai `null` ketika pengguna tidak meneruskan apa pun. Untuk `auto`, `custom_instructions` bernilai `null`.3519Selain [field input umum](#common-input-fields), hook PreCompact menerima `trigger` dan `custom_instructions`. Untuk `manual`, `custom_instructions` berisi apa yang diteruskan pengguna ke `/compact` dan bernilai `null` ketika mereka tidak meneruskan apa pun. Untuk `auto`, `custom_instructions` bernilai `null`.

3494 3520 

3495```json theme={null}3521```json theme={null}

3496{3522{


3507 PostCompact3533 PostCompact

3508</h3>3534</h3>

3509 3535 

3510Berjalan setelah Claude Code menyelesaikan operasi compact. Gunakan event ini untuk bereaksi terhadap status baru hasil compact, misalnya untuk mencatat ringkasan yang dihasilkan atau memperbarui status eksternal. Claude Code membuang kolom `systemMessage` dan `continue` dari hook PostCompact.3536Berjalan setelah Claude Code menyelesaikan operasi compact. Gunakan event ini untuk bereaksi terhadap state baru yang sudah di-compact, misalnya untuk mencatat ringkasan yang dihasilkan atau memperbarui state eksternal. Claude Code membuang field `systemMessage` dan `continue` dari hook PostCompact.

3511 3537 

3512Nilai matcher yang sama berlaku seperti untuk `PreCompact`:3538Nilai matcher yang sama berlaku seperti untuk `PreCompact`:

3513 3539 

3514| Matcher | Kapan dipicu |3540| Matcher | Kapan terpicu |

3515| :- | :- |3541| :- | :- |

3516| `manual` | Setelah `/compact` |3542| `manual` | Setelah `/compact` |

3517| `auto` | Setelah auto-compact saat percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window) |3543| `auto` | Setelah auto-compact ketika percakapan mencapai [jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window), dan setelah [idle compaction](/docs/id/settings-reference#idlecompaction) |

3518 3544 

3519<h4 id="postcompact-input">3545<h4 id="postcompact-input">

3520 Input PostCompact3546 Input PostCompact

3521</h4>3547</h4>

3522 3548 

3523Selain [kolom input umum](#common-input-fields), hook PostCompact menerima `trigger` dan `compact_summary`. Kolom `compact_summary` berisi ringkasan percakapan yang dihasilkan oleh operasi compact.3549Selain [field input umum](#common-input-fields), hook PostCompact menerima `trigger` dan `compact_summary`. Field `compact_summary` berisi ringkasan percakapan yang dihasilkan oleh operasi compact.

3524 3550 

3525```json theme={null}3551```json theme={null}

3526{3552{


3539 PreModelSwitch3565 PreModelSwitch

3540</h3>3566</h3>

3541 3567 

3542Berjalan sebelum Claude Code menerapkan peralihan model yang diminta oleh Anda atau klien. Gunakan untuk memblokir peralihan, meminta konfirmasi, atau menampilkan biaya peralihan sebelum terjadi.3568Berjalan sebelum Claude Code menerapkan pergantian model yang diminta oleh Anda atau klien. Gunakan untuk memblokir pergantian, meminta konfirmasi, atau menampilkan biaya pergantian sebelum terjadi.

3543 3569 

3544PreModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Claude Code menjalankannya untuk permintaan berikut:3570PreModelSwitch memerlukan Claude Code v2.1.251 atau yang lebih baru. Claude Code menjalankannya untuk permintaan berikut:

3545 3571 

3546* `/model <name>` dan pemilih `/model`3572* `/model <name>` dan pemilih `/model`

3547* Pemilih model `Option+P` atau `Alt+P`3573* Pemilih model `Option+P` atau `Alt+P`


3549* Mengaktifkan [fast mode](/docs/id/fast-mode) ketika hal itu mengubah model sesi3575* Mengaktifkan [fast mode](/docs/id/fast-mode) ketika hal itu mengubah model sesi

3550* Permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host [Agent SDK](/docs/id/agent-sdk/typescript#query-object) atau [Remote Control](/docs/id/remote-control)3576* Permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host [Agent SDK](/docs/id/agent-sdk/typescript#query-object) atau [Remote Control](/docs/id/remote-control)

3551 3577 

3552Claude Code tidak menjalankan hook PreModelSwitch untuk peralihan yang dilakukannya sendiri, seperti [fallback model otomatis](/docs/id/model-config#automatic-model-fallback) atau memulihkan model saat Anda melanjutkan sesi. Perubahan tersebut hanya mencapai [PostModelSwitch](#postmodelswitch).3578Claude Code tidak menjalankan hook PreModelSwitch untuk pergantian yang dilakukannya sendiri, seperti [fallback model otomatis](/docs/id/model-config#automatic-model-fallback) atau memulihkan model ketika Anda melanjutkan sesi. Perubahan tersebut hanya mencapai [PostModelSwitch](#postmodelswitch).

3553 3579 

3554Claude Code membandingkan matcher dengan nama kanonis model yang menjadi tujuan peralihan sesi, dengan mengabaikan sufiks `[1m]` apa pun. Alias seperti `opus`, ID model bertanggal, dan ID khusus penyedia seperti ID model Amazon Bedrock semuanya cocok dengan satu nama kanonis yang dituju, sehingga `claude-opus-5` mencakup setiap penulisan Opus 5.3580Claude Code membandingkan matcher dengan nama kanonis model yang menjadi tujuan pergantian sesi, dengan mengabaikan sufiks `[1m]` apa pun. Alias seperti `opus`, ID model bertanggal, dan ID khusus penyedia seperti ID model Amazon Bedrock semuanya cocok dengan satu nama kanonis yang menjadi hasil resolusinya, sehingga `claude-opus-5` mencakup setiap penulisan Opus 5.

3555 3581 

3556Ketika Claude Code tidak dapat menentukan nama kanonis untuk target, misalnya ID model kustom yang hanya diketahui oleh [LLM gateway](/docs/id/llm-gateway) Anda, Claude Code menjalankan setiap hook PreModelSwitch terlepas dari matcher. Oleh karena itu, hook yang memblokir harus memeriksa `to_model` dari inputnya alih-alih hanya mengandalkan matcher.3582Ketika Claude Code tidak dapat menentukan nama kanonis untuk target, misalnya ID model kustom yang hanya diketahui oleh [LLM gateway](/docs/id/llm-gateway) Anda, Claude Code menjalankan setiap hook PreModelSwitch terlepas dari matcher-nya. Oleh karena itu, hook yang memblokir harus memeriksa `to_model` dari input-nya alih-alih hanya mengandalkan matcher.

3557 3583 

3558Tulis matcher sebagai nama persis, daftar yang dipisahkan `|` seperti `claude-opus-4-6|claude-opus-5`, atau ekspresi reguler seperti `.*opus.*`. Contoh ini menggunakan matcher nama persis dan juga memeriksa `to_model` dari input hook, sehingga menolak peralihan ke Opus 4.6 dengan keluar menggunakan kode 2 dan membiarkan target lainnya lolos:3584Tulis matcher sebagai nama persis, daftar yang dipisahkan `|` seperti `claude-opus-4-6|claude-opus-5`, atau ekspresi reguler seperti `.*opus.*`. Contoh ini menggunakan matcher nama persis dan juga memeriksa `to_model` dari input hook, sehingga menolak pergantian ke Opus 4.6 dengan keluar menggunakan kode 2 dan membiarkan target lain lolos:

3559 3585 

3560<Tabs>3586<Tabs>

3561 <Tab title="macOS/Linux">3587 <Tab title="macOS/Linux">


3581 </Tab>3607 </Tab>

3582 3608 

3583 <Tab title="Windows (PowerShell)">3609 <Tab title="Windows (PowerShell)">

3584 Daftarkan hook perintah yang menjalankan skrip melalui PowerShell:3610 Daftarkan hook command yang menjalankan skrip melalui PowerShell:

3585 3611 

3586 ```json theme={null}3612 ```json theme={null}

3587 {3613 {


3621 </Tab>3647 </Tab>

3622</Tabs>3648</Tabs>

3623 3649 

3624Untuk memastikan hook berfungsi, jalankan `/model claude-opus-4-6` dari sesi yang menjalankan model lain. Claude Code mempertahankan model saat ini dan melaporkan bahwa hook PreModelSwitch memblokir peralihan, dengan pesan Anda sebagai alasannya.3650Untuk memastikan hook berfungsi, jalankan `/model claude-opus-4-6` dari sesi yang menjalankan model lain. Claude Code mempertahankan model saat ini dan melaporkan bahwa hook PreModelSwitch memblokir pergantian, dengan pesan Anda sebagai alasannya.

3625 3651 

3626<h4 id="premodelswitch-input">3652<h4 id="premodelswitch-input">

3627 Input PreModelSwitch3653 Input PreModelSwitch

3628</h4>3654</h4>

3629 3655 

3630Selain [kolom input umum](#common-input-fields), hook PreModelSwitch menerima kolom-kolom dalam tabel ini. Lima kolom terakhir menjelaskan biaya pengiriman ulang percakapan ke model baru, sehingga hook dapat menampilkan angka tersebut sebelum peralihan terjadi.3656Selain [field input umum](#common-input-fields), hook PreModelSwitch menerima field dalam tabel ini. Lima field terakhir menjelaskan biaya pengiriman ulang percakapan ke model baru, sehingga hook dapat menampilkan angka tersebut sebelum pergantian terjadi.

3631 3657 

3632| Kolom | Tipe | Deskripsi |3658| Field | Tipe | Deskripsi |

3633| :- | :- | :- |3659| :- | :- | :- |

3634| `from_model` | string | ID model asal peralihan |3660| `from_model` | string | ID model asal pergantian |

3635| `to_model` | string | ID model tujuan peralihan. Matcher membandingkan dengan nama kanonis model ini |3661| `to_model` | string | ID model tujuan pergantian. Matcher membandingkan dengan nama kanonis model ini |

3636| `requested_model` | string atau `null` | Model yang disebutkan dalam permintaan: alias seperti `opus`, ID model lengkap, atau `null` ketika permintaan ditujukan untuk model default |3662| `requested_model` | string atau `null` | Model yang disebutkan dalam permintaan: alias seperti `opus`, ID model lengkap, atau `null` ketika permintaan ditujukan untuk model default |

3637| `source` | string | Asal permintaan: `"command"` untuk `/model <name>`, pengaturan Model di `/config`, atau mengaktifkan fast mode; `"picker"` untuk pemilih model; `"sdk"` untuk permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host Agent SDK atau Remote Control |3663| `source` | string | Asal permintaan: `"command"` untuk `/model <name>`, pengaturan Model di `/config`, atau mengaktifkan fast mode; `"picker"` untuk pemilih model; `"sdk"` untuk permintaan `set_model`, atau perubahan model dalam permintaan `apply_flag_settings`, dari host Agent SDK atau Remote Control |

3638| `context_tokens` | number | Token yang dikirim ulang oleh permintaan berikutnya sebagai prompt-nya: gabungan token input, cache read, cache creation, dan output dari respons terakhir dalam percakapan utama. `0` sebelum respons pertama |3664| `context_tokens` | number | Token yang dikirim ulang oleh permintaan berikutnya sebagai prompt-nya: gabungan token input, cache read, cache creation, dan output dari respons terakhir di percakapan utama. `0` sebelum respons pertama |

3639| `prompt_cache_warm` | boolean | Apakah cache prompt model saat ini kemungkinan masih hangat, yang berarti peralihan akan mengorbankannya |3665| `prompt_cache_warm` | boolean | Apakah prompt cache model saat ini kemungkinan masih hangat, yang berarti pergantian akan mengorbankannya |

3640| `cache_ttl` | string | [Masa berlaku cache prompt](/docs/id/prompt-caching#cache-lifetime) yang diminta Claude Code untuk sesi ini: `"5m"` atau `"1h"` |3666| `cache_ttl` | string | [Masa berlaku prompt cache](/docs/id/prompt-caching#cache-lifetime) yang diminta Claude Code untuk sesi ini: `"5m"` atau `"1h"` |

3641| `estimated_cache_write_usd` | number | Perkiraan biaya dalam dolar AS untuk menulis `context_tokens` ke cache prompt pada `to_model` dengan tarif `cache_ttl`, tidak termasuk respons berikutnya. Server mungkin tidak perlu melakukan cache ulang seluruh konteks, jadi perlakukan angka ini sebagai perkiraan |3667| `estimated_cache_write_usd` | number | Estimasi biaya dalam dolar AS untuk menulis `context_tokens` ke prompt cache pada `to_model` dengan tarif `cache_ttl`, tidak termasuk respons berikutnya. Server mungkin tidak perlu melakukan cache ulang seluruh konteks, jadi anggap ini sebagai estimasi |

3642| `pricing` | string | Cara Claude Code menghitung harga `estimated_cache_write_usd`: `"configured"` dengan tarif milik organisasi Anda sendiri jika organisasi telah mengonfigurasinya, `"catalog"` dengan harga daftar, atau `"default"` ketika `to_model` tidak memiliki harga yang diketahui dan Claude Code mengasumsikan tarif default |3668| `pricing` | string | Cara Claude Code menghitung harga `estimated_cache_write_usd`: `"configured"` dengan tarif organisasi Anda sendiri ketika organisasi telah mengonfigurasinya, `"catalog"` dengan harga daftar, atau `"default"` ketika `to_model` tidak memiliki harga yang diketahui dan Claude Code mengasumsikan tarif default |

3643 3669 

3644Contoh ini menunjukkan input untuk `/model opus` dalam sesi yang menjalankan Sonnet 5:3670Contoh ini menunjukkan input untuk `/model opus` dalam sesi yang menjalankan Sonnet 5:

3645 3671 


3665 Kontrol keputusan PreModelSwitch3691 Kontrol keputusan PreModelSwitch

3666</h4>3692</h4>

3667 3693 

3668Hook `PreModelSwitch` dapat membatalkan peralihan, meminta pengguna untuk mengonfirmasinya, atau membiarkannya berlanjut. Exit code 2 atau `decision: "block"` tingkat atas membatalkan peralihan.3694Hook `PreModelSwitch` dapat membatalkan pergantian, meminta pengguna untuk mengonfirmasinya, atau membiarkannya berlanjut. Exit code 2 atau `decision: "block"` tingkat atas membatalkan pergantian.

3669 3695 

3670Untuk kontrol yang lebih rinci, kembalikan `permissionDecision` dan `permissionDecisionReason` dalam objek `hookSpecificOutput`, seperti pada [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` menerima `"allow"`, `"deny"`, dan `"ask"`. Hook ini tidak menerima `"defer"`, `updatedInput`, atau `additionalContext`. Tabel di bawah menjelaskan kedua kolom:3696Untuk kontrol yang lebih rinci, kembalikan `permissionDecision` dan `permissionDecisionReason` dalam objek `hookSpecificOutput`, seperti pada [PreToolUse](#pretooluse-decision-control). `PreModelSwitch` menerima `"allow"`, `"deny"`, dan `"ask"`. Hook ini tidak menerima `"defer"`, `updatedInput`, atau `additionalContext`. Tabel di bawah menjelaskan kedua field tersebut:

3671 3697 

3672| Kolom | Deskripsi |3698| Field | Deskripsi |

3673| :- | :- |3699| :- | :- |

3674| `permissionDecision` | `"allow"` melanjutkan dan melewati [konfirmasi yang ditampilkan Claude Code selama cache prompt masih hangat](/docs/id/prompt-caching#switching-models). `"deny"` membatalkan peralihan. `"ask"` meminta pengguna untuk mengonfirmasinya |3700| `permissionDecision` | `"allow"` melanjutkan dan melewati [konfirmasi yang ditampilkan Claude Code saat prompt cache masih hangat](/docs/id/prompt-caching#switching-models). `"deny"` membatalkan pergantian. `"ask"` meminta pengguna untuk mengonfirmasinya |

3675| `permissionDecisionReason` | Untuk `"deny"`, ditampilkan kepada pengguna sebagai alasan peralihan diblokir, atau dikembalikan sebagai error untuk permintaan `set_model`. Untuk `"ask"`, ditampilkan dalam dialog konfirmasi. Diabaikan untuk `"allow"` |3701| `permissionDecisionReason` | Untuk `"deny"`, ditampilkan kepada pengguna sebagai alasan pergantian diblokir, atau dikembalikan sebagai error untuk permintaan `set_model`. Untuk `"ask"`, ditampilkan di dialog konfirmasi. Diabaikan untuk `"allow"` |

3676 3702 

3677Hanya `/model` dalam sesi interaktif yang dapat menampilkan dialog `"ask"`. Pada setiap surface lainnya, termasuk mode non-interaktif dengan flag `-p`, `/config`, dan permintaan `set_model`, Claude Code memperlakukan `"ask"` sebagai penolakan.3703Hanya `/model` dalam sesi interaktif yang dapat menampilkan dialog `"ask"`. Pada setiap surface lain, termasuk mode non-interaktif dengan flag `-p`, `/config`, dan permintaan `set_model`, Claude Code memperlakukan `"ask"` sebagai penolakan.

3678 3704 

3679Contoh ini meminta pengguna untuk mengonfirmasi dan mengutip jumlah token dari `context_tokens`:3705Contoh ini meminta pengguna untuk mengonfirmasi dan mengutip jumlah token dari `context_tokens`:

3680 3706 


3688}3714}

3689```3715```

3690 3716 

3691Ketika beberapa hook PreModelSwitch mengembalikan keputusan yang berbeda, urutan prioritasnya adalah `deny` > `ask` > `allow`.3717Ketika beberapa hook PreModelSwitch mengembalikan keputusan berbeda, urutan prioritasnya adalah `deny` > `ask` > `allow`.

3692 3718 

3693Claude Code menampilkan kepada pengguna `systemMessage` apa pun yang dikembalikan hook Anda terlepas dari keputusannya, sehingga hook pelaporan biaya dapat mengembalikan `{"systemMessage": "..."}` dan keluar dengan 0.3719Claude Code menampilkan kepada pengguna setiap `systemMessage` yang dikembalikan hook Anda terlepas dari keputusannya, sehingga hook pelaporan biaya dapat mengembalikan `{"systemMessage": "..."}` dan keluar dengan 0.

3694 3720 

3695Hook PreModelSwitch yang tidak merespons sebelum timeout-nya akan memblokir pergantian. Untuk apa yang dilakukan timeout pada event lain, lihat [Timeout](#timeouts). Timeout default untuk event ini adalah 30 detik. `PreModelSwitch` hanya menjalankan hook `command`, `http`, dan `mcp_tool`, sehingga default `prompt` dan `agent` tidak berlaku.3721Hook PreModelSwitch yang tidak merespons sebelum timeout-nya akan memblokir pergantian. Untuk efek timeout pada event lain, lihat [Timeouts](#timeouts). Timeout default untuk event ini adalah 30 detik. `PreModelSwitch` hanya menjalankan hook `command`, `http`, dan `mcp_tool`, sehingga default `prompt` dan `agent` tidak berlaku.

3696 3722 

3697Hook yang keluar dengan kode selain 0 atau 2 dan tidak mencetak keputusan JSON merupakan error yang tidak memblokir, seperti yang dijelaskan di [Exit code lainnya](#other-exit-codes).3723Hook yang keluar dengan kode selain 0 atau 2 dan tidak mencetak keputusan JSON merupakan error non-blocking, seperti dijelaskan di [Exit code lainnya](#other-exit-codes).

3698 3724 

3699<h3 id="postmodelswitch">3725<h3 id="postmodelswitch">

3700 PostModelSwitch3726 PostModelSwitch

3701</h3>3727</h3>

3702 3728 

3703Berjalan setelah model sesi berubah. Gunakan untuk memberi Claude panduan khusus model tanpa mengedit setiap CLAUDE.md, misalnya instruksi tingkat organisasi yang berlaku pada model tertentu.3729Berjalan setelah model sesi berubah. Gunakan untuk memberikan panduan khusus model kepada Claude tanpa mengedit setiap CLAUDE.md, misalnya instruksi tingkat organisasi yang berlaku pada model tertentu.

3704 3730 

3705PostModelSwitch memerlukan Claude Code v2.1.251 atau lebih baru. Hook ini tidak dapat memblokir, karena model sudah berubah. Claude Code menjalankan hook PostModelSwitch setelah salah satu perubahan berikut:3731PostModelSwitch memerlukan Claude Code v2.1.251 atau yang lebih baru. Hook ini tidak dapat memblokir, karena model sudah berubah. Claude Code menjalankan hook PostModelSwitch setelah salah satu perubahan berikut:

3706 3732 

3707* Peralihan yang diminta oleh Anda atau klien3733* Pergantian yang diminta oleh Anda atau klien

3708* [Fallback model otomatis](/docs/id/model-config#automatic-model-fallback), yang mengubah model sesi3734* [Fallback model otomatis](/docs/id/model-config#automatic-model-fallback), yang mengubah model sesi

3709* Pengaturan seperti [`opusplan`](/docs/id/model-config#opusplan-model-setting) yang masuk atau keluar dari plan mode3735* Pengaturan seperti [`opusplan`](/docs/id/model-config#opusplan-model-setting) yang masuk atau keluar dari plan mode

3710* Claude Code memulihkan model saat Anda melanjutkan sesi3736* Claude Code memulihkan model ketika Anda melanjutkan sesi

3711 3737 

3712Claude Code tidak menjalankan hook PostModelSwitch ketika model dari [rantai model fallback](/docs/id/model-config#fallback-model-chains) melayani satu giliran, karena substitusi tersebut hanya berlangsung satu giliran dan tidak mengubah model sesi.3738Claude Code tidak menjalankan hook PostModelSwitch ketika model dari [rantai model fallback](/docs/id/model-config#fallback-model-chains) melayani suatu giliran, karena penggantian tersebut hanya berlangsung satu giliran dan tidak mengubah model sesi.

3713 3739 

3714Matcher mengikuti aturan yang sama seperti [PreModelSwitch](#premodelswitch): Claude Code membandingkannya dengan nama kanonis model yang menjadi tujuan peralihan sesi.3740Matcher mengikuti aturan yang sama seperti [PreModelSwitch](#premodelswitch): Claude Code membandingkannya dengan nama kanonis model yang menjadi tujuan pergantian sesi.

3715 3741 

3716Contoh ini menambahkan panduan setiap kali model sesi berubah ke model Opus mana pun:3742Contoh ini menambahkan panduan setiap kali model sesi berubah ke model Opus apa pun:

3717 3743 

3718```json theme={null}3744```json theme={null}

3719{3745{


3739 Input PostModelSwitch3765 Input PostModelSwitch

3740</h4>3766</h4>

3741 3767 

3742Hook PostModelSwitch menerima kolom yang sama seperti [PreModelSwitch](#premodelswitch-input), dengan `hook_event_name` diatur ke `"PostModelSwitch"` dan dua nilai `source` tambahan: `"auto"` untuk fallback otomatis atau perubahan lain yang dilakukan Claude Code sendiri, dan `"resume"` untuk model yang dipulihkan saat Anda melanjutkan sesi.3768Hook PostModelSwitch menerima field yang sama seperti [PreModelSwitch](#premodelswitch-input), dengan `hook_event_name` diatur ke `"PostModelSwitch"` dan dua nilai `source` tambahan: `"auto"` untuk fallback otomatis atau perubahan lain yang dilakukan Claude Code sendiri, dan `"resume"` untuk model yang dipulihkan ketika Anda melanjutkan sesi.

3743 3769 

3744`requested_model` bernilai `null` ketika `source` adalah `"auto"`. Ketika `source` adalah `"resume"`, nilainya adalah pengaturan model tersimpan yang dipulihkan Claude Code.3770`requested_model` bernilai `null` ketika `source` adalah `"auto"`. Ketika `source` adalah `"resume"`, nilainya adalah pengaturan model tersimpan yang dipulihkan Claude Code.

3745 3771 


3747 Kontrol keputusan PostModelSwitch3773 Kontrol keputusan PostModelSwitch

3748</h4>3774</h4>

3749 3775 

3750Claude Code mengambil [stdout teks biasa](#exit-code-0) hook Anda saat keluar dengan 0, atau `additionalContext` dari output JSON, dan menyampaikannya kepada Claude bersama permintaan berikutnya setelah peralihan. Selain [kolom output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan:3776Claude Code mengambil [stdout teks biasa](#exit-code-0) hook Anda saat keluar dengan 0, atau `additionalContext` dari output JSON, dan mengirimkannya ke Claude bersama permintaan berikutnya setelah pergantian. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan:

3751 3777 

3752| Kolom | Deskripsi |3778| Field | Deskripsi |

3753| :- | :- |3779| :- | :- |

3754| `additionalContext` | String yang ditambahkan ke konteks Claude bersama permintaan berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |3780| `additionalContext` | String yang ditambahkan ke konteks Claude bersama permintaan berikutnya. Lihat [Menambahkan konteks untuk Claude](#add-context-for-claude) |

3755 3781 

3756Jika hook belum selesai dalam lima detik setelah Anda mengirim prompt berikutnya, Claude Code mengirim permintaan tersebut tanpa output dan melampirkannya ke permintaan setelahnya. Jika model berubah beberapa kali sebelum permintaan berikutnya, Claude Code hanya menyampaikan output untuk model tujuan peralihan terakhir.3782Jika hook belum selesai dalam lima detik setelah Anda mengirim prompt berikutnya, Claude Code mengirim permintaan tersebut tanpa output dan melampirkannya ke permintaan berikutnya. Jika model berubah beberapa kali sebelum permintaan berikutnya, Claude Code hanya mengirimkan output untuk model target pergantian terakhir.

3757 3783 

3758<h3 id="sessionend">3784<h3 id="sessionend">

3759 SessionEnd3785 SessionEnd

3760</h3>3786</h3>

3761 3787 

3762Berjalan saat sesi Claude Code berakhir. Berguna untuk tugas pembersihan, mencatat statistik3788Berjalan ketika sesi Claude Code berakhir. Berguna untuk tugas pembersihan, mencatat statistik

3763sesi, atau menyimpan status sesi. Mendukung matcher untuk memfilter berdasarkan alasan keluar.3789sesi, atau menyimpan state sesi. Mendukung matcher untuk memfilter berdasarkan alasan keluar.

3764 3790 

3765Kolom `reason` dalam input hook menunjukkan mengapa sesi berakhir:3791Field `reason` dalam input hook menunjukkan mengapa sesi berakhir:

3766 3792 

3767| Alasan | Deskripsi |3793| Reason | Deskripsi |

3768| :- | :- |3794| :- | :- |

3769| `clear` | Sesi dibersihkan dengan perintah `/clear` |3795| `clear` | Sesi dibersihkan dengan perintah `/clear` |

3770| `resume` | Sesi dialihkan melalui `/resume` interaktif |3796| `resume` | Sesi dialihkan melalui `/resume` interaktif |

3771| `logout` | Pengguna keluar (log out) |3797| `logout` | Pengguna keluar (log out) |

3772| `prompt_input_exit` | Pengguna keluar saat input prompt terlihat |3798| `prompt_input_exit` | Pengguna keluar saat input prompt sedang terlihat |

3773| `other` | Alasan keluar lainnya |3799| `other` | Alasan keluar lainnya |

3774| `bypass_permissions_disabled` | Dihapus di v2.1.234; Claude Code tidak mengirimkannya. Hapus dari matcher `SessionEnd` Anda |3800| `bypass_permissions_disabled` | Dihapus di v2.1.234; Claude Code tidak mengirimkannya. Hapus dari matcher `SessionEnd` Anda |

3775 3801 


3777 Input SessionEnd3803 Input SessionEnd

3778</h4>3804</h4>

3779 3805 

3780Selain [kolom input umum](#common-input-fields), hook SessionEnd menerima kolom `reason` yang menunjukkan mengapa sesi berakhir. Lihat [tabel alasan](#sessionend) di atas untuk semua nilai.3806Selain [field input umum](#common-input-fields), hook SessionEnd menerima field `reason` yang menunjukkan mengapa sesi berakhir. Lihat [tabel reason](#sessionend) di atas untuk semua nilai.

3781 3807 

3782```json theme={null}3808```json theme={null}

3783{3809{


3789}3815}

3790```3816```

3791 3817 

3792Hook SessionEnd tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir penghentian sesi tetapi dapat melakukan tugas pembersihan. Claude Code membuang [kolom output JSON](#json-output) mereka, seperti `systemMessage`.3818Hook SessionEnd tidak memiliki kontrol keputusan. Hook ini tidak dapat memblokir penghentian sesi tetapi dapat melakukan tugas pembersihan. Claude Code membuang [field output JSON](#json-output)-nya, seperti `systemMessage`.

3793 3819 

3794Hook SessionEnd memiliki timeout default 1,5 detik. Timeout ini berlaku saat Anda keluar, menjalankan `/clear`, atau beralih sesi dengan `/resume` interaktif. Anda dapat memberi hook lebih banyak waktu dengan dua cara:3820Hook SessionEnd memiliki timeout default 1,5 detik. Ini berlaku ketika Anda keluar, menjalankan `/clear`, atau beralih sesi dengan `/resume` interaktif. Anda dapat memberi hook lebih banyak waktu dengan dua cara:

3795 3821 

3796* **`timeout` per hook**: atur `timeout` dalam konfigurasi hook tersebut. Anggaran keseluruhan naik secara otomatis agar sesuai dengan `timeout` per hook tertinggi di file pengaturan Anda, hingga 60 detik. Jika Anda menaikkan anggaran dengan cara ini, hook tanpa `timeout`-nya sendiri tetap menggunakan default. Timeout yang diatur pada hook yang disediakan plugin tidak menaikkan anggaran.3822* **`timeout` per hook**: atur `timeout` dalam konfigurasi hook tersebut. Anggaran keseluruhan naik secara otomatis untuk menyamai `timeout` per hook tertinggi di file pengaturan Anda, hingga 60 detik. Jika Anda menaikkan anggaran dengan cara ini, hook tanpa `timeout` sendiri tetap menggunakan default. Timeout yang diatur pada hook yang disediakan plugin tidak menaikkan anggaran.

3797* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: atur environment variable ini dalam milidetik untuk menimpa anggaran secara eksplisit. Nilai yang Anda atur juga menjadi timeout untuk setiap hook tanpa `timeout`-nya sendiri.3823* **`CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS`**: atur environment variable ini dalam milidetik untuk menimpa anggaran secara eksplisit. Nilai yang Anda atur juga menjadi timeout untuk setiap hook tanpa `timeout` sendiri.

3798 3824 

3799Contoh ini mengatur anggaran menjadi 5 detik:3825Contoh ini mengatur anggaran menjadi 5 detik:

3800 3826 


3802CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude3828CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=5000 claude

3803```3829```

3804 3830 

3805Sebelum v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` hanya menaikkan anggaran keseluruhan, dan hook tanpa `timeout`-nya sendiri tetap dibatalkan setelah 1,5 detik.3831Sebelum v2.1.268, `CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS` hanya menaikkan anggaran keseluruhan, dan hook tanpa `timeout` sendiri tetap dibatalkan setelah 1,5 detik.

3806 3832 

3807<h3 id="elicitation">3833<h3 id="elicitation">

3808 Elicitation3834 Elicitation

3809</h3>3835</h3>

3810 3836 

3811Berjalan saat server MCP meminta input pengguna di tengah tugas. Secara default, Claude Code menampilkan dialog interaktif agar pengguna merespons. Hook dapat mencegat permintaan ini dan merespons secara terprogram, sehingga melewati dialog sepenuhnya.3837Berjalan ketika server MCP meminta input pengguna di tengah tugas. Secara default, Claude Code menampilkan dialog interaktif agar pengguna merespons. Hook dapat mencegat permintaan ini dan merespons secara terprogram, melewati dialog sepenuhnya.

3812 3838 

3813Untuk hook lengkap beserta entri pengaturan dan skripnya, lihat [Menjawab permintaan formulir dari skrip](#answer-a-form-request-from-a-script).3839Untuk hook lengkap beserta entri pengaturan dan skripnya, lihat [Menjawab permintaan formulir dari skrip](#answer-a-form-request-from-a-script).

3814 3840 

3815Kolom matcher dicocokkan dengan nama server MCP.3841Field matcher dicocokkan dengan nama server MCP.

3816 3842 

3817<h4 id="elicitation-input">3843<h4 id="elicitation-input">

3818 Input Elicitation3844 Input Elicitation

3819</h4>3845</h4>

3820 3846 

3821Selain [kolom input umum](#common-input-fields), hook Elicitation menerima `mcp_server_name`, `message`, serta kolom opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.3847Selain [field input umum](#common-input-fields), hook Elicitation menerima `mcp_server_name`, `message`, serta field opsional `mode`, `url`, `elicitation_id`, dan `requested_schema`.

3822 3848 

3823Untuk elicitation mode formulir, kasus yang paling umum:3849Untuk elicitation mode formulir, kasus yang paling umum:

3824 3850 


3859 Output Elicitation3885 Output Elicitation

3860</h4>3886</h4>

3861 3887 

3862Hook Elicitation dapat menjawab permintaan atas nama pengguna, menolak atau membatalkannya, atau menyerahkannya ke dialog. Untuk menjawab, menolak, atau membatalkan, keluar dengan 0 dan cetak objek `hookSpecificOutput` dengan `action`. Server mendapatkan jawaban Anda dan tidak ada dialog yang muncul. Setiap baris tabel ini menunjukkan apa yang harus dikembalikan untuk satu hasil dan apa yang diterima server MCP:3888Hook Elicitation dapat menjawab permintaan atas nama pengguna, menolak atau membatalkannya, atau menyerahkannya ke dialog. Untuk menjawab, menolak, atau membatalkan, keluar dengan 0 dan cetak objek `hookSpecificOutput` dengan `action`. Server menerima jawaban Anda dan tidak ada dialog yang muncul. Setiap baris tabel ini menunjukkan apa yang dikembalikan untuk satu hasil dan apa yang diterima server MCP:

3863 3889 

3864| Untuk | Kembalikan | Yang diterima server |3890| Untuk | Kembalikan | Server menerima |

3865| :- | :- | :- |3891| :- | :- | :- |

3866| Menjawab atas nama pengguna | `"action": "accept"`, dengan nilai kolom formulir di `content` | `accept` dengan `content` Anda |3892| Menjawab atas nama pengguna | `"action": "accept"`, dengan nilai field formulir di `content` | `accept` dengan `content` Anda |

3867| Menolak permintaan | `"action": "decline"` | `decline` |3893| Menolak permintaan | `"action": "decline"` | `decline` |

3868| Membatalkan permintaan | `"action": "cancel"` | `cancel` |3894| Membatalkan permintaan | `"action": "cancel"` | `cancel` |

3869| Menyerahkan permintaan kepada pengguna | Tanpa output, dengan exit code 0 | Jawaban pengguna dari [dialog](/docs/id/mcp#respond-to-mcp-elicitation-requests) |3895| Menyerahkan permintaan kepada pengguna | Tanpa output, dengan exit code 0 | Jawaban pengguna dari [dialog](/docs/id/mcp#respond-to-mcp-elicitation-requests) |

3870 3896 

3871Output ini menjawab permintaan mode formulir yang ditampilkan di [Input Elicitation](#elicitation-input). Kunci di `content` adalah nama properti dari `requested_schema` permintaan tersebut:3897Output ini menjawab permintaan mode formulir yang ditampilkan di [Input Elicitation](#elicitation-input). Kunci dalam `content` adalah nama properti dari `requested_schema` permintaan tersebut:

3872 3898 

3873```json theme={null}3899```json theme={null}

3874{3900{


3893}3919}

3894```3920```

3895 3921 

3896Di dialog, memilih **Decline** mengirim `decline` dan menekan `Esc` mengirim `cancel`, jadi kembalikan yang ingin Anda tampilkan kepada server.3922Di dialog, memilih **Decline** mengirim `decline` dan menekan `Esc` mengirim `cancel`, jadi kembalikan yang ingin Anda tampilkan ke server.

3897 3923 

3898Untuk permintaan mode URL, hook yang mengembalikan `accept` melewati dialog, sehingga URL tidak pernah dibuka.3924Untuk permintaan mode URL, hook yang mengembalikan `accept` melewati dialog, sehingga URL tidak pernah dibuka.

3899 3925 


3903 Cara lain untuk menolak elicitation3929 Cara lain untuk menolak elicitation

3904</h4>3930</h4>

3905 3931 

3906Hook Anda juga dapat menolak dengan cara-cara berikut. Server menerima `decline` yang sama seperti untuk `"action": "decline"`:3932Hook Anda juga dapat menolak dengan cara berikut. Server menerima `decline` yang sama seperti untuk `"action": "decline"`:

3907 3933 

3908* **Keluar dengan kode 2**: Claude Code mengabaikan `hookSpecificOutput` yang dicetak oleh hook yang sama3934* **Keluar dengan kode 2**: Claude Code mengabaikan `hookSpecificOutput` yang dicetak oleh hook yang sama

3909* **Mencetak `"decision": "block"` tingkat atas**: blokir tersebut menimpa `action` dalam output yang sama3935* **Mencetak `"decision": "block"` tingkat atas**: block menimpa `action` dalam output yang sama

3910 3936 

3911Ketika beberapa hook cocok dengan permintaan yang sama, penolakan dari salah satunya menimpa `accept` atau `cancel` dari yang lain.3937Ketika beberapa hook cocok dengan permintaan yang sama, penolakan dari salah satunya menimpa `accept` atau `cancel` dari hook lain.

3912 3938 

3913Skrip ini menolak permintaan mode URL dan menyerahkan permintaan formulir ke dialog:3939Skrip ini menolak permintaan mode URL dan menyerahkan permintaan formulir ke dialog:

3914 3940 


3927 Menjawab permintaan formulir dari skrip3953 Menjawab permintaan formulir dari skrip

3928</h4>3954</h4>

3929 3955 

3930Contoh ini menjawab satu pertanyaan berulang atas nama pengguna. Server MCP bernama `issue-tracker` meminta kunci proyek dalam formulir, dan hook mengisi `DOCS`. Skrip menerima ketika `project_key` adalah satu-satunya kolom formulir. Untuk permintaan lainnya, skrip tidak mencetak apa pun, sehingga dialog muncul.3956Contoh ini menjawab satu pertanyaan berulang atas nama pengguna. Server MCP bernama `issue-tracker` meminta kunci proyek dalam formulir, dan hook mengisinya dengan `DOCS`. Skrip menerima ketika `project_key` adalah satu-satunya field formulir. Untuk permintaan lainnya, skrip tidak mencetak apa pun, sehingga dialog muncul.

3931 3957 

3932<Tabs>3958<Tabs>

3933 <Tab title="macOS/Linux">3959 <Tab title="macOS/Linux">

3934 Daftarkan hook perintah untuk event tersebut di file pengaturan Anda, dengan nama server sebagai matcher:3960 Daftarkan hook command untuk event ini di file pengaturan Anda, dengan nama server sebagai matcher:

3935 3961 

3936 ```json theme={null}3962 ```json theme={null}

3937 {3963 {


3966 </Tab>3992 </Tab>

3967 3993 

3968 <Tab title="Windows (PowerShell)">3994 <Tab title="Windows (PowerShell)">

3969 Daftarkan hook perintah yang menjalankan skrip melalui PowerShell, dengan nama server sebagai matcher:3995 Daftarkan hook command yang menjalankan skrip melalui PowerShell, dengan nama server sebagai matcher:

3970 3996 

3971 ```json theme={null}3997 ```json theme={null}

3972 {3998 {


4012 </Tab>4038 </Tab>

4013</Tabs>4039</Tabs>

4014 4040 

4015Untuk memastikan hook berfungsi, jalankan Claude Code dengan `claude --debug` dan berikan Claude tugas yang membuat server meminta kunci proyek. Tidak ada dialog yang muncul, dan [log debug](#debug-hooks) memiliki baris yang diakhiri dengan `Elicitation resolved by hook: {"action":"accept","content":{"project_key":"DOCS"}}`.4041Untuk memastikan hook berfungsi, mulai Claude Code dengan `claude --debug` dan berikan Claude tugas yang membuat server meminta kunci proyek. Tidak ada dialog yang muncul, dan [log debug](#debug-hooks) memiliki baris yang diakhiri dengan `Elicitation resolved by hook: {"action":"accept","content":{"project_key":"DOCS"}}`.

4016 4042 

4017<h3 id="elicitationresult">4043<h3 id="elicitationresult">

4018 ElicitationResult4044 ElicitationResult


4020 4046 

4021Berjalan setelah pengguna merespons elicitation MCP. Hook dapat mengamati, memodifikasi, atau memblokir respons sebelum dikirim kembali ke server MCP.4047Berjalan setelah pengguna merespons elicitation MCP. Hook dapat mengamati, memodifikasi, atau memblokir respons sebelum dikirim kembali ke server MCP.

4022 4048 

4023Ketika hook [Elicitation](#elicitation) menjawab permintaan, Claude Code mengirim jawaban tersebut ke server tanpa menjalankan hook ElicitationResult.4049Ketika hook [Elicitation](#elicitation) menjawab suatu permintaan, Claude Code mengirim jawaban tersebut ke server tanpa menjalankan hook ElicitationResult.

4024 4050 

4025Kolom matcher dicocokkan dengan nama server MCP.4051Field matcher dicocokkan dengan nama server MCP.

4026 4052 

4027<h4 id="elicitationresult-input">4053<h4 id="elicitationresult-input">

4028 Input ElicitationResult4054 Input ElicitationResult

4029</h4>4055</h4>

4030 4056 

4031Selain [kolom input umum](#common-input-fields), hook ElicitationResult menerima `mcp_server_name`, `action`, serta kolom opsional `mode`, `elicitation_id`, dan `content`.4057Selain [field input umum](#common-input-fields), hook ElicitationResult menerima `mcp_server_name`, `action`, serta field opsional `mode`, `elicitation_id`, dan `content`.

4032 4058 

4033```json theme={null}4059```json theme={null}

4034{4060{


4047 Output ElicitationResult4073 Output ElicitationResult

4048</h4>4074</h4>

4049 4075 

4050Hook ElicitationResult dapat meloloskan respons pengguna, mengubah nilainya, atau memblokirnya. Untuk mengubah atau memblokir respons, keluar dengan 0 dan cetak objek `hookSpecificOutput` dengan `action`. Setiap baris tabel ini menunjukkan apa yang harus dikembalikan untuk satu hasil dan apa yang diterima server MCP:4076Hook ElicitationResult dapat meloloskan respons pengguna, mengubah nilainya, atau memblokirnya. Untuk mengubah atau memblokir respons, keluar dengan 0 dan cetak objek `hookSpecificOutput` dengan `action`. Setiap baris tabel ini menunjukkan apa yang dikembalikan untuk satu hasil dan apa yang diterima server MCP:

4051 4077 

4052| Untuk | Kembalikan | Yang diterima server |4078| Untuk | Kembalikan | Server menerima |

4053| :- | :- | :- |4079| :- | :- | :- |

4054| Meloloskan respons | Tanpa output, dengan exit code 0 | Respons pengguna, tanpa perubahan |4080| Meloloskan respons | Tanpa output, dengan exit code 0 | Respons pengguna, tanpa perubahan |

4055| Mengubah nilai yang dikirim | `"action": "accept"`, dengan nilai baru di `content` | `accept` dengan `content` Anda sebagai pengganti nilai pengguna |4081| Mengubah nilai yang dikirimkan | `"action": "accept"`, dengan nilai baru di `content` | `accept` dengan `content` Anda sebagai pengganti nilai pengguna |

4056| Memblokir respons | `"action": "decline"` | `decline`, tanpa nilai pengguna |4082| Memblokir respons | `"action": "decline"` | `decline`, tanpa nilai pengguna |

4057| Membatalkan permintaan | `"action": "cancel"` | `cancel`, beserta nilai yang dikirim pengguna. Untuk menahannya, kembalikan `"decline"` |4083| Membatalkan permintaan | `"action": "cancel"` | `cancel`, beserta nilai yang dikirimkan pengguna. Untuk menahannya, kembalikan `"decline"` |

4058 4084 

4059Output ini mengubah respons yang ditampilkan di [Input ElicitationResult](#elicitationresult-input), sehingga server menerima `alice@example.com` di tempat pengguna mengirim `alice`:4085Output ini mengubah respons yang ditampilkan di [Input ElicitationResult](#elicitationresult-input), sehingga server menerima `alice@example.com` padahal pengguna mengirimkan `alice`:

4060 4086 

4061```json theme={null}4087```json theme={null}

4062{4088{


4070}4096}

4071```4097```

4072 4098 

4073`content` Anda menggantikan seluruh objek `content` milik pengguna, jadi sertakan kolom yang tidak Anda ubah. Kembalikan `action` bersamanya, karena Claude Code mengabaikan `hookSpecificOutput` yang tidak memiliki `action`.4099`content` Anda menggantikan seluruh objek `content` pengguna, jadi sertakan field yang tidak Anda ubah. Kembalikan `action` bersamanya, karena Claude Code mengabaikan `hookSpecificOutput` yang tidak memiliki `action`.

4074 4100 

4075Hook ElicitationResult juga berjalan ketika pengguna menolak atau membatalkan, dan `action` Anda menggantikan milik mereka. Periksa bahwa `action` pada input adalah `accept` sebelum Anda mengembalikan `accept`, atau hook Anda akan mengubah permintaan yang ditolak menjadi diterima. Skrip ini melakukan perubahan yang sama ketika pengguna menerima, mempertahankan kolom lainnya, dan tidak mencetak apa pun dalam kondisi lain:4101Hook ElicitationResult juga berjalan ketika pengguna menolak atau membatalkan, dan `action` Anda menggantikan milik mereka. Periksa bahwa `action` pada input adalah `accept` sebelum Anda mengembalikan `accept`, atau hook Anda akan mengubah permintaan yang ditolak menjadi diterima. Skrip ini melakukan perubahan yang sama ketika pengguna menerima, mempertahankan field lainnya, dan tidak mencetak apa pun dalam kasus lain:

4076 4102 

4077```bash theme={null}4103```bash theme={null}

4078#!/bin/bash4104#!/bin/bash


4351* **Sendirian di stdout**: ketika respons adalah satu-satunya teks di stdout, respons tersebut dapat mencakup beberapa baris, seperti output `jq` yang diformat rapi. Mencakup beberapa baris memerlukan Claude Code v2.1.295 atau yang lebih baru.4377* **Sendirian di stdout**: ketika respons adalah satu-satunya teks di stdout, respons tersebut dapat mencakup beberapa baris, seperti output `jq` yang diformat rapi. Mencakup beberapa baris memerlukan Claude Code v2.1.295 atau yang lebih baru.

4352* **Pada satu barisnya sendiri**: async hook dapat mencetak teks lain ke stdout ketika respons muat dalam satu baris tersendiri, misalnya dengan `jq -c`.4378* **Pada satu barisnya sendiri**: async hook dapat mencetak teks lain ke stdout ketika respons muat dalam satu baris tersendiri, misalnya dengan `jq -c`.

4353 4379 

4354Claude Code memvalidasi respons JSON tersebut terhadap [output schema](#json-output) yang sama seperti hooks sinkron, dan menghapus bidang apa pun yang nilainya memiliki tipe yang salah, seperti `systemMessage` yang bukan string, alih-alih menyampaikannya. Jalankan dengan `--debug` untuk melihat peringatan yang menyebutkan setiap bidang yang dihapus. Sebelum v2.1.202, output JSON yang tidak terbentuk dengan baik dari async hook dapat menghancurkan sesi, dan kerusakan terulang setiap kali sesi dilanjutkan.4380Claude Code memvalidasi respons JSON tersebut terhadap [skema output](#json-output) yang sama seperti hooks sinkron, dan menghapus bidang apa pun yang nilainya memiliki tipe yang salah, seperti `systemMessage` yang bukan string, alih-alih menyampaikannya. Jalankan dengan `--debug` untuk melihat peringatan yang menyebutkan setiap bidang yang dihapus.

4355 4381 

4356Notifikasi penyelesaian async hook ditekan secara default. Untuk melihatnya, aktifkan mode verbose dengan `Ctrl+O` atau mulai Claude Code dengan `--verbose`.4382Notifikasi penyelesaian async hook ditekan secara default. Untuk melihatnya, aktifkan mode verbose dengan `Ctrl+O` atau mulai Claude Code dengan `--verbose`.

4357 4383 

Details

491 491 

492Untuk mematikan saran prompt di seluruh organisasi, atur `promptSuggestionEnabled` ke `false` dalam [managed settings](/docs/id/managed-settings). Juga atur `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` ke `false` di bawah kunci [`env`](/docs/id/settings-reference#env) yang dikelola sehingga pengguna tidak dapat mengaktifkannya kembali dengan variabel lingkungan mereka sendiri.492Untuk mematikan saran prompt di seluruh organisasi, atur `promptSuggestionEnabled` ke `false` dalam [managed settings](/docs/id/managed-settings). Juga atur `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` ke `false` di bawah kunci [`env`](/docs/id/settings-reference#env) yang dikelola sehingga pengguna tidak dapat mengaktifkannya kembali dengan variabel lingkungan mereka sendiri.

493 493 

494<h2 id="you-should-know-suggestions">

495 Saran You should know

496</h2>

497 

498"You should know" mencari satu hal yang perlu Anda ketahui tetapi mungkin terlewat, seperti tradeoff yang dipilih Claude tanpa menyebutkannya atau hasil yang mungkin keliru. Ketika menemukannya, fitur ini menampilkan catatan singkat di atas input prompt:

499 

500```text theme={null}

501✦ Heads up · There was a change to how folder sharing starts in June, which may have bumped usage metrics artificially.

502 1: Learn more 2: Knew this already 0: Dismiss

503```

504 

505Ini adalah salah satu [mod bawaan](/docs/id/plugins/mods/overview#mods-built-into-claude-code) Claude Code, yaitu plugin yang sudah terpasang di Claude Code dan nonaktif secara default. Memerlukan Claude Code v2.1.287 atau yang lebih baru.

506 

507Selama aktif, sebuah side agent membaca ulang percakapan dari waktu ke waktu saat Claude mengerjakan tugas yang lebih panjang. Side agent adalah permintaan terpisah ke model yang sama dan tidak memiliki tool, sehingga tidak dapat membaca file, menjalankan perintah, atau mengubah apa yang dilakukan Claude.

508 

509Jika mod ini tersedia untuk organisasi Anda, `/plugin` akan mencantumkannya ketika Anda terhubung langsung ke Claude API dengan akun claude.ai atau kunci API Console. Mod ini tidak tercantum ketika Anda terhubung melalui [LLM gateway](/docs/id/llm-gateway) atau [Claude apps gateway](/docs/id/claude-apps-gateway), atau mendapatkan kunci Anda dari [`apiKeyHelper`](/docs/id/settings-reference#apikeyhelper). Bahkan dengan koneksi langsung, sesi-sesi berikut tidak mencantumkannya:

510 

511* Sesi yang [tidak mengambil feature flag](/docs/id/env-vars#features-that-need-feature-flag-fetching) yang dibutuhkan mod ini, seperti sesi dengan `DISABLE_TELEMETRY` yang diatur

512* [Sesi pertama setelah instalasi atau upgrade](/docs/id/env-vars#first-session-after-an-install-or-upgrade) yang flag-nya belum diterima

513 

514Untuk mengaktifkannya, jalankan ini di prompt Claude Code:

515 

516```text theme={null}

517/plugin enable cc-plugin-you-should-know@builtin

518```

519 

520Jika `/plugin` tidak mencantumkan mod ini, perintah enable akan menjawab `Plugin "cc-plugin-you-should-know@builtin" is not installed in this project`.

521 

522<h3 id="cost-of-checks">

523 Biaya pemeriksaan

524</h3>

525 

526Selama mod ini aktif, pemeriksaan berupa permintaan latar belakang ke model yang sama dengan yang digunakan sesi Anda, dan dihitung terhadap batas penggunaan paket Anda atau biaya API Anda. Setiap pemeriksaan mengirimkan apa yang sudah ada dalam konteks Claude, yaitu percakapan sejauh ini beserta hasil tool-nya, diikuti oleh instruksi milik mod itu sendiri dan teks catatan terbaru Anda. Bagian percakapan dibaca dari [prompt cache](/docs/id/prompt-caching) sesi dengan ketentuan yang sama seperti permintaan Claude berikutnya. Instruksinya, yang berjumlah beberapa ribu token, dan balasan side agent ditagih penuh pada setiap pemeriksaan.

527 

528Untuk melihat pemeriksaan berlangsung, atur [`CLAUDE_CODE_YOU_SHOULD_KNOW_DEBUG=1`](/docs/id/env-vars) di shell Anda sebelum memulai Claude Code.

529 

530<h3 id="answer-a-note">

531 Menanggapi catatan

532</h3>

533 

534Ketik digit pilihan saja ke dalam input prompt yang kosong. Sebuah catatan menawarkan pilihan berikut:

535 

536* **Learn more**: membuka penjelasan singkat di bawah catatan, dengan pilihannya sendiri:

537 * **Understood**: menutupnya dan menandai topik sebagai sudah diketahui

538 * **Chat in main session**: mengutip catatan ke input prompt Anda sehingga Anda dapat menambahkan pertanyaan dan mengirimkannya ke Claude

539 * **Dismiss**: menutupnya tanpa menandai topik sebagai sudah diketahui

540* **Knew this already**: menutup catatan dan menandai topik sebagai sudah diketahui.

541* **Dismiss**: menutup catatan.

542 

543Agent utama tidak melihat catatan kecuali Anda mengirimkannya dengan **Chat in main session**.

544 

545Claude Code menyimpan catatan terbaru Anda dan topik yang Anda tandai sebagai sudah diketahui dalam file yang namanya diawali `cc-plugin-you-should-know` di bawah `~/.claude/plugins/store/`. Setiap pemeriksaan, di sesi ini maupun sesi berikutnya, mencantumkannya kepada side agent sebagai hal yang tidak boleh diulang. Claude Code menghapus file tersebut setelah melewati [`cleanupPeriodDays`](/docs/id/settings-reference#cleanupperioddays) tanpa ada sesi yang membaca atau menulisnya. Untuk menghapusnya lebih cepat, hapus file tersebut saat tidak ada sesi yang berjalan.

546 

547<h3 id="turn-off-you-should-know">

548 Mematikan You should know

549</h3>

550 

551Untuk mematikan You should know, gunakan salah satu cara berikut:

552 

553* Di prompt Claude Code, jalankan `/plugin disable cc-plugin-you-should-know@builtin`, atau matikan dari tab **Installed** di `/plugin`

554* Setelah Anda memilih **Dismiss** pada catatan tanpa membuka **Learn more** terlebih dahulu, pilih **Turn off suggestions** pada baris `Dismissed.`, yang akan hilang setelah 20 detik

555 

494<h2 id="emoji-shortcodes">556<h2 id="emoji-shortcodes">

495 Emoji shortcodes557 Emoji shortcodes

496</h2>558</h2>

Details

257 257 

258Daftarkan direktori di `sparsePaths`, bukan file individual. File level-root seperti `package.json`, `tsconfig.base.json`, dan file lock selalu diperiksa bersama direktori yang Anda daftarkan. Direktori level-root tidak, jadi sertakan `.claude` dalam daftar jika Anda menginginkan repository root's `.claude/settings.json` atau `.claude/rules/` tersedia di dalam worktree. Untuk project skills, agents, dan commands, lihat [What worktrees share with the main checkout](/docs/id/worktrees#what-worktrees-share-with-the-main-checkout).258Daftarkan direktori di `sparsePaths`, bukan file individual. File level-root seperti `package.json`, `tsconfig.base.json`, dan file lock selalu diperiksa bersama direktori yang Anda daftarkan. Direktori level-root tidak, jadi sertakan `.claude` dalam daftar jika Anda menginginkan repository root's `.claude/settings.json` atau `.claude/rules/` tersedia di dalam worktree. Untuk project skills, agents, dan commands, lihat [What worktrees share with the main checkout](/docs/id/worktrees#what-worktrees-share-with-the-main-checkout).

259 259 

260Sparse checkout memerlukan git untuk mengaktifkan `extensions.worktreeConfig` di `.git/config` bersama repository saat worktree sparse ada. Claude Code menghapus entri itu setelah worktree terakhir dihapus, tetapi hanya jika Claude Code yang menambahkannya. Itu tidak pernah menghapus nilai yang Anda atur sendiri. Sebelum v2.1.207, entri tetap ada setelah worktree terakhir dihapus, dan alat berbasis go-git seperti `tea` gagal membuka repository sampai Anda menjalankan `git config --unset extensions.worktreeConfig`.260Sparse checkout memerlukan git untuk mengaktifkan `extensions.worktreeConfig` di `.git/config` bersama repositori selama worktree sparse ada. Claude Code menghapus entri itu setelah worktree terakhir dihapus, tetapi hanya jika Claude Code yang menambahkannya. Claude Code tidak pernah menghapus nilai yang Anda atur sendiri.

261 261 

262Untuk menghindari duplikasi direktori besar seperti `node_modules` di seluruh worktrees, pasangkan `sparsePaths` dengan `symlinkDirectories` di `.claude/settings.json` yang sama:262Untuk menghindari duplikasi direktori besar seperti `node_modules` di seluruh worktrees, pasangkan `sparsePaths` dengan `symlinkDirectories` di `.claude/settings.json` yang sama:

263 263 

Details

518 518 

519Letakkan kredensial gateway di `ANTHROPIC_FOUNDRY_API_KEY`; itu dikirim ke gateway sebagai header `x-api-key`. Gateway yang mengharapkan token bearer dapat mengambil [`ANTHROPIC_FOUNDRY_AUTH_TOKEN`](/docs/id/env-vars) sebagai gantinya. Claude Code mengirim nilai itu sebagai header `Authorization: Bearer`, dan itu mengambil prioritas atas `ANTHROPIC_FOUNDRY_API_KEY` ketika keduanya diatur. Memerlukan Claude Code v2.1.203 atau lebih baru.519Letakkan kredensial gateway di `ANTHROPIC_FOUNDRY_API_KEY`; itu dikirim ke gateway sebagai header `x-api-key`. Gateway yang mengharapkan token bearer dapat mengambil [`ANTHROPIC_FOUNDRY_AUTH_TOKEN`](/docs/id/env-vars) sebagai gantinya. Claude Code mengirim nilai itu sebagai header `Authorization: Bearer`, dan itu mengambil prioritas atas `ANTHROPIC_FOUNDRY_API_KEY` ketika keduanya diatur. Memerlukan Claude Code v2.1.203 atau lebih baru.

520 520 

521Untuk gateway yang menyuntikkan header `Authorization` miliknya sendiri, atur `CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1` dan biarkan kedua variabel kredensial tidak diatur. Claude Code kemudian mengirim permintaan tanpa kredensial Azure dan mempertahankan header `Authorization` yang Anda suplai, misalnya melalui `ANTHROPIC_CUSTOM_HEADERS`. Sebelum v2.1.203, `CLAUDE_CODE_SKIP_FOUNDRY_AUTH` tanpa kunci API membuat klien Microsoft Foundry tidak dapat mengirim permintaan.521Untuk gateway yang menyuntikkan header `Authorization` miliknya sendiri, atur `CLAUDE_CODE_SKIP_FOUNDRY_AUTH=1` dan biarkan kedua variabel kredensial tidak diatur. Claude Code kemudian mengirim permintaan tanpa kredensial Azure dan mempertahankan header `Authorization` yang Anda suplai, misalnya melalui `ANTHROPIC_CUSTOM_HEADERS`.

522 522 

523<Tabs>523<Tabs>

524 <Tab title="Bash atau Zsh">524 <Tab title="Bash atau Zsh">

Details

168| :- | :- |168| :- | :- |

169| `x-claude-code-request-class` | Jenis permintaan apa ini: `main` untuk giliran percakapan utama, `subagent` untuk giliran [subagent](/docs/id/sub-agents), `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 |169| `x-claude-code-request-class` | Jenis permintaan apa ini: `main` untuk giliran percakapan utama, `subagent` untuk giliran [subagent](/docs/id/sub-agents), `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 |

170| `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](/docs/id/agent-teams) yang berjalan dalam proses pemimpin, atau `fork` untuk [fork](/docs/id/sub-agents#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 |170| `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](/docs/id/agent-teams) yang berjalan dalam proses pemimpin, atau `fork` untuk [fork](/docs/id/sub-agents#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 |

171| `x-claude-code-compaction` | Hadir pada permintaan yang merangkum percakapan selama [compaction](/docs/id/prompt-caching#compacting-the-conversation). Nilainya mengatakan apa yang memicunya: `auto` ketika jendela konteks mendekati kapasitas, `manual` untuk `/compact`, atau `reactive` ketika API menolak permintaan sebagai terlalu panjang. Tidak ada pada setiap permintaan lainnya |171| `x-claude-code-compaction` | Hadir pada permintaan yang merangkum percakapan selama [compaction](/docs/id/prompt-caching#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](/docs/id/settings-reference#idlecompaction). Tidak ada pada setiap permintaan lainnya |

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

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

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


291 291 

292Pada Claude Code v2.1.227 atau lebih baru, organisasi Anda dapat menjaga [pencarian alat MCP](/docs/id/mcp#scale-with-mcp-tool-search) tetap aktif di bawah variabel ini melalui [pengaturan terkelola](/docs/id/managed-settings). Apa yang Claude Code kirimkan dengan override tersebut berlaku tergantung pada cara Anda terhubung:292Pada Claude Code v2.1.227 atau lebih baru, organisasi Anda dapat menjaga [pencarian alat MCP](/docs/id/mcp#scale-with-mcp-tool-search) tetap aktif di bawah variabel ini melalui [pengaturan terkelola](/docs/id/managed-settings). Apa yang Claude Code kirimkan dengan override tersebut berlaku tergantung pada cara Anda terhubung:

293 293 

294* Pada koneksi langsung, atau melalui gateway yang diatur dengan `ANTHROPIC_BASE_URL`, Claude Code terus mengirim header beta pencarian alat, field alat `defer_loading`, dan blok `tool_reference`, dan menghapus sisanya294* Pada koneksi langsung tanpa konfigurasi HIPAA, atau melalui gateway yang diatur dengan `ANTHROPIC_BASE_URL`, Claude Code terus mengirim header beta pencarian alat, field alat `defer_loading`, dan blok `tool_reference`

295* Pada penyedia cloud, atau masuk melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway), override tidak memiliki efek295* Pada penyedia cloud, atau masuk melalui [gateway aplikasi Claude](/docs/id/claude-apps-gateway), override tidak memiliki efek

296* Dalam sesi yang [mendapatkan konfigurasi HIPAA](/docs/id/hipaa-setup#check-how-developers-sign-in-and-connect), override tidak memiliki efek dan pencarian alat tetap nonaktif

296 297 

297Set kemampuan Claude Code mengirim tumbuh di seluruh rilis. Untuk string header beta saat ini, lihat [referensi header beta](https://platform.claude.com/docs/en/api/beta-headers); uji gateway Anda terhadap rilis Claude Code baru daripada menyematkan ke daftar yang diamati.298Set kemampuan Claude Code mengirim tumbuh di seluruh rilis. Untuk string header beta saat ini, lihat [referensi header beta](https://platform.claude.com/docs/en/api/beta-headers); uji gateway Anda terhadap rilis Claude Code baru daripada menyematkan ke daftar yang diamati.

298 299 

mcp.md +79 −50

Details

90 90 

91Saat mengonfigurasi server MCP melalui JSON di `.mcp.json`, `~/.claude.json`, atau `claude mcp add-json`, bidang `type` menerima `streamable-http` sebagai alias untuk `http`. Spesifikasi MCP menggunakan nama `streamable-http` untuk transport ini, jadi konfigurasi yang disalin dari dokumentasi server berfungsi tanpa modifikasi.91Saat mengonfigurasi server MCP melalui JSON di `.mcp.json`, `~/.claude.json`, atau `claude mcp add-json`, bidang `type` menerima `streamable-http` sebagai alias untuk `http`. Spesifikasi MCP menggunakan nama `streamable-http` untuk transport ini, jadi konfigurasi yang disalin dari dokumentasi server berfungsi tanpa modifikasi.

92 92 

93Entri JSON yang memiliki `url` tetapi tidak ada `type` adalah kesalahan konfigurasi, karena Claude Code membaca entri tanpa `type` sebagai server stdio. Claude Code melewati server itu dan melaporkan `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`. Sebelum v2.1.202, Claude Code melaporkan kesalahan konfigurasi ini sebagai `command: expected string, received undefined`.93Entri JSON yang memiliki `url` tetapi tidak ada `type` adalah kesalahan konfigurasi, karena Claude Code membaca entri tanpa `type` sebagai server stdio. Claude Code melewati server itu dan melaporkan `MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry`.

94 94 

95Hanya aplikasi host SDK, seperti aplikasi [Agent SDK](/docs/id/agent-sdk/mcp) atau [aplikasi desktop](/docs/id/desktop), yang dapat mendaftarkan server `"type": "sdk"` dalam proses. Claude Code melewati entri `"type": "sdk"` di `.mcp.json`, `~/.claude.json`, atau pengaturan dan melaporkan `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.95Hanya aplikasi host SDK, seperti aplikasi [Agent SDK](/docs/id/agent-sdk/mcp) atau [aplikasi desktop](/docs/id/desktop), yang dapat mendaftarkan server `"type": "sdk"` dalam proses. Claude Code melewati entri `"type": "sdk"` di `.mcp.json`, `~/.claude.json`, atau pengaturan dan melaporkan `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.

96 96 


128 128 

129Claude Code menetapkan `CLAUDE_PROJECT_DIR` di lingkungan server yang dihasilkan ke akar proyek, sehingga server Anda dapat menyelesaikan jalur relatif proyek tanpa bergantung pada direktori kerja. Ini adalah direktori yang sama yang diterima hook dalam variabel `CLAUDE_PROJECT_DIR` mereka. Bacanya dari dalam proses server Anda, misalnya `process.env.CLAUDE_PROJECT_DIR` di Node atau `os.environ["CLAUDE_PROJECT_DIR"]` di Python.129Claude Code menetapkan `CLAUDE_PROJECT_DIR` di lingkungan server yang dihasilkan ke akar proyek, sehingga server Anda dapat menyelesaikan jalur relatif proyek tanpa bergantung pada direktori kerja. Ini adalah direktori yang sama yang diterima hook dalam variabel `CLAUDE_PROJECT_DIR` mereka. Bacanya dari dalam proses server Anda, misalnya `process.env.CLAUDE_PROJECT_DIR` di Node atau `os.environ["CLAUDE_PROJECT_DIR"]` di Python.

130 130 

131`CLAUDE_PROJECT_DIR` adalah akar proyek yang stabil dan tidak berubah saat Anda menambah atau menghapus direktori kerja di tengah sesi. Server yang membatasi akses sistem file-nya sendiri ke serangkaian direktori yang diizinkan harus mengimplementasikan permintaan MCP `roots/list` sebagai gantinya. Claude Code menjawab `roots/list` dengan direktori peluncuran sesi ditambah setiap [direktori kerja tambahan](/docs/id/permissions#working-directories) yang telah Anda berikan dengan `--add-dir`, `/add-dir`, atau pengaturan `additionalDirectories`. Claude Code mengirim `notifications/roots/list_changed` ketika set itu berubah. Sebelum v2.1.203, `roots/list` hanya mengembalikan direktori peluncuran dan Claude Code tidak mengirim `notifications/roots/list_changed`.131`CLAUDE_PROJECT_DIR` adalah akar proyek yang stabil dan tidak berubah saat Anda menambah atau menghapus direktori kerja di tengah sesi. Server yang membatasi akses sistem file-nya sendiri ke serangkaian direktori yang diizinkan harus mengimplementasikan permintaan MCP `roots/list` sebagai gantinya. Claude Code menjawab `roots/list` dengan direktori peluncuran sesi ditambah setiap [direktori kerja tambahan](/docs/id/permissions#working-directories) yang telah Anda berikan dengan `--add-dir`, `/add-dir`, atau pengaturan `additionalDirectories`. Claude Code mengirim `notifications/roots/list_changed` ketika set itu berubah.

132 132 

133Variabel ini ditetapkan di lingkungan server, bukan di lingkungan Claude Code itu sendiri, jadi mereferensikannya melalui ekspansi `${VAR}` di `command` atau `args` dari entri `.mcp.json` dengan cakupan proyek atau entri server dengan cakupan lokal atau pengguna di `~/.claude.json` memerlukan default seperti `${CLAUDE_PROJECT_DIR:-.}`. Konfigurasi MCP yang disediakan plugin mengganti `${CLAUDE_PROJECT_DIR}` secara langsung dan tidak memerlukan default.133Variabel ini ditetapkan di lingkungan server, bukan di lingkungan Claude Code itu sendiri, jadi mereferensikannya melalui ekspansi `${VAR}` di `command` atau `args` dari entri `.mcp.json` dengan cakupan proyek atau entri server dengan cakupan lokal atau pengguna di `~/.claude.json` memerlukan default seperti `${CLAUDE_PROJECT_DIR:-.}`. Konfigurasi MCP yang disediakan plugin mengganti `${CLAUDE_PROJECT_DIR}` secara langsung dan tidak memerlukan default.

134 134 


154 `--env` menerima beberapa pasangan `KEY=value`. Jika nama server datang langsung setelah `--env`, CLI membaca nama sebagai pasangan lain dan menolaknya, jadi tempatkan setidaknya satu opsi lain, seperti `--transport stdio`, antara `--env` dan nama server.154 `--env` menerima beberapa pasangan `KEY=value`. Jika nama server datang langsung setelah `--env`, CLI membaca nama sebagai pasangan lain dan menolaknya, jadi tempatkan setidaknya satu opsi lain, seperti `--transport stdio`, antara `--env` dan nama server.

155</Note>155</Note>

156 156 

157<h4 id="how-claude-code-stops-a-stdio-server">

158 Cara Claude Code menghentikan server stdio

159</h4>

160 

161Ketika Claude Code memutuskan server stdio, misalnya saat sesi Anda berakhir, Claude Code mengirim sinyal ke proses server dan menunggu sebentar hingga proses itu keluar sebelum memaksanya berhenti. Jika server Anda menyimpan status atau menghapus file kunci saat shutdown, tangani sinyal untuk platform Anda dan selesaikan dalam waktu tersebut:

162 

163* **Di macOS dan Linux**: Claude Code mengirim `SIGINT`, lalu `SIGTERM` jika proses masih berjalan 100 milidetik kemudian, lalu `SIGKILL` setelah 400 milidetik berikutnya.

164* **Di Windows**: Claude Code menutup stdin server, lalu mengakhiri pohon proses server jika proses masih berjalan 300 milidetik kemudian.

165 

166Sebelum v2.1.296, Claude Code di Windows langsung mengakhiri pohon proses server, tanpa menutup stdin terlebih dahulu atau menunggu.

167 

157<h3 id="option-4-add-a-remote-websocket-server">168<h3 id="option-4-add-a-remote-websocket-server">

158 Opsi 4: Tambahkan server WebSocket jarak jauh169 Opsi 4: Tambahkan server WebSocket jarak jauh

159</h3>170</h3>


415 Server jarak jauh yang terputus di tengah sesi426 Server jarak jauh yang terputus di tengah sesi

416</h4>427</h4>

417 428 

418Claude Code menghubungkan kembali server jarak jauh yang terputus dengan backoff eksponensial: hingga lima upaya, dimulai dengan penundaan satu detik dan menggandakannya setiap kali. Apa yang Anda lihat tergantung pada cara Anda menjalankan Claude Code:429Claude Code pertama-tama mencoba menghubungkan kembali server jarak jauh yang terputus hingga lima kali dengan backoff eksponensial, dimulai dengan penundaan satu detik dan menggandakannya setiap kali:

419 430 

420* **Dalam sesi interaktif**: `/mcp` menunjukkan server sebagai tertunda saat Claude Code menghubungkan kembali. Setelah lima upaya gagal, Claude Code menandai server sebagai gagal, atau sebagai memerlukan autentikasi ketika server perlu diotorisasi lagi. Ketika menandainya sebagai gagal, Anda melihat notifikasi `MCP server "<name>" disconnected · open /mcp to reconnect`. Anda dapat mencoba ulang secara manual dari `/mcp`.431* **Dalam sesi interaktif**: `/mcp` menunjukkan server sebagai tertunda saat Claude Code menghubungkan kembali. Setelah lima upaya gagal, Claude Code menandai server sebagai gagal, atau sebagai memerlukan autentikasi ketika server perlu diotorisasi lagi. Ketika menandainya sebagai gagal, Anda melihat notifikasi `MCP server "<name>" disconnected · open /mcp to reconnect`. Anda dapat mencoba ulang secara manual dari `/mcp`.

421* **Dalam menjalankan [`claude -p`](/docs/id/headless) dan sesi [Agent SDK](/docs/id/agent-sdk/overview)**: Claude Code menghubungkan kembali dengan jadwal yang sama, tanpa panel `/mcp` untuk menunjukkan upaya tersebut.432* **Dalam menjalankan [`claude -p`](/docs/id/headless) dan sesi [Agent SDK](/docs/id/agent-sdk/overview)**: Claude Code melakukan lima upaya yang sama, tanpa panel `/mcp` untuk menunjukkannya. Ketika upaya server HTTP atau SSE gagal dengan kesalahan sementara, Claude Code terus mencoba ulang di latar belakang hingga sekitar setengah jam, dan server beserta tool-nya kembali tersedia ketika salah satu retry berhasil terhubung.

422 433 

423<h4 id="failed-first-connections">434<h4 id="failed-first-connections">

424 Koneksi pertama yang gagal435 Koneksi pertama yang gagal


479 490 

480`timeout` per server adalah batas waktu wall-clock yang ketat per panggilan tool, dan notifikasi kemajuan dari server tidak memperpanjangnya. Nilai di bawah 1000 diabaikan dan beralih ke `MCP_TOOL_TIMEOUT`, atau ke default-nya sekitar 28 jam ketika variabel itu tidak diatur. Untuk server HTTP, SSE, atau [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) ada juga timer per permintaan kedua yang mencakup setiap permintaan hingga byte respons pertama server. Claude Code menetapkan timer itu ke nilai terbesar dari tiga nilai: 60 detik, timeout tool yang berlaku untuk server, dan `MCP_TIMEOUT`. Default 28 jam dari `MCP_TOOL_TIMEOUT` yang tidak diatur tidak masuk ke perbandingan itu, dan nilai di bawah 60 detik tidak mempersingkat timer. Server stdio dan WebSocket tidak memiliki timer per permintaan.491`timeout` per server adalah batas waktu wall-clock yang ketat per panggilan tool, dan notifikasi kemajuan dari server tidak memperpanjangnya. Nilai di bawah 1000 diabaikan dan beralih ke `MCP_TOOL_TIMEOUT`, atau ke default-nya sekitar 28 jam ketika variabel itu tidak diatur. Untuk server HTTP, SSE, atau [konektor claude.ai](/docs/id/mcp#use-mcp-servers-from-claude-ai) ada juga timer per permintaan kedua yang mencakup setiap permintaan hingga byte respons pertama server. Claude Code menetapkan timer itu ke nilai terbesar dari tiga nilai: 60 detik, timeout tool yang berlaku untuk server, dan `MCP_TIMEOUT`. Default 28 jam dari `MCP_TOOL_TIMEOUT` yang tidak diatur tidak masuk ke perbandingan itu, dan nilai di bawah 60 detik tidak mempersingkat timer. Server stdio dan WebSocket tidak memiliki timer per permintaan.

481 492 

482`timeout` per server yang setidaknya 1000 juga bertindak sebagai batas bawah pada timeout idle yang dijelaskan di bawah: Claude Code tidak pernah membatalkan panggilan tool server itu karena idle lebih cepat dari `timeout` per server. Memerlukan Claude Code v2.1.203 atau lebih baru.493`timeout` per server yang setidaknya 1000 juga bertindak sebagai batas bawah pada timeout idle yang dijelaskan di bawah: Claude Code tidak pernah membatalkan panggilan tool server itu karena idle lebih cepat dari `timeout` per server.

483 494 

484Panggilan tool ke server MCP yang tidak mengirim respons dan tidak ada notifikasi kemajuan selama jendela idle dibatalkan dengan kesalahan alih-alih menunggu batas wall-clock. Timeout idle berlaku untuk setiap jenis server kecuali server IDE dan server in-process SDK. Jendela idle default-nya lima menit untuk server HTTP, SSE, WebSocket, dan [konektor claude.ai](#use-mcp-servers-from-claude-ai), dan 30 menit untuk server stdio. Sebelum v2.1.203, server stdio dikecualikan dari timeout idle.495Panggilan tool ke server MCP yang tidak mengirim respons dan tidak ada notifikasi kemajuan selama jendela idle dibatalkan dengan kesalahan alih-alih menunggu batas wall-clock. Timeout idle berlaku untuk setiap jenis server kecuali server IDE dan server in-process SDK. Jendela idle default-nya lima menit untuk server HTTP, SSE, WebSocket, dan [konektor claude.ai](#use-mcp-servers-from-claude-ai), dan 30 menit untuk server stdio.

485 496 

486Atur environment variable [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/id/env-vars) dalam milidetik untuk mengubah jendela idle, atau atur ke `0` untuk menonaktifkan pemeriksaan.497Atur environment variable [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/id/env-vars) dalam milidetik untuk mengubah jendela idle, atau atur ke `0` untuk menonaktifkan pemeriksaan.

487 498 


493 504 

494Panggilan tool MCP dalam percakapan utama yang masih berjalan setelah dua menit dipindahkan ke tugas latar belakang alih-alih memblokir sesi. Claude menerima ID tugas segera dan terus bekerja, dan hasilnya tiba sebagai notifikasi tugas ketika panggilan selesai. Pemindahan otomatis ke latar belakang memerlukan Claude Code v2.1.212 atau lebih baru.505Panggilan tool MCP dalam percakapan utama yang masih berjalan setelah dua menit dipindahkan ke tugas latar belakang alih-alih memblokir sesi. Claude menerima ID tugas segera dan terus bekerja, dan hasilnya tiba sebagai notifikasi tugas ketika panggilan selesai. Pemindahan otomatis ke latar belakang memerlukan Claude Code v2.1.212 atau lebih baru.

495 506 

496Tugas muncul di [`/tasks`](/docs/id/commands#all-commands), tempat Anda juga dapat menghentikannya, dan tugas tidak bertahan setelah keluar dari sesi. Entri tugas menunjukkan kemajuan terbaru yang telah dilaporkan server.507Tugas muncul di [`/tasks`](/docs/id/commands#all-commands), tempat Anda juga dapat menghentikannya, dan tugas tidak bertahan setelah keluar dari sesi. Entri tugas menunjukkan kemajuan terbaru yang telah dilaporkan server. Jika Anda menghentikan tugas, Claude Code membatalkan panggilan dan memberi tahu Claude bahwa tidak ada hasil yang akan datang. Menghentikan tugas tidak menjamin server berhenti: server mungkin sudah mengerjakan sebagian pekerjaan, atau mungkin tetap menyelesaikannya.

497 508 

498Batas per panggilan masih berlaku saat panggilan berjalan di latar belakang: batas wall-clock yang ditetapkan oleh `timeout` per server atau [`MCP_TOOL_TIMEOUT`](/docs/id/env-vars), dan timeout idle yang ditetapkan oleh [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/id/env-vars).509Batas per panggilan masih berlaku saat panggilan berjalan di latar belakang: batas wall-clock yang ditetapkan oleh `timeout` per server atau [`MCP_TOOL_TIMEOUT`](/docs/id/env-vars), dan timeout idle yang ditetapkan oleh [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/id/env-vars).

499 510 


793 --header "Authorization: Bearer YOUR_GITHUB_PAT"804 --header "Authorization: Bearer YOUR_GITHUB_PAT"

794```805```

795 806 

796Ganti `YOUR_GITHUB_PAT` dengan token akses pribadi Anda. Perintah `claude mcp add` menyimpan konfigurasi tanpa memvalidasi kredensial, jadi nilai placeholder diterima di sini tetapi server gagal terhubung nanti. Untuk memverifikasi koneksi, jalankan `/mcp` dan periksa bahwa server menunjukkan `connected`. Server dengan kredensial buruk menunjukkan `failed`, dan detail kegagalan mencakup status HTTP yang dikembalikan server, seperti 401.807Ganti `YOUR_GITHUB_PAT` dengan token akses pribadi Anda. Perintah `claude mcp add` menyimpan konfigurasi tanpa memvalidasi kredensial, jadi nilai placeholder diterima di sini tetapi server gagal terhubung nanti. Untuk memverifikasi koneksi, jalankan `/mcp` dan periksa bahwa baris server menunjukkan tanda centang. Server dengan kredensial buruk menunjukkan ✘ sebagai gantinya, dan [detail kegagalannya](#server-status-detail) mencakup status HTTP yang dikembalikan server, seperti 401.

797 808 

798Kemudian bekerja dengan GitHub:809Kemudian bekerja dengan GitHub:

799 810 


820 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"831 --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

821```832```

822 833 

823Untuk mengonfirmasi server dimulai, jalankan `/mcp` dan periksa bahwa `db` menunjukkan `connected`.834Untuk mengonfirmasi server dimulai, jalankan `/mcp` dan periksa bahwa baris `db` menunjukkan tanda centang.

824 835 

825Kemudian tanyakan database Anda secara alami:836Kemudian tanyakan database Anda secara alami:

826 837 


849* Untuk server yang header `Authorization` Anda konfigurasi, di `headers` atau melalui [`headersHelper`](#use-dynamic-headers-for-custom-authentication), `401` atau `403` saat menghubungkan tidak menandai server, karena kredensial untuk diperbaiki adalah yang Anda konfigurasi. Claude Code melaporkan koneksi sebagai gagal sebagai gantinya. Jika Anda menetapkan header itu dari referensi `${VAR}`, periksa apakah variabel itu adalah salah satu yang Claude Code [baca sebagai kosong](#credential-variables-that-read-as-empty).860* Untuk server yang header `Authorization` Anda konfigurasi, di `headers` atau melalui [`headersHelper`](#use-dynamic-headers-for-custom-authentication), `401` atau `403` saat menghubungkan tidak menandai server, karena kredensial untuk diperbaiki adalah yang Anda konfigurasi. Claude Code melaporkan koneksi sebagai gagal sebagai gantinya. Jika Anda menetapkan header itu dari referensi `${VAR}`, periksa apakah variabel itu adalah salah satu yang Claude Code [baca sebagai kosong](#credential-variables-that-read-as-empty).

850* Untuk konektor [dikirimkan ke sesi cloud](#how-connectors-reach-claude-code), Claude Code tidak menjalankan alur masuk, karena proxy sesi mengautentikasi ke konektor dengan otorisasi yang Anda berikan di claude.ai. Ketika konektor di sana perlu diotorisasi lagi, sambungkan kembali di [claude.ai/customize/connectors](https://claude.ai/customize/connectors) daripada dari sesi.861* Untuk konektor [dikirimkan ke sesi cloud](#how-connectors-reach-claude-code), Claude Code tidak menjalankan alur masuk, karena proxy sesi mengautentikasi ke konektor dengan otorisasi yang Anda berikan di claude.ai. Ketika konektor di sana perlu diotorisasi lagi, sambungkan kembali di [claude.ai/customize/connectors](https://claude.ai/customize/connectors) daripada dari sesi.

851 862 

852Ketika permintaan ke server OAuth yang sudah Anda masuki mengembalikan `401 Unauthorized`, Claude Code menyegarkan token yang disimpan, menghubungkan kembali, dan mencoba ulang permintaan sekali. Ini menandai server di `/mcp` hanya jika percobaan ulang itu juga gagal. Sebelum v2.1.206, penyegaran token yang gagal karena alasan sementara, seperti kesalahan jaringan, menandai server OAuth sebagai memerlukan autentikasi untuk sisa sesi meskipun token penyegarnya masih valid.863Ketika permintaan ke server OAuth yang sudah Anda masuki mengembalikan `401 Unauthorized`, Claude Code menyegarkan token yang disimpan, menghubungkan kembali, dan mencoba ulang permintaan sekali. Ini menandai server di `/mcp` hanya jika retry itu juga gagal.

853 864 

854Ketika server menolak token penyegaran yang disimpan, Claude Code segera menampilkan pemberitahuan yang menunjuk ke `/mcp`. Buka `/mcp` dan pilih **Re-authenticate** pada server untuk masuk lagi sebelum panggilan alat berikutnya gagal.865Ketika server menolak token penyegaran yang disimpan, Claude Code segera menampilkan pemberitahuan yang menunjuk ke `/mcp`. Buka `/mcp` dan pilih **Re-authenticate** pada server untuk masuk lagi sebelum panggilan tool berikutnya gagal.

855 866 

856Server khusus yang mengembalikan header `WWW-Authenticate` yang menunjuk ke server otorisasinya mendapatkan penemuan otomatis yang sama seperti server jarak jauh lainnya.867Server khusus yang mengembalikan header `WWW-Authenticate` yang menunjuk ke server otorisasinya mendapatkan penemuan otomatis yang sama seperti server jarak jauh lainnya.

857 868 


859 870 

860Pemberitahuan mengumumkan setiap server sekali dan mengeluarkannya dari hitungan di peluncuran berikutnya sampai server itu telah terhubung dan memerlukan masuk lagi. `/mcp` masih mencantumkan setiap server yang memerlukan masuk.871Pemberitahuan mengumumkan setiap server sekali dan mengeluarkannya dari hitungan di peluncuran berikutnya sampai server itu telah terhubung dan memerlukan masuk lagi. `/mcp` masih mencantumkan setiap server yang memerlukan masuk.

861 872 

862Dalam mode non-interaktif tidak ada panel `/mcp`, jadi Claude Code tidak dapat menjalankan alur OAuth untuk Anda. Ketika server yang dikonfigurasi memerlukan autentikasi selama `claude -p` atau jalankan Agent SDK dengan [pencarian tool](#scale-with-mcp-tool-search) diaktifkan, yang merupakan default, Claude Code memberi tahu Claude bahwa tool server tidak tersedia sampai Anda mengotorisasinya. Claude kemudian dapat menyebutkan server yang memerlukan masuk. Selesaikan masuk dari sesi interaktif dengan `/mcp` atau `claude mcp login <name>`.873Proses `claude -p` atau Agent SDK tidak memiliki panel `/mcp`, jadi Claude Code tidak dapat menjalankan alur OAuth di sana. Untuk menggunakan server yang memerlukan autentikasi, selesaikan masuk dari sesi interaktif terlebih dahulu: jalankan `/mcp` di sesi, atau `claude mcp login <name>` di shell Anda. Ketika server yang dikonfigurasi memerlukan autentikasi selama proses `claude -p` atau Agent SDK dengan [pencarian tool](#scale-with-mcp-tool-search) diaktifkan, Claude Code memberi tahu Claude bahwa tool server tidak tersedia sampai Anda mengotorisasinya.

863 874 

864Jika Anda mengonfigurasi `headers.Authorization` untuk server dan server menolak header itu, Claude Code melaporkan koneksi sebagai gagal daripada kembali ke OAuth. Periksa bahwa token valid untuk titik akhir MCP, atau hapus header untuk menggunakan alur OAuth.875Jika Anda mengonfigurasi `headers.Authorization` untuk server dan server menolak header itu, Claude Code melaporkan koneksi sebagai gagal daripada kembali ke OAuth. Periksa bahwa token valid untuk endpoint MCP, atau hapus header untuk menggunakan alur OAuth.

865 876 

866<Steps>877<Steps>

867 <Step title="Tambahkan server yang memerlukan autentikasi">878 <Step title="Tambahkan server yang memerlukan autentikasi">

868 Jika Anda sudah menambahkan server `sentry` di [panduan cepat MCP](/docs/id/mcp-quickstart#connect-a-server-that-requires-sign-in), lewati langkah ini: menjalankan `claude mcp add` lagi dengan nama server yang sama di cakupan yang sama gagal dengan `MCP server sentry already exists in local config`. Jika tidak, jalankan:879 Jika Anda sudah menambahkan server `sentry` di [mulai cepat MCP](/docs/id/mcp-quickstart#connect-a-server-that-requires-sign-in), lewati langkah ini: menjalankan `claude mcp add` lagi dengan nama server yang sama di cakupan yang sama gagal dengan `MCP server sentry already exists in local config`. Jika tidak, jalankan:

869 880 

870 ```bash theme={null}881 ```bash theme={null}

871 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp882 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp


975 </Tab>986 </Tab>

976 987 

977 <Tab title="CI / env var">988 <Tab title="CI / env var">

978 Atur rahasia melalui variabel lingkungan untuk melewati prompt interaktif:989 Atur rahasia melalui environment variable untuk melewati prompt interaktif:

979 990 

980 ```bash theme={null}991 ```bash theme={null}

981 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \992 MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \


1003</Tip>1014</Tip>

1004 1015 

1005<h3 id="override-oauth-metadata-discovery">1016<h3 id="override-oauth-metadata-discovery">

1006 Ganti penemuan metadata OAuth1017 Timpa penemuan metadata OAuth

1007</h3>1018</h3>

1008 1019 

1009Arahkan Claude Code ke URL metadata server otorisasi OAuth tertentu untuk melewati rantai penemuan default. Atur `authServerMetadataUrl` ketika titik akhir standar server MCP mengalami kesalahan, atau ketika Anda ingin merutekan penemuan melalui proxy internal. Secara default, Claude Code pertama kali memeriksa Metadata Sumber Daya Terlindungi RFC 9728 di `/.well-known/oauth-protected-resource`, kemudian kembali ke metadata server otorisasi RFC 8414 di `/.well-known/oauth-authorization-server`.1020Arahkan Claude Code ke URL metadata server otorisasi OAuth tertentu untuk melewati rantai penemuan default. Atur `authServerMetadataUrl` ketika endpoint standar server MCP mengalami kesalahan, atau ketika Anda ingin merutekan penemuan melalui proxy internal. Secara default, Claude Code pertama kali memeriksa Metadata Sumber Daya Terlindungi RFC 9728 di `/.well-known/oauth-protected-resource`, kemudian kembali ke metadata server otorisasi RFC 8414 di `/.well-known/oauth-authorization-server`.

1010 1021 

1011Atur `authServerMetadataUrl` dalam objek `oauth` dari konfigurasi server Anda di `.mcp.json`:1022Atur `authServerMetadataUrl` dalam objek `oauth` dari konfigurasi server Anda di `.mcp.json`:

1012 1023 


1024}1035}

1025```1036```

1026 1037 

1027URL harus menggunakan `https://`. `scopes_supported` URL metadata mengganti cakupan yang diiklankan server hulu.1038URL harus menggunakan `https://`. `scopes_supported` URL metadata menimpa scope yang diiklankan server hulu.

1028 1039 

1029<h3 id="restrict-oauth-scopes">1040<h3 id="restrict-oauth-scopes">

1030 Batasi cakupan OAuth1041 Batasi scope OAuth

1031</h3>1042</h3>

1032 1043 

1033Atur `oauth.scopes` untuk menyematkan cakupan yang Claude Code minta selama alur otorisasi. Ini adalah cara yang didukung untuk membatasi server MCP ke subset yang disetujui tim keamanan ketika server otorisasi hulu mengiklankan lebih banyak cakupan daripada yang ingin Anda berikan. Nilainya adalah string tunggal yang dipisahkan spasi, cocok dengan format parameter `scope` di RFC 6749 §3.3.1044Atur `oauth.scopes` untuk menyematkan scope yang Claude Code minta selama alur otorisasi. Ini adalah cara yang didukung untuk membatasi server MCP ke subset yang disetujui tim keamanan ketika server otorisasi hulu mengiklankan lebih banyak scope daripada yang ingin Anda berikan. Nilainya adalah string tunggal yang dipisahkan spasi, cocok dengan format parameter `scope` di RFC 6749 §3.3.

1034 1045 

1035```json theme={null}1046```json theme={null}

1036{1047{


1046}1057}

1047```1058```

1048 1059 

1049`oauth.scopes` mengambil prioritas atas `authServerMetadataUrl` dan cakupan yang ditemukan server di `/.well-known`. Biarkan tidak diatur untuk membiarkan server MCP menentukan set cakupan yang diminta.1060`oauth.scopes` diutamakan daripada `authServerMetadataUrl` maupun scope yang ditemukan server di `/.well-known`. Biarkan tidak diatur untuk membiarkan server MCP menentukan set scope yang diminta.

1050 1061 

1051Ketika `oauth.scopes` tidak diatur, Claude Code tidak meminta katalog `scopes_supported` lengkap dari metadata server otorisasi yang ditemukan secara otomatis. Metadata yang diambil dari `authServerMetadataUrl` yang dikonfigurasi masih menyediakan `scopes_supported`-nya sebagai scope yang diminta.1062Ketika `oauth.scopes` tidak diatur, Claude Code tidak meminta katalog `scopes_supported` lengkap dari metadata server otorisasi yang ditemukan secara otomatis. Metadata yang diambil dari `authServerMetadataUrl` yang dikonfigurasi masih menyediakan `scopes_supported`-nya sebagai scope yang diminta.

1052 1063 

1053Jika server otorisasi mengiklankan `offline_access` di `scopes_supported`, Claude Code menambahkannya ke cakupan yang disematkan sehingga token akses dapat disegarkan tanpa masuk browser baru.1064Jika server otorisasi mengiklankan `offline_access` di `scopes_supported`, Claude Code menambahkannya ke scope yang disematkan sehingga token akses dapat disegarkan tanpa masuk browser baru.

1054 1065 

1055Jika server kemudian mengembalikan 403 `insufficient_scope` untuk panggilan alat, panggilan gagal dengan pesan [`needs additional permissions`](/docs/id/errors#mcp-server-needs-you-to-sign-in-again) yang menyebutkan cakupan yang diminta server. Server ditampilkan sebagai memerlukan autentikasi di `/mcp`.1066Jika server kemudian mengembalikan 403 `insufficient_scope` untuk panggilan tool, panggilan gagal dengan pesan [`needs additional permissions`](/docs/id/errors#mcp-server-needs-you-to-sign-in-again) yang menyebutkan scope yang diminta server. Server ditampilkan sebagai memerlukan autentikasi di `/mcp`.

1056 1067 

1057Jika cakupan itu tidak ada di `oauth.scopes` yang disematkan, tambahkan, kemudian jalankan `/mcp` dan autentikasi server lagi. Claude Code meminta cakupan yang disematkan daripada cakupan yang dinamai server, jadi jika Anda autentikasi lagi tanpa menambahkannya, token yang Anda dapatkan masih kekurangannya.1068Jika scope itu tidak ada di `oauth.scopes` yang disematkan, tambahkan, kemudian jalankan `/mcp` dan autentikasi server lagi. Claude Code meminta scope yang disematkan daripada scope yang dinamai server, jadi jika Anda autentikasi lagi tanpa menambahkannya, token yang Anda dapatkan masih kekurangannya.

1058 1069 

1059<h3 id="use-dynamic-headers-for-custom-authentication">1070<h3 id="use-dynamic-headers-for-custom-authentication">

1060 Gunakan header dinamis untuk autentikasi khusus1071 Gunakan header dinamis untuk autentikasi khusus


1093* Perintah harus menulis objek JSON dari pasangan kunci-nilai string ke stdout1104* Perintah harus menulis objek JSON dari pasangan kunci-nilai string ke stdout

1094* Claude Code menjalankan perintah dalam shell dan menyerah padanya setelah 10 detik1105* Claude Code menjalankan perintah dalam shell dan menyerah padanya setelah 10 detik

1095* Claude Code memilih direktori kerja perintah dengan [di mana Anda mengonfigurasi server](#where-the-helper-runs), jadi berikan skrip sebagai jalur absolut atau letakkan di `PATH`1106* Claude Code memilih direktori kerja perintah dengan [di mana Anda mengonfigurasi server](#where-the-helper-runs), jadi berikan skrip sebagai jalur absolut atau letakkan di `PATH`

1096* Header dinamis mengganti `headers` statis apa pun dengan nama yang sama1107* Header dinamis menimpa `headers` statis apa pun dengan nama yang sama

1097 1108 

1098Claude Code menjalankan helper segar pada setiap koneksi, pada awal sesi dan pada sambungan ulang, setelah [aturan kepercayaan untuk server cakupan proyek dan lokal](#trust-a-folder-before-its-headershelper-runs) membiarkannya berjalan. Ini tidak menyimpan hasil, jadi skrip Anda bertanggung jawab untuk penggunaan ulang token apa pun.1109Claude Code menjalankan helper segar pada setiap koneksi, pada awal sesi dan pada sambungan ulang, setelah [aturan kepercayaan untuk server cakupan proyek dan lokal](#trust-a-folder-before-its-headershelper-runs) membiarkannya berjalan. Ini tidak menyimpan hasil dalam cache, jadi skrip Anda bertanggung jawab untuk penggunaan ulang token apa pun.

1099 1110 

1100Jika panggilan alat mengembalikan `401 Unauthorized` atau `403 Forbidden`, Claude Code secara otomatis menjalankan ulang helper di bawah aturan yang sama, menghubungkan kembali dengan header segar, dan mencoba ulang panggilan sekali. Claude Code menandai server sebagai memerlukan autentikasi di `/mcp` hanya jika percobaan ulang itu juga gagal.1111Jika panggilan tool mengembalikan `401 Unauthorized` atau `403 Forbidden`, Claude Code secara otomatis menjalankan ulang helper di bawah aturan yang sama, menghubungkan kembali dengan header segar, dan mencoba ulang panggilan sekali. Claude Code menandai server sebagai memerlukan autentikasi di `/mcp` hanya jika retry itu juga gagal.

1101 1112 

1102Ketika output helper menyertakan header `Authorization`, Claude Code menggunakan kredensial itu sebagai autentikasi server dan tidak kembali ke OAuth untuk server.1113Ketika output helper menyertakan header `Authorization`, Claude Code menggunakan kredensial itu sebagai autentikasi server dan tidak kembali ke OAuth untuk server.

1103 1114 

1104Jika server menolak kredensial helper saat menghubungkan, Claude Code melaporkan koneksi sebagai gagal daripada menandai server sebagai memerlukan autentikasi. Perbaiki kredensial yang dikembalikan helper Anda, kemudian sambungkan kembali dari `/mcp` untuk menjalankan ulang helper.1115Jika server menolak kredensial helper saat menghubungkan, Claude Code melaporkan koneksi sebagai gagal daripada menandai server sebagai memerlukan autentikasi. Perbaiki kredensial yang dikembalikan helper Anda, kemudian sambungkan kembali dari `/mcp` untuk menjalankan ulang helper.

1105 1116 

1106Claude Code menetapkan variabel lingkungan ini saat menjalankan helper:1117Claude Code menetapkan environment variable ini saat menjalankan helper:

1107 1118 

1108| Variabel | Nilai |1119| Variabel | Nilai |

1109| :- | :- |1120| :- | :- |


1119 Di mana helper berjalan1130 Di mana helper berjalan

1120</h4>1131</h4>

1121 1132 

1122Claude Code memilih direktori kerja perintah `headersHelper` dari konfigurasi yang mendeklarasikan server. `cd` yang Claude jalankan di Bash tidak memindahkannya, dan [`/cd`](/docs/id/permissions#move-the-session-to-another-directory) memindahkannya hanya untuk server yang berjalan dari direktori kerja utama sesi. Setiap baris di bawah memberikan direktori yang jalur relatif dalam perintah `headersHelper` Anda diselesaikan.1133Claude Code memilih direktori kerja perintah `headersHelper` dari konfigurasi yang mendeklarasikan server. `cd` yang Claude jalankan di Bash tidak memindahkannya, dan [`/cd`](/docs/id/permissions#move-the-session-to-another-directory) memindahkannya hanya untuk server yang berjalan dari direktori kerja utama sesi. Setiap baris di bawah memberikan direktori yang menjadi acuan penyelesaian jalur relatif dalam perintah `headersHelper` Anda.

1123 1134 

1124| Di mana Anda mengonfigurasi server | Direktori kerja |1135| Di mana Anda mengonfigurasi server | Direktori kerja |

1125| :- | :- |1136| :- | :- |

1126| [Plugin](/docs/id/plugins/components#mcp-servers) | Direktori root plugin |1137| [Plugin](/docs/id/plugins/components#mcp-servers) | Direktori root plugin |

1127| `.mcp.json` proyek atau server [cakupan lokal](#local-scope) | Direktori proyek tempat server dideklarasikan |1138| `.mcp.json` proyek atau server [cakupan lokal](#local-scope) | Direktori proyek tempat server dideklarasikan |

1128| File agen di proyek Anda, server dari opsi `mcpServers` SDK atau metode `setMcpServers()`, atau [`--mcp-config`](/docs/id/cli-reference) | [Direktori kerja utama](/docs/id/permissions#working-directories) sesi |1139| File agent di proyek Anda, server dari opsi `mcpServers` SDK atau metode `setMcpServers()`, atau [`--mcp-config`](/docs/id/cli-reference) | [Direktori kerja utama](/docs/id/permissions#working-directories) sesi |

1129| [Cakupan pengguna](#user-scope), [MCP terkelola](/docs/id/managed-mcp), [konektor claude.ai](#use-mcp-servers-from-claude-ai), atau file agen dari luar proyek Anda, termasuk dari direktori `--add-dir` | Direktori konfigurasi Anda, `~/.claude` kecuali Anda menetapkan [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars) |1140| [Cakupan pengguna](#user-scope), [MCP terkelola](/docs/id/managed-mcp), [konektor claude.ai](#use-mcp-servers-from-claude-ai), atau file agent dari luar proyek Anda, termasuk dari direktori `--add-dir` | Direktori konfigurasi Anda, `~/.claude` kecuali Anda menetapkan [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars) |

1130 1141 

1131Sebelum v2.1.238, Claude Code juga menjalankan helper dari server cakupan pengguna, terkelola, dan konektor claude.ai, dan file agen dari luar proyek Anda, dari direktori tempat Anda memulainya.1142Sebelum v2.1.238, Claude Code juga menjalankan helper dari server cakupan pengguna, terkelola, dan konektor claude.ai, dan file agent dari luar proyek Anda, dari direktori tempat Anda memulainya.

1132 1143 

1133<h4 id="which-variables-a-helper-can-read">1144<h4 id="which-variables-a-helper-can-read">

1134 Variabel mana yang dapat dibaca helper1145 Variabel mana yang dapat dibaca helper


1136 1147 

1137`headersHelper` yang disediakan repositori atau plugin adalah perintah yang tidak Anda tulis, jadi Claude Code menjalankannya tanpa variabel kredensial dari lingkungan Anda, seperti `ANTHROPIC_API_KEY`. Di mana Anda mengonfigurasi server menentukan apakah ini berlaku:1148`headersHelper` yang disediakan repositori atau plugin adalah perintah yang tidak Anda tulis, jadi Claude Code menjalankannya tanpa variabel kredensial dari lingkungan Anda, seperti `ANTHROPIC_API_KEY`. Di mana Anda mengonfigurasi server menentukan apakah ini berlaku:

1138 1149 

1139* **Dihapus**: server di `.mcp.json` proyek atau di plugin, dan server inline di file agen dari proyek Anda atau dari direktori `--add-dir`1150* **Dihapus**: server di `.mcp.json` proyek atau di plugin, dan server inline di file agent dari proyek Anda atau dari direktori `--add-dir`

1140* **Tidak dihapus**: server di [cakupan pengguna](#user-scope) atau [cakupan lokal](#local-scope), di [MCP terkelola](/docs/id/managed-mcp), dari [konektor claude.ai](#use-mcp-servers-from-claude-ai), atau disediakan oleh SDK atau [`--mcp-config`](/docs/id/cli-reference), dan server inline di file agen dari `~/.claude/agents/`, dari pengaturan terkelola, atau diteruskan dengan `--agents`1151* **Tidak dihapus**: server di [cakupan pengguna](#user-scope) atau [cakupan lokal](#local-scope), di [MCP terkelola](/docs/id/managed-mcp), dari [konektor claude.ai](#use-mcp-servers-from-claude-ai), atau disediakan oleh SDK atau [`--mcp-config`](/docs/id/cli-reference), dan server inline di file agent dari `~/.claude/agents/`, dari pengaturan terkelola, atau diteruskan dengan `--agents`

1141 1152 

1142Terlepas dari variabel `GIT_CONFIG_KEY_<n>` Git, Claude Code menghapus setiap variabel dari lingkungan Anda yang namanya terlihat seperti kredensial, seperti nama dengan `TOKEN`, `SECRET`, `PASSWORD`, `KEY`, atau `AUTH` di dalamnya dalam huruf besar atau kecil, jadi `ANTHROPIC_API_KEY` dan `MY_REGISTRY_TOKEN` keduanya dihapus. Claude Code juga menghapus daftar tetap variabel kredensial yang namanya tidak mengikuti pola itu, seperti `ANTHROPIC_CUSTOM_HEADERS`.1153Terlepas dari variabel `GIT_CONFIG_KEY_<n>` Git, Claude Code menghapus setiap variabel dari lingkungan Anda yang namanya terlihat seperti kredensial, seperti nama dengan `TOKEN`, `SECRET`, `PASSWORD`, `KEY`, atau `AUTH` di dalamnya dalam huruf besar atau kecil, jadi `ANTHROPIC_API_KEY` dan `MY_REGISTRY_TOKEN` keduanya dihapus. Claude Code juga menghapus daftar tetap variabel kredensial yang namanya tidak mengikuti pola itu, seperti `ANTHROPIC_CUSTOM_HEADERS`.

1143 1154 


1151 1162 

1152* **Kepercayaan yang tidak dihitung**: kepercayaan folder induk, dan kepercayaan otomatis yang diterima sesi `claude -p` atau SDK untuk [hook di file pengaturan](/docs/id/permissions#what-runs-before-you-trust-a-folder)1163* **Kepercayaan yang tidak dihitung**: kepercayaan folder induk, dan kepercayaan otomatis yang diterima sesi `claude -p` atau SDK untuk [hook di file pengaturan](/docs/id/permissions#what-runs-before-you-trust-a-folder)

1153* **Sampai Anda mempercayai folder**: Claude Code menghubungkan server dengan `headers` statis saja. Dalam sesi `claude -p` atau SDK ini juga mencetak satu baris [`headersHelper not run`](/docs/id/errors#headershelper-not-run) per server ke stderr, memberi tahu Anda cara memberikan kepercayaan.1164* **Sampai Anda mempercayai folder**: Claude Code menghubungkan server dengan `headers` statis saja. Dalam sesi `claude -p` atau SDK ini juga mencetak satu baris [`headersHelper not run`](/docs/id/errors#headershelper-not-run) per server ke stderr, memberi tahu Anda cara memberikan kepercayaan.

1154* **Kepercayaan tanpa dialog**: atur `projects["<path>"].hasTrustDialogAccepted` ke `true` di `~/.claude.json`. `<path>` adalah folder yang [Aturan izin proyek dan kepercayaan ruang kerja](/docs/id/permissions#project-allow-rules-and-workspace-trust) katakan Claude Code kunci kepercayaan.1165* **Kepercayaan tanpa dialog**: atur `projects["<path>"].hasTrustDialogAccepted` ke `true` di `~/.claude.json`. `<path>` adalah folder yang menurut [Aturan izin proyek dan kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust) menjadi kunci kepercayaan Claude Code.

1155 1166 

1156Claude Code menerapkan aturan yang sama ke server yang dideklarasikan inline di [file agen](/docs/id/sub-agents#scope-mcp-servers-to-a-subagent), memeriksa di mana file agen itu berasal: proyek Anda, untuk file di direktori `.claude/agents/`-nya, atau direktori `--add-dir`. Sampai Anda [mempercayai proyek atau direktori itu sendiri](/docs/id/permissions#what-runs-before-you-trust-a-folder), Claude Code tidak memuat server sama sekali, jadi helper-nya tidak pernah berjalan juga.1167Claude Code menerapkan aturan yang sama ke server yang dideklarasikan inline di [file agent](/docs/id/sub-agents#scope-mcp-servers-to-a-subagent), memeriksa di mana file agent itu berasal: proyek Anda, untuk file di direktori `.claude/agents/`-nya, atau direktori `--add-dir`. Sampai Anda [mempercayai proyek atau direktori itu sendiri](/docs/id/permissions#what-runs-before-you-trust-a-folder), Claude Code tidak memuat server sama sekali, jadi helper-nya tidak pernah berjalan juga.

1157 1168 

1158<h2 id="add-mcp-servers-from-json-configuration">1169<h2 id="add-mcp-servers-from-json-configuration">

1159 Tambahkan server MCP dari konfigurasi JSON1170 Tambahkan server MCP dari konfigurasi JSON


1218 </Step>1229 </Step>

1219</Steps>1230</Steps>

1220 1231 

1221Nama server yang ditambahkan melalui perintah `claude mcp` hanya dapat berisi huruf, angka, tanda hubung, dan garis bawah. Claude Desktop tidak menerapkan pembatasan itu, jadi server Claude Desktop yang namanya berisi karakter lain, seperti spasi, tidak dapat diimpor. Impor melaporkan setiap nama yang ditolak dan tetap mengimpor server lain yang Anda pilih. Sebelum v2.1.205, nama tidak valid pertama menghentikan impor dan tidak ada server yang dipilih yang ditambahkan.1232Nama server yang ditambahkan melalui perintah `claude mcp` hanya dapat berisi huruf, angka, tanda hubung, dan garis bawah. Claude Desktop tidak menerapkan pembatasan itu, jadi server Claude Desktop yang namanya berisi karakter lain, seperti spasi, tidak dapat diimpor. Impor melaporkan setiap nama yang ditolak dan tetap mengimpor server lain yang Anda pilih.

1222 1233 

1223<Tip>1234<Tip>

1224 Tips:1235 Tips:


1398 * Server MCP ini hanya mengekspos tools Claude Code ke klien MCP Anda, jadi klien Anda sendiri bertanggung jawab untuk mengimplementasikan konfirmasi pengguna untuk panggilan tool individual.1409 * Server MCP ini hanya mengekspos tools Claude Code ke klien MCP Anda, jadi klien Anda sendiri bertanggung jawab untuk mengimplementasikan konfirmasi pengguna untuk panggilan tool individual.

1399</Tip>1410</Tip>

1400 1411 

1412Ketika teks JSON dalam hasil panggilan tool Bash atau PowerShell menyertakan bidang `backgroundOutputPath`, panggilan tersebut membiarkan perintahnya tetap berjalan [di latar belakang](/docs/id/tools-reference#background-commands), misalnya ketika panggilan tersebut menetapkan `run_in_background: true` atau perintah mencapai timeout-nya. Bidang tersebut memberikan jalur file output perintah. Tidak ada yang memberi tahu klien Anda ketika perintah selesai, dan file tidak mendapatkan baris penutup saat perintah selesai, sehingga membaca file akan menampilkan output yang telah ditulis sejauh ini. Untuk mendeteksi akhirnya, tambahkan penanda ke perintah, seperti `npm test; echo DONE`, dan cari penanda tersebut di dalam file. Bidang `backgroundOutputPath` memerlukan Claude Code v2.1.295 atau yang lebih baru.

1413 

1401<h2 id="mcp-output-limits-and-warnings">1414<h2 id="mcp-output-limits-and-warnings">

1402 Batas dan peringatan output MCP1415 Batas dan peringatan output MCP

1403</h2>1416</h2>


1409* **Batas default**: maksimum default adalah 25.000 token1422* **Batas default**: maksimum default adalah 25.000 token

1410* **Cakupan**: environment variable berlaku untuk tool yang tidak mendeklarasikan batas mereka sendiri. Tool yang menetapkan [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) menggunakan nilai tersebut sebagai gantinya untuk konten teks, terlepas dari apa yang ditetapkan `MAX_MCP_OUTPUT_TOKENS`. Tool yang mengembalikan data gambar masih tunduk pada `MAX_MCP_OUTPUT_TOKENS`1423* **Cakupan**: environment variable berlaku untuk tool yang tidak mendeklarasikan batas mereka sendiri. Tool yang menetapkan [`anthropic/maxResultSizeChars`](#raise-the-limit-for-a-specific-tool) menggunakan nilai tersebut sebagai gantinya untuk konten teks, terlepas dari apa yang ditetapkan `MAX_MCP_OUTPUT_TOKENS`. Tool yang mengembalikan data gambar masih tunduk pada `MAX_MCP_OUTPUT_TOKENS`

1411* **Melampaui batas**: ketika hasil yang berhasil tanpa konten gambar melebihi batas token, Claude Code menyimpannya ke file dan menggantinya dalam percakapan dengan pesan yang menyebutkan jalur file, sehingga Claude membaca file ketika membutuhkan konten. File tersebut berada di direktori `tool-results` sesi di bawah [`~/.claude/projects/`](/docs/id/claude-directory#cleaned-up-automatically).1424* **Melampaui batas**: ketika hasil yang berhasil tanpa konten gambar melebihi batas token, Claude Code menyimpannya ke file dan menggantinya dalam percakapan dengan pesan yang menyebutkan jalur file, sehingga Claude membaca file ketika membutuhkan konten. File tersebut berada di direktori `tool-results` sesi di bawah [`~/.claude/projects/`](/docs/id/claude-directory#cleaned-up-automatically).

1412* **Ukuran respons dari server HTTP dan SSE**: Claude Code berhenti membaca respons dari server [HTTP](#option-1-add-a-remote-http-server) atau [SSE](#option-2-add-a-remote-sse-server) begitu satu body respons JSON, atau satu event dari event stream, melewati 16 MB setelah dekompresi. Permintaan yang dijawab oleh respons tersebut gagal. Jika Anda mengelola server tersebut, kembalikan lebih sedikit data per respons agar tetap di bawah batas, misalnya dengan melakukan paginasi hasil1425* **Ukuran respons dari server HTTP dan SSE**: ketika respons dari server [HTTP](#option-1-add-a-remote-http-server) atau [SSE](#option-2-add-a-remote-sse-server) melewati 16 MiB, Claude Code berhenti membacanya dan permintaan tersebut gagal. Batas ini berlaku setelah dekompresi untuk satu body respons JSON atau satu event dari event stream. Jika Anda mengelola server tersebut, kembalikan lebih sedikit data per respons agar tetap di bawah batas, misalnya dengan melakukan paginasi hasil

1426* **Ukuran pesan dari server WebSocket**: ketika server [WebSocket](#option-4-add-a-remote-websocket-server) mengirim satu pesan yang melebihi 16 MiB, Claude Code [menutup koneksi](#mid-session-drops-of-a-remote-server), dan panggilan yang sedang berlangsung pada server tersebut gagal. Jika Anda mengelola server tersebut, kembalikan lebih sedikit data per pesan agar tetap di bawah batas

1413 1427 

1414Panggilan yang telah [dipindahkan Claude Code ke tugas latar belakang](#automatic-backgrounding-of-long-tool-calls) melaporkan hasilnya melalui notifikasi tugas. Dua batas tambahan berlaku untuk panggilan yang selesai di latar depan:1428Panggilan yang telah [dipindahkan Claude Code ke tugas latar belakang](#automatic-backgrounding-of-long-tool-calls) melaporkan hasilnya melalui notifikasi tugas. Dua batas tambahan berlaku untuk panggilan yang selesai di latar depan:

1415 1429 


1483 1497 

1484Penanganan [combinator tingkat root](#tool-input-schemas-with-a-root-level-combinator) terpisah dan mempertahankan perilakunya sendiri ketika pengambilan bendera dimatikan atau bendera tidak pernah tiba.1498Penanganan [combinator tingkat root](#tool-input-schemas-with-a-root-level-combinator) terpisah dan mempertahankan perilakunya sendiri ketika pengambilan bendera dimatikan atau bendera tidak pernah tiba.

1485 1499 

1500<h2 id="tools-with-names-longer-than-128-characters">

1501 Tool dengan nama lebih dari 128 karakter

1502</h2>

1503 

1504Jika `/mcp` mencantumkan tool yang tidak dapat dipanggil oleh Claude, periksa apakah nama lengkap tool tersebut lebih dari 128 karakter. Jalankan `/mcp` di sesi Anda dan pilih tool tersebut untuk melihat nama lengkapnya, seperti `mcp__<server>__<tool>`. Claude Code tidak menyertakan tool MCP dalam daftar tool yang dikirimkannya ke Claude jika nama lengkapnya lebih dari 128 karakter. Claude API menolak permintaan yang menyertakan tool semacam itu, sehingga dengan tidak menyertakan tool tersebut, tool lain dari server tetap berfungsi.

1505 

1506Untuk pesan yang menyebutkan nama tool tersebut dan cara memperpendek nama lengkapnya, lihat [Nama tool MCP lebih dari 128 karakter](/docs/id/errors#mcp-tool-name-over-128-characters).

1507 

1486<h2 id="require-approval-for-a-specific-tool">1508<h2 id="require-approval-for-a-specific-tool">

1487 Memerlukan persetujuan untuk tool tertentu1509 Memerlukan persetujuan untuk tool tertentu

1488</h2>1510</h2>


1581 Skalakan dengan pencarian tool MCP1603 Skalakan dengan pencarian tool MCP

1582</h2>1604</h2>

1583 1605 

1584Pencarian tool menjaga penggunaan konteks MCP tetap rendah dengan menunda definisi tool hingga Claude membutuhkannya. Hanya nama tool dan instruksi server yang dimuat saat awal sesi, jadi menambahkan lebih banyak server MCP memiliki dampak minimal pada jendela konteks Anda. Claude Code tidak memberlakukan batas tool tetap per-server; batas praktisnya adalah anggaran jendela konteks Anda.1606Pencarian tool menjaga penggunaan konteks MCP tetap rendah dengan menunda definisi tool hingga Claude membutuhkannya. Hanya nama tool dan instruksi server yang dimuat saat awal sesi, jadi menambahkan lebih banyak server MCP memiliki dampak minimal pada context window Anda. Claude Code tidak memberlakukan batas tool tetap per-server; batas praktisnya adalah anggaran context window Anda.

1585 1607 

1586<Note>1608<Note>

1587 Pencarian tool tidak didukung pada Microsoft Foundry [deployment yang dihosting di Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options), yang menolaknya di sisi server: Claude Code mendeteksi penolakan dan memuat tool MCP di awal untuk deployment tersebut. [`ENABLE_TOOL_SEARCH`](#configure-tool-search) tidak dapat mengesampingkan ini, karena penolakan berasal dari deployment itu sendiri.1609 Pencarian tool tidak didukung pada Microsoft Foundry [deployment yang dihosting di Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options), yang menolaknya di sisi server: Claude Code mendeteksi penolakan dan memuat tool MCP di awal untuk deployment tersebut. [`ENABLE_TOOL_SEARCH`](#configure-tool-search) tidak dapat menimpa ini, karena penolakan berasal dari deployment itu sendiri.

1588</Note>1610</Note>

1589 1611 

1590<span id="for-mcp-server-authors" />1612<span id="for-mcp-server-authors" />


1601* Kapan Claude harus mencari tool Anda1623* Kapan Claude harus mencari tool Anda

1602* Kemampuan utama yang disediakan server Anda1624* Kemampuan utama yang disediakan server Anda

1603 1625 

1604Claude Code memotong setiap deskripsi tool dan instruksi server masing-masing pada 2.048 karakter secara default. Jaga agar ringkas, dan letakkan detail penting di dekat awal.1626Claude Code memotong deskripsi tool atau instruksi server yang melebihi batas default berikut, dan Claude hanya melihat teks sebelum potongan:

1627 

1628* **Instruksi server, dan deskripsi tool yang dimuat di awal**: 4.096 karakter

1629* **Deskripsi tool yang dimuat Claude melalui pencarian tool**: 16.384 karakter

1630 

1631Jaga agar deskripsi dan instruksi tetap ringkas, dan letakkan detail penting di dekat awal. Ketika pencarian tool mencocokkan kueri Claude dengan deskripsi tool, pencarian hanya membaca bagian dalam batas yang lebih pendek, jadi letakkan juga kata-kata yang akan dicari Claude di dekat awal. Tool dimuat di awal dan tetap menggunakan batas yang lebih pendek setiap kali tidak ditunda, misalnya ketika [pencarian tool dimatikan](#configure-tool-search), ketika tool [ditandai untuk dimuat di awal](#per-tool-alwaysload), atau ketika servernya [dibebaskan dari penundaan](#exempt-a-server-from-deferral).

1632 

1633Sebelum v2.1.296, batas yang lebih pendek adalah 2.048 karakter, dan sebelum v2.1.295 batas tersebut berlaku untuk setiap deskripsi tool, termasuk yang dimuat melalui pencarian tool.

1605 1634 

1606Untuk mengubah batas untuk setiap server MCP dalam sesi Anda, atur [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](/docs/id/env-vars#variables) ke sejumlah karakter. Variabel ini memerlukan Claude Code v2.1.280 atau lebih baru.1635Untuk mengubah batas untuk setiap server MCP dalam sesi Anda, atur [`CLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH`](/docs/id/env-vars#variables) ke sejumlah karakter. Angka yang Anda atur menggantikan kedua batas: `8192`, misalnya, menaikkan batas yang lebih pendek dan menurunkan batas yang lebih panjang. Variabel ini memerlukan Claude Code v2.1.280 atau lebih baru.

1607 1636 

1608<h4 id="per-tool-alwaysload">1637<h4 id="per-tool-alwaysload">

1609 Tandai tool agar dimuat di awal atau tetap ditunda1638 Tandai tool agar dimuat di awal atau tetap ditunda


1632 Konfigurasi pencarian tool1661 Konfigurasi pencarian tool

1633</h3>1662</h3>

1634 1663 

1635Pencarian tool diaktifkan secara default: tool MCP ditunda dan ditemukan sesuai permintaan. Claude Code menonaktifkannya ketika `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama, karena sebagian besar proxy tidak meneruskan blok `tool_reference`. Atur `ENABLE_TOOL_SEARCH` secara eksplisit untuk mengesampingkan fallback tersebut.1664Pencarian tool diaktifkan secara default: tool MCP ditunda dan ditemukan sesuai permintaan. Claude Code menonaktifkannya ketika `ANTHROPIC_BASE_URL` menunjuk ke host non-pihak pertama, karena sebagian besar proxy tidak meneruskan blok `tool_reference`. Atur `ENABLE_TOOL_SEARCH` secara eksplisit untuk menimpa fallback tersebut.

1636 1665 

1637Mengatur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/id/env-vars) menjaga pencarian tool tetap mati. Anda tidak dapat mengesampingkannya dengan mengatur `ENABLE_TOOL_SEARCH` sendiri. Organisasi Anda dapat menjaga pencarian tool tetap aktif melalui [pengaturan terkelola](/docs/id/managed-settings), pada Claude Code v2.1.227 atau lebih baru. [Nonaktifkan kemampuan pra-rilis](/docs/id/llm-gateway-protocol#disable-pre-release-capabilities) mencakup tempat pengesampingan berlaku dan apa yang dihapus variabel.1666Mengatur [`CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS`](/docs/id/env-vars) menjaga pencarian tool tetap mati. Anda tidak dapat menimpanya dengan mengatur `ENABLE_TOOL_SEARCH` sendiri. Pada Claude Code v2.1.227 atau lebih baru, organisasi Anda dapat menjaga pencarian tool tetap aktif di bawah variabel ini melalui [pengaturan terkelola](/docs/id/managed-settings). Dalam sesi yang [mendapatkan konfigurasi HIPAA](/docs/id/hipaa-setup#check-how-developers-sign-in-and-connect), pencarian tool dimatikan, dan baik `ENABLE_TOOL_SEARCH` maupun pengaturan terkelola tidak dapat mengaktifkannya kembali. [Nonaktifkan kemampuan pra-rilis](/docs/id/llm-gateway-protocol#disable-pre-release-capabilities) mencakup tempat override berlaku dan apa yang dihapus variabel.

1638 1667 

1639Pencarian tool memerlukan model yang mendukung blok `tool_reference`: Claude Sonnet 4.5, Claude Haiku 4.5, Claude Opus 4.5, dan model yang lebih baru. Lihat [kompatibilitas model dalam dokumen API](https://platform.claude.com/docs/en/agents-and-tools/tool-use/tool-search-tool#model-compatibility) untuk daftar terkini.1668Claude Code menggunakan pencarian tool pada Claude Opus 4, Claude Sonnet 4, Claude Haiku 4.5, dan model yang lebih baru, atau Opus 4.5, Sonnet 4.5, Haiku 4.5, dan model yang lebih baru di Agent Platform Google Cloud. Pada model yang lebih awal, Claude Code memuat semua tool MCP di awal, dan `ENABLE_TOOL_SEARCH=true` tidak menimpa ini.

1640 1669 

1641Di Agent Platform Google Cloud, Claude Code memutuskan berdasarkan generasi model:1670Di Agent Platform Google Cloud, Claude Code memutuskan berdasarkan generasi model:

1642 1671 

1643* **Claude Opus 4.5, Sonnet 4.5, Haiku 4.5, dan yang lebih baru**: pencarian tool aktif secara default, sama seperti di Anthropic API.1672* **Claude Opus 4.5, Sonnet 4.5, Haiku 4.5, dan yang lebih baru**: pencarian tool aktif secara default, sama seperti di Anthropic API.

1644* **Model Agent Platform sebelumnya**: Claude Code memuat semua tool MCP di awal, karena stack penyajian mereka menolak header beta yang diperlukan. `ENABLE_TOOL_SEARCH=true` tidak mengesampingkan ini.1673* **Model Agent Platform sebelumnya**: Claude Code memuat semua tool MCP di awal, karena stack penyajian mereka menolak header beta yang diperlukan. `ENABLE_TOOL_SEARCH=true` tidak menimpa ini.

1645 1674 

1646Sebelum v2.1.221, Claude Code menonaktifkan pencarian tool untuk semua model di Agent Platform Google Cloud kecuali Anda mengatur `ENABLE_TOOL_SEARCH=true`.1675Sebelum v2.1.221, Claude Code menonaktifkan pencarian tool untuk semua model di Agent Platform Google Cloud kecuali Anda mengatur `ENABLE_TOOL_SEARCH=true`.

1647 1676 

1648Kontrol perilaku pencarian tool dengan variabel lingkungan `ENABLE_TOOL_SEARCH`:1677Kontrol perilaku pencarian tool dengan environment variable `ENABLE_TOOL_SEARCH`:

1649 1678 

1650| Nilai | Perilaku |1679| Nilai | Perilaku |

1651| :- | :- |1680| :- | :- |

1652| (tidak diatur) | Semua tool MCP ditunda dan dimuat sesuai permintaan. Kembali ke pemuatan di awal pada model Agent Platform Google Cloud yang lebih awal dari generasi Claude 4.5, ketika `ANTHROPIC_BASE_URL` adalah host non-pihak pertama, atau pada deployment Microsoft Foundry yang dihosting di Azure |1681| (tidak diatur) | Semua tool MCP ditunda dan dimuat sesuai permintaan. Kembali ke pemuatan di awal pada model yang lebih awal dari Opus 4 dan Sonnet 4, pada model Agent Platform Google Cloud yang lebih awal dari Opus 4.5, Sonnet 4.5, dan Haiku 4.5, ketika `ANTHROPIC_BASE_URL` adalah host non-pihak pertama, atau pada deployment Microsoft Foundry yang dihosting di Azure |

1653| `true` | Semua tool MCP ditunda, kecuali pada deployment Microsoft Foundry yang dihosting di Azure, di mana penolakan sisi server masih memaksa pemuatan di awal, dan pada model Agent Platform Google Cloud yang lebih awal dari generasi Claude 4.5, di mana Claude Code terus memuat tool di awal. Claude Code mengirim header beta melalui proxy, dan permintaan gagal pada proxy yang tidak mendukung blok `tool_reference` |1682| `true` | Tool MCP tetap ditunda ketika `ANTHROPIC_BASE_URL` adalah host non-pihak pertama. Fallback lain dari (tidak diatur) tetap berlaku. Claude Code mengirim header beta melalui proxy, dan permintaan gagal pada proxy yang tidak mendukung blok `tool_reference` |

1654| `auto` | Mode ambang: Claude Code memuat tool yang akan ditunda di awal sementara definisinya berjumlah kurang dari 10% jendela konteks, dan menunda semuanya setelah definisi mencapai 10% |1683| `auto` | Mode ambang: Claude Code memuat tool yang akan ditunda di awal sementara definisinya berjumlah kurang dari 10% context window, dan menunda semuanya setelah definisi mencapai 10% |

1655| `auto:N` | Mode ambang dengan persentase khusus, di mana `N` adalah 0-100. Misalnya, `auto:5` untuk 5% |1684| `auto:N` | Mode ambang dengan persentase khusus, di mana `N` adalah 0-100. Misalnya, `auto:5` untuk 5% |

1656| `false` | Semua tool MCP dimuat di awal, tidak ada penundaan |1685| `false` | Semua tool MCP dimuat di awal, tidak ada penundaan |

1657 1686 

memory.md +4 −4

Details

258 258 

259Claude Code menggunakan pola apa pun yang akan melampaui anggaran yang tidak diperluas, dan brace literal mereka tidak cocok dengan file apa pun. Sebelum v2.1.217, nilai `paths` dengan banyak grup brace menghentikan atau menghancurkan CLI saat startup.259Claude Code menggunakan pola apa pun yang akan melampaui anggaran yang tidak diperluas, dan brace literal mereka tidak cocok dengan file apa pun. Sebelum v2.1.217, nilai `paths` dengan banyak grup brace menghentikan atau menghancurkan CLI saat startup.

260 260 

261Sintaks Glob memperlakukan `[` sebagai awal ekspresi bracket seperti `[abc]`. Pola dengan `[` yang tidak dapat dibaca sebagai ekspresi bracket, seperti `photos [2024/**`, tidak valid: itu tidak cocok dengan file apa pun, dan pola lain aturan terus bekerja. Untuk mencocokkan `[` literal dalam nama file, lepaskan sebagai `photos \[2024/**`. Sebelum v2.1.207, satu pola tidak valid membuat tool Read gagal untuk setiap file yang dievaluasi oleh aturan tersebut, daripada tidak cocok dengan apa pun.261Sintaks Glob memperlakukan `[` sebagai awal ekspresi bracket seperti `[abc]`. Pola dengan `[` yang tidak dapat dibaca sebagai ekspresi bracket, seperti `photos [2024/**`, tidak valid: itu tidak cocok dengan file apa pun, dan pola lain aturan terus bekerja. Untuk mencocokkan `[` literal dalam nama file, lepaskan sebagai `photos \[2024/**`.

262 262 

263<h4 id="rules-frontmatter-reference">263<h4 id="rules-frontmatter-reference">

264 Referensi frontmatter aturan264 Referensi frontmatter aturan


413 413 

414* **Pada awal sesi**: setiap `AGENTS.md` dan `.claude/AGENTS.md` di direktori kerja Anda dan direktori di atasnya. Dalam sesi interaktif Anda melihat baris seperti `no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md` dalam percakapan414* **Pada awal sesi**: setiap `AGENTS.md` dan `.claude/AGENTS.md` di direktori kerja Anda dan direktori di atasnya. Dalam sesi interaktif Anda melihat baris seperti `no CLAUDE.md found; AGENTS.md loaded: /home/you/repo/AGENTS.md` dalam percakapan

415* **Saat Claude bekerja di subdirektori**: `AGENTS.md` subdirektori, ketika Claude membuka file di sana dengan alat Read dan subdirektori itu tidak memiliki satu pun dari ketiga file `CLAUDE.md` miliknya sendiri415* **Saat Claude bekerja di subdirektori**: `AGENTS.md` subdirektori, ketika Claude membuka file di sana dengan alat Read dan subdirektori itu tidak memiliki satu pun dari ketiga file `CLAUDE.md` miliknya sendiri

416* **Di dalam setiap `AGENTS.md`**: impor [`@path`](#import-additional-files) diperluas, pola [`claudeMdExcludes`](#exclude-specific-claude-md-files) berlaku, dan subagen yang [melewati instruksi proyek](/docs/id/sub-agents#what-loads-at-startup) melewati file-file ini juga416* **Di dalam setiap `AGENTS.md`**: impor [`@path`](#import-additional-files) diperluas, pola [`claudeMdExcludes`](#exclude-specific-claude-md-files) berlaku, dan subagent yang [dimulai tanpa instruksi proyek](/docs/id/sub-agents#what-loads-at-startup) juga dimulai tanpa file-file ini

417* **Tidak dibaca**: `AGENTS.local.md`, `AGENTS.override.md`, atau apa pun di bawah direktori `.agents/`417* **Tidak dibaca**: `AGENTS.local.md`, `AGENTS.override.md`, atau apa pun di bawah direktori `.agents/`

418 418 

419<Note>419<Note>


659Untuk instruksi yang Anda inginkan di tingkat prompt sistem, gunakan [`--append-system-prompt`](/docs/id/cli-reference#system-prompt-flags). Anda meneruskannya saat peluncuran, jadi lebih cocok untuk skrip dan otomasi daripada penggunaan interaktif. Untuk cara kerjanya saat Anda melanjutkan percakapan, lihat [System prompt flags in resumed conversations](/docs/id/cli-reference#system-prompt-flags-in-resumed-conversations).659Untuk instruksi yang Anda inginkan di tingkat prompt sistem, gunakan [`--append-system-prompt`](/docs/id/cli-reference#system-prompt-flags). Anda meneruskannya saat peluncuran, jadi lebih cocok untuk skrip dan otomasi daripada penggunaan interaktif. Untuk cara kerjanya saat Anda melanjutkan percakapan, lihat [System prompt flags in resumed conversations](/docs/id/cli-reference#system-prompt-flags-in-resumed-conversations).

660 660 

661<Tip>661<Tip>

662 Gunakan [hook `InstructionsLoaded`](/docs/id/hooks#instructionsloaded) untuk mencatat dengan tepat file instruksi mana yang dimuat, kapan mereka dimuat, dan mengapa. Ini berguna untuk men-debug aturan khusus jalur atau file yang dimuat malas di subdirektori.662 Gunakan [hook `InstructionsLoaded`](/docs/id/hooks#instructionsloaded) untuk mencatat file `CLAUDE.md` dan file aturan mana yang dimuat, kapan mereka dimuat, dan mengapa. Ini berguna untuk men-debug aturan khusus jalur atau file yang dimuat secara lazy di subdirektori.

663</Tip>663</Tip>

664 664 

665<h3 id="my-agents-md-isn’t-loading">665<h3 id="my-agents-md-isn’t-loading">


692 692 

693Jika salah satu file instruksi Anda melebihi panjang yang direkomendasikan, Anda akan melihat peringatan saat startup dan saat Anda menjalankan `/status`. Anda juga akan melihat peringatan ketika file yang masing-masing berada dalam panjang tersebut menambah hingga melampaui batas gabungan saat startup sesi. Setiap CLAUDE.md, file rules, dan impor `@path` dihitung sebagai file terpisah.693Jika salah satu file instruksi Anda melebihi panjang yang direkomendasikan, Anda akan melihat peringatan saat startup dan saat Anda menjalankan `/status`. Anda juga akan melihat peringatan ketika file yang masing-masing berada dalam panjang tersebut menambah hingga melampaui batas gabungan saat startup sesi. Setiap CLAUDE.md, file rules, dan impor `@path` dihitung sebagai file terpisah.

694 694 

695Checkup [`/doctor`](/docs/id/commands#all-commands) mengusulkan pemangkasan untuk CLAUDE.md yang diperiksa: ia memotong konten yang dapat Claude turunkan dari codebase, seperti tata letak direktori, daftar dependensi, dan ikhtisar arsitektur, dan menyimpan jebakan, rasional, dan konvensi yang berbeda dari default alat. Pemeriksaan pemangkasan memerlukan Claude Code v2.1.206 atau lebih baru.695Checkup [`/doctor`](/docs/id/commands#all-commands) mengusulkan pemangkasan untuk CLAUDE.md yang di-commit ke repositori: ia memotong konten yang dapat Claude turunkan dari codebase, seperti tata letak direktori, daftar dependensi, dan ikhtisar arsitektur, dan menyimpan jebakan, rasional, dan konvensi yang berbeda dari default tool.

696 696 

697<h3 id="instructions-seem-lost-after-/compact">697<h3 id="instructions-seem-lost-after-/compact">

698 Instructions seem lost after `/compact`698 Instructions seem lost after `/compact`

Details

160 Menggunakan bearer token160 Menggunakan bearer token

161</h4>161</h4>

162 162 

163Claude Code mengirimkan nilai `ANTHROPIC_FOUNDRY_AUTH_TOKEN` pada setiap permintaan sebagai header `Authorization: Bearer`. Gunakan opsi ini ketika proses lain, seperti aplikasi host atau skrip sign-in, telah memperoleh token akses untuk Anda. Memerlukan Claude Code v2.1.203 atau lebih baru.163Claude Code mengirimkan nilai `ANTHROPIC_FOUNDRY_AUTH_TOKEN` pada setiap permintaan sebagai header `Authorization: Bearer`. Gunakan opsi ini ketika proses lain, seperti aplikasi host atau skrip sign-in, telah memperoleh token akses untuk Anda.

164 164 

165Atur variabel ke bearer token yang dikeluarkan Microsoft Entra ID untuk sumber daya Anda:165Atur variabel ke bearer token yang dikeluarkan Microsoft Entra ID untuk sumber daya Anda:

166 166 

model-config.md +28 −25

Details

855 Context window dan auto-compaction855 Context window dan auto-compaction

856</h2>856</h2>

857 857 

858Jendela auto-compact adalah seberapa penuh context window dapat menjadi sebelum Claude Code melakukan compaction percakapan. Untuk apa yang disimpan dan dihapus compaction per mekanisme, lihat [What survives compaction](/docs/id/context-window#what-survives-compaction).858Jendela auto-compact adalah seberapa penuh context window dapat terisi sebelum Claude Code melakukan compaction pada percakapan. Untuk informasi tentang apa yang dipertahankan dan dibuang oleh compaction per mekanisme, lihat [Apa yang bertahan setelah compaction](/docs/id/context-window#what-survives-compaction).

859 859 

860<h3 id="set-the-auto-compact-window">860<h3 id="set-the-auto-compact-window">

861 Atur jendela auto-compact861 Mengatur jendela auto-compact

862</h3>862</h3>

863 863 

864Anda dapat mengatur jendela auto-compact di tempat-tempat berikut:864Anda dapat mengatur jendela auto-compact di tempat-tempat berikut:

865 865 

866* **Untuk model saat ini, dalam sesi ini dan sesi berikutnya**: jalankan `/autocompact` dengan nilai, seperti `/autocompact 500k`. Claude Code menyimpannya ke pengaturan pengguna Anda di bawah model saat ini dalam [`modelSettings`](/docs/id/settings-reference#modelsettings) dan menerapkannya ke sesi saat ini. Jika [cakupan pengaturan](/docs/id/settings#settings-precedence) dengan prioritas lebih tinggi seperti pengaturan terkelola menetapkan jendelanya sendiri untuk model tersebut atau untuk setiap model, perintah menyimpan nilai Anda tetapi sesi mempertahankan jendela cakupan tersebut, dan perintah mengatakan demikian. Jalankan `/autocompact auto` untuk kembali ke jendela yang disesuaikan untuk model Anda. Sebelum v2.1.288, perintah ini menyimpan satu jendela untuk setiap model, sebagai `autoCompactWindow` tingkat atas.866* **Untuk model saat ini, dalam sesi ini dan sesi-sesi berikutnya**: jalankan `/autocompact` dengan sebuah nilai, seperti `/autocompact 500k`. Claude Code menyimpannya ke pengaturan pengguna Anda di bawah model saat ini dalam [`modelSettings`](/docs/id/settings-reference#modelsettings) dan menerapkannya ke sesi saat ini. Jika [cakupan pengaturan](/docs/id/settings#settings-precedence) dengan prioritas lebih tinggi seperti pengaturan terkelola menetapkan jendelanya sendiri untuk model tersebut atau untuk setiap model, perintah tersebut menyimpan nilai Anda tetapi sesi tetap menggunakan jendela dari cakupan tersebut, dan perintah akan memberi tahu hal itu. Jalankan `/autocompact auto` untuk kembali ke jendela yang disesuaikan untuk model Anda. Sebelum v2.1.288, perintah tersebut menyimpan satu jendela untuk setiap model, sebagai `autoCompactWindow` tingkat atas.

867* **Untuk setiap model**: atur [`autoCompactWindow`](/docs/id/settings-reference#autocompactwindow) dalam file pengaturan, seperti `"autoCompactWindow": 200000` di `~/.claude/settings.json`. Jendela yang Anda simpan untuk suatu model dengan `/autocompact` diutamakan daripada kunci ini dalam file yang sama untuk model tersebut.867* **Untuk setiap model**: atur [`autoCompactWindow`](/docs/id/settings-reference#autocompactwindow) dalam file pengaturan, seperti `"autoCompactWindow": 200000` di `~/.claude/settings.json`. Jendela yang Anda simpan untuk sebuah model dengan `/autocompact` diutamakan daripada key ini dalam file yang sama untuk model tersebut.

868* **Untuk satu peluncuran**: teruskan [`--autocompact`](/docs/id/cli-reference#cli-flags) saat memulai Claude Code. Flag ini menimpa pengaturan tersimpan Anda untuk peluncuran itu tanpa mengubahnya, dan `claude --autocompact auto` menjalankan sesi pada jendela yang disesuaikan bahkan jika pengaturan tersimpan Anda memiliki nilai. Tidak seperti `/autocompact`, flag ini tidak didahului oleh cakupan pengaturan dengan prioritas lebih tinggi seperti pengaturan terkelola.868* **Untuk satu kali peluncuran**: berikan [`--autocompact`](/docs/id/cli-reference#cli-flags) saat memulai Claude Code. Flag tersebut menimpa pengaturan tersimpan Anda untuk peluncuran itu tanpa mengubahnya, dan `claude --autocompact auto` menjalankan sesi pada jendela yang disesuaikan meskipun pengaturan tersimpan Anda memiliki nilai. Tidak seperti `/autocompact`, flag ini tidak didahului oleh cakupan pengaturan dengan prioritas lebih tinggi seperti pengaturan terkelola.

869* **Dalam skrip dan lingkungan cloud**: atur [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/id/env-vars). Saat diatur, variabel ini diutamakan daripada perintah, flag, dan pengaturan, dan `/autocompact` melaporkan override tersebut alih-alih mengubah jendela.869* **Dalam skrip dan lingkungan cloud**: atur [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/id/env-vars). Selama variabel ini diatur, variabel ini diutamakan daripada perintah, flag, dan pengaturan, dan `/autocompact` melaporkan override tersebut alih-alih mengubah jendela.

870* **Untuk satu subagent**: lihat [Mengatur jendela auto-compact untuk satu subagent](/docs/id/sub-agents#subagent-auto-compact-window).

870 871 

871Perintah dan flag menerima ukuran jendela dari 100K hingga 1M token, dalam salah satu bentuk ini:872Perintah dan flag menerima ukuran jendela dari 100K hingga 1M token, dalam salah satu bentuk berikut:

872 873 

873* Hitungan token biasa, seperti `200000`874* Jumlah token biasa, seperti `200000`

874* Akhiran `k` atau `M`, seperti `500k` atau `1M`875* Akhiran `k` atau `M`, seperti `500k` atau `1M`

875* Angka biasa dari 100 hingga 1000, berarti ribuan, jadi `200` menetapkan 200.000876* Angka tanpa akhiran dari 100 hingga 1000, yang berarti ribuan, sehingga `200` menetapkan 200.000

876 877 

877Environment variable hanya menerima hitungan token biasa. Claude Code membatasi jendela pada context window model.878Environment variable hanya menerima jumlah token biasa. Claude Code membatasi jendela pada context window model.

878 879 

879<h3 id="default-auto-compact-thresholds">880<h3 id="default-auto-compact-thresholds">

880 Ambang batas auto-compact default881 Ambang auto-compact default

881</h3>882</h3>

882 883 

883Jika Anda tidak mengatur jendela auto-compact, Claude Code melakukan compaction ketika percakapan mencapai batas konteks model, kecuali dalam sesi ini:884Jika Anda tidak mengatur jendela auto-compact, Claude Code melakukan compaction saat percakapan mencapai batas konteks model, kecuali dalam sesi-sesi berikut:

884 885 

885* [Sesi cloud](/docs/id/claude-code-on-the-web) melakukan compaction saat percakapan mendekati batas model886* [Sesi cloud](/docs/id/claude-code-on-the-web) melakukan compaction saat percakapan mendekati batas model

886* Sonnet 4.6 dan Opus 4.6 tanpa [konteks diperluas](#extended-context) melakukan compaction pada batas 200K887* Sonnet 4.6 dan Opus 4.6 tanpa [konteks diperluas](#extended-context) melakukan compaction pada batas 200K

887* Ketika Anda mengatur [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/id/env-vars), model dengan jendela asli 1M, seperti Sonnet 5 dan model Fable, melakukan compaction pada batas 200K888* Saat Anda mengatur [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/id/env-vars), model dengan jendela 1M bawaan, seperti Sonnet 5 dan model Fable, melakukan compaction pada batas 200K

888* Model yang berjalan dengan jendela asli 1M melakukan compaction sebelum jendela penuh, pada sekitar 967K token secara default. Ini termasuk model Fable, Sonnet 5 dan yang lebih baru, Haiku 5.5, serta Opus 4.7 dan yang lebih baru. Di balik `ANTHROPIC_BASE_URL` kustom, lihat [the context window behind a gateway](#context-window-behind-a-gateway)889* Model yang berjalan dengan jendela 1M bawaan melakukan compaction sebelum jendela penuh, sekitar 967K token secara default. Ini mencakup model Fable, Sonnet 5 dan yang lebih baru, Haiku 5.5, serta Opus 4.7 dan yang lebih baru. Di balik `ANTHROPIC_BASE_URL` kustom, lihat [context window di balik gateway](#context-window-behind-a-gateway)

889* Sesi pada ID model yang tidak dikenali Claude Code, seperti alias [gateway LLM](/docs/id/llm-gateway), melakukan compaction pada context window yang diasumsikan Claude Code untuk ID tersebut; lihat [Correct the window for a gateway or custom model ID](#correct-the-window-for-a-gateway-or-custom-model-id)890* Sesi pada ID model yang tidak dikenali Claude Code, seperti alias [LLM gateway](/docs/id/llm-gateway), melakukan compaction pada context window yang diasumsikan Claude Code untuk ID tersebut; lihat [Mengoreksi jendela untuk gateway atau ID model kustom](#correct-the-window-for-a-gateway-or-custom-model-id)

891 

892Lihat pengaturan [`idleCompaction`](/docs/id/settings-reference#idlecompaction) untuk mengetahui kapan Claude Code juga melakukan compaction pada percakapan yang Anda biarkan tidak aktif.

890 893 

891<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">894<h3 id="correct-the-window-for-a-gateway-or-custom-model-id">

892 Perbaiki jendela untuk gateway atau ID model kustom895 Mengoreksi jendela untuk gateway atau ID model kustom

893</h3>896</h3>

894 897 

895Pada [gateway LLM](/docs/id/llm-gateway) atau deployment kustom lainnya, Claude Code dapat mengasumsikan context window untuk ID model yang berbeda dari jendela asli model, terlepas dari apakah itu menyelesaikan ID ke model Claude. Atur [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](/docs/id/env-vars) ke jendela yang Claude Code harus asumsikan sebagai gantinya.898Pada [LLM gateway](/docs/id/llm-gateway) atau deployment kustom lainnya, Claude Code dapat mengasumsikan context window untuk ID model yang berbeda dari jendela sebenarnya milik model tersebut, terlepas dari apakah Claude Code me-resolve ID tersebut ke model Claude atau tidak. Atur [`CLAUDE_CODE_MAX_CONTEXT_TOKENS`](/docs/id/env-vars) ke jendela yang seharusnya diasumsikan Claude Code.

896 899 

897Bagaimana variabel diterapkan tergantung pada ID. Claude Code memperlakukan ID sebagai penyedia atau ejaan kustom ketika tidak dimulai dengan `claude-`, dalam huruf apa pun, atau ketika membawa akhiran yang Claude Code lepaskan saat membaca ID, seperti akhiran tanggal `@YYYYMMDD` yang digunakan di Agent Platform Google Cloud. Sebelum v2.1.259, Claude Code tidak menghitung akhiran yang dilucuti, jadi ID `claude-` yang tidak dikenali dengan akhiran tanggal diperlakukan sebagai nama `claude-` biasa.900Cara variabel ini diterapkan bergantung pada ID-nya. Claude Code memperlakukan sebuah ID sebagai ejaan penyedia atau kustom jika ID tersebut tidak diawali dengan `claude-`, dalam huruf besar maupun kecil apa pun, atau jika ID tersebut membawa akhiran yang dihapus Claude Code saat membaca ID, seperti tanggal `@YYYYMMDD` yang digunakan di Agent Platform milik Google Cloud. Sebelum v2.1.259, Claude Code tidak memperhitungkan akhiran yang dihapus, sehingga ID `claude-` yang tidak dikenali dengan akhiran tanggal diperlakukan sebagai nama `claude-` polos.

898 901 

899Penyedia atau ejaan kustom yang tidak dikenali, ejaan yang sama dengan `[1m]`, dan setiap ID lainnya adalah tiga kasus terpisah:902Ejaan penyedia atau kustom yang tidak dikenali, ejaan yang sama dengan `[1m]`, dan setiap ID lainnya merupakan tiga kasus terpisah:

900 903 

901* Jika Claude Code tidak dapat menyelesaikan penyedia atau ejaan kustom ke model yang dikenalinya dan ID tidak berisi `[1m]`, variabel diterapkan secara langsung dan compaction proaktif berlanjut pada jendela yang dideklarasikan.904* Jika Claude Code tidak dapat me-resolve ejaan penyedia atau kustom ke model yang dikenalinya dan ID tersebut tidak mengandung `[1m]`, variabel ini berlaku secara langsung dan compaction proaktif berlanjut pada jendela yang dideklarasikan.

902* Jika Claude Code tidak dapat menyelesaikan penyedia atau ejaan kustom ke model yang dikenalinya dan ID berisi `[1m]`, dalam huruf apa pun, Claude Code mengasumsikan jendela 1M untuk itu dan variabel tidak diterapkan dengan sendirinya. Untuk memperbaiki jendela sambil mempertahankan compaction proaktif, juga atur [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/id/env-vars). Dengan variabel itu diatur, Claude Code mengukur ID seperti ejaan yang sama tanpa `[1m]`, jadi `CLAUDE_CODE_MAX_CONTEXT_TOKENS` diterapkan ketika itu akan diterapkan pada ejaan tanpa tag itu.905* Jika Claude Code tidak dapat me-resolve ejaan penyedia atau kustom ke model yang dikenalinya dan ID tersebut mengandung `[1m]`, dalam huruf besar maupun kecil apa pun, Claude Code mengasumsikan jendela 1M untuknya dan variabel ini tidak berlaku dengan sendirinya. Untuk mengoreksi jendela sambil mempertahankan compaction proaktif, atur juga [`CLAUDE_CODE_DISABLE_1M_CONTEXT=1`](/docs/id/env-vars). Dengan variabel tersebut diatur, Claude Code menentukan ukuran ID seperti ejaan yang sama tanpa `[1m]`, sehingga `CLAUDE_CODE_MAX_CONTEXT_TOKENS` berlaku ketika variabel tersebut akan berlaku untuk ejaan tanpa tag itu.

903 906 

904 Dengan jendela yang dideklarasikan di atas 200K, Claude Code kemudian menampilkan [peringatan startup](/docs/id/errors#the-200k-limit-isnt-enforced) bahwa batas 200K tidak diterapkan. Peringatan diharapkan dalam konfigurasi ini.907 Dengan jendela yang dideklarasikan di atas 200K, Claude Code kemudian menampilkan [peringatan saat startup](/docs/id/errors#the-200k-limit-isnt-enforced) bahwa batas 200K tidak diberlakukan. Peringatan ini memang diharapkan dalam konfigurasi ini.

905* Jika ID diselesaikan ke model Claude Code yang dikenali, atau ID adalah nama `claude-` biasa tanpa akhiran untuk Claude Code lepaskan, dalam huruf apa pun, variabel hanya berlaku ketika Anda juga mengatur [`DISABLE_COMPACT`](/docs/id/env-vars), yang menonaktifkan semua compaction.908* Jika ID di-resolve ke model yang dikenali Claude Code, atau ID tersebut adalah nama `claude-` polos tanpa akhiran yang perlu dihapus Claude Code, dalam huruf besar maupun kecil apa pun, variabel ini hanya berlaku jika Anda juga mengatur [`DISABLE_COMPACT`](/docs/id/env-vars), yang menonaktifkan semua compaction.

906 909 

907 Misalnya, ID yang berisi nama model Claude yang Claude Code ketahui, seperti `anthropic/claude-opus-4-8`, `us.anthropic.claude-…-v1:0`, atau `claude-sonnet-4-5@20250929` yang bertanggal, diselesaikan ke model itu. Ini termasuk ID yang juga berisi `[1m]`: Claude Code menyelesaikan `claude-opus-4-8[1m]` ke Opus 4.8 bahkan dengan `CLAUDE_CODE_DISABLE_1M_CONTEXT` diatur.910 Misalnya, ID yang mengandung nama model Claude yang dikenal Claude Code, seperti `anthropic/claude-opus-4-8`, `us.anthropic.claude-…-v1:0`, atau `claude-sonnet-4-5@20250929` yang bertanggal, di-resolve ke model tersebut. Ini termasuk ID yang juga mengandung `[1m]`: Claude Code me-resolve `claude-opus-4-8[1m]` ke Opus 4.8 bahkan dengan `CLAUDE_CODE_DISABLE_1M_CONTEXT` diatur.

908 911 

909Untuk ID model yang Claude Code tidak kenali, atur [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](/docs/id/env-vars) agar Claude Code melakukan compaction hanya setelah API menolak percakapan dengan [kesalahan terlalu panjang yang Claude Code kenali](/docs/id/errors#prompt-is-too-long). Claude Code tidak menjalankan pemulihan itu ketika gateway [menulis ulang kesalahan](/docs/id/llm-gateway-connect#troubleshoot-gateway-errors) ke kata-kata yang Claude Code tidak kenali.912Untuk ID model yang tidak dikenali Claude Code, atur [`CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`](/docs/id/env-vars) agar Claude Code melakukan compaction hanya setelah API menolak percakapan dengan [error terlalu panjang yang dikenali Claude Code](/docs/id/errors#prompt-is-too-long). Claude Code tidak menjalankan pemulihan tersebut ketika gateway [menulis ulang error](/docs/id/llm-gateway-connect#troubleshoot-gateway-errors) menjadi kata-kata yang tidak dikenali Claude Code.

910 913 

911<h2 id="checking-your-current-model">914<h2 id="checking-your-current-model">

912 Memeriksa model Anda saat ini915 Memeriksa model Anda saat ini

Details

641 641 

642* `prompt.id`: UUID yang menghubungkan prompt pengguna dengan semua peristiwa berikutnya hingga prompt berikutnya. Lihat [Atribut korelasi peristiwa](#event-correlation-attributes).642* `prompt.id`: UUID yang menghubungkan prompt pengguna dengan semua peristiwa berikutnya hingga prompt berikutnya. Lihat [Atribut korelasi peristiwa](#event-correlation-attributes).

643* `workspace.host_paths`: direktori workspace host yang dipilih di aplikasi desktop, sebagai array string643* `workspace.host_paths`: direktori workspace host yang dipilih di aplikasi desktop, sebagai array string

644* `workflow.run_id`: pengenal run, dengan awalan `wf_`, pada peristiwa API dan alat yang dipancarkan oleh agen yang termasuk dalam run alat [Workflow](/docs/id/workflows). Memfilter peristiwa berdasarkan satu `workflow.run_id` merekonstruksi permintaan API dan hasil alat run tersebut. Pengenal mencakup agen yang dihasilkan skrip workflow dan agen apa pun yang dihasilkan agen tersebut, seperti invokasi skill. Ini cocok dengan pengenal run yang dilaporkan dalam hasil alat Workflow. Tidak ada pada semua peristiwa lainnya. Memerlukan Claude Code v2.1.202 atau lebih baru644* `workflow.run_id`: pengidentifikasi run, dengan awalan `wf_`, pada event API dan tool yang dipancarkan oleh agent yang termasuk dalam run tool [Workflow](/docs/id/workflows). Memfilter event berdasarkan satu `workflow.run_id` merekonstruksi permintaan API dan hasil tool dari run tersebut. Pengidentifikasi ini mencakup agent yang dibuat oleh skrip workflow dan agent apa pun yang selanjutnya dibuat oleh agent tersebut, seperti pemanggilan skill. Nilainya cocok dengan pengidentifikasi run yang dilaporkan dalam hasil tool Workflow. Tidak ada pada semua event lainnya.

645* `workflow.name`: nama workflow, `meta.name` skrip-nya, dipancarkan bersama `workflow.run_id`. Nama workflow bawaan muncul verbatim saat run mengeksekusi skrip bawaan yang tidak dimodifikasi. Nama yang ditulis pengguna, termasuk salinan yang diedit dari skrip bawaan, diganti dengan `custom` kecuali `OTEL_LOG_TOOL_DETAILS=1` diatur. Memerlukan Claude Code v2.1.202 atau lebih baru645* `workflow.name`: nama workflow, yaitu `meta.name` dari skripnya, dipancarkan bersama `workflow.run_id`. Nama workflow bawaan muncul apa adanya ketika run mengeksekusi skrip bawaan yang tidak dimodifikasi. Nama yang dibuat pengguna, termasuk salinan skrip bawaan yang telah diedit, diganti dengan `custom` kecuali `OTEL_LOG_TOOL_DETAILS=1` ditetapkan.

646 646 

647<h4 id="repository-attributes">647<h4 id="repository-attributes">

648 Atribut repositori648 Atribut repositori


1075 Peristiwa mode izin berubah1075 Peristiwa mode izin berubah

1076</h4>1076</h4>

1077 1077 

1078Dicatat ketika mode izin berubah, misalnya dari siklus Shift+Tab, keluar dari mode rencana, atau pemeriksaan gerbang mode otomatis.1078Dicatat ketika mode izin berubah, misalnya dari siklus `Shift+Tab`, keluar dari plan mode, atau pemeriksaan gerbang auto mode.

1079 1079 

1080**Nama Peristiwa**: `claude_code.permission_mode_changed`1080**Nama Peristiwa**: `claude_code.permission_mode_changed`

1081 1081 


1374* `pre_tokens`: Jumlah token perkiraan sebelum pemadatan1374* `pre_tokens`: Jumlah token perkiraan sebelum pemadatan

1375* `post_tokens`: Jumlah token perkiraan setelah pemadatan1375* `post_tokens`: Jumlah token perkiraan setelah pemadatan

1376* `error`: Pesan kesalahan ketika pemadatan gagal1376* `error`: Pesan kesalahan ketika pemadatan gagal

1377* `precompute_reuse`: Hanya ditetapkan ketika `trigger` bernilai `"manual"`. Auto-compaction dapat menyiapkan ringkasan di latar belakang sebelum context window penuh, dan atribut ini mencatat apakah `/compact` 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 gantinya1377* `precompute_reuse`: Hanya ditetapkan ketika `trigger` bernilai `"manual"` atau untuk [idle compaction](/docs/id/settings-reference#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 gantinya

1378 1378 

1379<h4 id="subagent-completed-event">1379<h4 id="subagent-completed-event">

1380 Peristiwa subagen selesai1380 Peristiwa subagen selesai

Details

209| :- | :- | :- | :- |209| :- | :- | :- | :- |

210| First-byte deadline | Tidak ada header respons yang tiba setelah Claude Code mengirim permintaan | Direct Anthropic API dan [Claude Platform on AWS](/docs/id/claude-platform-on-aws), termasuk melalui proxy HTTPS, tetapi tidak ketika `ANTHROPIC_BASE_URL` atau `ANTHROPIC_AWS_BASE_URL` merutekannya melalui [gateway](/docs/id/gateways). Opt-in pada Amazon Bedrock dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; tidak berjalan pada Google Cloud's Agent Platform atau Microsoft Foundry | 180 detik pada direct Anthropic API, 300 detik di tempat lain, ditambah satu detik per 32KB badan permintaan |210| First-byte deadline | Tidak ada header respons yang tiba setelah Claude Code mengirim permintaan | Direct Anthropic API dan [Claude Platform on AWS](/docs/id/claude-platform-on-aws), termasuk melalui proxy HTTPS, tetapi tidak ketika `ANTHROPIC_BASE_URL` atau `ANTHROPIC_AWS_BASE_URL` merutekannya melalui [gateway](/docs/id/gateways). Opt-in pada Amazon Bedrock dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; tidak berjalan pada Google Cloud's Agent Platform atau Microsoft Foundry | 180 detik pada direct Anthropic API, 300 detik di tempat lain, ditambah satu detik per 32KB badan permintaan |

211| Event-level watchdog | Tidak ada event respons yang diurai. Pada koneksi di mana byte-level watchdog berjalan selain Amazon Bedrock, byte yang tiba, termasuk keep-alive pings, juga mengatur ulang watchdog ini, selama sekitar lima menit tanpa event yang diurai | Setiap penyedia | 300 detik |211| Event-level watchdog | Tidak ada event respons yang diurai. Pada koneksi di mana byte-level watchdog berjalan selain Amazon Bedrock, byte yang tiba, termasuk keep-alive pings, juga mengatur ulang watchdog ini, selama sekitar lima menit tanpa event yang diurai | Setiap penyedia | 300 detik |

212| Byte-level watchdog | Tidak ada byte yang tiba di wire, termasuk SSE keep-alive pings | Direct Anthropic API, [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan [gateway](/docs/id/gateways) koneksi, termasuk `ANTHROPIC_BASE_URL` kustom. Opt-in pada respons Amazon Bedrock `vnd.amazon.eventstream` dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; tidak berjalan pada Google Cloud's Agent Platform atau Microsoft Foundry | 180 detik pada direct Anthropic API. Melalui `ANTHROPIC_BASE_URL` kustom, 180 detik ketika Claude Code telah [mengambil feature flag](/docs/id/env-vars#features-that-need-feature-flag-fetching) dan 300 detik ketika belum. 300 detik di tempat lain |212| Byte-level watchdog | Tidak ada byte yang tiba di wire, termasuk SSE keep-alive pings | Direct Anthropic API, [Claude Platform on AWS](/docs/id/claude-platform-on-aws), dan koneksi [gateway](/docs/id/gateways), termasuk `ANTHROPIC_BASE_URL` kustom. Opt-in pada respons Amazon Bedrock `vnd.amazon.eventstream` dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; tidak berjalan pada Google Cloud's Agent Platform atau Microsoft Foundry | 180 detik pada direct Anthropic API. 300 detik pada Claude Platform on AWS, pada Amazon Bedrock, dalam sesi [Claude apps gateway](/docs/id/claude-apps-gateway), dan melalui `ANTHROPIC_BASE_URL` kustom |

213| Body idle timeout | Tidak ada byte yang tiba selama 5 menit | Penyedia selain direct Anthropic API, Claude Platform on AWS, dan Amazon Bedrock dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` diatur, kecuali [`API_FORCE_IDLE_TIMEOUT`](/docs/id/env-vars) mengubahnya | 5 menit |213| Body idle timeout | Tidak ada byte yang tiba selama 5 menit | Penyedia selain direct Anthropic API, Claude Platform on AWS, dan Amazon Bedrock dengan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` diatur, kecuali [`API_FORCE_IDLE_TIMEOUT`](/docs/id/env-vars) mengubahnya | 5 menit |

214 214 

215Jika Anda menetapkan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`, byte-level watchdog menggantikan body idle timeout pada Bedrock daripada berjalan bersama dengannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` kemudian juga mengatur berapa lama aliran Bedrock dapat tetap diam sebelum Claude Code memperlakukan koneksi sebagai mati, dalam batas yang tercantum di bawah. Byte yang tiba masih tidak mengatur ulang event-level watchdog pada Bedrock. Dengan debug logging aktif, setiap aliran Bedrock kemudian mencatat pesan debug yang dimulai dengan `wire-heartbeat: _chunkTimes absent`.215Jika Anda menetapkan `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`, byte-level watchdog menggantikan body idle timeout pada Bedrock daripada berjalan bersama dengannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` kemudian juga mengatur berapa lama aliran Bedrock dapat tetap diam sebelum Claude Code memperlakukan koneksi sebagai mati, dalam batas yang tercantum di bawah. Byte yang tiba masih tidak mengatur ulang event-level watchdog pada Bedrock. Dengan debug logging aktif, setiap aliran Bedrock kemudian mencatat pesan debug yang dimulai dengan `wire-heartbeat: _chunkTimes absent`.

Details

239 * **[Sesi Remote Control](/docs/id/remote-control)** 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](/docs/id/claude-projects#run-a-thread-on-your-own-computer).239 * **[Sesi Remote Control](/docs/id/remote-control)** 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](/docs/id/claude-projects#run-a-thread-on-your-own-computer).

240 * Kecuali untuk Bypass permissions, dropdown menampilkan mode izin yang sesi lokal gunakan, termasuk yang diatur dari terminal. Itu diperbarui ketika mode izin berubah di aplikasi atau di terminal.240 * Kecuali untuk Bypass permissions, dropdown menampilkan mode izin yang sesi lokal gunakan, termasuk yang diatur dari terminal. Itu diperbarui ketika mode izin berubah di aplikasi atau di terminal.

241 * Sesi yang dihosting oleh [aplikasi desktop](/docs/id/desktop) atau [ekstensi VS Code](/docs/id/vs-code) melaporkan perubahan mode izin ke claude.ai saat terjadi, sama seperti sesi yang dihosting di terminal.241 * Sesi yang dihosting oleh [aplikasi desktop](/docs/id/desktop) atau [ekstensi VS Code](/docs/id/vs-code) melaporkan perubahan mode izin ke claude.ai saat terjadi, sama seperti sesi yang dihosting di terminal.

242 * Sebelum v2.1.202, sesi yang terhubung dengan `/remote-control` atau `claude --remote-control` tidak melaporkan mode izin mereka sama sekali, jadi claude.ai dan aplikasi mobile dapat menampilkan mode izin yang sesi tidak gunakan. Ketidaksesuaian hanya mempengaruhi label. Claude Code menghasilkan prompt izin dari mode izin aktual sesi, dan mereka masih muncul di aplikasi untuk persetujuan.

243 242 

244 Untuk Remote Control, mesin lokal yang menjalankan sesi harus masuk dengan akun claude.ai Anda; kunci API tidak didukung. Anda juga dapat menetapkan mode izin awal saat meluncurkan sesi lokal itu:243 Untuk Remote Control, mesin lokal yang menjalankan sesi harus masuk dengan akun claude.ai Anda; kunci API tidak didukung. Anda juga dapat menetapkan mode izin awal saat meluncurkan sesi lokal itu:

245 244 


352 351 

353Untuk mencegah pengembang menggunakan auto mode, atur `disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](/docs/id/managed-settings). Ini menghapus `auto` dari siklus `Shift+Tab`, dan sesi yang dimulai dengan `--permission-mode auto` dimulai dalam Manual sebagai gantinya. Sesi yang sudah berjalan dalam auto mode akan keluar darinya ketika pengaturan mencapai sesi itu dari [sumber yang diterapkan admin](/docs/id/managed-settings#which-managed-source-claude-code-uses), dan menampilkan `auto mode disabled by settings`. Sebelum v2.1.251, sesi yang sedang berjalan tetap dalam auto mode sampai berakhir.352Untuk mencegah pengembang menggunakan auto mode, atur `disableAutoMode` ke `"disable"` dalam [pengaturan terkelola](/docs/id/managed-settings). Ini menghapus `auto` dari siklus `Shift+Tab`, dan sesi yang dimulai dengan `--permission-mode auto` dimulai dalam Manual sebagai gantinya. Sesi yang sudah berjalan dalam auto mode akan keluar darinya ketika pengaturan mencapai sesi itu dari [sumber yang diterapkan admin](/docs/id/managed-settings#which-managed-source-claude-code-uses), dan menampilkan `auto mode disabled by settings`. Sebelum v2.1.251, sesi yang sedang berjalan tetap dalam auto mode sampai berakhir.

354 353 

355Dalam v2.1.158 hingga v2.1.206, auto mode dimatikan pada penyedia ini sampai Anda menetapkan `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, dan Claude Code mengabaikan `defaultMode: "auto"` pada penyedia ini kecuali variabel tersebut juga ditetapkan. Variabel ini masih diterima untuk kompatibilitas dan tidak berpengaruh mulai v2.1.207.

356 

357<h3 id="server-side-classifier-review">354<h3 id="server-side-classifier-review">

358 Tinjauan pengklasifikasi di sisi server355 Tinjauan pengklasifikasi di sisi server

359</h3>356</h3>


408* Meluncurkan loop agent otonom yang berjalan tanpa persetujuan manusia atau sandbox, seperti yang dimulai dengan `--dangerously-skip-permissions` atau `--no-sandbox`. Ini juga mencakup menjalankan agent pihak ketiga atau harness eval dengan isolasi dan persetujuan per tindakan dinonaktifkan, seperti runner yang dimulai dengan `--yes-always`405* Meluncurkan loop agent otonom yang berjalan tanpa persetujuan manusia atau sandbox, seperti yang dimulai dengan `--dangerously-skip-permissions` atau `--no-sandbox`. Ini juga mencakup menjalankan agent pihak ketiga atau harness eval dengan isolasi dan persetujuan per tindakan dinonaktifkan, seperti runner yang dimulai dengan `--yes-always`

409* Tindakan browser [Claude in Chrome](/docs/id/chrome) yang dapat mengirim konten halaman, cookie, atau kredensial ke luar origin406* Tindakan browser [Claude in Chrome](/docs/id/chrome) yang dapat mengirim konten halaman, cookie, atau kredensial ke luar origin

410* Menghapus file di `/tmp`, `$TMPDIR`, atau direktori scratch atau cache bersama lainnya menggunakan wildcard, glob, atau filter usia alih-alih jalur bernama yang spesifik407* Menghapus file di `/tmp`, `$TMPDIR`, atau direktori scratch atau cache bersama lainnya menggunakan wildcard, glob, atau filter usia alih-alih jalur bernama yang spesifik

411* Menyertakan detail sensitif dalam konten yang dikirim, diunggah, dipublikasikan, atau ditulis untuk orang lain atau sistem bersama, ketika pesan Anda sendiri tidak mengotorisasi detail tersebut untuk penerima itu. Isi PR dan issue, pesan commit, dan komentar dihitung sebagai jenis konten keluar ini ketika repositori berada di luar batas kepercayaan atau bersifat publik, termasuk repositori publik milik organisasi Anda sendiri; jalur file internal, nama kode, data respons API aktif seperti email atau pengidentifikasi akun, dan pengidentifikasi infrastruktur dihitung sebagai detail sensitif. Data pribadi aktif dari respons API dalam isi PR atau issue, seperti alamat email, pengidentifikasi akun atau organisasi, atau metrik penggunaan, mengharuskan Anda menyebutkan detail tersebut dan penerimanya terlepas dari visibilitas repositori atau batas kepercayaan. Pemeriksaan itu memerlukan Claude Code v2.1.203 atau lebih baru408* Menyertakan detail sensitif dalam konten yang dikirim, diunggah, dipublikasikan, atau ditulis untuk orang lain atau sistem bersama, ketika pesan Anda sendiri tidak mengotorisasi detail tersebut untuk penerima itu. Isi PR dan issue, pesan commit, dan komentar dihitung sebagai jenis konten keluar ini ketika repositori berada di luar batas kepercayaan atau bersifat publik, termasuk repositori publik milik organisasi Anda sendiri; jalur file internal, nama kode, data respons API aktif seperti email atau pengidentifikasi akun, dan pengidentifikasi infrastruktur dihitung sebagai detail sensitif. Data pribadi aktif dari respons API dalam isi PR atau issue, seperti alamat email, pengidentifikasi akun atau organisasi, atau metrik penggunaan, mengharuskan Anda menyebutkan detail tersebut dan penerimanya terlepas dari visibilitas repositori atau batas kepercayaan

412* Mengirim keystroke ke pane tmux milik Claude Code sendiri untuk mengendalikan antarmukanya sendiri, yang diperlakukan pengklasifikasi sebagai Claude mengubah izin atau pengawasannya sendiri409* Mengirim keystroke ke pane tmux milik Claude Code sendiri untuk mengendalikan antarmukanya sendiri, yang diperlakukan pengklasifikasi sebagai Claude mengubah izin atau pengawasannya sendiri

413* Mengomentari, menghapus, atau memaksa lolos tes atau assertion yang menjaga perilaku keamanan, seperti auth, kontrol akses, validasi input, atau sandboxing410* Mengomentari, menghapus, atau memaksa lolos tes atau assertion yang menjaga perilaku keamanan, seperti auth, kontrol akses, validasi input, atau sandboxing

414* Menghapus atau membongkar sumber daya stateful yang tidak dibuat Claude dalam sesi, ketika tidak ada aturan penghapusan yang lebih spesifik yang berlaku dan Anda tidak menyebutkan sumber daya itu411* Menghapus atau membongkar sumber daya stateful yang tidak dibuat Claude dalam sesi, ketika tidak ada aturan penghapusan yang lebih spesifik yang berlaku dan Anda tidak menyebutkan sumber daya itu

415* Mengarahkan ulang URL dasar API, endpoint proxy, penerima webhook, atau mirror registri ke host pihak ketiga yang tidak sesuai dengan tugas, termasuk dalam file contoh seperti `.env.example`412* Mengarahkan ulang URL dasar API, endpoint proxy, penerima webhook, atau mirror registri ke host pihak ketiga yang tidak sesuai dengan tugas, termasuk dalam file contoh seperti `.env.example`

416* Mengubah tujuan push dengan `git remote set-url` atau `git remote add`, kecuali Anda menyebutkan remote baru tersebut413* Mengubah tujuan push dengan `git remote set-url` atau `git remote add`, kecuali Anda menyebutkan remote baru tersebut

417* Melakukan push rahasia atau data pribadi atau data yang dipercayakan ke repositori yang diketahui bersifat publik, atau melakukan push materi rahasia ke sana yang bukan bagian dari pekerjaan repositori itu sendiri. Pokok bahasan repositori dotfiles itu sendiri adalah satu-satunya pengecualian untuk data pribadi atau yang dipercayakan, dan konten dari repositori privat yang mencapai surface publik apa pun diblokir dengan cara yang sama; kedua penyempurnaan tersebut memerlukan Claude Code v2.1.203 atau lebih baru. Sebelum v2.1.203, data pribadi dikelompokkan bersama materi rahasia dan diblokir hanya ketika bukan bagian dari pekerjaan repositori itu sendiri. Ketika visibilitas repositori tidak diketahui, pengklasifikasi tidak memblokir berdasarkan hal itu saja; pengklasifikasi menilai kontennya berdasarkan aturan lain sebagai gantinya414* Melakukan push rahasia atau data pribadi atau data yang dipercayakan ke repositori yang diketahui bersifat publik, atau melakukan push materi rahasia ke sana yang bukan bagian dari pekerjaan repositori itu sendiri. Pokok bahasan repositori dotfiles itu sendiri adalah satu-satunya pengecualian untuk data pribadi atau yang dipercayakan, dan konten dari repositori privat yang mencapai surface publik apa pun diblokir dengan cara yang sama. Ketika visibilitas repositori tidak diketahui, pengklasifikasi tidak memblokir berdasarkan hal itu saja; pengklasifikasi menilai kontennya berdasarkan aturan lain sebagai gantinya

418* Membuka pull request terhadap repositori atau organisasi yang berbeda, melakukan fork dengan `gh repo fork`, atau melakukan push ke repositori pihak ketiga, kecuali Anda menyebutkan target eksternal itu415* Membuka pull request terhadap repositori atau organisasi yang berbeda, melakukan fork dengan `gh repo fork`, atau melakukan push ke repositori pihak ketiga, kecuali Anda menyebutkan target eksternal itu

419 

420Beberapa kategori ini bergantung pada entri [environment](/docs/id/auto-mode-config#define-trusted-infrastructure), seperti target jarak jauh yang sensitif dan cakupan IaC yang dilindungi, yang dapat Anda persempit menjadi nama konkret.

421 

422Claude Code v2.1.203 dan lebih baru juga memblokir hal berikut secara default:

423 

424* Konten dari penyimpanan lokal yang sensitif, atau dari file yang nama, jalur, atau jenisnya menandainya sebagai sensitif, masuk ke commit, push, teks PR atau issue, gist atau paste, atau publikasi paket, kecuali Anda menyebutkan sumber dan tujuannya. Transkrip sesi dan log percakapan, folder dot kredensial dan konfigurasi seperti kunci SSH, kredensial cloud, profil browser, dan riwayat shell, serta ekspor data pengguna semuanya termasuk, dan repositori yang bersifat privat tidak membebaskannya416* Konten dari penyimpanan lokal yang sensitif, atau dari file yang nama, jalur, atau jenisnya menandainya sebagai sensitif, masuk ke commit, push, teks PR atau issue, gist atau paste, atau publikasi paket, kecuali Anda menyebutkan sumber dan tujuannya. Transkrip sesi dan log percakapan, folder dot kredensial dan konfigurasi seperti kunci SSH, kredensial cloud, profil browser, dan riwayat shell, serta ekspor data pengguna semuanya termasuk, dan repositori yang bersifat privat tidak membebaskannya

425 

426Claude Code v2.1.205 dan lebih baru juga memblokir hal berikut secara default:

427 

428* Menulis ke transkrip sesi Claude Code, yaitu file riwayat `.jsonl` di bawah `~/.claude/projects/` atau direktori konfigurasi yang Anda konfigurasikan, baik secara langsung maupun melalui perintah shell. Aturan ini juga mencakup baris metadata yang ditambahkan Claude Code ke setiap entri transkrip untuk pemeriksaannya sendiri. Membaca transkrip tidak diblokir417* Menulis ke transkrip sesi Claude Code, yaitu file riwayat `.jsonl` di bawah `~/.claude/projects/` atau direktori konfigurasi yang Anda konfigurasikan, baik secara langsung maupun melalui perintah shell. Aturan ini juga mencakup baris metadata yang ditambahkan Claude Code ke setiap entri transkrip untuk pemeriksaannya sendiri. Membaca transkrip tidak diblokir

429* Penghapusan paksa rekursif seperti `rm -rf "$VAR"` atau `Remove-Item -Recurse -Force $dir` yang targetnya adalah variabel shell yang tidak ditetapkan di mana pun dalam percakapan yang dilihat pengklasifikasi, atau glob yang berakar pada variabel tersebut. Nilainya hanya berasal dari output perintah sebelumnya, yang tidak pernah diterima pengklasifikasi, sehingga pengklasifikasi tidak dapat memverifikasi target penghapusan terhadap aturan penghapusan lainnya. Blok ini hilang ketika Anda menyebutkan jalur persis yang dihapus, atau ketika Claude menjalankan ulang penghapusan dengan jalur literal yang sudah di-resolve ditulis ke dalam perintah. Penghapusan yang targetnya dapat di-resolve oleh pengklasifikasi tidak terpengaruh.418* Penghapusan paksa rekursif seperti `rm -rf "$VAR"` atau `Remove-Item -Recurse -Force $dir` yang targetnya adalah variabel shell yang tidak ditetapkan di mana pun dalam percakapan yang dilihat pengklasifikasi, atau glob yang berakar pada variabel tersebut. Nilainya hanya berasal dari output perintah sebelumnya, yang tidak pernah diterima pengklasifikasi, sehingga pengklasifikasi tidak dapat memverifikasi target penghapusan terhadap aturan penghapusan lainnya. Blok ini hilang ketika Anda menyebutkan jalur persis yang dihapus, atau ketika Claude menjalankan ulang penghapusan dengan jalur literal yang sudah di-resolve ditulis ke dalam perintah. Penghapusan yang targetnya dapat di-resolve oleh pengklasifikasi tidak terpengaruh.

430 419 

431 Glob langsung di bawah variabel, seperti dalam `rm -rf "$VAR"/*`, termasuk [jalur kritis](#critical-paths) sebagai gantinya. Target `Remove-Item` yang berupa `*` saja atau berakhiran `/*` atau `\*` tidak pernah mencapai pengklasifikasi: Claude Code [langsung menolaknya](#remove-item-in-powershell).420 Glob langsung di bawah variabel, seperti dalam `rm -rf "$VAR"/*`, termasuk [jalur kritis](#critical-paths) sebagai gantinya. Target `Remove-Item` yang berupa `*` saja atau berakhiran `/*` atau `\*` tidak pernah mencapai pengklasifikasi: Claude Code [langsung menolaknya](#remove-item-in-powershell).

432 421 

422Beberapa kategori ini bergantung pada entri [environment](/docs/id/auto-mode-config#define-trusted-infrastructure), seperti target jarak jauh yang sensitif dan cakupan IaC yang dilindungi, yang dapat Anda persempit menjadi nama konkret.

423 

433Claude Code v2.1.257 dan lebih baru juga memblokir hal berikut secara default:424Claude Code v2.1.257 dan lebih baru juga memblokir hal berikut secara default:

434 425 

435* Meminta kredensial dari endpoint metadata instans cloud, seperti `169.254.169.254`, atau secara eksplisit mengautentikasi panggilan cloud, cluster, atau registri dengan identitas akun layanan atau node milik mesin itu sendiri426* Meminta kredensial dari endpoint metadata instans cloud, seperti `169.254.169.254`, atau secara eksplisit mengautentikasi panggilan cloud, cluster, atau registri dengan identitas akun layanan atau node milik mesin itu sendiri


449* Menginstal dependensi yang dideklarasikan dalam file lock atau manifes Anda440* Menginstal dependensi yang dideklarasikan dalam file lock atau manifes Anda

450* Membaca `.env` dan mengirim kredensial ke API yang sesuai441* Membaca `.env` dan mengirim kredensial ke API yang sesuai

451* Permintaan HTTP read-only442* Permintaan HTTP read-only

452* Melakukan push ke branch mana pun dari repositori yang sedang Anda kerjakan, termasuk branch default. Branch non-default yang namanya menandainya sebagai target deploy atau publikasi, seperti `production` atau `gh-pages`, tidak tercakup: pengklasifikasi menilai push ke sana secara tersendiri. Konten push tetap diperiksa terhadap aturan lain, [aturan `permissions.deny`](/docs/id/permissions#manage-permissions) tetap dapat memblokir perintah push [sebagaimana ditulis](/docs/id/permissions#bash-rule-limits) dalam setiap mode, dan proteksi branch milik remote itu sendiri tetap berlaku. Sebelum v2.1.211, hanya push ke branch tempat Anda memulai, branch yang dibuat Claude, dan push rutin ke branch default yang diizinkan secara default, dan sebelum v2.1.203 setiap push langsung ke branch default diblokir443* Melakukan push ke branch mana pun dari repositori yang sedang Anda kerjakan, termasuk branch default. Branch non-default yang namanya menandainya sebagai target deploy atau publikasi, seperti `production` atau `gh-pages`, tidak tercakup: pengklasifikasi menilai push ke sana secara tersendiri. Konten push tetap diperiksa terhadap aturan lain, [aturan `permissions.deny`](/docs/id/permissions#manage-permissions) tetap dapat memblokir perintah push [sebagaimana ditulis](/docs/id/permissions#bash-rule-limits) dalam setiap mode, dan proteksi branch milik remote itu sendiri tetap berlaku. Sebelum v2.1.211, hanya push ke branch tempat Anda memulai, branch yang dibuat Claude, dan push rutin ke branch default yang diizinkan secara default

453* Menghapus pekerjaan persis yang dibuat Claude sebelumnya dalam sesi yang sama444* Menghapus pekerjaan persis yang dibuat Claude sebelumnya dalam sesi yang sama

454* Membaca, meninjau, atau menulis kode, konfigurasi, dan model ancaman terkait keamanan sebagai bagian dari tugas Anda445* Membaca, meninjau, atau menulis kode, konfigurasi, dan model ancaman terkait keamanan sebagai bagian dari tugas Anda

455* Pesan antar agent yang bekerja bersama dalam sesi multi-agent yang sama446* Pesan antar agent yang bekerja bersama dalam sesi multi-agent yang sama

permissions.md +8 −3

Details

384 384 

385Aturan `Edit` berlaku untuk semua tool bawaan yang mengedit file. Claude melakukan upaya terbaik untuk menerapkan aturan `Read` ke semua tool bawaan yang membaca file seperti Grep dan Glob, ke mention `@file` dalam prompt Anda, dan ke konteks seleksi serta file terbuka yang dibagikan oleh [IDE](/docs/id/vs-code#the-built-in-ide-mcp-server) yang terhubung kepada Claude.385Aturan `Edit` berlaku untuk semua tool bawaan yang mengedit file. Claude melakukan upaya terbaik untuk menerapkan aturan `Read` ke semua tool bawaan yang membaca file seperti Grep dan Glob, ke mention `@file` dalam prompt Anda, dan ke konteks seleksi serta file terbuka yang dibagikan oleh [IDE](/docs/id/vs-code#the-built-in-ide-mcp-server) yang terhubung kepada Claude.

386 386 

387Aturan deny `Read(path)` juga berlaku untuk path gambar yang Anda tempelkan ke dalam prompt dan direktori yang Anda @-mention:

388 

389* **Path gambar**: ketika Anda menempelkan path gambar atau menyeret file gambar ke dalam prompt Anda di terminal dan aturan tersebut cocok dengan path itu, Claude Code tidak melampirkan gambar tersebut. Jika yang ditempelkan tidak berisi gambar lain, path tetap berada di prompt Anda sebagai teks.

390* **Direktori**: [daftar yang diterima Claude](/docs/id/common-workflows#reference-files-and-directories) tidak menyertakan nama file dan direktori yang cocok dengan aturan tersebut.

391 

392Claude Code memeriksa path gambar yang ditempelkan dan daftar direktori di v2.1.290 dan yang lebih baru.

393 

387Aturan deny `Read` juga memblokir [tool Edit dan Write](/docs/id/errors#file-is-covered-by-a-read-deny-rule) pada path yang sama, termasuk membuat file baru di sana. NotebookEdit tidak tercakup, jadi tambahkan aturan deny `Edit` untuk path yang tidak boleh diubah oleh tool apa pun. Pemeriksaan ini memerlukan Claude Code v2.1.208 atau yang lebih baru untuk edit, dan v2.1.228 atau yang lebih baru untuk penulisan.394Aturan deny `Read` juga memblokir [tool Edit dan Write](/docs/id/errors#file-is-covered-by-a-read-deny-rule) pada path yang sama, termasuk membuat file baru di sana. NotebookEdit tidak tercakup, jadi tambahkan aturan deny `Edit` untuk path yang tidak boleh diubah oleh tool apa pun. Pemeriksaan ini memerlukan Claude Code v2.1.208 atau yang lebih baru untuk edit, dan v2.1.228 atau yang lebih baru untuk penulisan.

388 395 

389Claude Code memeriksa izin file hanya terhadap aturan `Edit(path)` dan `Read(path)`. Jika Anda menulis aturan path untuk `Write`, `NotebookEdit`, `Glob`, atau tool lama `MultiEdit`, Claude Code menerima aturan tersebut tetapi tidak pernah merujuknya, dan [memberi peringatan saat startup](/docs/id/errors#is-not-matched-by-file-permission-checks), kecuali untuk aturan `Glob` yang diteruskan dalam `--allowedTools`. Gunakan `Edit(docs/**)` sebagai pengganti `Write(docs/**)`, `NotebookEdit(docs/**)`, atau `MultiEdit(docs/**)`, dan `Read(docs/**)` sebagai pengganti `Glob(docs/**)`. Claude Code tidak memberi peringatan tentang aturan nama tool tanpa path, seperti aturan deny untuk `Write`; aturan tersebut dicocokkan di tingkat tool di mana saja. Memerlukan Claude Code v2.1.210 atau yang lebih baru.396Claude Code memeriksa izin file hanya terhadap aturan `Edit(path)` dan `Read(path)`. Jika Anda menulis aturan path untuk `Write`, `NotebookEdit`, `Glob`, atau tool lama `MultiEdit`, Claude Code menerima aturan tersebut tetapi tidak pernah merujuknya, dan [memberi peringatan saat startup](/docs/id/errors#is-not-matched-by-file-permission-checks), kecuali untuk aturan `Glob` yang diteruskan dalam `--allowedTools`. Gunakan `Edit(docs/**)` sebagai pengganti `Write(docs/**)`, `NotebookEdit(docs/**)`, atau `MultiEdit(docs/**)`, dan `Read(docs/**)` sebagai pengganti `Glob(docs/**)`. Claude Code tidak memberi peringatan tentang aturan nama tool tanpa path, seperti aturan deny untuk `Write`; aturan tersebut dicocokkan di tingkat tool di mana saja. Memerlukan Claude Code v2.1.210 atau yang lebih baru.


467 Dalam pola gitignore, `*` cocok dalam satu segmen path dan dapat muncul di posisi mana pun dalam pola, sedangkan `**` cocok lintas direktori.474 Dalam pola gitignore, `*` cocok dalam satu segmen path dan dapat muncul di posisi mana pun dalam pola, sedangkan `**` cocok lintas direktori.

468</Note>475</Note>

469 476 

470Ketika Anda menyetujui path file dengan "Yes, and don't ask again", Claude Code meng-escape karakter pola gitignore dalam path tersebut, seperti `[`, `]`, dan `*`, sehingga aturan yang dihasilkan hanya cocok dengan path literal yang Anda setujui. Aturan yang Anda tulis sendiri tidak di-escape. Sebelum v2.1.202, Claude Code menyimpan path tanpa escape, sehingga aturan yang dihasilkan untuk direktori bernama `[2024-06] Reports` dapat gagal mencocokkan path-nya sendiri atau mencocokkan direktori saudara yang tidak dimaksudkan.477Ketika Anda menyetujui path file dengan "Yes, and don't ask again", Claude Code meng-escape karakter pola gitignore dalam path tersebut, seperti `[`, `]`, dan `*`, sehingga aturan yang dihasilkan hanya cocok dengan path literal yang Anda setujui. Aturan yang Anda tulis sendiri tidak di-escape.

471 478 

472Anda tidak perlu meng-escape tanda kurung dalam path, sehingga `Edit(./Finance (2024)/**)` cocok dengan folder `Finance (2024)` sesuai ejaannya.479Anda tidak perlu meng-escape tanda kurung dalam path, sehingga `Edit(./Finance (2024)/**)` cocok dengan folder `Finance (2024)` sesuai ejaannya.

473 480 


805 Pengecualian home konfigurasi hanya melewati langkah kepercayaan. `~/.claude/settings.local.json` tetap berada dalam [cakupan lokal](/docs/id/settings#compare-the-scope-of-each-settings-file), sehingga Claude Code membacanya hanya dalam sesi yang Anda mulai di direktori home Anda itu sendiri, bukan di setiap proyek. Untuk menerapkan aturan izin di semua proyek Anda, tambahkan aturan tersebut ke pengaturan pengguna Anda: `~/.claude/settings.json`, atau `$CLAUDE_CONFIG_DIR/settings.json` ketika `CLAUDE_CONFIG_DIR` ditetapkan.812 Pengecualian home konfigurasi hanya melewati langkah kepercayaan. `~/.claude/settings.local.json` tetap berada dalam [cakupan lokal](/docs/id/settings#compare-the-scope-of-each-settings-file), sehingga Claude Code membacanya hanya dalam sesi yang Anda mulai di direktori home Anda itu sendiri, bukan di setiap proyek. Untuk menerapkan aturan izin di semua proyek Anda, tambahkan aturan tersebut ke pengaturan pengguna Anda: `~/.claude/settings.json`, atau `$CLAUDE_CONFIG_DIR/settings.json` ketika `CLAUDE_CONFIG_DIR` ditetapkan.

806</Note>813</Note>

807 814 

808Sebelum v2.1.207, Claude Code menerapkan aturan file yang tidak dilacak sebelum Anda menerima dialog.

809 

810<h3 id="what-runs-before-you-trust-a-folder">815<h3 id="what-runs-before-you-trust-a-folder">

811 Apa yang berjalan sebelum Anda memercayai folder816 Apa yang berjalan sebelum Anda memercayai folder

812</h3>817</h3>

plugin-evals.md +36 −5

Details

443 443 

444| Kode keluar | Arti |444| Kode keluar | Arti |

445| :- | :- |445| :- | :- |

446| 0 | Setiap kasus mencetak skor pada atau di atas `--threshold` dan setiap file kasus dimuat |446| 0 | Suite lulus: setiap kasus mencetak skor pada atau di atas `--threshold` dan tidak ada hal lain yang menggagalkan run |

447| 1 | Kasus mencetak skor di bawah threshold, file kasus gagal dimuat, tidak ada kasus yang ditemukan, run tidak dapat dimulai, direktori plugin tidak dipercaya dan `--trust-plugin` tidak diberikan, atau opsi tidak valid |447| 1 | Kasus mencetak skor di bawah threshold, file kasus gagal dimuat, tidak ada kasus yang ditemukan, run tidak dapat dimulai, atau run [berakhir karena error API](#runs-ended-on-an-api-error). Juga dikembalikan ketika direktori plugin tidak dipercaya dan `--trust-plugin` tidak diberikan, opsi tidak valid, atau hasil `--json` tidak dapat ditulis |

448| 2 | Run parsial: batas `--max-cost-usd` tercapai, atau kredensial Anda ditolak sebelum atau pada run pertama. `results.json` masih ditulis dengan `partial: true` dan alasannya |448| 2 | Run parsial: batas `--max-cost-usd` tercapai, atau kredensial Anda ditolak sebelum atau pada run pertama. `results.json` masih ditulis dengan `partial: true` dan alasannya |

449| 130 | Terputus. Hasil parsial ditulis |449| 130 | Terputus. Hasil parsial ditulis |

450| 143 | Dihentikan, seperti oleh timeout CI |450| 143 | Dihentikan, seperti oleh timeout CI |


503| `cases[].name` | Nama kasus |503| `cases[].name` | Nama kasus |

504| `cases[].aggregates.score` | Skor run dengan-arm rata-rata untuk kasus |504| `cases[].aggregates.score` | Skor run dengan-arm rata-rata untuk kasus |

505| `cases[].aggregates.delta` | Skor dengan-arm dikurangi skor tanpa-arm. Dihilangkan ketika kasus menjalankan satu arm atau arm tidak dapat dibandingkan |505| `cases[].aggregates.delta` | Skor dengan-arm dikurangi skor tanpa-arm. Dihilangkan ketika kasus menjalankan satu arm atau arm tidak dapat dibandingkan |

506| `cases[].arms.with[].error` | `null`, atau mengapa run berakhir secara abnormal, seperti `timed out after 300s`. Run yang dimulai tetapi berakhir buruk masih dinilai pada apa yang dihasilkannya, jadi error non-null tidak menyiratkan skor 0 |506| `cases[].arms.with[].error` | `null`, atau mengapa run berakhir secara abnormal, seperti `timed out after 300s`. Sebagian dari run ini masih dinilai pada apa yang dihasilkannya, jadi error non-null tidak menyiratkan skor 0. Run yang [berakhir karena error API](#runs-ended-on-an-api-error) mendapat skor 0 tanpa penilaian |

507| `cases[].arms.with[].aborted` | Hadir ketika [mock](#mock-mcp-servers) menghentikan run melalui `expect:`, `abort_when`, atau [anggaran panggilan agent-mock](#mock-call-budget-exceeded), dengan `server`, `tool`, dan `reason`. Run mendapat skor 0 dan `error` tetap `null` |507| `cases[].arms.with[].aborted` | Hadir ketika [mock](#mock-mcp-servers) menghentikan run melalui `expect:`, `abort_when`, atau [anggaran panggilan agent-mock](#mock-call-budget-exceeded), dengan `server`, `tool`, dan `reason`. Run mendapat skor 0 dan `error` tetap `null` |

508| `cases[].arms.with[].skippedPaidGraders` | `true` ketika ceiling biaya melewatkan grader hakim run ini, sehingga skornya tidak dapat dibandingkan |508| `cases[].arms.with[].skippedPaidGraders` | `true` ketika ceiling biaya melewatkan grader hakim run ini, sehingga skornya tidak dapat dibandingkan |

509| `costUsd`, `durationSeconds`, `claudeVersion` | Biaya perkiraan pada harga daftar termasuk panggilan hakim, detik dinding, dan versi Claude Code yang menjalankan suite |509| `costUsd`, `durationSeconds`, `claudeVersion` | Biaya perkiraan pada harga daftar termasuk panggilan hakim, detik dinding, dan versi Claude Code yang menjalankan suite |


724 724 

725Sebelum v2.1.283, `claude plugin eval` tidak memeriksa versi git, dan pada git yang lebih lama suite berjalan dengan program-program itu tetap aktif.725Sebelum v2.1.283, `claude plugin eval` tidak memeriksa versi git, dan pada git yang lebih lama suite berjalan dengan program-program itu tetap aktif.

726 726 

727<h3 id="cannot-be-evaluated-where-sessions-load-it">

728 "cannot be evaluated where sessions load it"

729</h3>

730 

731Anda menjalankan `claude plugin eval` di shell Anda dengan nama plugin yang diinstal dari marketplace yang Anda [tambahkan dari jalur lokal](/docs/id/plugins/loading#in-place-and-copied-plugins). Tidak ada sesi yang dapat memuat plugin dari marketplace tersebut saat ini, jadi perintah menolak dengan pesan ini dan keluar dengan kode 1.

732 

733```text theme={null}

734Error: formatter@my-marketplace cannot be evaluated where sessions load it: no session could load it now. Its marketplace is a folder whose catalog could not be read, or lists it no more. Check the marketplace with `claude plugin marketplace list`, or pass ./<dir> to evaluate a directory.

735```

736 

737Kalimat setelah `no session could load it now.` menyebutkan apa yang gagal.

738 

739Jalankan `claude plugin marketplace list` di shell Anda dan perbaiki apa yang disebutkan pesan tersebut. Misalnya, pulihkan direktori marketplace atau kembalikan entri plugin ke katalognya. Untuk mengevaluasi sumber plugin tanpa marketplace, berikan direktorinya sebagai target, seperti `claude plugin eval ./plugins/formatter`.

740 

727<h3 id="no-eval-cases-found">741<h3 id="no-eval-cases-found">

728 "No eval cases found"742 "No eval cases found"

729</h3>743</h3>


774 The run exits 1 but the results look fine788 The run exits 1 but the results look fine

775</h3>789</h3>

776 790 

777Default `--threshold` adalah 1.0, jadi perintah keluar 1 ketika kasus apa pun mencetak di bawah sempurna. Atur ambang yang cocok dengan skor yang Anda perlukan. Keluar 1 juga mencakup file kasus yang gagal dimuat, yang dilaporkan di stderr di atas tabel.791Ketika setiap kasus mencetak skor pada atau di atas `--threshold` dan perintah tetap keluar 1, sebuah baris di stderr menyebutkan penyebabnya, bahkan di bawah `--json`. Misalnya, file kasus gagal dimuat, atau run [berakhir dengan kesalahan API](#runs-ended-on-an-api-error). Untuk penyebab lainnya, lihat [exit code](#run-evals-in-ci).

792 

793Default `--threshold` adalah 1.0, jadi perintah keluar 1 ketika kasus apa pun mencetak di bawah sempurna. Atur ambang yang cocok dengan skor yang Anda perlukan.

778 794 

779<h3 id="json-output-path-must-end-in-json">795<h3 id="json-output-path-must-end-in-json">

780 `--json output path must end in .json`796 `--json output path must end in .json`


788 804 

789Grader itu dikecualikan dari skor dengan desain dalam run dua-arm, dan field `scored`-nya adalah `false`. Lihat [Bandingkan dengan baseline tanpa plugin](#compare-against-a-no-plugin-baseline).805Grader itu dikecualikan dari skor dengan desain dalam run dua-arm, dan field `scored`-nya adalah `false`. Lihat [Bandingkan dengan baseline tanpa plugin](#compare-against-a-no-plugin-baseline).

790 806 

807<h3 id="runs-ended-on-an-api-error">

808 "ended on an API error and scored 0 without grading"

809</h3>

810 

811Peringatan stderr ini berarti API menjawab permintaan terakhir dari setidaknya satu run dengan kesalahan HTTP, seperti rate limit atau batas penggunaan rencana. Run semacam itu mendapat skor 0 tanpa hasil grader, dan perintah keluar dengan kode bukan nol apa pun skor dan `--threshold`-nya.

812 

813Untuk memperbaikinya, temukan kesalahan setiap run yang terdampak dan selesaikan penyebab yang dilaporkannya, lalu jalankan suite lagi:

814 

815* **Tanpa `--json`**: kesalahan ada di akhir baris progres run, setelah `error:`

816* **Di bawah `--json`**: kesalahan ada di [hasil JSON](#json-result), pada `cases[].arms.with[].error` atau `cases[].arms.without[].error`

817 

818Hitungan tersebut juga mencakup run [baseline](#the-no-plugin-baseline). Skornya tidak pernah menentukan apakah suatu kasus lulus, sehingga setiap kasus dapat lulus sementara perintah tetap gagal. Dalam run dua-arm, `W/OUT` dan `Δ` kasus yang terdampak dicetak sebagai `—`. Untuk batas penggunaan atau rate limit, lihat [Runs fail with a usage-limit or rate-limit error partway through](#runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through).

819 

820Sebelum v2.1.299, run semacam itu dinilai berdasarkan apa yang telah dihasilkannya.

821 

791<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">822<h3 id="runs-fail-with-a-usage-limit-or-rate-limit-error-partway-through">

792 Runs fail with a usage-limit or rate-limit error partway through823 Runs fail with a usage-limit or rate-limit error partway through

793</h3>824</h3>

794 825 

795Jika akun Anda mencapai batas penggunaan rencana atau rate limit API saat suite berjalan, setiap run kemudian berakhir dengan kesalahan itu, dinilai pada apa yang dihasilkannya, dan biasanya mencetak 0. Suite masih selesai dan tidak ditandai `partial`, jadi hasilnya dapat terlihat seperti regresi. Periksa kolom `NOTES` atau `cases[].arms.with[].error` dalam JSON untuk pesan batas sebelum mempercayai skor, kemudian jalankan ulang setelah batas disetel ulang, dengan `--runs 1` atau filter `--case` jika Anda perlu tetap di bawahnya.826Run yang berakhir dengan kesalahan batas penggunaan atau rate limit [mendapat skor 0 tanpa penilaian](#runs-ended-on-an-api-error), dan perintah keluar dengan kode bukan nol. Suite masih selesai dan tidak ditandai `partial`. Jalankan ulang setelah batas disetel ulang, dengan `--runs 1` atau filter `--case` jika Anda perlu tetap di bawahnya.

796 827 

797<h3 id="mock-call-budget-exceeded">828<h3 id="mock-call-budget-exceeded">

798 "mock call budget exceeded"829 "mock call budget exceeded"

Details

22 Perintah claude plugin22 Perintah claude plugin

23</h2>23</h2>

24 24 

25Jalankan `claude plugin <subcommand>` dari shell atau skrip Anda, di luar sesi Claude Code. Subperintah ini menginstal dan mengelola plugin tanpa membuka panel [`/plugin`](#plugin-in-a-session).25Jalankan `claude plugin <subcommand>` dari shell Anda atau dari skrip, di luar sesi Claude Code. Subperintah ini menginstal dan mengelola plugin tanpa membuka panel [`/plugin`](#plugin-in-a-session).

26 26 

27`claude plugins` adalah alias untuk `claude plugin`.27`claude plugins` adalah alias untuk `claude plugin`.

28 28 

29Setiap subperintah berbagi kode keluar, argumen plugin, dan nilai cakupan ini:29Setiap subperintah menggunakan exit code, argumen plugin, dan nilai cakupan yang sama berikut ini:

30 30 

31* **Kode keluar**: `0` pada kesuksesan dan `1` pada kegagalan. `validate` menambahkan keluar `2` untuk kesalahan yang tidak terduga, dan `eval` menambahkan kode yang tercantum di [bagiannya](#plugin-eval).31* **Exit code**: `0` jika berhasil dan `1` jika gagal. `validate` menambahkan exit `2` untuk kesalahan yang tidak terduga, dan `eval` menambahkan kode yang tercantum di [bagiannya](#plugin-eval).

32* **Argumen plugin**: argumen `<plugin>` adalah plugin `name` atau `name@marketplace`. Ketika dua marketplace menawarkan nama yang sama, gunakan bentuk yang memenuhi syarat. `configure` hanya mengambil bentuk yang memenuhi syarat.32* **Argumen plugin**: argumen `<plugin>` adalah `name` plugin atau `name@marketplace`. Jika dua marketplace menawarkan nama yang sama, gunakan bentuk yang memenuhi syarat (qualified). `configure` hanya menerima bentuk yang memenuhi syarat.

33* **Cakupan**: `--scope` mengambil `user`, `project`, atau `local`, dan menamai file pengaturan yang ditulis perintah. `update` juga mengambil `managed`.33* **Cakupan**: `--scope` menerima `user`, `project`, atau `local`, dan menentukan file pengaturan yang ditulis oleh perintah tersebut. `update` juga menerima `managed`.

34 34 

35<h3 id="plugin-init">35<h3 id="plugin-init">

36 plugin init36 plugin init

37</h3>37</h3>

38 38 

39Rangka kerja plugin baru di `~/.claude/skills/<name>/`. Plugin ini dimuat dalam sesi berikutnya Anda sebagai `<name>@skills-dir` tanpa langkah instal.39Membuat kerangka plugin baru di `~/.claude/skills/<name>/`. Plugin ini dimuat pada sesi Anda berikutnya sebagai `<name>@skills-dir` tanpa langkah instalasi.

40 40 

41`new` adalah alias untuk `init`.41`new` adalah alias untuk `init`.

42 42 

43Untuk alur kerja buat, uji, dan edit yang dimulai dengan perintah ini, lihat [Buat plugin](/docs/id/plugins/create).43Untuk alur kerja membuat, menguji, dan mengedit yang dimulai dengan perintah ini, lihat [Membuat plugin](/docs/id/plugins/create).

44 44 

45```bash theme={null}45```bash theme={null}

46claude plugin init <name> [options]46claude plugin init <name> [options]

47```47```

48 48 

49`<name>` menjadi nama direktori di bawah `~/.claude/skills/` dan `name` plugin dalam manifestnya.49`<name>` menjadi nama direktori di bawah `~/.claude/skills/` dan `name` plugin di manifesnya.

50 50 

51Perintah ini tidak memiliki flag untuk lokasi lain. Untuk rangka kerja di dalam proyek, lihat [Buat plugin](/docs/id/plugins/create).51Perintah ini tidak memiliki flag untuk lokasi lain. Untuk membuat kerangka di dalam proyek, lihat [Membuat plugin](/docs/id/plugins/create).

52 52 

53| Flag | Deskripsi |53| Flag | Deskripsi |

54| :- | :- |54| :- | :- |

55| `--description <text>` | Deskripsi manifest |55| `--description <text>` | Deskripsi manifes |

56| `--author <name>` | Nama penulis. Default ke `git config user.name` |56| `--author <name>` | Nama penulis. Default-nya `git config user.name` |

57| `--author-email <email>` | Email penulis. Default ke `git config user.email` |57| `--author-email <email>` | Email penulis. Default-nya `git config user.email` |

58| `--with <components...>` | Juga rangka kerja file pemula untuk `skills`, `agents`, `hooks`, `mcp`, `lsp`, `output-style`, atau `channel` |58| `--with <components...>` | Juga membuat file awal untuk `skills`, `agents`, `hooks`, `mcp`, `lsp`, `output-style`, atau `channel` |

59| `-f, --force` | Timpa `.claude-plugin/` yang ada di target |59| `-f, --force` | Menimpa `.claude-plugin/` yang sudah ada di target |

60 60 

61Rangka kerja plugin dengan file skill dan hook pemula:61Buat kerangka plugin dengan file skill dan hook awal:

62 62 

63```bash theme={null}63```bash theme={null}

64claude plugin init my-helper --with skills hooks64claude plugin init my-helper --with skills hooks

65```65```

66 66 

67Claude Code memvalidasi apa yang ditulis dan mencetak `Created plugin "my-helper" at ~/.claude/skills/my-helper`, diikuti oleh id yang dimuat sebagai dan perintah `claude plugin disable` yang mematikannya.67Claude Code memvalidasi apa yang ditulisnya dan mencetak `Created plugin "my-helper" at ~/.claude/skills/my-helper`, diikuti oleh id yang digunakan saat dimuat dan perintah `claude plugin disable` yang menonaktifkannya.

68 68 

69Claude Code keluar `1` tanpa menulis ketika tidak dapat rangka kerja dengan aman, dan pesan menamai alasannya. Ini adalah alasan umum:69Claude Code keluar dengan `1` tanpa menulis apa pun jika tidak dapat membuat kerangka dengan aman, dan pesannya menyebutkan alasannya. Berikut alasan yang umum:

70 70 

71* Nilai `--with` yang tidak dikenal71* Nilai `--with` yang tidak dikenal

72* Rangka kerja yang ada di target tanpa `--force`72* Kerangka yang sudah ada di target tanpa `--force`

73* Pengaturan terkelola yang memblokir plugin direktori skills73* Pengaturan terkelola yang memblokir plugin direktori skills

74 74 

75<h3 id="plugin-install">75<h3 id="plugin-install">

76 plugin install76 plugin install

77</h3>77</h3>

78 78 

79Instal plugin dari salah satu marketplace Anda. `i` adalah alias untuk `install`.79Menginstal plugin dari salah satu marketplace Anda. `i` adalah alias untuk `install`.

80 80 

81```bash theme={null}81```bash theme={null}

82claude plugin install <plugin> [options]82claude plugin install <plugin> [options]

83```83```

84 84 

85Sebagian besar plugin diinstal tanpa prompt. Untuk plugin yang entri marketplacenya [menjalankan perintah untuk menginstalnya](/docs/id/plugins/host-marketplace) atau [menetapkan `headersHelper` untuk downloadnya](/docs/id/plugins/host-marketplace#how-users-accept-a-headershelper-command), Claude Code terlebih dahulu mencetak perintah dan menanyakan `Run this command now? [y/N]`.85Sebagian besar plugin terinstal tanpa permintaan konfirmasi. Untuk plugin yang entri marketplace-nya [menjalankan perintah untuk menginstalnya](/docs/id/plugins/host-marketplace) atau [menetapkan `headersHelper` untuk unduhannya](/docs/id/plugins/host-marketplace#how-users-accept-a-headershelper-command), Claude Code terlebih dahulu mencetak perintah tersebut dan bertanya `Run this command now? [y/N]`.

86 86 

87| Flag | Deskripsi |87| Flag | Deskripsi |

88| :- | :- |88| :- | :- |

89| `-s, --scope <scope>` | Cakupan instalasi: `user`, `project`, atau `local`. Default ke `user` |89| `-s, --scope <scope>` | Cakupan instalasi: `user`, `project`, atau `local`. Default-nya `user` |

90| `--config <key=value>` | Tetapkan opsi [`userConfig`](/docs/id/plugins/manifest-reference) yang dideklarasikan manifest plugin. Ulangi flag untuk setiap opsi. Kunci yang ditulis `<server>.<key>` menetapkan pengaturan yang dideklarasikan [server MCP yang dibundel](/docs/id/plugins/components#include-a-packaged-mcpb-server) dalam `user_config`-nya sendiri, untuk file bundle yang dikirim di dalam plugin. Bentuk `<server>.<key>` memerlukan Claude Code v2.1.285 atau lebih baru |90| `--config <key=value>` | Menetapkan opsi [`userConfig`](/docs/id/plugins/manifest-reference) yang dideklarasikan manifes plugin. Ulangi flag untuk setiap opsi. Kunci yang ditulis `<server>.<key>` menetapkan pengaturan yang dideklarasikan oleh [server MCP yang dibundel](/docs/id/plugins/components#include-a-packaged-mcpb-server) dalam `user_config`-nya sendiri, untuk file bundel yang dikirimkan di dalam plugin. Bentuk `<server>.<key>` memerlukan Claude Code v2.1.285 atau yang lebih baru |

91| `-y, --yes` | Terima perintah instal yang ditampilkan tanpa prompt `Run this command now?`. Diabaikan ketika perintah berjalan di dalam sesi Claude Code, seperti dari tool Bash atau hook. Memerlukan Claude Code v2.1.229 atau lebih baru |91| `-y, --yes` | Menerima perintah instalasi yang ditampilkan tanpa permintaan `Run this command now?`. Diabaikan ketika perintah berjalan di dalam sesi Claude Code, seperti dari tool Bash atau hook. Memerlukan Claude Code v2.1.229 atau yang lebih baru |

92| `--accept-command <sha256>` | Terima perintah instal yang ditampilkan yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Lihat [Terima perintah instal yang ditampilkan](#accept-a-displayed-install-command). Memerlukan Claude Code v2.1.271 atau lebih baru |92| `--accept-command <sha256>` | Menerima perintah instalasi yang ditampilkan yang `sha256`-nya dilaporkan oleh [eksekusi `--json`](#plugin-json-result) sebelumnya di `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Lihat [Menerima perintah instalasi yang ditampilkan](#accept-a-displayed-install-command). Memerlukan Claude Code v2.1.271 atau yang lebih baru |

93| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [Format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |93| `--json` | Mencetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [Format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau yang lebih baru |

94| `--marketplace <source>` | Instal `<plugin>`, yang diberikan dengan nama telanjangnya, dari marketplace di `<source>`, dengan menambahkan marketplace tersebut terlebih dahulu jika Anda belum menambahkannya. Lihat [Tambahkan marketplace dan instal dalam satu perintah](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command). Memerlukan Claude Code v2.1.292 atau lebih baru |94| `--marketplace <source>` | Menginstal `<plugin>`, yang diberikan dengan nama polosnya, dari marketplace di `<source>`, dengan menambahkan marketplace tersebut terlebih dahulu jika Anda belum menambahkannya. Lihat [Menambahkan marketplace dan menginstal dalam satu perintah](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command). Memerlukan Claude Code v2.1.292 atau yang lebih baru |

95 95 

96Jalankan `claude plugin install --help` di shell Anda untuk melihat setiap opsi yang didukung versi Anda.96Jalankan `claude plugin install --help` di shell Anda untuk melihat setiap opsi yang didukung versi Anda.

97 97 

98Lewatkan `-y` dari terminal Anda sendiri untuk menerima perintah yang ditampilkan tanpa prompt. Berikut yang terjadi tanpa TTY dan ketika Claude menjalankan perintah:98Berikan `-y` dari terminal Anda sendiri untuk menerima perintah yang ditampilkan tanpa permintaan konfirmasi. Berikut yang terjadi tanpa TTY dan ketika Claude menjalankan perintah tersebut:

99 99 

100* **stdin atau stdout bukan TTY, dan Anda tidak melewatkan `-y` atau `--accept-command`**: instalasi ditolak. Output mengatakan perintah hanya ditampilkan, dan kode keluar adalah `1`100* **stdin atau stdout bukan TTY, dan Anda tidak memberikan `-y` maupun `--accept-command`**: instalasi ditolak. Output menyatakan bahwa perintah hanya ditampilkan, dan exit code-nya `1`

101* **Claude menjalankan perintah melalui tool Bash-nya**: `-y` diabaikan. Jalankan perintah dari terminal Anda sendiri101* **Claude menjalankan perintah melalui tool Bash-nya**: `-y` diabaikan. Jalankan perintah dari terminal Anda sendiri sebagai gantinya

102 102 

103Instal plugin untuk semua orang yang mengkloning proyek:103Instal plugin untuk semua orang yang meng-clone proyek:

104 104 

105```bash theme={null}105```bash theme={null}

106claude plugin install formatter@my-marketplace --scope project106claude plugin install formatter@my-marketplace --scope project

107```107```

108 108 

109Claude Code mencetak `Successfully installed plugin: formatter@my-marketplace (scope: project)`. Ketika tidak ada yang baru diinstal, output mengatakan mengapa:109Claude Code mencetak `Successfully installed plugin: formatter@my-marketplace (scope: project)`. Jika tidak ada yang baru terinstal, output menjelaskan alasannya:

110 110 

111* **Sudah diinstal di cakupan itu**: output adalah `Plugin "formatter@my-marketplace" is already installed (scope: project)` dan kode keluar adalah `0`111* **Sudah terinstal di cakupan tersebut**: outputnya `Plugin "formatter@my-marketplace" is already installed (scope: project)` dan exit code-nya `0`

112* **Anda menolak prompt sumber perintah**: output adalah `Aborted.` dan kode keluar adalah `1`112* **Anda menolak permintaan konfirmasi command-source**: outputnya `Aborted.` dan exit code-nya `1`

113* **Anda menolak prompt `headersHelper`, atau tidak dapat dikonfirmasi tanpa TTY**: output adalah `Aborted — the command was not run.` dan kode keluar adalah `1`113* **Anda menolak permintaan konfirmasi `headersHelper`, atau permintaan tersebut tidak dapat dikonfirmasi tanpa TTY**: outputnya `Aborted — the command was not run.` dan exit code-nya `1`

114 114 

115<h4 id="plugin-json-result">115<h4 id="plugin-json-result">

116 Format hasil JSON116 Format hasil JSON

117</h4>117</h4>

118 118 

119Ketika Anda melewatkan `--json` ke `plugin install`, baris terakhir stdout adalah satu objek JSON. Parsing hanya baris itu, karena Claude Code mencetak perintah apa pun yang dideklarasikan marketplace sebelumnya.119Ketika Anda memberikan `--json` ke `plugin install`, baris terakhir stdout adalah satu objek JSON. Uraikan hanya baris tersebut, karena Claude Code mencetak setiap perintah yang dideklarasikan marketplace sebelumnya.

120 120 

121Tiga field selalu ada:121Tiga field selalu ada:

122 122 

123* `command`: subperintah yang berjalan, seperti `install`123* `command`: subperintah yang dijalankan, seperti `install`

124* `outcome`: `ok` atau `failed`124* `outcome`: `ok` atau `failed`

125* `message`: deskripsi hasil yang dapat dibaca manusia125* `message`: deskripsi hasil yang dapat dibaca manusia

126 126 

127Field lain, seperti `pluginId`, `scope`, dan `failureCode`, muncul hanya ketika berlaku.127Field lain, seperti `pluginId`, `scope`, dan `failureCode`, hanya muncul jika relevan.

128 128 

129Opsi `--json` pada `plugin uninstall`, `plugin update`, `plugin enable`, dan `plugin disable` mencetak objek yang sama dengan field milik subperintah tersebut.129Opsi `--json` pada `plugin uninstall`, `plugin update`, `plugin enable`, dan `plugin disable` mencetak objek yang sama dengan field milik subperintah tersebut.

130 130 

131Kesalahan penggunaan, seperti `--scope` yang tidak valid, tidak mencetak baris hasil dan keluar `1` dengan alasan di stderr.131Kesalahan penggunaan, seperti `--scope` yang tidak valid, tidak mencetak baris hasil dan keluar dengan `1` dengan alasannya di stderr.

132 132 

133<h4 id="json-result-for-marketplace-commands">133<h4 id="json-result-for-marketplace-commands">

134 Hasil JSON untuk perintah marketplace134 Hasil JSON untuk perintah marketplace


140{"command":"marketplace-remove","outcome":"ok","marketplace":"your-marketplace","message":"Successfully removed marketplace: your-marketplace"}140{"command":"marketplace-remove","outcome":"ok","marketplace":"your-marketplace","message":"Successfully removed marketplace: your-marketplace"}

141```141```

142 142 

143Nilai `command` adalah `marketplace-add`, `marketplace-remove`, atau `marketplace-update`. Field di bawah ini muncul hanya ketika berlaku:143Nilai `command` adalah `marketplace-add`, `marketplace-remove`, atau `marketplace-update`. Field di bawah ini hanya muncul jika relevan:

144 144 

145* `marketplace`: nama marketplace yang ditindaklanjuti perintah145* `marketplace`: nama marketplace yang ditindaklanjuti oleh perintah

146* `failureCode`: kode untuk alasan perintah gagal, seperti `invalid_source`146* `failureCode`: kode yang menjelaskan mengapa perintah gagal, seperti `invalid_source`

147 147 

148`plugin marketplace add` dan `plugin marketplace remove` dapat tidak mencetak baris hasil ketika argumennya adalah [nama yang dicadangkan](/docs/id/plugins/marketplace-reference#reserved-names) `anthropic-plugin-directory`, jadi periksa kode keluar untuk nama tersebut.148`plugin marketplace add` dan `plugin marketplace remove` dapat tidak mencetak baris hasil ketika argumennya adalah [nama yang dicadangkan](/docs/id/plugins/marketplace-reference#reserved-names) `anthropic-plugin-directory`, jadi periksa exit code untuk nama tersebut.

149 149 

150<h4 id="accept-a-displayed-install-command">150<h4 id="accept-a-displayed-install-command">

151 Terima perintah instal yang ditampilkan151 Menerima perintah instalasi yang ditampilkan

152</h4>152</h4>

153 153 

154Ketika run `--json` menampilkan perintah yang dideklarasikan marketplace dan tidak menjalankannya, hasil `failed` juga membawa objek `shownCommand`. Fieldnya mencakup perintah seperti yang ditampilkan, plugin yang dimilikinya, dan `sha256` perintah.154Ketika eksekusi `--json` menampilkan perintah yang dideklarasikan marketplace dan tidak menjalankannya, hasil `failed` juga membawa objek `shownCommand`. Field-nya mencakup perintah sebagaimana ditampilkan, plugin pemiliknya, dan `sha256` dari perintah tersebut.

155 155 

156Untuk menerima perintah yang tepat itu, jalankan kembali dengan `sha256` itu sebagai `--accept-command` dari terminal Anda sendiri, karena flag tidak memiliki efek di dalam sesi Claude Code. Memerlukan Claude Code v2.1.271 atau lebih baru.156Untuk menerima tepat perintah tersebut, jalankan ulang dengan `sha256` tersebut sebagai `--accept-command` dari terminal Anda sendiri, karena flag ini tidak berpengaruh di dalam sesi Claude Code. Memerlukan Claude Code v2.1.271 atau yang lebih baru.

157 157 

158`sha256` dihitung sebagai penerimaan untuk perintah, plugin, dan katalog marketplace yang tepat. Jika salah satu dari mereka berubah sejak perintah ditampilkan, Claude Code tidak menerima `sha256` dan menampilkan perintah lagi. Perubahan yang refresh marketplace run sendiri ambil juga dihitung sebagai perubahan seperti itu.158`sha256` dihitung sebagai penerimaan untuk tepat perintah, plugin, dan katalog marketplace tersebut. Jika salah satunya berubah sejak perintah ditampilkan, Claude Code tidak menerima `sha256` tersebut dan menampilkan perintahnya lagi. Perubahan yang diambil oleh penyegaran marketplace dari eksekusi itu sendiri juga dihitung sebagai perubahan semacam itu.

159 159 

160Jika `shownCommand.acceptCommandMatched` adalah `false`, `sha256` yang Anda lewatkan tidak cocok dengan perintah yang sekarang ditampilkan. Tinjau perintah itu sebelum menjalankan kembali dengan `sha256`-nya.160Jika `shownCommand.acceptCommandMatched` bernilai `false`, `sha256` yang Anda berikan tidak cocok dengan perintah yang sekarang ditampilkan. Tinjau perintah tersebut sebelum menjalankan ulang dengan `sha256`-nya.

161 161 

162<h3 id="plugin-uninstall">162<h3 id="plugin-uninstall">

163 plugin uninstall163 plugin uninstall

164</h3>164</h3>

165 165 

166Hapus plugin yang diinstal dari satu cakupan. `remove` dan `rm` adalah alias untuk `uninstall`.166Menghapus plugin yang terinstal dari satu cakupan. `remove` dan `rm` adalah alias untuk `uninstall`.

167 167 

168```bash theme={null}168```bash theme={null}

169claude plugin uninstall <plugin> [options]169claude plugin uninstall <plugin> [options]


171 171 

172| Flag | Deskripsi |172| Flag | Deskripsi |

173| :- | :- |173| :- | :- |

174| `-s, --scope <scope>` | Copot dari cakupan: `user`, `project`, atau `local`. Default ke `user` |174| `-s, --scope <scope>` | Menghapus instalasi dari cakupan: `user`, `project`, atau `local`. Default-nya `user` |

175| `--keep-data` | Pertahankan direktori data persisten plugin, `~/.claude/plugins/data/<id>/` |175| `--keep-data` | Mempertahankan direktori data persisten plugin, `~/.claude/plugins/data/<id>/` |

176| `--prune` | Juga hapus [dependensi](/docs/id/plugins/dependencies) yang diinstal otomatis yang tidak diperlukan plugin yang tersisa |176| `--prune` | Juga menghapus [dependensi](/docs/id/plugins/dependencies) yang diinstal otomatis yang tidak lagi dibutuhkan oleh plugin yang tersisa |

177| `-y, --yes` | Lewati prompt konfirmasi `--prune`. Diperlukan dengan `--prune` ketika stdin atau stdout bukan TTY |177| `-y, --yes` | Melewati permintaan konfirmasi `--prune`. Wajib bersama `--prune` ketika stdin atau stdout bukan TTY |

178| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Tidak dapat digabungkan dengan `--prune`. Memerlukan Claude Code v2.1.268 atau lebih baru |178| `--json` | Mencetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama dengan `plugin install --json`](#plugin-json-result). Tidak dapat digabungkan dengan `--prune`. Memerlukan Claude Code v2.1.268 atau yang lebih baru |

179 179 

180Copot plugin dari cakupan proyek:180Hapus instalasi plugin dari cakupan project:

181 181 

182```bash theme={null}182```bash theme={null}

183claude plugin uninstall formatter@my-marketplace --scope project183claude plugin uninstall formatter@my-marketplace --scope project

184```184```

185 185 

186Claude Code mencetak `Successfully uninstalled plugin: formatter (scope: project)`. Ketika plugin tidak diinstal di cakupan itu, perintah mencetak baris yang dimulai `Failed to uninstall plugin "formatter@my-marketplace":` dan keluar `1`.186Claude Code mencetak `Successfully uninstalled plugin: formatter (scope: project)`. Jika plugin tidak terinstal di cakupan tersebut, perintah mencetak baris yang diawali `Failed to uninstall plugin "formatter@my-marketplace":` dan keluar dengan `1`.

187 187 

188Jika baris kegagalan berlanjut dengan `"formatter" was not uninstalled:` dan menyebutkan file pengaturan, Claude Code tidak dapat mengonfirmasi bahwa pengaturan cakupan tidak lagi menghidupkan plugin, jadi plugin tetap diinstal dengan semua yang disimpannya. Dengan `--json`, hasil membawa `failureCode: "settings_still_on"`. Pemeriksaan pengaturan ini memerlukan Claude Code v2.1.282 atau lebih baru.188Jika baris kegagalan berlanjut dengan `"formatter" was not uninstalled:` dan menyebutkan file pengaturan, Claude Code tidak dapat memastikan bahwa pengaturan cakupan tersebut tidak lagi mengaktifkan plugin, sehingga plugin tetap terinstal beserta semua yang disimpannya. Dengan `--json`, hasilnya membawa `failureCode: "settings_still_on"`. Pemeriksaan pengaturan ini memerlukan Claude Code v2.1.282 atau yang lebih baru.

189 189 

190<h4 id="what-an-uninstall-deletes-and-keeps">190<h4 id="what-an-uninstall-deletes-and-keeps">

191 Apa yang dihapus dan disimpan uninstall191 Apa yang dihapus dan dipertahankan oleh penghapusan instalasi

192</h4>192</h4>

193 193 

194Ketika Anda mencopot plugin dari cakupan terakhir yang diinstal, Claude Code juga menghapus [opsi dan rahasia](/docs/id/plugins/manifest-reference#user-configuration) plugin yang disimpan dan direktori datanya, `~/.claude/plugins/data/<id>/`. Ada tiga pengecualian:194Ketika Anda menghapus instalasi plugin dari cakupan terakhir tempat plugin tersebut terinstal, Claude Code juga menghapus [opsi dan rahasia](/docs/id/plugins/manifest-reference#user-configuration) yang tersimpan milik plugin serta direktori datanya, `~/.claude/plugins/data/<id>/`. Ada tiga pengecualian:

195 195 

196* Dengan `--keep-data`, direktori data tetap196* Dengan `--keep-data`, direktori data tetap ada

197* Ketika plugin yang diinstal lain menggunakan folder yang sama, seperti yang ID-nya berbeda dari yang ini hanya dalam huruf besar, direktori data tetap197* Ketika plugin lain yang terinstal menggunakan folder yang sama, seperti plugin yang ID-nya berbeda dari plugin ini hanya dalam huruf besar/kecil, direktori data tetap ada

198* Ketika Claude Code tidak dapat membaca daftar plugin yang diinstal kembali setelah menghapus plugin dari cakupan itu, opsi, rahasia, dan direktori data semuanya tetap, karena plugin mungkin masih diinstal di cakupan lain. Uninstall masih berhasil. Pesan mencantumkan apa yang tetap dan cara menghapusnya, dan dengan `--json` hasil membawa `savedKept: "install_records_unreadable"`198* Ketika Claude Code tidak dapat membaca kembali daftar plugin yang terinstal setelah menghapus plugin dari cakupan tersebut, opsi, rahasia, dan direktori data semuanya tetap ada, karena plugin mungkin masih terinstal di cakupan lain. Penghapusan instalasi tetap berhasil. Pesannya mencantumkan apa yang tetap ada dan cara menghapusnya, dan dengan `--json` hasilnya membawa `savedKept: "install_records_unreadable"`

199 199 

200Dengan `--json`, `keptData` melaporkan apakah direktori tetap, dan `/plugin` menunjukkan `· data preserved` ketika itu terjadi. Untuk direktori yang tetap tanpa `--keep-data`, pelaporan ini memerlukan Claude Code v2.1.281 atau lebih baru. Field `savedKept` memerlukan Claude Code v2.1.282 atau lebih baru.200Dengan `--json`, `keptData` melaporkan apakah direktori tetap ada, dan `/plugin` menampilkan `· data preserved` jika demikian. Untuk direktori yang tetap ada tanpa `--keep-data`, pelaporan ini memerlukan Claude Code v2.1.281 atau yang lebih baru. Field `savedKept` memerlukan Claude Code v2.1.282 atau yang lebih baru.

201 201 

202<h3 id="plugin-enable">202<h3 id="plugin-enable">

203 plugin enable203 plugin enable

204</h3>204</h3>

205 205 

206Aktifkan plugin yang dinonaktifkan. Untuk [plugin yang disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins), lewatkan `<name>@synced` sebagai plugin.206Mengaktifkan plugin yang dinonaktifkan. Untuk [plugin yang disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins), berikan `<name>@synced` sebagai plugin.

207 207 

208```bash theme={null}208```bash theme={null}

209claude plugin enable <plugin> [options]209claude plugin enable <plugin> [options]


211 211 

212| Flag | Deskripsi |212| Flag | Deskripsi |

213| :- | :- |213| :- | :- |

214| `-s, --scope <scope>` | Cakupan untuk diaktifkan: `user`, `project`, atau `local`. Terdeteksi otomatis ketika dihilangkan |214| `-s, --scope <scope>` | Cakupan tempat mengaktifkan: `user`, `project`, atau `local`. Dideteksi otomatis jika dihilangkan |

215| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |215| `--json` | Mencetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama dengan `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau yang lebih baru |

216 216 

217Tanpa `--scope`, perintah memeriksa file pengaturan Anda dalam urutan lokal, proyek, pengguna, dan menggunakan cakupan pertama yang menyebutkan plugin.217Tanpa `--scope`, perintah memeriksa file pengaturan Anda dengan urutan local, project, user, dan menggunakan cakupan pertama yang menyebutkan plugin tersebut.

218 218 

219Jika Anda melewatkan `--scope` di mana plugin tidak dideklarasikan, perintah menulis override atau gagal:219Jika Anda memberikan `--scope` tempat plugin tidak dideklarasikan, perintah akan menulis override atau gagal:

220 220 

221* **Cakupan yang [diutamakan](/docs/id/plugins/loading) di atas yang mendeklarasikan**: Claude Code menulis override di cakupan yang Anda lewatkan. Misalnya, `claude plugin disable formatter --scope local` mematikan plugin yang diaktifkan proyek hanya untuk Anda221* **Cakupan yang [diutamakan](/docs/id/plugins/loading) daripada cakupan yang mendeklarasikan**: Claude Code menulis override di cakupan yang Anda berikan. Misalnya, `claude plugin disable formatter --scope local` menonaktifkan plugin yang diaktifkan di project hanya untuk Anda

222* **Cakupan lain**: perintah gagal dengan `Plugin "formatter" is installed at project scope, not user. Use --scope project or omit --scope to auto-detect.`222* **Cakupan lainnya**: perintah gagal dengan `Plugin "formatter" is installed at project scope, not user. Use --scope project or omit --scope to auto-detect.`

223 223 

224Jika plugin sudah diaktifkan di cakupan yang diselesaikan, perintah mencetak `Plugin "formatter" is already enabled` dan keluar `1`. Dengan `--json`, hasil memiliki `"failureCode": "already_in_goal_state"` dan `"alreadyInGoalState": true`, jadi skrip dapat memperlakukan kasus itu sebagai kesuksesan.224Jika plugin sudah diaktifkan di cakupan yang ditentukan, perintah mencetak `Plugin "formatter" is already enabled` dan keluar dengan `1`. Dengan `--json`, hasilnya memiliki `"failureCode": "already_in_goal_state"` dan `"alreadyInGoalState": true`, sehingga skrip dapat memperlakukan kasus tersebut sebagai keberhasilan.

225 225 

226Ketika plugin mendeklarasikan [dependensi](/docs/id/plugins/dependencies), Claude Code juga mengaktifkannya. Perintah gagal dalam kasus ini:226Ketika plugin mendeklarasikan [dependensi](/docs/id/plugins/dependencies), Claude Code juga mengaktifkannya. Perintah gagal dalam kasus-kasus berikut:

227 227 

228* **Dependensi tidak diinstal**: aktifkan gagal dan mencetak perintah `claude plugin install` untuk setiap dependensi yang hilang228* **Dependensi tidak terinstal**: pengaktifan gagal dan mencetak perintah `claude plugin install` untuk setiap dependensi yang hilang

229* **Dependensi diblokir oleh kebijakan plugin organisasi Anda**: aktifkan gagal dan menamai dependensi yang diblokir229* **Dependensi diblokir oleh kebijakan plugin organisasi Anda**: pengaktifan gagal dan menyebutkan dependensi yang diblokir

230* **Dependensi diatur ke `false` di cakupan dengan prioritas lebih tinggi dari cakupan target**: aktifkan gagal. Aktifkan dependensi di cakupan itu, atau lewatkan `--scope` untuk menulis di sana230* **Dependensi diatur ke `false` di cakupan dengan prioritas lebih tinggi daripada cakupan target**: pengaktifan gagal. Aktifkan dependensi di cakupan tersebut, atau berikan `--scope` untuk menulis di sana

231 231 

232Aktifkan kembali plugin di mana pun dideklarasikan:232Aktifkan kembali plugin di mana pun plugin tersebut dideklarasikan:

233 233 

234```bash theme={null}234```bash theme={null}

235claude plugin enable formatter235claude plugin enable formatter

236```236```

237 237 

238Claude Code mencetak `Successfully enabled plugin: formatter (scope: project)`, menamai cakupan yang terdeteksi.238Claude Code mencetak `Successfully enabled plugin: formatter (scope: project)`, dengan menyebutkan cakupan yang terdeteksi.

239 239 

240<h3 id="plugin-disable">240<h3 id="plugin-disable">

241 plugin disable241 plugin disable

242</h3>242</h3>

243 243 

244Nonaktifkan plugin tanpa mencopot. Untuk [plugin yang disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins), lewatkan `<name>@synced` sebagai plugin.244Menonaktifkan plugin tanpa menghapus instalasinya. Untuk [plugin yang disinkronkan dari claude.ai](/docs/id/plugins/loading#synced-plugins), berikan `<name>@synced` sebagai plugin.

245 245 

246```bash theme={null}246```bash theme={null}

247claude plugin disable [plugin] [options]247claude plugin disable [plugin] [options]


249 249 

250| Flag | Deskripsi |250| Flag | Deskripsi |

251| :- | :- |251| :- | :- |

252| `-a, --all` | Nonaktifkan setiap plugin yang diaktifkan. Tidak dapat digabungkan dengan nama plugin atau `--scope` |252| `-a, --all` | Menonaktifkan setiap plugin yang aktif. Tidak dapat digabungkan dengan nama plugin atau `--scope` |

253| `-s, --scope <scope>` | Cakupan untuk dinonaktifkan: `user`, `project`, atau `local`. Terdeteksi otomatis ketika dihilangkan |253| `-s, --scope <scope>` | Cakupan tempat menonaktifkan: `user`, `project`, atau `local`. Dideteksi otomatis jika dihilangkan |

254| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |254| `--json` | Mencetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama dengan `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau yang lebih baru |

255 255 

256Tanpa `--scope`, cakupan terdeteksi otomatis dalam urutan lokal, proyek, pengguna yang sama seperti [`plugin enable`](#plugin-enable).256Tanpa `--scope`, cakupan dideteksi otomatis dengan urutan local, project, user yang sama seperti [`plugin enable`](#plugin-enable).

257 257 

258Jika Anda tidak melewatkan nama plugin atau `--all`, Claude Code mencetak `Please specify a plugin name or use --all to disable all plugins` dan keluar `1`. Menonaktifkan plugin yang sudah dinonaktifkan mencetak `Plugin "formatter" is already disabled` dan keluar `1`, seperti yang dilakukan [`plugin enable`](#plugin-enable) untuk plugin yang sudah diaktifkan.258Jika Anda tidak memberikan nama plugin maupun `--all`, Claude Code mencetak `Please specify a plugin name or use --all to disable all plugins` dan keluar dengan `1`. Menonaktifkan plugin yang sudah dinonaktifkan mencetak `Plugin "formatter" is already disabled` dan keluar dengan `1`, sama seperti yang dilakukan [`plugin enable`](#plugin-enable) untuk plugin yang sudah diaktifkan.

259 259 

260Perintah gagal untuk plugin yang masih diperlukan:260Perintah gagal untuk plugin yang masih dibutuhkan:

261 261 

262* **Plugin yang diaktifkan lain [bergantung pada](/docs/id/plugins/dependencies) itu**: perintah gagal dan menamai dependennya untuk dinonaktifkan terlebih dahulu262* **Plugin aktif lain [bergantung pada](/docs/id/plugins/dependencies) plugin tersebut**: perintah gagal dan menyebutkan plugin dependen yang harus dinonaktifkan terlebih dahulu

263* **Organisasi Anda memerlukannya sebagai plugin yang disinkronkan**: perintah gagal dan tidak menyimpan apa pun263* **Organisasi Anda mewajibkannya sebagai plugin yang disinkronkan**: perintah gagal dan tidak menyimpan apa pun

264 264 

265Nonaktifkan satu plugin:265Nonaktifkan satu plugin:

266 266 


274 plugin update274 plugin update

275</h3>275</h3>

276 276 

277Perbarui plugin ke versi terbaru yang ditawarkan marketplacenya. Versi baru dimuat dalam sesi berikutnya Anda, atau setelah Anda menjalankan `/reload-plugins` di sesi yang sedang berjalan.277Memperbarui plugin ke versi terbaru yang ditawarkan marketplace-nya. Versi baru dimuat pada sesi Anda berikutnya, atau setelah Anda menjalankan `/reload-plugins` di sesi yang sedang berjalan.

278 278 

279```bash theme={null}279```bash theme={null}

280claude plugin update <plugin> [options]280claude plugin update <plugin> [options]


282 282 

283| Flag | Deskripsi |283| Flag | Deskripsi |

284| :- | :- |284| :- | :- |

285| `-s, --scope <scope>` | Cakupan untuk diperbarui: `user`, `project`, `local`, atau `managed`. Terdeteksi otomatis ketika dihilangkan |285| `-s, --scope <scope>` | Cakupan yang diperbarui: `user`, `project`, `local`, atau `managed`. Dideteksi otomatis jika dihilangkan |

286| `-y, --yes` | Terima perintah instal yang berubah dari plugin [command-source](/docs/id/plugins/host-marketplace), tanpa prompt. Diperlukan ketika stdin atau stdout bukan TTY, kecuali Anda melewatkan `--accept-command`. Memerlukan Claude Code v2.1.229 atau lebih baru |286| `-y, --yes` | Menerima perintah instalasi yang berubah dari plugin [command-source](/docs/id/plugins/host-marketplace), tanpa permintaan konfirmasi. Wajib ketika stdin atau stdout bukan TTY, kecuali Anda memberikan `--accept-command`. Memerlukan Claude Code v2.1.229 atau yang lebih baru |

287| `--accept-command <sha256>` | Terima perintah yang dideklarasikan marketplace yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Memerlukan Claude Code v2.1.271 atau lebih baru |287| `--accept-command <sha256>` | Menerima perintah yang dideklarasikan marketplace yang `sha256`-nya dilaporkan oleh [eksekusi `--json`](#plugin-json-result) sebelumnya di `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Memerlukan Claude Code v2.1.271 atau yang lebih baru |

288| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama seperti `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |288| `--json` | Mencetak hasil sebagai satu objek JSON pada baris terakhir stdout, dalam [format yang sama dengan `plugin install --json`](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau yang lebih baru |

289 289 

290Perbarui plugin:290Perbarui plugin:

291 291 


293claude plugin update formatter@my-marketplace293claude plugin update formatter@my-marketplace

294```294```

295 295 

296Claude Code mencetak `Checking for updates for plugin "formatter@my-marketplace"…`, kemudian hasilnya. Ketika tidak ada yang lebih baru, mencetak `formatter is already at the latest version (1.0.0).` dan keluar `0`, kecuali jika perintah [mencoba ulang instalasi dependensi plugin](#retry-an-unfinished-dependency-install) dan instalasi tersebut gagal.296Claude Code mencetak `Checking for updates for plugin "formatter@my-marketplace"…`, lalu hasilnya. Jika tidak ada yang lebih baru, Claude Code mencetak `formatter is already at the latest version (1.0.0).` dan keluar dengan `0`, kecuali jika Claude Code [mencoba ulang instalasi dependensi plugin](#retry-an-unfinished-dependency-install) dan instalasi tersebut gagal.

297 297 

298<h4 id="which-scope-the-command-updates">298<h4 id="which-scope-the-command-updates">

299 Cakupan yang diperbarui perintah299 Cakupan mana yang diperbarui perintah

300</h4>300</h4>

301 301 

302Jika Anda menghilangkan `--scope`, perintah memperbarui plugin di cakupan paling spesifik yang diinstal untuk proyek saat ini, memeriksa lokal, proyek, pengguna, kemudian terkelola.302Jika Anda menghilangkan `--scope`, perintah memperbarui plugin di cakupan paling spesifik tempat plugin tersebut terinstal untuk proyek Anda saat ini, dengan memeriksa local, project, user, lalu managed.

303 303 

304Sebelum v2.1.281, perintah menggunakan `user` ketika Anda menghilangkan `--scope`, jadi memperbarui plugin yang diinstal hanya di cakupan proyek atau lokal gagal dengan `Plugin "<name>" is not installed at scope user`. Pada versi itu, lewatkan `--scope`.304Sebelum v2.1.281, perintah menggunakan `user` ketika Anda menghilangkan `--scope`, sehingga memperbarui plugin yang hanya terinstal di cakupan project atau local gagal dengan `Plugin "<name>" is not installed at scope user`. Pada versi tersebut, berikan `--scope`.

305 305 

306`managed` adalah satu-satunya cakupan yang dapat Anda perbarui tetapi tidak instal. Untuk plugin yang diinstal admin, lihat [Kelola plugin untuk organisasi Anda](/docs/id/plugins/org).306`managed` adalah satu-satunya cakupan yang dapat Anda perbarui tetapi tidak dapat menjadi tujuan instalasi. Untuk plugin yang diinstal admin, lihat [Mengelola plugin untuk organisasi Anda](/docs/id/plugins/org).

307 307 

308<h4 id="update-by-bare-name">308<h4 id="update-by-bare-name">

309 Memperbarui dengan nama telanjang309 Memperbarui dengan nama polos

310</h4>310</h4>

311 311 

312Anda dapat melewatkan nama plugin telanjang, yang dicocokkan perintah terhadap plugin yang diinstal. Ketika plugin yang diinstal dari marketplace berbeda berbagi nama, perintah menolak pembaruan dan mencantumkan perintah `plugin-name@marketplace-name` yang memenuhi syarat untuk dijalankan. Memperbarui dengan nama telanjang memerlukan Claude Code v2.1.246 atau lebih baru.312Anda dapat memberikan nama plugin polos, yang dicocokkan perintah dengan plugin yang terinstal. Ketika plugin terinstal dari marketplace berbeda memiliki nama yang sama, perintah menolak pembaruan dan mencantumkan perintah `plugin-name@marketplace-name` yang memenuhi syarat untuk dijalankan sebagai gantinya. Memperbarui dengan nama polos memerlukan Claude Code v2.1.246 atau yang lebih baru.

313 313 

314<h4 id="retry-an-unfinished-dependency-install">314<h4 id="retry-an-unfinished-dependency-install">

315 Mencoba ulang instalasi dependensi yang belum selesai315 Mencoba ulang instalasi dependensi yang belum selesai

316</h4>316</h4>

317 317 

318Ketika plugin sudah berada di versi terbarunya, perintah juga dapat mencoba ulang instalasi dependensi yang belum selesai di salinan cache-nya. Untuk kasus di mana retry tersebut berjalan atau dilewati, lihat [Paket yang dicantumkannya tidak terinstal](/docs/id/plugins/troubleshooting#the-packages-it-lists-are-not-installed). Jika retry gagal, output adalah `Failed to update plugin "formatter@my-marketplace"` dengan alasannya dan kode keluar adalah `1`. Sebelum v2.1.287, perintah melaporkan plugin berada di versi terbarunya tanpa mencoba ulang instalasi.318Ketika plugin sudah berada di versi terbarunya, perintah juga dapat mencoba ulang instalasi dependensi yang belum selesai di salinan cache-nya. Untuk kasus-kasus ketika retry tersebut dijalankan atau dilewati, lihat [Paket yang dicantumkannya tidak terinstal](/docs/id/plugins/troubleshooting#the-packages-it-lists-are-not-installed). Jika retry gagal, outputnya `Failed to update plugin "formatter@my-marketplace"` beserta alasannya dan exit code-nya `1`. Sebelum v2.1.287, perintah melaporkan plugin berada di versi terbarunya tanpa mencoba ulang instalasi.

319 319 

320<h3 id="plugin-list">320<h3 id="plugin-list">

321 plugin list321 plugin list

322</h3>322</h3>

323 323 

324Daftar plugin yang diinstal dengan versi, cakupan, dan status mereka.324Mencantumkan plugin yang terinstal beserta versi, cakupan, dan statusnya.

325 325 

326```bash theme={null}326```bash theme={null}

327claude plugin list [options]327claude plugin list [options]


329 329 

330| Flag | Deskripsi |330| Flag | Deskripsi |

331| :- | :- |331| :- | :- |

332| `--json` | Cetak daftar sebagai JSON |332| `--json` | Mencetak daftar sebagai JSON |

333| `--available` | Juga daftar plugin yang ditawarkan marketplace Anda yang belum Anda instal. Tidak berpengaruh tanpa `--json` |333| `--available` | Juga mencantumkan plugin yang ditawarkan marketplace Anda yang belum Anda instal. Tidak berpengaruh tanpa `--json` |

334| `--data-size [plugin]` | Ukur [direktori data yang disimpan](#what-an-uninstall-deletes-and-keeps) setiap plugin yang diinstal, atau hanya plugin yang dinamai, diberikan sebagai `name@marketplace`. Tidak berpengaruh tanpa `--json`. Jika nama tidak memiliki catatan instal, perintah mencetak `--data-size names a plugin that is not installed` dan keluar `1` alih-alih mencetak daftar. Memerlukan Claude Code v2.1.285 atau lebih baru |334| `--data-size [plugin]` | Mengukur [direktori data tersimpan](#what-an-uninstall-deletes-and-keeps) setiap plugin yang terinstal, atau hanya milik plugin yang disebutkan, yang diberikan sebagai `name@marketplace`. Tidak berpengaruh tanpa `--json`. Jika nama tersebut tidak memiliki catatan instalasi, perintah mencetak `--data-size names a plugin that is not installed` dan keluar dengan `1` alih-alih mencetak daftar. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

335 335 

336Claude Code mengelompokkan output yang dapat dibaca manusia berdasarkan cara setiap plugin dimuat:336Claude Code mengelompokkan output yang dapat dibaca manusia berdasarkan cara setiap plugin dimuat:

337 337 

338* **`Installed plugins:`**: plugin yang Anda instal dari marketplace338* **`Installed plugins:`**: plugin yang Anda instal dari marketplace

339* **`Session-only plugins (--plugin-dir / --plugin-url):`**: plugin yang dimuat oleh flag itu dalam perintah yang sama, seperti dalam `claude --plugin-dir ./my-plugin plugin list`339* **`Session-only plugins (--plugin-dir / --plugin-url):`**: plugin yang dimuat oleh flag tersebut dalam perintah yang sama, seperti pada `claude --plugin-dir ./my-plugin plugin list`

340* **`Skills-directory plugins (.claude/skills/*):`**: plugin yang Claude Code temukan di direktori skills340* **`Skills-directory plugins (.claude/skills/*):`**: plugin yang ditemukan Claude Code di direktori skills

341* **`Synced from claude.ai`**: [plugin yang disinkronkan dari akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins)341* **`Synced from claude.ai`**: [plugin yang disinkronkan dari akun claude.ai Anda](/docs/id/plugins/loading#synced-plugins)

342 342 

343Tanpa apa pun di grup mana pun, Claude Code mencetak ``No plugins installed. Use `claude plugin install` to install a plugin.``343Jika tidak ada apa pun di kelompok mana pun, Claude Code mencetak ``No plugins installed. Use `claude plugin install` to install a plugin.``

344 344 

345<h4 id="json-output">345<h4 id="json-output">

346 Output JSON346 Output JSON

347</h4>347</h4>

348 348 

349Dengan `--json`, Claude Code mencetak array dengan satu objek per instalasi. Setiap objek membawa field di bawah. `id`, `version`, `scope`, `enabled`, dan `installPath` selalu ada, dan yang lain muncul hanya ketika berlaku.349Dengan `--json`, Claude Code mencetak array dengan satu objek per instalasi. Setiap objek membawa field di bawah ini. `id`, `version`, `scope`, `enabled`, dan `installPath` selalu ada, dan yang lainnya hanya muncul jika relevan.

350 350 

351| Field | Tipe | Deskripsi |351| Field | Tipe | Deskripsi |

352| :- | :- | :- |352| :- | :- | :- |

353| `id` | string | `name@marketplace` untuk instal, `name@inline` untuk plugin hanya sesi, `name@skills-dir` untuk plugin direktori skills, `name@synced` untuk plugin yang disinkronkan dari claude.ai |353| `id` | string | `name@marketplace` untuk instalasi, `name@inline` untuk plugin khusus sesi, `name@skills-dir` untuk plugin direktori skills, `name@synced` untuk plugin yang disinkronkan dari claude.ai |

354| `version` | string | Untuk instal marketplace, [versi yang Claude Code hitung](/docs/id/plugins/loading#versions-and-updates) saat instal. Untuk plugin hanya sesi, direktori skills, atau disinkronkan, `version` manifest, atau `unknown` ketika tidak mendeklarasikan |354| `version` | string | Untuk instalasi marketplace, [versi yang dihitung Claude Code](/docs/id/plugins/loading#versions-and-updates) saat instalasi. Untuk plugin khusus sesi, direktori skills, atau yang disinkronkan, `version` dari manifes, atau `unknown` jika manifes tidak mendeklarasikannya |

355| `scope` | string | `user`, `project`, `local`, atau `managed` untuk instal; `user` atau `project` untuk plugin direktori skills; `session` untuk plugin hanya sesi; `synced` untuk plugin yang disinkronkan dari claude.ai |355| `scope` | string | `user`, `project`, `local`, atau `managed` untuk instalasi; `user` atau `project` untuk plugin direktori skills; `session` untuk plugin khusus sesi; `synced` untuk plugin yang disinkronkan dari claude.ai |

356| `enabled` | boolean | Apakah plugin diaktifkan dalam pengaturan gabungan Anda |356| `enabled` | boolean | Apakah plugin diaktifkan dalam pengaturan gabungan Anda |

357| `installPath` | string | Direktori tempat plugin dimuat, kecuali untuk plugin yang [dimuat sesi di tempat](/docs/id/plugins/loading#in-place-and-copied-plugins) dari folder marketplacenya |357| `installPath` | string | Direktori tempat plugin dimuat, kecuali untuk plugin yang oleh sesi [dimuat di tempat](/docs/id/plugins/loading#in-place-and-copied-plugins) dari folder marketplace-nya |

358| `readFromFolder` | string | Untuk plugin yang [dimuat sesi di tempat](/docs/id/plugins/loading#in-place-and-copied-plugins) dari folder marketplacenya, direktori sumber plugin di dalam folder tersebut. Memerlukan Claude Code v2.1.289 atau lebih baru |358| `readFromFolder` | string | Untuk plugin yang oleh sesi [dimuat di tempat](/docs/id/plugins/loading#in-place-and-copied-plugins) dari folder marketplace-nya, direktori sumber plugin di dalam folder tersebut. Memerlukan Claude Code v2.1.289 atau yang lebih baru |

359| `folderVersion` | string | Dengan `readFromFolder`, `version` plugin sebagaimana Claude Code memuatnya dari folder tersebut, yang dapat berbeda dari field `version` di atas. Tidak ada ketika plugin tidak dimuat atau tidak mendeklarasikan versi. Memerlukan Claude Code v2.1.289 atau lebih baru |359| `folderVersion` | string | Bersama `readFromFolder`, `version` plugin sebagaimana dimuat Claude Code dari folder tersebut, yang dapat berbeda dari field `version` di atas. Tidak ada jika plugin tidak dimuat atau tidak mendeklarasikan versi. Memerlukan Claude Code v2.1.289 atau yang lebih baru |

360| `installedAt` | string | Timestamp ISO instalasi. Hanya instal marketplace |360| `installedAt` | string | Stempel waktu ISO instalasi. Hanya instalasi marketplace |

361| `lastUpdated` | string | Timestamp ISO pembaruan terakhir. Hanya instal marketplace |361| `lastUpdated` | string | Stempel waktu ISO pembaruan terakhir. Hanya instalasi marketplace |

362| `projectPath` | string | Proyek yang dimiliki instal. Hanya cakupan `project` dan `local` |362| `projectPath` | string | Proyek tempat instalasi berada. Hanya cakupan `project` dan `local` |

363| `mcpServers` | object | Definisi server MCP plugin, ketika plugin yang diinstal marketplace memiliki |363| `mcpServers` | object | Definisi server MCP plugin, jika plugin yang diinstal dari marketplace memilikinya |

364| `errors` | array of strings | Kesalahan muat, ketika plugin gagal dimuat |364| `errors` | array of strings | Kesalahan pemuatan, jika plugin gagal dimuat |

365| `notes` | array of strings | Peringatan yang bukan kesalahan muat, seperti masalah penulisan atau [paket yang tidak terinstal](/docs/id/plugins/loading#when-the-dependency-install-fails-or-is-skipped) |365| `notes` | array of strings | Peringatan yang bukan kesalahan pemuatan, seperti masalah penulisan atau [paket yang tidak terinstal](/docs/id/plugins/loading#when-the-dependency-install-fails-or-is-skipped) |

366| `errorDetails` | array of objects | Satu objek per entri `errors`, memberikan `type` diagnostik dan nama yang dirujuknya, seperti plugin, marketplace, server, atau file. Memerlukan Claude Code v2.1.268 atau lebih baru |366| `errorDetails` | array of objects | Satu objek per entri `errors`, yang memberikan `type` diagnostiknya dan nama-nama yang dirujuknya, seperti plugin, marketplace, server, atau file. Memerlukan Claude Code v2.1.268 atau yang lebih baru |

367| `noteDetails` | array of objects | Objek detail yang sama untuk setiap entri `notes`. Memerlukan Claude Code v2.1.268 atau lebih baru |367| `noteDetails` | array of objects | Objek detail yang sama untuk setiap entri `notes`. Memerlukan Claude Code v2.1.268 atau yang lebih baru |

368| `hasUserConfig` | boolean | Hadir dan `true` ketika plugin dimuat dan manifestnya mendeklarasikan opsi [`userConfig`](/docs/id/plugins/manifest-reference#user-configuration). Tidak ada untuk plugin yang gagal dimuat, apa pun yang dideklarasikan manifestnya. Nilai yang disimpan tidak pernah disertakan. Memerlukan Claude Code v2.1.285 atau lebih baru |368| `hasUserConfig` | boolean | Ada dan bernilai `true` ketika plugin dimuat dan manifesnya mendeklarasikan [opsi `userConfig`](/docs/id/plugins/manifest-reference#user-configuration). Tidak ada untuk plugin yang gagal dimuat, apa pun yang dideklarasikan manifesnya. Nilai tersimpan tidak pernah disertakan. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

369| `projectEnabled` | boolean | Apakah `.claude/settings.json` proyek yang dibagikan menghidupkan plugin. Hanya instal marketplace. Memerlukan Claude Code v2.1.285 atau lebih baru |369| `projectEnabled` | boolean | Apakah `.claude/settings.json` bersama milik proyek mengaktifkan plugin. Hanya instalasi marketplace. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

370| `dataDirSize` | object | Dengan `--data-size`, ukuran [direktori data yang disimpan](#what-an-uninstall-deletes-and-keeps) plugin sebagai `bytes` dan `human`; tidak ada ketika direktori hilang atau kosong. Hanya instal marketplace. Memerlukan Claude Code v2.1.285 atau lebih baru |370| `dataDirSize` | object | Bersama `--data-size`, ukuran [direktori data tersimpan](#what-an-uninstall-deletes-and-keeps) plugin sebagai `bytes` dan `human`; tidak ada jika direktori tidak ada atau kosong. Hanya instalasi marketplace. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

371| `dataDirUnreadable` | boolean | Dengan `--data-size`, `true` ketika direktori data yang disimpan ada tetapi tidak dapat diukur. Hanya instal marketplace. Memerlukan Claude Code v2.1.285 atau lebih baru |371| `dataDirUnreadable` | boolean | Bersama `--data-size`, `true` ketika direktori data tersimpan ada tetapi tidak dapat diukur. Hanya instalasi marketplace. Memerlukan Claude Code v2.1.285 atau yang lebih baru |

372 372 

373Dengan `--json --available`, Claude Code mencetak satu objek alih-alih array. Field `installed`-nya memegang array objek plugin yang diinstal, dan field `available`-nya memegang satu objek per plugin marketplace yang tidak diinstal dengan field di bawah.373Dengan `--json --available`, Claude Code mencetak satu objek alih-alih array. Field `installed`-nya berisi array objek plugin yang terinstal, dan field `available`-nya berisi satu objek per plugin marketplace yang belum terinstal dengan field di bawah ini.

374 374 

375| Field | Tipe | Deskripsi |375| Field | Tipe | Deskripsi |

376| :- | :- | :- |376| :- | :- | :- |

377| `pluginId` | string | `name@marketplace` |377| `pluginId` | string | `name@marketplace` |

378| `name` | string | Nama plugin di marketplace |378| `name` | string | Nama plugin di marketplace |

379| `marketplaceName` | string | Marketplace yang menawarkannya |379| `marketplaceName` | string | Marketplace yang menawarkannya |

380| `source` | string or object | [Sumber](/docs/id/plugins/marketplace-reference) entri marketplace: string untuk jalur relatif, objek sebaliknya |380| `source` | string or object | [Sumber](/docs/id/plugins/marketplace-reference) entri marketplace: string untuk path relatif, objek untuk lainnya |

381| `description` | string | Deskripsi entri, ketika memiliki |381| `description` | string | Deskripsi entri, jika ada |

382| `version` | string | Versi entri, ketika mendeklarasikan |382| `version` | string | Versi entri, jika dideklarasikan |

383| `installCount` | number | Jumlah instal, ketika Claude Code memiliki satu untuk plugin |383| `installCount` | number | Jumlah instalasi, jika Claude Code memilikinya untuk plugin tersebut |

384 384 

385<h3 id="plugin-details">385<h3 id="plugin-details">

386 plugin details386 plugin details

387</h3>387</h3>

388 388 

389Tampilkan inventaris komponen plugin dan biaya token proyeksiannya.389Menampilkan inventaris komponen plugin dan proyeksi biaya token-nya.

390 390 

391Plugin harus dimuat: diinstal, ditemukan di direktori skills, atau dilewatkan dengan `--plugin-dir` atau `--plugin-url` dalam perintah yang sama. `<name>` adalah plugin `name` atau `name@marketplace`.391Plugin harus dimuat: terinstal, ditemukan di direktori skills, atau diberikan dengan `--plugin-dir` atau `--plugin-url` dalam perintah yang sama. `<name>` adalah `name` plugin atau `name@marketplace`.

392 392 

393```bash theme={null}393```bash theme={null}

394claude plugin details <name>394claude plugin details <name>

395```395```

396 396 

397Perintah tidak mengambil flag di luar `--help`.397Perintah ini tidak menerima flag selain `--help`.

398 398 

399Tampilkan apa yang disumbangkan plugin yang diinstal:399Tampilkan apa yang disumbangkan oleh plugin yang terinstal:

400 400 

401```bash theme={null}401```bash theme={null}

402claude plugin details formatter402claude plugin details formatter

403```403```

404 404 

405Claude Code mencetak nama, versi, deskripsi, dan sumber plugin, kemudian bagian ini:405Claude Code mencetak nama, versi, deskripsi, dan sumber plugin, lalu bagian-bagian berikut:

406 406 

407* **`Component inventory`**: skills, agents, hooks, server MCP, dan server LSP plugin407* **`Component inventory`**: skill, agent, hook, server MCP, dan server LSP milik plugin

408* **`Projected token cost`**: token yang selalu aktif yang ditambahkan plugin ke setiap sesi408* **`Projected token cost`**: token yang selalu aktif yang ditambahkan plugin ke setiap sesi

409* **`Per-component (rounded)`**: perkiraan selalu aktif dan on-invoke untuk setiap skill, agent, dan perintah. Dihilangkan ketika plugin tidak memiliki409* **`Per-component (rounded)`**: estimasi selalu aktif dan saat dipanggil untuk setiap skill, agent, dan perintah. Dihilangkan jika plugin tidak memilikinya

410 410 

411Untuk apa dua angka biaya berarti, lihat [Ukur biaya dan penggunaan plugin](/docs/id/plugins/measure).411Untuk arti kedua angka biaya tersebut, lihat [Mengukur biaya dan penggunaan plugin](/docs/id/plugins/measure).

412 412 

413Untuk plugin yang tidak dimuat, Claude Code mencetak ``Plugin "formatter" not found. Run `claude plugin list` to see installed plugins, or pass --plugin-dir <path> to load one from disk.`` dan keluar `1`.413Untuk plugin yang tidak dimuat, Claude Code mencetak ``Plugin "formatter" not found. Run `claude plugin list` to see installed plugins, or pass --plugin-dir <path> to load one from disk.`` dan keluar dengan `1`.

414 414 

415<h3 id="plugin-configure">415<h3 id="plugin-configure">

416 plugin configure416 plugin configure

417</h3>417</h3>

418 418 

419Tampilkan opsi [`userConfig`](/docs/id/plugins/manifest-reference#user-configuration) plugin yang diinstal dan mana yang diatur, atau simpan nilai yang disalurkan di stdin. Memerlukan Claude Code v2.1.285 atau lebih baru.419Menampilkan opsi [`userConfig`](/docs/id/plugins/manifest-reference#user-configuration) dari plugin yang terinstal dan mana yang sudah ditetapkan, atau menyimpan nilai yang dialirkan melalui stdin. Memerlukan Claude Code v2.1.285 atau yang lebih baru.

420 420 

421```bash theme={null}421```bash theme={null}

422claude plugin configure <plugin>422claude plugin configure <plugin>


424 424 

425| Flag | Deskripsi |425| Flag | Deskripsi |

426| :- | :- |426| :- | :- |

427| `--values-stdin` | Baca nilai opsi dari stdin sebagai objek JSON string satu baris dan simpan. Opsi yang Anda tinggalkan menyimpan nilai yang disimpan |427| `--values-stdin` | Membaca nilai opsi dari stdin sebagai objek JSON berisi string satu baris dan menyimpannya. Opsi yang tidak Anda sertakan mempertahankan nilai tersimpannya |

428| `--json` | Cetak hasil sebagai satu objek JSON ke stdout. Tanpa `--values-stdin`, objek membawa `schema` dan `choices` opsi, `inputs` awal mereka, dan nama opsi `configured` dan `unconfigured`. Dengan `--values-stdin`, membawa nama opsi `saved` dan, ketika dapat dibaca kembali, nama `unconfigured` |428| `--json` | Mencetak hasil sebagai satu objek JSON di stdout. Tanpa `--values-stdin`, objek membawa `schema` dan `choices` opsi, `inputs` awalnya, serta nama opsi `configured` dan `unconfigured`. Dengan `--values-stdin`, objek membawa nama opsi `saved` dan, jika dapat dibaca kembali, nama opsi `unconfigured` |

429 429 

430Tanpa flag, perintah mencantumkan setiap opsi dengan hingga tiga label: `required` atau `optional`, kemudian `sensitive` untuk opsi yang dideklarasikan manifest sensitif, kemudian `set` atau `not set`. Tidak mencetak nilai yang disimpan. Dengan `--json`, output mencakup nilai yang disimpan dari opsi yang bukan sensitif, dan tidak pernah teks dari yang sensitif.430Tanpa flag, perintah mencantumkan setiap opsi dengan hingga tiga label: `required` atau `optional`, lalu `sensitive` untuk opsi yang dideklarasikan sensitif oleh manifes, lalu `set` atau `not set`. Perintah ini tidak mencetak nilai tersimpan. Dengan `--json`, output menyertakan nilai tersimpan dari opsi yang tidak sensitif, dan tidak pernah menyertakan teks opsi yang sensitif.

431 431 

432Untuk menyimpan nilai, tulis ke file sebagai objek JSON yang memetakan kunci opsi ke nilai string, kemudian lewatkan file di stdin. Ganti `formatter@my-marketplace` dengan id plugin Anda sendiri seperti yang ditunjukkan `claude plugin list`. Contoh ini menetapkan satu opsi bernama `api_url` dari file `values.json` yang berisi `{"api_url": "https://example.com"}`:432Untuk menyimpan nilai, tulis nilai tersebut ke file sebagai objek JSON yang memetakan kunci opsi ke nilai string, lalu berikan file tersebut melalui stdin. Ganti `formatter@my-marketplace` dengan id plugin Anda sendiri sebagaimana ditampilkan oleh `claude plugin list`. Contoh ini menetapkan satu opsi bernama `api_url` dari file `values.json` yang berisi `{"api_url": "https://example.com"}`:

433 433 

434```bash theme={null}434```bash theme={null}

435claude plugin configure formatter@my-marketplace --values-stdin < values.json435claude plugin configure formatter@my-marketplace --values-stdin < values.json

436```436```

437 437 

438Claude Code memvalidasi setiap nilai terhadap tipe yang dideklarasikan opsi dan mencetak `Configuration saved. Restart Claude Code to apply it.` Jika Anda melewatkan kunci yang tidak dideklarasikan manifest, atau nilai yang gagal validasi, perintah tidak menyimpan apa pun, mencetak `Failed to save configuration:` dengan alasan, dan keluar `1`. Dengan `--json`, nilai yang ditolak juga mencetak objek di stdout yang field `refused`-nya membawa `message` dan, ketika satu opsi salah, kunci `option`-nya.438Claude Code memvalidasi setiap nilai terhadap tipe yang dideklarasikan untuk opsi tersebut dan mencetak `Configuration saved. Restart Claude Code to apply it.` Jika Anda memberikan kunci yang tidak dideklarasikan manifes, atau nilai yang gagal validasi, perintah tidak menyimpan apa pun, mencetak `Failed to save configuration:` beserta alasannya, dan keluar dengan `1`. Dengan `--json`, nilai yang ditolak juga mencetak objek di stdout yang field `refused`-nya membawa `message` dan, jika satu opsi yang bermasalah, kunci `option`-nya.

439 439 

440Lewatkan id `name@marketplace` plugin yang lengkap, seperti yang ditunjukkan `claude plugin list`. `configure` tidak menerima `name` telanjang. Ketika tidak ada plugin yang dimuat memiliki id itu, perintah mencetak `No installed plugin has the id "<plugin>".` dan keluar `1`.440Berikan id lengkap `name@marketplace` plugin, sebagaimana ditampilkan oleh `claude plugin list`. `configure` tidak menerima `name` polos. Jika tidak ada plugin yang dimuat dengan id tersebut, perintah mencetak `No installed plugin has the id "<plugin>".` dan keluar dengan `1`.

441 441 

442Untuk pengaturan server MCP yang dibundel, lihat [`plugin install --config`](#plugin-install) atau item **Configure** di `/plugin`.442Untuk pengaturan server MCP yang dibundel, lihat [`plugin install --config`](#plugin-install) atau item **Configure** di `/plugin`.

443 443 


445 plugin prune445 plugin prune

446</h3>446</h3>

447 447 

448Hapus [dependensi](/docs/id/plugins/dependencies) yang diinstal otomatis yang tidak diperlukan plugin yang diinstal lagi. Perintah tidak pernah menghapus plugin yang Anda instal sendiri. `autoremove` adalah alias untuk `prune`.448Menghapus [dependensi](/docs/id/plugins/dependencies) yang diinstal otomatis yang tidak lagi dibutuhkan oleh plugin terinstal mana pun. Perintah ini tidak pernah menghapus plugin yang Anda instal sendiri. `autoremove` adalah alias untuk `prune`.

449 449 

450```bash theme={null}450```bash theme={null}

451claude plugin prune [options]451claude plugin prune [options]


453 453 

454| Flag | Deskripsi |454| Flag | Deskripsi |

455| :- | :- |455| :- | :- |

456| `-s, --scope <scope>` | Prune di cakupan: `user`, `project`, atau `local`. Default ke `user` |456| `-s, --scope <scope>` | Melakukan prune di cakupan: `user`, `project`, atau `local`. Default-nya `user` |

457| `--dry-run` | Daftar apa yang akan dihapus tanpa menghapusnya |457| `--dry-run` | Mencantumkan apa yang akan dihapus tanpa menghapusnya |

458| `-y, --yes` | Lewati prompt konfirmasi. Diperlukan ketika stdin atau stdout bukan TTY |458| `-y, --yes` | Melewati permintaan konfirmasi. Wajib ketika stdin atau stdout bukan TTY |

459 459 

460Pratinjau apa yang akan dihapus prune:460Pratinjau apa yang akan dihapus oleh prune:

461 461 

462```bash theme={null}462```bash theme={null}

463claude plugin prune --dry-run463claude plugin prune --dry-run

464```464```

465 465 

466Claude Code mencantumkan dependensi yatim piatu dan berakhir dengan `(dry run — nothing removed)`. Tanpa yang dihapus, mencetak baris yang dimulai `Nothing to prune`.466Claude Code mencantumkan dependensi yatim dan diakhiri dengan `(dry run — nothing removed)`. Jika tidak ada yang perlu dihapus, Claude Code mencetak baris yang diawali `Nothing to prune`.

467 467 

468Tanpa `--dry-run`, perintah menghapus dependensi yatim piatu hanya setelah Anda mengonfirmasi di prompt atau melewatkan `-y`.468Tanpa `--dry-run`, perintah menghapus dependensi yatim hanya setelah Anda mengonfirmasi di permintaan konfirmasi atau memberikan `-y`.

469 469 

470Kode keluar adalah `0` apa pun yang Anda jawab di prompt.470Exit code-nya `0` apa pun jawaban Anda di permintaan konfirmasi.

471 471 

472Apa yang dilakukan `prune` tergantung pada apakah terminal terpasang dan apakah Anda melewatkan `-y`:472Apa yang dilakukan `prune` bergantung pada apakah terminal terpasang dan apakah Anda memberikan `-y`:

473 473 

474| Terminal dan flag | Apa yang terjadi |474| Terminal dan flag | Yang terjadi |

475| :- | :- |475| :- | :- |

476| Terminal interaktif, tidak ada `-y` | Mencantumkan dependensi yatim piatu dan menanyakan `Remove? [y/N]` |476| Terminal interaktif, tanpa `-y` | Mencantumkan dependensi yatim dan bertanya `Remove? [y/N]` |

477| Terminal apa pun, `-y` | Menghapusnya dan mencetak `Removed N auto-installed plugins: <names>` |477| Terminal apa pun, `-y` | Menghapusnya dan mencetak `Removed N auto-installed plugins: <names>` |

478| stdin atau stdout non-TTY, tidak ada `-y` | Mencetak daftar dan ``Not a TTY — run `claude plugin prune -y` to remove.``, menghapus tidak ada |478| stdin atau stdout non-TTY, tanpa `-y` | Mencetak daftar dan ``Not a TTY — run `claude plugin prune -y` to remove.``, tanpa menghapus apa pun |

479 479 

480<h3 id="plugin-eval">480<h3 id="plugin-eval">

481 plugin eval481 plugin eval

482</h3>482</h3>

483 483 

484Jalankan [kasus eval](/docs/id/plugin-evals) plugin dan laporkan hasil yang dinilai. Memerlukan Claude Code v2.1.269 atau lebih baru.484Menjalankan [kasus eval](/docs/id/plugin-evals) plugin dan melaporkan hasil yang dinilai. Memerlukan Claude Code v2.1.269 atau yang lebih baru.

485 485 

486Setiap kasus adalah prompt plus grader. Claude Code menjalankannya beberapa kali dalam sesi terisolasi dengan hanya plugin target yang dimuat, dan secara default juga tanpa plugin sehingga laporan menunjukkan perbedaannya.486Setiap kasus adalah prompt ditambah grader. Claude Code menjalankannya beberapa kali dalam sesi terisolasi dengan hanya plugin target yang dimuat, dan secara default juga tanpa plugin sehingga laporan menunjukkan perbedaannya.

487 487 

488Lihat [Uji plugin dengan eval](/docs/id/plugin-evals) untuk format kasus, grader, hasil, dan penggunaan CI.488Lihat [Menguji plugin dengan eval](/docs/id/plugin-evals) untuk format kasus, grader, hasil, dan penggunaan CI.

489 489 

490```bash theme={null}490```bash theme={null}

491claude plugin eval [target] [options]491claude plugin eval [target] [options]

492```492```

493 493 

494`target` opsional default ke direktori saat ini dan mengambil salah satu bentuk ini:494`target` opsional default-nya adalah direktori saat ini dan menerima salah satu bentuk berikut:

495 495 

496* Direktori plugin496* Direktori plugin

497* File `prompt.md` atau `case.yaml` tunggal497* Satu file `prompt.md` atau `case.yaml`

498* Plugin yang diinstal sebagai `name` atau `name@marketplace`498* Plugin yang terinstal sebagai `name` atau `name@marketplace`

499* `name@skills-dir`499* `name@skills-dir`

500 500 

501Letakkan target sebelum `--tag`, `--allow-tools`, dan `--json`. Setiap opsi ini mengambil kata-kata yang mengikutinya sebagai nilainya, jadi target yang ditulis setelah salah satu dari mereka dibaca sebagai tag, nama tool, atau jalur output JSON alih-alih sebagai target.501Letakkan target sebelum `--tag`, `--allow-tools`, dan `--json`. Masing-masing opsi ini mengambil kata-kata yang mengikutinya sebagai nilainya, sehingga target yang ditulis setelah salah satunya akan dibaca sebagai tag, nama tool, atau path output JSON, bukan sebagai target.

502 502 

503Tabel ini mencantumkan opsi yang paling banyak digunakan run. Jalankan `claude plugin eval --help` untuk set lengkap, termasuk `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, dan `--verbose`.503Tabel ini mencantumkan opsi yang digunakan sebagian besar eksekusi. Jalankan `claude plugin eval --help` untuk set lengkapnya, termasuk `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp`, dan `--verbose`.

504 504 

505| Opsi | Deskripsi | Default |505| Opsi | Deskripsi | Default |

506| :- | :- | :- |506| :- | :- | :- |

507| `--runs <n>` | Berjalan per kasus di setiap [arm](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | `runs` setiap kasus, atau 3 |507| `--runs <n>` | Jumlah eksekusi per kasus di setiap [arm](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | `runs` dari setiap kasus, selain itu 3 |

508| `-j, --concurrency <n>` | Sesi agent untuk dijalankan sekaligus, 1 hingga 8. Mereka berbagi rate limit Anda | `1` |508| `-j, --concurrency <n>` | Sesi agent yang dijalankan sekaligus, 1 sampai 8. Sesi-sesi ini berbagi rate limit Anda | `1` |

509| `--model <model>` | Model untuk agent di bawah pengujian | `model` setiap kasus, atau `ANTHROPIC_MODEL` jika diatur, atau default Claude Code |509| `--model <model>` | Model untuk agent yang diuji | `model` dari setiap kasus, selain itu `ANTHROPIC_MODEL` jika ditetapkan, selain itu default Claude Code |

510| `--judge-model <model>` | Model untuk grader `llm` dan `baseline` | Model untuk [tugas latar belakang](/docs/id/plugin-evals#grade-the-result) |510| `--judge-model <model>` | Model untuk grader `llm` dan `baseline` | Model untuk [tugas latar belakang](/docs/id/plugin-evals#grade-the-result) |

511| `--ablation <mode>` | `none` atau `with-without`. Lihat [Beri skor terhadap baseline tanpa plugin](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | Diputuskan per kasus, seperti bagian itu menjelaskan |511| `--ablation <mode>` | `none` atau `with-without`. Lihat [Menilai terhadap baseline tanpa plugin](/docs/id/plugin-evals#compare-against-a-no-plugin-baseline) | Diputuskan per kasus, sebagaimana dijelaskan di bagian tersebut |

512| `--threshold <0..1>` | Keluar 1 jika kasus apa pun mencetak di bawah ini | `1.0` |512| `--threshold <0..1>` | Keluar dengan 1 jika ada kasus yang skornya di bawah nilai ini | `1.0` |

513| `--max-cost-usd <usd>` | Berhenti sebelum run berikutnya setelah pengeluaran mencapai ini, keluar 2, dan laporkan hasil parsial | Tidak ada batas |513| `--max-cost-usd <usd>` | Berhenti sebelum eksekusi berikutnya setelah pengeluaran mencapai nilai ini, keluar dengan 2, dan melaporkan hasil parsial | Tanpa batas |

514| `--allow-tools <tools...>` | Berikan tool di luar set read-only, seperti `Bash`, `Write`, `Edit`, atau `"mcp__plugin_<plugin>_<server>__*"`. Lihat [Berikan tool](/docs/id/plugin-evals#grant-tools) | |514| `--allow-tools <tools...>` | Memberikan tool di luar set read-only, seperti `Bash`, `Write`, `Edit`, atau `"mcp__plugin_<plugin>_<server>__*"`. Lihat [Memberikan tool](/docs/id/plugin-evals#grant-tools) | |

515| `--scaffold` | Jalankan [`scaffold_script`](/docs/id/plugin-evals#add-setup-or-history-with-case-yaml) setiap kasus | Mati |515| `--scaffold` | Menjalankan [`scaffold_script`](/docs/id/plugin-evals#add-setup-or-history-with-case-yaml) setiap kasus | Nonaktif |

516| `--trust-plugin` | Lewati prompt kepercayaan run pertama, untuk CI. Lihat [Apa yang dapat diakses run](/docs/id/plugin-evals#security) | Mati |516| `--trust-plugin` | Melewati permintaan kepercayaan pada eksekusi pertama, untuk CI. Lihat [Apa yang dapat diakses oleh eksekusi](/docs/id/plugin-evals#security) | Nonaktif |

517| `--mocks <mode>` | `record` atau `off`. Lihat [Mock server MCP](/docs/id/plugin-evals#mock-mcp-servers) | `record` |517| `--mocks <mode>` | `record` atau `off`. Lihat [Mock server MCP](/docs/id/plugin-evals#mock-mcp-servers) | `record` |

518| `--eval-dir <dir>` | Direktori di bawah plugin yang memegang kasus | `experimental.evals` manifest, atau `evals` |518| `--eval-dir <dir>` | Direktori di bawah plugin yang berisi kasus | `experimental.evals` dari manifes, selain itu `evals` |

519| `--json [path]` | Cetak [dokumen hasil](/docs/id/plugin-evals#json-result) ke stdout, atau tulis ke jalur `.json` | |519| `--json [path]` | Mencetak [dokumen hasil](/docs/id/plugin-evals#json-result) ke stdout, atau menulisnya ke path `.json` | |

520| `--no-publish` | Jaga laporan HTML tetap lokal | |520| `--no-publish` | Menyimpan laporan HTML secara lokal | |

521 521 

522Kode keluar melaporkan bagaimana run berakhir. Untuk bertindak atas itu dalam pipeline, lihat [Jalankan eval dalam CI](/docs/id/plugin-evals#run-evals-in-ci).522Exit code melaporkan bagaimana eksekusi berakhir. Untuk menindaklanjutinya dalam pipeline, lihat [Menjalankan eval di CI](/docs/id/plugin-evals#run-evals-in-ci).

523 523 

524| Kode keluar | Arti |524| Exit code | Arti |

525| :- | :- |525| :- | :- |

526| `0` | Setiap kasus memenuhi ambang |526| `0` | Suite lulus: setiap kasus memenuhi ambang batas dan tidak ada hal lain yang menggagalkan eksekusi |

527| `1` | Kasus yang gagal, kesalahan muat, atau direktori plugin yang tidak dipercaya |527| `1` | Kasus yang gagal, kesalahan pemuatan, direktori plugin yang tidak tepercaya, eksekusi yang [berakhir karena kesalahan API](/docs/id/plugin-evals#runs-ended-on-an-api-error), atau penyebab lain yang tercantum di [Menjalankan eval di CI](/docs/id/plugin-evals#run-evals-in-ci) |

528| `2` | Run parsial |528| `2` | Eksekusi parsial |

529| `130` | Terputus |529| `130` | Diinterupsi |

530| `143` | Dihentikan |530| `143` | Dihentikan |

531 531 

532<h3 id="plugin-eval-init">532<h3 id="plugin-eval-init">

533 plugin eval init533 plugin eval init

534</h3>534</h3>

535 535 

536Buat suite eval untuk plugin di direktori saat ini. Memerlukan Claude Code v2.1.269 atau lebih baru. Lihat [Buat suite eval pertama Anda](/docs/id/plugin-evals#create-your-first-eval-suite).536Membuat suite eval untuk plugin di direktori saat ini. Memerlukan Claude Code v2.1.269 atau yang lebih baru. Lihat [Membuat suite eval pertama Anda](/docs/id/plugin-evals#create-your-first-eval-suite).

537 537 

538```bash theme={null}538```bash theme={null}

539claude plugin eval init [name] [options]539claude plugin eval init [name] [options]

540```540```

541 541 

542Jalankan perintah dari folder root plugin, direktori yang memegang `.claude-plugin/plugin.json` atau `SKILL.md` skill. Untuk rangka kerja suite di direktori lain dengan sengaja, lewatkan `--eval-dir`.542Jalankan perintah dari folder root plugin, yaitu direktori yang berisi `.claude-plugin/plugin.json` atau `SKILL.md` milik skill. Untuk sengaja membuat kerangka suite di direktori lain, berikan `--eval-dir`.

543 543 

544Di terminal, perintah membuka sesi Claude Code interaktif untuk wawancara penulisan. Dalam wawancara, Claude melakukan hal berikut:544Di terminal, perintah membuka sesi Claude Code interaktif untuk wawancara penulisan. Dalam wawancara, Claude melakukan hal berikut:

545 545 

5461. Membaca plugin5461. Membaca plugin

5472. Menanyakan apa yang harus dilakukan dengan baik5472. Menanyakan kepada Anda apa yang harus dilakukan plugin dengan baik

5483. Mengusulkan kasus dan grader5483. Mengusulkan kasus dan grader

5494. Menulis file kasus5494. Menulis file kasus

5505. Menjalankan kasus dan meninjau nilai dengan Anda untuk memeriksa bahwa grader mencetak cara Anda5505. Menjalankan kasus dan meninjau nilai bersama Anda untuk memeriksa bahwa grader menilai seperti yang akan Anda lakukan

551 551 

552Dengan `--bare`, atau tanpa terminal, perintah menulis template kasus tunggal kosong. Ketika Claude menjalankan perintah dari dalam sesi Claude Code, perintah mencetak instruksi wawancara untuk sesi itu ikuti daripada menulis template.552Dengan `--bare`, atau tanpa terminal, perintah menulis templat kosong satu kasus sebagai gantinya. Ketika Claude menjalankan perintah dari dalam sesi Claude Code, perintah mencetak instruksi wawancara untuk diikuti oleh sesi tersebut alih-alih menulis templat.

553 553 

554`name` opsional adalah nama kasus. Diperlukan dengan `--bare` atau tanpa terminal, karena perintah menulis template kosong untuk kasus itu. Nama kasus dimulai dengan huruf atau digit dan berisi hanya huruf, digit, `.`, `_`, dan `-`. Di setiap platform, perintah juga menolak nama yang tidak dapat disimpan Windows, seperti `con` atau nama yang berakhir dengan `.`.554`name` opsional adalah nama kasus. Nama ini wajib dengan `--bare` atau tanpa terminal, karena perintah menulis templat kosong untuk kasus tersebut. Nama kasus diawali dengan huruf atau angka dan hanya berisi huruf, angka, `.`, `_`, dan `-`. Di setiap platform, perintah juga menolak nama yang tidak dapat disimpan Windows, seperti `con` atau nama yang diakhiri dengan `.`.

555 555 

556Perintah menerima opsi ini:556Perintah menerima opsi-opsi berikut:

557 557 

558| Opsi | Deskripsi | Default |558| Opsi | Deskripsi | Default |

559| :- | :- | :- |559| :- | :- | :- |

560| `--bare` | Tulis `prompt.md` dan `graders/criteria.md` kosong untuk `<name>` alih-alih menjalankan wawancara | |560| `--bare` | Menulis `prompt.md` dan `graders/criteria.md` kosong untuk `<name>` alih-alih menjalankan wawancara | |

561| `-i, --interactive` | Perlukan wawancara. Gagal tanpa terminal alih-alih menulis template | |561| `-i, --interactive` | Mewajibkan wawancara. Gagal tanpa terminal alih-alih menulis templat | |

562| `--eval-dir <dir>` | Direktori di bawah direktori saat ini untuk menulis kasus ke | `experimental.evals` manifest, atau `evals` |562| `--eval-dir <dir>` | Direktori di bawah direktori saat ini tempat kasus ditulis | `experimental.evals` dari manifes, selain itu `evals` |

563 563 

564<h3 id="plugin-tag">564<h3 id="plugin-tag">

565 plugin tag565 plugin tag

566</h3>566</h3>

567 567 

568Buat tag git beranotasi bernama `<name>--v<version>` untuk rilis plugin. Sebelum menandai, perintah memeriksa bahwa `plugin.json` plugin dan entri marketplace apa pun yang mencantumkannya setuju pada versi.568Membuat tag git beranotasi bernama `<name>--v<version>` untuk rilis plugin. Sebelum memberi tag, perintah memeriksa bahwa `plugin.json` plugin dan setiap entri marketplace yang mencantumkannya sepakat mengenai versinya.

569 569 

570Untuk kapan menandai rilis, lihat [Terbitkan plugin](/docs/id/plugins/publish).570Untuk kapan memberi tag pada rilis, lihat [Menerbitkan plugin](/docs/id/plugins/publish).

571 571 

572```bash theme={null}572```bash theme={null}

573claude plugin tag [path] [options]573claude plugin tag [path] [options]

574```574```

575 575 

576`[path]` adalah direktori plugin, default ke direktori saat ini. Perintah menemukan entri marketplace dengan berjalan naik dari direktori itu ke `.claude-plugin/marketplace.json` yang mencantumkan plugin.576`[path]` adalah direktori plugin, dengan default direktori saat ini. Perintah menemukan entri marketplace dengan menelusuri ke atas dari direktori tersebut hingga `.claude-plugin/marketplace.json` yang mencantumkan plugin tersebut.

577 577 

578| Flag | Deskripsi |578| Flag | Deskripsi |

579| :- | :- |579| :- | :- |

580| `--push` | Dorong tag ke `--remote` setelah membuatnya |580| `--push` | Mendorong tag ke `--remote` setelah membuatnya |

581| `--dry-run` | Cetak apa yang akan ditandai tanpa membuat tag |581| `--dry-run` | Mencetak apa yang akan diberi tag tanpa membuat tag |

582| `-f, --force` | Lewati pohon kerja kotor dan pemeriksaan tag-sudah-ada |582| `-f, --force` | Melewati pemeriksaan working tree kotor dan tag sudah ada |

583| `-m, --message <msg>` | Pesan anotasi tag. `%s` singkatan untuk versi. Default ke `<name> <version>` |583| `-m, --message <msg>` | Pesan anotasi tag. `%s` mewakili versi. Default-nya `<name> <version>` |

584| `--remote <name>` | Remote untuk didorong dengan `--push`. Default ke `origin` |584| `--remote <name>` | Remote tujuan push dengan `--push`. Default-nya `origin` |

585 585 

586Pratinjau tag untuk plugin dalam checkout marketplace:586Pratinjau tag untuk plugin dalam checkout marketplace:

587 587 


589claude plugin tag plugins/formatter --dry-run589claude plugin tag plugins/formatter --dry-run

590```590```

591 591 

592Claude Code mencetak rencana:592Claude Code mencetak rencananya:

593 593 

594* Nama plugin594* Nama plugin

595* Versi dan file mana asalnya595* Versi dan file asalnya

596* Entri marketplace yang cocok, ketika ada596* Entri marketplace yang cocok, jika ada

597* Nama tag597* Nama tag

598* Perintah `git tag` dan `git push` yang akan dijalankan598* Perintah `git tag` dan `git push` yang akan dijalankannya

599 599 

600Tanpa `--dry-run`, Claude Code mencetak `Created tag formatter--v1.0.0` dan baik `Pushed to origin` atau perintah push untuk dijalankan sendiri. Jika push gagal, tag masih dibuat secara lokal dan perintah keluar dengan kesalahan.600Tanpa `--dry-run`, Claude Code mencetak `Created tag formatter--v1.0.0` dan `Pushed to origin` atau perintah push untuk Anda jalankan sendiri. Jika push gagal, tag tetap dibuat secara lokal dan perintah keluar dengan kesalahan.

601 601 

602Perintah keluar `1` dan mencetak alasan ketika tidak dapat menandai dengan aman. Alasan umum adalah:602Perintah keluar dengan `1` dan mencetak alasannya jika tidak dapat memberi tag dengan aman. Alasan yang umum adalah:

603 603 

604* Tidak ada `version` di `plugin.json` atau entri marketplace604* Tidak ada `version` di `plugin.json` atau entri marketplace

605* Tag sudah ada605* Tag sudah ada

606* Pohon kerja kotor606* Working tree kotor

607 607 

608<h3 id="plugin-test">608<h3 id="plugin-test">

609 plugin test609 plugin test

610</h3>610</h3>

611 611 

612Jalankan pengujian untuk [mod](/docs/id/plugins/mods/overview), yaitu plugin yang kodenya mendaftarkan handler peristiwa. Perintah ini tidak memerlukan sesi, proses masuk, atau jaringan. Untuk cara menulis pengujian, lihat [Uji mod](/docs/id/plugins/mods/test).612Menjalankan pengujian untuk [mod](/docs/id/plugins/mods/overview), yaitu plugin yang kodenya mendaftarkan event handler. Perintah ini tidak memerlukan sesi, login, atau jaringan. Untuk cara menulis pengujian, lihat [Menguji mod](/docs/id/plugins/mods/test).

613 613 

614```bash theme={null}614```bash theme={null}

615claude plugin test [directory]615claude plugin test [directory]

616```616```

617 617 

618`[directory]` adalah direktori mod, default ke direktori saat ini. Perintah menjalankan setiap file di bawahnya yang namanya berakhiran `.test.ts` atau `.test.tsx`, dan keluar dengan status 1 ketika ada pengujian yang gagal.618`[directory]` adalah direktori mod, dengan default direktori saat ini. Perintah menjalankan setiap file di bawahnya yang namanya diakhiri dengan `.test.ts` atau `.test.tsx`, dan keluar dengan status 1 jika ada pengujian yang gagal.

619 619 

620Jalankan pengujian untuk mod di `./first-mod`:620Jalankan pengujian untuk mod di `./first-mod`:

621 621 


627 plugin validate627 plugin validate

628</h3>628</h3>

629 629 

630Validasi manifest plugin, manifest marketplace, atau skills, agents, dan perintah dalam direktori, dan keluar dengan kode yang dapat ditindaklanjuti pekerjaan CI. Untuk alur kerja buat, uji, dan edit, lihat [Buat plugin](/docs/id/plugins/create). Untuk apa yang diperiksa validator di setiap manifest, lihat [referensi manifest plugin](/docs/id/plugins/manifest-reference) dan [referensi marketplace](/docs/id/plugins/marketplace-reference).630Memvalidasi manifes plugin, manifes marketplace, atau skill, agent, dan perintah di dalam direktori, lalu keluar dengan kode yang dapat ditindaklanjuti oleh job CI. Untuk alur kerja membuat, menguji, dan mengedit, lihat [Membuat plugin](/docs/id/plugins/create). Untuk apa yang diperiksa validator di setiap manifes, lihat [referensi manifes plugin](/docs/id/plugins/manifest-reference) dan [referensi marketplace](/docs/id/plugins/marketplace-reference).

631 631 

632```bash theme={null}632```bash theme={null}

633claude plugin validate <path> [options]633claude plugin validate <path> [options]


635 635 

636| Flag | Deskripsi |636| Flag | Deskripsi |

637| :- | :- |637| :- | :- |

638| `--strict` | Perlakukan peringatan sebagai kesalahan, jadi field yang tidak dikenali dan metadata yang hilang yang ditoleransi runtime gagal run |638| `--strict` | Memperlakukan peringatan sebagai kesalahan, sehingga field yang tidak dikenali dan metadata yang hilang yang ditoleransi runtime menggagalkan eksekusi |

639| `--json` | Output laporan validasi sebagai satu objek JSON dengan kode keluar yang sama. Memerlukan Claude Code v2.1.259 atau lebih baru |639| `--json` | Menghasilkan laporan validasi sebagai satu objek JSON dengan exit code yang sama. Memerlukan Claude Code v2.1.259 atau yang lebih baru |

640 640 

641Validasi plugin sebelum melakukan:641Validasi plugin sebelum melakukan commit:

642 642 

643```bash theme={null}643```bash theme={null}

644claude plugin validate ./my-plugin --strict644claude plugin validate ./my-plugin --strict

645```645```

646 646 

647<h4 id="validate-a-directory">647<h4 id="validate-a-directory">

648 Validasi direktori648 Memvalidasi direktori

649</h4>649</h4>

650 650 

651`<path>` adalah file manifest atau direktori. Diberikan direktori, Claude Code memilih apa yang akan divalidasi oleh apa yang ditemukannya di sana:651`<path>` adalah file manifes atau direktori. Jika diberi direktori, Claude Code memilih apa yang divalidasi berdasarkan apa yang ditemukannya di sana:

652 652 

653* `.claude-plugin/marketplace.json`, ketika ada653* `.claude-plugin/marketplace.json`, jika ada

654* Sebaliknya `.claude-plugin/plugin.json`654* Jika tidak, `.claude-plugin/plugin.json`

655* Sebaliknya file komponen, dipilih oleh nama direktori. Memvalidasi file komponen tanpa manifest memerlukan Claude Code v2.1.233 atau lebih baru:655* Jika tidak, file komponen, yang dipilih berdasarkan nama direktori. Memvalidasi file komponen tanpa manifes memerlukan Claude Code v2.1.233 atau yang lebih baru:

656 * Direktori bernama `skills`, `agents`, atau `commands`: file di dalamnya656 * Direktori bernama `skills`, `agents`, atau `commands`: file-file di dalamnya

657 * Direktori bernama `.claude`: direktori `skills`, `agents`, dan `commands` di dalamnya657 * Direktori bernama `.claude`: direktori `skills`, `agents`, dan `commands` di dalamnya

658 * Direktori lain: tiga direktori itu di bawah `.claude`-nya658 * Direktori lainnya: ketiga direktori tersebut di bawah `.claude`-nya

659 659 

660Ketika direktori berisi `.claude-plugin/marketplace.json` dan `.claude-plugin/plugin.json` sekaligus, Claude Code memvalidasi marketplace serta manifest dan file komponen plugin. Ini memerlukan Claude Code v2.1.289 atau lebih baru.660Ketika direktori berisi `.claude-plugin/marketplace.json` sekaligus `.claude-plugin/plugin.json`, Claude Code memvalidasi marketplace dan juga manifes serta file komponen plugin. Ini memerlukan Claude Code v2.1.289 atau yang lebih baru.

661 661 

662Claude Code tidak mengikuti symlink di dalam direktori yang Anda beri nama. Apa yang dilakukan tergantung di mana linknya:662Claude Code tidak mengikuti symlink di dalam direktori yang Anda sebutkan. Apa yang dilakukannya bergantung pada letak tautan tersebut:

663 663 

664* **Direktori `skills`, `agents`, atau `commands` yang tertaut di bawah root plugin atau `.claude`**: Claude Code memperingatkan bahwa tidak ada yang di dalamnya dibaca.664* **Direktori `skills`, `agents`, atau `commands` yang ditautkan di bawah root plugin atau `.claude`**: Claude Code memperingatkan bahwa tidak ada isinya yang dibaca.

665* **Entri tertaut di dalam direktori `skills`, `agents`, atau `commands`**: Claude Code melewatinya dan memperingatkan, per direktori, berapa banyak entri yang dilewati yang akan dimuat sesi.665* **Entri yang ditautkan di dalam direktori `skills`, `agents`, atau `commands`**: Claude Code melewatinya dan memperingatkan, per direktori, berapa banyak entri yang dilewati yang akan dimuat oleh sesi.

666* **Direktori `skills`, `agents`, atau `commands` yang Anda beri nama adalah symlink sendiri, atau direktori `.claude` induknya**: Claude Code melaporkan kesalahan dan tidak memeriksa apa pun di dalamnya. Beri nama direktori nyata.666* **Direktori `skills`, `agents`, atau `commands` yang Anda sebutkan itu sendiri adalah symlink, atau direktori induk `.claude`-nya adalah symlink**: Claude Code melaporkan kesalahan dan tidak memeriksa apa pun di dalamnya. Sebutkan direktori yang sebenarnya sebagai gantinya.

667 667 

668Beberapa file tidak dibaca oleh run validasi:668Beberapa file tidak dibaca oleh eksekusi validasi:

669 669 

670* **`SKILL.md` di root plugin**: ketika Anda menjalankan `claude plugin validate` terhadap direktori plugin, Claude Code tidak memeriksa `SKILL.md` di root plugin670* **`SKILL.md` di root plugin**: ketika Anda menjalankan `claude plugin validate` terhadap direktori plugin, Claude Code tidak memeriksa `SKILL.md` di root plugin

671* **`CLAUDE.md` di root plugin**: dalam run plugin, Claude Code juga memperingatkan tentang `CLAUDE.md` di root plugin671* **`CLAUDE.md` di root plugin**: dalam eksekusi plugin, Claude Code juga memperingatkan tentang `CLAUDE.md` di root plugin

672* **File plugin dalam run marketplace**: dari direktori marketplace, Claude Code tidak membuka file skill, agent, command, atau hook dari plugin yang dicantumkan marketplace di direktori lain, maupun file server MCP yang dibundelnya. Untuk menemukan kesalahan di file itu, validasi setiap direktori plugin672* **File plugin dalam eksekusi marketplace**: dari direktori marketplace, Claude Code tidak membuka file skill, agent, perintah, atau hook dari plugin yang dicantumkan marketplace di direktori lain, maupun file server MCP yang dibundelnya. Untuk menemukan kesalahan di file-file tersebut, validasi setiap direktori plugin

673 673 

674<h4 id="output-and-exit-codes">674<h4 id="output-and-exit-codes">

675 Output dan kode keluar675 Output dan exit code

676</h4>676</h4>

677 677 

678Claude Code mencetak file yang divalidasi, kesalahan dan peringatan apa pun dengan jalurnya, dan baris putusan. Kode keluar mengikuti putusan:678Claude Code mencetak file yang divalidasinya, setiap kesalahan dan peringatan beserta path-nya, dan baris putusan. Exit code mengikuti putusan tersebut:

679 679 

680| Kode keluar | Baris putusan | Arti |680| Exit code | Baris putusan | Arti |

681| :- | :- | :- |681| :- | :- | :- |

682| `0` | `Validation passed` atau `Validation passed with warnings` | Manifest dimuat. Dengan `--strict`, tidak ada peringatan |682| `0` | `Validation passed` atau `Validation passed with warnings` | Manifes dapat dimuat. Dengan `--strict`, juga tanpa peringatan |

683| `1` | `Validation failed` atau `Validation failed (--strict treats warnings as errors)` | Kesalahan, atau peringatan di bawah `--strict` |683| `1` | `Validation failed` atau `Validation failed (--strict treats warnings as errors)` | Kesalahan, atau peringatan di bawah `--strict` |

684| `2` | `Unexpected error during validation: <reason>` | Validator sendiri gagal, seperti pada jalur yang tidak dapat dibaca |684| `2` | `Unexpected error during validation: <reason>` | Validator itu sendiri gagal, seperti pada path yang tidak dapat dibaca |

685 685 

686Dengan `--json`, Claude Code menulis laporan ke stdout sebagai satu objek JSON dengan field tingkat atas ini:686Dengan `--json`, Claude Code menulis laporan ke stdout sebagai satu objek JSON dengan field tingkat atas berikut:

687 687 

688* `success`: putusan yang sama yang diberikan kode keluar688* `success`: putusan yang sama dengan yang diberikan exit code

689* `strict`: apakah run memperlakukan peringatan sebagai kesalahan689* `strict`: apakah eksekusi memperlakukan peringatan sebagai kesalahan

690* `target`: jalur yang diselesaikan Claude Code divalidasi690* `target`: path yang telah di-resolve yang divalidasi Claude Code

691* `manifest`: hasil manifest sendiri, atau `null` untuk run tanpa manifest691* `manifest`: hasil manifes itu sendiri, atau `null` untuk eksekusi tanpa manifes

692* `contents`: hasil per-file, masing-masing menamai `file`-nya dan membawa array `errors`, `warnings`, dan `notes`692* `contents`: hasil per file, masing-masing menyebutkan `file`-nya dan membawa array `errors`, `warnings`, dan `notes`

693 * `gatingHooks`: apakah setiap hook [mod](/docs/id/plugins/mods/overview) yang dapat menolak suatu tindakan, seperti hook `tool.call`, memiliki [handler `.catch`](/docs/id/plugins/mods/events#handle-a-hook-that-fails). Setiap item memberikan `module`, `pattern`, `hook`, dan `hasCatch`. Memerlukan Claude Code v2.1.290 atau lebih baru693 * `gatingHooks`: apakah setiap hook [mod](/docs/id/plugins/mods/overview) yang dapat menolak suatu tindakan, seperti hook `tool.call`, memiliki [handler `.catch`](/docs/id/plugins/mods/events#handle-a-hook-that-fails). Setiap item memberikan `module`, `pattern`, `hook`, dan `hasCatch`. Memerlukan Claude Code v2.1.290 atau yang lebih baru

694 694 

695Pada keluar `2`, perintah tidak menulis apa pun ke stdout. Pesan kesalahan pergi ke stderr.695Pada exit `2`, perintah tidak menulis apa pun ke stdout. Pesan kesalahan dikirim ke stderr.

696 696 

697<h2 id="claude-plugin-marketplace-commands">697<h2 id="claude-plugin-marketplace-commands">

698 Perintah claude plugin marketplace698 Perintah claude plugin marketplace

Details

752 752 

753Frontmatter agent plugin mengikuti aturan ini:753Frontmatter agent plugin mengikuti aturan ini:

754 754 

755* **Field yang didukung**: `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color`, dan kunci `cacheTtl` dari `experimental`. Satu-satunya nilai `isolation` yang valid adalah `"worktree"`. Lihat [field frontmatter yang didukung](/docs/id/sub-agents#supported-frontmatter-fields) untuk apa yang dilakukan masing-masing755* **Field yang didukung**: `name`, `description`, `model`, `effort`, `maxTurns`, `autoCompactWindow`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color`, dan kunci `cacheTtl` dari `experimental`. Satu-satunya nilai `isolation` yang valid adalah `"worktree"`. Lihat [field frontmatter yang didukung](/docs/id/sub-agents#supported-frontmatter-fields) untuk apa yang dilakukan masing-masing

756* **Field yang diabaikan**: `permissionMode`, `hooks`, `mcpServers`, dan `initialPrompt`. File agent tidak dapat menambahkan hooks atau server MCP sendiri, jadi tambahkan itu sebagai plugin [hooks](#hooks) dan [server MCP](#mcp-servers) sebagai gantinya756* **Field yang diabaikan**: `permissionMode`, `hooks`, `mcpServers`, dan `initialPrompt`. File agent tidak dapat menambahkan hooks atau server MCP sendiri, jadi tambahkan itu sebagai plugin [hooks](#hooks) dan [server MCP](#mcp-servers) sebagai gantinya

757* **Frontmatter yang tidak diuraikan**: agent masih dimuat dengan setiap field diabaikan. Itu dinamai setelah file, dan deskripsinya berbunyi `Agent from my-plugin plugin`. Jalankan [`claude plugin validate`](/docs/id/plugins/cli-reference#plugin-validate) di shell Anda untuk menemukan file-file ini757* **Frontmatter yang tidak diuraikan**: agent masih dimuat dengan setiap field diabaikan. Itu dinamai setelah file, dan deskripsinya berbunyi `Agent from my-plugin plugin`. Jalankan [`claude plugin validate`](/docs/id/plugins/cli-reference#plugin-validate) di shell Anda untuk menemukan file-file ini

758 758 

Details

181 Batasi dependensi yang memiliki sumber non-git181 Batasi dependensi yang memiliki sumber non-git

182</h3>182</h3>

183 183 

184Resolusi berbasis tag hanya berlaku untuk sumber yang didukung git. Untuk dependensi dengan sumber plugin `npm`, `archive`, atau `command` [](/docs/id/plugins/marketplace-reference#plugin-sources), batasan tidak mengontrol versi mana yang diambil. Ini masih diperiksa ketika plugin dimuat, dan plugin dependen dinonaktifkan jika versi yang terinstal tidak memenuhinya.184Resolusi berbasis tag hanya berlaku untuk sumber yang didukung git. Untuk dependensi dengan [sumber plugin](/docs/id/plugins/marketplace-reference#plugin-sources) `npm`, `archive`, atau `command`, batasan tidak mengontrol versi mana yang diambil. Ini masih diperiksa ketika plugin dimuat, dan plugin dependen dinonaktifkan jika versi yang terinstal tidak memenuhinya.

185 185 

186Untuk sumber `npm`, `archive`, dan `command`, versi yang diperiksa adalah `version` dalam `plugin.json` dependensi. Tetapkan satu di sana sebelum Anda membatasi dependensi itu, karena `plugin.json` yang tidak menetapkan versi tidak memenuhi batasan apa pun.186Untuk sumber `npm`, `archive`, dan `command`, versi yang diperiksa adalah `version` dalam `plugin.json` dependensi. Tetapkan satu di sana sebelum Anda membatasi dependensi itu, karena `plugin.json` yang tidak menetapkan versi tidak memenuhi batasan apa pun.

187 187 


237 237 

238Ketika pengguna mencopot plugin terakhir yang membatasi dependensi, dependensi tidak lagi dibatasi ke rentang versi dan melanjutkan pelacakan entri marketplace-nya pada pembaruan berikutnya.238Ketika pengguna mencopot plugin terakhir yang membatasi dependensi, dependensi tidak lagi dibatasi ke rentang versi dan melanjutkan pelacakan entri marketplace-nya pada pembaruan berikutnya.

239 239 

240<h3 id="dependencies-when-your-plugin-loads-from-claude-ai">

241 Dependensi ketika plugin Anda dimuat dari claude.ai

242</h3>

243 

244Ketika pengguna mengaktifkan plugin Anda untuk akun claude.ai mereka, Claude Code memuatnya sebagai `<name>@synced`, [tanpa marketplace](/docs/id/plugins/loading#synced-plugins). Untuk salinan plugin Anda tersebut, Claude Code menganggap entri dependensi yang menyebutkan marketplace telah terpenuhi ketika pengguna memiliki salah satu dari berikut ini:

245 

246* **Dependensi dari marketplace-nya**: diinstal dari marketplace yang disebutkan oleh entri Anda, dan diaktifkan. Claude Code memeriksa rentang `version` dalam entri Anda terhadap versi salinan yang terinstal.

247* **Plugin claude.ai dengan nama yang sama**: diaktifkan dari akun claude.ai mereka. Claude Code memeriksa rentang `version` dalam entri Anda terhadap `version` plugin tersebut, dan plugin yang tidak menyatakan `version` lolos pemeriksaan.

248 

249Jika Anda memberi tahu pengguna untuk mengaktifkan plugin Anda dari claude.ai, beri tahu mereka untuk mengaktifkan dependensinya di sana juga, atau untuk menginstalnya dari marketplace-nya.

250 

251Plugin claude.ai memenuhi entri hanya ketika plugin Anda juga dimuat dari claude.ai.

252 

240<h2 id="see-also">253<h2 id="see-also">

241 Lihat juga254 Lihat juga

242</h2>255</h2>

Details

252 252 

253Untuk 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`.253Untuk 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`.

254 254 

255[Peristiwa lain](/docs/id/plugins/mods/reference#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](/docs/id/prompt-caching).255[Peristiwa lain](/docs/id/plugins/mods/reference#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](/docs/id/prompt-caching). Dalam hook `skill.prompt`, Anda juga dapat membaca [dari plugin atau file mana skill tersebut berasal](/docs/id/plugins/mods/reference#skill-prompt-fields).

256 256 

257<h3 id="follow-a-turn">257<h3 id="follow-a-turn">

258 Ikuti giliran258 Ikuti giliran

Details

4 4 

5# Ikhtisar Mods5# Ikhtisar Mods

6 6 

7> Tambahkan pane, perintah, dan aturan pemanggilan alat ke Claude Code dengan mod. Lihat apa yang dapat dilakukan mod, cara membuat atau memasang mod, dan tempat mod berjalan.7> Tambahkan pane, perintah, dan aturan panggilan tool ke Claude Code dengan mod. Lihat apa yang dapat dilakukan mod, cara membuat atau memasang mod, dan tempat mod berjalan.

8 8 

9Mod adalah [plugin](/docs/id/plugins/overview) yang mengubah tampilan dan perilaku Claude Code. Mod terdiri dari penanganan peristiwa JavaScript atau TypeScript: Claude Code memanggil satu ketika peristiwa terjadi, seperti pemanggilan alat, prompt yang dikirimkan, atau bagian dari antarmuka yang digambar, dan penanganan dapat memantau peristiwa, mengubahnya, atau mengambil alih. Gunakan mod untuk menambahkan fitur Anda sendiri ke Claude Code, seperti pane yang membuat bagan seberapa penuh konteks Anda setelah setiap permintaan. Untuk file dalam mod dan contoh lengkap, lihat [Cara kerja mod](#how-a-mod-works).9Mod adalah [plugin](/docs/id/plugins/overview) yang mengubah tampilan dan perilaku Claude Code. Mod terdiri dari penanganan peristiwa JavaScript atau TypeScript: Claude Code memanggil satu ketika peristiwa terjadi, seperti pemanggilan alat, prompt yang dikirimkan, atau bagian dari antarmuka yang digambar, dan penanganan dapat memantau peristiwa, mengubahnya, atau mengambil alih. Gunakan mod untuk menambahkan fitur Anda sendiri ke Claude Code, seperti pane yang membuat bagan seberapa penuh konteks Anda setelah setiap permintaan. Untuk file dalam mod dan contoh lengkap, lihat [Cara kerja mod](#how-a-mod-works).

10 10 


212 Tempat mod berjalan212 Tempat mod berjalan

213</h3>213</h3>

214 214 

215Hook mod berjalan di setiap jenis sesi yang memuat plugin. Menggambar lebih sempit: hanya terminal dan aplikasi Desktop yang menampilkan panes, bands, dan baris yang diganti mod. Tabel ini mencantumkan setiap tempat Anda mungkin menjalankan Claude Code:215Hook mod berjalan di setiap jenis sesi yang memuat plugin, penyedia mana pun yang melayani model, termasuk Amazon Bedrock, Agent Platform dari Google Cloud, dan Microsoft Foundry. Menggambar lebih sempit: hanya terminal dan aplikasi Desktop yang menampilkan panes, bands, dan baris yang diganti mod. Tabel ini mencantumkan setiap tempat Anda mungkin menjalankan Claude Code:

216 216 

217| Tempat Anda menjalankan Claude Code | Hook berjalan | Apa yang digambar mod muncul |217| Tempat Anda menjalankan Claude Code | Hook berjalan | Apa yang digambar mod muncul |

218| :- | :- | :- |218| :- | :- | :- |


263| `cc-plugin-plugin-authoring` | Memberikan Claude skill [`plugin-authoring`](/docs/id/plugins/mods/create#ask-claude-for-a-mod) untuk menulis mods. Memiliki skill dan tidak ada kode mod. | Kecuali Anthropic telah mematikan mods yang dipasang dari jarak jauh | Nonaktifkan di `/plugin` |263| `cc-plugin-plugin-authoring` | Memberikan Claude skill [`plugin-authoring`](/docs/id/plugins/mods/create#ask-claude-for-a-mod) untuk menulis mods. Memiliki skill dan tidak ada kode mod. | Kecuali Anthropic telah mematikan mods yang dipasang dari jarak jauh | Nonaktifkan di `/plugin` |

264| `cc-plugin-sec-default` | Menjaga apa yang dikelola organisasi Anda dari mods yang dipasang pengguna | [Tempat guard dimuat](/docs/id/plugins/mods/admin#know-what-happens-by-default) | Anda tidak bisa. Administrator [menetapkan urutan](/docs/id/plugins/mods/admin#install-your-organizations-mods) dalam pengaturan terkelola |264| `cc-plugin-sec-default` | Menjaga apa yang dikelola organisasi Anda dari mods yang dipasang pengguna | [Tempat guard dimuat](/docs/id/plugins/mods/admin#know-what-happens-by-default) | Anda tidak bisa. Administrator [menetapkan urutan](/docs/id/plugins/mods/admin#install-your-organizations-mods) dalam pengaturan terkelola |

265| `cc-plugin-telemetry` | Mengirim catatan analitik yang dicatat Claude Code dan mods bawaannya | Di mana pun analitik Claude Code sendiri aktif | Nonaktifkan di `/plugin`, atau matikan analitik, misalnya dengan [`DISABLE_TELEMETRY`](/docs/id/env-vars) |265| `cc-plugin-telemetry` | Mengirim catatan analitik yang dicatat Claude Code dan mods bawaannya | Di mana pun analitik Claude Code sendiri aktif | Nonaktifkan di `/plugin`, atau matikan analitik, misalnya dengan [`DISABLE_TELEMETRY`](/docs/id/env-vars) |

266| `cc-plugin-you-should-know` | Menjalankan agent samping yang mengawasi Anda saat Claude bekerja pada tugas yang lebih lama. Ketika menemukan sesuatu yang perlu diketahui yang mungkin Anda lewatkan, agent menampilkan catatan di atas prompt. | Dinonaktifkan secara default. Tercantum di `/plugin` -> **Installed** -> **Show disabled** jika tersedia untuk organisasi Anda. Aktifkan dengan [`/plugin enable cc-plugin-you-should-know@builtin`](/docs/id/plugins/cli-reference#plugin-in-a-session). | Nonaktifkan di `/plugin` |266| `cc-plugin-you-should-know` | [You should know](/docs/id/interactive-mode#you-should-know-suggestions): agent samping menampilkan catatan di atas prompt ketika menemukan sesuatu yang mungkin Anda lewatkan | Nonaktif sampai Anda [mengaktifkannya](/docs/id/interactive-mode#you-should-know-suggestions) | Nonaktifkan di `/plugin` |

267 267 

268Pengaturan dan flag yang menghentikan mods yang dipasang, seperti `disableAllHooks`, `--bare`, dan `--safe-mode`, tidak menghentikan mods bawaan.268Pengaturan dan flag yang menghentikan mods yang dipasang, seperti `disableAllHooks`, `--bare`, dan `--safe-mode`, tidak menghentikan mods bawaan.

269 269 

Details

43| `next.origin` | `{ plugin, tier }` dari pihak yang memicu event. Claude Code sendiri adalah `{ plugin: 'engine', tier: 'core' }`. `tier` sebuah mod adalah grup prioritasnya dalam [urutan mod dijalankan](/docs/id/plugins/mods/events#the-order-mods-run-in): `prepend`, `user`, `append`, atau `builtin`. |43| `next.origin` | `{ plugin, tier }` dari pihak yang memicu event. Claude Code sendiri adalah `{ plugin: 'engine', tier: 'core' }`. `tier` sebuah mod adalah grup prioritasnya dalam [urutan mod dijalankan](/docs/id/plugins/mods/events#the-order-mods-run-in): `prepend`, `user`, `append`, atau `builtin`. |

44| `next.budget` | Batas waktu hook dalam milidetik: `next.budget.ms` adalah seluruh batas, dan `next.budget.remainingMs` adalah sisa waktu saat ini |44| `next.budget` | Batas waktu hook dalam milidetik: `next.budget.ms` adalah seluruh batas, dan `next.budget.remainingMs` adalah sisa waktu saat ini |

45| `next.to(e, tier)` | Melompat ke tier yang lebih belakang, yaitu `append`, `builtin`, atau `core`. `next.to(e, 'append')` melewati mod yang diinstal pengguna. Hanya mod di `prependPlugins` atau `appendPlugins` yang dapat memanggilnya. |45| `next.to(e, tier)` | Melompat ke tier yang lebih belakang, yaitu `append`, `builtin`, atau `core`. `next.to(e, 'append')` melewati mod yang diinstal pengguna. Hanya mod di `prependPlugins` atau `appendPlugins` yang dapat memanggilnya. |

46| `next.error` | Hanya di handler `.catch`. `kind` adalah `throw` atau `timeout` saat hook gagal, dan `message` adalah teks error. `kind` adalah `re-entry` saat hook dilewati karena event berasal dari dalam salah satu panggilan API mod miliknya sendiri, dan `cause` adalah `lent` jika sebuah metode yang ditambahkan mod lain ke API mod memicu event tersebut. `re-entry` dan `cause` memerlukan Claude Code v2.1.292 atau yang lebih baru. |46| `next.error` | Hanya di handler `.catch`. `kind` adalah `throw` atau `timeout` saat hook gagal, dan `message` adalah teks error. `kind` adalah `re-entry` saat hook dilewati karena event berasal dari dalam panggilan API mod oleh hook tersebut atau oleh kode mod Anda di luar hook-nya. `re-entry` memerlukan Claude Code v2.1.292 atau yang lebih baru. |

47| `next.error.cause` | Hanya ditetapkan saat `kind` adalah `re-entry`. `rewritten` jika hook `tool.call` atau [`PreToolUse`](/docs/id/hooks#pretooluse) mengubah panggilan API mod yang menjadi asal event, atau hook `agent.spawn` mengubah agent yang dimulai oleh panggilan tersebut. `lent` jika sebuah metode yang ditambahkan mod lain ke API mod memicu event tersebut, kecuali `rewritten` juga berlaku. `lent` memerlukan Claude Code v2.1.292 atau yang lebih baru dan `rewritten` v2.1.300 atau yang lebih baru. |

47| `next.called` | Hanya di handler `.catch`. `true` saat hook telah memanggil `next`. |48| `next.called` | Hanya di handler `.catch`. `true` saat hook telah memanggil `next`. |

48 49 

49<h2 id="events">50<h2 id="events">


97| [`skill.prompt`](/docs/id/plugins/mods/events#rewrite-or-add-to-a-prompt) | Teks sebuah skill diperluas untuk Claude | `{ text }` |98| [`skill.prompt`](/docs/id/plugins/mods/events#rewrite-or-add-to-a-prompt) | Teks sebuah skill diperluas untuk Claude | `{ text }` |

98| `attribution.text` | Claude Code menyusun teks atribusi commit atau pull request | `{ text }` |99| `attribution.text` | Claude Code menyusun teks atribusi commit atau pull request | `{ text }` |

99 100 

101<h4 id="skill-prompt-fields">

102 Field sumber dan frontmatter pada `skill.prompt`

103</h4>

104 

105Dalam hook `skill.prompt`, Anda dapat membaca field berikut bersama dengan nama skill di `e.skill` dan teks yang dibaca Claude di `e.text`:

106 

107| Field | Tipe | Isinya |

108| :- | :- | :- |

109| `e.source` | string | Siapa yang menyediakan skill: `policySettings`, `userSettings`, atau `projectSettings` untuk skill di [lokasi](/docs/id/skills#where-skills-live) enterprise, pribadi, atau proyek, secara berurutan. Sumber lain memberikan kata seperti `plugin`, `mcp`, `syncedSkills`, atau `built-in`. |

110| `e.pluginName` | string | Nama plugin, untuk skill yang `e.source`-nya adalah `plugin` |

111| `e.path` | string | Path absolut file `SKILL.md` milik skill, atau file `.md`-nya untuk skill yang ditulis sebagai [file perintah](/docs/id/skills#where-skills-live). Tidak ada jika skill tidak memiliki file di mesin ini, seperti pada skill bawaan. |

112| `e.frontmatter` | object | Frontmatter dari file skill, sebagai data biasa |

113| `e.frontmatterProblem` | string | Alasan `e.frontmatter` tidak memuat frontmatter file atau salah satu key-nya, seperti dalam `is a list or a single value, not a table`. Tidak ada jika `e.frontmatter` memuat seluruh frontmatter atau skill tidak memilikinya. |

114 

115Hook dapat meneruskan `text` atau `frontmatter` yang diubah ke `next`: hook setelahnya membaca keduanya, dan Claude membaca `text` akhir. Hook yang mengubah field lain apa pun akan [gagal](/docs/id/plugins/mods/events#handle-a-hook-that-fails).

116 

117Pada `skill.prompt`, `e.source`, `e.pluginName`, `e.path`, `e.frontmatter`, dan `e.frontmatterProblem` memerlukan Claude Code v2.1.299 atau yang lebih baru.

118 

100<h3 id="commands-and-configuration">119<h3 id="commands-and-configuration">

101 Perintah dan konfigurasi120 Perintah dan konfigurasi

102</h3>121</h3>

Details

31* [**Skills**](/docs/id/plugins/components#skills): instruksi `SKILL.md` yang Claude muat saat relevan, dan yang juga dapat Anda jalankan sebagai perintah31* [**Skills**](/docs/id/plugins/components#skills): instruksi `SKILL.md` yang Claude muat saat relevan, dan yang juga dapat Anda jalankan sebagai perintah

32* [**Agents**](/docs/id/plugins/components#agents): definisi subagent yang dapat didelegasikan Claude32* [**Agents**](/docs/id/plugins/components#agents): definisi subagent yang dapat didelegasikan Claude

33* [**Hooks**](/docs/id/plugins/components#hooks): perintah yang dijalankan Claude Code pada titik dalam siklus hidupnya, seperti setelah setiap edit33* [**Hooks**](/docs/id/plugins/components#hooks): perintah yang dijalankan Claude Code pada titik dalam siklus hidupnya, seperti setelah setiap edit

34* [**A hooks module**](/docs/id/plugins/mods/overview): hooks yang ditulis sebagai fungsi JavaScript, yang juga dapat menggambar pane dan menambahkan perintah. Plugin yang memiliki satu disebut mod34* [**Modul hook**](/docs/id/plugins/mods/overview): hook yang ditulis sebagai fungsi JavaScript, yang juga dapat menggambar pane dan menambahkan perintah. Plugin yang memiliki satu disebut mod. Beberapa mod [sudah terpasang di Claude Code](/docs/id/plugins/mods/overview#mods-built-into-claude-code).

35* [**MCP servers**](/docs/id/plugins/components#mcp-servers): server alat yang terhubung dengan Claude Code saat plugin diaktifkan35* [**MCP servers**](/docs/id/plugins/components#mcp-servers): server alat yang terhubung dengan Claude Code saat plugin diaktifkan

36 36 

37Diagram ini menunjukkan plugin bernama `my-plugin` yang menyimpan skill, agent, hooks, dan server MCP, dan apa yang Anda dapatkan dari setiap file setelah plugin dimuat.37Diagram ini menunjukkan plugin bernama `my-plugin` yang menyimpan skill, agent, hooks, dan server MCP, dan apa yang Anda dapatkan dari setiap file setelah plugin dimuat.

Details

693| Pesan | Arti | Cara menyelesaikan |693| Pesan | Arti | Cara menyelesaikan |

694| :- | :- | :- |694| :- | :- | :- |

695| `Dependency "<dep>" is not installed` | Dependensi yang dideklarasikan tidak diinstal. | Instal di shell Anda dengan `claude plugin install <dep>@<marketplace>`, atau uninstal plugin. Jika marketplace dependensi belum terdaftar, tambahkan dan jalankan `/reload-plugins` dalam sesi Anda, yang menginstal dependensi yang hilang yang dapat diselesaikan. |695| `Dependency "<dep>" is not installed` | Dependensi yang dideklarasikan tidak diinstal. | Instal di shell Anda dengan `claude plugin install <dep>@<marketplace>`, atau uninstal plugin. Jika marketplace dependensi belum terdaftar, tambahkan dan jalankan `/reload-plugins` dalam sesi Anda, yang menginstal dependensi yang hilang yang dapat diselesaikan. |

696| `"<name>@synced" is loaded from your claude.ai account but meets a marketplace dependency only for other claude.ai plugins`, di dalam pesan `is not installed` | Dependensi menyebutkan marketplace, dan plugin dengan nama tersebut dimuat dari akun claude.ai Anda. Plugin yang mendeklarasikan dependensi tidak dimuat dari claude.ai, sehingga plugin claude.ai tidak memenuhinya. | Di shell Anda, jalankan `claude plugin install <dep>@<marketplace>` untuk menginstal dependensi dari marketplace-nya. Salinan marketplace kemudian dimuat sebagai pengganti salinan claude.ai. |

696| `Dependency "<dep>" is disabled` | Dependensi diinstal tetapi dimatikan. | Aktifkan dependensi, atau uninstal plugin yang membutuhkannya. |697| `Dependency "<dep>" is disabled` | Dependensi diinstal tetapi dimatikan. | Aktifkan dependensi, atau uninstal plugin yang membutuhkannya. |

697| `Requires "<dep>" <range>, installed <version>` | Versi dependensi yang diinstal berada di luar rentang yang dideklarasikan plugin. | Perbarui dependensi ke versi dalam rentang, atau uninstal plugin. |698| `Requires "<dep>" <range>, installed <version>` | Versi dependensi yang diinstal berada di luar rentang yang dideklarasikan plugin. | Perbarui dependensi ke versi dalam rentang, atau uninstal plugin. |

698| `<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. |699| `<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. |


700| `... 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. |701| `... 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. |

701| `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. |702| `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. |

702 703 

703Untuk melihat ini secara terprogram, jalankan `claude plugin list --json` di shell Anda. Plugin dengan masalah membawa field `errors` dengan pesan dan field `errorDetails` dengan `type` untuk masing-masing: dua baris pertama adalah `dependency-unsatisfied` dan yang ketiga adalah `dependency-version-unsatisfied`.704Untuk 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`.

704 705 

705<h2 id="plugin-installed-but-not-working">706<h2 id="plugin-installed-but-not-working">

706 Plugin installed but not working707 Plugin installed but not working

Details

211 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.211 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.

212</Tip>212</Tip>

213 213 

214Jika 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`](/docs/id/settings-reference#idlecompaction) ke `false`, yang memerlukan Claude Code v2.1.290 atau lebih baru.

215 

214<h3 id="accumulating-many-images">216<h3 id="accumulating-many-images">

215 Mengakumulasi banyak gambar217 Mengakumulasi banyak gambar

216</h3>218</h3>

Details

261 261 

262Pemeriksaan biometrik berjalan di perangkat melalui sistem operasi atau browser, mekanisme yang sama dengan masuk passkey. Anthropic tidak pernah menerima atau menyimpan sidik jari, data wajah, atau informasi biometrik lainnya. Hanya kunci publik perangkat dan metadata dasar seperti nama tampilan, platform, dan waktu pendaftaran yang disimpan.262Pemeriksaan biometrik berjalan di perangkat melalui sistem operasi atau browser, mekanisme yang sama dengan masuk passkey. Anthropic tidak pernah menerima atau menyimpan sidik jari, data wajah, atau informasi biometrik lainnya. Hanya kunci publik perangkat dan metadata dasar seperti nama tampilan, platform, dan waktu pendaftaran yang disimpan.

263 263 

264Pengaturan ini berlaku untuk Remote Control di Claude Code maupun [Cowork](https://claude.com/docs/cowork/overview). Halaman ini membahas sisi Claude Code. Obrolan Claude biasa, Claude Code di terminal, dan penggunaan API tidak terpengaruh.264Pengaturan ini berlaku untuk Remote Control di Claude Code dan untuk akses Computer di [Cowork](https://claude.com/docs/cowork/overview). Halaman ini membahas sisi Claude Code. Obrolan Claude biasa, Claude Code di terminal, dan penggunaan API tidak terpengaruh.

265 265 

266<h3 id="enable-trusted-devices-for-your-organization">266<h3 id="enable-trusted-devices-for-your-organization">

267 Aktifkan Perangkat Terpercaya untuk organisasi Tim atau Enterprise267 Aktifkan Perangkat Terpercaya untuk organisasi Tim atau Enterprise

routines.md +28 −15

Details

52 52 

53Formulir pembuatan menyiapkan prompt rutinitas, repositori, lingkungan, konektor, dan pemicu.53Formulir pembuatan menyiapkan prompt rutinitas, repositori, lingkungan, konektor, dan pemicu.

54 54 

55Rutinitas berjalan secara otonom sebagai sesi cloud Claude Code penuh: tidak ada pemilih mode izin, dan sesi menjalankan perintah shell, menggunakan [skills](/docs/id/skills) yang berkomitmen pada repositori yang diklon, dan memanggil konektor apa pun yang Anda sertakan, semuanya tanpa berhenti untuk persetujuan selain beberapa tindakan [artifact](/docs/id/artifacts).55Routine berjalan secara otonom sebagai sesi cloud Claude Code penuh: tidak ada pemilih mode izin, dan sesi menjalankan perintah shell, menggunakan [skills](/docs/id/skills) yang telah di-commit ke repositori yang diklon, dan memanggil konektor apa pun yang Anda sertakan, semuanya tanpa berhenti untuk meminta persetujuan kecuali untuk beberapa [tindakan artifact](#when-a-run-publishes-an-artifact-without-asking).

56 56 

57Apa yang dapat dijangkau rutinitas ditentukan oleh repositori yang Anda pilih, [lingkungan](/docs/id/cloud-environments) akses jaringan dan variabel, dan konektor yang Anda sertakan. Cakupan masing-masing ke apa yang benar-benar dibutuhkan rutinitas.57Apa yang dapat dijangkau rutinitas ditentukan oleh repositori yang Anda pilih, [lingkungan](/docs/id/cloud-environments) akses jaringan dan variabel, dan konektor yang Anda sertakan. Cakupan masing-masing ke apa yang benar-benar dibutuhkan rutinitas.

58 58 

59Ketika jadwal rutinitas atau **Run now** memulai jalankan, Claude menerbitkan kembali artifact yang ada tanpa bertanya hanya ketika semua hal ini berlaku:

60 

61* Anda dapat mengedit artifact dan itu milik organisasi Anda sendiri

62* Artifact tidak dibagikan secara publik

63* Jika artifact dibagikan dengan orang-orang tertentu atau organisasi Anda, penontonnya tidak secara otomatis melihat setiap versi baru

64* Penerbitan hanya membawa halaman, tanpa file pendukung atau apa pun yang ditambahkan, dan tidak memaksa versi yang lebih baru

65* Halaman tidak memiliki hibah yang melampaui halaman, seperti [panggilan konektor](/docs/id/artifacts#pull-live-data-with-mcp-connectors)

66 

67Dalam setiap kasus lain, termasuk menerbitkan artifact baru, Claude bertanya terlebih dahulu. Ketika pekerjaan rutinitas adalah menjaga halaman tetap terkini, berikan artifact yang sudah Anda terbitkan.

68 

69Rutinitas milik akun claude.ai individual Anda. Mereka tidak dibagikan dengan rekan kerja, dan mereka dihitung terhadap tunjangan jalankan akun Anda [usage and limits](#usage-and-limits). Apa pun yang dilakukan rutinitas melalui identitas GitHub yang terhubung atau konektor muncul sebagai Anda: komit dan permintaan tarik membawa pengguna GitHub Anda, dan pesan Slack, tiket Linear, atau tindakan konektor lainnya menggunakan akun tertaut Anda untuk layanan tersebut.59Rutinitas milik akun claude.ai individual Anda. Mereka tidak dibagikan dengan rekan kerja, dan mereka dihitung terhadap tunjangan jalankan akun Anda [usage and limits](#usage-and-limits). Apa pun yang dilakukan rutinitas melalui identitas GitHub yang terhubung atau konektor muncul sebagai Anda: komit dan permintaan tarik membawa pengguna GitHub Anda, dan pesan Slack, tiket Linear, atau tindakan konektor lainnya menggunakan akun tertaut Anda untuk layanan tersebut.

70 60 

71<h3 id="create-from-the-web">61<h3 id="create-from-the-web">


93 Pilih [lingkungan cloud](/docs/id/cloud-environments) untuk rutinitas. Lingkungan mengontrol apa yang dapat diakses sesi cloud:83 Pilih [lingkungan cloud](/docs/id/cloud-environments) untuk rutinitas. Lingkungan mengontrol apa yang dapat diakses sesi cloud:

94 84 

95 * **Network access**: atur tingkat akses internet yang tersedia selama setiap jalankan85 * **Network access**: atur tingkat akses internet yang tersedia selama setiap jalankan

96 * **Environment variables**: sediakan nilai yang dapat digunakan Claude selama setiap run. Nilai tersebut [terlihat oleh siapa pun yang menggunakan lingkungan](/docs/id/cloud-environments#what-carries-over-from-your-setup), jadi pada paket Pro dan Max, simpan kunci untuk API yang dipanggil Claude selama run sebagai [network secrets](/docs/id/cloud-environments#add-network-secrets) sebagai gantinya. Bagian itu juga mencantumkan permintaan yang tidak pernah mendapatkan secret86 * **Environment variables**: sediakan nilai yang dapat digunakan Claude selama setiap run. Nilai tersebut [terlihat oleh siapa pun yang menggunakan lingkungan](/docs/id/cloud-environments#what-carries-over-from-your-setup), jadi di lingkungan yang di-host Anthropic, simpan kunci untuk API yang dipanggil Claude selama run sebagai [network secrets](/docs/id/cloud-environments#add-network-secrets) sebagai gantinya. Bagian itu juga mencantumkan permintaan yang tidak pernah mendapatkan secret

97 * **Setup script**: instal dependensi dan alat yang dibutuhkan rutinitas. Hasilnya [di-cache](/docs/id/cloud-environments#environment-caching), jadi skrip tidak berjalan ulang pada setiap sesi87 * **Setup script**: instal dependensi dan alat yang dibutuhkan rutinitas. Hasilnya [di-cache](/docs/id/cloud-environments#environment-caching), jadi skrip tidak berjalan ulang pada setiap sesi

98 88 

99 Lingkungan **Default** disediakan dengan akses jaringan **Trusted**, yang memungkinkan hanya [daftar allowlist default](/docs/id/cloud-environments#default-allowed-domains) registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum melalui jaringan sesi. Konektor yang Anda tambahkan ke rutinitas menjangkau layanan mereka melalui server Anthropic, jadi mereka tidak memerlukan perubahan allowlist. Jika rutinitas Anda perlu menjangkau layanan Anda sendiri secara langsung, atau domain di luar daftar itu, edit [akses jaringan](/docs/id/cloud-environments#network-access) lingkungan sebelum menjalankan. Untuk menggunakan lingkungan terpisah, [buat satu](/docs/id/cloud-environments#configure-your-environment) terlebih dahulu.89 Lingkungan **Default** disediakan dengan akses jaringan **Trusted**, yang memungkinkan hanya [daftar allowlist default](/docs/id/cloud-environments#default-allowed-domains) registri paket, API penyedia cloud, registri kontainer, dan domain pengembangan umum melalui jaringan sesi. Konektor yang Anda tambahkan ke rutinitas menjangkau layanan mereka melalui server Anthropic, jadi mereka tidak memerlukan perubahan allowlist. Jika rutinitas Anda perlu menjangkau layanan Anda sendiri secara langsung, atau domain di luar daftar itu, edit [akses jaringan](/docs/id/cloud-environments#network-access) lingkungan sebelum menjalankan. Untuk menggunakan lingkungan terpisah, [buat satu](/docs/id/cloud-environments#configure-your-environment) terlebih dahulu.


182 172 

183Pemicu API memberikan rutinitas titik akhir HTTP khusus. POSTing ke titik akhir dengan token pembawa rutinitas memulai sesi baru dan mengembalikan URL sesi. Gunakan ini untuk menghubungkan Claude Code ke sistem peringatan, saluran pipa penyebaran, alat internal, atau di mana pun Anda dapat membuat permintaan HTTP yang diautentikasi.173Pemicu API memberikan rutinitas titik akhir HTTP khusus. POSTing ke titik akhir dengan token pembawa rutinitas memulai sesi baru dan mengembalikan URL sesi. Gunakan ini untuk menghubungkan Claude Code ke sistem peringatan, saluran pipa penyebaran, alat internal, atau di mana pun Anda dapat membuat permintaan HTTP yang diautentikasi.

184 174 

185Pemicu API ditambahkan ke rutinitas yang ada dari web. CLI saat ini tidak dapat membuat atau mencabut token.175Pemicu API ditambahkan ke routine yang ada dari web. CLI saat ini tidak dapat membuat, meregenerasi, atau menghapus token.

186 176 

187<Steps>177<Steps>

188 <Step title="Buka rutinitas untuk diedit">178 <Step title="Buka rutinitas untuk diedit">


202 </Step>192 </Step>

203</Steps>193</Steps>

204 194 

205Setiap rutinitas memiliki token sendiri, dibatasi untuk memicu rutinitas itu saja. Untuk memutar atau mencabut, kembali ke modal yang sama dan klik **Regenerate** atau **Revoke**.195Setiap routine memiliki token sendiri, dibatasi untuk memicu routine itu saja. Untuk mematikan akses API atau memutar token, kembali ke modal yang sama:

196 

197* **Matikan akses API**: klik **Delete token**, ikon tempat sampah di sebelah **Regenerate**

198* **Putar token**: klik **Regenerate**

206 199 

207<h4 id="trigger-a-routine">200<h4 id="trigger-a-routine">

208 Picu rutinitas201 Picu rutinitas


379 372 

380Untuk mengelola atau menambahkan konektor di luar formulir rutinitas, kunjungi [claude.ai/customize/connectors](https://claude.ai/customize/connectors) atau gunakan `/schedule update` di CLI.373Untuk mengelola atau menambahkan konektor di luar formulir rutinitas, kunjungi [claude.ai/customize/connectors](https://claude.ai/customize/connectors) atau gunakan `/schedule update` di CLI.

381 374 

375<h3 id="when-a-run-publishes-an-artifact-without-asking">

376 Ketika eksekusi memublikasikan artifact tanpa bertanya

377</h3>

378 

379Ketika jadwal routine atau **Run now** memulai eksekusi, Claude dapat memublikasikan [artifact](/docs/id/artifacts) baru tanpa bertanya. Artifact baru tersebut hanya terlihat oleh Anda sampai Anda [membagikannya](/docs/id/artifacts#share-an-artifact). Jika publikasi mendeklarasikan kapabilitas runtime untuk halaman tersebut, seperti [panggilan konektor](/docs/id/artifacts#pull-live-data-with-mcp-connectors) atau [unduhan file](/docs/id/artifacts#offer-a-file-download), Claude akan bertanya terlebih dahulu.

380 

381Dalam eksekusi tersebut, Claude memublikasikan ulang artifact yang sudah ada tanpa bertanya hanya jika semua kondisi berikut terpenuhi:

382 

383* Anda dapat mengedit artifact tersebut dan artifact tersebut milik organisasi Anda sendiri

384* Jika publikasi memuat lebih dari sekadar halaman, seperti file pendukung, Anda adalah pemilik artifact tersebut

385* Artifact tidak dibagikan secara publik

386* Jika artifact dibagikan dengan orang tertentu atau organisasi Anda, penontonnya tidak secara otomatis melihat setiap versi baru

387* Publikasi tidak memaksa menimpa versi yang lebih baru

388* Publikasi tidak mendeklarasikan kapabilitas runtime untuk halaman tersebut

389* Halaman yang sudah ada tidak memiliki hak akses yang menjangkau di luar halaman, seperti [panggilan konektor](/docs/id/artifacts#pull-live-data-with-mcp-connectors)

390 

391Dalam semua kasus lainnya, termasuk eksekusi yang dimulai oleh pemicu API atau GitHub, Claude akan bertanya terlebih dahulu.

392 

393Ketika tugas routine adalah menjaga sebuah halaman tetap mutakhir, berikan artifact yang sudah Anda publikasikan.

394 

382<h3 id="environments-and-network-access">395<h3 id="environments-and-network-access">

383 Lingkungan dan akses jaringan396 Lingkungan dan akses jaringan

384</h3>397</h3>


403 </Step>416 </Step>

404 417 

405 <Step title="Ubah tingkat akses jaringan">418 <Step title="Ubah tingkat akses jaringan">

406 Dalam dialog **Edit environment**, ubah **Network access** menjadi **Custom** dan masukkan domain Anda di **Allowed domains**. Centang **Also include default list of common package managers** untuk mempertahankan [allowlist default](/docs/id/cloud-environments#default-allowed-domains) bersama domain kustom Anda. Pilih **Full** sebagai gantinya untuk akses tanpa batas.419 Dalam dialog **Edit cloud environment**, ubah **Network access** menjadi **Custom** dan masukkan domain Anda di **Allowed domains**. Centang **Also include default list of common package managers** untuk mempertahankan [allowlist default](/docs/id/cloud-environments#default-allowed-domains) bersama domain kustom Anda. Pilih **Full** sebagai gantinya untuk akses tanpa batas.

407 </Step>420 </Step>

408 421 

409 <Step title="Simpan">422 <Step title="Simpan">

Details

79 79 

80Dalam sesi di mana [Monitor tool tersedia](/docs/id/tools-reference#monitor-tool), Claude dapat menggunakannya secara langsung ketika Anda meminta jadwal `/loop` dinamis. Monitor menjalankan skrip latar belakang dan mengalirkan setiap baris output kembali, yang menghindari polling sama sekali dan sering lebih efisien token dan responsif daripada menjalankan kembali prompt pada interval.80Dalam sesi di mana [Monitor tool tersedia](/docs/id/tools-reference#monitor-tool), Claude dapat menggunakannya secara langsung ketika Anda meminta jadwal `/loop` dinamis. Monitor menjalankan skrip latar belakang dan mengalirkan setiap baris output kembali, yang menghindari polling sama sekali dan sering lebih efisien token dan responsif daripada menjalankan kembali prompt pada interval.

81 81 

82Loop yang dijadwalkan secara dinamis muncul dalam [daftar tugas terjadwal](#manage-scheduled-tasks) Anda seperti tugas lainnya, jadi Anda dapat membuat daftar atau membatalkannya dengan cara yang sama. Aturan [jitter](#jitter) tidak berlaku untuk itu, tetapi [kedaluwarsa tujuh hari](#seven-day-expiry) berlaku.82Loop yang dijadwalkan secara dinamis muncul dalam [daftar tugas terjadwal](#manage-scheduled-tasks) Anda seperti tugas lainnya, jadi Anda dapat membuat daftar atau membatalkannya dengan cara yang sama. Daftar tersebut menampilkan wakeup yang tertunda sebagai tugas sekali jalan, sehingga wakeup yang dijadwalkan untuk `:00` atau `:30` dapat [berjalan sedikit lebih awal](#when-a-one-shot-task-runs-early). [Kedaluwarsa tujuh hari](#seven-day-expiry) juga berlaku untuk loop tersebut.

83 83 

84<span id="loop-provider-differences" />84<span id="loop-provider-differences" />

85 85 


174| Alat | Tujuan |174| Alat | Tujuan |

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

176| `CronCreate` | Jadwalkan tugas baru. Menerima ekspresi cron 5-field, prompt untuk dijalankan, dan apakah itu berulang atau berjalan sekali. |176| `CronCreate` | Jadwalkan tugas baru. Menerima ekspresi cron 5-field, prompt untuk dijalankan, dan apakah itu berulang atau berjalan sekali. |

177| `CronList` | Buat daftar semua tugas terjadwal dengan ID, jadwal, dan prompt mereka. |177| `CronList` | Buat daftar tugas terjadwal dengan ID, jadwal, [waktu jalan berikutnya](#jitter), dan prompt mereka. |

178| `CronDelete` | Batalkan tugas berdasarkan ID. |178| `CronDelete` | Batalkan tugas berdasarkan ID. |

179 179 

180Setiap tugas terjadwal memiliki ID 8-karakter yang dapat Anda berikan ke `CronDelete`. Sesi dapat menampung hingga 50 tugas terjadwal sekaligus.180Setiap tugas terjadwal memiliki ID 8-karakter yang dapat Anda berikan ke `CronDelete`. Sesi dapat menampung hingga 50 tugas terjadwal sekaligus.


193 193 

194Tugas terjadwal dapat berjalan pada waktu yang berbeda dari yang tertera pada jadwalnya. Jika tugas setiap sesi berjalan tepat sesuai jadwal, banyak di antaranya akan memanggil API pada saat yang sama, sehingga Claude Code menggeser waktu berjalan setiap tugas. Tugas berulang berjalan terlambat, kecuali tugas yang berjalan setiap lima menit, yang ditulis `*/5 * * * *`. Tugas sekali jalan yang dijadwalkan tepat pada jam atau setengah jam berjalan sedikit lebih awal.194Tugas terjadwal dapat berjalan pada waktu yang berbeda dari yang tertera pada jadwalnya. Jika tugas setiap sesi berjalan tepat sesuai jadwal, banyak di antaranya akan memanggil API pada saat yang sama, sehingga Claude Code menggeser waktu berjalan setiap tugas. Tugas berulang berjalan terlambat, kecuali tugas yang berjalan setiap lima menit, yang ditulis `*/5 * * * *`. Tugas sekali jalan yang dijadwalkan tepat pada jam atau setengah jam berjalan sedikit lebih awal.

195 195 

196Untuk melihat kapan tugas berikutnya jatuh tempo, baca baris di bawah panggilan `CronCreate` Claude di terminal Anda. Baris tersebut menampilkan waktu itu setelah jadwal, misalnya `next run 10:21 AM`. Untuk memeriksanya lagi nanti, [minta Claude untuk menampilkan daftar tugas Anda](#manage-scheduled-tasks) dan cari `next run` pada baris-baris di bawah panggilan `CronList`. Waktu berjalan berikutnya pada baris-baris ini memerlukan Claude Code v2.1.299 atau yang lebih baru.

197 

196<h4 id="how-late-a-recurring-task-runs">198<h4 id="how-late-a-recurring-task-runs">

197 Seberapa terlambat tugas berulang berjalan199 Seberapa terlambat tugas berulang berjalan

198</h4>200</h4>

Details

1001. Runner dengan kapasitas gratis mengklaim sesi dan memegang sewa padanya.1001. Runner dengan kapasitas gratis mengklaim sesi dan memegang sewa padanya.

1012. Runner mengkloning repositori ke direktori kerjanya dan memulai proses Claude Code anak.1012. Runner mengkloning repositori ke direktori kerjanya dan memulai proses Claude Code anak.

1023. Anak streaming peristiwa kembali melalui HTTPS sementara runner terus polling; setiap poll menyegarkan sewa dan berfungsi ganda sebagai detak jantung.1023. Anak streaming peristiwa kembali melalui HTTPS sementara runner terus polling; setiap poll menyegarkan sewa dan berfungsi ganda sebagai detak jantung.

1034. Jika runner berhenti polling, sewanya berakhir setelah sekitar 60 detik, dan server memasukkan kembali sesi ke antrian untuk runner lain dalam beberapa menit.1034. Jika runner berhenti polling, sewanya berakhir setelah sekitar 60 detik. Server kemudian dapat memerlukan beberapa menit dan terkadang lebih lama untuk memasukkan kembali sesi ke antrian untuk runner lain.

104 104 

105Runner memberikan setiap permintaan poll 10 detik. Ketika permintaan habis waktu, hilang, atau mendapat respons yang tidak dapat diurai runner, runner terus melayani sesi aktifnya dan mencoba lagi setelah satu atau dua detik daripada menunggu poll terjadwal berikutnya. Misalnya, proxy intersepsi yang menjawab poll dengan halaman miliknya sendiri menghasilkan respons yang tidak dapat diurai runner. Setiap kali permintaan lain gagal dengan salah satu cara itu, runner menggandakan celah sebelum percobaan ulang berikutnya, hingga 20 detik, dan mempersingkat celah kapan pun sewa hampir kedaluwarsa.105Runner memberikan setiap permintaan poll 10 detik. Ketika permintaan habis waktu, hilang, atau mendapat respons yang tidak dapat diurai runner, runner terus melayani sesi aktifnya dan mencoba lagi setelah satu atau dua detik daripada menunggu poll terjadwal berikutnya. Misalnya, proxy intersepsi yang menjawab poll dengan halaman miliknya sendiri menghasilkan respons yang tidak dapat diurai runner. Setiap kali permintaan lain gagal dengan salah satu cara itu, runner menggandakan celah sebelum percobaan ulang berikutnya, hingga 20 detik, dan mempersingkat celah kapan pun sewa hampir kedaluwarsa.

106 106 

Details

40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | Untuk sesi Claude Tag yang dimiliki oleh satu thread Slack, timestamp Slack thread tersebut, seperti `1700000000.000100`. Dapat tidak diatur, dan dapat diatur ketika `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` tidak diatur, jadi periksa setiap variabel secara terpisah. |40| `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` | Untuk sesi Claude Tag yang dimiliki oleh satu thread Slack, timestamp Slack thread tersebut, seperti `1700000000.000100`. Dapat tidak diatur, dan dapat diatur ketika `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL` tidak diatur, jadi periksa setiap variabel secara terpisah. |

41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Jalur absolut ke file per-sesi yang menyimpan JWT sesi saat ini, tetap segar di seluruh penyegaran token. Subproses shell membacanya untuk header `Authorization` mereka saat mengunduh lampiran yang ditambahkan pengguna ke sesi. `exec` menyimpan variabel secara otomatis; wrapper yang membangun kembali lingkungan anak harus membawa variabel, atau unduhan lampiran berhenti bekerja diam-diam. |41| `CLAUDE_SESSION_INGRESS_TOKEN_FILE` | Jalur absolut ke file per-sesi yang menyimpan JWT sesi saat ini, tetap segar di seluruh penyegaran token. Subproses shell membacanya untuk header `Authorization` mereka saat mengunduh lampiran yang ditambahkan pengguna ke sesi. `exec` menyimpan variabel secara otomatis; wrapper yang membangun kembali lingkungan anak harus membawa variabel, atau unduhan lampiran berhenti bekerja diam-diam. |

42| `CLAUDE_CONFIG_DIR` | Direktori konfigurasi Claude per-sesi, ditulis saat awal sesi dari snapshot konfigurasi host runner yang ditangkap runner saat startup; lihat [Permissions and tool approval](#permissions-and-tool-approval). Penulisan di sini terisolasi ke sesi ini. Direktori tetap di bawah `<base-dir>/_sessions/` setelah sesi berakhir kecuali Anda memulai runner dengan [`--remove-session-state`](/docs/id/self-hosted-environments-reference#runner-cli-flags); lihat [Reuse a pre-warmed checkout](/docs/id/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |42| `CLAUDE_CONFIG_DIR` | Direktori konfigurasi Claude per-sesi, ditulis saat awal sesi dari snapshot konfigurasi host runner yang ditangkap runner saat startup; lihat [Permissions and tool approval](#permissions-and-tool-approval). Penulisan di sini terisolasi ke sesi ini. Direktori tetap di bawah `<base-dir>/_sessions/` setelah sesi berakhir kecuali Anda memulai runner dengan [`--remove-session-state`](/docs/id/self-hosted-environments-reference#runner-cli-flags); lihat [Reuse a pre-warmed checkout](/docs/id/self-hosted-environments-deploy#reuse-a-pre-warmed-checkout). |

43| `CLAUDE_CODE_REMOTE_MCP_CONFIG` | Jalur ke file di `CLAUDE_CONFIG_DIR` yang menyimpan definisi server MCP yang dikirimkan bidang kontrol Anthropic untuk sesi ini. Jika wrapper Anda membangun kembali lingkungan anak, bawa variabel ini. Tanpanya, ketika bidang kontrol memperbarui server yang dikirimkan, anak mematikan setiap server stdio, HTTP, atau SSE yang ditambahkan wrapper Anda dengan [`--mcp-config`](/docs/id/cli-reference#cli-flags) yang tidak ada dalam pembaruan tersebut. Memerlukan Claude Code v2.1.299 atau lebih baru. |

43| `ANTHROPIC_BASE_URL` | URL dasar API yang akan digunakan anak, dikirimkan oleh bidang kontrol per sesi dan biasanya `https://api.anthropic.com`. Jangan timpa: kredensial inferensi sesi adalah token OAuth yang dikeluarkan Anthropic yang tidak diterima penyedia lain. |44| `ANTHROPIC_BASE_URL` | URL dasar API yang akan digunakan anak, dikirimkan oleh bidang kontrol per sesi dan biasanya `https://api.anthropic.com`. Jangan timpa: kredensial inferensi sesi adalah token OAuth yang dikeluarkan Anthropic yang tidak diterima penyedia lain. |

44| `CLAUDE_CODE_OAUTH_TOKEN` | Token akses OAuth jangka pendek yang digunakan anak untuk inferensi model, dibatasi untuk inferensi model dan unggahan file saja, dengan masa pakai sekitar 30 menit. Runner mencetak ulang sebelum kedaluwarsa dan mengirimkan rotasi melalui stdin anak, jadi wrapper yang tidak [menjaga stdin terlampir](#keep-stdin-and-file-descriptor-3-attached) hanya melihat nilai awal. Jangan andalkan allowlist IP organisasi Anda untuk membatasi penggunaan token ini: perlakukan sebagai kredensial pembawa yang tetap dapat digunakan selama kira-kira 30 menit jika bocor, dan jangan catat, tulis ke disk, atau teruskan di luar kontainer sesi. |45| `CLAUDE_CODE_OAUTH_TOKEN` | Token akses OAuth jangka pendek yang digunakan anak untuk inferensi model, dibatasi untuk inferensi model dan unggahan file saja, dengan masa pakai sekitar 30 menit. Runner mencetak ulang sebelum kedaluwarsa dan mengirimkan rotasi melalui stdin anak, jadi wrapper yang tidak [menjaga stdin terlampir](#keep-stdin-and-file-descriptor-3-attached) hanya melihat nilai awal. Jangan andalkan allowlist IP organisasi Anda untuk membatasi penggunaan token ini: perlakukan sebagai kredensial pembawa yang tetap dapat digunakan selama kira-kira 30 menit jika bocor, dan jangan catat, tulis ke disk, atau teruskan di luar kontainer sesi. |

45 46 


51 Berikan nilai default untuk variabel yang dapat tidak diatur52 Berikan nilai default untuk variabel yang dapat tidak diatur

52</h3>53</h3>

53 54 

54`CCR_SESSION_ACCOUNT_EMAIL`, `CLAUDE_RUNNER_CLIENT_PLATFORM`, `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL`, dan `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` masing-masing dapat tidak diatur. Jika skrip Anda menggunakan `set -u`, Bash berhenti dengan `unbound variable` ketika mengekspansi variabel yang tidak diatur, jadi ekspansikan dengan nilai default, seperti `${CCR_SESSION_ACCOUNT_EMAIL:-}`.55`CCR_SESSION_ACCOUNT_EMAIL`, `CLAUDE_RUNNER_CLIENT_PLATFORM`, `CLAUDE_CODE_REMOTE_SLACK_THREAD_URL`, dan `CLAUDE_CODE_REMOTE_SLACK_THREAD_TS` masing-masing dapat tidak diatur. Jika skrip Anda menggunakan `set -u`, Bash berhenti dengan `unbound variable` ketika mengekspansi variabel yang tidak diatur, jadi ekspansikan dengan nilai default, seperti `"${CCR_SESSION_ACCOUNT_EMAIL:-}"`.

55 56 

56Di mana pun shell mengekspansi tautan thread Slack, lakukan tindakan pencegahan berikut:57<h3 id="quote-the-arguments-and-variables-your-script-expands">

58 Beri tanda kutip pada argumen dan variabel yang diekspansi skrip Anda

59</h3>

60 

61Beri tanda kutip pada setiap argumen dan variabel yang diteruskan runner ke wrapper Anda atau [hook `command`](#command). Beberapa nilai berisi karakter yang diproses shell, karena nilai tersebut menyimpan JSON, kalimat utuh, atau [aturan izin](/docs/id/permissions#permission-rule-syntax) seperti `Bash(npm run test *)`.

57 62 

58* **Beri tanda kutip**: tautan dapat berisi karakter yang diproses shell, seperti `?` dan `&`, jadi beri tanda kutip pada variabel, seperti dalam `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`.63* **Argumen**: teruskan sebagai `"$@"`

59* **Jauhkan nilainya dari string `eval` dan `sh -c`**: jangan substitusikan nilainya ke dalam string yang dijalankan `eval` atau `sh -c`, bahkan di dalam tanda kutip. Buat string tersebut mereferensikan variabelnya sebagai gantinya.64* **Variabel**: beri tanda kutip pada masing-masing, seperti dalam `"${CLAUDE_CODE_REMOTE_SLACK_THREAD_URL:-}"`. Tautan thread Slack, misalnya, dapat berisi `?` dan `&`.

65* **String `eval` dan `sh -c`**: jangan substitusikan nilai ke dalam string yang dijalankan `eval` atau `sh -c`, bahkan di dalam tanda kutip. Buat string tersebut mereferensikan variabelnya sebagai gantinya.

60 66 

61<h3 id="keep-stdin-and-file-descriptor-3-attached">67<h3 id="keep-stdin-and-file-descriptor-3-attached">

62 Jaga stdin dan file descriptor 3 terlampir68 Jaga stdin dan file descriptor 3 terlampir


136| `CLAUDE_RUNNER_SESSION_ID` | ID sesi dalam bentuk `session_...` yang ditandai, untuk logging dan korelasi |142| `CLAUDE_RUNNER_SESSION_ID` | ID sesi dalam bentuk `session_...` yang ditandai, untuk logging dan korelasi |

137| `CLAUDE_RUNNER_SESSION_UUID` | ID sesi yang sama dalam bentuk UUID kanonik |143| `CLAUDE_RUNNER_SESSION_UUID` | ID sesi yang sama dalam bentuk UUID kanonik |

138| `CLAUDE_RUNNER_API_BASE_URL` | URL dasar API Anthropic untuk panggilan yang dibatasi sesi |144| `CLAUDE_RUNNER_API_BASE_URL` | URL dasar API Anthropic untuk panggilan yang dibatasi sesi |

139| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Surface klien yang membuat sesi, seperti `web_claude_ai`, `desktop_app`, atau `ios`. Tidak diatur ketika sesi tidak memiliki surface yang tercatat atau dikenali, jadi rujuk sebagai `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` di bawah `set -u`. Memerlukan Claude Code v2.1.229 atau lebih baru. |145| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Surface klien yang membuat sesi, seperti `web_claude_ai`, `desktop_app`, atau `ios`. Tidak diatur ketika sesi tidak memiliki surface yang tercatat atau dikenali, jadi rujuk sebagai `"${CLAUDE_RUNNER_CLIENT_PLATFORM:-}"` di bawah `set -u`. Memerlukan Claude Code v2.1.229 atau lebih baru. |

140| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Token akses sesi, untuk panggilan API yang dibatasi sesi |146| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Token akses sesi, untuk panggilan API yang dibatasi sesi |

141| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Pengaturan git yang ditetapkan runner untuk git yang dijalankan hook Anda. [Konfigurasi Git di dalam lifecycle hooks](#git-configuration-inside-lifecycle-hooks) menjelaskannya. Memerlukan Claude Code v2.1.280 atau lebih baru. |147| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Pengaturan git yang ditetapkan runner untuk git yang dijalankan hook Anda. [Konfigurasi Git di dalam lifecycle hooks](#git-configuration-inside-lifecycle-hooks) menjelaskannya. Memerlukan Claude Code v2.1.280 atau lebih baru. |

142 148 


159 165 

160Hook gagal ketika keluar dengan kode bukan nol, atau keluar dengan 0 tanpa meninggalkan checkout yang dapat digunakan:166Hook gagal ketika keluar dengan kode bukan nol, atau keluar dengan 0 tanpa meninggalkan checkout yang dapat digunakan:

161 167 

162* **Repositori yang sesi dorong hasil ke**: runner gagal sesi, dan pada keluar bukan nol permukaan ekor stderr skrip ke pengguna.168* **Repositori tempat sesi melakukan push hasil**: runner menggagalkan sesi, dan pada keluar dengan kode bukan nol menampilkan bagian akhir stderr skrip kepada pengguna. Tulis alasannya ke stderr sebagai satu baris singkat, tulis di bagian paling akhir, lalu keluar dengan kode bukan nol. Jangan mencetak rahasia ke stderr, dan hapus `set -x` sebelum Anda men-deploy hook.

163* **Repositori yang hanya dibaca sesi**, seperti repositori yang ditambahkan ke sesi yang sedang berjalan: runner mencatat baris `[runner:warn]` dengan detail kegagalan, memposting langkah `Skipped` ke sesi, menghapus apa pun yang ditinggalkan hook di jalur checkout, dan melanjutkan dengan repositori yang tersisa. Jika proses melewati ini membuat sesi tidak memiliki repositori sama sekali, runner tetap menggagalkan sesi.169* **Repositori yang hanya dibaca sesi**, seperti repositori yang ditambahkan ke sesi yang sedang berjalan: runner mencatat baris `[runner:warn]` dengan detail kegagalan, memposting langkah `Skipped` ke sesi, menghapus apa pun yang ditinggalkan hook di jalur checkout, dan melanjutkan dengan repositori yang tersisa. Jika proses melewati ini membuat sesi tidak memiliki repositori sama sekali, runner tetap menggagalkan sesi.

164 170 

165Ketika hook berhasil, runner menghapus jalur checkout setelah sesi berakhir.171Ketika hook berhasil, runner menghapus jalur checkout setelah sesi berakhir.


180| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Jalur absolut yang dipisahkan titik dua dari pohon kerja sesi. Kosong untuk sesi tanpa repo. |186| `CLAUDE_RUNNER_WORKSPACE_PATHS` | Jalur absolut yang dipisahkan titik dua dari pohon kerja sesi. Kosong untuk sesi tanpa repo. |

181| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Jalur ke log debug sesi, masih di disk saat hook berjalan |187| `CLAUDE_RUNNER_DEBUG_LOG_PATH` | Jalur ke log debug sesi, masih di disk saat hook berjalan |

182| `CLAUDE_RUNNER_API_BASE_URL` | URL dasar API Anthropic untuk panggilan yang dibatasi sesi |188| `CLAUDE_RUNNER_API_BASE_URL` | URL dasar API Anthropic untuk panggilan yang dibatasi sesi |

183| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Surface klien yang membuat sesi, seperti `web_claude_ai`, `desktop_app`, atau `ios`. Tidak diatur ketika sesi tidak memiliki surface yang tercatat atau dikenali, jadi rujuk sebagai `${CLAUDE_RUNNER_CLIENT_PLATFORM:-}` di bawah `set -u`. Memerlukan Claude Code v2.1.229 atau lebih baru. |189| `CLAUDE_RUNNER_CLIENT_PLATFORM` | Surface klien yang membuat sesi, seperti `web_claude_ai`, `desktop_app`, atau `ios`. Tidak diatur ketika sesi tidak memiliki surface yang tercatat atau dikenali, jadi rujuk sebagai `"${CLAUDE_RUNNER_CLIENT_PLATFORM:-}"` di bawah `set -u`. Memerlukan Claude Code v2.1.229 atau lebih baru. |

184| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Token akses sesi, untuk panggilan API yang dibatasi sesi |190| `CLAUDE_CODE_SESSION_ACCESS_TOKEN` | Token akses sesi, untuk panggilan API yang dibatasi sesi |

185| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Pengaturan git yang ditetapkan runner untuk git yang dijalankan hook Anda. [Konfigurasi Git di dalam lifecycle hooks](#git-configuration-inside-lifecycle-hooks) menjelaskannya. Memerlukan Claude Code v2.1.280 atau lebih baru. |191| `GIT_CONFIG_COUNT`, `GIT_CONFIG_KEY_n`, `GIT_CONFIG_VALUE_n` | Pengaturan git yang ditetapkan runner untuk git yang dijalankan hook Anda. [Konfigurasi Git di dalam lifecycle hooks](#git-configuration-inside-lifecycle-hooks) menjelaskannya. Memerlukan Claude Code v2.1.280 atau lebih baru. |

186 192 


3293. **Gunakan kontrak exit code.** Keluar dengan status yang sesuai dengan hasilnya:3353. **Gunakan kontrak exit code.** Keluar dengan status yang sesuai dengan hasilnya:

330 336 

331 * **Keluar 0**: dikirimkan.337 * **Keluar 0**: dikirimkan.

332 * **Keluar 1**: kegagalan yang dapat dicoba ulang. Sesi mundur dan ditawarkan kembali.338 * **Keluar 1, atau masih berjalan saat `--hook-timeout` berakhir**: kegagalan yang dapat dicoba ulang. Sesi mundur dan ditawarkan kembali.

333 * **Keluar 2 atau lebih tinggi**: kegagalan yang tidak dapat dicoba ulang. Sesi diblokir dari pemijahan lagi sampai pengguna mengirimkan pesan baru ke sesi tersebut atau [Owner](/docs/id/cloud-environments#organization-shared-environments) memilih **Retry** di atasnya di tab **Activity** lingkungan.339 * **Keluar 2 atau lebih tinggi**: kegagalan yang tidak dapat dicoba ulang. Sesi diblokir dari pemijahan lagi sampai pengguna mengirimkan pesan baru ke sesi tersebut atau [Owner](/docs/id/cloud-environments#organization-shared-environments) memilih **Retry** di atasnya di tab **Activity** lingkungan.

334 340 

335 Pada keluar bukan nol, ekor stderr hook muncul di tab **Activity** sebagai alasan kegagalan, jadi tulis kesalahan yang dapat ditindaklanjuti ke stderr dan jangan pernah menulis rahasia di sana. Dalam hook shell, [pertahankan kegagalan sementara agar dapat dicoba ulang](#keep-transient-failures-retryable-in-a-shell-hook).341 Pada keluar bukan nol, ekor stderr hook muncul di tab **Activity** sebagai alasan kegagalan, jadi tulis kesalahan yang dapat ditindaklanjuti ke stderr dan jangan pernah menulis rahasia di sana. Dalam hook shell, [pertahankan kegagalan sementara agar dapat dicoba ulang](#keep-transient-failures-retryable-in-a-shell-hook).


341 347 

342Sesi yang tetap antri tanpa kesalahan pemijahan di tab **Activity** dapat berarti hook dikunci pada ID sesi. Untuk mengonfirmasi, periksa apakah platform Anda memiliki beban kerja untuk permintaan pemijahan pertama sesi itu dan tidak ada untuk permintaan ulang. Jika demikian, kunci beban kerja pada `CLAUDE_RUNNER_ORDER_ID` sebagai gantinya.348Sesi yang tetap antri tanpa kesalahan pemijahan di tab **Activity** dapat berarti hook dikunci pada ID sesi. Untuk mengonfirmasi, periksa apakah platform Anda memiliki beban kerja untuk permintaan pemijahan pertama sesi itu dan tidak ada untuk permintaan ulang. Jika demikian, kunci beban kerja pada `CLAUDE_RUNNER_ORDER_ID` sebagai gantinya.

343 349 

350<h4 id="make-on-demand-runners-exit-when-idle">

351 Buat runner on-demand keluar saat idle

352</h4>

353 

354Secara default, runner yang dimulai oleh hook Anda tidak keluar ketika giliran sesinya selesai, sehingga beban kerja yang Anda kirimkan tetap berjalan. Agar runner keluar, minta hook Anda meneruskan [flag runner](/docs/id/self-hosted-environments-reference#runner-cli-flags) berikut:

355 

356| Flag, dengan contoh nilai | Teruskan ke | Fungsinya |

357| :- | :- | :- |

358| `--release-idle-session-min 30` | Setiap runner yang dimulai oleh hook Anda | Runner melepaskan sesinya setelah idle selama jumlah menit tersebut lalu keluar dengan 0. Sesi dilanjutkan ketika penggunanya mengirim pesan berikutnya, tetapi [pekerjaan yang belum di-push akan hilang](/docs/id/self-hosted-environments-deploy#additional-limitations). |

359| `--kill-session-after-min 480` | Setiap runner yang dimulai oleh hook Anda | Membatasi setiap sesi hingga jumlah menit tersebut, sebagai cadangan untuk [sesi yang tidak dihitung sebagai idle](/docs/id/self-hosted-environments-deploy#some-sessions-don’t-count-as-idle), jadi atur nilainya di atas sesi terpanjang yang Anda perkirakan |

360| `--exit-if-unused-min 60` | Runner standby, yang dimulai oleh hook Anda untuk permintaan pre-warming | Runner standby yang tidak pernah mengambil sesi akan keluar setelah jumlah menit tersebut. Jika Anda mengatur [`--min-idle`](/docs/id/self-hosted-environments-reference#orchestrator-cli-flags), Anda akan mendapatkan pengganti kecuali standby tersebut berlebih, jadi gunakan nilai yang jauh di atas waktu boot Anda. |

361 

362Hapus beban kerja ketika runner keluar, misalnya dengan mengatur `ttlSecondsAfterFinished` pada Kubernetes Job atau dengan membuat skrip start VM menghapus VM tersebut setelahnya.

363 

344<h4 id="keep-transient-failures-retryable-in-a-shell-hook">364<h4 id="keep-transient-failures-retryable-in-a-shell-hook">

345 Pertahankan kegagalan sementara agar dapat dicoba ulang dalam hook shell365 Pertahankan kegagalan sementara agar dapat dicoba ulang dalam hook shell

346</h4>366</h4>


484* [File MCP terkelola](/docs/id/managed-mcp) cakupan enterprise pada jalur sistem standarnya: `/etc/claude-code/managed-mcp.json` pada host runner Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` pada host macOS. Gunakan file ini untuk armada yang dikunci ketat di mana hanya server yang didaftarkan administrator yang boleh dimuat. Lihat [kontrol eksklusif dengan managed-mcp.json](/docs/id/managed-mcp#exclusive-control-with-managed-mcp-json) untuk aturan prioritas. Ketika file ini ada di host runner, Claude Code melewati server MCP yang dikirimkan control plane Anthropic ke sesi, termasuk konektor claude.ai, dan menyebutkan namanya dalam peringatan di stderr proses anak sesi, yang dicatat runner pada level log `debug`. Sebelum v2.1.229, sesi tersebut keluar saat startup dengan `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.504* [File MCP terkelola](/docs/id/managed-mcp) cakupan enterprise pada jalur sistem standarnya: `/etc/claude-code/managed-mcp.json` pada host runner Linux, `/Library/Application Support/ClaudeCode/managed-mcp.json` pada host macOS. Gunakan file ini untuk armada yang dikunci ketat di mana hanya server yang didaftarkan administrator yang boleh dimuat. Lihat [kontrol eksklusif dengan managed-mcp.json](/docs/id/managed-mcp#exclusive-control-with-managed-mcp-json) untuk aturan prioritas. Ketika file ini ada di host runner, Claude Code melewati server MCP yang dikirimkan control plane Anthropic ke sesi, termasuk konektor claude.ai, dan menyebutkan namanya dalam peringatan di stderr proses anak sesi, yang dicatat runner pada level log `debug`. Sebelum v2.1.229, sesi tersebut keluar saat startup dengan `You cannot dynamically configure MCP servers when an enterprise MCP config is present`.

485* Kunci [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) dalam [pengaturan terkelola](/docs/id/managed-settings) pada host runner: menyediakan server HTTP dan SSE tanpa mengambil kontrol eksklusif, sehingga server dari sumber lain tetap dimuat. Memerlukan Claude Code v2.1.259 atau yang lebih baru.505* Kunci [`managedMcpServers`](/docs/id/settings-reference#managedmcpservers) dalam [pengaturan terkelola](/docs/id/managed-settings) pada host runner: menyediakan server HTTP dan SSE tanpa mengambil kontrol eksklusif, sehingga server dari sumber lain tetap dimuat. Memerlukan Claude Code v2.1.259 atau yang lebih baru.

486* `<repo>/.mcp.json`: cakupan project. Lakukan commit file ini ke repositori; server-servernya disetujui secara otomatis di sesi cloud. Dalam sesi dengan beberapa repositori, [paling banyak file dari satu repositori yang dimuat](#repository-settings-in-sessions-with-several-repositories).506* `<repo>/.mcp.json`: cakupan project. Lakukan commit file ini ke repositori; server-servernya disetujui secara otomatis di sesi cloud. Dalam sesi dengan beberapa repositori, [paling banyak file dari satu repositori yang dimuat](#repository-settings-in-sessions-with-several-repositories).

507* File [`--mcp-config`](/docs/id/cli-reference#cli-flags) dari skrip wrapper Anda: tambahkan flag tersebut setelah `"$@"`, seperti pada `exec "$CLAUDE_RUNNER_CLAUDE_BIN" "$@" --mcp-config /etc/claude/mcp.json`. Agar server dari file tersebut tetap berjalan ketika server yang dikirimkan ke sesi diperbarui di tengah sesi, pastikan wrapper Anda meneruskan [environment lengkap](#wrapper-scripts) ke proses anak, seperti yang dilakukan `exec`. Sebelum v2.1.299, server stdio, HTTP, dan SSE dalam file tersebut berhenti pada pembaruan pertama semacam itu yang tidak menyebutkan namanya.

487 508 

488Ketika pengiriman konektor diaktifkan untuk organisasi Anda, control plane Anthropic mengirimkan konektor yang telah Anda konfigurasikan di claude.ai ke sesi yang dibuat secara interaktif melalui konfigurasi MCP yang disediakan server, yang dirutekan melalui `api.anthropic.com`. Sesi yang dibuat secara terprogram, seperti [dispatch CLI](/docs/id/self-hosted-environments-testing#run-the-test-loop), tidak menerima pengiriman konektor; berikan server MCP kepada sesi tersebut melalui sumber lain yang tercantum di bagian ini. Token OAuth proses anak tidak membawa scope untuk mengambil konektor secara langsung, sehingga proses anak tidak mencoba pengambilan tersebut sendiri; pengiriman digerakkan oleh server.509Ketika pengiriman konektor diaktifkan untuk organisasi Anda, control plane Anthropic mengirimkan konektor yang telah Anda konfigurasikan di claude.ai ke sesi yang dibuat secara interaktif melalui konfigurasi MCP yang disediakan server, yang dirutekan melalui `api.anthropic.com`. Sesi yang dibuat secara terprogram, seperti [dispatch CLI](/docs/id/self-hosted-environments-testing#run-the-test-loop), tidak menerima pengiriman konektor; berikan server MCP kepada sesi tersebut melalui sumber lain yang tercantum di bagian ini. Token OAuth proses anak tidak membawa scope untuk mengambil konektor secara langsung, sehingga proses anak tidak mencoba pengambilan tersebut sendiri; pengiriman digerakkan oleh server.

489 510 

Details

182* `credential.helper` yang mengembalikan token berscope minimal182* `credential.helper` yang mengembalikan token berscope minimal

183* `GIT_SSH_COMMAND` menunjuk ke kunci berscope sempit183* `GIT_SSH_COMMAND` menunjuk ke kunci berscope sempit

184 184 

185Mekanisme apa pun yang Anda konfigurasi harus bekerja tanpa prompt, karena klon built-in runner dan fetch menonaktifkan prompt yang git, SSH, dan Git Credential Manager akan menampilkan:185<span id="git-must-work-without-a-prompt" />Mekanisme apa pun yang Anda konfigurasi harus bekerja tanpa prompt, karena klon built-in runner dan fetch menonaktifkan prompt yang git, SSH, dan Git Credential Manager akan menampilkan:

186 186 

187* Runner menetapkan `GIT_TERMINAL_PROMPT=0`, jadi git tidak meminta nama pengguna atau kata sandi.187* Runner menetapkan `GIT_TERMINAL_PROMPT=0`, jadi git tidak meminta nama pengguna atau kata sandi.

188* Runner menjalankan SSH dengan `BatchMode=yes`, ditambahkan ke `GIT_SSH_COMMAND` Anda jika Anda menetapkan satu, jadi SSH tidak meminta frasa sandi atau konfirmasi host.188* Runner menjalankan SSH dengan `BatchMode=yes`, ditambahkan ke `GIT_SSH_COMMAND` Anda jika Anda menetapkan satu, jadi SSH tidak meminta frasa sandi atau konfirmasi host.


212* **Hanya github.com**: Anthropic melayani sebuah sesi hanya ketika semua repositorinya berada di github.com, dan proxy git belum mendukung GitHub Enterprise Server. Pada runner dengan proxy git, sesi dengan repositori di host git lain [gagal dimulai](#when-anthropic-doesnt-serve-a-session).212* **Hanya github.com**: Anthropic melayani sebuah sesi hanya ketika semua repositorinya berada di github.com, dan proxy git belum mendukung GitHub Enterprise Server. Pada runner dengan proxy git, sesi dengan repositori di host git lain [gagal dimulai](#when-anthropic-doesnt-serve-a-session).

213* **Kredensial hanya untuk repositori sesi**: Anthropic menyediakan kredensial git untuk repositori yang merupakan bagian dari sesi, bukan untuk repositori lain di host git yang sama. Submodule privat, dependensi yang di-fetch oleh package manager Anda dengan git, atau marketplace plugin di repositori lain tidak mendapatkan kredensial dari Anthropic. Minta orang-orang yang membuat sesi untuk [menambahkan setiap repositori](/docs/id/web-quickstart#start-a-task) yang dibutuhkan sesi saat mereka membuatnya.213* **Kredensial hanya untuk repositori sesi**: Anthropic menyediakan kredensial git untuk repositori yang merupakan bagian dari sesi, bukan untuk repositori lain di host git yang sama. Submodule privat, dependensi yang di-fetch oleh package manager Anda dengan git, atau marketplace plugin di repositori lain tidak mendapatkan kredensial dari Anthropic. Minta orang-orang yang membuat sesi untuk [menambahkan setiap repositori](/docs/id/web-quickstart#start-a-task) yang dibutuhkan sesi saat mereka membuatnya.

214* **Hanya push branch**: push yang menghapus branch gagal, begitu pula push ke jenis ref lain, seperti tag. Untuk branch mana yang dapat diperbarui oleh push, lihat [GitHub proxy](/docs/id/cloud-environments#github-proxy).214* **Hanya push branch**: push yang menghapus branch gagal, begitu pula push ke jenis ref lain, seperti tag. Untuk branch mana yang dapat diperbarui oleh push, lihat [GitHub proxy](/docs/id/cloud-environments#github-proxy).

215* **Akun GitHub yang terhubung**: orang yang membuat sesi pengguna harus telah menghubungkan GitHub di claude.ai, atau sesi [tidak dimulai](#creator-has-no-github-connection).215* **Akun GitHub yang terhubung**: minta setiap orang yang membuat sesi pengguna dengan repositori untuk [menghubungkan GitHub](/docs/id/web-quickstart#connect-github). Tanpa koneksi mereka sendiri, sesi tersebut [tidak dimulai](#creator-has-no-github-connection).

216* **`--capacity 1`**: proxy git memerlukan satu sesi per proses runner, jadi jalankan lebih banyak replika untuk paralelisme. [Aktifkan proxy git Anthropic](#turn-the-anthropic-git-proxy-on) mencantumkan persyaratannya.216* **`--capacity 1`**: proxy git memerlukan satu sesi per proses runner, jadi jalankan lebih banyak replika untuk paralelisme. [Aktifkan proxy git Anthropic](#turn-the-anthropic-git-proxy-on) mencantumkan persyaratannya.

217* **Konfigurasi git global yang digantikan**: runner [menghapus dan menggantikan konfigurasi git global](#git-proxy-replaces-global-git-config) milik pengguna yang menjalankannya. Jalankan runner sebagai pengguna khusus atau di dalam kontainer.217* **Konfigurasi git global yang digantikan**: runner [menghapus dan menggantikan konfigurasi git global](#git-proxy-replaces-global-git-config) milik pengguna yang menjalankannya. Jalankan runner sebagai pengguna khusus atau di dalam kontainer.

218* **Kredensial host untuk push dari host**: push [`--push-outcome-on-release`](/docs/id/self-hosted-environments-reference#runner-cli-flags) milik runner dan push apa pun yang dilakukan [hook `post-session`](/docs/id/self-hosted-environments-configuration#post-session) Anda tetap menggunakan kredensial git milik host runner sendiri dan [jalur jaringannya ke `github.com`](#github-com-egress-with-the-anthropic-git-proxy). Untuk kredensial tersebut, lihat [Kirim konfigurasi git dalam gambar Anda](#ship-git-config-in-your-image).218* **Kredensial host untuk push dari host**: push [`--push-outcome-on-release`](/docs/id/self-hosted-environments-reference#runner-cli-flags) milik runner dan push apa pun yang dilakukan [hook `post-session`](/docs/id/self-hosted-environments-configuration#post-session) Anda tetap menggunakan kredensial git milik host runner sendiri dan [jalur jaringannya ke `github.com`](#github-com-egress-with-the-anthropic-git-proxy). Jauhkan kredensial tersebut dari [konfigurasi git global](#git-proxy-replaces-global-git-config), dan lihat [Kirim konfigurasi git dalam gambar Anda](#ship-git-config-in-your-image) untuk cara menyediakannya.

219* **Keputusan per sesi**: Anthropic memutuskan untuk setiap sesi di runner apakah akan melayani git-nya, dan sesi yang tidak dilayaninya gagal dimulai. [Ketika sesi gagal dimulai pada runner dengan proxy git](#when-anthropic-doesnt-serve-a-session) membahas penyebabnya.219* **Keputusan per sesi**: Anthropic memutuskan untuk setiap sesi di runner apakah akan melayani git-nya, dan sesi yang tidak dilayaninya gagal dimulai. [Ketika sesi gagal dimulai pada runner dengan proxy git](#when-anthropic-doesnt-serve-a-session) membahas penyebabnya.

220 220 

221<span id="git-proxy-replaces-global-git-config" />221<span id="git-proxy-replaces-global-git-config" />


356URL repositori tiba dari bidang kontrol sebagai HTTPS, dengan nama host dari host git Anda; untuk GitHub Enterprise, itu adalah nama host yang Anda konfigurasi untuk [integrasi GitHub Enterprise](/docs/id/github-enterprise-server) di claude.ai. Dua flag yang dapat diulang menulis ulang URL tersebut sebelum klon:356URL repositori tiba dari bidang kontrol sebagai HTTPS, dengan nama host dari host git Anda; untuk GitHub Enterprise, itu adalah nama host yang Anda konfigurasi untuk [integrasi GitHub Enterprise](/docs/id/github-enterprise-server) di claude.ai. Dua flag yang dapat diulang menulis ulang URL tersebut sebelum klon:

357 357 

358* `--git-host-rewrite <from>=<to>`: untuk split-horizon DNS, di mana Anthropic menjangkau host git Anda melalui nama host eksternal tetapi runner harus menggunakan yang internal358* `--git-host-rewrite <from>=<to>`: untuk split-horizon DNS, di mana Anthropic menjangkau host git Anda melalui nama host eksternal tetapi runner harus menggunakan yang internal

359* `--git-ssh-rewrite <host>`: untuk host git yang hanya menerima SSH, menulis ulang `https://<host>/owner/repo` ke `git@<host>:owner/repo`359* `--git-ssh-rewrite <host>`: untuk host git yang hanya menerima SSH, atau host runner yang hanya memiliki kunci SSH. Misalnya, untuk meng-clone repositori github.com melalui SSH, tambahkan `--git-ssh-rewrite github.com` ke perintah runner. Runner kemudian menulis ulang `https://github.com/owner/repo` menjadi `git@github.com:owner/repo`. SSH harus [terhubung tanpa prompt](#git-must-work-without-a-prompt).

360 360 

361Penulisan ulang host berjalan terlebih dahulu, jadi daftar nama host internal dalam `--git-ssh-rewrite` jika Anda memerlukan keduanya. Untuk kontrol penuh atas checkout, gunakan [`checkout` lifecycle hook](/docs/id/self-hosted-environments-configuration#checkout).361Penulisan ulang host berjalan terlebih dahulu, jadi daftar nama host internal dalam `--git-ssh-rewrite` jika Anda memerlukan keduanya. Untuk kontrol penuh atas checkout, gunakan [`checkout` lifecycle hook](/docs/id/self-hosted-environments-configuration#checkout).

362 362 


578 578 

579Berikan stop timeout host Anda setidaknya jumlah dari tiga bagian: `n` menit yang Anda konfigurasi, post-release grace, dan drain yang dijelaskan [Shutdown timing](#shutdown-timing). Dengan pengaturan default, post-release grace adalah 75 detik dan drain memerlukan hingga 80 detik, jadi sediakan `n` menit ditambah 155 detik. Runner mencetak jumlah ini saat startup kapan pun `--defer-shutdown-max-min` diatur.579Berikan stop timeout host Anda setidaknya jumlah dari tiga bagian: `n` menit yang Anda konfigurasi, post-release grace, dan drain yang dijelaskan [Shutdown timing](#shutdown-timing). Dengan pengaturan default, post-release grace adalah 75 detik dan drain memerlukan hingga 80 detik, jadi sediakan `n` menit ditambah 155 detik. Runner mencetak jumlah ini saat startup kapan pun `--defer-shutdown-max-min` diatur.

580 580 

581Jika stop timeout habis sebelum runner selesai, host membunuh runner. Sesi yang masih dipegang tidak mendapatkan hook `post-session`. Runner tidak deregisters, dan control plane mengantrekan kembali sesi dalam beberapa menit. Jika Anda tidak dapat memberikan stop timeout jumlah itu, biarkan `--defer-shutdown-max-min` tidak diatur sehingga runner mendrainkan pada sinyal pertama sebagai gantinya.581Jika stop timeout habis sebelum runner selesai, sesi yang masih dipegangnya tidak mendapatkan hook `post-session`. Runner tidak melakukan deregistrasi, sehingga control plane dapat memerlukan beberapa menit, dan terkadang lebih lama, untuk mengantrekan kembali sesi tersebut. Jika Anda tidak dapat memberikan stop timeout jumlah itu, biarkan `--defer-shutdown-max-min` tidak diatur sehingga runner mendrainkan pada sinyal pertama sebagai gantinya.

582 582 

583<h3 id="what-reaches-a-running-post-session-hook">583<h3 id="what-reaches-a-running-post-session-hook">

584 Apa yang mencapai hook post-session yang sedang berjalan584 Apa yang mencapai hook post-session yang sedang berjalan


720 720 

721* **Runner tidak muncul di lingkungan**: konfirmasi bahwa host dapat menjangkau `api.anthropic.com` melalui HTTPS, rahasia lingkungan saat ini, dan jam host berada dalam lima menit dari waktu nyata; skew yang lebih besar menyebabkan autentikasi gagal. Log runner `[runner:fatal]` dengan alasan penolakan pada kegagalan auth.721* **Runner tidak muncul di lingkungan**: konfirmasi bahwa host dapat menjangkau `api.anthropic.com` melalui HTTPS, rahasia lingkungan saat ini, dan jam host berada dalam lima menit dari waktu nyata; skew yang lebih besar menyebabkan autentikasi gagal. Log runner `[runner:fatal]` dengan alasan penolakan pada kegagalan auth.

722* **Runner keluar saat startup dengan `cannot create or write to base directory`**: runner tidak dapat membuat atau menulis ke `--base-dir`, yang secara default adalah `/workspace`. Perbaiki kepemilikan direktori atau arahkan `--base-dir` ke jalur yang dapat ditulis, seperti dijelaskan dalam [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). Jika runner malah mencatat `[runner:fatal]` mengatakan pemeriksaan direktori dasar habis waktu, direktori berada pada mount NFS atau CSI yang tergantung. Periksa kesehatan mount daripada izin. Runner mencetak kedua kegagalan startup ini ke stderr sebelum membuka `--log-file`, jadi cari di terminal atau log kontainer platform Anda daripada file log. Sebelum v2.1.225, runner tidak memeriksa direktori dasar saat startup, dan misconfiguration ini gagal sesi setelah pickup sebagai gantinya.722* **Runner keluar saat startup dengan `cannot create or write to base directory`**: runner tidak dapat membuat atau menulis ke `--base-dir`, yang secara default adalah `/workspace`. Perbaiki kepemilikan direktori atau arahkan `--base-dir` ke jalur yang dapat ditulis, seperti dijelaskan dalam [Keep the base directory and capacity identical across runners](#keep-the-base-directory-and-capacity-identical-across-runners). Jika runner malah mencatat `[runner:fatal]` mengatakan pemeriksaan direktori dasar habis waktu, direktori berada pada mount NFS atau CSI yang tergantung. Periksa kesehatan mount daripada izin. Runner mencetak kedua kegagalan startup ini ke stderr sebelum membuka `--log-file`, jadi cari di terminal atau log kontainer platform Anda daripada file log. Sebelum v2.1.225, runner tidak memeriksa direktori dasar saat startup, dan misconfiguration ini gagal sesi setelah pickup sebagai gantinya.

723* **Runner keluar saat startup dengan `RegisterRunner failed:` dan kesalahan sertifikat TLS**: kesalahannya dapat berupa `self signed certificate in certificate chain`, misalnya. Runner tidak memercayai otoritas sertifikat (CA) di balik sertifikat yang diterimanya, seperti yang terjadi di balik proxy yang melakukan inspeksi TLS. Atur [`NODE_EXTRA_CA_CERTS`](/docs/id/network-config#custom-ca-certificates) di lingkungan runner ke file PEM yang berisi root CA proxy.

724 

725 Anda tidak perlu mengaturnya lagi untuk sesi, yang mewarisinya. Git tidak membacanya: untuk clone melalui proxy tersebut, atur juga [`GIT_SSL_CAINFO`](#trust-a-private-certificate-authority-with-anthropic-managed-git).

726* **Orchestrator mencatat `poll failed:` dengan kesalahan sertifikat TLS dan terus mencoba ulang**: orchestrator tidak memercayai CA di balik sertifikat yang diterimanya, seperti yang terjadi di balik proxy yang melakukan inspeksi TLS. Atur [`NODE_EXTRA_CA_CERTS`](/docs/id/network-config#custom-ca-certificates) di lingkungan orchestrator ke file PEM yang berisi root CA proxy. Atur juga untuk runner yang dimulai oleh hook `spawn-runner` Anda.

727 

728 Misalnya, sebuah baris dapat berakhir dengan `poll failed: self signed certificate in certificate chain — retrying in 1s`, dengan kata-kata dari library TLS di antara titik dua dan tanda pisah. Untuk mengonfirmasi perbaikan, periksa bahwa `connected` bernilai `true` dalam body [`/healthz`](/docs/id/self-hosted-environments-reference#health-endpoint) orchestrator.

723* **Sesi tetap antri**: setiap runner online dapat dikunci ke pemilik yang berbeda. Periksa `claude_code_self_hosted_runner_locked_account` [metrik](/docs/id/self-hosted-environments-reference#prometheus-metrics) setiap runner atau bidang `locked_account` dari baris log `[runner:health]`-nya untuk melihat siapa yang memegangnya. Keduanya menunjukkan email pemilik hanya setelah runner telah dikeluarkan token sesi yang membawa klaim `act.email`, yang sesi agen Claude Tag tidak pernah lakukan. Tanpa klaim, runner tidak memancarkan seri `locked_account` dan mencatat `locked_account=yes`, yang memberi tahu Anda bahwa runner terkunci tetapi tidak ke pemilik mana. Tambahkan replika, atau tunggu runner yang ada untuk mengalirkan dan memulai ulang. Jika lingkungan menggunakan runner on-demand, periksa orchestrator sebagai gantinya; lihat [On-demand runners](/docs/id/self-hosted-environments-configuration#on-demand-runners).729* **Sesi tetap antri**: setiap runner online dapat dikunci ke pemilik yang berbeda. Periksa `claude_code_self_hosted_runner_locked_account` [metrik](/docs/id/self-hosted-environments-reference#prometheus-metrics) setiap runner atau bidang `locked_account` dari baris log `[runner:health]`-nya untuk melihat siapa yang memegangnya. Keduanya menunjukkan email pemilik hanya setelah runner telah dikeluarkan token sesi yang membawa klaim `act.email`, yang sesi agen Claude Tag tidak pernah lakukan. Tanpa klaim, runner tidak memancarkan seri `locked_account` dan mencatat `locked_account=yes`, yang memberi tahu Anda bahwa runner terkunci tetapi tidak ke pemilik mana. Tambahkan replika, atau tunggu runner yang ada untuk mengalirkan dan memulai ulang. Jika lingkungan menggunakan runner on-demand, periksa orchestrator sebagai gantinya; lihat [On-demand runners](/docs/id/self-hosted-environments-configuration#on-demand-runners).

724* **Sesi gagal segera setelah pickup**: buka sesi di claude.ai/code untuk melihat kesalahan. Penyebab paling umum adalah [kredensial git](#configure-git) yang hilang dalam gambar runner dan alat build yang tidak diinstal. Pada runner yang dimulai dengan `--use-anthropic-git-proxy`, lihat [When sessions fail to start on a runner with the git proxy](#when-anthropic-doesnt-serve-a-session). Direktori dasar yang tidak dapat ditulis menghentikan runner saat startup daripada gagal sesi. Lihat entri **Runner keluar saat startup dengan `cannot create or write to base directory`** dalam daftar ini.730* **Sesi gagal segera setelah pickup**: buka sesi di claude.ai/code untuk melihat kesalahan. Penyebab paling umum adalah [kredensial git](#configure-git) yang hilang dalam gambar runner dan alat build yang tidak diinstal. Pada runner yang dimulai dengan `--use-anthropic-git-proxy`, lihat [When sessions fail to start on a runner with the git proxy](#when-anthropic-doesnt-serve-a-session). Direktori dasar yang tidak dapat ditulis menghentikan runner saat startup daripada gagal sesi. Lihat entri **Runner keluar saat startup dengan `cannot create or write to base directory`** dalam daftar ini.

725* **Sesi gagal dimulai pada runner yang mengatur `--use-anthropic-git-proxy`**: cari di log runner `access denied by the git proxy`, atau kesalahan git yang menyebutkan alamat `api.anthropic.com` yang berisi `/git_proxy/`. Untuk mengetahui apakah Anthropic melayani sesi tersebut dan memperbaiki penyebabnya, lihat [When sessions fail to start on a runner with the git proxy](#when-anthropic-doesnt-serve-a-session).731* **Sesi gagal dimulai pada runner yang mengatur `--use-anthropic-git-proxy`**: cari di log runner `access denied by the git proxy`, atau kesalahan git yang menyebutkan alamat `api.anthropic.com` yang berisi `/git_proxy/`. Untuk mengetahui apakah Anthropic melayani sesi tersebut dan memperbaiki penyebabnya, lihat [When sessions fail to start on a runner with the git proxy](#when-anthropic-doesnt-serve-a-session).


741 Sebelum v2.1.274, runner berhenti mencoba ulang pengambilan yang gagal setelah beberapa upaya dan menunggu yang dijadwalkan berikutnya. Turn yang gagal tidak memicu pengambilan, jadi setiap turn gagal dengan 401 sampai pengambilan yang dijadwalkan berikutnya.747 Sebelum v2.1.274, runner berhenti mencoba ulang pengambilan yang gagal setelah beberapa upaya dan menunggu yang dijadwalkan berikutnya. Turn yang gagal tidak memicu pengambilan, jadi setiap turn gagal dengan 401 sampai pengambilan yang dijadwalkan berikutnya.

742* **Pod dibunuh di tengah-drain**: naikkan `terminationGracePeriodSeconds` ke setidaknya nilai yang dicatat runner saat startup. Lihat [Shutdown timing](#shutdown-timing).748* **Pod dibunuh di tengah-drain**: naikkan `terminationGracePeriodSeconds` ke setidaknya nilai yang dicatat runner saat startup. Lihat [Shutdown timing](#shutdown-timing).

743 749 

744Setelah logging diinisialisasi, runner menulis log lifecycle-nya, termasuk baris `[runner:fatal]`, ke stdout, dan output debug ke stderr, semuanya sebagai baris teks biasa daripada JSON. Kegagalan startup yang dijelaskan dalam entri troubleshooting di atas mencetak ke stderr sebelum titik itu. Tangkap kedua aliran dengan `--log-file`, yang juga memungkinkan `self-hosted-runner doctor` untuk mengekornya, atau dengan pengumpulan log platform Anda.750Setelah logging diinisialisasi, runner menulis log lifecycle-nya, termasuk baris `[runner:fatal]`, ke stdout, dan output debug ke stderr, semuanya sebagai baris teks biasa daripada JSON. Kegagalan direktori dasar yang dijelaskan dalam entri troubleshooting di atas mencetak ke stderr sebelum titik itu. Tangkap kedua aliran dengan `--log-file`, yang juga memungkinkan `self-hosted-runner doctor` untuk mengekornya, atau dengan pengumpulan log platform Anda.

745 751 

746Setiap proses anak sesi menulis log debug terpisah. Pada kegagalan runner menampilkan ekor log bersama sesi di claude.ai/code. Kecuali Anda memulai runner dengan [`--remove-session-state`](/docs/id/self-hosted-environments-reference#runner-cli-flags), itu juga menyimpan log sesi yang gagal di disk dan mencetak jalurnya dalam log runner.752Setiap proses anak sesi menulis log debug terpisah. Pada kegagalan runner menampilkan ekor log bersama sesi di claude.ai/code. Kecuali Anda memulai runner dengan [`--remove-session-state`](/docs/id/self-hosted-environments-reference#runner-cli-flags), itu juga menyimpan log sesi yang gagal di disk dan mencetak jalurnya dalam log runner.

747 753 

Details

25Sisi claude.ai memerlukan:25Sisi claude.ai memerlukan:

26 26 

27* **Izinkan lingkungan yang di-host sendiri** diaktifkan oleh [Pemilik](/docs/id/cloud-environments#organization-shared-environments) pada [halaman admin **Cloud environments**](https://claude.ai/admin-settings/cloud-environments); tombol **New** tidak muncul sampai diaktifkan. Jika Anda tidak memiliki peran tersebut, seseorang yang memilikinya dapat membuat lingkungan dan memberikan rahasia kepada Anda; langkah runner dan terminal pada halaman ini tidak memerlukan peran claude.ai, dan di mana langkah memeriksa status di UI admin, baris log runner sendiri memberikan sinyal yang sama.27* **Izinkan lingkungan yang di-host sendiri** diaktifkan oleh [Pemilik](/docs/id/cloud-environments#organization-shared-environments) pada [halaman admin **Cloud environments**](https://claude.ai/admin-settings/cloud-environments); tombol **New** tidak muncul sampai diaktifkan. Jika Anda tidak memiliki peran tersebut, seseorang yang memilikinya dapat membuat lingkungan dan memberikan rahasia kepada Anda; langkah runner dan terminal pada halaman ini tidak memerlukan peran claude.ai, dan di mana langkah memeriksa status di UI admin, baris log runner sendiri memberikan sinyal yang sama.

28* Sebuah [koneksi GitHub](/docs/id/claude-code-on-the-web#github-authentication-options) untuk organisasi Anda, sehingga pengembang dapat memilih repositori saat mereka memulai sesi.28* [Konektor GitHub](https://claude.ai/admin-settings/connectors) diaktifkan oleh Owner, serta [koneksi GitHub](/docs/id/web-quickstart#connect-github) milik masing-masing pengembang, sehingga mereka dapat memilih repositori github.com saat memulai sesi.

29 29 

30<h3 id="host-and-network">30<h3 id="host-and-network">

31 Host dan jaringan31 Host dan jaringan


34Host runner memerlukan:34Host runner memerlukan:

35 35 

36* Host atau kontainer Linux atau macOS dengan HTTPS keluar ke `api.anthropic.com`, ke `claude.ai` dan host unduhan yang dialihkan untuk langkah instalasi di bawah, dan ke host git Anda untuk klon; [tabel persyaratan jaringan](/docs/id/self-hosted-environments-deploy#network-requirements) memiliki daftar lengkap. Windows tidak didukung sebagai host runner; jalankan runner dalam kontainer Linux sebagai gantinya. Workstation pengembang tidak terpengaruh, karena sesi dimulai dari claude.ai di browser.36* Host atau kontainer Linux atau macOS dengan HTTPS keluar ke `api.anthropic.com`, ke `claude.ai` dan host unduhan yang dialihkan untuk langkah instalasi di bawah, dan ke host git Anda untuk klon; [tabel persyaratan jaringan](/docs/id/self-hosted-environments-deploy#network-requirements) memiliki daftar lengkap. Windows tidak didukung sebagai host runner; jalankan runner dalam kontainer Linux sebagai gantinya. Workstation pengembang tidak terpengaruh, karena sesi dimulai dari claude.ai di browser.

37* Sebuah repositori untuk sesi uji: repositori publik, atau repositori yang sudah dapat diklon oleh host ini melalui URL HTTPS-nya tanpa diminta kredensial.37* Sebuah repositori untuk sesi uji: repositori publik, atau repositori yang sudah dapat diklon oleh host ini melalui URL HTTPS-nya tanpa diminta kredensial. Kunci SSH saja tidak cukup, karena runner mengklon URL `https://` repositori. Untuk mengklon melalui SSH sebagai gantinya, lihat [Tulis ulang URL git untuk jaringan privat](/docs/id/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks).

38* Jam yang disinkronkan dengan waktu nyata, misalnya dengan NTP. Autentikasi gagal ketika jam lebih dari lima menit mati; lihat [Troubleshooting](/docs/id/self-hosted-environments-deploy#troubleshooting).38* Jam yang disinkronkan dengan waktu nyata, misalnya dengan NTP. Autentikasi gagal ketika jam lebih dari lima menit mati; lihat [Troubleshooting](/docs/id/self-hosted-environments-deploy#troubleshooting).

39 39 

40<h3 id="software-on-the-runner-host">40<h3 id="software-on-the-runner-host">


105 105 

106 Pilih direktori dasar, mengganti `<writable-dir>` dalam perintah runner di bawah dengan jalur absolut yang dapat ditulis atau dibuat oleh runner. Runner membuat direktori saat startup, kemudian memeriksa repositori dan membuat direktori per-sesi di bawahnya. Tanpa `--base-dir` itu menggunakan `/workspace`, yang hanya berfungsi jika direktori itu sudah ada dan dapat ditulis atau Anda memulai runner sebagai root.106 Pilih direktori dasar, mengganti `<writable-dir>` dalam perintah runner di bawah dengan jalur absolut yang dapat ditulis atau dibuat oleh runner. Runner membuat direktori saat startup, kemudian memeriksa repositori dan membuat direktori per-sesi di bawahnya. Tanpa `--base-dir` itu menggunakan `/workspace`, yang hanya berfungsi jika direktori itu sudah ada dan dapat ditulis atau Anda memulai runner sebagai root.

107 107 

108 Jika runner tidak dapat membuat atau menulis ke jalur, itu keluar saat startup dengan kesalahan yang menamai direktori alih-alih mendaftar. Lihat [Troubleshooting](/docs/id/self-hosted-environments-deploy#troubleshooting).108 <Warning>

109 Gunakan direktori yang dikhususkan untuk runner, bukan direktori home Anda atau direktori berisi klon milik Anda sendiri. Runner memperlakukan apa pun yang ditemukannya di `<writable-dir>/<repo-owner>/<repo>` sebagai klonnya sendiri, dan dapat mengatur ulang serta menimpa atau menghapus file di dalamnya.

110 </Warning>

111 

112 Jika runner tidak dapat membuat atau menulis ke direktori dasar, runner keluar saat startup dengan kesalahan yang menyebutkan nama direktori tersebut alih-alih mendaftar. Lihat [Troubleshooting](/docs/id/self-hosted-environments-deploy#troubleshooting).

109 113 

110 Kemudian mulai runner dengan `--environment-secret-file` dan `--base-dir`:114 Kemudian mulai runner dengan `--environment-secret-file` dan `--base-dir`:

111 115 


113 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'117 claude self-hosted-runner --environment-secret-file '/etc/claude/environment-secret' --base-dir '<writable-dir>'

114 ```118 ```

115 119 

116 Runner mencatat `Registered: runner_id=<runner-id>` setelah terdaftar dengan lingkungan Anda, kemudian mulai melakukan polling untuk pekerjaan. Jika runner keluar kemudian, mulai ulang sendiri. Lihat [Jika runner keluar](#if-the-runner-exits) untuk mengetahui kapan hal itu terjadi.120 Runner mencatat `Registered: runner_id=<runner-id>` setelah terdaftar dengan lingkungan Anda, kemudian mulai melakukan polling untuk pekerjaan. Jika dimulai dengan perintah ini, runner keluar sesuai desain setelah melayani satu sesi, bukan setelah setiap giliran. Untuk melayani lebih banyak sesi, mulai runner lagi setiap kali runner keluar. Lihat [Jika runner keluar](#if-the-runner-exits) untuk mengetahui kapan hal itu terjadi dan apa yang dicatat runner di log.

117 </Step>121 </Step>

118 122 

119 <Step title="Verifikasi runner muncul">123 <Step title="Verifikasi runner muncul">


121 </Step>125 </Step>

122 126 

123 <Step title="Arahkan sesi ke lingkungan">127 <Step title="Arahkan sesi ke lingkungan">

124 <span id="route-a-session" />Mulai sesi di claude.ai/code dan pilih lingkungan Anda dari pemilih lingkungan, di mana lingkungan yang di-host sendiri muncul bersama yang di-host Anthropic. Untuk repositori, pilih repositori dari [prasyarat](#host-and-network): repositori publik, atau repositori yang sudah dapat diklon host ini. Runner mengklon dengan kredensial git apa pun yang sudah dimiliki host.128 <span id="route-a-session" />Mulai sesi di claude.ai/code dan pilih lingkungan Anda dari pemilih lingkungan, di mana lingkungan yang di-host sendiri muncul bersama yang di-host Anthropic. Untuk repositori, pilih repositori dari [prasyarat](#host-and-network): repositori publik, atau repositori yang sudah dapat diklon host ini melalui URL HTTPS-nya tanpa diminta kredensial.

125 129 

126 Runner yang tersedia berikutnya mengambil sesi yang antri dan mencatat `Picked up session <session-id>` bersama dengan hitungan aktif dan kapasitasnya, sehingga Anda dapat mengonfirmasi dari output runner sendiri host mana yang mengambil sesi. Tonton sesi bekerja dan baca balasan Claude di [claude.ai/code](https://claude.ai/code).130 Runner yang tersedia berikutnya mengambil sesi yang antri dan mencatat `Picked up session <session-id>` bersama dengan hitungan aktif dan kapasitasnya, sehingga Anda dapat mengonfirmasi dari output runner sendiri host mana yang mengambil sesi. Tonton sesi bekerja dan baca balasan Claude di [claude.ai/code](https://claude.ai/code).

127 131 

128 Jika sesi tidak mulai bekerja, cocokkan dengan apa yang Anda lihat:132 <span id="session-doesnt-start" />Jika sesi tidak mulai bekerja, cocokkan dengan apa yang Anda lihat:

129 133 

130 * **Sesi tetap dalam antrean**: lihat [Troubleshooting](/docs/id/self-hosted-environments-deploy#troubleshooting).134 * **Sesi tetap dalam antrean**: lihat [Troubleshooting](/docs/id/self-hosted-environments-deploy#troubleshooting).

131 * **Sesi gagal dimulai dengan kesalahan git**: kesalahan muncul di sesi dan di log runner. Jika kesalahan tersebut menyertakan `could not read Username for` dari git diikuti URL host git Anda, runner tidak memiliki kredensial HTTPS untuk host tersebut. Lihat [Konfigurasi git](/docs/id/self-hosted-environments-deploy#configure-git), yang juga mencakup opsi kredensial untuk repositori pribadi dalam produksi.135 * **Sesi gagal dimulai dengan kesalahan git**: jika kesalahan tersebut menyertakan `could not read Username for` dari git diikuti URL host git Anda, runner tidak memiliki kredensial HTTPS untuk host tersebut.

136 * **Sediakan kredensial HTTPS**: lihat [Konfigurasi git](/docs/id/self-hosted-environments-deploy#configure-git)

137 * **Klon melalui SSH sebagai gantinya**: jika host runner sudah memiliki kunci SSH, lihat [Tulis ulang URL git untuk jaringan pribadi](/docs/id/self-hosted-environments-deploy#rewrite-git-urls-for-private-networks)

132 </Step>138 </Step>

133</Steps>139</Steps>

134 140 


136 Jika runner keluar142 Jika runner keluar

137</h3>143</h3>

138 144 

139Jika runner keluar selama mulai cepat ini, mulai lagi dengan perintah yang sama. Runner dapat keluar dengan sendirinya:145Jika runner keluar selama mulai cepat ini, mulai lagi. Runner dapat keluar dengan sendirinya:

140 146 

141* **Sesi selesai**: log menampilkan `[runner:exit] account workload drained — exiting`. Runner keluar sesuai desain setelah sesi aktifnya selesai. Lihat [Runner lifecycle](/docs/id/self-hosted-environments#runner-lifecycle).147* **Tidak ada lagi yang berjalan**: log menampilkan `[runner:exit] account workload drained — exiting`. Runner [keluar sesuai desain](/docs/id/self-hosted-environments#runner-lifecycle) setelah tidak lagi menjalankan sesi apa pun, misalnya:

148 * **Anda mengarsipkan atau menghapus sesi**: mulai runner lagi

149 * **Sesi gagal dimulai**: [perbaiki penyebabnya](#session-doesnt-start), kemudian mulai runner lagi

142* **Kehilangan kontak**: log menampilkan baris `[runner:fatal]` dengan `runner record gone server-side` atau dengan `poll auth failed`. Jika runner kehilangan kontak dengan Anthropic untuk sementara waktu, misalnya karena host tertidur, runner dapat keluar saat berikutnya terhubung ke Anthropic.150* **Kehilangan kontak**: log menampilkan baris `[runner:fatal]` dengan `runner record gone server-side` atau dengan `poll auth failed`. Jika runner kehilangan kontak dengan Anthropic untuk sementara waktu, misalnya karena host tertidur, runner dapat keluar saat berikutnya terhubung ke Anthropic.

143 151 

144Giliran yang selesai tidak mengakhiri sesi uji Anda. Setelah giliran pertama, sesi masih terpasang dan runner masih berjalan, sehingga Anda dapat [mengirim pesan lanjutan ke sesi](#send-a-follow-up-message-to-a-running-session) tanpa memulai ulang runner terlebih dahulu.152Giliran yang selesai tidak mengakhiri sesi uji Anda. Setelah giliran pertama, sesi masih terpasang dan runner masih berjalan, sehingga Anda dapat [mengirim pesan lanjutan ke sesi](#send-a-follow-up-message-to-a-running-session) tanpa memulai ulang runner terlebih dahulu.

Details

54| `--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](/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. |54| `--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](/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. |

55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Daftar aturan pengklasifikasi [auto mode](/docs/id/permission-modes#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. |55| `--server-auto-mode-lists <mode>` | `SELF_HOSTED_RUNNER_SERVER_AUTO_MODE_LISTS` | `no-allow` | Daftar aturan pengklasifikasi [auto mode](/docs/id/permission-modes#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. |

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

57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Lepaskan slot sesi jika child belum memberi sinyal bahwa ia telah diinisialisasi dalam N menit sejak dijalankan. Cloning terjadi sebelum child dijalankan, sehingga waktu clone tidak dihitung. Dihapus oleh sinyal init child di [activity channel](/docs/id/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached), bukan oleh output biasa, setelah itu `--release-idle-session-min` mengambil peran. `0` menonaktifkan. |57| `--startup-timeout-min <n>` | `SELF_HOSTED_RUNNER_STARTUP_TIMEOUT_MS` | `15` | Lepaskan slot sesi jika child belum memberi sinyal di [activity channel](/docs/id/self-hosted-environments-configuration#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. |

58| `--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](/docs/id/self-hosted-environments-deploy#harden-your-deployment) memindainya terlepas dari flag ini. |58| `--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](/docs/id/self-hosted-environments-deploy#harden-your-deployment) memindainya terlepas dari flag ini. |

59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clone repositori di github.com melalui [Anthropic git proxy](/docs/id/self-hosted-environments-deploy#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. |59| `--use-anthropic-git-proxy` | `CLAUDE_RUNNER_USE_GIT_PROXY=1` | off | Clone repositori di github.com melalui [Anthropic git proxy](/docs/id/self-hosted-environments-deploy#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. |

60 60 


160 160 

161Gunakan `last_poll_age_ms` sebagai sinyal liveness dalam probe kustom; nilai yang tumbuh tanpa batas menunjukkan poll loop macet. Baik `last_poll_at` dan `last_poll_age_ms` adalah `null` sampai poll pertama selesai.161Gunakan `last_poll_age_ms` sebagai sinyal liveness dalam probe kustom; nilai yang tumbuh tanpa batas menunjukkan poll loop macet. Baik `last_poll_at` dan `last_poll_age_ms` adalah `null` sampai poll pertama selesai.

162 162 

163Orchestrator melayani `/healthz` sendiri pada port health-nya. Endpoint-nya selalu mengembalikan `200`, dan badan membawa field `connected` melaporkan apakah poll terbaru berhasil, plus spawn-queue count per-state dalam `queue_counts`. Gate readiness dan alerting pada `connected` daripada status code.163`/healthz` milik orchestrator sendiri, pada port health-nya, selalu mengembalikan `200`. Badan membawa field `connected` yang melaporkan apakah poll terbaru berhasil, plus spawn-queue count per-state dalam `queue_counts`. Untuk melihat mengapa `connected` bernilai `false`, baca field `last_error` tingkat atas, yang diatur ulang menjadi `null` oleh setiap poll yang berhasil. Gate readiness dan alerting pada `connected` daripada status code.

164 164 

165Ketika [SCM connector](#scm-connector-flags) dikonfigurasi, badan `/healthz` orchestrator juga membawa `scm_connector_connected` dan objek `scm_connector` dengan `connected`, `last_connected_at`, `last_error`, `reconnects`, dan `requests_forwarded`. Kedua field adalah `null` ketika `--scm-connector-host` tidak diatur.165Ketika [SCM connector](#scm-connector-flags) dikonfigurasi, badan `/healthz` orchestrator juga membawa `scm_connector_connected` dan objek `scm_connector` dengan `connected`, `last_connected_at`, `last_error`, `reconnects`, dan `requests_forwarded`. Kedua field adalah `null` ketika `--scm-connector-host` tidak diatur.

166 166 

Details

692| [`gcpAuthRefresh`](#gcpauthrefresh) | Segarkan [kredensial Google Cloud](/docs/id/google-vertex-ai#advanced-credential-configuration) dengan perintah Anda sendiri | Authentication and providers | Any file |692| [`gcpAuthRefresh`](#gcpauthrefresh) | Segarkan [kredensial Google Cloud](/docs/id/google-vertex-ai#advanced-credential-configuration) dengan perintah Anda sendiri | Authentication and providers | Any file |

693| [`hooks`](#hooks) | Jalankan perintah Anda sendiri sebagai [hooks](/docs/id/hooks) pada titik dalam siklus hidup Claude Code | Hooks and automation | Any file |693| [`hooks`](#hooks) | Jalankan perintah Anda sendiri sebagai [hooks](/docs/id/hooks) pada titik dalam siklus hidup Claude Code | Hooks and automation | Any file |

694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Batasi variabel env mana yang dapat dimasukkan [HTTP hooks](/docs/id/hooks) ke header | Hooks and automation | Any file |694| [`httpHookAllowedEnvVars`](#httphookallowedenvvars) | Batasi variabel env mana yang dapat dimasukkan [HTTP hooks](/docs/id/hooks) ke header | Hooks and automation | Any file |

695| [`idleCompaction`](#idlecompaction) | Hentikan Claude Code dari melakukan compaction pada percakapan panjang saat sesi terminal Anda idle | Memory and context | Any file |

695| [`includeCoAuthoredBy`](#includecoauthoredby) | Deprecated; gunakan `attribution` untuk menyembunyikan atau mengubah atribusi commit dan PR | Git and attribution | Any file |696| [`includeCoAuthoredBy`](#includecoauthoredby) | Deprecated; gunakan `attribution` untuk menyembunyikan atau mengubah atribusi commit dan PR | Git and attribution | Any file |

696| [`includeGitInstructions`](#includegitinstructions) | Hapus instruksi commit dan PR bawaan dari konteks Claude | Git and attribution | Any file |697| [`includeGitInstructions`](#includegitinstructions) | Hapus instruksi commit dan PR bawaan dari konteks Claude | Git and attribution | Any file |

697| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Dapatkan [notifikasi push](/docs/id/remote-control#mobile-push-notifications) ketika Claude menunggu Anda | Remote, desktop, and notifications | Any file |698| [`inputNeededNotifEnabled`](#inputneedednotifenabled) | Dapatkan [notifikasi push](/docs/id/remote-control#mobile-push-notifications) ketika Claude menunggu Anda | Remote, desktop, and notifications | Any file |


1425 * `true`: sesi dimulai dengan ultracode aktif ketika dynamic workflows diaktifkan untuk Anda dan model Anda mendukung `xhigh`1426 * `true`: sesi dimulai dengan ultracode aktif ketika dynamic workflows diaktifkan untuk Anda dan model Anda mendukung `xhigh`

1426 * `false`: sesi dimulai dengan ultracode mati1427 * `false`: sesi dimulai dengan ultracode mati

1427* **Default**: tidak disetel, jadi ultracode mati1428* **Default**: tidak disetel, jadi ultracode mati

1428* **Per-session overrides**: `/effort ultracode` menghidupkan ultracode untuk satu sesi tanpa kunci ini, dan `/effort ultracode off` mematikannya untuk satu sesi ketika kunci ini `true`. Bendera `--effort ultracode` juga menghidupkannya untuk satu sesi, pada effort `xhigh`, dan memerlukan Claude Code v2.1.203 atau lebih baru1429* **Per-session overrides**: `/effort ultracode` menghidupkan ultracode untuk satu sesi tanpa kunci ini, dan `/effort ultracode off` mematikannya untuk satu sesi ketika kunci ini `true`. Flag `--effort ultracode` juga menghidupkannya untuk satu sesi, pada effort `xhigh`

1429 1430 

1430```json settings.json theme={null}1431```json settings.json theme={null}

1431{1432{


2952}2953}

2953```2954```

2954 2955 

2955Perintah manual `/compact` terus bekerja saat auto-compact dimatikan.2956Perintah manual `/compact` terus bekerja saat auto-compact dimatikan. Jika Anda mematikan auto-compact, [idle compaction](#idlecompaction) juga ikut mati.

2956 2957 

2957<h3 id="autocompactwindow">2958<h3 id="autocompactwindow">

2958 `autoCompactWindow`2959 `autoCompactWindow`


3105 3106 

3106* Dari pengaturan pengguna, `--settings`, dan pengaturan terkelola: saat startup, dan lagi dalam sesi yang berjalan ketika perubahan tersimpan mengubah `env` yang digabungkan.3107* Dari pengaturan pengguna, `--settings`, dan pengaturan terkelola: saat startup, dan lagi dalam sesi yang berjalan ketika perubahan tersimpan mengubah `env` yang digabungkan.

3107* 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.3108* 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.

3108* Variabel yang Claude Code klasifikasikan sebagai aman, seperti pemilihan model, batas waktu dan batas, dan toggle fitur: saat startup dari setiap file pengaturan, terlepas dari [variabel yang tidak dapat ditetapkan pengaturan proyek dan lokal dalam `env`](#variables-claude-code-ignores-in-env).3109* 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).

3109* Setelah Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru: nilai `env` direktori baru, di atas direktori sebelumnya.3110* Setelah Anda [memindahkan sesi dengan `/cd`](/docs/id/permissions#move-the-session-to-another-directory) pada v2.1.246 atau lebih baru: nilai `env` direktori baru, di atas direktori sebelumnya.

3110 3111 

3111<h4 id="variables-claude-code-ignores-in-env">3112<h4 id="variables-claude-code-ignores-in-env">


3133 * 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`.3134 * 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`.

3134 * Variabel yang mengatur pengatur waktu pada dialog yang tidak dijawab: [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`, `CLAUDE_AFK_TIMEOUT_MS`, dan `CLAUDE_AFK_COUNTDOWN_MS`](/docs/id/env-vars#variables).3135 * Variabel yang mengatur pengatur waktu pada dialog yang tidak dijawab: [`CLAUDE_CODE_USER_DIALOG_TIMEOUT_MS`, `CLAUDE_AFK_TIMEOUT_MS`, dan `CLAUDE_AFK_COUNTDOWN_MS`](/docs/id/env-vars#variables).

3135 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](/docs/id/env-vars#variables), yang mematikan pemrosesan lampiran.3136 * [`CLAUDE_CODE_DISABLE_ATTACHMENTS`](/docs/id/env-vars#variables), yang mematikan pemrosesan lampiran.

3137 * [`CLAUDE_CODE_DISABLE_FILE_MENTIONS`](/docs/id/env-vars#variables), yang menghentikan Claude Code dari memperluas mention `@` untuk file dan direktori.

3136 3138 

3137 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`.3139 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`.

3138* Variabel identitas yang dimiliki lingkungan hosting Claude Code, seperti `CLAUDE_CODE_REMOTE` dan `CLAUDE_CODE_ACCOUNT_UUID`, diabaikan dari setiap file.3140* Variabel identitas yang dimiliki lingkungan hosting Claude Code, seperti `CLAUDE_CODE_REMOTE` dan `CLAUDE_CODE_ACCOUNT_UUID`, diabaikan dari setiap file.


3163 3165 

3164Dalam 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](/docs/id/agent-sdk/file-checkpointing).3166Dalam 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](/docs/id/agent-sdk/file-checkpointing).

3165 3167 

3168<h3 id="idlecompaction">

3169 `idleCompaction`

3170</h3>

3171 

3172Idle compaction [mengompak](/docs/id/context-window#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 `Compacted while idle, before the prompt cache expired`.

3173 

3174Idle compaction aktif secara default untuk percakapan yang memenuhi semua kondisi berikut:

3175 

3176* **Sesi**: Anda berada dalam sesi terminal interaktif

3177* **Prompt cache**: percakapan menggunakan [TTL prompt cache satu jam](/docs/id/prompt-caching#which-ttl-each-request-gets)

3178* **Feature flag**: Claude Code dapat [mengambil feature flag dari Anthropic](/docs/id/env-vars#features-that-need-feature-flag-fetching)

3179* **Ukuran**: konteks percakapan telah mencapai ambang token, yang dapat Anda [ubah](#change-the-idle-compaction-threshold) dari default 200.000

3180* **Waktu idle**: sekitar 54 menit telah berlalu sejak permintaan terakhir, dan komputer Anda dalam keadaan menyala pada saat itu

3181 

3182Untuk mematikan idle compaction, atur kunci ini ke `false`.

3183 

3184* **Scope**: [`Any file`](#scopes)

3185* **Type**: Boolean

3186 * `true`: Claude Code mengompak percakapan idle yang memenuhi kondisi

3187 * `false`: Claude Code tidak mengompak saat sesi Anda idle

3188* **Default**: `true`

3189* **Per-session overrides**: [`DISABLE_AUTO_COMPACT`](/docs/id/env-vars) mematikan idle compaction bersama dengan auto-compaction

3190 

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

3192{

3193 "idleCompaction": false

3194}

3195```

3196 

3197Kunci ini memerlukan Claude Code v2.1.290 atau lebih baru. Pada versi sebelumnya, yang mengabaikan kunci ini, matikan [`autoCompactEnabled`](#autocompactenabled) untuk menghentikan idle compaction.

3198 

3199<h4 id="change-the-idle-compaction-threshold">

3200 Ubah ambang idle compaction

3201</h4>

3202 

3203Atur [`CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS`](/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.

3204 

3205Dengan 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:

3206 

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

3208{

3209 "env": {

3210 "CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS": "150000"

3211 }

3212}

3213```

3214 

3166<h3 id="plansdirectory">3215<h3 id="plansdirectory">

3167 `plansDirectory`3216 `plansDirectory`

3168</h3>3217</h3>


4209}4258}

4210```4259```

4211 4260 

4261Jika Anda mengganti system prompt dalam [mode non-interaktif](/docs/id/headless) atau Agent SDK, sesi dimulai tanpa snapshot meskipun kunci ini bernilai `true`:

4262 

4263* **Eksekusi `-p`**: Anda mengganti prompt ketika meneruskan [`--system-prompt`](/docs/id/cli-reference#system-prompt-flags) atau `--system-prompt-file`. Anda juga menggantinya ketika menjalankan agent kustom dengan prompt-nya sendiri, yang dipilih dengan [`--agent`](/docs/id/sub-agents#invoke-subagents-explicitly) atau pengaturan [`agent`](#agent). Di luar [bare mode](/docs/id/headless#start-faster-with-bare-mode), untuk mempertahankan snapshot, jalankan tanpa agent kustom dan tambahkan instruksi Anda dengan [`--append-system-prompt`](/docs/id/cli-reference#system-prompt-flags) alih-alih mengganti prompt.

4264* **[Agent SDK](/docs/id/agent-sdk/modifying-system-prompts)**: Anda mengganti prompt dengan system prompt kustom atau agent thread utama kustom. Jika Anda tidak mengatur system prompt, SDK menggunakan default minimalnya dan sesi juga dimulai tanpa snapshot. Di luar [bare mode](/docs/id/headless#start-faster-with-bare-mode), untuk mempertahankan snapshot, gunakan preset `claude_code` tanpa `agent` kustom.

4265 

4212<h3 id="prurltemplate">4266<h3 id="prurltemplate">

4213 `prUrlTemplate`4267 `prUrlTemplate`

4214</h3>4268</h3>


4966 `strictPluginOnlyCustomization.agents`5020 `strictPluginOnlyCustomization.agents`

4967</h3>5021</h3>

4968 5022 

4969Kunci permukaan `agents`. Claude Code berhenti memuat agents dari `~/.claude/agents/` dan `.claude/agents/`, dan terus memuat plugin agents, agents bawaan, dan agents dalam direktori kebijakan yang dikelola.5023Kunci surface `agents`. Claude Code berhenti memuat agents dari `~/.claude/agents/`, `.claude/agents/`, dan direktori `--add-dir`. Claude Code tetap memuat plugin agents, agents bawaan, dan agents dalam direktori kebijakan terkelola.

4970 5024 

4971* **Scope**: [`Managed`](#scopes)5025* **Scope**: [`Managed`](#scopes)

4972* **Type**: string `"agents"` dalam array [`strictPluginOnlyCustomization`](#strictpluginonlycustomization)5026* **Type**: string `"agents"` dalam array [`strictPluginOnlyCustomization`](#strictpluginonlycustomization)


5175 5229 

5176Built-in plugins menyimpan opsi mereka di bawah kunci yang sama dengan sufiks `@builtin`. Misalnya, pengaturan [**Project instructions**](/docs/id/memory#choose-which-instruction-files-load) yang mengontrol apakah Claude Code membaca file `AGENTS.md` adalah `pluginConfigs["cc-plugin-agents-md@builtin"].options.instructionFiles`. Sebelum v2.1.285, ID plugin tersebut adalah `agents-md@builtin`. Versi yang lebih baru membaca entri di bawah salah satu dari kedua ID tersebut.5230Built-in plugins menyimpan opsi mereka di bawah kunci yang sama dengan sufiks `@builtin`. Misalnya, pengaturan [**Project instructions**](/docs/id/memory#choose-which-instruction-files-load) yang mengontrol apakah Claude Code membaca file `AGENTS.md` adalah `pluginConfigs["cc-plugin-agents-md@builtin"].options.instructionFiles`. Sebelum v2.1.285, ID plugin tersebut adalah `agents-md@builtin`. Versi yang lebih baru membaca entri di bawah salah satu dari kedua ID tersebut.

5177 5231 

5178Claude Code mengabaikan entri proyek dan lokal karena menggantikan nilai ini ke dalam konfigurasi hook plugin, MCP, dan LSP, dan repositori yang dikloning tidak boleh dapat menyediakannya. Sebelum v2.1.207, pengaturan proyek dan lokal juga dibaca.5232Claude Code mengabaikan entri proyek dan lokal karena menggantikan nilai ini ke dalam konfigurasi hook plugin, MCP, dan LSP, dan repositori yang dikloning tidak boleh dapat menyediakannya.

5179 5233 

5180<h3 id="prependplugins">5234<h3 id="prependplugins">

5181 `prependPlugins`5235 `prependPlugins`


5680}5734}

5681```5735```

5682 5736 

5683Di luar repositori git, [`WorktreeCreate` hook](/docs/id/worktrees#non-git-version-control) yang gagal melepaskan blok sehingga sesi dapat mengedit direktori kerja di tempat; pelepasan itu memerlukan Claude Code v2.1.203 atau lebih baru.5737Di luar repositori git, [`WorktreeCreate` hook](/docs/id/worktrees#non-git-version-control) yang gagal melepaskan blok sehingga sesi dapat mengedit direktori kerja di tempat.

5684 5738 

5685<h3 id="worktree-location">5739<h3 id="worktree-location">

5686 `worktree.location`5740 `worktree.location`

setup.md +1 −1

Details

226 226 

227Jalankan `claude doctor` untuk melihat hasil upaya pembaruan terbaru.227Jalankan `claude doctor` untuk melihat hasil upaya pembaruan terbaru.

228 228 

229Di macOS dan Linux, installer asli mengelola launcher di `~/.local/bin/claude` sebagai symlink ke `~/.local/share/claude/versions/`. Jika Anda mengganti launcher itu dengan skrip atau symlink Anda sendiri, auto-update dan `claude update` membiarkannya tetap ada: versi baru masih diinstal di bawah direktori `versions/`, dan launcher Anda memutuskan versi mana yang berjalan. Sebelum v2.1.207, auto-updater mengganti launcher kustom di jalur itu dengan symlink miliknya sendiri pada setiap pembaruan.229Di macOS dan Linux, installer asli mengelola launcher di `~/.local/bin/claude` sebagai symlink ke `~/.local/share/claude/versions/`. Jika Anda mengganti launcher itu dengan skrip atau symlink Anda sendiri, auto-update dan `claude update` membiarkannya tetap ada: versi baru masih diinstal di bawah direktori `versions/`, dan launcher Anda memutuskan versi mana yang berjalan.

230 230 

231Dengan launcher kustom, Claude Code juga menyimpan setiap versi yang diinstal di disk karena tidak dapat menentukan versi mana yang dibutuhkan launcher. `claude doctor` melaporkan launcher yang tidak dibuat oleh installer asli.231Dengan launcher kustom, Claude Code juga menyimpan setiap versi yang diinstal di disk karena tidak dapat menentukan versi mana yang dibutuhkan launcher. `claude doctor` melaporkan launcher yang tidak dibuat oleh installer asli.

232 232 

skills.md +26 −3

Details

31Untuk menonaktifkan skill bawaan, gunakan pengaturan [`disableBundledSkills`](/docs/id/settings-reference#disablebundledskills).31Untuk menonaktifkan skill bawaan, gunakan pengaturan [`disableBundledSkills`](/docs/id/settings-reference#disablebundledskills).

32 32 

33<Note>33<Note>

34 Pemeriksaan penyiapan [`/doctor`](/docs/id/commands#all-commands) tetap dapat diketik saat `disableBundledSkills` aktif, di Claude Code v2.1.205 dan yang lebih baru. Untuk menyembunyikannya, atur environment variable `DISABLE_DOCTOR_COMMAND` atau entri [`skillOverrides`](#override-skill-visibility-from-settings) berisi `"doctor": "off"`. Sebelum v2.1.205, `/doctor` adalah perintah bawaan, bukan skill bawaan.34 Pemeriksaan penyiapan [`/doctor`](/docs/id/commands#all-commands) tetap dapat diketik saat `disableBundledSkills` aktif. Untuk menyembunyikannya, atur environment variable `DISABLE_DOCTOR_COMMAND` atau entri [`skillOverrides`](#override-skill-visibility-from-settings) berisi `"doctor": "off"`.

35</Note>35</Note>

36 36 

37Skill bawaan tercantum bersama perintah bawaan di [referensi perintah](/docs/id/commands), ditandai **Skill** di kolom Tujuan.37Skill bawaan tercantum bersama perintah bawaan di [referensi perintah](/docs/id/commands), ditandai **Skill** di kolom Tujuan.


69 69 

70`/verify` juga dapat merekam resepnya sendiri. Saat harus mem-build dan mengoperasikan aplikasi Anda tanpa resep yang terekam, skill ini menulis apa yang berhasil ke `.claude/skills/verify/SKILL.md` di root repo, atau di direktori paket yang disentuh dalam monorepo, sehingga eksekusi berikutnya dan agent lain mengikuti langkah yang sama. Di root repo, skill yang terekam menggantikan `/verify` bawaan.70`/verify` juga dapat merekam resepnya sendiri. Saat harus mem-build dan mengoperasikan aplikasi Anda tanpa resep yang terekam, skill ini menulis apa yang berhasil ke `.claude/skills/verify/SKILL.md` di root repo, atau di direktori paket yang disentuh dalam monorepo, sehingga eksekusi berikutnya dan agent lain mengikuti langkah yang sama. Di root repo, skill yang terekam menggantikan `/verify` bawaan.

71 71 

72Claude hanya mengedit file yang terekam ketika file tersebut mengarahkan eksekusi ke arah yang salah, seperti perintah yang gagal atau langkah yang terlewat, sehingga Anda dapat meng-commit file tersebut tanpa diff per sesi. Sebelum v2.1.205, skill bawaan menginstruksikan Claude untuk memasukkan apa pun yang dipelajari dari suatu eksekusi, yang menyebabkan merge conflict yang sering terjadi.72Claude hanya mengedit file yang terekam ketika file tersebut mengarahkan eksekusi ke arah yang salah, seperti perintah yang gagal atau langkah yang terlewat, sehingga Anda dapat meng-commit file tersebut tanpa diff per sesi.

73 73 

74<h3 id="run-your-checks-before-each-commit">74<h3 id="run-your-checks-before-each-commit">

75 Menjalankan pemeriksaan sebelum setiap commit75 Menjalankan pemeriksaan sebelum setiap commit


183* **Folder symlink**: entri `<skill-name>` di lokasi enterprise, personal, atau proyek dapat berupa symlink ke direktori di tempat lain pada disk. Claude Code membaca `SKILL.md` dari targetnya dan memuat skill tersebut sekali meskipun beberapa lokasi mengarah ke target yang sama. Skill plugin [menangani symlink secara berbeda](/docs/id/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).183* **Folder symlink**: entri `<skill-name>` di lokasi enterprise, personal, atau proyek dapat berupa symlink ke direktori di tempat lain pada disk. Claude Code membaca `SKILL.md` dari targetnya dan memuat skill tersebut sekali meskipun beberapa lokasi mengarah ke target yang sama. Skill plugin [menangani symlink secara berbeda](/docs/id/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).

184* **Nama yang dicadangkan `synced`**: jangan menamai folder skill `synced`, dalam kapitalisasi apa pun. Claude Code menggunakan `~/.claude/skills/synced/` untuk [skill yang diunduh dari claude.ai](#where-synced-skills-load) dan melewati skill yang Anda buat dengan nama tersebut di lokasi enterprise, personal, dan proyek.184* **Nama yang dicadangkan `synced`**: jangan menamai folder skill `synced`, dalam kapitalisasi apa pun. Claude Code menggunakan `~/.claude/skills/synced/` untuk [skill yang diunduh dari claude.ai](#where-synced-skills-load) dan melewati skill yang Anda buat dengan nama tersebut di lokasi enterprise, personal, dan proyek.

185* **Nama yang dicadangkan `anthropic-skills`**: di luar plugin, folder skill atau file perintah yang bernama `anthropic-skills` atau diawali dengan `anthropic-skills:` tidak dimuat. Lihat [Nama yang dicadangkan untuk skill yang disinkronkan](#names-reserved-for-synced-skills).185* **Nama yang dicadangkan `anthropic-skills`**: di luar plugin, folder skill atau file perintah yang bernama `anthropic-skills` atau diawali dengan `anthropic-skills:` tidak dimuat. Lihat [Nama yang dicadangkan untuk skill yang disinkronkan](#names-reserved-for-synced-skills).

186* **Karakter dalam nama**: di luar plugin, folder skill tidak dimuat jika namanya mengandung karakter seperti zero-width space atau `<`. Lihat [Karakter yang tidak boleh ada dalam nama skill](#characters-a-skill-name-cant-hold).

186* **File perintah**: file Markdown di `.claude/commands/` adalah format lama dan masih berfungsi. File ini mendukung [frontmatter](#frontmatter-reference) yang sama kecuali `name` dan `paths`. Untuk mengetahui nama yang Anda ketik untuk memanggilnya, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Utamakan skill untuk pekerjaan baru, karena skill juga mendukung [file pendukung](#add-supporting-files).187* **File perintah**: file Markdown di `.claude/commands/` adalah format lama dan masih berfungsi. File ini mendukung [frontmatter](#frontmatter-reference) yang sama kecuali `name` dan `paths`. Untuk mengetahui nama yang Anda ketik untuk memanggilnya, lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name). Utamakan skill untuk pekerjaan baru, karena skill juga mendukung [file pendukung](#add-supporting-files).

187* **Folder skill sebagai plugin**: tambahkan `.claude-plugin/plugin.json` ke folder skill dan folder tersebut dimuat sebagai [plugin](/docs/id/plugins/loading#plugins-shared-through-a-repository) bernama `<name>@skills-dir`, sehingga dapat menyertakan agent, hook, dan server MCP. Di `.claude/skills/` milik proyek, ini mengharuskan Anda menerima dialog kepercayaan workspace terlebih dahulu.188* **Folder skill sebagai plugin**: tambahkan `.claude-plugin/plugin.json` ke folder skill dan folder tersebut dimuat sebagai [plugin](/docs/id/plugins/loading#plugins-shared-through-a-repository) bernama `<name>@skills-dir`, sehingga dapat menyertakan agent, hook, dan server MCP. Di `.claude/skills/` milik proyek, ini mengharuskan Anda menerima dialog kepercayaan workspace terlebih dahulu.

188 189 


495 496 

496Untuk `SKILL.md` di root plugin, tidak ada direktori skill yang dapat diambil namanya, sehingga `name` menyediakan seluruh segmen terakhir. Tanpa field `name`, Claude Code menggunakan nama direktori plugin sebagai fallback.497Untuk `SKILL.md` di root plugin, tidak ada direktori skill yang dapat diambil namanya, sehingga `name` menyediakan seluruh segmen terakhir. Tanpa field `name`, Claude Code menggunakan nama direktori plugin sebagai fallback.

497 498 

499<h4 id="characters-a-skill-name-cant-hold">

500 Karakter yang tidak boleh ada dalam nama skill

501</h4>

502 

503Jika skill atau perintah kustom tidak muncul di menu `/`, atau menu tidak menampilkan frontmatter `name` dari sebuah skill, periksa namanya. Claude Code menolak nama perintah atau frontmatter `name` yang berisi karakter seperti berikut:

504 

505* Spasi lebar-nol (zero-width space) atau karakter kontrol

506* Karakter private-use atau karakter yang belum ditetapkan, seperti glyph dari font ikon

507* Karakter yang mengubah arah teks di sekitarnya

508* Karakter kosong selain satu spasi biasa di antara kata, seperti no-break space, dua spasi berturut-turut, atau spasi di awal atau akhir

509* `<` atau `>`

510 

511Perintah kustom atau skill tidak dimuat ketika Claude Code menolak nama direktori atau nama filenya. Ganti nama folder atau file tersebut untuk menghapus karakter-karakter itu. Skill tetap dimuat ketika karakter-karakter ini hanya ada dalam nama folder skill plugin atau dalam frontmatter `name`-nya:

512 

513* **Folder di direktori `skills/` plugin atau di [path `skills`](/docs/id/plugins/components#skills) manifesnya**: Anda tidak perlu mengganti nama folder. Karakter-karakter ini menjadi tanda hubung dalam nama perintah skill, jadi ketik perintah dengan tanda hubung tersebut.

514* **Frontmatter `name`**: menu `/` tidak menampilkan nilai `name` dan mengetiknya tidak memanggil skill. Edit baris `name:` untuk menghapus karakter-karakter tersebut.

515 

516Untuk mengetahui nama mana yang ditolak Claude Code, jalankan dengan [`claude --debug`](/docs/id/cli-reference#cli-flags) dari shell Anda dan cari `[names]` di [log debug](/docs/id/debug-your-config). Dalam sesi interaktif, [pemberitahuan startup](/docs/id/errors#skill-or-command-name-refused) juga memberi tahu Anda bahwa ada nama yang ditolak. Setelah mengganti nama atau mengedit `name:`, mulai ulang sesi, kecuali file berada di direktori yang [dipantau perubahannya](#live-change-detection) oleh Claude Code.

517 

498<h4 id="available-string-substitutions">518<h4 id="available-string-substitutions">

499 Substitusi string yang tersedia519 Substitusi string yang tersedia

500</h4>520</h4>


858| Skill dengan `context: fork` | Dari tipe agen | Konten SKILL.md | CLAUDE.md, sesuai dengan [startup context](/docs/id/sub-agents#what-loads-at-startup) agen |878| Skill dengan `context: fork` | Dari tipe agen | Konten SKILL.md | CLAUDE.md, sesuai dengan [startup context](/docs/id/sub-agents#what-loads-at-startup) agen |

859| Subagent dengan field `skills` | Isi markdown subagent | Pesan delegasi Claude | Skills yang dimuat sebelumnya + CLAUDE.md, sesuai dengan [startup context](/docs/id/sub-agents#what-loads-at-startup) subagent |879| Subagent dengan field `skills` | Isi markdown subagent | Pesan delegasi Claude | Skills yang dimuat sebelumnya + CLAUDE.md, sesuai dengan [startup context](/docs/id/sub-agents#what-loads-at-startup) subagent |

860 880 

861Dengan `context: fork`, Anda menulis tugas dalam skill Anda dan memilih tipe agen untuk menjalankannya. Agen Explore dan Plan bawaan [melewati CLAUDE.md dan status git](/docs/id/sub-agents#what-loads-at-startup) untuk menjaga konteks mereka tetap kecil, jadi skill yang di-fork menggunakan `agent: Explore` hanya melihat konten SKILL.md dan prompt sistem agen sendiri. Untuk kebalikannya, di mana Anda mendefinisikan subagent kustom yang menggunakan skills sebagai materi referensi, lihat [Subagents](/docs/id/sub-agents#preload-skills-into-subagents).881Dengan `context: fork`, Anda menulis tugas dalam skill Anda dan memilih tipe agent untuk menjalankannya. Agent Explore dan Plan bawaan [dimulai tanpa CLAUDE.md dan status git](/docs/id/sub-agents#what-loads-at-startup) untuk menjaga konteks mereka tetap kecil. Masukkan semua yang dibutuhkan tugas ke dalam SKILL.md Anda. Skill yang di-fork menggunakan `agent: Explore` dimulai dengan konten tersebut dan system prompt milik agent itu sendiri, tanpa satu pun file CLAUDE.md Anda.

882 

883Untuk kebalikannya, di mana Anda mendefinisikan subagent kustom yang menggunakan skills sebagai materi referensi, lihat [Subagents](/docs/id/sub-agents#preload-skills-into-subagents).

862 884 

863<h4 id="example-research-skill-using-explore-agent">885<h4 id="example-research-skill-using-explore-agent">

864 Contoh: Skill penelitian menggunakan agen Explore886 Contoh: Skill penelitian menggunakan agen Explore


12472. Verifikasi skill muncul di `What skills are available?`12692. Verifikasi skill muncul di `What skills are available?`

12483. Coba rephrase permintaan Anda untuk lebih cocok dengan deskripsi12703. Coba rephrase permintaan Anda untuk lebih cocok dengan deskripsi

12494. Panggil secara langsung dengan `/skill-name` jika skill dapat diinvokasi oleh pengguna12714. Panggil secara langsung dengan `/skill-name` jika skill dapat diinvokasi oleh pengguna

12725. Jika `/skill-name` juga tidak dikenali, periksa apakah Claude Code [menolak nama skill tersebut](#characters-a-skill-name-cant-hold)

1250 1273 

1251Jika YAML frontmatter tidak valid, Claude Code memuat badan skill dengan metadata kosong, jadi `/skill-name` tetap berfungsi tetapi Claude tidak dapat mencocokkan terhadap `description` Anda. Jalankan dengan `--debug` untuk melihat error parse.1274Jika YAML frontmatter tidak valid, Claude Code memuat badan skill dengan metadata kosong, jadi `/skill-name` tetap berfungsi tetapi Claude tidak dapat mencocokkan terhadap `description` Anda. Jalankan dengan `--debug` untuk melihat error parse.

1252 1275 

statusline.md +2 −2

Details

1198| `description` | string | Deskripsi singkat tugas, seperti yang diberikan Claude saat memunculkan subagent |1198| `description` | string | Deskripsi singkat tugas, seperti yang diberikan Claude saat memunculkan subagent |

1199| `label` | string | Ringkasan kemajuan singkat tugas jika Claude Code memilikinya, jika tidak teksnya sama dengan `description` |1199| `label` | string | Ringkasan kemajuan singkat tugas jika Claude Code memilikinya, jika tidak teksnya sama dengan `description` |

1200| `startTime` | number | Waktu tugas dimulai, dalam milidetik sejak epoch Unix |1200| `startTime` | number | Waktu tugas dimulai, dalam milidetik sejak epoch Unix |

1201| `model` | string, opsional | ID model yang diselesaikan tempat tugas berjalan. Dihilangkan hingga model diselesaikan. Memerlukan Claude Code v2.1.205 atau lebih baru |1201| `model` | string, opsional | ID model yang diselesaikan tempat tugas berjalan. Dihilangkan hingga model diselesaikan |

1202| `effort` | string atau number, opsional | Effort penalaran yang ditetapkan untuk subagent dalam [frontmatter definisinya](/docs/id/sub-agents#supported-frontmatter-fields) atau pada invokasi individual: `low`, `medium`, `high`, `xhigh`, `max`, atau anggaran token numerik. Ini adalah nilai yang dikonfigurasi, dan effort yang diterapkan Claude Code dapat berbeda jika model tidak mendukung tingkat tersebut. Dihilangkan ketika tidak ada effort yang ditetapkan. Memerlukan Claude Code v2.1.213 atau lebih baru |1202| `effort` | string atau number, opsional | Effort penalaran yang ditetapkan untuk subagent dalam [frontmatter definisinya](/docs/id/sub-agents#supported-frontmatter-fields) atau pada invokasi individual: `low`, `medium`, `high`, `xhigh`, `max`, atau anggaran token numerik. Ini adalah nilai yang dikonfigurasi, dan effort yang diterapkan Claude Code dapat berbeda jika model tidak mendukung tingkat tersebut. Dihilangkan ketika tidak ada effort yang ditetapkan. Memerlukan Claude Code v2.1.213 atau lebih baru |

1203| `contextWindowSize` | number, opsional | Context window dari `model` dalam token, dihitung dengan cara yang sama seperti [`context_window.context_window_size`](#context-window-fields) baris status utama, sehingga Anda dapat merender persentase per-baris dari `tokenCount`. Dihilangkan ketika `model` dihilangkan. Memerlukan Claude Code v2.1.205 atau lebih baru |1203| `contextWindowSize` | number, opsional | Context window dari `model` dalam token, dihitung dengan cara yang sama seperti [`context_window.context_window_size`](#context-window-fields) baris status utama, sehingga Anda dapat merender persentase per-baris dari `tokenCount`. Dihilangkan ketika `model` dihilangkan |

1204| `tokenCount` | number | Jumlah token berjalan subagent, angka yang ditampilkan oleh baris default |1204| `tokenCount` | number | Jumlah token berjalan subagent, angka yang ditampilkan oleh baris default |

1205| `tokenSamples` | array of numbers | Hingga 16 pembacaan `tokenCount` terakhir, satu per tick refresh, yang terlama terlebih dahulu dan diakhiri dengan yang saat ini |1205| `tokenSamples` | array of numbers | Hingga 16 pembacaan `tokenCount` terakhir, satu per tick refresh, yang terlama terlebih dahulu dan diakhiri dengan yang saat ini |

1206| `cwd` | string | Direktori kerja subagent: direktorinya sendiri ketika berjalan di dalamnya, seperti worktree terisolasi, jika tidak direktori kerja sesi |1206| `cwd` | string | Direktori kerja subagent: direktorinya sendiri ketika berjalan di dalamnya, seperti worktree terisolasi, jika tidak direktori kerja sesi |

sub-agents.md +40 −11

Details

32 32 

33Claude Code mencakup subagent bawaan yang Claude gunakan secara otomatis jika sesuai. Masing-masing mewarisi aturan izin percakapan induk; sebagian besar berjalan dengan set alat yang terbatas.33Claude Code mencakup subagent bawaan yang Claude gunakan secara otomatis jika sesuai. Masing-masing mewarisi aturan izin percakapan induk; sebagian besar berjalan dengan set alat yang terbatas.

34 34 

35Explore dan Plan melewati file CLAUDE.md Anda dan status git sesi induk untuk menjaga penelitian tetap cepat dan hemat biaya. Setiap subagent bawaan lainnya dan [subagent khusus](#configure-subagents) memuat keduanya, kecuali definisinya menetapkan bidang [`omitClaudeMd`](#supported-frontmatter-fields) untuk melewati file CLAUDE.md pengguna, proyek, dan lokal. Untuk rincian lengkap tentang apa yang mencapai subagent, lihat [apa yang dimuat saat startup](#what-loads-at-startup).35Explore dan Plan dimulai tanpa file CLAUDE.md Anda dan snapshot status git untuk menjaga penelitian tetap cepat dan hemat biaya. Subagent bawaan lainnya dan [subagent khusus](#configure-subagents) memuat keduanya, kecuali Anda menetapkan [`omitClaudeMd`](#supported-frontmatter-fields) dalam definisi subagent khusus untuk memulainya tanpa file CLAUDE.md pengguna, proyek, dan lokal. Untuk rincian lengkap tentang apa yang mencapai subagent, lihat [apa yang dimuat saat startup](#what-loads-at-startup).

36 36 

37<Tabs>37<Tabs>

38 <Tab title="Explore">38 <Tab title="Explore">


185 185 

186Claude Code memindai `.claude/agents/` dan `~/.claude/agents/` secara rekursif, jadi Anda dapat mengorganisir definisi ke dalam subfolder seperti `agents/review/` atau `agents/research/`. Jalur subdirektori tidak mempengaruhi cara subagent diidentifikasi atau dipanggil, karena identitas hanya berasal dari field frontmatter `name`.186Claude Code memindai `.claude/agents/` dan `~/.claude/agents/` secara rekursif, jadi Anda dapat mengorganisir definisi ke dalam subfolder seperti `agents/review/` atau `agents/research/`. Jalur subdirektori tidak mempengaruhi cara subagent diidentifikasi atau dipanggil, karena identitas hanya berasal dari field frontmatter `name`.

187 187 

188Jaga nilai `name` tetap unik di seluruh pohon: jika dua file di bawah direktori `.claude/agents/` yang sama, termasuk subfolder-nya, mendeklarasikan nama yang sama, Claude Code hanya memuat salah satunya, dipilih berdasarkan urutan pembacaan filesystem daripada prioritas yang terdokumentasi. Di seluruh direktori proyek bersarang, definisi yang paling dekat dengan direktori kerja menang, seperti dijelaskan di atas. Pemeriksaan setup [`/doctor`](/docs/id/commands#all-commands) melaporkan file di direktori yang sama yang berbagi nama dan menyarankan untuk mengganti nama atau menghapus semua kecuali satu. Sebelum v2.1.205, `/doctor` membuka layar diagnostik yang mencantumkan duplikat dan menunjukkan definisi mana yang aktif.188Jaga nilai `name` tetap unik di seluruh pohon: jika dua file di bawah direktori `.claude/agents/` yang sama, termasuk subfolder-nya, mendeklarasikan nama yang sama, Claude Code hanya memuat salah satunya, dipilih berdasarkan urutan pembacaan filesystem daripada prioritas yang terdokumentasi. Di seluruh direktori proyek bersarang, definisi yang paling dekat dengan direktori kerja menang, seperti dijelaskan di atas. Pemeriksaan setup [`/doctor`](/docs/id/commands#all-commands) melaporkan file di direktori yang sama yang berbagi nama dan menyarankan untuk mengganti nama atau menghapus semua kecuali satu.

189 189 

190Direktori `agents/` plugin juga dipindai secara rekursif. Tidak seperti cakupan proyek dan pengguna, subfolder di dalam direktori `agents/` plugin menjadi bagian dari [scoped identifier](#invoke-subagents-explicitly): file di `agents/review/security.md` dalam plugin `my-plugin` terdaftar sebagai `my-plugin:review:security`.190Direktori `agents/` plugin juga dipindai secara rekursif. Tidak seperti cakupan proyek dan pengguna, subfolder di dalam direktori `agents/` plugin menjadi bagian dari [scoped identifier](#invoke-subagents-explicitly): file di `agents/review/security.md` dalam plugin `my-plugin` terdaftar sebagai `my-plugin:review:security`.

191 191 


234Setiap kunci tingkat atas dalam JSON adalah nama agent, dan nilainya adalah definisi agent itu. Jangan mulai nama dengan `-`. Definisi mengambil field ini:234Setiap kunci tingkat atas dalam JSON adalah nama agent, dan nilainya adalah definisi agent itu. Jangan mulai nama dengan `-`. Definisi mengambil field ini:

235 235 

236* **`prompt`**: system prompt agent, setara dengan badan markdown dalam subagent berbasis file. `prompt` mungkin kosong. Jika Anda memilih agent dengan `prompt` kosong dan tidak ada field `memory` sebagai agent sesi dengan `--agent`, system prompt sesi dibiarkan tidak berubah. `prompt` kosong memerlukan Claude Code v2.1.281 atau lebih baru.236* **`prompt`**: system prompt agent, setara dengan badan markdown dalam subagent berbasis file. `prompt` mungkin kosong. Jika Anda memilih agent dengan `prompt` kosong dan tidak ada field `memory` sebagai agent sesi dengan `--agent`, system prompt sesi dibiarkan tidak berubah. `prompt` kosong memerlukan Claude Code v2.1.281 atau lebih baru.

237* **[Field frontmatter](#supported-frontmatter-fields)**: `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `omitClaudeMd`, dan `isolation`.237* **[Field frontmatter](#supported-frontmatter-fields)**: `description`, `tools`, `disallowedTools`, `model`, `permissionMode`, `mcpServers`, `hooks`, `maxTurns`, `autoCompactWindow`, `skills`, `initialPrompt`, `memory`, `effort`, `background`, `omitClaudeMd`, dan `isolation`.

238* **Field yang diabaikan**: `color` dan `experimental` tidak diterima di sini dan diabaikan daripada ditolak.238* **Field yang diabaikan**: `color` dan `experimental` tidak diterima di sini dan diabaikan daripada ditolak.

239 239 

240Untuk apa yang Claude Code lakukan dengan nilai yang tidak dapat dimuat, dan flag serta environment variable yang melewati pemeriksaan itu, lihat [`Invalid --agents configuration`](/docs/id/errors#invalid-agents-configuration).240Untuk apa yang Claude Code lakukan dengan nilai yang tidak dapat dimuat, dan flag serta environment variable yang melewati pemeriksaan itu, lihat [`Invalid --agents configuration`](/docs/id/errors#invalid-agents-configuration).


285 285 

286Subagent dimulai di direktori kerja saat ini percakapan utama. Dalam subagent, perintah `cd` tidak bertahan antara panggilan tool Bash atau PowerShell dan tidak mempengaruhi direktori kerja percakapan utama. Untuk memberikan subagent salinan terisolasi dari repositori, atur [`isolation: worktree`](#supported-frontmatter-fields).286Subagent dimulai di direktori kerja saat ini percakapan utama. Dalam subagent, perintah `cd` tidak bertahan antara panggilan tool Bash atau PowerShell dan tidak mempengaruhi direktori kerja percakapan utama. Untuk memberikan subagent salinan terisolasi dari repositori, atur [`isolation: worktree`](#supported-frontmatter-fields).

287 287 

288Subagent dengan `isolation: worktree` menjalankan perintah Bash dan PowerShell-nya di dalam worktree-nya. Perintah yang direktori kerjanya diselesaikan ke checkout utama Anda, misalnya karena direktori worktree dihapus saat subagent berjalan, gagal dengan kesalahan. Sebelum v2.1.203, perintah seperti itu dapat berjalan di checkout utama.288Subagent dengan `isolation: worktree` menjalankan perintah Bash dan PowerShell-nya di dalam worktree-nya. Perintah yang direktori kerjanya diselesaikan ke checkout utama Anda, misalnya karena direktori worktree dihapus saat subagent berjalan, gagal dengan kesalahan.

289 289 

290Pemeriksaan direktori kerja ini mencakup seluruh repositori yang berisi direktori tempat Anda meluncurkan Claude Code. Ketika sesi Anda berjalan di [worktree](/docs/id/worktrees) tertaut miliknya sendiri, pemeriksaan juga mencakup checkout utama yang worktree itu tertaut darinya. Sebelum v2.1.210, pemeriksaan hanya mencakup direktori peluncuran itu sendiri. Perintah yang direktori kerjanya diselesaikan di tempat lain di repositori yang sama, seperti akar repositori saat Anda meluncurkan Claude Code dari subdirektori monorepo, berjalan di sana sebagai gantinya dari gagal.290Pemeriksaan direktori kerja ini mencakup seluruh repositori yang berisi direktori tempat Anda meluncurkan Claude Code. Ketika sesi Anda berjalan di [worktree](/docs/id/worktrees) tertaut miliknya sendiri, pemeriksaan juga mencakup checkout utama yang worktree itu tertaut darinya. Sebelum v2.1.210, pemeriksaan hanya mencakup direktori peluncuran itu sendiri. Perintah yang direktori kerjanya diselesaikan di tempat lain di repositori yang sama, seperti akar repositori saat Anda meluncurkan Claude Code dari subdirektori monorepo, berjalan di sana sebagai gantinya dari gagal.

291 291 


306 306 

307Konfigurasi subagent dengan YAML [frontmatter](/docs/id/glossary#frontmatter) antara penanda `---` di bagian atas file-nya, dan tulis system prompt-nya sebagai Markdown setelah `---` penutup. Hanya `name` dan `description` yang diperlukan.307Konfigurasi subagent dengan YAML [frontmatter](/docs/id/glossary#frontmatter) antara penanda `---` di bagian atas file-nya, dan tulis system prompt-nya sebagai Markdown setelah `---` penutup. Hanya `name` dan `description` yang diperlukan.

308 308 

309Nama field multi-kata menggunakan camelCase, seperti `maxTurns` dan `disallowedTools`, dan harus cocok dengan tabel persis: Claude Code mengabaikan field yang tidak dikenalinya tanpa melaporkan kesalahan. Untuk mengetahui mengapa file subagent tidak dimuat, lihat [Subagent files Claude Code skips](#subagent-files-claude-code-skips).309Nama field multi-kata menggunakan camelCase, seperti `maxTurns` dan `disallowedTools`, dan harus cocok dengan tabel persis: Claude Code mengabaikan field yang tidak dikenalinya tanpa melaporkan kesalahan.

310 

311* Untuk menemukan field yang salah eja dalam subagent yang berhasil dimuat, jalankan [`claude --debug`](/docs/id/cli-reference#cli-flags) di shell Anda dan cari `does not recognize or apply` dalam debug log di `~/.claude/debug/<session-id>.txt`. Debug log menyebutkan hingga lima field tingkat atas dalam file subagent yang tidak dikenali Claude Code, beserta nama yang kemungkinan dimaksud ketika ada field yang didukung yang mirip. Memerlukan Claude Code v2.1.296 atau lebih baru.

312* Untuk mengetahui mengapa file subagent tidak dimuat, lihat [Subagent files Claude Code skips](#subagent-files-claude-code-skips).

310 313 

311| Field | Diperlukan | Deskripsi |314| Field | Diperlukan | Deskripsi |

312| :- | :- | :- |315| :- | :- | :- |


317| `model` | Tidak | [Model](#choose-a-model) untuk digunakan: `sonnet`, `opus`, `haiku`, `fable`, ID model lengkap seperti `claude-opus-5-5`, atau `inherit`. Ketika Anda menghilangkannya, Claude Code memilih model dalam [subagent model order](#choose-a-model) |320| `model` | Tidak | [Model](#choose-a-model) untuk digunakan: `sonnet`, `opus`, `haiku`, `fable`, ID model lengkap seperti `claude-opus-5-5`, atau `inherit`. Ketika Anda menghilangkannya, Claude Code memilih model dalam [subagent model order](#choose-a-model) |

318| `permissionMode` | Tidak | [Mode izin](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan`, atau `manual` sebagai alias untuk `default`. Diabaikan untuk [plugin subagents](#choose-the-subagent-scope) |321| `permissionMode` | Tidak | [Mode izin](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan`, atau `manual` sebagai alias untuk `default`. Diabaikan untuk [plugin subagents](#choose-the-subagent-scope) |

319| `maxTurns` | Tidak | Jumlah maksimum giliran agentic sebelum subagent berhenti. Ketika subagent mencapai batas, Claude Code mengembalikan output-nya ditandai sebagai parsial, dan Claude dapat [melanjutkannya](#resume-subagents) untuk terus. Penandaan parsial memerlukan Claude Code v2.1.246 atau lebih baru |322| `maxTurns` | Tidak | Jumlah maksimum giliran agentic sebelum subagent berhenti. Ketika subagent mencapai batas, Claude Code mengembalikan output-nya ditandai sebagai parsial, dan Claude dapat [melanjutkannya](#resume-subagents) untuk terus. Penandaan parsial memerlukan Claude Code v2.1.246 atau lebih baru |

323| `autoCompactWindow` | Tidak | Turunkan [jendela auto-compact](#subagent-auto-compact-window) untuk subagent ini ke jumlah token dari `100000` hingga `1000000`. Memerlukan Claude Code v2.1.296 atau lebih baru |

320| `skills` | Tidak | [Skills](/docs/id/skills) untuk dimuat sebelumnya ke dalam konteks subagent saat startup. Konten skill lengkap disuntikkan, bukan hanya deskripsi. Subagent masih dapat memanggil skill proyek, pengguna, dan plugin yang tidak terdaftar melalui tool Skill |324| `skills` | Tidak | [Skills](/docs/id/skills) untuk dimuat sebelumnya ke dalam konteks subagent saat startup. Konten skill lengkap disuntikkan, bukan hanya deskripsi. Subagent masih dapat memanggil skill proyek, pengguna, dan plugin yang tidak terdaftar melalui tool Skill |

321| `mcpServers` | Tidak | [Server MCP](/docs/id/mcp) yang tersedia untuk subagent ini. Setiap entri adalah nama server yang mereferensikan server yang sudah dikonfigurasi (misalnya, `"slack"`) atau definisi inline dengan nama server sebagai kunci dan [MCP server config](/docs/id/mcp#installing-mcp-servers) lengkap sebagai nilai. Diabaikan untuk [plugin subagents](#choose-the-subagent-scope) |325| `mcpServers` | Tidak | [Server MCP](/docs/id/mcp) yang tersedia untuk subagent ini. Setiap entri adalah nama server yang mereferensikan server yang sudah dikonfigurasi (misalnya, `"slack"`) atau definisi inline dengan nama server sebagai kunci dan [MCP server config](/docs/id/mcp#installing-mcp-servers) lengkap sebagai nilai. Diabaikan untuk [plugin subagents](#choose-the-subagent-scope) |

322| `hooks` | Tidak | [Lifecycle hooks](#define-hooks-for-subagents) yang dibatasi ke subagent ini. Diabaikan untuk [plugin subagents](#choose-the-subagent-scope) |326| `hooks` | Tidak | [Lifecycle hooks](#define-hooks-for-subagents) yang dibatasi ke subagent ini. Diabaikan untuk [plugin subagents](#choose-the-subagent-scope) |

323| `memory` | Tidak | [Persistent memory scope](#enable-persistent-memory): `user`, `project`, atau `local`. Memungkinkan pembelajaran lintas sesi |327| `memory` | Tidak | [Persistent memory scope](#enable-persistent-memory): `user`, `project`, atau `local`. Memungkinkan pembelajaran lintas sesi |

324| `background` | Tidak | Atur ke `true` untuk menjaga subagent ini di latar belakang bahkan ketika Claude meminta untuk menjalankannya di latar depan. Tempat [fork mode](#turn-fork-mode-on-or-off) aktif, Claude Code sudah menjalankan subagent yang Claude hasilkan [di latar belakang](#run-subagents-in-foreground-or-background) |328| `background` | Tidak | Atur ke `true` untuk menjaga subagent ini di latar belakang bahkan ketika Claude meminta untuk menjalankannya di latar depan. Tempat [fork mode](#turn-fork-mode-on-or-off) aktif, Claude Code sudah menjalankan subagent yang Claude hasilkan [di latar belakang](#run-subagents-in-foreground-or-background) |

325| `omitClaudeMd` | Tidak | Atur ke `true` untuk meluncurkan subagent ini tanpa file CLAUDE.md pengguna, proyek, dan lokal; [managed policy files](/docs/id/memory#how-claude-md-files-load) masih dimuat, kecuali untuk [managed subagents](#choose-the-subagent-scope). Gunakan untuk subagent yang mengambil semua yang mereka butuhkan dari [delegation prompt](#what-loads-at-startup). Diabaikan ketika agent berjalan sebagai agent sesi utama melalui `--agent` atau pengaturan `agent`. Memerlukan Claude Code v2.1.271 atau lebih baru |329| `omitClaudeMd` | Tidak | Atur ke `true` untuk memulai subagent ini tanpa file CLAUDE.md pengguna, proyek, dan lokal dalam [konteks awal](#what-loads-at-startup)-nya; [managed policy files](/docs/id/memory#how-claude-md-files-load) masih dimuat, kecuali untuk [managed subagents](#choose-the-subagent-scope). Gunakan untuk subagent yang mengambil semua yang mereka butuhkan dari prompt delegasi. Diabaikan ketika agent berjalan sebagai agent sesi utama melalui `--agent` atau pengaturan `agent`. Memerlukan Claude Code v2.1.271 atau lebih baru |

326| `effort` | Tidak | Tingkat effort ketika subagent ini aktif. Menimpa tingkat effort sesi, tetapi tidak menimpa environment variable [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/id/env-vars#variables). Opsi: `low`, `medium`, `high`, `xhigh`, `max`; level yang tersedia tergantung pada model. Lihat [Pilih tingkat effort](#choose-an-effort-level) |330| `effort` | Tidak | Tingkat effort ketika subagent ini aktif. Menimpa tingkat effort sesi, tetapi tidak menimpa environment variable [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/id/env-vars#variables). Opsi: `low`, `medium`, `high`, `xhigh`, `max`; level yang tersedia tergantung pada model. Lihat [Pilih tingkat effort](#choose-an-effort-level) |

327| `isolation` | Tidak | Atur ke `worktree` untuk menjalankan subagent dalam [git worktree](/docs/id/worktrees) sementara, memberikannya salinan terisolasi dari repositori yang bercabang secara default dari [default branch](/docs/id/worktrees#choose-the-base-branch) Anda daripada `HEAD` sesi induk. Worktree secara otomatis dibersihkan jika subagent tidak membuat perubahan |331| `isolation` | Tidak | Atur ke `worktree` untuk menjalankan subagent dalam [git worktree](/docs/id/worktrees) sementara, memberikannya salinan terisolasi dari repositori yang bercabang secara default dari [default branch](/docs/id/worktrees#choose-the-base-branch) Anda daripada `HEAD` sesi induk. Worktree secara otomatis dibersihkan jika subagent tidak membuat perubahan |

328| `color` | Tidak | Warna tampilan untuk subagent dalam daftar tugas dan transkrip. Menerima `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, atau `cyan` |332| `color` | Tidak | Warna tampilan untuk subagent dalam daftar tugas dan transkrip. Menerima `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, atau `cyan` |


914claude --agent code-reviewer918claude --agent code-reviewer

915```919```

916 920 

917Kecuali prompt agent [kosong](#choose-the-subagent-scope), system prompt subagent kustom menggantikan system prompt Claude Code default sepenuhnya, dengan cara yang sama [`--system-prompt`](/docs/id/cli-reference) melakukannya. File `CLAUDE.md` dan memori proyek masih dimuat melalui aliran pesan normal, bahkan ketika definisi agent menetapkan [`omitClaudeMd`](#supported-frontmatter-fields).921Kecuali prompt agent [kosong](#choose-the-subagent-scope), system prompt subagent kustom menggantikan system prompt Claude Code default sepenuhnya, dengan cara yang sama [`--system-prompt`](/docs/id/cli-reference) melakukannya. File `CLAUDE.md` dan memori proyek masih dimuat melalui aliran pesan normal, bahkan ketika definisi agent menetapkan [`omitClaudeMd`](#supported-frontmatter-fields). Jika Anda menjalankan sesi dengan `-p` sebagai agent kustom yang memiliki prompt sendiri, sesi juga dimulai tanpa [snapshot status git](/docs/id/settings-reference#includegitinstructions).

918 922 

919Nama agent muncul sebagai `@<name>` di header startup sehingga Anda dapat mengonfirmasi itu aktif.923Nama agent muncul sebagai `@<name>` di header startup sehingga Anda dapat mengonfirmasi itu aktif.

920 924 


1150* **File CLAUDE.md**: setiap level dari [hierarki CLAUDE.md](/docs/id/memory#how-claude-md-files-load) yang dimuat percakapan utama, termasuk `~/.claude/CLAUDE.md`, aturan proyek, `CLAUDE.local.md`, file kebijakan terkelola, dan file [`AGENTS.md`](/docs/id/memory#agents-md) apa pun yang dimuat sebagai instruksi proyek. Agent Explore dan Plan bawaan melewati ini. Subagent yang definisinya menetapkan [`omitClaudeMd`](#supported-frontmatter-fields) hanya memuat file kebijakan terkelola, atau tidak ada sama sekali ketika definisi berasal dari [pengaturan terkelola](#choose-the-subagent-scope).1154* **File CLAUDE.md**: setiap level dari [hierarki CLAUDE.md](/docs/id/memory#how-claude-md-files-load) yang dimuat percakapan utama, termasuk `~/.claude/CLAUDE.md`, aturan proyek, `CLAUDE.local.md`, file kebijakan terkelola, dan file [`AGENTS.md`](/docs/id/memory#agents-md) apa pun yang dimuat sebagai instruksi proyek. Agent Explore dan Plan bawaan melewati ini. Subagent yang definisinya menetapkan [`omitClaudeMd`](#supported-frontmatter-fields) hanya memuat file kebijakan terkelola, atau tidak ada sama sekali ketika definisi berasal dari [pengaturan terkelola](#choose-the-subagent-scope).

1151* **Status Git**: snapshot yang dibaca Claude Code dari repositori Anda saat subagent dimulai. Untuk subagent di [worktree-nya sendiri](/docs/id/worktrees#isolate-subagents-with-worktrees) dari repositori tersebut, snapshot menampilkan branch, status, dan commit terbaru worktree tersebut. Tidak ada di luar repositori Git atau kapan pun snapshot dimatikan; lihat [`includeGitInstructions`](/docs/id/settings-reference#includegitinstructions). Explore dan Plan tetap melewatinya dalam kondisi apa pun.1155* **Status Git**: snapshot yang dibaca Claude Code dari repositori Anda saat subagent dimulai. Untuk subagent di [worktree-nya sendiri](/docs/id/worktrees#isolate-subagents-with-worktrees) dari repositori tersebut, snapshot menampilkan branch, status, dan commit terbaru worktree tersebut. Tidak ada di luar repositori Git atau kapan pun snapshot dimatikan; lihat [`includeGitInstructions`](/docs/id/settings-reference#includegitinstructions). Explore dan Plan tetap melewatinya dalam kondisi apa pun.

1152* **Skills yang dimuat sebelumnya**: konten lengkap dari skill apa pun yang dinamai dalam bidang [`skills`](#preload-skills-into-subagents) agent. Agent bawaan tidak memuat skills sebelumnya.1156* **Skills yang dimuat sebelumnya**: konten lengkap dari skill apa pun yang dinamai dalam bidang [`skills`](#preload-skills-into-subagents) agent. Agent bawaan tidak memuat skills sebelumnya.

1153* **Daftar saudara**: [system reminder](/docs/id/glossary#system-reminder) yang mencantumkan `main` dan setiap agent bernama lainnya dalam sesi, masing-masing nilai `to` yang valid untuk [`SendMessage`](#resume-subagents). Memerlukan Claude Code v2.1.206 atau lebih baru. Daftar muncul hanya ketika tool subagent mencakup `SendMessage` dan setidaknya satu agent lain memiliki nama, baik Claude menamakannya saat memunculkannya atau berjalan sebagai anggota [tim agent](/docs/id/agent-teams). Ini adalah snapshot yang diambil ketika subagent dimulai, jadi agent yang dinamai nanti tidak muncul.1157* **Daftar saudara**: [system reminder](/docs/id/glossary#system-reminder) yang mencantumkan `main` dan setiap agent bernama lainnya dalam sesi, masing-masing nilai `to` yang valid untuk [`SendMessage`](#resume-subagents). Daftar muncul hanya ketika tool subagent mencakup `SendMessage` dan setidaknya satu agent lain memiliki nama, baik Claude menamakannya saat memunculkannya atau berjalan sebagai anggota [tim agent](/docs/id/agent-teams). Ini adalah snapshot yang diambil ketika subagent dimulai, jadi agent yang dinamai nanti tidak muncul.

1154 1158 

1155Untuk meluncurkan salah satu subagent Anda sendiri tanpa file CLAUDE.md pengguna, proyek, dan lokal, atur [`omitClaudeMd: true`](#supported-frontmatter-fields) dalam frontmatter atau `--agents` JSON.1159Untuk meluncurkan salah satu subagent Anda sendiri tanpa file CLAUDE.md pengguna, proyek, dan lokal, atur [`omitClaudeMd: true`](#supported-frontmatter-fields) dalam frontmatter atau `--agents` JSON. Untuk Explore, Plan, dan subagent dengan `omitClaudeMd`, `CLAUDE.md` subdirektori dan [aturan berbasis path](/docs/id/memory#path-specific-rules) yang cocok tetap [dimuat](/docs/id/memory#how-claude-md-files-load) ketika subagent bekerja dengan file di sana.

1156 1160 

1157Percakapan utama masih memiliki CLAUDE.md penuh Anda saat membaca hasil subagent ini, jadi sebagian besar aturan tidak perlu mencapai subagent itu sendiri. Jika aturan harus, seperti "abaikan direktori `vendor/`," nyatakan kembali dalam prompt yang Anda berikan Claude saat mendelegasikan.1161Percakapan utama masih memiliki CLAUDE.md penuh Anda saat membaca hasil subagent ini, jadi sebagian besar aturan tidak perlu mencapai subagent itu sendiri. Jika aturan harus, seperti "abaikan direktori `vendor/`," nyatakan kembali dalam prompt yang Anda berikan Claude saat mendelegasikan.

1158 1162 


1196 1200 

1197Sementara [baris subagent itu masih dalam panel subagent](#run-subagents-in-foreground-or-background), ketik ke dalam transkrip untuk melanjutkannya sendiri. Setelah itu, pesan dari Claude dapat auto-resume lagi.1201Sementara [baris subagent itu masih dalam panel subagent](#run-subagents-in-foreground-or-background), ketik ke dalam transkrip untuk melanjutkannya sendiri. Setelah itu, pesan dari Claude dapat auto-resume lagi.

1198 1202 

1199Melanjutkan memulai run baru dari agent di bawah ID yang sama, jadi subagent yang sudah gagal atau selesai menunjukkan sebagai berjalan lagi dalam daftar tugas dan dalam peristiwa tugas Agent SDK. Sebelum v2.1.205, itu terus menunjukkan status gagal atau selesai sebelumnya sementara run yang dilanjutkan sedang bekerja.1203Melanjutkan memulai run baru dari agent di bawah ID yang sama, jadi subagent yang sudah gagal atau selesai menunjukkan sebagai berjalan lagi dalam daftar tugas dan dalam peristiwa tugas Agent SDK.

1200 1204 

1201`SendMessage` memeriksa bahwa nama masih merujuk ke agent yang sama yang dicapai sebelumnya dalam percakapan. Jika agent yang lebih baru telah mengambil nama, seperti agent background yang di-spawn ulang yang menggunakannya kembali, Claude Code menolak pengiriman daripada mengirimkannya ke agent yang salah, dan kesalahan melaporkan agent mana yang sekarang dicapai nama sehingga Claude dapat menargetkan ulang. Untuk mencapai agent sebelumnya sementara masih berjalan, Claude mengalamatkannya dengan ID agent yang diterima saat menghasilkan agent itu. Pemeriksaan dibatasi pada percakapan saat ini dan direset pada `/clear`.1205`SendMessage` memeriksa bahwa nama masih merujuk ke agent yang sama yang dicapai sebelumnya dalam percakapan. Jika agent yang lebih baru telah mengambil nama, seperti agent background yang di-spawn ulang yang menggunakannya kembali, Claude Code menolak pengiriman daripada mengirimkannya ke agent yang salah, dan kesalahan melaporkan agent mana yang sekarang dicapai nama sehingga Claude dapat menargetkan ulang. Untuk mencapai agent sebelumnya sementara masih berjalan, Claude mengalamatkannya dengan ID agent yang diterima saat menghasilkan agent itu. Pemeriksaan dibatasi pada percakapan saat ini dan direset pada `/clear`.

1202 1206 


1214 Auto-compaction1218 Auto-compaction

1215</h4>1219</h4>

1216 1220 

1217Subagent mendukung compaction otomatis menggunakan logika yang sama dengan percakapan utama. Compaction dipicu di bawah kondisi yang sama, dan `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` berlaku untuk subagent juga. Lihat [environment variables](/docs/id/env-vars) untuk kapan override berlaku.1221Subagent mendukung compaction otomatis. Compaction dipicu saat context window milik subagent itu sendiri terisi, dan `CLAUDE_AUTOCOMPACT_PCT_OVERRIDE` berlaku untuk subagent juga. Lihat [environment variables](/docs/id/env-vars) untuk kapan override berlaku.

1218 1222 

1219Peristiwa compaction dicatat dalam file transkrip subagent:1223Peristiwa compaction dicatat dalam file transkrip subagent:

1220 1224 


1231 1235 

1232Nilai `preTokens` menunjukkan berapa banyak token yang digunakan sebelum compaction terjadi.1236Nilai `preTokens` menunjukkan berapa banyak token yang digunakan sebelum compaction terjadi.

1233 1237 

1238<a id="subagent-auto-compact-window" />

1239 

1240<h5 id="set-the-auto-compact-window-for-one-subagent">

1241 Atur jendela auto-compact untuk satu subagent

1242</h5>

1243 

1244Agar satu subagent melakukan compaction lebih awal daripada yang seharusnya, atur `autoCompactWindow` dalam [frontmatter](#supported-frontmatter-fields)-nya ke jumlah token dari `100000` hingga `1000000`. Jika Anda menetapkan [`CLAUDE_CODE_AUTO_COMPACT_WINDOW`](/docs/id/env-vars#variables) ke bilangan bulat positif, subagent menggunakan jendela dari variabel tersebut sebagai gantinya dan bidang ini tidak berpengaruh. Memerlukan Claude Code v2.1.296 atau lebih baru.

1245 

1246Frontmatter ini mengatur `autoCompactWindow` ke 200.000 token untuk subagent yang membaca file log panjang:

1247 

1248```yaml theme={null}

1249---

1250name: log-reader

1251description: Reads long log files and reports the errors it finds

1252autoCompactWindow: 200000

1253---

1254```

1255 

1256Tulis nilai sebagai bilangan bulat biasa seperti `200000`, karena dalam frontmatter Claude Code membaca `200k` sebagai 200, yang berada di luar rentang yang diizinkan. Subagent tetap dimuat dan melakukan compaction seolah-olah bidang tersebut tidak ada. Untuk memeriksa apakah Claude Code mengabaikan nilai Anda, jalankan `claude --debug` di shell Anda dan cari `invalid autoCompactWindow` di [log debug](#supported-frontmatter-fields).

1257 

1258Jika nilai berada dalam rentang dan Anda masih tidak melihat perubahan, periksa penyebab berikut:

1259 

1260* **Nilai tidak berada di bawah [jendela auto-compact](/docs/id/model-config#context-window-and-auto-compaction) yang seharusnya diwarisi subagent**: untuk melakukan compaction lebih awal, atur nilai di bawah jendela tersebut.

1261* **Anda menjalankan seluruh sesi sebagai subagent ini dengan `--agent` atau pengaturan `agent`**: bidang ini tidak berpengaruh di sana. Untuk mengatur jendela sesi, lihat [Atur jendela auto-compact](/docs/id/model-config#set-the-auto-compact-window).

1262 

1234<h2 id="fork-the-current-conversation">1263<h2 id="fork-the-current-conversation">

1235 Fork percakapan saat ini1264 Fork percakapan saat ini

1236</h2>1265</h2>

Details

44| `ReadMcpResourceTool` | Membaca sumber daya MCP tertentu berdasarkan URI | Tidak |44| `ReadMcpResourceTool` | Membaca sumber daya MCP tertentu berdasarkan URI | Tidak |

45| `RemoteTrigger` | Membuat, memperbarui, menjalankan, dan mencantumkan [Routines](/docs/id/routines) di claude.ai. Mendukung perintah `/schedule`. [Referensi input `RemoteTrigger`](/docs/id/agent-sdk/typescript#remotetrigger) mendokumentasikan setiap tindakan dan kebijakan organisasi yang menghapus tool. Routines tinggal di claude.ai dan memerlukan paket Pro, Max, Team, atau Enterprise, jadi tool ini tidak dapat diakses dari Amazon Bedrock, Claude Platform di AWS, Agent Platform Google Cloud, atau Microsoft Foundry | Tidak |45| `RemoteTrigger` | Membuat, memperbarui, menjalankan, dan mencantumkan [Routines](/docs/id/routines) di claude.ai. Mendukung perintah `/schedule`. [Referensi input `RemoteTrigger`](/docs/id/agent-sdk/typescript#remotetrigger) mendokumentasikan setiap tindakan dan kebijakan organisasi yang menghapus tool. Routines tinggal di claude.ai dan memerlukan paket Pro, Max, Team, atau Enterprise, jadi tool ini tidak dapat diakses dari Amazon Bedrock, Claude Platform di AWS, Agent Platform Google Cloud, atau Microsoft Foundry | Tidak |

46| `ReportFindings` | Melaporkan temuan code review sebagai daftar terstruktur, dengan file, ringkasan, dan skenario kegagalan per temuan, sehingga Claude Code dapat merendernya alih-alih mencetaknya sebagai teks. Claude memanggilnya ketika instruksi code review yang aktif memberitahunya untuk melakukannya. Temuan juga dapat membawa slug `category` opsional, seperti `correctness` atau `test-coverage`, yang ditampilkan di sebelah lokasi file dalam daftar yang dirender | Tidak |46| `ReportFindings` | Melaporkan temuan code review sebagai daftar terstruktur, dengan file, ringkasan, dan skenario kegagalan per temuan, sehingga Claude Code dapat merendernya alih-alih mencetaknya sebagai teks. Claude memanggilnya ketika instruksi code review yang aktif memberitahunya untuk melakukannya. Temuan juga dapat membawa slug `category` opsional, seperti `correctness` atau `test-coverage`, yang ditampilkan di sebelah lokasi file dalam daftar yang dirender | Tidak |

47| `ScheduleWakeup` | Menjadwalkan ulang iterasi berikutnya dari [`/loop` yang berjalan sendiri](/docs/id/scheduled-tasks#let-claude-choose-the-interval). Claude memanggilnya di akhir setiap iterasi untuk memilih kapan yang berikutnya berjalan, antara satu menit dan satu jam ke depan; Anda tidak memanggilnya secara langsung. Untuk mengakhiri loop sebagai gantinya, Claude memanggilnya dengan `stop: true`, yang membatalkan wakeup yang tertunda. Bidang `stop` memerlukan Claude Code v2.1.202 atau lebih baru. Wakeup yang tertunda muncul dalam `session_crons` dalam [Input hook Stop](/docs/id/hooks#stop-input) | Tidak |47| `ScheduleWakeup` | Menjadwalkan ulang iterasi berikutnya dari [`/loop` yang berjalan sendiri](/docs/id/scheduled-tasks#let-claude-choose-the-interval). Claude memanggilnya di akhir setiap iterasi untuk memilih kapan yang berikutnya berjalan, antara satu menit dan satu jam ke depan; Anda tidak memanggilnya secara langsung. Untuk mengakhiri loop sebagai gantinya, Claude memanggilnya dengan `stop: true`, yang membatalkan wakeup yang tertunda. Wakeup yang tertunda muncul dalam `session_crons` dalam [Input hook Stop](/docs/id/hooks#stop-input) | Tidak |

48| `SendFeedback` | Menyusun laporan umpan balik tentang Claude Code, mencakup masalah produk atau perilaku Claude sendiri dalam sesi, dan mengantreannya di mesin Anda untuk Anda tinjau. Claude Code tidak mengirim apa pun sampai Anda memilih untuk mengirim draf. Lihat [Perilaku tool SendFeedback](#sendfeedback-tool-behavior). Memerlukan Claude Code v2.1.238 atau lebih baru | Tidak |48| `SendFeedback` | Menyusun laporan umpan balik tentang Claude Code, mencakup masalah produk atau perilaku Claude sendiri dalam sesi, dan mengantreannya di mesin Anda untuk Anda tinjau. Claude Code tidak mengirim apa pun sampai Anda memilih untuk mengirim draf. Lihat [Perilaku tool SendFeedback](#sendfeedback-tool-behavior). Memerlukan Claude Code v2.1.238 atau lebih baru | Tidak |

49| `SendMessage` | Mengirim pesan ke agent lain: rekan tim [tim agent](/docs/id/agent-teams), [subagent yang dilanjutkan](/docs/id/sub-agents#resume-subagents) berdasarkan ID atau nama agent, atau salah satu sesi Claude Code Anda yang lain, di mesin ini atau di luar. Pesan ke sesi lain memerlukan Claude Code v2.1.224 atau lebih baru. [Pesan lintas-sesi](/docs/id/cross-session-messaging) mencakup sesi mana yang dapat dijangkau Claude, [seperti apa pesan ketika tiba](/docs/id/cross-session-messaging#what-a-message-looks-like), dan [bagaimana Claude mendapat pemberitahuan ketika sesi lain menjadi idle](/docs/id/cross-session-messaging#get-a-notice-when-another-session-goes-idle). Claude dapat menyertakan input `summary` opsional, biasanya 5-10 kata, yang ditampilkan Claude Code sebagai pratinjau satu baris. Ketika Claude menghilangkannya pada [pesan teks biasa](/docs/id/cross-session-messaging#limitations), Claude Code menggunakan baris pertama pesan sebagai ringkasan. Claude Code memotong ringkasan lebih panjang dari 200 karakter dengan elipsis | Tidak |49| `SendMessage` | Mengirim pesan ke agent lain: rekan tim [tim agent](/docs/id/agent-teams), [subagent yang dilanjutkan](/docs/id/sub-agents#resume-subagents) berdasarkan ID atau nama agent, atau salah satu sesi Claude Code Anda yang lain, di mesin ini atau di luar. Pesan ke sesi lain memerlukan Claude Code v2.1.224 atau lebih baru. [Pesan lintas-sesi](/docs/id/cross-session-messaging) mencakup sesi mana yang dapat dijangkau Claude, [seperti apa pesan ketika tiba](/docs/id/cross-session-messaging#what-a-message-looks-like), dan [bagaimana Claude mendapat pemberitahuan ketika sesi lain menjadi idle](/docs/id/cross-session-messaging#get-a-notice-when-another-session-goes-idle). Claude dapat menyertakan input `summary` opsional, biasanya 5-10 kata, yang ditampilkan Claude Code sebagai pratinjau satu baris. Ketika Claude menghilangkannya pada [pesan teks biasa](/docs/id/cross-session-messaging#limitations), Claude Code menggunakan baris pertama pesan sebagai ringkasan. Claude Code memotong ringkasan lebih panjang dari 200 karakter dengan elipsis | Tidak |

50| `SendUserFile` | Mengirim file dari sesi ke Anda dengan keterangan opsional, sehingga laporan yang dihasilkan, diagram, tangkapan layar, atau artefak build mencapai perangkat Anda alih-alih hanya disebutkan dalam transkrip. Input `display` opsional mengontrol presentasi: `render` membuka file inline dalam klien, `attach` menampilkan kartu unduhan saja, dan ketika tidak diatur klien memutuskan berdasarkan jenis file. Tersedia ketika klien [Remote Control](/docs/id/remote-control) terhubung atau dalam [sesi cloud](/docs/id/claude-code-on-the-web). Pengiriman berjalan melalui infrastruktur yang dihosting Anthropic, jadi tool tidak tersedia di Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry | Tidak |50| `SendUserFile` | Mengirim file dari sesi ke Anda dengan keterangan opsional, sehingga laporan yang dihasilkan, diagram, tangkapan layar, atau artefak build mencapai perangkat Anda alih-alih hanya disebutkan dalam transkrip. Input `display` opsional mengontrol presentasi: `render` membuka file inline dalam klien, `attach` menampilkan kartu unduhan saja, dan ketika tidak diatur klien memutuskan berdasarkan jenis file. Tersedia ketika klien [Remote Control](/docs/id/remote-control) terhubung atau dalam [sesi cloud](/docs/id/claude-code-on-the-web). Pengiriman berjalan melalui infrastruktur yang dihosting Anthropic, jadi tool tidak tersedia di Amazon Bedrock, Agent Platform Google Cloud, atau Microsoft Foundry | Tidak |


54| `TaskCreate` | Membuat tugas baru dalam daftar tugas. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |54| `TaskCreate` | Membuat tugas baru dalam daftar tugas. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |

55| `TaskGet` | Mengambil detail lengkap untuk tugas tertentu. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |55| `TaskGet` | Mengambil detail lengkap untuk tugas tertentu. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |

56| `TaskList` | Mencantumkan semua tugas dengan status saat ini mereka. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |56| `TaskList` | Mencantumkan semua tugas dengan status saat ini mereka. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |

57| `TaskOutput` | Mengambil output dari tugas latar belakang. Tidak direkomendasikan lagi mendukung `Read` pada jalur file output tugas. Ketika tidak ada tugas yang cocok dengan ID, kesalahan mencantumkan agent latar belakang yang berjalan berdasarkan ID dan deskripsi. Sebelum v2.1.203, kesalahan hanya menyebutkan ID yang hilang | Tidak |57| `TaskOutput` | Dihapus di v2.1.277. Sebelumnya mengambil output dari tugas latar belakang; Claude kini membaca [file output](/docs/id/interactive-mode#how-backgrounding-works) tugas latar belakang dengan `Read` sebagai gantinya | Tidak |

58| `TaskStop` | Menghentikan tugas latar belakang yang berjalan berdasarkan ID. Ini juga menerima [rekan tim tim agent](/docs/id/agent-teams) atau agent latar belakang bernama berdasarkan ID atau nama agent. Ketika tidak ada tugas yang cocok dengan ID, kesalahan mencantumkan agent latar belakang yang berjalan berdasarkan ID dan deskripsi, termasuk agent yang dijalankan oleh agent lain. Sebelum v2.1.203, kesalahan mencantumkan rekan tim dan agent bernama yang berjalan tetapi bukan agent latar belakang yang dijalankan oleh agent lain, jadi agent tersebut tidak dapat diidentifikasi atau dihentikan dari percakapan utama | Tidak |58| `TaskStop` | Menghentikan tugas latar belakang yang berjalan berdasarkan ID. Ini juga menerima [rekan tim tim agent](/docs/id/agent-teams) atau agent latar belakang bernama berdasarkan ID atau nama agent. Ketika tidak ada tugas yang cocok dengan ID, kesalahan mencantumkan agent latar belakang yang berjalan berdasarkan ID dan deskripsi, termasuk agent yang dijalankan oleh agent lain | Tidak |

59| `TaskUpdate` | Memperbarui status tugas, dependensi, detail, atau menghapus tugas. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |59| `TaskUpdate` | Memperbarui status tugas, dependensi, detail, atau menghapus tugas. Disediakan secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](#task-tool-availability), dan pada model lain ketika Anda memilih untuk ikut serta | Tidak |

60| `TodoWrite` | Mengelola daftar periksa tugas sesi. Dinonaktifkan secara default mendukung `TaskCreate`, `TaskGet`, `TaskList`, dan `TaskUpdate`. Atur `CLAUDE_CODE_ENABLE_TASKS=0` untuk mengaktifkannya kembali dalam [sesi yang memiliki tools pelacakan tugas](#task-tool-availability) | Tidak |60| `TodoWrite` | Mengelola daftar periksa tugas sesi. Dinonaktifkan secara default mendukung `TaskCreate`, `TaskGet`, `TaskList`, dan `TaskUpdate`. Atur `CLAUDE_CODE_ENABLE_TASKS=0` untuk mengaktifkannya kembali dalam [sesi yang memiliki tools pelacakan tugas](#task-tool-availability) | Tidak |

61| `ToolSearch` | Mencari dan memuat tools yang ditangguhkan ketika [pencarian tool](/docs/id/mcp#scale-with-mcp-tool-search) diaktifkan | Tidak |61| `ToolSearch` | Mencari dan memuat tools yang ditangguhkan ketika [pencarian tool](/docs/id/mcp#scale-with-mcp-tool-search) diaktifkan | Tidak |

ultrareview.md +2 −2

Details

149 Lacak tinjauan yang sedang berjalan149 Lacak tinjauan yang sedang berjalan

150</h2>150</h2>

151 151 

152Tinjauan biasanya memakan waktu 5 hingga 10 menit. Tinjauan berjalan sebagai tugas latar belakang, sehingga Anda dapat terus bekerja di sesi Anda atau memulai perintah lain. Jika Anda memilih untuk [memposting temuan ke pull request](#post-findings-to-the-pull-request), jaga sesi tetap terbuka hingga tinjauan selesai; jika sesi berakhir terlebih dahulu, Claude Code tidak memposting apa pun.152Tinjauan biasanya memakan waktu 15 hingga 25 menit. Tinjauan berjalan sebagai tugas latar belakang, sehingga Anda dapat terus bekerja di sesi Anda atau memulai perintah lain. Jika Anda memilih untuk [memposting temuan ke pull request](#post-findings-to-the-pull-request), jaga sesi tetap terbuka hingga tinjauan selesai; jika sesi berakhir terlebih dahulu, Claude Code tidak memposting apa pun.

153 153 

154Gunakan `/tasks` untuk melihat tinjauan yang sedang berjalan dan selesai, buka tampilan detail untuk tinjauan, atau hentikan tinjauan yang sedang berlangsung. Jika Anda menghentikan tinjauan, Claude Code mengarsipkan sesi cloud dan tidak mengembalikan temuan parsial.154Gunakan `/tasks` untuk melihat tinjauan yang sedang berjalan dan selesai, buka tampilan detail untuk tinjauan, atau hentikan tinjauan yang sedang berlangsung. Jika Anda menghentikan tinjauan, Claude Code mengarsipkan sesi cloud dan tidak mengembalikan temuan parsial.

155 155 


216| Target | diff kerja Anda, permintaan tarik, cabang, atau jalur | diff kerja Anda atau permintaan tarik |216| Target | diff kerja Anda, permintaan tarik, cabang, atau jalur | diff kerja Anda atau permintaan tarik |

217| Berjalan | secara lokal di sesi Anda | di sandbox cloud |217| Berjalan | secara lokal di sesi Anda | di sandbox cloud |

218| Kedalaman | skala dengan argumen effort | armada multi-agen dengan verifikasi independen |218| Kedalaman | skala dengan argumen effort | armada multi-agen dengan verifikasi independen |

219| Durasi | detik hingga beberapa menit | kira-kira 5 hingga 10 menit |219| Durasi | detik hingga beberapa menit | kira-kira 15 hingga 25 menit |

220| Biaya | dihitung terhadap penggunaan normal | run gratis, kemudian kira-kira \$5 hingga \$25 per tinjauan sebagai kredit penggunaan |220| Biaya | dihitung terhadap penggunaan normal | run gratis, kemudian kira-kira \$5 hingga \$25 per tinjauan sebagai kredit penggunaan |

221| Terbaik untuk | umpan balik cepat saat iterasi | kepercayaan pra-merge pada perubahan substansial |221| Terbaik untuk | umpan balik cepat saat iterasi | kepercayaan pra-merge pada perubahan substansial |

222 222 

Details

146 146 

147<Steps>147<Steps>

148 <Step title="Pilih repositori dan branch">148 <Step title="Pilih repositori dan branch">

149 Dari [claude.ai/code](https://claude.ai/code) atau tab Code di aplikasi mobile Claude, klik pemilih repositori di bawah kotak input dan pilih repositori untuk Claude bekerja. Setiap repositori menampilkan pemilih branch. Ubahnya untuk memulai Claude dari branch fitur alih-alih default. Anda dapat menambahkan beberapa repositori untuk bekerja di seluruhnya dalam satu sesi.149 Dari [claude.ai/code](https://claude.ai/code) atau tab Code di aplikasi mobile Claude, klik pemilih repositori di bawah kotak input dan pilih repositori untuk Claude bekerja. Anda dapat menambahkan beberapa repositori untuk bekerja di seluruhnya dalam satu sesi.

150 

151 Di claude.ai/code, untuk memulai Claude dari branch fitur alih-alih default, ubah branch di kontrol setelah pemilih repositori.

150 </Step>152 </Step>

151 153 

152 <Step title="Pilih mode izin">154 <Step title="Pilih mode izin">

workflows.md +3 −3

Details

99| :- | :- |99| :- | :- |

100| `↑` / `↓` | Pilih fase atau agen |100| `↑` / `↓` | Pilih fase atau agen |

101| `Enter` atau `→` | Bor ke dalam fase yang dipilih, lalu ke detail agen. Dalam detail, `Enter` memperluas atau meruntuhkannya |101| `Enter` atau `→` | Bor ke dalam fase yang dipilih, lalu ke detail agen. Dalam detail, `Enter` memperluas atau meruntuhkannya |

102| `Esc` atau `←` | Kembali satu level. Dalam v2.1.203 hingga v2.1.205, `←` tidak melangkah keluar dari fase atau agen; gunakan `Esc` pada versi tersebut |102| `Esc` atau `←` | Kembali satu level |

103| `j` / `k` | Gulir dalam detail agen ketika meluap |103| `j` / `k` | Gulir dalam detail agen ketika meluap |

104| `f` | Filter daftar agen di fase yang dipilih berdasarkan status. Tekan lagi untuk siklus |104| `f` | Filter daftar agen di fase yang dipilih berdasarkan status. Tekan lagi untuk siklus |

105| `p` | Jeda atau lanjutkan run |105| `p` | Jeda atau lanjutkan run |


167/effort ultracode167/effort ultracode

168```168```

169 169 

170Untuk memulai sesi dengan ultracode sudah aktif, luncurkan dengan `claude --effort ultracode`, yang juga mengatur tingkat upaya ke `xhigh`. Memerlukan Claude Code v2.1.203 atau lebih baru.170Untuk memulai sesi dengan ultracode sudah aktif, luncurkan dengan `claude --effort ultracode`, yang juga mengatur tingkat effort ke `xhigh`.

171 171 

172Untuk mengaktifkannya dari penggeser `/effort`, tekan `Tab` untuk membalik toggle **Ultracode**, lalu `Enter` untuk menerapkannya. [Sesuaikan tingkat upaya](/docs/id/model-config#adjust-effort-level) mencantumkan rute yang mengaktifkan ultracode.172Untuk mengaktifkannya dari penggeser `/effort`, tekan `Tab` untuk membalik toggle **Ultracode**, lalu `Enter` untuk menerapkannya. [Sesuaikan tingkat upaya](/docs/id/model-config#adjust-effort-level) mencantumkan rute yang mengaktifkan ultracode.

173 173 


527 Tetapkan panduan ukuran527 Tetapkan panduan ukuran

528</h3>528</h3>

529 529 

530Panduan ukuran memberi tahu Claude berapa banyak agen yang harus ditargetkan saat menulis alur kerja dinamis. Claude Code mengirimkan panduan ke Claude sebagai saran, bukan batas, jadi prompt yang meminta skala berbeda masih menggantinya. Memerlukan Claude Code v2.1.202 atau lebih baru.530Panduan ukuran memberi tahu Claude berapa banyak agent yang harus ditargetkan saat menulis alur kerja dinamis. Claude Code mengirimkan panduan ke Claude sebagai saran, bukan batas, jadi prompt yang meminta skala berbeda masih menimpanya.

531 531 

532Setiap nilai memetakan ke jumlah agen:532Setiap nilai memetakan ke jumlah agen:

533 533