SpyBara
Go Premium

Documentation 2026-10-08 22:58 UTC to 2026-10-09 16:59 UTC

42 files changed +314 −116. View all changes and history on the product overview
2026
Fri 9 18:01 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

216| Opsi | Apa yang dikontrolnya | Default |216| Opsi | Apa yang dikontrolnya | Default |

217| :- | :- | :- |217| :- | :- | :- |

218| Max turns (`max_turns` / `maxTurns`) | Maximum tool-use round trips | Tidak ada batas |218| Max turns (`max_turns` / `maxTurns`) | Maximum tool-use round trips | Tidak ada batas |

219| Max budget (`max_budget_usd` / `maxBudgetUsd`) | Maximum cost sebelum berhenti | Tidak ada batas |219| Max budget (`max_budget_usd` / `maxBudgetUsd`) | Perkiraan pengeluaran saat loop berhenti | Tidak ada batas |

220 220 

221Ketika salah satu batas tercapai, SDK mengembalikan `ResultMessage` dengan error subtype yang sesuai (`error_max_turns` atau `error_max_budget_usd`). Lihat [Handle the result](#handle-the-result) untuk cara memeriksa subtypes ini dan [`ClaudeAgentOptions`](/docs/id/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/id/agent-sdk/typescript#options) untuk syntax.221Ketika salah satu batas tercapai, SDK mengembalikan `ResultMessage` dengan error subtype yang sesuai (`error_max_turns` atau `error_max_budget_usd`). Lihat [Handle the result](#handle-the-result) untuk cara memeriksa subtypes ini dan [`ClaudeAgentOptions`](/docs/id/agent-sdk/python#claudeagentoptions) / [`Options`](/docs/id/agent-sdk/typescript#options) untuk syntax.

222 222 


224 224 

225Dengan [streaming input](/docs/id/agent-sdk/streaming-vs-single-mode), pesan yang masih antri ketika turn berakhir pada batas max-turns tetap antri. Claude Code tidak menambahkannya ke model call terakhir turn itu. Ini memulai turn baru untuk pesan, dan hitungan max-turns dimulai lagi untuk turn itu. Total budget terus terakumulasi di seluruh pesan, dan setelah pengeluaran mencapai `maxBudgetUsd`, pesan-pesan selanjutnya dalam percakapan yang sama berakhir dengan hasil `error_max_budget_usd`. Sebuah [`/clear`](/docs/id/agent-sdk/cost-tracking) memulai ulang budget.225Dengan [streaming input](/docs/id/agent-sdk/streaming-vs-single-mode), pesan yang masih antri ketika turn berakhir pada batas max-turns tetap antri. Claude Code tidak menambahkannya ke model call terakhir turn itu. Ini memulai turn baru untuk pesan, dan hitungan max-turns dimulai lagi untuk turn itu. Total budget terus terakumulasi di seluruh pesan, dan setelah pengeluaran mencapai `maxBudgetUsd`, pesan-pesan selanjutnya dalam percakapan yang sama berakhir dengan hasil `error_max_budget_usd`. Sebuah [`/clear`](/docs/id/agent-sdk/cost-tracking) memulai ulang budget.

226 226 

227<h4 id="budget-headroom">

228 Ruang cadangan budget

229</h4>

230 

231Claude Code membandingkan pengeluaran dengan cap `max_budget_usd` / `maxBudgetUsd` setelah respons model tiba, karena biaya setiap respons berasal dari penggunaan token yang dikembalikan API bersama respons tersebut. Respons yang mencapai cap tetap diselesaikan dan dihitung dalam [`total_cost_usd`](/docs/id/agent-sdk/cost-tracking#get-the-total-cost-of-a-query). Oleh karena itu, pengeluaran dapat melewati cap hingga sebesar biaya satu respons tersebut, ditambah apa pun yang dibelanjakan subagent yang masih berjalan pada saat itu sebelum berhenti. Sisakan ruang cadangan untuk hal ini saat Anda menetapkan cap.

232 

227<h3 id="effort-level">233<h3 id="effort-level">

228 Effort level234 Effort level

229</h3>235</h3>

Details

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

147 147 

148<Warning>148<Warning>

149 **Pewarisan subagent:** Subagent berjalan dalam mode izin sesi induk kecuali Anda mengatur `permissionMode` pada [`AgentDefinition`](/docs/id/agent-sdk/typescript#agentdefinition) dan sesi induk berada dalam mode `default`, `dontAsk`, atau `plan`. Bahkan kemudian, Claude Code tidak pernah menerapkan nilai `"bypassPermissions"`. Subagent berjalan dalam mode `bypassPermissions` hanya ketika sesi induk itu sendiri melakukannya. Pengecualian `bypassPermissions` memerlukan Claude Code v2.1.267 atau lebih baru.149 **Pewarisan subagent:** Subagent berjalan dalam mode izin sesi induk kecuali Anda mengatur `permissionMode` pada [`AgentDefinition`](/docs/id/agent-sdk/typescript#agentdefinition) dan sesi induk berada dalam mode `default`, `dontAsk`, atau `plan`. Bahkan kemudian, Claude Code tidak pernah menerapkan nilai `"bypassPermissions"`, dan menerapkan nilai `"auto"` hanya ketika [auto mode tersedia](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) untuk subagent tersebut. Subagent berjalan dalam mode `bypassPermissions` hanya ketika sesi induk itu sendiri melakukannya. Pengecualian `bypassPermissions` memerlukan Claude Code v2.1.267 atau lebih baru.

150 150 

151 Subagent mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberi mereka akses sistem penuh dan otonom. [Tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves) masih berlaku.151 Subagent mungkin memiliki prompt sistem yang berbeda dan perilaku yang kurang terbatas daripada agen utama Anda, jadi mewarisi `bypassPermissions` memberi mereka akses sistem penuh dan otonom. [Tindakan yang tidak ada mode auto-approve](/docs/id/permission-modes#actions-no-mode-auto-approves) masih berlaku.

152</Warning>152</Warning>

Details

928| `resume` | `str \| None` | `None` | ID sesi untuk dilanjutkan |928| `resume` | `str \| None` | `None` | ID sesi untuk dilanjutkan |

929| `session_id` | `str \| None` | `None` | Gunakan ID sesi tertentu alih-alih yang dibuat otomatis. Harus UUID yang valid. Tidak dapat digabungkan dengan `continue_conversation` atau `resume` kecuali `fork_session` juga diatur |929| `session_id` | `str \| None` | `None` | Gunakan ID sesi tertentu alih-alih yang dibuat otomatis. Harus UUID yang valid. Tidak dapat digabungkan dengan `continue_conversation` atau `resume` kecuali `fork_session` juga diatur |

930| `max_turns` | `int \| None` | `None` | Jumlah maksimal giliran agentic (round trip penggunaan tool) |930| `max_turns` | `int \| None` | `None` | Jumlah maksimal giliran agentic (round trip penggunaan tool) |

931| `max_budget_usd` | `float \| None` | `None` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Hanya menghitung pengeluaran panggilan sendiri; total yang dipulihkan dari sesi yang dilanjutkan tidak dihitung. Untuk peringatan akurasi dan perilaku reset, lihat [Track cost and usage](/docs/id/agent-sdk/cost-tracking) |931| `max_budget_usd` | `float \| None` | `None` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Estimasi dapat melampaui nilai ini, jadi [sisakan ruang](/docs/id/agent-sdk/agent-loop#budget-headroom). Hanya menghitung pengeluaran panggilan sendiri; total yang dipulihkan dari sesi yang dilanjutkan tidak dihitung. Untuk peringatan akurasi dan perilaku reset, lihat [Track cost and usage](/docs/id/agent-sdk/cost-tracking) |

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

933| `enable_file_checkpointing` | `bool` | `False` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |933| `enable_file_checkpointing` | `bool` | `False` | Aktifkan pelacakan perubahan file untuk rewinding. Lihat [File checkpointing](/docs/id/agent-sdk/file-checkpointing) |

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


987```987```

988 988 

989* `API_TIMEOUT_MS`: timeout per-permintaan pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagent.989* `API_TIMEOUT_MS`: timeout per-permintaan pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagent.

990* `CLAUDE_CODE_MAX_RETRIES`: maksimal retry API. Default `10`, dibatasi pada `15`. Setiap retry mendapat jendela `API_TIMEOUT_MS` sendiri, jadi waktu dinding terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff. Untuk run tanpa pengawasan yang perlu menunggu melalui pemadaman yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/id/errors#tune-retry-behavior): itu mencoba ulang error kapasitas transien tanpa batas dan, pada Claude Code v2.1.199 atau lebih baru, menaikkan default untuk error transien lainnya menjadi `300` dan menghapus batas pada variabel ini.990* `CLAUDE_CODE_MAX_RETRIES`: maksimal retry API. Default `10`, dibatasi pada `15`. Setiap retry mendapat jendela `API_TIMEOUT_MS` sendiri.

991 

992 Untuk run tanpa pengawasan yang perlu menunggu melalui pemadaman yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/id/errors#tune-retry-behavior): itu mencoba ulang error kapasitas transien tanpa batas dan, pada Claude Code v2.1.199 atau lebih baru, menaikkan default untuk error transien lainnya menjadi `300` dan menghapus batas pada variabel ini.

991* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog stall untuk subagent. Sementara watchdog stream aktif, default adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ditambah 5 menit, yang menjadi `600000` kecuali Anda menaikkan variabel itu. Dengan watchdog stream mati, default adalah `600000`. Sebelum v2.1.257, default selalu `600000`.993* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog stall untuk subagent. Sementara watchdog stream aktif, default adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ditambah 5 menit, yang menjadi `600000` kecuali Anda menaikkan variabel itu. Dengan watchdog stream mati, default adalah `600000`. Sebelum v2.1.257, default selalu `600000`.

992 994 

993 Timer direset pada setiap event stream. Pada stall, Claude Code membatalkan subagent dan melaporkan stall ke parent. Untuk subagent latar belakang, itu juga menandai tugas gagal dan melampirkan hasil parsial apa pun.995 Timer direset pada setiap event stream. Pada stall, Claude Code membatalkan subagent dan melaporkan stall ke parent. Untuk subagent latar belakang, itu juga menandai tugas gagal dan melampirkan hasil parsial apa pun.


3327{3329{

3328 "url": str, # URL untuk mengambil konten dari3330 "url": str, # URL untuk mengambil konten dari

3329 "prompt": str, # Prompt untuk dijalankan pada konten yang diambil3331 "prompt": str, # Prompt untuk dijalankan pada konten yang diambil

3332 "offset": int | None, # Jumlah karakter yang dilewati dari awal halaman. Memerlukan Python Agent SDK 0.2.164 atau lebih baru

3330}3333}

3331```3334```

3332 3335 

Details

323 Deteksi pemanggilan subagent323 Deteksi pemanggilan subagent

324</h2>324</h2>

325 325 

326Claude memanggil subagent melalui tool Agent. Untuk mendeteksi ketika subagent dipanggil, periksa blok `tool_use` di mana `name` adalah `"Agent"`. Pesan dari dalam konteks subagent mencakup field `parent_tool_use_id`.326Claude memanggil subagent melalui tool Agent. Untuk mendeteksi ketika subagent dipanggil, periksa blok `tool_use` di mana `name` adalah `"Agent"`.

327 

328Pesan dari dalam konteks subagent mencakup field `parent_tool_use_id`. Di TypeScript, setiap pesan assistant dan user yang dihasilkan subagent juga membawa [`agent_id`](/docs/id/agent-sdk/typescript#sdkassistantmessage): `task_id` dari [event task](/docs/id/agent-sdk/typescript#sdktaskstartedmessage) subagent tersebut. `agent_id` memerlukan TypeScript Agent SDK v0.3.292 atau yang lebih baru.

327 329 

328<Note>330<Note>

329 Tool muncul sebagai `"Agent"` dalam blok `tool_use` tetapi sebagai `"Task"` dalam daftar tool `system:init`. Sebelum Claude Code v2.1.63, blok `tool_use` juga menamakannya `"Task"`. Untuk menjaga deteksi tetap berfungsi di seluruh versi SDK, cocokkan kedua nilai dalam `block.name`.331 Tool muncul sebagai `"Agent"` dalam blok `tool_use` tetapi sebagai `"Task"` dalam daftar tool `system:init`. Sebelum Claude Code v2.1.63, blok `tool_use` juga menamakannya `"Task"`. Untuk menjaga deteksi tetap berfungsi di seluruh versi SDK, cocokkan kedua nilai dalam `block.name`.


331 333 

332Struktur pesan berbeda antara SDK. Di Python, Anda mengakses blok konten secara langsung melalui `message.content`. Di TypeScript, `SDKAssistantMessage` membungkus pesan API Claude, jadi Anda mengakses konten melalui `message.message.content`.334Struktur pesan berbeda antara SDK. Di Python, Anda mengakses blok konten secara langsung melalui `message.content`. Di TypeScript, `SDKAssistantMessage` membungkus pesan API Claude, jadi Anda mengakses konten melalui `message.message.content`.

333 335 

334Contoh ini melakukan iterasi melalui pesan yang di-stream, mencatat ketika subagent dipanggil dan ketika pesan berikutnya berasal dari dalam konteks eksekusi subagent tersebut.336Contoh ini melakukan iterasi melalui pesan yang di-stream, mencatat ketika subagent dipanggil dan ketika pesan berikutnya berasal dari dalam konteks eksekusi subagent tersebut. Versi TypeScript juga mencatat `agent_id` dari setiap pesan subagent yang membawanya.

335 337 

336<CodeGroup>338<CodeGroup>

337 ```python Python theme={null}339 ```python Python theme={null}


403 // Check if this message is from within a subagent's context405 // Check if this message is from within a subagent's context

404 if (msg.parent_tool_use_id) {406 if (msg.parent_tool_use_id) {

405 console.log(" (running inside subagent)");407 console.log(" (running inside subagent)");

408 // On assistant and user messages, agent_id matches the task_id

409 // on that subagent's task_started and other task events

410 if (msg.agent_id) {

411 console.log(` agent_id: ${msg.agent_id}`);

412 }

406 }413 }

407 414 

408 if ("result" in message) {415 if ("result" in message) {

Details

569| `includePartialMessages` | `boolean` | `false` | Sertakan event pesan parsial |569| `includePartialMessages` | `boolean` | `false` | Sertakan event pesan parsial |

570| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout dalam milidetik untuk setiap panggilan `sessionStore.load()` dan `sessionStore.listSubkeys()` selama materialisasi resume. Jika adapter tidak selesai dalam jendela waktu ini, query gagal alih-alih menggantung. Diabaikan jika `sessionStore` tidak diatur |570| `loadTimeoutMs` | `number` | `60000` | *Alpha.* Timeout dalam milidetik untuk setiap panggilan `sessionStore.load()` dan `sessionStore.listSubkeys()` selama materialisasi resume. Jika adapter tidak selesai dalam jendela waktu ini, query gagal alih-alih menggantung. Diabaikan jika `sessionStore` tidak diatur |

571| `managedSettings` | `Settings` | `undefined` | Pengaturan tingkat kebijakan yang disediakan proses host Anda ke sesi yang di-spawn. Pada mesin dengan pengaturan terkelola yang di-deploy admin, Claude Code mengabaikan pengaturan ini kecuali sumber terkelola dengan prioritas tertinggi milik admin mengatur `parentSettingsBehavior: 'merge'`, dan tidak pernah menggabungkannya selama [`policyHelper`](/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola. Nilai yang digabungkan melewati filter yang hanya bersifat membatasi; [Membatasi pengaturan induk](/docs/id/claude-apps-gateway#restrict-parent-settings) membahas apa yang diloloskan filter dan kunci `allowManaged*Only`. Host yang mengatur [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/id/env-vars) memiliki tiga kunci yang justru dibaca langsung dari payload ini: [konfigurasi model](/docs/id/model-config#restrict-model-selection)-nya pada Claude Code v2.1.222 atau lebih baru, [`modelPricing`](/docs/id/settings-reference#modelpricing) ketika tidak ada sumber terkelola yang mengaturnya pada v2.1.246 atau lebih baru, dan entri env `ENABLE_TOOL_SEARCH`-nya pada v2.1.247 atau lebih baru |571| `managedSettings` | `Settings` | `undefined` | Pengaturan tingkat kebijakan yang disediakan proses host Anda ke sesi yang di-spawn. Pada mesin dengan pengaturan terkelola yang di-deploy admin, Claude Code mengabaikan pengaturan ini kecuali sumber terkelola dengan prioritas tertinggi milik admin mengatur `parentSettingsBehavior: 'merge'`, dan tidak pernah menggabungkannya selama [`policyHelper`](/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola. Nilai yang digabungkan melewati filter yang hanya bersifat membatasi; [Membatasi pengaturan induk](/docs/id/claude-apps-gateway#restrict-parent-settings) membahas apa yang diloloskan filter dan kunci `allowManaged*Only`. Host yang mengatur [`CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST`](/docs/id/env-vars) memiliki tiga kunci yang justru dibaca langsung dari payload ini: [konfigurasi model](/docs/id/model-config#restrict-model-selection)-nya pada Claude Code v2.1.222 atau lebih baru, [`modelPricing`](/docs/id/settings-reference#modelpricing) ketika tidak ada sumber terkelola yang mengaturnya pada v2.1.246 atau lebih baru, dan entri env `ENABLE_TOOL_SEARCH`-nya pada v2.1.247 atau lebih baru |

572| `maxBudgetUsd` | `number` | `undefined` | Hentikan query ketika estimasi biaya sisi klien mencapai nilai USD ini. Hanya menghitung pengeluaran panggilan itu sendiri; total yang dipulihkan dari sesi yang dilanjutkan tidak dihitung. Untuk catatan akurasi dan perilaku reset, lihat [Melacak biaya dan penggunaan](/docs/id/agent-sdk/cost-tracking) |572| `maxBudgetUsd` | `number` | `undefined` | Menghentikan query saat estimasi biaya sisi klien mencapai nilai USD ini. Estimasi dapat melewati nilai ini, jadi [sisakan ruang](/docs/id/agent-sdk/agent-loop#budget-headroom). Hanya menghitung pengeluaran panggilan itu sendiri; total yang dipulihkan dari sesi yang dilanjutkan tidak dihitung. Untuk catatan akurasi dan perilaku reset, lihat [Melacak biaya dan penggunaan](/docs/id/agent-sdk/cost-tracking) |

573| `maxThinkingTokens` | `number` | `undefined` | *Tidak digunakan lagi:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses thinking |573| `maxThinkingTokens` | `number` | `undefined` | *Tidak digunakan lagi:* Gunakan `thinking` sebagai gantinya. Token maksimum untuk proses thinking |

574| `maxTurns` | `number` | `undefined` | Giliran agentic maksimum (perjalanan bolak-balik penggunaan tool) |574| `maxTurns` | `number` | `undefined` | Giliran agentic maksimum (perjalanan bolak-balik penggunaan tool) |

575| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi server MCP |575| `mcpServers` | `Record<string, [`McpServerConfig`](#mcpserverconfig)>` | `{}` | Konfigurasi server MCP |


631```631```

632 632 

633* `API_TIMEOUT_MS`: timeout per permintaan pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagent.633* `API_TIMEOUT_MS`: timeout per permintaan pada klien Anthropic, dalam milidetik. Default `600000`. Berlaku untuk loop utama dan semua subagent.

634* `CLAUDE_CODE_MAX_RETRIES`: jumlah retry API maksimum. Default `10`, dibatasi hingga `15`. Setiap retry mendapat jendela `API_TIMEOUT_MS` sendiri, sehingga waktu total terburuk kira-kira `API_TIMEOUT_MS × (CLAUDE_CODE_MAX_RETRIES + 1)` ditambah backoff. Untuk proses tanpa pengawasan yang perlu menunggu gangguan yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/id/errors#tune-retry-behavior): opsi ini mencoba ulang error kapasitas sementara tanpa batas dan, pada Claude Code v2.1.199 atau lebih baru, menaikkan default untuk error sementara lainnya menjadi `300` dan menghapus batas pada variabel ini.634* `CLAUDE_CODE_MAX_RETRIES`: jumlah retry API maksimum. Default `10`, dibatasi hingga `15`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` sendiri.

635 

636 Untuk eksekusi tanpa pengawasan yang perlu menunggu gangguan yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/id/errors#tune-retry-behavior): opsi ini mencoba ulang error kapasitas sementara tanpa batas dan, pada Claude Code v2.1.199 atau lebih baru, menaikkan default untuk error sementara lainnya menjadi `300` serta menghapus batas pada variabel ini.

635* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog kemacetan untuk subagent. Selama stream watchdog aktif, defaultnya adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ditambah 5 menit, yang berjumlah `600000` kecuali Anda menaikkan variabel tersebut. Dengan stream watchdog nonaktif, defaultnya adalah `600000`. Sebelum v2.1.257, defaultnya selalu `600000`.637* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog kemacetan untuk subagent. Selama stream watchdog aktif, defaultnya adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ditambah 5 menit, yang berjumlah `600000` kecuali Anda menaikkan variabel tersebut. Dengan stream watchdog nonaktif, defaultnya adalah `600000`. Sebelum v2.1.257, defaultnya selalu `600000`.

636 638 

637 Timer di-reset pada setiap event stream. Saat terjadi kemacetan, Claude Code membatalkan subagent dan melaporkan kemacetan tersebut ke induknya. Untuk subagent latar belakang, Claude Code juga menandai tugas sebagai gagal dan melampirkan hasil parsial apa pun.639 Timer di-reset pada setiap event stream. Saat terjadi kemacetan, Claude Code membatalkan subagent dan melaporkan kemacetan tersebut ke induknya. Untuk subagent latar belakang, Claude Code juga menandai tugas sebagai gagal dan melampirkan hasil parsial apa pun.


1557 type: "assistant";1559 type: "assistant";

1558 uuid: UUID;1560 uuid: UUID;

1559 session_id: string;1561 session_id: string;

1560 message: BetaMessage; // Dari Anthropic SDK1562 message: BetaMessage; // From Anthropic SDK

1561 parent_tool_use_id: string | null;1563 parent_tool_use_id: string | null;

1562 error?: SDKAssistantMessageError;1564 error?: SDKAssistantMessageError;

1563 aborted?: true;1565 aborted?: true;

1566 agent_id?: string;

1564 timestamp?: string;1567 timestamp?: string;

1565 context_usage?: SDKContextUsage;1568 context_usage?: SDKContextUsage;

1566 user_message_uuid?: string;1569 user_message_uuid?: string;


1580 1583 

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

1582 1585 

1586`agent_id` mengidentifikasi subagent yang menghasilkan pesan dan tidak ada pada pesan thread utama. Nilainya sama dengan `task_id` pada [`task_started`](#sdktaskstartedmessage) dan event tugas lainnya dari subagent tersebut, dan tidak berubah ketika subagent [dilanjutkan](/docs/id/agent-sdk/subagents#resume-subagents). Field ini memerlukan Agent SDK v0.3.292 atau yang lebih baru.

1587 

1588Cocokkan pesan subagent dengan event tugasnya berdasarkan `agent_id` alih-alih memasangkan `parent_tool_use_id` sebuah pesan dengan `tool_use_id` sebuah event tugas. Ketika sebuah panggilan tool melanjutkan subagent, event tugas membawa `tool_use_id` dari panggilan tersebut, sedangkan pesan tetap membawa `parent_tool_use_id` dari panggilan tool yang pertama kali memulai subagent, sehingga keduanya tidak lagi cocok.

1589 

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

1584 1591 

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


1597 type: "user";1604 type: "user";

1598 uuid?: UUID;1605 uuid?: UUID;

1599 session_id?: string;1606 session_id?: string;

1607 agent_id?: string;

1600 message: MessageParam; // From Anthropic SDK1608 message: MessageParam; // From Anthropic SDK

1601 pasted_content?: MessageParam["content"][];1609 pasted_content?: MessageParam["content"][];

1602 parent_tool_use_id: string | null;1610 parent_tool_use_id: string | null;


1636};1644};

1637```1645```

1638 1646 

1647Pesan pengguna yang dihasilkan subagent, seperti `tool_result` untuk salah satu panggilan tool-nya sendiri, membawa `agent_id`. Lihat [`SDKAssistantMessage`](#sdkassistantmessage), yang mendefinisikan field tersebut dan persyaratan versinya.

1648 

1639Pada pesan yang membawa blok `tool_result`, `tool_use_result` adalah objek output terstruktur dari tool, bukan teks yang dikirim ke model. Bentuknya bergantung pada tool yang disebutkan oleh blok `tool_use` yang sesuai, sehingga field ini bertipe `unknown`; bentuk bawaan tercantum di [Tool Output Types](#tool-output-types). Hasil-hasil berikut memerlukan penanganan di luar bentuk yang tercantum:1649Pada pesan yang membawa blok `tool_result`, `tool_use_result` adalah objek output terstruktur dari tool, bukan teks yang dikirim ke model. Bentuknya bergantung pada tool yang disebutkan oleh blok `tool_use` yang sesuai, sehingga field ini bertipe `unknown`; bentuk bawaan tercantum di [Tool Output Types](#tool-output-types). Hasil-hasil berikut memerlukan penanganan di luar bentuk yang tercantum:

1640 1650 

1641* Tool `Agent`: `tool_use_result` adalah [`AgentOutput`](#agent-2). Render dari objek ini alih-alih mengurai teks `tool_result`. `content` dari hasil `completed` berisi laporan subagent, atau, untuk subagent yang laporannya melalui panggilan tool `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai pengganti laporan. Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) pada Claude Code v2.1.271 atau lebih baru, setiap subagent yang menghasilkan hasil `completed` melapor dengan cara tersebut kecuali jika merupakan [fork](/docs/id/sub-agents#fork-the-current-conversation), dan Claude menerima laporan sebagai pesan terpisah dari subagent.1651* Tool `Agent`: `tool_use_result` adalah [`AgentOutput`](#agent-2). Render dari objek ini alih-alih mengurai teks `tool_result`. `content` dari hasil `completed` berisi laporan subagent, atau, untuk subagent yang laporannya melalui panggilan tool `SubagentHandback`, catatan singkat tentang penyerahan tersebut sebagai pengganti laporan. Dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) pada Claude Code v2.1.271 atau lebih baru, setiap subagent yang menghasilkan hasil `completed` melapor dengan cara tersebut kecuali jika merupakan [fork](/docs/id/sub-agents#fork-the-current-conversation), dan Claude menerima laporan sebagai pesan terpisah dari subagent.


1992 `SDKPartialAssistantMessage`2002 `SDKPartialAssistantMessage`

1993</h3>2003</h3>

1994 2004 

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

2006 

2007Field `parent_tool_use_id` selalu `null`: event stream hanya dikeluarkan untuk sesi utama. Untuk atribusi subagent, gunakan pesan lengkap, yang membawa [`agent_id`](#sdkassistantmessage) dan `parent_tool_use_id`, atau aktifkan [`forwardSubagentText`](#options) untuk menerima teks dan thinking subagent sebagai pesan lengkap.

1996 2008 

1997```typescript theme={null}2009```typescript theme={null}

1998type SDKPartialAssistantMessage = {2010type SDKPartialAssistantMessage = {


3418type WebFetchInput = {3430type WebFetchInput = {

3419 url: string;3431 url: string;

3420 prompt: string;3432 prompt: string;

3433 offset?: number;

3421};3434};

3422```3435```

3423 3436 

3424Mengambil konten dari URL dan memprosesnya dengan model AI.3437Mengambil konten dari URL dan memprosesnya dengan model AI.

3425 3438 

3439`offset` adalah jumlah karakter yang dilewati dari awal halaman. Claude mengaturnya untuk melanjutkan membaca halaman yang panjang. Bidang ini memerlukan Agent SDK v0.3.290 atau lebih baru.

3440 

3426<h3 id="websearch">3441<h3 id="websearch">

3427 WebSearch3442 WebSearch

3428</h3>3443</h3>


5777 task_type?: string;5792 task_type?: string;

5778 is_backgrounded?: boolean;5793 is_backgrounded?: boolean;

5779 spawn_depth?: number;5794 spawn_depth?: number;

5795 parent_task_id?: string;

5780 ambient?: boolean;5796 ambient?: boolean;

5781 uuid: UUID;5797 uuid: UUID;

5782 session_id: string;5798 session_id: string;


5794 5810 

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

5796 5812 

5813`parent_task_id` menyimpan `task_id` dari subagent yang meluncurkan tugas ini. Gunakan untuk mengelompokkan setiap tugas di bawah subagent yang memulainya. Claude Code menetapkannya pada tugas subagent, Bash, dan [Monitor](#monitor). Field ini memerlukan Agent SDK v0.3.292 atau lebih baru. Field ini tidak ada ketika:

5814 

5815* Thread utama meluncurkan tugas

5816* Claude Code tidak lagi melacak tugas parent

5817* [Rekan tim](/docs/id/agent-teams) atau agent di dalam workflow meluncurkan tugas

5818 

5819Parent dapat berupa tugas foreground atau tugas yang sudah berakhir, jadi perlakukan ID yang tidak Anda kenali sebagai tidak memiliki parent.

5820 

5797<h3 id="sdktaskprogressmessage">5821<h3 id="sdktaskprogressmessage">

5798 `SDKTaskProgressMessage`5822 `SDKTaskProgressMessage`

5799</h3>5823</h3>


5850 `SDKBackgroundTasksChangedMessage`5874 `SDKBackgroundTasksChangedMessage`

5851</h3>5875</h3>

5852 5876 

5853Dipancarkan setiap kali set tugas latar belakang yang aktif berubah: tugas dimulai, selesai, dihentikan paksa, agent foreground dipindahkan ke latar belakang, atau field `description` atau `ambient` suatu tugas berubah.5877Dipancarkan setiap kali set tugas latar belakang yang aktif berubah: tugas dimulai, selesai, atau dihentikan paksa; agent foreground dipindahkan ke latar belakang; atau field `description`, `ambient`, atau `parent_task_id` suatu tugas berubah. Untuk field `parent_task_id` pada setiap entri, lihat [`SDKTaskStartedMessage`](#sdktaskstartedmessage), yang mendefinisikannya beserta persyaratan versinya.

5854 5878 

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

5856 5880 

5857Urutan relatif terhadap event per-tugas tersebut tidak ditentukan, jadi jangan mengorelasikan kedua stream tersebut.5881Ketika tugas berakhir, [`task_updated`](#sdktaskupdatedmessage) dan [`task_notification`](#sdktasknotificationmessage)-nya tiba sebelum `background_tasks_changed` yang menghapusnya dari daftar. Di luar itu, urutan relatif terhadap event per-tugas tidak ditentukan.

5858 5882 

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

5860 5884 


5871 task_type: string;5895 task_type: string;

5872 subagent_type?: string;5896 subagent_type?: string;

5873 description: string;5897 description: string;

5898 parent_task_id?: string;

5874 ambient?: boolean;5899 ambient?: boolean;

5875 }[];5900 }[];

5876 uuid: UUID;5901 uuid: UUID;

Details

36 ```36 ```

37 37 

38 ```typescript TypeScript theme={null}38 ```typescript TypeScript theme={null}

39 async function handleToolRequest(toolName, input, options) {39 import type { CanUseTool } from "@anthropic-ai/claude-agent-sdk";

40 

41 const handleToolRequest: CanUseTool = async (toolName, input, options) => {

40 // options includes { signal: AbortSignal, suggestions?: PermissionUpdate[] }42 // options includes { signal: AbortSignal, suggestions?: PermissionUpdate[] }

41 // Minta pengguna dan kembalikan izin atau tolak43 // Minta pengguna di sini, lalu kembalikan allow atau deny

42 }44 return { behavior: "deny", message: "User declined" };

45 };

43 46 

44 const options = { canUseTool: handleToolRequest };47 const options = { canUseTool: handleToolRequest };

45 ```48 ```


437 for await (const message of query({440 for await (const message of query({

438 prompt: "Analyze this codebase",441 prompt: "Analyze this codebase",

439 options: {442 options: {

440 // Sertakan AskUserQuestion dalam daftar alat Anda443 // Sertakan AskUserQuestion dalam daftar tool Anda

441 tools: ["Read", "Glob", "Grep", "AskUserQuestion"],444 tools: ["Read", "Glob", "Grep", "AskUserQuestion"],

442 canUseTool: async (toolName, input) => {445 canUseTool: async (toolName, input) => {

443 // Tangani pertanyaan klarifikasi di sini446 // Placeholder yang menyetujui setiap panggilan. Langkah Deteksi AskUserQuestion menggantikannya.

447 return { behavior: "allow", updatedInput: input };

444 }448 }

445 }449 }

446 })) {450 })) {


763 767 

764 ```typescript TypeScript theme={null}768 ```typescript TypeScript theme={null}

765 import { query } from "@anthropic-ai/claude-agent-sdk";769 import { query } from "@anthropic-ai/claude-agent-sdk";

770 import type { PermissionResult } from "@anthropic-ai/claude-agent-sdk";

766 import * as readline from "readline/promises";771 import * as readline from "readline/promises";

767 772 

768 // Helper untuk meminta input pengguna di terminal773 // Helper untuk meminta input pengguna di terminal


783 }788 }

784 789 

785 // Tampilkan pertanyaan Claude dan kumpulkan jawaban pengguna790 // Tampilkan pertanyaan Claude dan kumpulkan jawaban pengguna

786 async function handleAskUserQuestion(input: any) {791 async function handleAskUserQuestion(input: any): Promise<PermissionResult> {

787 const answers: Record<string, string> = {};792 const answers: Record<string, string> = {};

788 793 

789 for (const q of input.questions) {794 for (const q of input.questions) {


819 if (toolName === "AskUserQuestion") {824 if (toolName === "AskUserQuestion") {

820 return handleAskUserQuestion(input);825 return handleAskUserQuestion(input);

821 }826 }

822 // Setujui secara otomatis alat lain untuk contoh ini827 // Setujui secara otomatis tool lain untuk contoh ini

823 return { behavior: "allow", updatedInput: input };828 return { behavior: "allow", updatedInput: input };

824 }829 }

825 }830 }

agent-view.md +7 −4

Details

603 603 

604Di luar repositori git, sesi menulis ke direktori kerja secara langsung dan tidak terisolasi satu sama lain, jadi hindari mengirim sesi paralel yang mengedit file yang sama. Jika Anda menggunakan sistem kontrol versi yang berbeda, konfigurasikan [`WorktreeCreate` hook](/docs/id/worktrees#non-git-version-control) dan Claude mengisolasi edit dengan cara yang sama seperti untuk git.604Di luar repositori git, sesi menulis ke direktori kerja secara langsung dan tidak terisolasi satu sama lain, jadi hindari mengirim sesi paralel yang mengedit file yang sama. Jika Anda menggunakan sistem kontrol versi yang berbeda, konfigurasikan [`WorktreeCreate` hook](/docs/id/worktrees#non-git-version-control) dan Claude mengisolasi edit dengan cara yang sama seperti untuk git.

605 605 

606Ketika hook gagal di direktori yang bukan repositori git, Claude melewati isolasi untuk direktori itu dan mengedit direktori kerja di tempat. Di dalam repositori git, sesi yang dipindahkan Claude ke worktree sebelum mengedit tidak dapat mengedit file di checkout bersama sampai perpindahan itu terjadi.606Ketika hook gagal di direktori yang bukan repositori git, Claude melewati isolasi untuk direktori itu dan mengedit direktori kerja di tempat. Di dalam repositori git, sesi yang dipindahkan Claude ke worktree sebelum mengedit tidak dapat menggunakan tool `Edit`, `Write`, atau `NotebookEdit` pada checkout bersama sampai perpindahan itu terjadi.

607 607 

608Untuk menemukan jalur worktree sesi, lampirkan dan periksa direktori kerjanya.608Untuk menemukan jalur worktree sesi, lampirkan dan periksa direktori kerjanya.

609 609 


979 Membuka sesi mengatakan tidak memiliki transkrip yang disimpan979 Membuka sesi mengatakan tidak memiliki transkrip yang disimpan

980</h3>980</h3>

981 981 

982Sesi yang dihentikan yang [dilepaskan dari percakapan lain](#from-inside-a-session) dan dihentikan sebelum respons pertamanya selesai tidak memiliki apa pun untuk dilanjutkan: sampai respons pertama itu selesai, percakapan masih hidup hanya dalam sesi yang dilepaskan darinya. `claude attach` menolak untuk membukanya dengan `This session has no saved transcript`.982Saat Anda membuka sesi yang Anda [lepaskan dari percakapan lain](#from-inside-a-session) dan yang berhenti sebelum menjalankan gilirannya sendiri, Claude Code melanjutkan percakapan tersebut. Jika Claude Code tidak dapat menemukan percakapan tersebut, Claude Code menolak untuk membuka sesi:

983 983 

984Dalam tampilan agent, membuka baris itu menampilkan `Press enter again to restart this session fresh` di bawah daftar. Tekan `Enter` pada baris yang sama lagi untuk memulai ulang sesi dengan percakapan kosong, atau jalankan `claude respawn <id>` dari shell.984* `claude attach` mencetak `This session has no saved transcript`.

985* Tampilan agent menampilkan `Press enter again to restart this session fresh` di bawah daftar.

985 986 

986Percakapan asli tetap utuh; lanjutkan dengan `claude --resume` atau terus bekerja di dalamnya. Lihat [referensi kesalahan](/docs/id/errors#this-session-has-no-saved-transcript) untuk detail.987Tekan `Enter` pada baris yang sama lagi untuk memulai ulang sesi dengan percakapan kosong, atau jalankan `claude respawn <id>` dari shell.

988 

989Lihat [referensi kesalahan](/docs/id/errors#this-session-has-no-saved-transcript) untuk detail.

987 990 

988<h3 id="the-terminal-host-died-or-the-session-stopped-responding">991<h3 id="the-terminal-host-died-or-the-session-stopped-responding">

989 Host terminal mati atau sesi berhenti merespons992 Host terminal mati atau sesi berhenti merespons

artifacts.md +38 −10

Details

51Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.51Build a dashboard artifact of last week's deploy failures by service and keep it updated as you investigate.

52```52```

53 53 

54Kecuali Anda menentukan lokasi, Claude menulis halaman ke file HTML atau Markdown di direktori sementara di luar proyek Anda, kemudian menerbitkannya. Di luar [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode), artefak baru yang Claude terbitkan sebagai respons terhadap prompt yang Anda ketik berjalan tanpa prompt izin atau tinjauan pengklasifikasi, kecuali penerbitan tersebut mendeklarasikan kemampuan runtime untuk halaman, seperti [connector calls](#pull-live-data-with-mcp-connectors) atau [file downloads](#offer-a-file-download). Dalam plan mode, Claude Code meminta Anda sebelum penerbitan pertama setiap artefak.54Kecuali Anda menentukan lokasi, Claude menulis halaman ke file HTML atau Markdown di direktori sementara di luar proyek Anda, kemudian menerbitkannya. Artifact tetap pribadi untuk Anda sampai Anda [membagikannya](#share-an-artifact).

55 55 

56Artefak tetap pribadi untuk Anda sampai Anda [membagikannya](#share-an-artifact). Setelah Anda membagikannya secara publik, Claude Code meminta persetujuan Anda sekali per percakapan sebelum mengubahnya, atau dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) memiliki pengklasifikasi meninjau perubahan tersebut.56Setelah penerbitan pertama, Claude mencetak URL, dan browser Anda membuka halaman baru.

57 57 

58Jika Anda mematikan [feature-flag fetching](/docs/id/env-vars#features-that-need-feature-flag-fetching), Claude Code meminta sebelum penerbitan pertama setiap artefak, atau dalam auto mode memiliki pengklasifikasi meninjau artefak tersebut.58* **Buka kembali halaman**: tekan `Ctrl+]` kapan saja untuk membuka kembali artifact terbaru dari sesi

59* **Lihat artifact sesi ini**: pill `⧉` di bawah prompt menampilkan nama artifact, atau jumlahnya ketika sesi memiliki beberapa artifact. Dalam [fullscreen rendering](/docs/id/fullscreen), klik pill tersebut untuk membuka daftar [`/artifacts`](#find-an-artifact-again)

60* **Cegah browser terbuka**: atur `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` di lingkungan Anda

61* **Remote Control**: jika Anda mengirim prompt melalui [Remote Control](/docs/id/remote-control) dari claude.ai, Claude Desktop, atau aplikasi Claude mobile, tidak ada tab yang terbuka di mesin yang menjalankan sesi. Browser terbuka di sana lain kali Claude menerbitkan artifact dari prompt yang Anda ketik di terminal

59 62 

60Setelah penerbitan pertama, Claude mencetak URL, dan browser Anda membuka halaman baru. Jika Anda mengirim prompt melalui [Remote Control](/docs/id/remote-control) dari claude.ai, Claude Desktop, atau aplikasi Claude mobile, tidak ada tab yang terbuka di mesin yang menjalankan sesi. Browser terbuka di sana lain kali Claude menerbitkan artefak dari prompt yang Anda ketik di terminal. Tekan `Ctrl+]` kapan saja untuk membuka kembali artefak terbaru dari sesi Anda.63Claude memilih judul artifact dan ikon tab browser yang sesuai dengan isi halaman, seperti bagan atau kalender. Judul muncul di [galeri artifact](#share-an-artifact) Anda di claude.ai dan di tautan bersama. Minta Claude untuk judul atau ikon tab tertentu jika Anda menginginkannya.

61 64 

62Claude memilih judul artefak dan emoji, dan keduanya muncul di [galeri artefak](#share-an-artifact) Anda di claude.ai dan di tautan bersama. Claude juga dapat memilih ikon tab browser yang sesuai dengan apa yang ada di halaman, seperti bagan atau kalender. Minta Claude untuk judul, emoji, atau ikon tab tertentu jika Anda menginginkannya.65Jika Claude merespons bahwa ia tidak dapat menerbitkan, atau menulis file HTML lokal tanpa tautan, artifact tidak diaktifkan untuk sesi Anda. Periksa persyaratan [Ketersediaan](#availability). Jika terminal menampilkan `Artifacts need a claude.ai login`, lihat [entri untuk error tersebut](/docs/id/errors#artifacts-need-a-claude-ai-login) untuk cara masuk.

63 66 

64Untuk menghentikan browser agar tidak membuka secara otomatis ketika artefak baru diterbitkan, atur `CLAUDE_CODE_ARTIFACT_AUTO_OPEN=0` di lingkungan Anda.67<h3 id="when-claude-code-asks-before-publishing">

68 Kapan Claude Code bertanya sebelum menerbitkan

69</h3>

70 

71Artifact baru yang Claude terbitkan sebagai respons terhadap prompt yang Anda ketik berjalan tanpa permintaan izin atau tinjauan pengklasifikasi. Dalam kasus-kasus berikut, Claude Code bertanya kepada Anda terlebih dahulu, atau dalam [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) meminta pengklasifikasi meninjau penerbitan tersebut:

65 72 

66Jika Claude merespons bahwa ia tidak dapat menerbitkan, atau menulis file HTML lokal tanpa tautan, alat tidak diaktifkan untuk sesi Anda. Periksa persyaratan [Ketersediaan](#availability).73| Kapan | Apa yang dilakukan Claude Code |

74| :- | :- |

75| Sesi berada dalam [plan mode](/docs/id/permission-modes#analyze-before-you-edit-with-plan-mode) | Bertanya sebelum penerbitan pertama setiap artifact |

76| Penerbitan mendeklarasikan kemampuan runtime untuk halaman, seperti [panggilan konektor](#pull-live-data-with-mcp-connectors) atau [unduhan file](#offer-a-file-download) | Bertanya sebelum penerbitan tersebut |

77| Anda membagikan artifact secara publik | Bertanya sekali per percakapan sebelum mengubahnya |

78| Anda mematikan [feature-flag fetching](/docs/id/env-vars#features-that-need-feature-flag-fetching) | Bertanya sebelum penerbitan pertama setiap artifact |

79| Claude menerbitkan dalam giliran yang dimulai oleh [tugas terjadwal](/docs/id/scheduled-tasks) yang berjalan di sesi Anda, bukan oleh prompt yang Anda ketik | Bertanya sebelum penerbitan pertama setiap artifact |

80| Claude tidak dapat membaca file tanpa persetujuan Anda | Bertanya sebelum menerbitkannya. Aturan izin allow untuk tool `Artifact` tidak melewati permintaan ini |

81 

82Claude membaca file di [direktori kerja](/docs/id/permissions#working-directories) sesi Anda, dan di direktori sementara tempat ia menulis halaman, tanpa bertanya. Agar Claude dapat menerbitkan dari folder lain tanpa permintaan izin, tambahkan folder tersebut sebagai direktori kerja dengan [`--add-dir`](/docs/id/cli-reference#cli-flags) saat peluncuran atau `/add-dir` selama sesi.

67 83 

68<h2 id="update-an-artifact">84<h2 id="update-an-artifact">

69 Perbarui artefak85 Perbarui artefak


87 Temukan artefak lagi103 Temukan artefak lagi

88</h2>104</h2>

89 105 

90Jalankan `/artifacts` di Claude Code untuk membuat daftar setiap artefak yang Anda miliki dan setiap artefak yang dibagikan kepada Anda. Pilih satu dan tekan `o` untuk membukanya di browser Anda atau `c` untuk menyalin tautannya. Tekan `Enter` untuk melampirkannya ke sesi saat ini; sebelum v2.1.216, `Enter` membukanya di browser Anda. Claude Code membaca daftar dari akun claude.ai Anda, sehingga berfungsi di sesi baru dan setelah `/clear`, ketika tautan telah keluar dari terminal. Memerlukan Claude Code v2.1.208 atau lebih baru.106Jalankan `/artifacts` di Claude Code untuk membuat daftar artifact yang Anda miliki dan artifact yang dibagikan kepada Anda. Artifact dari sesi saat ini ditampilkan terlebih dahulu, di bawah **This session**. Memerlukan Claude Code v2.1.208 atau lebih baru.

107 

108Pilih sebuah artifact, lalu tekan salah satu tombol berikut:

109 

110* **`Enter`**: membukanya di browser Anda jika artifact tersebut sudah terlampir ke sesi saat ini, dan melampirkannya jika belum. Sebelum v2.1.216, `Enter` membukanya di browser Anda

111* **`o`**: membukanya di browser Anda

112* **`c`**: menyalin tautannya

113 

114Claude Code membaca daftar dari akun claude.ai Anda, sehingga berfungsi di sesi baru dan setelah `/clear`, ketika tautan telah keluar dari terminal.

91 115 

92<h2 id="share-an-artifact">116<h2 id="share-an-artifact">

93 Bagikan artefak117 Bagikan artefak


110 134 

111Editor menerbitkan versi baru dengan cara yang sama seperti Anda [memperbarui artefak dari sesi lain](#update-an-artifact): mereka memberikan Claude URL artefak, atau melampirkannya dari [`/artifacts`](#find-an-artifact-again), dan Claude menarik konten saat ini dan menerbitkan ulang dengan perubahan mereka. Semua orang dengan halaman terbuka melihat setiap pembaruan secara langsung.135Editor menerbitkan versi baru dengan cara yang sama seperti Anda [memperbarui artefak dari sesi lain](#update-an-artifact): mereka memberikan Claude URL artefak, atau melampirkannya dari [`/artifacts`](#find-an-artifact-again), dan Claude menarik konten saat ini dan menerbitkan ulang dengan perubahan mereka. Semua orang dengan halaman terbuka melihat setiap pembaruan secara langsung.

112 136 

137Jika seorang editor menerbitkan saat Claude masih memegang salinan halaman yang lebih lama, Claude Code menolak penerbitan yang dibangun di atas salinan tersebut. Claude kemudian menggabungkan perubahannya ke versi yang lebih baru dan menerbitkan lagi.

138 

113<h2 id="read-an-artifact-shared-with-you">139<h2 id="read-an-artifact-shared-with-you">

114 Baca artefak yang dibagikan dengan Anda140 Baca artefak yang dibagikan dengan Anda

115</h2>141</h2>


168 194 

169Claude juga berhenti membalas dengan sendirinya ke artefak setelah menangani 60 komentar yang dikirim atau aktivasi thread pada artefak tersebut dalam satu jam. Anda melihat `Comments are waiting on Artifact: <name>` sekali, dan Claude melanjutkan lagi saat komentar jam itu sudah lama.195Claude juga berhenti membalas dengan sendirinya ke artefak setelah menangani 60 komentar yang dikirim atau aktivasi thread pada artefak tersebut dalam satu jam. Anda melihat `Comments are waiting on Artifact: <name>` sekali, dan Claude melanjutkan lagi saat komentar jam itu sudah lama.

170 196 

171Jalankan `/tasks` untuk melihat setiap artefak yang sesi Anda pantau, tercantum sebagai tugas pembaruan langsung. Anda dapat menghentikan Claude dari membalas dengan sendirinya dengan salah satu cara berikut:197Jalankan `/tasks` untuk melihat artifact yang dipantau oleh sesi Anda. `/tasks` mengelompokkan pemantauan yang dimulai Claude Code dengan sendirinya di bawah baris **System tasks**. Tekan `Enter` pada baris tersebut untuk menampilkan daftarnya. Pemantauan yang Anda minta untuk dimulai oleh Claude muncul di bawah **Monitors**.

198 

199Anda dapat menghentikan Claude dari membalas dengan sendirinya dengan salah satu cara berikut:

172 200 

173* **Tekan Ctrl+C sekali pada prompt idle**: Claude berhenti membalas pada setiap artefak yang sesi Anda pantau. Balasan dimulai lagi setelah Anda mengirim pesan berikutnya.201* **Tekan Ctrl+C sekali pada prompt idle**: Claude berhenti membalas pada setiap artefak yang sesi Anda pantau. Balasan dimulai lagi setelah Anda mengirim pesan berikutnya.

174* **Hentikan tugas di `/tasks`**: Claude berhenti membalas pada artefak tersebut sampai Anda memintanya melanjutkan balasan di sana. Menerbitkan artefak lagi tidak memulai balasan lagi, dan penghentian masih berlaku ketika Anda melanjutkan sesi nanti.202* **Hentikan tugas di `/tasks`**: Claude berhenti membalas pada artefak tersebut sampai Anda memintanya melanjutkan balasan di sana. Menerbitkan artefak lagi tidak memulai balasan lagi, dan penghentian masih berlaku ketika Anda melanjutkan sesi nanti.


391| Autentikasi | Sesi didukung oleh akun claude.ai: masuk dengan `/login` di CLI atau aplikasi desktop. Sesi Claude Tag masuk melalui identitas agen, jadi tidak ada langkah yang diperlukan di sana. Sesi menggunakan kunci API, [gateway token](/docs/id/llm-gateway), atau kredensial penyedia cloud tidak dapat menerbitkan. |419| Autentikasi | Sesi didukung oleh akun claude.ai: masuk dengan `/login` di CLI atau aplikasi desktop. Sesi Claude Tag masuk melalui identitas agen, jadi tidak ada langkah yang diperlukan di sana. Sesi menggunakan kunci API, [gateway token](/docs/id/llm-gateway), atau kredensial penyedia cloud tidak dapat menerbitkan. |

392| Penyedia model | Anthropic API. Tidak tersedia di [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), atau [Microsoft Foundry](/docs/id/microsoft-foundry). |420| Penyedia model | Anthropic API. Tidak tersedia di [Amazon Bedrock](/docs/id/amazon-bedrock), [Google Cloud's Agent Platform](/docs/id/google-vertex-ai), atau [Microsoft Foundry](/docs/id/microsoft-foundry). |

393| Kebijakan organisasi | Kunci enkripsi yang dikelola pelanggan (CMEK), HIPAA, dan [Zero Data Retention](/docs/id/zero-data-retention) tidak diaktifkan untuk organisasi. |421| Kebijakan organisasi | Kunci enkripsi yang dikelola pelanggan (CMEK), HIPAA, dan [Zero Data Retention](/docs/id/zero-data-retention) tidak diaktifkan untuk organisasi. |

394| Surface | Claude Code CLI, atau aplikasi desktop Claude versi 1.13576.0 atau lebih baru. Sesi [Claude Tag](https://claude.com/docs/claude-tag/overview) juga dapat menerbitkan artifacts ketika Claude Tag dan artifacts keduanya diaktifkan untuk organisasi. Dimatikan secara default di konteks [Agent SDK](/docs/id/agent-sdk/overview), GitHub Action, dan server MCP, ketika Anda menjalankan Claude Code dengan [`-p`](/docs/id/headless) dari terminal atau skrip Anda sendiri, dan ketika [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars) diatur. |422| Surface | Claude Code CLI, atau aplikasi desktop Claude versi 1.13576.0 atau lebih baru. Sesi [Claude Tag](https://claude.com/docs/claude-tag/overview) juga dapat menerbitkan artifacts ketika Claude Tag dan artifacts keduanya diaktifkan untuk organisasi. Sesi yang dilayani oleh [`claude remote-control`](/docs/id/remote-control) dapat menerbitkan artifacts ketika Anda memulai sesi tersebut sendiri. Memerlukan Claude Code v2.1.281 atau lebih baru. Dimatikan secara default di konteks [Agent SDK](/docs/id/agent-sdk/overview), GitHub Action, dan server MCP, ketika Anda menjalankan Claude Code dengan [`-p`](/docs/id/headless) dari terminal atau skrip Anda sendiri, dan ketika [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/id/env-vars) diatur. |

395 423 

396Apakah artifacts diizinkan untuk organisasi Anda berasal dari kebijakan organisasi Anda, yang Claude Code muat dari `api.anthropic.com`. Ketika Claude Code tidak dapat memuat kebijakan, artifacts tidak tersedia. Ketika Anda memintanya, Claude mengatakan alasannya.424Apakah artifacts diizinkan untuk organisasi Anda berasal dari kebijakan organisasi Anda, yang Claude Code muat dari `api.anthropic.com`. Ketika Claude Code tidak dapat memuat kebijakan, artifacts tidak tersedia. Ketika Anda memintanya, Claude mengatakan alasannya.

397 425 

Details

1237 1237 

1238CLI mengirim metrik, log, dan, ketika diaktifkan, jejak ke gateway, yang meneruskannya verbatim ke setiap tujuan yang dikonfigurasi. Ekspor menggunakan OpenTelemetry Protocol (OTLP) melalui HTTP. Untuk melewati relay dan memiliki sesi ekspor langsung ke kolektor Anda, [namai kolektor dalam kebijakan](#export-directly-to-your-collector). Lihat [Monitoring usage](/docs/id/monitoring-usage) untuk metrik dan acara yang CLI pancarkan.1238CLI mengirim metrik, log, dan, ketika diaktifkan, jejak ke gateway, yang meneruskannya verbatim ke setiap tujuan yang dikonfigurasi. Ekspor menggunakan OpenTelemetry Protocol (OTLP) melalui HTTP. Untuk melewati relay dan memiliki sesi ekspor langsung ke kolektor Anda, [namai kolektor dalam kebijakan](#export-directly-to-your-collector). Lihat [Monitoring usage](/docs/id/monitoring-usage) untuk metrik dan acara yang CLI pancarkan.

1239 1239 

1240Dalam sesi yang masuk melalui `/login`, CLI memberi stempel setiap ekspor dengan identitas pengguna yang diautentikasi, dibaca dari JWT yang diterbitkan gateway: atribut `user.id`, `user.email`, dan `user.groups`. Atribusi biaya dan penggunaan per-pengembang oleh karena itu bekerja tanpa konfigurasi sisi pengembang.1240Dalam sesi yang masuk melalui `/login`, CLI memberi stempel setiap ekspor dengan identitas pengguna yang diautentikasi, dibaca dari JWT yang diterbitkan gateway: atribut `user.id`, `user.email`, dan `user.groups`. Atribusi biaya dan penggunaan per-pengembang oleh karena itu bekerja tanpa konfigurasi sisi pengembang. Acara yang dicatat Claude Code sebelum pengembang masuk [tidak membawa identitas ini](/docs/id/monitoring-usage#standard-attributes).

1241 1241 

1242Sesi [Claude Desktop](#claude-desktop-overlay) dan Cowork yang masuk melalui gateway memberi stempel telemetri mereka dengan `user.email` dan `user.groups` bersama `enduser.id`, sehingga Anda dapat mencakup penggunaan terminal, Desktop, dan Cowork dengan satu kueri di `user.email` atau `user.groups`. `user.groups` adalah daftar grup IdP yang dipisahkan koma.1242Sesi [Claude Desktop](#claude-desktop-overlay) dan Cowork yang masuk melalui gateway memberi stempel telemetri mereka dengan `user.email` dan `user.groups` bersama `enduser.id`, sehingga Anda dapat mencakup penggunaan terminal, Desktop, dan Cowork dengan satu kueri di `user.email` atau `user.groups`. `user.groups` adalah daftar grup IdP yang dipisahkan koma.

1243 1243 

Details

516 Telemetry516 Telemetry

517</h2>517</h2>

518 518 

519Gateway memberikan Anda metrik penggunaan per-developer tanpa konfigurasi OTEL per-mesin apa pun. Claude Code memancarkan metrik OpenTelemetry (OTLP), log, dan trace opt-in; [Monitoring usage](/docs/id/monitoring-usage) mencakup semua yang dilaporkan CLI. Dalam sesi yang masuk melalui `/login`, CLI memberi stempel setiap ekspor dengan atribut identitas IdP yang diautentikasi `user.id`, `user.email`, dan `user.groups`, sehingga penggunaan terakumulasi per developer.519Gateway memberikan Anda metrik penggunaan per-developer tanpa konfigurasi OTEL per-mesin apa pun. Claude Code memancarkan metrik OpenTelemetry (OTLP), log, dan trace opt-in; [Monitoring usage](/docs/id/monitoring-usage) mencakup semua yang dilaporkan CLI. Dalam sesi yang masuk melalui `/login`, CLI [memberi stempel setiap ekspor](/docs/id/monitoring-usage#standard-attributes) dengan atribut identitas IdP yang diautentikasi `user.id`, `user.email`, dan `user.groups`, sehingga penggunaan terakumulasi per developer.

520 520 

521Gateway itu sendiri adalah relay OTLP yang diautentikasi. Atur [`telemetry.forward_to`](/docs/id/claude-apps-gateway-config#telemetry) bersama dengan `listen.public_url`, dan itu mendorong pengaturan OTEL exporter ke setiap klien yang terhubung dan meneruskan lalu lintas OTLP mereka secara verbatim ke setiap tujuan yang Anda daftarkan. Setiap tujuan memilih metrik, log, dan trace secara independen, dan defaultnya hanya metrik; lihat [referensi `telemetry`](/docs/id/claude-apps-gateway-config#telemetry) untuk bidang per-sinyal dan trade-off sensitivitasnya. Gateway tidak membuffer, mengagregasi, atau menyimpan telemetry, jadi tempat data mendarat sepenuhnya merupakan konfigurasi exporter collector.521Gateway itu sendiri adalah relay OTLP yang diautentikasi. Atur [`telemetry.forward_to`](/docs/id/claude-apps-gateway-config#telemetry) bersama dengan `listen.public_url`, dan itu mendorong pengaturan OTEL exporter ke setiap klien yang terhubung dan meneruskan lalu lintas OTLP mereka secara verbatim ke setiap tujuan yang Anda daftarkan. Setiap tujuan memilih metrik, log, dan trace secara independen, dan defaultnya hanya metrik; lihat [referensi `telemetry`](/docs/id/claude-apps-gateway-config#telemetry) untuk bidang per-sinyal dan trade-off sensitivitasnya. Gateway tidak membuffer, mengagregasi, atau menyimpan telemetry, jadi tempat data mendarat sepenuhnya merupakan konfigurasi exporter collector.

522 522 

Details

489* **Routines**: ketika Anda meminta pekerjaan terjadwal dalam project, Claude membuat [routine](/docs/id/routines) yang berjalan sebagai thread dalam project itu dan muncul di tab **Routines**-nya. Routine yang Anda buat di luar project terus bekerja sendiri.489* **Routines**: ketika Anda meminta pekerjaan terjadwal dalam project, Claude membuat [routine](/docs/id/routines) yang berjalan sebagai thread dalam project itu dan muncul di tab **Routines**-nya. Routine yang Anda buat di luar project terus bekerja sendiri.

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

491* **Local sessions dan agent view**: sesi yang Anda mulai sendiri di terminal, IDE, atau environment lokal aplikasi desktop tidak dapat ditambahkan ke project. [Agent view](/docs/id/agent-view) adalah layar untuk melacak beberapa sesi lokal berdampingan, dan Anda masih memulai masing-masing dan memberikan tugasnya sendiri.491* **Local sessions dan agent view**: sesi yang Anda mulai sendiri di terminal, IDE, atau environment lokal aplikasi desktop tidak dapat ditambahkan ke project. [Agent view](/docs/id/agent-view) adalah layar untuk melacak beberapa sesi lokal berdampingan, dan Anda masih memulai masing-masing dan memberikan tugasnya sendiri.

492* **Worktrees**: [worktree](/docs/id/worktrees) memberikan setiap sesi lokal salinan kerjanya sendiri dari repositori sehingga sesi paralel di mesin Anda tidak menimpa satu sama lain. Thread cloud tidak membutuhkannya: setiap thread mengkloning repositorinya ke sandbox cloud sendiri dan bekerja di cabang sendiri.492* **Worktrees**: [worktree](/docs/id/worktrees) memberikan setiap sesi lokal salinan kerjanya sendiri dari repositori. Thread cloud tidak membutuhkannya: setiap thread mengkloning repositorinya ke sandbox cloud sendiri dan bekerja di branch sendiri.

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

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

495* **Projects di claude.ai chat dan Cowork**: [pengalaman Projects sebelumnya](https://support.claude.com/en/articles/9517075-what-are-projects), yang mengelompokkan percakapan dan file referensi tanpa thread atau koordinator. Project tersebut terus bekerja seperti yang mereka lakukan hari ini sampai pengalaman yang dirancang ulang mencapai mereka.495* **Projects di claude.ai chat dan Cowork**: [pengalaman Projects sebelumnya](https://support.claude.com/en/articles/9517075-what-are-projects), yang mengelompokkan percakapan dan file referensi tanpa thread atau koordinator. Project tersebut terus bekerja seperti yang mereka lakukan hari ini sampai pengalaman yang dirancang ulang mencapai mereka.

Details

106| `--input-format` | Tentukan format input untuk mode cetak (opsi: `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |106| `--input-format` | Tentukan format input untuk mode cetak (opsi: `text`, `stream-json`) | `claude -p --output-format json --input-format stream-json` |

107| `--json-schema` | Dapatkan output JSON yang divalidasi yang cocok dengan JSON Schema setelah agen menyelesaikan alurnya (mode cetak saja). Lihat [output terstruktur](/docs/id/agent-sdk/structured-outputs). Claude Code keluar dengan kesalahan pada skema yang tidak valid dan menerima kata kunci `format` sebagai anotasi tanpa validasi sisi klien | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |107| `--json-schema` | Dapatkan output JSON yang divalidasi yang cocok dengan JSON Schema setelah agen menyelesaikan alurnya (mode cetak saja). Lihat [output terstruktur](/docs/id/agent-sdk/structured-outputs). Claude Code keluar dengan kesalahan pada skema yang tidak valid dan menerima kata kunci `format` sebagai anotasi tanpa validasi sisi klien | `claude -p --json-schema '{"type":"object","properties":{...}}' "query"` |

108| `--maintenance` | Jalankan [hook Setup](/docs/id/hooks#setup) dengan pencocokan `maintenance` sebelum sesi (mode cetak saja) | `claude -p --maintenance "query"` |108| `--maintenance` | Jalankan [hook Setup](/docs/id/hooks#setup) dengan pencocokan `maintenance` sebelum sesi (mode cetak saja) | `claude -p --maintenance "query"` |

109| `--max-budget-usd` | Jumlah dolar maksimum yang dibelanjakan untuk panggilan API sebelum berhenti (hanya mode print). Claude Code memeriksa batas ini terhadap [estimasi biaya sisi klien](/docs/id/agent-sdk/cost-tracking#estimates-not-billing), yang dapat berbeda dari tagihan Anda. Pengeluaran dari [subagent](/docs/id/sub-agents) dihitung terhadap batas. Ketika Anda kembali ke percakapan dengan `--continue` atau `--resume`, total yang [dipulihkan dari eksekusi sebelumnya](/docs/id/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls) tidak dihitung terhadapnya. Setelah pengeluaran mencapai batas, memunculkan subagent lain gagal dengan `Budget limit reached`, dan Claude Code menghentikan subagent latar belakang yang masih berjalan; perilaku penegakan batas ini memerlukan Claude Code v2.1.217 atau lebih baru | `claude -p --max-budget-usd 5.00 "query"` |109| `--max-budget-usd` | Hentikan eksekusi setelah estimasi pengeluaran untuk panggilan API mencapai jumlah ini (mode cetak saja). Claude Code memeriksa batas ini terhadap [estimasi biaya sisi klien](/docs/id/agent-sdk/cost-tracking#estimates-not-billing), yang dapat berbeda dari tagihan Anda. Pengeluaran dari [subagent](/docs/id/sub-agents) dihitung terhadap batas. Pengeluaran dapat melewati batas, jadi [sisakan ruang](/docs/id/agent-sdk/agent-loop#budget-headroom). Ketika Anda kembali ke percakapan dengan `--continue` atau `--resume`, total yang [dipulihkan dari eksekusi sebelumnya](/docs/id/agent-sdk/cost-tracking#accumulate-costs-across-multiple-calls) tidak dihitung terhadapnya. Setelah pengeluaran mencapai batas, memunculkan subagent lain gagal dengan `Budget limit reached`, dan Claude Code menghentikan subagent latar belakang yang masih berjalan; perilaku penegakan batas ini memerlukan Claude Code v2.1.217 atau lebih baru | `claude -p --max-budget-usd 5.00 "query"` |

110| `--max-turns` | Batasi jumlah putaran agentic (mode cetak saja). Keluar dengan kesalahan ketika batas tercapai. Tidak ada batas secara default. Dengan `--input-format stream-json`, pesan yang masih antri ketika batas mengakhiri putaran tetap antri dan memulai putaran baru dengan batasnya sendiri | `claude -p --max-turns 3 "query"` |110| `--max-turns` | Batasi jumlah putaran agentic (mode cetak saja). Keluar dengan kesalahan ketika batas tercapai. Tidak ada batas secara default. Dengan `--input-format stream-json`, pesan yang masih antri ketika batas mengakhiri putaran tetap antri dan memulai putaran baru dengan batasnya sendiri | `claude -p --max-turns 3 "query"` |

111| `--mcp-config` | Muat server MCP dari file atau string JSON (dipisahkan spasi). Ketika Anda melewatkan bendera ini dengan `-p`, Claude Code menunggu server yang masih tertunda untuk terhubung sebelum menjalankan putaran pertama, hingga waktu tunggu startup [`MCP_TIMEOUT`](/docs/id/env-vars), 30 detik secara default; server dengan [daftar alat yang di-cache](/docs/id/mcp#managing-your-servers) melewati tunggu dan terhubung saat penggunaan pertama. Tunggu memerlukan Claude Code v2.1.221 atau lebih baru | `claude --mcp-config ./mcp.json` |111| `--mcp-config` | Muat server MCP dari file atau string JSON (dipisahkan spasi). Ketika Anda melewatkan bendera ini dengan `-p`, Claude Code menunggu server yang masih tertunda untuk terhubung sebelum menjalankan putaran pertama, hingga waktu tunggu startup [`MCP_TIMEOUT`](/docs/id/env-vars), 30 detik secara default; server dengan [daftar alat yang di-cache](/docs/id/mcp#managing-your-servers) melewati tunggu dan terhubung saat penggunaan pertama. Tunggu memerlukan Claude Code v2.1.221 atau lebih baru | `claude --mcp-config ./mcp.json` |

112| `--model` | Menetapkan model untuk sesi saat ini dengan [alias model](/docs/id/model-config#model-aliases) seperti `sonnet`, `opus`, `haiku`, atau `fable`, atau nama lengkap model. Menimpa pengaturan [`model`](/docs/id/settings-reference#model) dan [`ANTHROPIC_MODEL`](/docs/id/model-config#environment-variables) | `claude --model claude-sonnet-5` |112| `--model` | Menetapkan model untuk sesi saat ini dengan [alias model](/docs/id/model-config#model-aliases) seperti `sonnet`, `opus`, `haiku`, atau `fable`, atau nama lengkap model. Menimpa pengaturan [`model`](/docs/id/settings-reference#model) dan [`ANTHROPIC_MODEL`](/docs/id/model-config#environment-variables) | `claude --model claude-sonnet-5` |

Details

307| | Tersedia di sesi cloud | Mengapa |307| | Tersedia di sesi cloud | Mengapa |

308| :- | :- | :- |308| :- | :- | :- |

309| `CLAUDE.md` repo Anda | Ya | Bagian dari klon |309| `CLAUDE.md` repo Anda | Ya | Bagian dari klon |

310| Hook `.claude/settings.json` repo Anda dan aturan izin | Ya, dalam sesi dengan satu repositori | Bagian dari klon. Sesi dengan beberapa repositori, termasuk thread [proyek](/docs/id/claude-projects#what-threads-pick-up-from-your-repositories), dimulai di atas klon dan tidak membacanya |310| Hook `.claude/settings.json` repo Anda dan aturan izin | Ya, dalam sesi dengan satu repositori | Bagian dari klon. Untuk sesi dengan beberapa repositori, lihat [pengaturan mana yang dibacanya](/docs/id/settings#settings-in-cloud-sessions) |

311| Server MCP `.mcp.json` repo Anda | Ya, dalam sesi dengan satu repositori | Bagian dari klon, ditemukan dari direktori kerja sesi |311| Server MCP `.mcp.json` repo Anda | Ya, dalam sesi dengan satu repositori | Bagian dari klon, ditemukan dari direktori kerja sesi. Untuk lingkungan yang di-host sendiri, lihat [pengaturan repositori mana yang berlaku](/docs/id/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories) |

312| `.claude/rules/` repo Anda | Ya | Bagian dari klon |312| `.claude/rules/` repo Anda | Ya | Bagian dari klon |

313| `.claude/skills/`, `.claude/agents/`, `.claude/commands/` repo Anda | Ya | Bagian dari klon |313| `.claude/skills/`, `.claude/agents/`, `.claude/commands/` repo Anda | Ya | Bagian dari klon |

314| Plugin dan marketplace yang dideklarasikan di `.claude/settings.json` repo Anda | Tidak | Sesi cloud tidak menginstal plugin yang dihidupkan repositori di bawah [`enabledPlugins`](/docs/id/settings-reference#enabledplugins), termasuk yang dari marketplace yang dicantumkan di bawah [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) |314| Plugin dan marketplace yang dideklarasikan di `.claude/settings.json` repo Anda | Tidak | Sesi cloud tidak menginstal plugin yang dihidupkan repositori di bawah [`enabledPlugins`](/docs/id/settings-reference#enabledplugins), termasuk yang dari marketplace yang dicantumkan di bawah [`extraKnownMarketplaces`](/docs/id/settings-reference#extraknownmarketplaces) |


575 575 

576Hook SessionStart berperilaku sama di cloud seperti secara lokal, dengan peringatan ini:576Hook SessionStart berperilaku sama di cloud seperti secara lokal, dengan peringatan ini:

577 577 

578* **Satu repositori per sesi**: sesi dengan beberapa repositori tidak memuat hook dari `.claude/settings.json` repositori apa pun, jadi hook SessionStart yang Anda tentukan di sana tidak berjalan. Instal dependensi untuk sesi tersebut dengan [skrip setup](#setup-scripts) sebagai gantinya.578* **Satu repositori per sesi**: di lingkungan yang dihosting Anthropic, sesi dengan beberapa repositori tidak memuat hook dari `.claude/settings.json` repositori apa pun, jadi hook SessionStart yang Anda tentukan di sana tidak berjalan. Instal dependensi untuk sesi tersebut dengan [skrip setup](#setup-scripts) sebagai gantinya. Untuk lingkungan yang dihosting sendiri, lihat [pengaturan repositori mana yang berlaku](/docs/id/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).

579* **Tidak ada scoping khusus cloud**: hook berjalan di sesi lokal dan cloud. Untuk melewati eksekusi lokal, keluar lebih awal kecuali variabel lingkungan `CLAUDE_CODE_REMOTE` adalah `true`, cara yang ditunjukkan oleh [skrip instalasi dependensi](#install-dependencies-with-a-sessionstart-hook).579* **Tidak ada scoping khusus cloud**: hook berjalan di sesi lokal dan cloud. Untuk melewati eksekusi lokal, keluar lebih awal kecuali variabel lingkungan `CLAUDE_CODE_REMOTE` adalah `true`, cara yang ditunjukkan oleh [skrip instalasi dependensi](#install-dependencies-with-a-sessionstart-hook).

580* **Memerlukan akses jaringan**: perintah instalasi perlu menjangkau registri paket. Jika lingkungan Anda menggunakan akses jaringan **None**, hook ini gagal. [Allowlist default](#default-allowed-domains) di bawah **Trusted** mencakup npm, PyPI, RubyGems, dan crates.io.580* **Memerlukan akses jaringan**: perintah instalasi perlu menjangkau registri paket. Jika lingkungan Anda menggunakan akses jaringan **None**, hook ini gagal. [Allowlist default](#default-allowed-domains) di bawah **Trusted** mencakup npm, PyPI, RubyGems, dan crates.io.

581* **Kompatibilitas proxy**: di lingkungan yang dihosting Anthropic, semua lalu lintas keluar melewati [proxy keamanan](#security-proxy), dan beberapa manajer paket tidak bekerja dengan benar dengannya; Bun adalah contoh yang diketahui. Di [lingkungan yang dihosting sendiri](/docs/id/self-hosted-environments-deploy#default-deny-egress), lalu lintas keluar melewati batas jaringan Anda sendiri.581* **Kompatibilitas proxy**: di lingkungan yang dihosting Anthropic, semua lalu lintas keluar melewati [proxy keamanan](#security-proxy), dan beberapa manajer paket tidak bekerja dengan benar dengannya; Bun adalah contoh yang diketahui. Di [lingkungan yang dihosting sendiri](/docs/id/self-hosted-environments-deploy#default-deny-egress), lalu lintas keluar melewati batas jaringan Anda sendiri.

desktop.md +1 −1

Details

396 Bekerja secara paralel dengan sesi396 Bekerja secara paralel dengan sesi

397</h3>397</h3>

398 398 

399Klik **+ New session** di sidebar, atau tekan **Cmd+N** di macOS atau **Ctrl+N** di Windows, untuk bekerja pada beberapa tugas secara paralel. Tekan **Ctrl+Tab** dan **Ctrl+Shift+Tab** untuk bersiklus melalui sesi di sidebar. Untuk repositori Git, pilih opsi **worktree** di sebelah nama branch untuk memberikan sesi salinan proyek Anda yang terisolasi menggunakan [Git worktrees](/docs/id/worktrees), sehingga perubahan dalam satu sesi tidak mempengaruhi sesi lain sampai Anda melakukan commit.399Klik **+ New session** di sidebar, atau tekan **Cmd+N** di macOS atau **Ctrl+N** di Windows, untuk bekerja pada beberapa tugas secara paralel. Tekan **Ctrl+Tab** dan **Ctrl+Shift+Tab** untuk bersiklus melalui sesi di sidebar. Untuk repositori Git, pilih opsi **worktree** di sebelah nama branch untuk memberikan sesi salinan proyek Anda sendiri yang terisolasi menggunakan [Git worktrees](/docs/id/worktrees).

400 400 

401Untuk melihat dua sesi sekaligus, tahan **Cmd** di macOS atau **Ctrl** di Windows dan klik sesi di sidebar. Sesi terbuka di pane kedua di samping yang sudah Anda buka. Saat split aktif, mengklik sesi sidebar lain mengganti pane mana pun yang memiliki fokus. Tekan **Cmd+\\** di macOS atau **Ctrl+\\** di Windows untuk menutup pane yang difokuskan dan kembali ke sesi tunggal.401Untuk melihat dua sesi sekaligus, tahan **Cmd** di macOS atau **Ctrl** di Windows dan klik sesi di sidebar. Sesi terbuka di pane kedua di samping yang sudah Anda buka. Saat split aktif, mengklik sesi sidebar lain mengganti pane mana pun yang memiliki fokus. Tekan **Cmd+\\** di macOS atau **Ctrl+\\** di Windows untuk menutup pane yang difokuskan dan kembali ke sesi tunggal.

402 402 

env-vars.md +2 −2

Details

204| `CLAUDE_AFK_TIMEOUT_MS` | Berapa milidetik waktu idle sebelum dialog [`AskUserQuestion`](/docs/id/tools-reference) yang belum dijawab melanjutkan secara otomatis tanpa Anda. Auto-continue nonaktif secara default; ikut serta dengan pengaturan [`askUserQuestionTimeout`](/docs/id/settings-reference#askuserquestiontimeout). Variabel ini adalah override untuk demo dan pengujian otomatis: jika ditetapkan, variabel ini diutamakan daripada pengaturan tersebut dan mengaktifkan auto-continue bahkan ketika pengaturan tidak ditetapkan atau bernilai `never`. Menetapkan `0` tidak menonaktifkan timeout; justru menutup dialog seketika. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Sebelum v2.1.200, auto-continue aktif secara default dengan timeout `60000` (60 detik). Memerlukan Claude Code v2.1.198 atau lebih baru |204| `CLAUDE_AFK_TIMEOUT_MS` | Berapa milidetik waktu idle sebelum dialog [`AskUserQuestion`](/docs/id/tools-reference) yang belum dijawab melanjutkan secara otomatis tanpa Anda. Auto-continue nonaktif secara default; ikut serta dengan pengaturan [`askUserQuestionTimeout`](/docs/id/settings-reference#askuserquestiontimeout). Variabel ini adalah override untuk demo dan pengujian otomatis: jika ditetapkan, variabel ini diutamakan daripada pengaturan tersebut dan mengaktifkan auto-continue bahkan ketika pengaturan tidak ditetapkan atau bernilai `never`. Menetapkan `0` tidak menonaktifkan timeout; justru menutup dialog seketika. Diabaikan di [pengaturan proyek dan lokal](/docs/id/settings-reference#variables-claude-code-ignores-in-env). Sebelum v2.1.200, auto-continue aktif secara default dengan timeout `60000` (60 detik). Memerlukan Claude Code v2.1.198 atau lebih baru |

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

206| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Tetapkan ke `1` untuk melewati awalan `mcp__<server>__` pada nama tool dari server MCP yang dibuat SDK. Tool menggunakan nama aslinya. Hanya untuk penggunaan SDK |206| `CLAUDE_AGENT_SDK_MCP_NO_PREFIX` | Tetapkan ke `1` untuk melewati awalan `mcp__<server>__` pada nama tool dari server MCP yang dibuat SDK. Tool menggunakan nama aslinya. Hanya untuk penggunaan SDK |

207| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Timeout macet dalam milidetik untuk subagent. Default `600000` (10 menit); jika Anda menaikkan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` saat stream watchdog aktif, default ikut naik, seperti yang dijelaskan di [Menangani respons API yang lambat atau macet](/docs/id/agent-sdk/typescript#handle-slow-or-stalled-api-responses). Timer diatur ulang pada setiap event progres streaming; jika tidak ada progres yang tiba dalam rentang waktu tersebut, Claude Code membatalkan subagent dan melaporkan kemacetan ke induknya |207| `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` | Timeout macet dalam milidetik untuk subagent. Juga mencakup [agent workflow](/docs/id/workflows#when-an-agent-stalls-and-restarts) di Claude Code v2.1.286 atau yang lebih baru. Default `600000` (10 menit); jika Anda menaikkan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` saat watchdog stream aktif, nilai default ikut naik, seperti yang dijelaskan di [Menangani respons API yang lambat atau macet](/docs/id/agent-sdk/typescript#handle-slow-or-stalled-api-responses) |

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

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

210| `CLAUDE_AX_PREPARK_MS` | Dalam [mode pembaca layar](/docs/id/accessibility), berapa milidetik Claude Code menunggu sebelum menulis baris yang baru atau berubah. Default `0`, sehingga Claude Code tidak menunggu. Sebelum v2.1.287, default-nya adalah `50`. Claude Code membatasi waktu tunggu pada `5000`. Memerlukan Claude Code v2.1.233 atau lebih baru |210| `CLAUDE_AX_PREPARK_MS` | Dalam [mode pembaca layar](/docs/id/accessibility), berapa milidetik Claude Code menunggu sebelum menulis baris yang baru atau berubah. Default `0`, sehingga Claude Code tidak menunggu. Sebelum v2.1.287, default-nya adalah `50`. Claude Code membatasi waktu tunggu pada `5000`. Memerlukan Claude Code v2.1.233 atau lebih baru |


378| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Usia maksimum dalam milidetik dari pesan transkrip terakhir agar sesi yang berakhir di tengah giliran dapat berlanjut secara otomatis saat dilanjutkan. Ketika pesan terakhir lebih tua dari batas ini, Claude Code melewati pelanjutan otomatis `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` dan pesan kelanjutan `CLAUDE_CODE_RESUME_PROMPT`-nya, dan sesi dimulai dalam keadaan idle sehingga Anda melanjutkan secara eksplisit. Tidak diatur atau `0` berarti tanpa batas, kecuali bahwa giliran yang permintaan terakhirnya gagal dengan error API hanya dilanjutkan selama error tersebut berusia kurang dari enam jam. Nilai positif membatasi setiap giliran, termasuk 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 menetapkan 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 |378| `CLAUDE_CODE_RESUME_INTERRUPTED_TURN_MAX_AGE_MS` | Usia maksimum dalam milidetik dari pesan transkrip terakhir agar sesi yang berakhir di tengah giliran dapat berlanjut secara otomatis saat dilanjutkan. Ketika pesan terakhir lebih tua dari batas ini, Claude Code melewati pelanjutan otomatis `CLAUDE_CODE_RESUME_INTERRUPTED_TURN` dan pesan kelanjutan `CLAUDE_CODE_RESUME_PROMPT`-nya, dan sesi dimulai dalam keadaan idle sehingga Anda melanjutkan secara eksplisit. Tidak diatur atau `0` berarti tanpa batas, kecuali bahwa giliran yang permintaan terakhirnya gagal dengan error API hanya dilanjutkan selama error tersebut berusia kurang dari enam jam. Nilai positif membatasi setiap giliran, termasuk 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 menetapkan 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 |

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

380| `CLAUDE_CODE_RETRY_WATCHDOG` | Atur ke `1` untuk sesi tanpa pengawasan seperti harness evaluasi, job CI, atau worker jarak jauh. Melakukan retry pada error kapasitas `429` dan `529` tanpa batas alih-alih gagal setelah `CLAUDE_CODE_MAX_RETRIES` percobaan. Claude Code langsung gagal ketika permintaan berkecepatan standar mendapat `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 pada kasus 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 ketika respons membawa waktu reset rate limit, sehingga sesi yang mencapai batas penggunaan menunggu hingga window yang tersisa berakhir. Pada v2.1.199 atau yang lebih baru, ini juga menaikkan jumlah retry default untuk error sementara lainnya, seperti error server, timeout, dan koneksi terputus, menjadi 300, sekitar tiga jam backoff, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda mengatur variabel tersebut secara eksplisit. Memerlukan Claude Code v2.1.186 atau yang lebih baru |380| `CLAUDE_CODE_RETRY_WATCHDOG` | Atur ke `1` untuk sesi tanpa pengawasan seperti harness evaluasi, job CI, atau worker jarak jauh. Melakukan retry pada error kapasitas `429` dan `529` tanpa batas alih-alih gagal setelah `CLAUDE_CODE_MAX_RETRIES` percobaan. Claude Code langsung gagal ketika permintaan berkecepatan standar mendapat `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 pada kasus 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 ketika respons membawa waktu reset rate limit, sehingga sesi yang mencapai batas penggunaan menunggu hingga window yang tersisa berakhir. Pada v2.1.199 atau yang lebih baru, ini juga menaikkan jumlah retry default untuk error sementara lainnya, seperti error server, timeout, dan koneksi terputus, menjadi 300, sekitar tiga jam backoff, dan menghapus batas 15 pada `CLAUDE_CODE_MAX_RETRIES` jika Anda mengatur variabel tersebut secara eksplisit. Memerlukan Claude Code v2.1.186 atau yang lebih baru |

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

381| `CLAUDE_CODE_SAFE_MODE` | Atur ke `1` untuk memulai dalam safe mode: CLAUDE.md, skill, plugin, hook, server MCP, perintah dan agent kustom, gaya output, workflow, tema kustom, pintasan keyboard kustom, perintah baris status dan saran file, server LSP, dan auto memory tidak dimuat, untuk pemecahan masalah konfigurasi yang rusak. Kebijakan pengaturan terkelola tetap berlaku, termasuk hook, baris status, dan perintah saran file yang dikonfigurasi kebijakan; plugin terkelola, skill terkelola, CLAUDE.md terkelola, dan server MCP yang dikonfigurasi kebijakan tidak berlaku. Setara dengan meneruskan [`--safe-mode`](/docs/id/cli-reference#cli-flags). Proses anak yang dimunculkan secara langsung mewarisi variabel ini |382| `CLAUDE_CODE_SAFE_MODE` | Atur ke `1` untuk memulai dalam safe mode: CLAUDE.md, skill, plugin, hook, server MCP, perintah dan agent kustom, gaya output, workflow, tema kustom, pintasan keyboard kustom, perintah baris status dan saran file, server LSP, dan auto memory tidak dimuat, untuk pemecahan masalah konfigurasi yang rusak. Kebijakan pengaturan terkelola tetap berlaku, termasuk hook, baris status, dan perintah saran file yang dikonfigurasi kebijakan; plugin terkelola, skill terkelola, CLAUDE.md terkelola, dan server MCP yang dikonfigurasi kebijakan tidak berlaku. Setara dengan meneruskan [`--safe-mode`](/docs/id/cli-reference#cli-flags). Proses anak yang dimunculkan secara langsung mewarisi variabel ini |

382| `CLAUDE_CODE_SCRIPT_CAPS` | Objek JSON yang membatasi berapa kali skrip tertentu dapat dipanggil per sesi ketika `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` diatur. Kunci adalah substring yang dicocokkan dengan teks perintah; nilai adalah batas panggilan berupa bilangan bulat. Misalnya, `{"deploy.sh": 2}` mengizinkan `deploy.sh` dipanggil paling banyak dua kali. Pencocokan berbasis substring sehingga trik ekspansi shell seperti `./scripts/deploy.sh $(evil)` tetap dihitung terhadap batas. Fan-out runtime melalui `xargs` atau `find -exec` tidak terdeteksi; ini adalah kontrol defense-in-depth |383| `CLAUDE_CODE_SCRIPT_CAPS` | Objek JSON yang membatasi berapa kali skrip tertentu dapat dipanggil per sesi ketika `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` diatur. Kunci adalah substring yang dicocokkan dengan teks perintah; nilai adalah batas panggilan berupa bilangan bulat. Misalnya, `{"deploy.sh": 2}` mengizinkan `deploy.sh` dipanggil paling banyak dua kali. Pencocokan berbasis substring sehingga trik ekspansi shell seperti `./scripts/deploy.sh $(evil)` tetap dihitung terhadap batas. Fan-out runtime melalui `xargs` atau `find -exec` tidak terdeteksi; ini adalah kontrol defense-in-depth |

383| `CLAUDE_CODE_SCROLL_SPEED` | Mengatur pengali gulir roda mouse dalam [rendering layar penuh](/docs/id/fullscreen#mouse-wheel-scrolling). Menerima nilai positif apa pun hingga 20, termasuk nilai pecahan di bawah 1 seperti `0.5` untuk memperlambat gulir trackpad dan roda yang dipercepat di terminal yang sudah memperkuat event roda. Atur ke `3` agar sesuai dengan `vim` jika terminal Anda mengirim satu event roda per takik tanpa penguatan. Diabaikan di terminal IDE JetBrains, tempat Claude Code menggunakan penanganan gulir miliknya sendiri |384| `CLAUDE_CODE_SCROLL_SPEED` | Mengatur pengali gulir roda mouse dalam [rendering layar penuh](/docs/id/fullscreen#mouse-wheel-scrolling). Menerima nilai positif apa pun hingga 20, termasuk nilai pecahan di bawah 1 seperti `0.5` untuk memperlambat gulir trackpad dan roda yang dipercepat di terminal yang sudah memperkuat event roda. Atur ke `3` agar sesuai dengan `vim` jika terminal Anda mengirim satu event roda per takik tanpa penguatan. Diabaikan di terminal IDE JetBrains, tempat Claude Code menggunakan penanganan gulir miliknya sendiri |


590* Menggunakan [tool advisor](/docs/id/advisor#requirements)591* Menggunakan [tool advisor](/docs/id/advisor#requirements)

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

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

593* Meminta Claude Code memeriksa server konektor claude.ai untuk [revisi protokol MCP 2026-07-28](/docs/id/mcp#mcp-client-runtimes) kecuali Anda mengatur `MCP_PROTOCOL_NEGOTIATION=auto`

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

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

596* 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 penanda596* 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

errors.md +4 −5

Details

386* Server error atau overloaded response yang tiba setelah Claude selesai berpikir tetapi sebelum memulai teks atau panggilan tool apa pun. Claude Code mencoba ulang server error pada titik itu hingga dua kali. Sebelum v2.1.284, Claude Code mengakhiri giliran dengan kesalahan tersebut pada titik itu.386* Server error atau overloaded response yang tiba setelah Claude selesai berpikir tetapi sebelum memulai teks atau panggilan tool apa pun. Claude Code mencoba ulang server error pada titik itu hingga dua kali. Sebelum v2.1.284, Claude Code mengakhiri giliran dengan kesalahan tersebut pada titik itu.

387* Dropped connections. Ketika koneksi terputus di tengah permintaan sebelum Claude menyelesaikan bagian mana pun dari responsnya, termasuk pemikirannya, Claude Code mengeluarkan kembali permintaan dengan backoff yang sama dan giliran berlanjut, bahkan jika beberapa teks telah mulai streaming. Ketika terputus setelah Claude selesai berpikir tetapi sebelum memulai teks atau panggilan tool apa pun, Claude Code malah mengeluarkan kembali permintaan hingga dua kali dengan cepat, dan mengakhiri giliran dengan `Connection lost before a response was produced` jika koneksi terus terputus pada titik itu.387* Dropped connections. Ketika koneksi terputus di tengah permintaan sebelum Claude menyelesaikan bagian mana pun dari responsnya, termasuk pemikirannya, Claude Code mengeluarkan kembali permintaan dengan backoff yang sama dan giliran berlanjut, bahkan jika beberapa teks telah mulai streaming. Ketika terputus setelah Claude selesai berpikir tetapi sebelum memulai teks atau panggilan tool apa pun, Claude Code malah mengeluarkan kembali permintaan hingga dua kali dengan cepat, dan mengakhiri giliran dengan `Connection lost before a response was produced` jika koneksi terus terputus pada titik itu.

388* Koneksi yang Claude Code deteksi rusak karena komputer Anda tidur di tengah permintaan. Claude Code menghitungnya sebagai dropped connection sesuai aturan di atas; setelah label retry menyebutkan alasan spesifik, dibaca `Connection lost while your computer was asleep`, dan jika giliran berakhir setelah Claude selesai berpikir tetapi sebelum teks atau panggilan tool apa pun, pesan berbunyi `Your computer went to sleep before a response was produced`.388* Koneksi yang Claude Code deteksi rusak karena komputer Anda tidur di tengah permintaan. Claude Code menghitungnya sebagai dropped connection sesuai aturan di atas; setelah label retry menyebutkan alasan spesifik, dibaca `Connection lost while your computer was asleep`, dan jika giliran berakhir setelah Claude selesai berpikir tetapi sebelum teks atau panggilan tool apa pun, pesan berbunyi `Your computer went to sleep before a response was produced`.

389* Stalled response stream, ketika response headers telah tiba tetapi tidak ada respons Claude yang tiba, atau ketika Claude selesai berpikir tetapi belum memulai teks atau panggilan tool apa pun: Claude Code membatalkan koneksi yang macet dan mengeluarkan kembali permintaan paling banyak sekali, di luar anggaran 10-percobaan di atas. Jika respons macet untuk kedua kalinya setelah Claude selesai berpikir tetapi sebelum teks atau panggilan tool apa pun, Claude Code mengakhiri giliran dengan `The response stalled before a response was produced`.389* Stalled response stream, ketika response headers telah tiba tetapi tidak ada respons Claude yang tiba, atau ketika Claude selesai berpikir tetapi belum memulai teks atau panggilan tool apa pun: Claude Code membatalkan koneksi yang macet dan melakukan streaming ulang permintaan paling banyak sekali. Jika respons macet untuk kedua kalinya setelah Claude selesai berpikir tetapi sebelum teks atau panggilan tool apa pun, Claude Code mengakhiri giliran dengan `The response stalled before a response was produced`.

390* Streaming request yang API tidak pernah jawab dengan response headers, pada koneksi di mana [first-byte deadline berjalan](/docs/id/network-config#streaming-idle-watchdogs): Claude Code membatalkannya pada deadline dan mengirimnya kembali paling banyak sekali per model request, dalam anggaran retry, kemudian mengakhiri giliran dengan [No response from API](#no-response-from-api) jika percobaan itu juga tidak dijawab. Pada koneksi lain, permintaan menunggu `API_TIMEOUT_MS`. Ketika Anda menetapkan `CLAUDE_CODE_RETRY_WATCHDOG`, batas satu retry tidak berlaku.390* Streaming request yang API tidak pernah jawab dengan response headers, pada koneksi di mana [first-byte deadline berjalan](/docs/id/network-config#streaming-idle-watchdogs): Claude Code membatalkannya pada deadline dan mengirimnya kembali paling banyak sekali per model request, dalam anggaran retry, kemudian mengakhiri giliran dengan [No response from API](#no-response-from-api) jika percobaan itu juga tidak dijawab. Pada koneksi lain, permintaan menunggu `API_TIMEOUT_MS`. Ketika Anda menetapkan `CLAUDE_CODE_RETRY_WATCHDOG`, batas satu retry tidak berlaku.

391* Respons streaming yang dihentikan oleh filter konten output API sebelum Claude selesai berpikir atau memulai teks atau panggilan tool apa pun. Claude Code mengirim kembali permintaan sekali, dalam anggaran retry, dan menampilkan [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) jika filter juga menghentikan respons kedua.391* Respons streaming yang dihentikan oleh filter konten output API sebelum Claude selesai berpikir atau memulai teks atau panggilan tool apa pun. Claude Code mengirim kembali permintaan sekali, dalam anggaran retry, dan menampilkan [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) jika filter juga menghentikan respons kedua.

392* Temporary 429 throttles, tetapi bukan `429` spend-limit gateway, yang bukan throttle; lihat [Spend limit reached](#spend-limit-reached).392* Temporary 429 throttles, tetapi bukan `429` spend-limit gateway, yang bukan throttle; lihat [Spend limit reached](#spend-limit-reached).


4064 Marketplace is already added from a different source4064 Marketplace is already added from a different source

4065</h3>4065</h3>

4066 4066 

4067Anda mengonfirmasi penambahan marketplace melalui [`/plugin install <plugin> --marketplace <source>`](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command), dan katalog yang Claude Code ambil dari sumber itu menamai dirinya sama dengan marketplace yang sudah Anda tambahkan dari sumber berbeda. Claude Code menyimpan marketplace yang ada daripada menggantinya, dan plugin tidak terpasang.4067Anda menyebutkan sumber marketplace baru dengan [`--marketplace <source>` pada perintah install](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command), dalam sesi atau dari shell Anda. Katalog yang Claude Code ambil dari sumber itu memiliki nama yang sama dengan marketplace yang sudah Anda tambahkan dari sumber berbeda. Claude Code menyimpan marketplace yang ada daripada menggantinya, dan plugin tidak terpasang.

4068 4068 

4069```text theme={null}4069```text theme={null}

4070Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.4070Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.


4817 Sesi ini tidak memiliki transkrip yang disimpan4817 Sesi ini tidak memiliki transkrip yang disimpan

4818</h3>4818</h3>

4819 4819 

4820Anda melampirkan ke sesi [latar belakang](/docs/id/agent-view) yang dihentikan yang dilatarbelakangkan dari percakapan lain dengan `←` atau `/background` dan dihentikan sebelum respons pertamanya selesai. Sampai respons pertama itu selesai, percakapan masih hidup hanya dalam sesi tempat ia dilatarbelakangkan, jadi `claude attach` menolak untuk memulai sesi yang dihentikan daripada memulai percakapan kosong di bawah ID sesi yang sama. Pesan berakhir dengan perintah `claude respawn` untuk sesi ini:4820Anda melampirkan ke sesi yang Anda [pindahkan ke latar belakang](/docs/id/agent-view#from-inside-a-session) dengan `←` atau `/background` dan yang berhenti sebelum menjalankan gilirannya sendiri. Claude Code tidak dapat menemukan percakapan tempat Anda memindahkannya, jadi sesi tidak memiliki apa pun untuk dilanjutkan. Pesan berakhir dengan perintah `claude respawn` untuk sesi ini:

4821 4821 

4822```text theme={null}4822```text theme={null}

4823This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.4823This session has no saved transcript — it was stopped before its first response finished. If it was backgrounded from another conversation, that one is still intact; `claude respawn <id>` starts this one fresh.


4827 4827 

4828**Yang harus dilakukan:**4828**Yang harus dilakukan:**

4829 4829 

4830* Percakapan yang Anda latarbelakangkan masih utuh: lanjutkan dengan [`claude --resume`](/docs/id/sessions) atau terus bekerja di dalamnya4830* Untuk memulai sesi yang dihentikan secara segar, jalankan `claude respawn <id>` dengan ID dari pesan, atau tekan `Enter` dua kali pada barisnya dalam tampilan agent

4831* Untuk memulai sesi yang dihentikan segar bagaimanapun, jalankan `claude respawn <id>` dengan ID dari pesan, atau tekan `Enter` dua kali pada barisnya dalam tampilan agent

4832* Jika sesi memang menyelesaikan respons dan Anda masih melihat penolakan ini pada versi sebelum v2.1.214, folder yang tidak dapat dibaca di `~/.claude/projects` dapat membuat pemindaian transkrip melewatkan percakapan yang disimpan; perbarui ke v2.1.214 atau lebih baru, yang mentoleransi folder yang tidak dapat dibaca selama pemindaian4831* Jika sesi memang menyelesaikan respons dan Anda masih melihat penolakan ini pada versi sebelum v2.1.214, folder yang tidak dapat dibaca di `~/.claude/projects` dapat membuat pemindaian transkrip melewatkan percakapan yang disimpan; perbarui ke v2.1.214 atau lebih baru, yang mentoleransi folder yang tidak dapat dibaca selama pemindaian

4833 4832 

4834<h3 id="this-session-is-running-in-another-terminal">4833<h3 id="this-session-is-running-in-another-terminal">

glossary.md +1 −1

Details

511 Worktree isolation511 Worktree isolation

512</h3>512</h3>

513 513 

514Mode isolasi yang menjalankan Claude di git worktree terpisah di bawah `.claude/worktrees/`, diaktifkan dengan bendera `-w` atau `isolation: worktree` dalam config subagent. Perubahan tetap di branch terpisah di direktori terpisah, sehingga agen paralel tidak menimpa file satu sama lain.514Mode isolasi yang menjalankan Claude di git worktree terpisah di bawah `.claude/worktrees/`, diaktifkan dengan flag `-w` atau `isolation: worktree` dalam konfigurasi subagent. Perubahan tetap berada di branch terpisah dalam direktori terpisah, sehingga setiap agent paralel mengedit salinan file miliknya sendiri.

515 515 

516Pelajari lebih lanjut: [Run parallel sessions with git worktrees](/docs/id/worktrees)516Pelajari lebih lanjut: [Run parallel sessions with git worktrees](/docs/id/worktrees)

517 517 

goal.md +1 −1

Details

127claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"127claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

128```128```

129 129 

130Dengan output teks default, tidak ada yang dicetak sampai jalannya berakhir, jadi tujuan yang berjalan banyak giliran dapat terlihat macet. Tambahkan `--output-format stream-json --verbose` untuk memancarkan setiap pesan saat loop berjalan.130Dengan output teks default, respons akhir Claude baru dicetak ketika loop berakhir, jadi tujuan yang berjalan banyak giliran dapat terlihat macet. Tambahkan `--output-format stream-json --verbose` untuk memancarkan setiap pesan saat loop berjalan.

131 131 

132Hentikan proses dengan Ctrl+C untuk menghentikan tujuan non-interaktif sebelum kondisinya terpenuhi.132Hentikan proses dengan Ctrl+C untuk menghentikan tujuan non-interaktif sebelum kondisinya terpenuhi.

133 133 

headless.md +14 −12

Details

20 Penggunaan dasar20 Penggunaan dasar

21</h2>21</h2>

22 22 

23Tambahkan bendera `-p` (atau `--print`) ke perintah `claude` apa pun untuk menjalankannya secara non-interaktif. Tidak semua [opsi CLI](/docs/id/cli-reference) menggabung dengan `-p`. Claude Code menolak `--bg`, dan menolak `--cloud` dengan deskripsi tugas, dengan kesalahan yang menyebutkan konflik; `--cloud` dengan ID sesi dan `-p` sebagai gantinya [antrian pesan ke sesi cloud tersebut](/docs/id/claude-code-on-the-web#send-follow-ups-from-the-cli) dan keluar. Opsi yang akan Anda gabungkan dengan `-p` sering kali mencakup:23Tambahkan flag `-p` (atau `--print`) ke perintah `claude` apa pun untuk menjalankannya secara non-interaktif. Tidak semua [opsi CLI](/docs/id/cli-reference) menggabung dengan `-p`. Claude Code menolak `--bg`, dan menolak `--cloud` dengan deskripsi tugas, dengan kesalahan yang menyebutkan konflik; `--cloud` dengan ID sesi dan `-p` sebagai gantinya [antrian pesan ke sesi cloud tersebut](/docs/id/claude-code-on-the-web#send-follow-ups-from-the-cli) dan keluar. Opsi yang akan Anda gabungkan dengan `-p` sering kali mencakup:

24 24 

25* `--continue` untuk [melanjutkan percakapan](#continue-conversations)25* `--continue` untuk [melanjutkan percakapan](#continue-conversations)

26* `--allowedTools` untuk [persetujuan otomatis alat](#auto-approve-tools)26* `--allowedTools` untuk [persetujuan otomatis tool](#auto-approve-tools)

27* `--output-format` untuk [output terstruktur](#get-structured-output)27* `--output-format` untuk [output terstruktur](#get-structured-output)

28 28 

29Contoh ini menanyakan Claude tentang basis kode Anda dan mencetak respons:29Contoh ini menanyakan Claude tentang basis kode Anda dan mencetak respons:


32claude -p "What does the auth module do?"32claude -p "What does the auth module do?"

33```33```

34 34 

35Claude Code keluar dengan kode 0 saat berhasil dan kode bukan nol ketika jalankan gagal, sehingga skrip Anda dapat bercabang pada status keluar. Jika Anda melewatkan bendera yang tidak valid, Claude Code melaporkan kesalahan ke stderr sebelum jalankan dimulai. Ketika kegagalan terjadi di dalam jalankan, seperti autentikasi yang hilang, Claude Code mencetak kegagalan sebagai hasil pada stdout.35Claude Code keluar dengan kode 0 saat berhasil dan kode bukan nol ketika jalankan gagal, sehingga skrip Anda dapat bercabang pada status keluar. Jika Anda melewatkan flag yang tidak valid, Claude Code melaporkan kesalahan ke stderr sebelum jalankan dimulai. Ketika kegagalan terjadi di dalam jalankan, seperti autentikasi yang hilang, Claude Code mencetak kegagalan sebagai hasil pada stdout.

36 36 

37<h3 id="start-faster-with-bare-mode">37<h3 id="start-faster-with-bare-mode">

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


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 

45Tanpa `--bare`, sesi `-p` menjalankan hooks di `.claude/settings.json` proyek dan menghubungkan server di `.mcp.json` nya, bahkan di folder yang belum pernah Anda percayai. Sesi `-p` tidak menampilkan dialog kepercayaan ruang kerja dan tidak ada prompt persetujuan per-server. [Apa yang berjalan sebelum Anda mempercayai folder](/docs/id/permissions#what-runs-before-you-trust-a-folder) mencakup setiap jenis konten repositori di bawah `-p` dan cara menjaganya tetap keluar.45Tanpa `--bare`, sesi `-p` menjalankan hooks di `.claude/settings.json` proyek dan menghubungkan server di `.mcp.json` nya, bahkan di folder yang belum pernah Anda percayai. Sesi `-p` tidak menampilkan dialog kepercayaan workspace dan tidak ada permintaan persetujuan per-server. [Apa yang berjalan sebelum Anda mempercayai folder](/docs/id/permissions#what-runs-before-you-trust-a-folder) mencakup setiap jenis konten repositori di bawah `-p` dan cara menjaganya tetap keluar.

46 46 

47Contoh ini menjalankan tugas ringkasan sekali pakai dalam bare mode dan pra-menyetujui alat Read sehingga panggilan selesai tanpa prompt izin. Atur `ANTHROPIC_API_KEY` sebelum menjalankannya, karena bare mode tidak menggunakan login langganan Anda:47Contoh ini menjalankan tugas ringkasan sekali pakai dalam bare mode dan pra-menyetujui tool Read sehingga panggilan selesai tanpa permintaan izin. Atur `ANTHROPIC_API_KEY` sebelum menjalankannya, karena bare mode tidak menggunakan login langganan Anda:

48 48 

49```bash theme={null}49```bash theme={null}

50claude --bare -p "Summarize README.md" --allowedTools "Read"50claude --bare -p "Summarize README.md" --allowedTools "Read"


52 52 

53Dalam bare mode, Claude Code tidak pernah membaca kredensial OAuth atau keychain sistem. Untuk Anthropic API, atur `ANTHROPIC_API_KEY` di lingkungan, dengan kunci yang dibuat di [Claude Console](https://platform.claude.com), atau berikan `apiKeyHelper` di JSON `--settings`. Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry terus membaca kredensial penyedia mereka sendiri seperti biasanya.53Dalam bare mode, Claude Code tidak pernah membaca kredensial OAuth atau keychain sistem. Untuk Anthropic API, atur `ANTHROPIC_API_KEY` di lingkungan, dengan kunci yang dibuat di [Claude Console](https://platform.claude.com), atau berikan `apiKeyHelper` di JSON `--settings`. Amazon Bedrock, Google Cloud's Agent Platform, dan Microsoft Foundry terus membaca kredensial penyedia mereka sendiri seperti biasanya.

54 54 

55Dalam bare mode Claude memiliki akses ke alat Bash, pembacaan file, dan pengeditan file. Berikan konteks apa pun yang Anda butuhkan dengan bendera:55Dalam bare mode Claude memiliki akses ke tool Bash, pembacaan file, dan pengeditan file. Berikan konteks apa pun yang Anda butuhkan dengan flag:

56 56 

57| Untuk memuat | Gunakan |57| Untuk memuat | Gunakan |

58| - | - |58| - | - |

59| Penambahan prompt sistem | `--append-system-prompt`, `--append-system-prompt-file` |59| Penambahan system prompt | `--append-system-prompt`, `--append-system-prompt-file` |

60| Pengaturan | `--settings <file-or-json>` |60| Pengaturan | `--settings <file-or-json>` |

61| Server MCP | `--mcp-config <file-or-json>` |61| Server MCP | `--mcp-config <file-or-json>` |

62| [Agent kustom](/docs/id/sub-agents#choose-the-subagent-scope) | `--agents <file-or-json>` |62| [Agent kustom](/docs/id/sub-agents#choose-the-subagent-scope) | `--agents <file-or-json>` |


84 84 

85Eksekusi menunggu pekerjaan latar belakang seperti perintah latar belakang, subagent dan workflow, watch Monitor, serta wakeup `/loop` yang tertunda:85Eksekusi menunggu pekerjaan latar belakang seperti perintah latar belakang, subagent dan workflow, watch Monitor, serta wakeup `/loop` yang tertunda:

86 86 

87* **[Perintah latar belakang](/docs/id/tools-reference#background-commands)**: untuk perintah yang dimulai oleh percakapan utama, misalnya server dev atau build watch, eksekusi menunggu hingga perintah tersebut keluar atau mencapai [batas waktunya](/docs/id/tools-reference#time-limit-for-background-commands). Claude kemudian mengambil satu giliran lagi dengan hasilnya, dan hasil giliran tersebut menjadi hasil terakhir eksekusi, yaitu hasil yang dicetak oleh output `text` dan `json`. Selama perintah berjalan, batas 10 menit tidak mengakhiri penantian.87* **[Perintah latar belakang](/docs/id/tools-reference#background-commands)**: untuk perintah yang dimulai oleh percakapan utama, misalnya server dev atau build watch, eksekusi menunggu hingga perintah tersebut keluar atau mencapai [batas waktunya](/docs/id/tools-reference#time-limit-for-background-commands). Claude kemudian mengambil satu giliran lagi dengan hasilnya. Selama perintah berjalan, batas 10 menit tidak mengakhiri penantian.

88* **[Subagent](/docs/id/sub-agents) dan workflow latar belakang**: eksekusi tetap terbuka hingga pekerjaan tersebut selesai, karena hasilnya adalah bagian dari output akhir.88* **[Subagent](/docs/id/sub-agents) dan workflow latar belakang**: eksekusi tetap terbuka hingga pekerjaan tersebut selesai, karena hasilnya adalah bagian dari output akhir.

89* **Watch [Monitor](/docs/id/tools-reference#monitor-tool)**: eksekusi menunggu hingga watch mencapai timeout atau batas 10 menit mengakhiri penantian, mana pun yang terjadi lebih dulu. Selama menunggu, Claude terus merespons apa yang dilaporkan watch. Secara default, watch mencapai timeout lima menit setelah Claude memulainya.89* **Watch [Monitor](/docs/id/tools-reference#monitor-tool)**: eksekusi menunggu hingga watch mencapai timeout atau batas 10 menit mengakhiri penantian, mana pun yang terjadi lebih dulu. Selama menunggu, Claude terus merespons apa yang dilaporkan watch. Secara default, watch mencapai timeout lima menit setelah Claude memulainya.

90* **Wakeup yang tertunda**: dalam eksekusi yang prompt-nya Anda berikan sebagai teks alih-alih dengan `--input-format stream-json`, ketika Claude telah menjadwalkan [wakeup `/loop` dengan tempo sendiri](/docs/id/scheduled-tasks#let-claude-choose-the-interval), eksekusi menunggu setiap wakeup terpicu dan menjalankan iterasinya hingga [loop berakhir](/docs/id/scheduled-tasks#stop-a-loop), bahkan melewati batas 10 menit.90* **Wakeup yang tertunda**: dalam eksekusi yang prompt-nya Anda berikan sebagai teks alih-alih dengan `--input-format stream-json`, ketika Claude telah menjadwalkan [wakeup `/loop` dengan tempo sendiri](/docs/id/scheduled-tasks#let-claude-choose-the-interval), eksekusi menunggu setiap wakeup terpicu dan menjalankan iterasinya hingga [loop berakhir](/docs/id/scheduled-tasks#stop-a-loop), bahkan melewati batas 10 menit.

91 91 

92Jika eksekusi mencapai batas [`--max-budget-usd`](/docs/id/cli-reference#cli-flags), Claude Code menghentikan pekerjaan latar belakang yang tersisa alih-alih menunggu.92Jika eksekusi mencapai batas [`--max-budget-usd`](/docs/id/cli-reference#cli-flags), Claude Code menghentikan pekerjaan latar belakang yang tersisa alih-alih menunggu.

93 93 

94Ketika pekerjaan latar belakang memulai giliran lain, eksekusi mencetak hasil setiap giliran dengan output `text` default dan hasil giliran terakhir dengan output `json`. Sebelum v2.1.295, eksekusi juga hanya mencetak hasil giliran terakhir dengan output `text`.

95 

94<h3 id="stop-a-run-with-sigterm">96<h3 id="stop-a-run-with-sigterm">

95 Hentikan jalankan dengan SIGTERM97 Hentikan jalankan dengan SIGTERM

96</h3>98</h3>

97 99 

98Jika Anda menghentikan jalankan `claude -p` dengan SIGTERM, misalnya dengan `kill` atau dari pengawas proses, Claude Code keluar dengan kode 143. Claude Code meninggalkan giliran yang sedang berlangsung tidak selesai dan tidak mencatat hasil untuknya. Untuk mengakhiri giliran sebagai gantinya, kirim SIGINT, atau panggil `interrupt()` Agent SDK, sebelum Anda menghentikan proses.100Jika Anda menghentikan jalankan `claude -p` dengan SIGTERM, misalnya dengan `kill` atau dari pengawas proses, Claude Code keluar dengan kode 143. Claude Code meninggalkan giliran yang sedang berlangsung tidak selesai dan tidak mencatat hasil untuknya. Untuk mengakhiri giliran sebagai gantinya, kirim SIGINT, atau panggil `interrupt()` Agent SDK, sebelum Anda menghentikan proses.

99 101 

100Pada SIGTERM, Claude Code menghentikan pohon proses dari perintah Bash apa pun yang masih berjalan. Claude Code kemudian menjalankan [`SessionEnd` hooks](/docs/id/hooks#sessionend) dan keluar. Saat keluar, Claude Code tidak memulai panggilan alat baru, tidak mengirim permintaan model baru, dan tidak menjalankan hook selain `SessionEnd`. Jika jalankan berada di tengah perintah atau menunggu jawaban untuk prompt izin ketika sinyal tiba, Claude Code menangani langkah itu sebagai berikut:102Pada SIGTERM, Claude Code menghentikan pohon proses dari perintah Bash apa pun yang masih berjalan. Claude Code kemudian menjalankan [`SessionEnd` hooks](/docs/id/hooks#sessionend) dan keluar. Saat keluar, Claude Code tidak memulai panggilan tool baru, tidak mengirim permintaan model baru, dan tidak menjalankan hook selain `SessionEnd`. Jika jalankan berada di tengah perintah atau menunggu permintaan izin ketika sinyal tiba, Claude Code menangani langkah itu sebagai berikut:

101 103 

102* **Menjalankan perintah**: Claude Code mencatat perintah sebagai terbunuh dalam sesi.104* **Menjalankan perintah**: Claude Code mencatat perintah sebagai terbunuh dalam sesi.

103* **Menunggu jawaban untuk prompt izin**: jika Anda mengirim SIGTERM ke proses, Claude Code meninggalkan prompt tanpa jawaban. Jika program Anda menutup sesi melalui Agent SDK, SDK mengakhiri input Claude Code sebelum mengirim sinyal apa pun, dan Claude Code membatalkan prompt segera setelah input berakhir.105* **Menunggu jawaban untuk permintaan izin**: jika Anda mengirim SIGTERM ke proses, Claude Code meninggalkan permintaan tersebut tanpa jawaban. Jika program Anda menutup sesi melalui Agent SDK, SDK mengakhiri input Claude Code sebelum mengirim sinyal apa pun, dan Claude Code membatalkan permintaan tersebut segera setelah input berakhir.

104 106 

105Ketika Anda [melanjutkan sesi](#continue-conversations), Claude Code meninggalkan giliran yang terputus seperti apa adanya, dan prompt berikutnya Anda mendorong percakapan. Untuk membuat Claude Code melanjutkan giliran yang terputus saat resume, atur [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN=1`](/docs/id/env-vars).107Ketika Anda [melanjutkan sesi](#continue-conversations), Claude Code meninggalkan giliran yang terputus seperti apa adanya, dan prompt berikutnya Anda mendorong percakapan. Untuk membuat Claude Code melanjutkan giliran yang terputus saat resume, atur [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN=1`](/docs/id/env-vars).

106 108 


262| `type` | `"system"` | tipe pesan |264| `type` | `"system"` | tipe pesan |

263| `subtype` | `"api_retry"` | mengidentifikasi ini sebagai acara percobaan ulang |265| `subtype` | `"api_retry"` | mengidentifikasi ini sebagai acara percobaan ulang |

264| `attempt` | integer | nomor percobaan saat ini, dimulai dari 1 |266| `attempt` | integer | nomor percobaan saat ini, dimulai dari 1 |

265| `max_retries` | integer | total percobaan ulang yang diizinkan untuk penyebab kegagalan ini, yang dapat lebih sedikit dari anggaran seluruh sesi |267| `max_retries` | integer | total percobaan ulang yang diizinkan untuk penyebab kegagalan ini |

266| `retry_delay_ms` | integer | milidetik hingga percobaan berikutnya |268| `retry_delay_ms` | integer | milidetik hingga percobaan berikutnya |

267| `error_status` | integer atau null | kode status HTTP dari percobaan yang gagal, atau `null` ketika percobaan tidak mendapat respons HTTP dari API |269| `error_status` | integer atau null | kode status HTTP dari percobaan yang gagal, atau `null` ketika percobaan tidak mendapat respons HTTP dari API |

268| `no_response` | object, opsional | hadir hanya ketika percobaan yang gagal mendapat [tidak ada header respons tepat waktu](/docs/id/errors#no-response-from-api). `waited_ms` adalah berapa lama percobaan itu menunggu dan `retry_wait_ms` adalah berapa lama percobaan ulang akan menunggu. Dalam acara ini, `max_retries` mencerminkan satu percobaan ulang yang biasanya didapat penyebab ini, bukan anggaran seluruh sesi. Memerlukan Claude Code v2.1.261 atau lebih baru |270| `no_response` | object, opsional | hadir hanya ketika percobaan yang gagal mendapat [tidak ada header respons tepat waktu](/docs/id/errors#no-response-from-api). `waited_ms` adalah berapa lama percobaan itu menunggu dan `retry_wait_ms` adalah berapa lama percobaan ulang akan menunggu. Memerlukan Claude Code v2.1.261 atau lebih baru |

269| `error` | string | kategori kesalahan: `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |271| `error` | string | kategori kesalahan: `authentication_failed`, `oauth_org_not_allowed`, `account_on_hold`, `billing_error`, `rate_limit`, `overloaded`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `cloud_credential_error`, atau `unknown` |

270| `uuid` | string | pengidentifikasi acara unik |272| `uuid` | string | pengidentifikasi acara unik |

271| `session_id` | string | sesi yang dimiliki acara |273| `session_id` | string | sesi yang dimiliki acara |

hooks.md +19 −8

Details

1237 Kontrol keputusan SessionStart1237 Kontrol keputusan SessionStart

1238</h4>1238</h4>

1239 1239 

1240Claude Code menambahkan stdout yang [diperlakukannya sebagai teks biasa](#exit-code-0) ke konteks Claude. Selain [field output JSON](#json-output) yang tersedia untuk semua hook, Anda dapat mengembalikan field khusus event berikut:1240Hook 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:

1241 1241 

1242| Field | Deskripsi |1242| Field | Deskripsi |

1243| :- | :- |1243| :- | :- |

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

1245| `initialUserMessage` | String yang digunakan sebagai pesan pengguna pertama dalam sesi. Berlaku dalam [mode non-interaktif](/docs/id/headless) dengan flag `-p`, tempat string ini menjadi giliran pertama bahkan jika tidak ada prompt yang diberikan. Jika prompt diberikan, prompt tersebut menyusul sebagai giliran berikutnya. Tidak seperti `additionalContext`, yang melekat pada giliran yang sudah ada, field ini membuat giliran tersebut |1245| `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 |

1246| `sessionTitle` | Menetapkan judul sesi, dengan efek yang sama seperti `/rename`. Gunakan untuk memberi nama sesi secara otomatis dari folder peluncuran, branch git, atau nama worktree. Berlaku saat `source` bernilai `"startup"`, `"resume"`, atau `"fork"`; diabaikan pada `"clear"` dan `"compact"` |1246| `sessionTitle` | Menetapkan judul sesi, dengan efek yang sama seperti `/rename`. Berlaku ketika `source` bernilai `"startup"`, `"resume"`, atau `"fork"` |

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

1248| `reloadSkills` | Boolean. Saat `true`, Claude Code memindai ulang direktori [skill](/docs/id/skills) dan perintah setelah hook SessionStart selesai, sehingga skill yang dipasang oleh hook tersedia dalam sesi yang sama, dimulai dari prompt pertama |1248| `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) |

1249 

1250Output ini menambahkan konteks dan memberi nama sesi:

1249 1251 

1250```json theme={null}1252```json theme={null}

1251{1253{


1257}1259}

1258```1260```

1259 1261 

1260Karena stdout biasa sudah sampai ke Claude untuk event ini, hook yang hanya memuat konteks dapat langsung mencetak ke stdout tanpa membuat JSON. Gunakan bentuk JSON saat Anda perlu menggabungkan konteks dengan field lain seperti `sessionTitle`.1262Hook 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.

1263 

1264Jika 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.

1265 

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

1267 Memuat ulang skill yang dipasang hook

1268</h4>

1269 

1270Agar 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.

1261 1271 

1262Gunakan `reloadSkills` saat hook SessionStart memasang atau memperbarui skill. Penemuan skill biasanya berjalan sebelum hook SessionStart selesai, sehingga file yang ditulis hook ke `~/.claude/skills/` atau `.claude/skills/` jika tidak demikian hanya akan muncul di sesi berikutnya. Contoh ini menyinkronkan repositori skill bersama dan meminta pemindaian ulang:1272Contoh ini menyinkronkan repositori skill bersama dan meminta pemindaian ulang:

1263 1273 

1264```bash theme={null}1274```bash theme={null}

1265#!/bin/bash1275#!/bin/bash


1270echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'1280echo '{"hookSpecificOutput": {"hookEventName": "SessionStart", "reloadSkills": true}}'

1271```1281```

1272 1282 

1273URL repositori tersebut adalah placeholder; ganti dengan repositori skill Anda sendiri. Dengan placeholder tersebut, clone gagal dan mencetak pesan `fatal:` ke stderr. Stderr dari hook SessionStart yang keluar dengan 0 hanya bersifat informasional, sehingga permintaan `reloadSkills` tetap berlaku.1283URL repositori tersebut adalah placeholder. Ganti dengan repositori skill Anda sendiri.

1274 1284 

1275<h4 id="persist-environment-variables">1285<h4 id="persist-environment-variables">

1276 Mempertahankan environment variable1286 Mempertahankan environment variable


1860| :- | :- | :- | :- |1870| :- | :- | :- | :- |

1861| `url` | string | `"https://example.com/api"` | URL tempat konten diambil |1871| `url` | string | `"https://example.com/api"` | URL tempat konten diambil |

1862| `prompt` | string | `"Extract the API endpoints"` | Prompt yang dijalankan pada konten yang diambil |1872| `prompt` | string | `"Extract the API endpoints"` | Prompt yang dijalankan pada konten yang diambil |

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

1863 1874 

1864<h5 id="websearch">1875<h5 id="websearch">

1865 WebSearch1876 WebSearch


4279Async hooks memiliki batasan tambahan dibandingkan dengan hooks sinkron:4290Async hooks memiliki batasan tambahan dibandingkan dengan hooks sinkron:

4280 4291 

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

4282* Setiap eksekusi membuat proses latar belakang terpisah. Tidak ada deduplikasi di seluruh beberapa penjalankan hook async yang sama.4293* Setiap eksekusi membuat proses latar belakang terpisah.

4283 4294 

4284<h2 id="security-considerations">4295<h2 id="security-considerations">

4285 Pertimbangan keamanan4296 Pertimbangan keamanan

mcp.md +1 −1

Details

367 367 

368Di v2, Claude Code juga:368Di v2, Claude Code juga:

369 369 

370* Menanyakan server HTTP dan stdio apakah mereka mendukung revisi yang lebih baru, dan menggunakannya dengan server yang mendukungnya. Dalam sesi tempat ia mengambil feature flag, ia juga menanyakan server konektor claude.ai. Ia terhubung ke setiap server lain seperti yang dilakukan v1.370* Menanyakan server HTTP, stdio, dan konektor claude.ai apakah mereka mendukung revisi yang lebih baru, dan menggunakannya dengan server yang mendukungnya. Ia terhubung ke setiap server lain seperti yang dilakukan v1.

371* Menerima notifikasi `list_changed` dari server pada revisi yang lebih baru melalui [stream yang dipertahankan terbuka](#notification-streams-on-the-v2-runtime).371* Menerima notifikasi `list_changed` dari server pada revisi yang lebih baru melalui [stream yang dipertahankan terbuka](#notification-streams-on-the-v2-runtime).

372* Tidak mendaftarkan server [channel](#push-messages-with-channels) yang terhubung pada revisi yang lebih baru, karena revisi itu tidak dapat membawa pesan channel.372* Tidak mendaftarkan server [channel](#push-messages-with-channels) yang terhubung pada revisi yang lebih baru, karena revisi itu tidak dapat membawa pesan channel.

373* Menggagalkan [login OAuth MCP](#authenticate-with-remote-mcp-servers) yang respons otorisasinya menyebutkan penerbit yang tidak terduga.373* Menggagalkan [login OAuth MCP](#authenticate-with-remote-mcp-servers) yang respons otorisasinya menyebutkan penerbit yang tidak terduga.

Details

599 599 

600Dalam sesi yang masuk ke [gateway aplikasi Claude](/docs/id/claude-apps-gateway) melalui `/login`, CLI memberi stempel ekspor dengan identitas terautentikasi: `user.id` adalah subjek IdP, `user.email` adalah email yang masuk, dan `user.groups` membawa keanggotaan grup IdP sebagai string yang dipisahkan koma. Setiap ekspor juga membawa `identity.source: gateway-oidc`. Identitas gateway diterapkan terakhir, jadi kunci `user.*` dan `identity.*` yang ditetapkan melalui `OTEL_RESOURCE_ATTRIBUTES` diabaikan pada sesi gateway.600Dalam sesi yang masuk ke [gateway aplikasi Claude](/docs/id/claude-apps-gateway) melalui `/login`, CLI memberi stempel ekspor dengan identitas terautentikasi: `user.id` adalah subjek IdP, `user.email` adalah email yang masuk, dan `user.groups` membawa keanggotaan grup IdP sebagai string yang dipisahkan koma. Setiap ekspor juga membawa `identity.source: gateway-oidc`. Identitas gateway diterapkan terakhir, jadi kunci `user.*` dan `identity.*` yang ditetapkan melalui `OTEL_RESOURCE_ATTRIBUTES` diabaikan pada sesi gateway.

601 601 

602<Note>

603 Event yang dicatat Claude Code sebelum pengembang masuk tidak memuat identitas gateway. Ketika Claude Code membuka sesi dalam keadaan keluar dari gateway, misalnya setelah [gateway mengakhiri proses masuk](/docs/id/errors#cloud-gateway-session-expired), event startup yang dicatat sebelum masuk memuat `user.id` anonim dan tidak memuat `identity.source`. Event ini mencakup [`managed_settings_resolved`](#managed-settings-resolved-event), [`plugin_loaded`](#plugin-loaded-event), dan [`mcp_server_connection`](#mcp-server-connection-event).

604</Note>

605 

602Untuk atribut identitas pada sesi Claude Desktop dan Cowork yang terhubung melalui gateway, lihat [referensi `telemetry` gateway](/docs/id/claude-apps-gateway-config#telemetry).606Untuk atribut identitas pada sesi Claude Desktop dan Cowork yang terhubung melalui gateway, lihat [referensi `telemetry` gateway](/docs/id/claude-apps-gateway-config#telemetry).

603 607 

604Peristiwa juga menyertakan atribut berikut. Ini tidak pernah dilampirkan ke metrik karena akan menyebabkan kardinalitas tak terbatas:608Peristiwa juga menyertakan atribut berikut. Ini tidak pernah dilampirkan ke metrik karena akan menyebabkan kardinalitas tak terbatas:


917* `error`: Pesan kesalahan921* `error`: Pesan kesalahan

918* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP seperti kegagalan koneksi.922* `status_code`: Kode status HTTP sebagai angka. Tidak ada untuk kesalahan non-HTTP seperti kegagalan koneksi.

919* `duration_ms`: Durasi permintaan dalam milidetik923* `duration_ms`: Durasi permintaan dalam milidetik

920* `attempt`: Jumlah total upaya yang dilakukan, termasuk permintaan awal (`1` berarti tidak ada pengulangan yang terjadi)924* `attempt`: Jumlah percobaan yang dilakukan, termasuk permintaan awal. [Mendeteksi retry yang habis](#detect-retry-exhaustion) menjelaskan kapan hitungan dimulai lagi

921* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bawah [Atribut korelasi peristiwa](#event-correlation-attributes).925* `request_id`: ID permintaan API, seperti `"req_011..."`, dijelaskan di bawah [Atribut korelasi peristiwa](#event-correlation-attributes).

922* `client_request_id`: UUID yang dihasilkan klien dikirim sebagai header permintaan `x-client-request-id`. Tersedia bahkan ketika kegagalan seperti timeout atau kesalahan koneksi tidak pernah menghasilkan `request_id` server; lihat tabel [atribut korelasi peristiwa](#event-correlation-attributes) untuk kapan ada. Memerlukan Claude Code v2.1.214 atau lebih baru926* `client_request_id`: UUID yang dihasilkan klien dikirim sebagai header permintaan `x-client-request-id`. Tersedia bahkan ketika kegagalan seperti timeout atau kesalahan koneksi tidak pernah menghasilkan `request_id` server; lihat tabel [atribut korelasi peristiwa](#event-correlation-attributes) untuk kapan ada. Memerlukan Claude Code v2.1.214 atau lebih baru

923* `speed`: `"fast"` atau `"normal"`, menunjukkan apakah mode cepat aktif927* `speed`: `"fast"` atau `"normal"`, menunjukkan apakah mode cepat aktif


1528 1532 

1529Claude Code mencoba ulang permintaan API yang gagal secara internal dan hanya memancarkan acara `claude_code.api_error` tunggal setelah menyerah, jadi acara itu sendiri adalah sinyal terminal untuk permintaan tersebut. Upaya retry perantara tidak dicatat sebagai acara terpisah.1533Claude Code mencoba ulang permintaan API yang gagal secara internal dan hanya memancarkan acara `claude_code.api_error` tunggal setelah menyerah, jadi acara itu sendiri adalah sinyal terminal untuk permintaan tersebut. Upaya retry perantara tidak dicatat sebagai acara terpisah.

1530 1534 

1531Atribut `attempt` pada acara mencatat berapa banyak upaya yang dilakukan secara total. `CLAUDE_CODE_MAX_RETRIES` default ke 10 dan dibatasi pada 15. Pada v2.1.199 atau lebih baru, Anda dapat mengatur `CLAUDE_CODE_RETRY_WATCHDOG` untuk menaikkan default dan menghapus batas.1535Atribut `attempt` pada acara mencatat jumlah upaya. `CLAUDE_CODE_MAX_RETRIES` default ke 10 dan dibatasi pada 15. Pada v2.1.199 atau lebih baru, Anda dapat mengatur `CLAUDE_CODE_RETRY_WATCHDOG` untuk menaikkan default dan menghapus batas.

1536 

1537Ketika permintaan menghabiskan semua retry pada kesalahan transien, `attempt` paling banyak satu lebih dari batas efektif tersebut: 11 secara default.

1532 1538 

1533Ketika permintaan menghabiskan semua retry pada kesalahan transien, `attempt` sama dengan satu lebih dari batas efektif tersebut: 11 secara default, dan tidak pernah lebih dari 16 kecuali watchdog diatur. Nilai yang lebih rendah menunjukkan kesalahan yang tidak dapat dicoba ulang seperti respons `400`, atau penyebab dengan anggaran retry yang lebih kecil. Misalnya, Claude Code mencoba ulang kegagalan untuk memuat kredensial AWS atau Google Cloud paling banyak dua kali.1539Nilai yang lebih rendah tetap dapat berarti retry telah habis: `attempt` dimulai lagi dari `1` setiap kali Claude Code mengirim ulang permintaan setelah kegagalan streaming.

1534 1540 

1535Untuk membedakan sesi yang pulih dari sesi yang terhenti, kelompokkan acara berdasarkan `session.id` dan periksa apakah acara `api_request` yang lebih baru ada setelah kesalahan.1541Untuk membedakan sesi yang pulih dari sesi yang terhenti, kelompokkan acara berdasarkan `session.id` dan periksa apakah acara `api_request` yang lebih baru ada setelah kesalahan.

1536 1542 

Details

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` | Terima perintah instal yang ditampilkan tanpa prompt `Run this command now?`. Diabaikan ketika perintah berjalan di dalam sesi Claude Code, seperti dari tool Bash atau hook. Memerlukan Claude Code v2.1.229 atau lebih baru |

92| `--accept-command <sha256>` | Terima perintah instal yang ditampilkan yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Lihat [Terima perintah instal yang ditampilkan](#accept-a-displayed-install-command). Memerlukan Claude Code v2.1.271 atau lebih baru |92| `--accept-command <sha256>` | Terima perintah instal yang ditampilkan yang `sha256` sebelumnya [`--json` run](#plugin-json-result) dilaporkan dalam `shownCommand`, sebagai pengganti `-y`. Tidak dapat digabungkan dengan `-y`. Lihat [Terima perintah instal yang ditampilkan](#accept-a-displayed-install-command). Memerlukan Claude Code v2.1.271 atau lebih baru |

93| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [Format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |93| `--json` | Cetak hasil sebagai satu objek JSON pada baris terakhir stdout alih-alih pesan yang dapat dibaca manusia, untuk digunakan dalam skrip. Lihat [Format hasil JSON](#plugin-json-result). Memerlukan Claude Code v2.1.268 atau lebih baru |

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

95Jalankan `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.

96 97 

Details

189 189 

190* **Scope**: cakupan pengguna secara default. Lewatkan `--scope project` atau `--scope local` untuk mengubahnya.190* **Scope**: cakupan pengguna secara default. Lewatkan `--scope project` atau `--scope local` untuk mengubahnya.

191* **When the plugins load**: plugin yang diinstalnya memuat lain kali Anda memulai Claude Code, atau ketika Anda menjalankan `/reload-plugins` dalam sesi yang sudah terbuka.191* **When the plugins load**: plugin yang diinstalnya memuat lain kali Anda memulai Claude Code, atau ketika Anda menjalankan `/reload-plugins` dalam sesi yang sudah terbuka.

192* **The marketplace must be added first**: di mesin di mana tidak ada yang telah membuka sesi Claude Code interaktif, marketplace resmi tidak terdaftar, jadi skrip yang menginstal darinya menjalankan `claude plugin marketplace add anthropics/claude-plugins-official` sebelum instalasi.192* **The marketplace on a new machine**: di mesin di mana belum ada yang membuka sesi Claude Code interaktif, marketplace resmi tidak terdaftar, jadi skrip yang menginstal darinya menjalankan `claude plugin marketplace add anthropics/claude-plugins-official` sebelum instalasi. Lihat [Tambahkan dan instal dari shell Anda](#add-and-install-from-your-shell).

193 193 

194```bash theme={null}194```bash theme={null}

195claude plugin install formatter@your-org --scope project195claude plugin install formatter@your-org --scope project


232 Tambahkan marketplace dan instal dalam satu perintah232 Tambahkan marketplace dan instal dalam satu perintah

233</h3>233</h3>

234 234 

235Untuk menginstal plugin dari marketplace yang belum Anda tambahkan, jalankan `/plugin install` dalam sesi Claude Code dan namai sumber marketplace dengan `--marketplace`. Memerlukan Claude Code v2.1.275 atau lebih baru.235Untuk menginstal plugin dari marketplace yang belum Anda tambahkan, sebutkan sumber marketplace dengan `--marketplace` pada perintah instal, dalam sesi atau dari shell Anda. Sumber mengambil [bentuk yang sama seperti `/plugin marketplace add`](#add-a-marketplace), seperti GitHub `owner/repo`, URL git, atau jalur lokal. Berikan nama plugin sendiri, tanpa akhiran `@marketplace`.

236 

237<h4 id="add-and-install-in-a-session">

238 Tambahkan dan instal dalam sesi

239</h4>

240 

241Jalankan `/plugin install` dalam sesi Claude Code dengan plugin dan sumbernya. Memerlukan Claude Code v2.1.275 atau lebih baru. Dalam sesi, sumber tidak dapat berisi spasi.

236 242 

237```text theme={null}243```text theme={null}

238/plugin install deploy-helper --marketplace your-org/plugins244/plugin install deploy-helper --marketplace your-org/plugins

239```245```

240 246 

241Sumber mengambil [bentuk yang sama seperti `/plugin marketplace add`](#add-a-marketplace), seperti GitHub `owner/repo`, URL git, atau jalur lokal, kecuali bahwa tidak dapat berisi spasi. Berikan nama plugin sendiri, tanpa akhiran `@marketplace`.

242 

243Jika Anda belum menambahkan marketplace itu, Claude Code menunjukkan sumber yang diselesaikan dan meminta Anda mengonfirmasi sebelum menambahkannya. Setelah marketplace ditambahkan, detail plugin membuka dan Anda memilih [cakupan instalasi](#install-a-plugin). Jika sumber cocok dengan marketplace yang sudah Anda tambahkan, Claude Code melewati konfirmasi dan membuka detail plugin di marketplace itu.247Jika Anda belum menambahkan marketplace itu, Claude Code menunjukkan sumber yang diselesaikan dan meminta Anda mengonfirmasi sebelum menambahkannya. Setelah marketplace ditambahkan, detail plugin membuka dan Anda memilih [cakupan instalasi](#install-a-plugin). Jika sumber cocok dengan marketplace yang sudah Anda tambahkan, Claude Code melewati konfirmasi dan membuka detail plugin di marketplace itu.

244 248 

249<h4 id="add-and-install-from-your-shell">

250 Tambahkan dan instal dari shell Anda

251</h4>

252 

253Di shell Anda, tanpa memulai sesi, jalankan `claude plugin install` dengan plugin dan sumbernya. Memerlukan Claude Code v2.1.292 atau lebih baru.

254 

255```bash theme={null}

256claude plugin install deploy-helper --marketplace your-org/plugins

257```

258 

259Perintah shell menambahkan marketplace tanpa langkah konfirmasi. Marketplace yang sudah Anda tambahkan dari sumber tersebut digunakan kembali. Marketplace baru ditambahkan dengan [pemeriksaan kebijakan organisasi](/docs/id/plugins/org#restrict-what-users-can-install) yang sama seperti `claude plugin marketplace add`, dan dideklarasikan di pengaturan pengguna Anda bahkan ketika Anda meneruskan `--scope project`.

260 

245<h3 id="add-a-private-marketplace">261<h3 id="add-a-private-marketplace">

246 Tambahkan marketplace pribadi262 Tambahkan marketplace pribadi

247</h3>263</h3>

Details

138| `$.mcp.call` | Memanggil alat pada server MCP yang terhubung, di bawah aturan izin sesi |138| `$.mcp.call` | Memanggil alat pada server MCP yang terhubung, di bawah aturan izin sesi |

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

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

141| `$.session.send` | Mengirimkan pesan yang dibaca sesi lain atau subagen Claude |141| `$.session.send` | Mengirimkan pesan yang dibaca oleh Claude milik sesi lain, subagent, atau [rekan tim](/docs/id/agent-teams) |

142 142 

143Dalam baris `hooks:`, [`tool.call`](/docs/id/plugins/mods/reference#tools) dan [`prompt.submit`](/docs/id/plugins/mods/reference#prompts-and-what-claude-reads) berarti mod melihat setiap panggilan alat dan setiap prompt, dan dapat mengubahnya. [`session.append`](/docs/id/plugins/mods/reference#session) berarti mod dapat menulis ulang setiap baris percakapan sebelum disimpan. [`ui.render{component=AskUserQuestion}`](/docs/id/plugins/mods/interface#change-what-claude-code-already-draws) berarti mod dapat menggambar ulang dialog yang digunakan Claude untuk menanyakan pengguna. `tool.check` berarti mod dapat menyetujui atau menolak panggilan alat sebelum prompt izin muncul. [Ketahui apa yang terjadi secara default](#know-what-happens-by-default) mencantumkan aturan dan hook mana dari Anda yang memiliki prioritas atas jawabannya.143Dalam baris `hooks:`, [`tool.call`](/docs/id/plugins/mods/reference#tools) dan [`prompt.submit`](/docs/id/plugins/mods/reference#prompts-and-what-claude-reads) berarti mod melihat setiap panggilan alat dan setiap prompt, dan dapat mengubahnya. [`session.append`](/docs/id/plugins/mods/reference#session) berarti mod dapat menulis ulang setiap baris percakapan sebelum disimpan. [`ui.render{component=AskUserQuestion}`](/docs/id/plugins/mods/interface#change-what-claude-code-already-draws) berarti mod dapat menggambar ulang dialog yang digunakan Claude untuk menanyakan pengguna. `tool.check` berarti mod dapat menyetujui atau menolak panggilan alat sebelum prompt izin muncul. [Ketahui apa yang terjadi secara default](#know-what-happens-by-default) mencantumkan aturan dan hook mana dari Anda yang memiliki prioritas atas jawabannya.

144 144 

Details

140| Panggilan | Apa yang dilihat pengguna |140| Panggilan | Apa yang dilihat pengguna |

141| :- | :- |141| :- | :- |

142| `$.ui.status(text)` | Satu baris di bawah prompt yang tetap sampai Anda mengubahnya. Dimulai dengan `⚠` dan nama mod, seperti `⚠ my-mod: checks: 3 passing`. |142| `$.ui.status(text)` | Satu baris di bawah prompt yang tetap sampai Anda mengubahnya. Dimulai dengan `⚠` dan nama mod, seperti `⚠ my-mod: checks: 3 passing`. |

143| `$.ui.toast(text)` | Notifikasi toast di kanan atas, dengan nama mod di atas teks, yang hilang setelah beberapa detik |143| `$.ui.toast(text)` | Notifikasi toast dengan nama mod yang hilang setelah beberapa detik. Berupa kotak di kanan atas dalam [rendering layar penuh](/docs/id/fullscreen), dan satu baris di sebelah kanan di bawah prompt dalam renderer klasik. |

144| `$.ui.log(text)` | Baris redup dalam transkrip yang tidak dibaca Claude. Dimulai dengan `●` dan nama mod, seperti `● my-mod: build finished`. |144| `$.ui.log(text)` | Baris redup dalam transkrip yang tidak dibaca Claude. Dimulai dengan `●` dan nama mod, seperti `● my-mod: build finished`. |

145 145 

146<h3 id="start-a-turn-from-a-background-job">146<h3 id="start-a-turn-from-a-background-job">


159 Mengirim dan menerima pesan antar sesi159 Mengirim dan menerima pesan antar sesi

160</h2>160</h2>

161 161 

162Sebuah mod dapat mengirim pesan teks biasa ke sesi Anda yang lain atau ke salah satu subagent milik sesi ini, serta mengamati pesan yang masuk dan keluar. `$.session.send({ to, text })` mengirim satu pesan, dengan pengiriman yang sama seperti yang dilakukan tool SendMessage. `to` adalah `{ sessionId }` untuk sebuah sesi, `{ agentId }` untuk subagent dari `$.agent.list()`, atau alamat string asal pesan yang diterima. Panggilan ini selesai setelah pesan masuk antrean, dengan `{ isDelivered: true }`. Ketika tidak ada yang tersampaikan, panggilan selesai dengan `{ isDelivered: false, reason }`, dan `reason` menjelaskan alasannya.162Sebuah mod dapat mengirim pesan teks biasa ke sesi Anda yang lain, ke salah satu subagent milik sesi ini, atau ke rekan tim dalam [tim agent](/docs/id/agent-teams) miliknya. Mod juga dapat mengamati pesan yang masuk dan keluar.

163 

164Untuk mengirim satu pesan, panggil `$.session.send({ to, text })`, yang melakukan pengiriman yang sama seperti yang dilakukan tool SendMessage. Atur `to` berdasarkan siapa yang menerima pesan:

165 

166* **Sesi Anda yang lain**: `{ sessionId }`

167* **Subagent atau rekan tim**: `{ agentId }`, dengan id dari `$.agent.list()`

168* **Pengirim pesan yang Anda terima**: alamat string asal pesan tersebut

169 

170Panggilan ini selesai setelah pesan masuk antrean, dengan `{ isDelivered: true }`. Ketika tidak ada yang tersampaikan, panggilan selesai dengan `{ isDelivered: false, reason }`, dan `reason` menjelaskan alasannya.

163 171 

164Hook ini menjawab perintah `/ping`, yang [didaftarkan sebagai perintah](#add-a-command), dengan menanyakan status kepada sesi yang id-nya Anda ketik setelah perintah tersebut:172Hook ini menjawab perintah `/ping`, yang [didaftarkan sebagai perintah](#add-a-command), dengan menanyakan status kepada sesi yang id-nya Anda ketik setelah perintah tersebut:

165 173 

Details

281 281 

282`result.usage` menyimpan hitungan token yang dilaporkan Claude API untuk permintaan, ditambah `model` yang menjawab: `input_tokens`, `output_tokens`, `cache_read_input_tokens`, dan `cache_creation_input_tokens`. Hook juga berjalan untuk permintaan subagent, jadi periksa `e.agentId` ketika Anda hanya menginginkan percakapan utama.282`result.usage` menyimpan hitungan token yang dilaporkan Claude API untuk permintaan, ditambah `model` yang menjawab: `input_tokens`, `output_tokens`, `cache_read_input_tokens`, dan `cache_creation_input_tokens`. Hook juga berjalan untuk permintaan subagent, jadi periksa `e.agentId` ketika Anda hanya menginginkan percakapan utama.

283 283 

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

285 

284<h3 id="hook-the-settings-hook-events">286<h3 id="hook-the-settings-hook-events">

285 Tangani peristiwa hook pengaturan287 Tangani peristiwa hook pengaturan

286</h3>288</h3>

Details

10 10 

11Peta ini menunjukkan di mana mod dapat menggambar dalam sesi terminal:11Peta ini menunjukkan di mana mod dapat menggambar dalam sesi terminal:

12 12 

13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="Peta sesi terminal Claude Code. Mod dapat menambahkan panel sebagai sidebar di sebelah kanan, toast di sudut kanan atas transkrip, baris log dalam transkrip, pita di atas prompt, dan baris status di bawah prompt. Mod dapat menggambar ulang pesan, baris panggilan tool, dan spinner. Prompt adalah milik Claude Code sendiri." width="600" height="336" data-path="images/mods-screen-map.svg" />13<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5fda26b6609c62b68c6f9e528c1590ea" className="dark:hidden" alt="Peta sesi terminal Claude Code dalam rendering layar penuh. Mod dapat menambahkan panel sebagai sidebar di sebelah kanan, toast di sudut kanan atas transkrip, baris log dalam transkrip, pita di atas prompt, dan baris status di bawah prompt. Mod dapat menggambar ulang pesan, baris panggilan tool, dan spinner. Prompt adalah milik Claude Code sendiri." width="600" height="336" data-path="images/mods-screen-map.svg" />

14 14 

15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="Peta sesi terminal Claude Code. Mod dapat menambahkan panel sebagai sidebar di sebelah kanan, toast di sudut kanan atas transkrip, baris log dalam transkrip, pita di atas prompt, dan baris status di bawah prompt. Mod dapat menggambar ulang pesan, baris panggilan tool, dan spinner. Prompt adalah milik Claude Code sendiri." width="600" height="336" data-path="images/mods-screen-map-dark.svg" />15<img src="https://mintcdn.com/claude-code/dgiVO_Od1X1faduV/images/mods-screen-map-dark.svg?fit=max&auto=format&n=dgiVO_Od1X1faduV&q=85&s=5b4161581a1bd2c0450b0c8b57bc1225" className="hidden dark:block" alt="Peta sesi terminal Claude Code dalam rendering layar penuh. Mod dapat menambahkan panel sebagai sidebar di sebelah kanan, toast di sudut kanan atas transkrip, baris log dalam transkrip, pita di atas prompt, dan baris status di bawah prompt. Mod dapat menggambar ulang pesan, baris panggilan tool, dan spinner. Prompt adalah milik Claude Code sendiri." width="600" height="336" data-path="images/mods-screen-map-dark.svg" />

16 16 

17Di terminal yang lebih sempit, panel duduk di atas prompt daripada di samping transkrip.17Di terminal yang lebih sempit, panel duduk di atas prompt daripada di samping transkrip.

18 18 


324| `title` | Label tab panel saat lebih dari satu panel terbuka |324| `title` | Label tab panel saat lebih dari satu panel terbuka |

325| `focus` | Permintaan [fokus keyboard](#know-which-keys-your-mod-can-receive) |325| `focus` | Permintaan [fokus keyboard](#know-which-keys-your-mod-can-receive) |

326| `closeOnEscape` | Membuat Esc menutup panel |326| `closeOnEscape` | Membuat Esc menutup panel |

327| `holdToasts` | Menahan toast, pemberitahuan kecil dari [`$.ui.toast`](/docs/id/plugins/mods/api#show-something-without-starting-a-turn), sampai panel ditutup |327| `holdToasts` | Di terminal, menahan toast selama panel ini yang sedang ditampilkan. Lihat [Tahan toast di balik dialog](#hold-toasts-behind-a-dialog). |

328| `rows` | Tinggi untuk diminta saat panel duduk di atas prompt. Default adalah sepertiga dari ruang. |328| `rows` | Tinggi untuk diminta saat panel duduk di atas prompt. Default adalah sepertiga dari ruang. |

329| `columns` | Lebar untuk diminta saat panel duduk di samping transkrip |329| `columns` | Lebar untuk diminta saat panel duduk di samping transkrip |

330 330 


337 337 

338Untuk membiarkan perintah membuka panel saat Claude bekerja, tambahkan `immediate: true` saat Anda [mendaftarkan perintah](/docs/id/plugins/mods/api#add-a-command). Tanpanya, perintah yang diketik selama giliran menunggu giliran berakhir.338Untuk membiarkan perintah membuka panel saat Claude bekerja, tambahkan `immediate: true` saat Anda [mendaftarkan perintah](/docs/id/plugins/mods/api#add-a-command). Tanpanya, perintah yang diketik selama giliran menunggu giliran berakhir.

339 339 

340<h4 id="hold-toasts-behind-a-dialog">

341 Tahan toast di balik dialog

342</h4>

343 

344Teruskan `holdToasts: true` ke `$.ui.open` ketika panel adalah dialog yang dijawab pengguna lalu ditinggalkan, sehingga toast tidak muncul saat mereka memutuskan. Di terminal, penahanan berlangsung selama panel tersebut yang sedang ditampilkan, dan toast yang dimunculkan dalam waktu itu menunggu sampai penahanan berakhir.

345 

346Claude Code menahan toast dari mod lain dan notifikasi singkatnya sendiri, serta toast yang dimunculkan mod Anda dengan [`$.ui.toast`](/docs/id/plugins/mods/api#show-something-without-starting-a-turn). Jangan gunakan bidang ini pada panel yang tetap terbuka, sehingga pengguna tetap melihatnya.

347 

340<h4 id="when-a-pane-waits-for-a-wider-terminal">348<h4 id="when-a-pane-waits-for-a-wider-terminal">

341 Ketika panel menunggu terminal yang lebih lebar349 Ketika panel menunggu terminal yang lebih lebar

342</h4>350</h4>

Details

209| [`$.ui`](/docs/id/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, `focus`, `scroll`, `toast`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit` |209| [`$.ui`](/docs/id/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, `focus`, `scroll`, `toast`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit` |

210| [`$.command`](/docs/id/plugins/mods/api#add-a-command) | `register`, `run`, `list` |210| [`$.command`](/docs/id/plugins/mods/api#add-a-command) | `register`, `run`, `list` |

211| [`$.tool`](/docs/id/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |211| [`$.tool`](/docs/id/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |

212| `$.agent` | `register`, `spawn`, `list` |212| `$.agent` | `register`, `spawn`, `list`. `list()` mengembalikan subagent dan rekan tim (teammate) sesi ini, masing-masing dengan `status` berupa `pending`, `running`, `waiting`, `idle`, `completed`, `failed`, atau `killed`, di mana `idle` dan `waiting` memerlukan Claude Code v2.1.289 atau yang lebih baru. |

213| [`$.model`](/docs/id/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |213| [`$.model`](/docs/id/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |

214| [`$.prompt`](/docs/id/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude membaca teks dari `submit({ text })` setelah sebuah kalimat yang menyebut mod Anda sebagai pengirim. `submit({ text, asUser: true })` mengirim teks sebagai kata-kata pengguna sendiri, tanpa kalimat tersebut. |214| [`$.prompt`](/docs/id/plugins/mods/api#start-a-turn-from-a-background-job) | `submit`, `read`, `fill`, `suggest`, `compose`. Claude membaca teks dari `submit({ text })` setelah sebuah kalimat yang menyebut mod Anda sebagai pengirim. `submit({ text, asUser: true })` mengirim teks sebagai kata-kata pengguna sendiri, tanpa kalimat tersebut. |

215| `$.turn` | `abort` |215| `$.turn` | `abort` |


317| Timeout `$.process.run` | 30 detik secara default, paling lama 10 menit |317| Timeout `$.process.run` | 30 detik secara default, paling lama 10 menit |

318| `maxTokens` `$.model.complete` | 1024 secara default, hingga 64.000 atau batas output model |318| `maxTokens` `$.model.complete` | 1024 secara default, hingga 64.000 atau batas output model |

319| `$.fs.read` dan `$.fs.write` | 4 MiB untuk satu file |319| `$.fs.read` dan `$.fs.write` | 4 MiB untuk satu file |

320| Alasan `drop` dari hook atau alasan `deny` dari `config.set` | 4.096 karakter. Bagian akhir dari alasan yang lebih panjang dipotong, dan drop atau deny tetap berlaku. Pemotongan ini memerlukan Claude Code v2.1.292 atau yang lebih baru, dan pada versi sebelumnya hook tersebut [gagal](/docs/id/plugins/mods/events#handle-a-hook-that-fails) sebagai gantinya. |

320| Teks dalam satu tree | 100.000 karakter pertama yang digambar |321| Teks dalam satu tree | 100.000 karakter pertama yang digambar |

321| `language` atau `path` dari `Code`, `value` dari opsi `Select`, atau `module` dari `Client` | 10.000 karakter. Jika salah satunya lebih panjang, Claude Code [menggambar versi situsnya sendiri](/docs/id/plugins/mods/interface#build-a-tree-from-elements). |322| `language` atau `path` dari `Code`, `value` dari opsi `Select`, atau `module` dari `Client` | 10.000 karakter. Jika salah satunya lebih panjang, Claude Code [menggambar versi situsnya sendiri](/docs/id/plugins/mods/interface#build-a-tree-from-elements). |

322| `href` dari `Link` | 2.048 karakter. `href` yang lebih panjang membuat seluruh tree tidak digambar. |323| `href` dari `Link` | 2.048 karakter. `href` yang lebih panjang membuat seluruh tree tidak digambar. |

Details

110* `returned neither { value } nor { deny }`: stub untuk panggilan mods API mengembalikan nilai telanjang, yang membuat tes gagal110* `returned neither { value } nor { deny }`: stub untuk panggilan mods API mengembalikan nilai telanjang, yang membuat tes gagal

111* `no implementation for` diikuti oleh nama: mod Anda membuat panggilan itu dan tidak ada stub yang menjawabnya111* `no implementation for` diikuti oleh nama: mod Anda membuat panggilan itu dan tidak ada stub yang menjawabnya

112 112 

113Kit juga mengekspor mock dalam memori yang menjawab seluruh namespace untuk Anda. `mock.clock(on)` menjawab [`$.clock`](/docs/id/plugins/mods/api#run-work-in-the-background), `mock.store(on, { count: 7 })` menjawab `$.store` dari toko yang dimulai dengan entri tersebut, dan `mock.env(on, { CI: 'true' })` menjawab `$.env.get` dari variabel tersebut. `mock.clock` mengembalikan jam mock yang tes Anda maju, sehingga tes timer tidak menunggu. `mock.store` mengembalikan tidak ada, jadi untuk memeriksa apa yang disimpan mod Anda, tulis dua stub `store` sendiri seperti [tes gambar](#test-a-drawing) lakukan.113Kit juga mengekspor mock siap pakai untuk jam, toko, environment variable, dan baris yang ditambahkan ke percakapan:

114 

115* **`mock.clock(on)`**: menjawab [`$.clock`](/docs/id/plugins/mods/api#run-work-in-the-background) dan mengembalikan jam mock yang dimajukan oleh tes Anda, sehingga tes timer tidak menunggu.

116* **`mock.store(on, { count: 7 })`**: menjawab `$.store` dari toko yang dimulai dengan entri tersebut. Ini tidak mengembalikan apa pun, jadi untuk memeriksa apa yang disimpan mod Anda, tulis dua stub `store` sendiri seperti yang dilakukan [tes gambar](#test-a-drawing).

117* **`mock.env(on, { CI: 'true' })`**: menjawab `$.env.get` dari variabel tersebut.

118* **`mock.session(on)`**: mengembalikan sesi mock yang metode `appended()`-nya mencantumkan baris yang ditambahkan mod Anda dengan [`$.session.append`](/docs/id/plugins/mods/reference#session), yang terlama terlebih dahulu; ini memerlukan Claude Code v2.1.293 atau lebih baru.

114 119 

115<h3 id="follow-the-test-kit’s-rules">120<h3 id="follow-the-test-kit’s-rules">

116 Ikuti aturan test kit121 Ikuti aturan test kit


168 Lihat apa yang dikembalikan stub173 Lihat apa yang dikembalikan stub

169</h3>174</h3>

170 175 

171Setiap panggilan mods API yang dibuat mod Anda dalam tes memerlukan stub yang menjawab di tempat Claude Code, kecuali beberapa yang dijawab kit sendiri: panggilan [`$.ui.invalidate`](/docs/id/plugins/mods/interface#redraw-when-something-changes) dan [`$.state`](/docs/id/plugins/mods/interface#keep-state). Untuk panggilan `$.clock`, gunakan `mock.clock(on)`, atau `$.clock.now()` mod Anda gagal dengan `no implementation for clock.now`.176Setiap panggilan mods API yang dibuat mod Anda dalam tes memerlukan stub yang menjawab di tempat Claude Code, kecuali beberapa yang dijawab kit sendiri: panggilan [`$.ui.invalidate`](/docs/id/plugins/mods/interface#redraw-when-something-changes), [`$.state`](/docs/id/plugins/mods/interface#keep-state), dan `$.session.append`. Untuk panggilan `$.clock`, gunakan `mock.clock(on)`, atau `$.clock.now()` mod Anda gagal dengan `no implementation for clock.now`.

172 177 

173Tabel ini mencantumkan yang paling sering digunakan mod. Kolom pertama adalah panggilan yang dibuat mod Anda atau peristiwa yang dilewatkan dengan `next(e)`. Kolom kedua adalah fungsi untuk diteruskan ke `on` di bawah nama itu, jadi baris `$.store.get` menjadi `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`. `'...'` dalam stub menandai teks untuk Anda isi:178Tabel ini mencantumkan yang paling sering digunakan mod. Kolom pertama adalah panggilan yang dibuat mod Anda atau peristiwa yang dilewatkan dengan `next(e)`. Kolom kedua adalah fungsi untuk diteruskan ke `on` di bawah nama itu, jadi baris `$.store.get` menjadi `on('store.get', ($, e) => ({ value: saved.get(e.key) }))`. `'...'` dalam stub menandai teks untuk Anda isi:

174 179 

Details

209 Gambar tidak muncul atau merespons209 Gambar tidak muncul atau merespons

210</h2>210</h2>

211 211 

212Mod dimuat, dan pane, band, atau kontrol tidak berperilaku seperti yang Anda harapkan.212Mod dimuat, dan pane, band, toast, atau kontrol tidak berperilaku seperti yang Anda harapkan.

213 213 

214<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">214<h3 id="a-pane-or-band-is-empty-or-shows-claude-code’s-usual-content">

215 Pane atau band kosong atau menampilkan konten biasa Claude Code215 Pane atau band kosong atau menampilkan konten biasa Claude Code


247 247 

248Buka pane dari perintah atau tombol, atau periksa hasil `isPlaced` panggilan. Lihat [Open a pane at the right time](/docs/id/plugins/mods/interface#open-a-pane-at-the-right-time).248Buka pane dari perintah atau tombol, atau periksa hasil `isPlaced` panggilan. Lihat [Open a pane at the right time](/docs/id/plugins/mods/interface#open-a-pane-at-the-right-time).

249 249 

250<h3 id="a-toast-doesn’t-appear">

251 Toast tidak muncul

252</h3>

253 

254Mod Anda memanggil [`$.ui.toast`](/docs/id/plugins/mods/api#show-something-without-starting-a-turn) dalam sesi terminal interaktif dan Anda tidak melihat toast tersebut. Untuk memastikan bahwa panggilan tersebut berjalan, cari di [debug log](#read-the-debug-log) baris yang berisi nama mod Anda dan teks toast, seperti `$.ui.toast (first-mod): build finished`. Kemudian periksa penyebab seperti berikut:

255 

256* **Baris untuk panggilan tersebut tidak ada**: cari baris yang menjelaskan mengapa Claude Code menolak panggilan tersebut, seperti `first-mod: $.ui.toast dropped: timeoutMs is a whole number of ms, 1 to 60000`.

257* **Sebuah pane sedang menahan toast**: mod Anda atau mod lain meneruskan [`holdToasts`](/docs/id/plugins/mods/interface#hold-toasts-behind-a-dialog) saat membuka pane yang sedang ditampilkan. Tutup pane tersebut untuk mengakhiri penahanan. Jika pane tersebut milik Anda dan memang dimaksudkan untuk tetap terbuka, hapus `holdToasts` dari panggilan `$.ui.open`-nya dan buka pane tersebut lagi.

258* **Toast berada di bawah prompt**: di [renderer klasik](/docs/id/fullscreen#enable-fullscreen-rendering), lihat di sebelah kanan di bawah prompt. Toast di sana berupa satu baris yang diawali dengan nama mod, bukan kotak di kanan atas.

259* **Mod Anda memunculkan toast yang lebih baru**: di renderer klasik, toast yang lebih baru dari mod Anda dapat menggantikan toast yang sedang ditampilkan atau sedang menunggu untuk ditampilkan. Debug log memiliki baris lain untuk toast yang lebih lama, yang diakhiri dengan `gave way, cut short` jika toast tersebut sedang ditampilkan, atau `gave way, unseen` jika toast tersebut tidak pernah muncul. Untuk menampilkan kedua pesan, letakkan keduanya dalam satu toast.

260* **Waktu toast habis sebelum digambar**: dalam rendering fullscreen, Claude Code menggambar paling banyak tiga toast sekaligus, sehingga waktu sebuah toast dapat habis sebelum toast tersebut digambar. Debug log memiliki baris lain untuk toast tersebut, yang diakhiri dengan `left the stack, never drawn`. Ketika mod Anda memunculkan beberapa toast sekaligus, letakkan pesan-pesannya dalam satu toast.

261 

262Sebelum v2.1.290, Claude Code membuang toast yang dimunculkan dalam dua detik sejak toast terakhir yang ditampilkannya untuk mod Anda, dan baris debug log untuk toast yang dibuang tersebut mengatakan `within 2000ms of the last; dropped`.

263 

250<h3 id="hotkeys-do-nothing">264<h3 id="hotkeys-do-nothing">

251 Hotkey tidak melakukan apa pun265 Hotkey tidak melakukan apa pun

252</h3>266</h3>

Details

129* Tambahkan marketplace sekali: `claude plugin marketplace add your-org/your-marketplace`, di mana argumennya adalah shorthand GitHub `owner/repo`, URL, atau jalur129* Tambahkan marketplace sekali: `claude plugin marketplace add your-org/your-marketplace`, di mana argumennya adalah shorthand GitHub `owner/repo`, URL, atau jalur

130* Pasang plugin: `claude plugin install deploy-helper@your-marketplace`130* Pasang plugin: `claude plugin install deploy-helper@your-marketplace`

131* Atau lakukan keduanya dari dalam sesi: `/plugin install deploy-helper --marketplace your-org/your-marketplace`. Memerlukan Claude Code v2.1.275 atau lebih baru. Lihat [Tambahkan marketplace dan pasang dalam satu perintah](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command)131* Atau lakukan keduanya dari dalam sesi: `/plugin install deploy-helper --marketplace your-org/your-marketplace`. Memerlukan Claude Code v2.1.275 atau lebih baru. Lihat [Tambahkan marketplace dan pasang dalam satu perintah](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command)

132* Atau lakukan keduanya dari shell dalam satu perintah: `claude plugin install deploy-helper --marketplace your-org/your-marketplace`. Memerlukan Claude Code v2.1.292 atau lebih baru

132 133 

133<h3 id="ship-updates-to-users">134<h3 id="ship-updates-to-users">

134 Kirim pembaruan kepada pengguna135 Kirim pembaruan kepada pengguna

Details

163 `Invalid marketplace source format`163 `Invalid marketplace source format`

164</h3>164</h3>

165 165 

166Anda menjalankan `/plugin marketplace add <source>` atau `claude plugin marketplace add <source>`, dan Claude Code menjawab `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`.166Anda menjalankan `/plugin marketplace add <source>`, `claude plugin marketplace add <source>`, atau `claude plugin install <plugin> --marketplace <source>`, dan Claude Code menjawab `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`.

167 167 

168Claude Code menerima sumber dalam salah satu bentuk ini:168Claude Code menerima sumber dalam salah satu bentuk ini:

169 169 


568 `Marketplace "<name>" is already added from a different source`568 `Marketplace "<name>" is already added from a different source`

569</h3>569</h3>

570 570 

571Anda mengonfirmasi penambahan marketplace melalui [`/plugin install <plugin> --marketplace <source>`](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command), dan katalog yang Claude Code ambil dari sumber itu memiliki nama yang sama dengan marketplace yang sudah Anda tambahkan dari sumber berbeda. Claude Code menyimpan marketplace yang ada alih-alih menggantinya, dan plugin tidak diinstal.571Anda menyebutkan sumber marketplace baru dengan [`--marketplace <source>` pada perintah instal](/docs/id/plugins/install#add-a-marketplace-and-install-in-one-command), dalam sesi atau dari shell Anda. Katalog yang Claude Code ambil dari sumber itu memiliki nama yang sama dengan marketplace yang sudah Anda tambahkan dari sumber berbeda. Claude Code menyimpan marketplace yang ada alih-alih menggantinya, dan plugin tidak diinstal.

572 572 

573Pesan lengkapnya terlihat seperti ini:573Pesan lengkapnya terlihat seperti ini:

574 574 

Details

403 403 

404* [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`.404* [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`.

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

406* `<repo>/.mcp.json`: cakupan project. Lakukan commit file ini ke repositori; server-servernya disetujui secara otomatis di sesi cloud.406* `<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).

407 407 

408Ketika 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.408Ketika 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.

409 409 


545exit 0545exit 0

546```546```

547 547 

548Hook mendorong Claude untuk melakukan komit dan mendorong sebelum sesi berakhir, dan tetap diam ketika direktori bukan repositori git atau tidak memiliki remote.548Hook meminta Claude untuk melakukan commit dan push sebelum sesi berakhir, dan tetap diam ketika direktori bukan repositori git atau tidak memiliki remote. Untuk sesi dengan beberapa repositori, lihat [apa yang ditunjuk oleh `$CLAUDE_PROJECT_DIR`](#repository-settings-in-sessions-with-several-repositories).

549 549 

550<h2 id="permissions-and-tool-approval">550<h2 id="permissions-and-tool-approval">

551 Izin dan persetujuan alat551 Izin dan persetujuan alat


574 574 

575Atur `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` untuk menabur dari jalur berbeda, atau arahkan ke direktori kosong untuk menonaktifkan penanaman.575Atur `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` untuk menabur dari jalur berbeda, atau arahkan ke direktori kosong untuk menonaktifkan penanaman.

576 576 

577`.claude/settings.json` yang dikomit repositori berlapis di atas sebagai pengaturan proyek. Sesi juga membaca [`managed-settings.json`](/docs/id/settings#where-settings-live) dari jalur sistem standar di gambar runner Anda. Apakah kuncinya berlaku bersama [pengaturan yang dikelola server](/docs/id/server-managed-settings) mengikuti [bagaimana Claude Code menggabungkan sumber yang dikelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources): secara default, ketika organisasi Anda mengirimkan kunci yang dikelola server apa pun, sesi mengabaikan file gambar runner terlepas dari [kunci yang dibaca Claude Code dari setiap sumber admin](/docs/id/managed-settings#keys-read-from-every-admin-source), seperti blok `env`, kunci sandbox, jalur biner sandbox, dan `forceRemoteSettingsRefresh`. Lihat [prioritas pengaturan](/docs/id/settings#settings-precedence).577`.claude/settings.json` yang di-commit ke repositori diterapkan di atasnya sebagai pengaturan proyek. Dalam sesi dengan beberapa repositori, [paling banyak hanya file dari satu repositori yang berlaku](#repository-settings-in-sessions-with-several-repositories). Sesi juga membaca [`managed-settings.json`](/docs/id/settings#where-settings-live) dari jalur sistem standar di image runner Anda. Apakah kuncinya berlaku bersama [pengaturan terkelola server](/docs/id/server-managed-settings) mengikuti [bagaimana Claude Code menggabungkan sumber terkelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources): secara default, ketika organisasi Anda mengirimkan kunci terkelola server apa pun, sesi mengabaikan file image runner kecuali [kunci yang dibaca Claude Code dari setiap sumber admin](/docs/id/managed-settings#keys-read-from-every-admin-source), seperti blok `env`, kunci sandbox, jalur biner sandbox, dan `forceRemoteSettingsRefresh`. Lihat [prioritas pengaturan](/docs/id/settings#settings-precedence).

578 578 

579Ketika bidang kontrol Anthropic memasok sesi dengan [Claude Code hooks](/docs/id/hooks), runner memasangnya bersama, bukan di atas, konfigurasi Anda sendiri. Memerlukan Claude Code v2.1.229 atau lebih baru.579Ketika bidang kontrol Anthropic memasok sesi dengan [Claude Code hooks](/docs/id/hooks), runner memasangnya bersama, bukan di atas, konfigurasi Anda sendiri. Memerlukan Claude Code v2.1.229 atau lebih baru.

580 580 


586 586 

587Snapshot runner atas `~/.claude/` host tidak menyertakan direktori `projects/`. Lokasi penyimpanan default auto memory berada di bawah direktori tersebut. Jika Anda meletakkan file memori di sana, runner tidak menanamkannya ke dalam sesi, dan file tersebut tidak mengaktifkan auto memory.587Snapshot runner atas `~/.claude/` host tidak menyertakan direktori `projects/`. Lokasi penyimpanan default auto memory berada di bawah direktori tersebut. Jika Anda meletakkan file memori di sana, runner tidak menanamkannya ke dalam sesi, dan file tersebut tidak mengaktifkan auto memory.

588 588 

589<h3 id="repository-settings-in-sessions-with-several-repositories">

590 Pengaturan repositori dalam sesi dengan beberapa repositori

591</h3>

592 

593Dalam sesi dengan beberapa repositori, Claude Code membaca pengaturan proyek dari direktori tempat sesi dimulai, sehingga paling banyak hanya `.claude/settings.json` dari satu repositori yang berlaku sebagai pengaturan proyek. Hook yang didefinisikan dalam file repositori lain tidak berjalan, aturan deny di dalamnya tidak berlaku, dan `env`-nya tidak diatur.

594 

595* **`--capacity 1`, default, dengan checkout bawaan**: sesi dimulai di repositori pertama dalam daftar repositorinya. `.claude/settings.json` repositori tersebut berlaku sebagai pengaturan proyek dan `.mcp.json`-nya dimuat, sedangkan milik repositori lain tidak.

596* **`--capacity` lebih dari satu, atau [hook `checkout`](#checkout)**: sesi dimulai di direktori per sesi yang berisi hasil checkout. Tidak ada `.claude/settings.json` repositori mana pun yang berlaku sebagai pengaturan proyek, tidak ada `.mcp.json` repositori mana pun yang dimuat, dan [`$CLAUDE_PROJECT_DIR`](/docs/id/hooks#reference-scripts-by-path) dalam perintah hook adalah direktori tersebut, bukan hasil checkout.

597 

598`CLAUDE.md` dan skills setiap repositori dimuat di mana pun sesi dimulai. Runner meneruskan setiap repositori ke Claude Code sebagai [direktori tambahan](/docs/id/permissions#additional-directories-grant-file-access-not-configuration), sehingga Claude Code juga membaca kunci `enabledPlugins` dan `extraKnownMarketplaces` dari `.claude/settings.json` setiap repositori.

599 

600Untuk menjalankan hook atau menerapkan aturan izin di setiap sesi, letakkan di `~/.claude/settings.json` pada host runner. Runner [mengisikan file host ke setiap sesi](#how-each-session’s-config-is-assembled), di mana pun sesi dimulai. Tulis jalur dalam aturan `Read` atau `Edit` sebagai [pola](/docs/id/permissions#read-and-edit) absolut `//` atau relatif terhadap home `~/`, karena pola lain berjangkar pada sumber pengaturan atau direktori saat ini.

601 

589<h3 id="repository-committed-permission-rules">602<h3 id="repository-committed-permission-rules">

590 Aturan izin yang dikomit repositori603 Aturan izin yang dikomit repositori

591</h3>604</h3>

Details

87 87 

88 Karena hooks menjalankan perintah shell, pengguna dalam sesi interaktif melihat [dialog persetujuan keamanan](#security-approval-dialogs) sebelum Claude Code menerapkannya.88 Karena hooks menjalankan perintah shell, pengguna dalam sesi interaktif melihat [dialog persetujuan keamanan](#security-approval-dialogs) sebelum Claude Code menerapkannya.

89 89 

90 Untuk mengonfigurasi pengklasifikasi [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) sehingga mengetahui repositori, bucket, dan domain mana yang dipercaya organisasi Anda, berikan blok `autoMode` dengan cara yang sama; lihat [Konfigurasi mode otomatis](/docs/id/auto-mode-config) untuk cara entri `autoMode` mempengaruhi apa yang diblokir pengklasifikasi dan peringatan penting tentang bidang `environment`, `allow`, `soft_deny`, dan `hard_deny`.90 Untuk mengonfigurasi pengklasifikasi [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) sehingga mengetahui repositori, bucket, dan domain mana yang dipercaya organisasi Anda, berikan blok `autoMode` dengan cara yang sama; lihat [Konfigurasi auto mode](/docs/id/auto-mode-config) untuk cara entri `autoMode` mempengaruhi apa yang diblokir pengklasifikasi dan peringatan penting tentang bidang `environment`, `allow`, `soft_deny`, dan `hard_deny`.

91 </Step>91 </Step>

92 92 

93 <Step title="Simpan dan terapkan">93 <Step title="Simpan dan terapkan">

94 Simpan perubahan Anda. Klien Claude Code menerima pengaturan yang diperbarui pada startup berikutnya atau siklus polling per jam.94 Simpan perubahan Anda. Klien Claude Code menerima pengaturan yang diperbarui pada startup berikutnya atau siklus polling per jam.

95 

96 Editor memeriksa JSON Anda terhadap skema JSON yang dipublikasikan untuk pengaturan Claude Code. Jika editor menemukan masalah dalam JSON yang dapat di-parse, editor menampilkan peringatan dan mengubah label tombol simpan. Labelnya adalah **Update with errors** ketika pengaturan sudah disimpan, dan **Add with errors** ketika belum ada pengaturan yang disimpan. Tombol tersebut tetap menyimpan, karena peringatan skema tidak memblokir penyimpanan.

97 

98 Skema [dapat tertinggal dari rilis terbaru](/docs/id/settings#edit-a-settings-file), sehingga editor dapat menandai kunci atau nilai yang didokumentasikan dalam [referensi pengaturan](/docs/id/settings-reference#all-settings). Claude Code menerima kunci dan nilai yang Anda simpan dan menjalankan [validasinya sendiri](#invalid-entries-in-delivered-settings) saat memuatnya.

95 </Step>99 </Step>

96</Steps>100</Steps>

97 101 

settings.md +11 −11

Details

405| Cakupan | File | Siapa yang terpengaruh | Gunakan untuk |405| Cakupan | File | Siapa yang terpengaruh | Gunakan untuk |

406| :- | :- | :- | :- |406| :- | :- | :- | :- |

407| Pengguna | `~/.claude/settings.json` | Anda, di setiap proyek di mesin ini | Preferensi pribadi: tema, mode editor, model default, aturan izin Anda sendiri |407| Pengguna | `~/.claude/settings.json` | Anda, di setiap proyek di mesin ini | Preferensi pribadi: tema, mode editor, model default, aturan izin Anda sendiri |

408| Proyek bersama | `.claude/settings.json` | Semua orang yang bekerja di folder yang memuatnya. Di repositori git, commit itu sehingga rekan kerja mendapatkannya | Izin tim, hooks, plugins, dan variabel lingkungan yang dibutuhkan proyek |408| Proyek bersama | `.claude/settings.json` | Semua orang yang bekerja di folder yang memuatnya. Di repositori git, commit itu sehingga rekan kerja mendapatkannya | Izin tim, hook, plugin, dan environment variable yang dibutuhkan proyek |

409| Proyek lokal | `.claude/settings.local.json` | Anda, hanya di proyek ini. Claude Code menyimpannya di luar git saat membuat file; jika Anda membuatnya dengan tangan, tambahkan ke `.gitignore` sendiri | Penggantian pribadi untuk satu proyek, dan pengujian sebelum Anda berbagi |409| Proyek lokal | `.claude/settings.local.json` | Anda, hanya di proyek ini. Claude Code menyimpannya di luar git saat membuat file; jika Anda membuatnya dengan tangan, tambahkan ke `.gitignore` sendiri | Override pribadi untuk satu proyek, dan pengujian sebelum Anda berbagi |

410| Terkelola | `managed-settings.json` dan [sumber terkelola](/docs/id/managed-settings#delivery-mechanisms) lainnya | Semua orang yang menjadi tujuan penerapannya oleh organisasi Anda; [Prioritas pengaturan](#settings-precedence) menjelaskan apa yang dapat menimpanya | Kebijakan keamanan dan persyaratan kepatuhan |410| Terkelola | `managed-settings.json` dan [sumber terkelola](/docs/id/managed-settings#delivery-mechanisms) lainnya | Semua orang yang menjadi tujuan penerapannya oleh organisasi Anda; [Prioritas pengaturan](#settings-precedence) menjelaskan apa yang dapat menimpanya | Kebijakan keamanan dan persyaratan kepatuhan |

411 411 

412Di kolom File, `~/.claude` adalah folder `.claude` di direktori home Anda, dan `.claude` kosong adalah folder `.claude` di dalam proyek Anda.412Di kolom File, `~/.claude` adalah folder `.claude` di direktori home Anda, dan `.claude` kosong adalah folder `.claude` di dalam proyek Anda.


428* **`~/.claude/settings.json`**: setiap proyek di mesin Anda, dan tidak ada di mesin rekan kerja atau di sesi cloud428* **`~/.claude/settings.json`**: setiap proyek di mesin Anda, dan tidak ada di mesin rekan kerja atau di sesi cloud

429* **`acme-app/.claude/settings.json`**: `acme-app/` Anda. Ini menjangkau klon rekan kerja dan sesi cloud hanya jika Anda commit file ke kontrol versi; sampai Anda melakukannya, itu adalah file di disk Anda seperti yang lain dan tidak ada orang lain yang memilikinya429* **`acme-app/.claude/settings.json`**: `acme-app/` Anda. Ini menjangkau klon rekan kerja dan sesi cloud hanya jika Anda commit file ke kontrol versi; sampai Anda melakukannya, itu adalah file di disk Anda seperti yang lain dan tidak ada orang lain yang memilikinya

430* **`acme-app/.claude/settings.local.json`**: hanya `acme-app/` Anda. Claude Code menambahkannya ke pengecualian git global Anda pertama kali menulis file, sehingga tetap keluar dari commit Anda; jika Anda membuat file dengan tangan, [tambahkan ke `.gitignore` sendiri](#keep-personal-settings-out-of-a-repository)430* **`acme-app/.claude/settings.local.json`**: hanya `acme-app/` Anda. Claude Code menambahkannya ke pengecualian git global Anda pertama kali menulis file, sehingga tetap keluar dari commit Anda; jika Anda membuat file dengan tangan, [tambahkan ke `.gitignore` sendiri](#keep-personal-settings-out-of-a-repository)

431* **Pengaturan terkelola**, baik file `managed-settings.json`, kebijakan MDM, atau [pengaturan yang dikelola server](/docs/id/server-managed-settings) dari konsol claude.ai: setiap proyek di setiap mesin organisasi Anda menerapkannya, atau yang Anda masuk dengan akun organisasi Anda. Hanya pengaturan yang dikelola server yang menjangkau sesi cloud431* **Pengaturan terkelola**, baik file `managed-settings.json`, kebijakan MDM, atau [pengaturan terkelola server](/docs/id/server-managed-settings) dari konsol claude.ai: setiap proyek di setiap mesin organisasi Anda menerapkannya, atau yang Anda masuk dengan akun organisasi Anda. Hanya pengaturan terkelola server yang menjangkau sesi cloud

432 432 

433<span id="which-files-you-have" />433<span id="which-files-you-have" />

434 434 


440 440 

441* **Terkelola**: organisasi Anda menerapkannya. Anda tidak membuat atau mengeditnya.441* **Terkelola**: organisasi Anda menerapkannya. Anda tidak membuat atau mengeditnya.

442* **Proyek bersama**: proyek yang sudah menggunakan Claude Code mungkin memiliki satu yang di-commit. Jika tidak, buatnya di `.claude/settings.json` di folder proyek.442* **Proyek bersama**: proyek yang sudah menggunakan Claude Code mungkin memiliki satu yang di-commit. Jika tidak, buatnya di `.claude/settings.json` di folder proyek.

443* **Pengguna** dan **Proyek lokal**: buatnya sendiri, atau biarkan Claude Code membuatnya. Ini menulis `~/.claude/settings.json` pertama kali Anda mengubah opsi di menu `/config` yang disimpannya dalam pengaturan pengguna, seperti tema, dan `.claude/settings.local.json` pertama kali Anda memberikan persetujuan berdiri di prompt izin, seperti "Ya, dan jangan tanya lagi" untuk perintah Bash. Beberapa opsi `/config`, termasuk **Tampilkan tips**, disimpan ke `.claude/settings.local.json` sebagai gantinya dari file pengguna.443* **Pengguna** dan **Proyek lokal**: buatnya sendiri, atau biarkan Claude Code membuatnya. Ini menulis `~/.claude/settings.json` pertama kali Anda mengubah opsi di menu `/config` yang disimpannya dalam pengaturan pengguna, seperti tema, dan `.claude/settings.local.json` pertama kali Anda memberikan persetujuan berdiri di dialog izin, seperti "Ya, dan jangan tanya lagi" untuk perintah Bash. Beberapa opsi `/config`, termasuk **Tampilkan tips**, disimpan ke `.claude/settings.local.json` sebagai gantinya dari file pengguna.

444 444 

445<Info>445<Info>

446 Di Windows, `~/.claude` berarti `%USERPROFILE%\.claude`. Untuk menyimpan file direktori home di tempat lain, atur [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars); Claude Code kemudian menyimpan pengaturan, riwayat sesi, dan plugins Anda di sana sebagai gantinya.446 Di Windows, `~/.claude` berarti `%USERPROFILE%\.claude`. Untuk menyimpan file direktori home di tempat lain, atur [`CLAUDE_CONFIG_DIR`](/docs/id/env-vars); Claude Code kemudian menyimpan pengaturan, riwayat sesi, dan plugin Anda di sana sebagai gantinya.

447</Info>447</Info>

448 448 

449Claude Code juga menyimpan file kelima, [`~/.claude.json`](/docs/id/claude-directory#ce-claude-json), yang ditulis untuk dirinya sendiri; Anda tidak perlu mengeditnya. Ini menyimpan sesi masuk Anda, konfigurasi [server MCP](/docs/id/mcp), status per-proyek seperti keputusan kepercayaan, dan [kunci konfigurasi global](/docs/id/settings-reference#global-config-settings) yang `/config` tulis untuk Anda.449Claude Code juga menyimpan file kelima, [`~/.claude.json`](/docs/id/claude-directory#ce-claude-json), yang ditulis untuk dirinya sendiri; Anda tidak perlu mengeditnya. Ini menyimpan sesi masuk Anda, konfigurasi [server MCP](/docs/id/mcp), status per-proyek seperti keputusan kepercayaan, dan [kunci konfigurasi global](/docs/id/settings-reference#global-config-settings) yang `/config` tulis untuk Anda.


452 Bagikan pengaturan dengan tim Anda452 Bagikan pengaturan dengan tim Anda

453</h3>453</h3>

454 454 

455Commit `.claude/settings.json` sehingga semua orang yang mengkloning repositori mendapatkan izin, hooks, dan plugins yang sama. Setiap rekan kerja masih dapat menggantikannya untuk diri mereka sendiri di `.claude/settings.local.json` mereka sendiri, sehingga pengecualian pribadi tidak perlu commit. Untuk file tim lengkap, lihat [pengaturan bersama tim](/docs/id/settings-example#a-teams-shared-settings).455Commit `.claude/settings.json` sehingga semua orang yang mengkloning repositori mendapatkan izin, hook, dan plugin yang sama. Setiap rekan kerja masih dapat menggantikannya untuk diri mereka sendiri di `.claude/settings.local.json` mereka sendiri, sehingga pengecualian pribadi tidak perlu commit. Untuk file tim lengkap, lihat [pengaturan bersama tim](/docs/id/settings-example#a-teams-shared-settings).

456 456 

457Beberapa dari apa yang Anda commit menunggu sampai setiap rekan kerja [mempercayai folder](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan beberapa kunci tidak pernah berlaku dari file repositori; [Troubleshoot a setting that doesn't apply](#common-cases) mencakup keduanya.457Beberapa dari apa yang Anda commit menunggu sampai setiap rekan kerja [mempercayai folder](/docs/id/permissions#project-allow-rules-and-workspace-trust), dan beberapa kunci tidak pernah berlaku dari file repositori; [Troubleshoot a setting that doesn't apply](#common-cases) mencakup keduanya.

458 458 


474 474 

475* **Claude Code juga menulisnya.** Ketika Claude meminta izin untuk menjalankan perintah Bash dan Anda memilih "Ya, dan jangan tanya lagi", Claude Code menyimpan [persetujuan izin](/docs/id/permissions#permission-system) itu di sini sebagai aturan `allow`.475* **Claude Code juga menulisnya.** Ketika Claude meminta izin untuk menjalankan perintah Bash dan Anda memilih "Ya, dan jangan tanya lagi", Claude Code menyimpan [persetujuan izin](/docs/id/permissions#permission-system) itu di sini sebagai aturan `allow`.

476* **Anda tidak perlu gitignore sendiri, kecuali Anda membuatnya dengan tangan.** Pertama kali Claude Code menulis file di repositori git yang tidak sudah mengabaikannya, itu menambahkan `**/.claude/settings.local.json` ke file pengecualian git global Anda, sehingga file tetap keluar dari commit Anda di setiap repositori. File itu adalah `core.excludesFile` ketika konfigurasi git global Anda menetapkannya ke jalur absolut atau jalur dengan awalan `~`; jika tidak, itu adalah `$XDG_CONFIG_HOME/git/ignore`, atau `~/.config/git/ignore` ketika `XDG_CONFIG_HOME` tidak diatur. Jika Anda membuat file dengan tangan dan Claude Code belum menulis ke dalamnya, tambahkan ke `.gitignore` sendiri.476* **Anda tidak perlu gitignore sendiri, kecuali Anda membuatnya dengan tangan.** Pertama kali Claude Code menulis file di repositori git yang tidak sudah mengabaikannya, itu menambahkan `**/.claude/settings.local.json` ke file pengecualian git global Anda, sehingga file tetap keluar dari commit Anda di setiap repositori. File itu adalah `core.excludesFile` ketika konfigurasi git global Anda menetapkannya ke jalur absolut atau jalur dengan awalan `~`; jika tidak, itu adalah `$XDG_CONFIG_HOME/git/ignore`, atau `~/.config/git/ignore` ketika `XDG_CONFIG_HOME` tidak diatur. Jika Anda membuat file dengan tangan dan Claude Code belum menulis ke dalamnya, tambahkan ke `.gitignore` sendiri.

477* **Aturan izinnya tidak menunggu kepercayaan sementara file tetap tidak dilacak.** Karena file adalah milik Anda dan bukan repositori, Claude Code menerapkan aturan `allow` tanpa langkah [kepercayaan ruang kerja](/docs/id/permissions#project-allow-rules-and-workspace-trust) yang diperlukan untuk file yang di-commit. Jika file dilacak oleh git, langkah kepercayaan juga berlaku untuk itu; lihat [Ketika file pengaturan lokal Anda memerlukan kepercayaan](/docs/id/permissions#when-your-local-settings-file-needs-trust).477* **Aturan izinnya tidak menunggu kepercayaan sementara file tetap tidak dilacak.** Karena file adalah milik Anda dan bukan repositori, Claude Code menerapkan aturan `allow` tanpa langkah [kepercayaan workspace](/docs/id/permissions#project-allow-rules-and-workspace-trust) yang diperlukan untuk file yang di-commit. Jika file dilacak oleh git, langkah kepercayaan juga berlaku untuk itu; lihat [Ketika file pengaturan lokal Anda memerlukan kepercayaan](/docs/id/permissions#when-your-local-settings-file-needs-trust).

478 478 

479<span id="where-claude-code-looks-for-each-file" />479<span id="where-claude-code-looks-for-each-file" />

480 480 


515 515 

516Pengaturan terkelola menjangkau Anda melalui [mekanisme pengiriman](/docs/id/managed-settings#delivery-mechanisms) di halaman pengaturan terkelola, paling umum:516Pengaturan terkelola menjangkau Anda melalui [mekanisme pengiriman](/docs/id/managed-settings#delivery-mechanisms) di halaman pengaturan terkelola, paling umum:

517 517 

518* [Pengaturan yang dikelola server](/docs/id/server-managed-settings), yang Claude Code ambil dari konsol admin claude.ai atau [gateway aplikasi Claude](/docs/id/claude-apps-gateway) yang di-host sendiri518* [Pengaturan terkelola server](/docs/id/server-managed-settings), yang Claude Code ambil dari konsol admin claude.ai atau [gateway aplikasi Claude](/docs/id/claude-apps-gateway) yang di-host sendiri

519* Kebijakan MDM atau tingkat OS, dan file `managed-settings.json` di direktori sistem519* Kebijakan MDM atau tingkat OS, dan file `managed-settings.json` di direktori sistem

520* Host penyematan seperti Claude Desktop, melalui opsi SDK `managedSettings`; lihat [Kontrol kebijakan dari host penyematan](/docs/id/managed-settings#parent-settings-from-embedding-hosts)520* Host penyematan seperti Claude Desktop, melalui opsi SDK `managedSettings`; lihat [Kontrol kebijakan dari host penyematan](/docs/id/managed-settings#parent-settings-from-embedding-hosts)

521 521 

522Di sesi [Cowork](https://claude.com/docs/cowork/overview) yang berjalan di mesin Anda di aplikasi Claude Desktop, Claude Code tidak mengambil pengaturan yang dikelola server dari konsol admin claude.ai, dan itu membaca kebijakan yang diterapkan ke perangkat Anda kecuali konfigurasi Claude Desktop organisasi Anda menetapkan `requireCoworkFullVmSandbox`. [Di mana dan kapan kebijakan berlaku](/docs/id/managed-settings#where-and-when-a-policy-applies) mencakup Cowork dan sesi cloud.522Di sesi [Cowork](https://claude.com/docs/cowork/overview) yang berjalan di mesin Anda di aplikasi Claude Desktop, Claude Code tidak mengambil pengaturan terkelola server dari konsol admin claude.ai, dan itu membaca kebijakan yang diterapkan ke perangkat Anda kecuali konfigurasi Claude Desktop organisasi Anda menetapkan `requireCoworkFullVmSandbox`. [Di mana dan kapan kebijakan berlaku](/docs/id/managed-settings#where-and-when-a-policy-applies) mencakup Cowork dan sesi cloud.

523 523 

524Jika Anda adalah administrator, [Siapkan Claude Code untuk organisasi Anda](/docs/id/admin-setup) memandu memilih apa yang akan diterapkan, dan [Terapkan pengaturan terkelola](/docs/id/managed-settings) mencakup pengiriman dan cara mengonfirmasi kebijakan berlaku.524Jika Anda adalah administrator, [Siapkan Claude Code untuk organisasi Anda](/docs/id/admin-setup) memandu memilih apa yang akan diterapkan, dan [Terapkan pengaturan terkelola](/docs/id/managed-settings) mencakup pengiriman dan cara mengonfirmasi kebijakan berlaku. Untuk peringatan yang dapat ditampilkan oleh editor pengaturan terkelola di konsol admin claude.ai, lihat [Konfigurasi pengaturan terkelola server](/docs/id/server-managed-settings#configure-server-managed-settings).

525 525 

526<h2 id="change-a-setting">526<h2 id="change-a-setting">

527 Ubah pengaturan527 Ubah pengaturan


809 809 

810Sesi [cloud](/docs/id/claude-code-on-the-web) berjalan di [lingkungan cloud](/docs/id/cloud-environments) pada klon segar repositori Anda, bukan di mesin Anda. Itu mengubah pengaturan mana yang mencapainya:810Sesi [cloud](/docs/id/claude-code-on-the-web) berjalan di [lingkungan cloud](/docs/id/cloud-environments) pada klon segar repositori Anda, bukan di mesin Anda. Itu mengubah pengaturan mana yang mencapainya:

811 811 

812* **Pengaturan proyek bersama** (`.claude/settings.json`): dibaca dalam sesi dengan satu repositori, karena file adalah bagian dari klon dan sesi dimulai di dalamnya. Komit pengaturan di sana untuk menerapkannya dalam sesi tersebut. Sesi dengan beberapa repositori dimulai di atas klon dan membaca hanya kunci `enabledPlugins` dan `extraKnownMarketplaces` dari `.claude/settings.json` setiap repositori, bukan aturan izin, hooks, `env`, atau kunci lainnya. Marketplace dan plugin yang dideklarasikan oleh dua kunci tersebut masih [tidak dimuat dalam sesi cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup).812* **Pengaturan proyek bersama** (`.claude/settings.json`): dibaca dalam sesi dengan satu repositori, karena file adalah bagian dari klon dan sesi dimulai di dalamnya. Lakukan commit pengaturan di sana untuk menerapkannya dalam sesi tersebut. Dalam lingkungan yang di-host Anthropic, sesi dengan beberapa repositori dimulai di atas klon dan membaca hanya kunci `enabledPlugins` dan `extraKnownMarketplaces` dari `.claude/settings.json` setiap repositori, bukan aturan izin, hook, `env`, atau kunci lainnya. Marketplace dan plugin yang dideklarasikan oleh dua kunci tersebut masih [tidak dimuat dalam sesi cloud](/docs/id/cloud-environments#what-carries-over-from-your-setup). Untuk lingkungan yang di-host sendiri, lihat [pengaturan repositori mana yang berlaku](/docs/id/self-hosted-environments-configuration#repository-settings-in-sessions-with-several-repositories).

813* **Pengaturan pengguna dan proyek lokal** (`~/.claude/settings.json` dan `.claude/settings.local.json`): tidak dibaca. Keduanya tetap di mesin Anda, dan file lokal tidak ada dalam klon.813* **Pengaturan pengguna dan proyek lokal** (`~/.claude/settings.json` dan `.claude/settings.local.json`): tidak dibaca. Keduanya tetap di mesin Anda, dan file lokal tidak ada dalam klon.

814* **Pengaturan yang dikelola**: file `managed-settings.json` atau profil MDM di perangkat Anda tidak mencapai sesi cloud. [Pengaturan yang dikelola server](/docs/id/server-managed-settings) organisasi Anda melakukannya; [cakupan permukaan](/docs/id/model-config#surface-coverage) mencantumkan sesi cloud mana yang menerimanya. [Lingkungan yang di-host sendiri](/docs/id/self-hosted-environments) juga membaca file pengaturan yang dikelola dalam gambar runner-nya. [Bagaimana Claude Code menggabungkan sumber yang dikelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) mengatakan kapan file itu berlaku.814* **Pengaturan yang dikelola**: file `managed-settings.json` atau profil MDM di perangkat Anda tidak mencapai sesi cloud. [Pengaturan yang dikelola server](/docs/id/server-managed-settings) organisasi Anda melakukannya; [cakupan permukaan](/docs/id/model-config#surface-coverage) mencantumkan sesi cloud mana yang menerimanya. [Lingkungan yang di-host sendiri](/docs/id/self-hosted-environments) juga membaca file pengaturan yang dikelola dalam gambar runner-nya. [Bagaimana Claude Code menggabungkan sumber yang dikelola](/docs/id/managed-settings#how-claude-code-combines-managed-sources) mengatakan kapan file itu berlaku.

815* **`/config`**: di browser Anda di claude.ai/code, membuka bagian Claude Code dari pengaturan claude.ai Anda daripada mengubah nilai. Untuk mengubah pengaturan untuk sesi cloud, atur [variabel lingkungan](/docs/id/cloud-environments#set-environment-variables) di lingkungan, atau dalam sesi dengan satu repositori, komit kunci ke `.claude/settings.json` repositori tersebut.815* **`/config`**: di browser Anda di claude.ai/code, membuka bagian Claude Code dari pengaturan claude.ai Anda daripada mengubah nilai. Untuk mengubah pengaturan untuk sesi cloud, atur [variabel lingkungan](/docs/id/cloud-environments#set-environment-variables) di lingkungan, atau dalam sesi dengan satu repositori, komit kunci ke `.claude/settings.json` repositori tersebut.

skills.md +2 −0

Details

94| `migrate` | Memperbarui kode Claude API Anda yang sudah ada ke model yang lebih baru | Lebih awal dari v2.1.221 |94| `migrate` | Memperbarui kode Claude API Anda yang sudah ada ke model yang lebih baru | Lebih awal dari v2.1.221 |

95| `upgrade` | Memindahkan dependensi Anthropic SDK proyek Anda melintasi versi mayor, saat ini paket Python `anthropic` dari 0.x ke 1.x | v2.1.236 atau yang lebih baru |95| `upgrade` | Memindahkan dependensi Anthropic SDK proyek Anda melintasi versi mayor, saat ini paket Python `anthropic` dari 0.x ke 1.x | v2.1.236 atau yang lebih baru |

96| `managed-agents-onboard` | Memandu pembuatan Managed Agent baru | Lebih awal dari v2.1.221 |96| `managed-agents-onboard` | Memandu pembuatan Managed Agent baru | Lebih awal dari v2.1.221 |

97| `managed-agents-onboard <url>` | Membangun Managed Agent yang dijelaskan oleh halaman di URL tersebut, seperti halaman di [dokumentasi Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) | v2.1.290 atau yang lebih baru |

98| `managed-agents-onboard <quickstart-name>` | Membangun salah satu template mulai cepat Console, seperti `deep-researcher`. Jika Anda memberikan satu kata yang bukan nama template, Claude mencantumkan nama-nama yang valid | v2.1.290 atau yang lebih baru |

97| `prompt-audit` | Menandai instruksi yang ditulis untuk model lama di prompt, skill, dan deskripsi tool Anda serta mengusulkan perbaikan sebagai diff | v2.1.221 atau yang lebih baru |99| `prompt-audit` | Menandai instruksi yang ditulis untuk model lama di prompt, skill, dan deskripsi tool Anda serta mengusulkan perbaikan sebagai diff | v2.1.221 atau yang lebih baru |

98| `cost-optimize` | Memprofilkan ke mana pengeluaran Claude API proyek Anda digunakan dan mengusulkan penghematan dari opsi seperti prompt caching, memangkas token input dan output yang tidak diperlukan, pemrosesan batch, effort, dan pilihan model, satu perubahan dalam satu waktu | v2.1.247 atau yang lebih baru |100| `cost-optimize` | Memprofilkan ke mana pengeluaran Claude API proyek Anda digunakan dan mengusulkan penghematan dari opsi seperti prompt caching, memangkas token input dan output yang tidak diperlukan, pemrosesan batch, effort, dan pilihan model, satu perubahan dalam satu waktu | v2.1.247 atau yang lebih baru |

99| `build-eval` | Membangun set eval untuk aplikasi Anda yang didukung Claude | v2.1.259 atau yang lebih baru |101| `build-eval` | Membangun set eval untuk aplikasi Anda yang didukung Claude | v2.1.259 atau yang lebih baru |

sub-agents.md +4 −2

Details

609Mode izin percakapan utama memutuskan apakah Claude Code menggunakan nilai yang Anda atur:609Mode izin percakapan utama memutuskan apakah Claude Code menggunakan nilai yang Anda atur:

610 610 

611* Ketika percakapan utama berada dalam `bypassPermissions`, `acceptEdits`, atau [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), subagent berjalan dalam mode yang sama dan Claude Code mengabaikan `permissionMode` yang Anda atur. Di bawah auto mode, pengklasifikasi mengevaluasi panggilan tool subagent dengan aturan blok dan izin percakapan utama. Ketika subagent selesai, pengklasifikasi juga meninjau pekerjaan dan laporan finalnya sebelum laporan dikirimkan, seperti [How auto mode handles subagents](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) menjelaskan.611* Ketika percakapan utama berada dalam `bypassPermissions`, `acceptEdits`, atau [auto mode](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), subagent berjalan dalam mode yang sama dan Claude Code mengabaikan `permissionMode` yang Anda atur. Di bawah auto mode, pengklasifikasi mengevaluasi panggilan tool subagent dengan aturan blok dan izin percakapan utama. Ketika subagent selesai, pengklasifikasi juga meninjau pekerjaan dan laporan finalnya sebelum laporan dikirimkan, seperti [How auto mode handles subagents](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) menjelaskan.

612* Ketika percakapan utama berada dalam mode `default`, `dontAsk`, atau `plan`, subagent berjalan dalam mode izin yang Anda atur, kecuali `bypassPermissions`. Subagent yang mendeklarasikan `bypassPermissions` menyimpan mode percakapan utama sebagai gantinya. Pengecualian `bypassPermissions` memerlukan Claude Code v2.1.267 atau lebih baru.612* Ketika percakapan utama berada dalam mode `default`, `dontAsk`, atau `plan`, subagent berjalan dalam mode izin yang Anda atur. Subagent tetap menggunakan mode izin percakapan utama dalam kasus berikut:

613 * Anda mengatur `bypassPermissions`. Pengecualian `bypassPermissions` memerlukan Claude Code v2.1.267 atau lebih baru.

614 * Anda mengatur `auto` dan [auto mode tidak tersedia](/docs/id/permission-modes#eliminate-prompts-with-auto-mode) untuk subagent, seperti ketika file pengaturan mengatur [`disableAutoMode`](/docs/id/settings-reference#disableautomode) atau model subagent tidak mendukung auto mode.

613 615 

614`permissionMode` menerima nilai ini, dan `manual` sebagai alias untuk `default`:616`permissionMode` menerima nilai ini, dan `manual` sebagai alias untuk `default`:

615 617 


640Implement API endpoints. Follow the conventions and patterns from the preloaded skills.642Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

641```643```

642 644 

643Konten lengkap dari setiap skill yang tercantum disuntikkan ke dalam konteks subagent saat startup. Field ini mengontrol skill mana yang dimuat sebelumnya, bukan skill mana yang dapat diakses subagent: tanpanya, subagent masih dapat menemukan dan memanggil skill proyek, pengguna, dan plugin melalui tool Skill selama eksekusi. Untuk mencegah subagent dari memanggil skill sepenuhnya, hilangkan `Skill` dari daftar [`tools`](#available-tools) atau tambahkan ke `disallowedTools`.645Konten lengkap dari setiap skill yang tercantum disuntikkan ke dalam konteks subagent saat startup, hingga 32 nama berbeda pertama dalam daftar. Field ini mengontrol skill mana yang dimuat sebelumnya, bukan skill mana yang dapat diakses subagent: tanpanya, subagent masih dapat menemukan dan memanggil skill proyek, pengguna, dan plugin melalui tool Skill selama eksekusi. Untuk mencegah subagent dari memanggil skill sepenuhnya, hilangkan `Skill` dari daftar [`tools`](#available-tools) atau tambahkan ke `disallowedTools`.

644 646 

645Anda tidak dapat memuat skill sebelumnya yang mengatur [`disable-model-invocation: true`](/docs/id/skills#control-who-invokes-a-skill), karena memuat sebelumnya menarik dari set skill yang sama yang dapat dipanggil Claude. Ini termasuk skill `/verify` bundel, yang tidak dapat dijalankan Claude dengan sendirinya.647Anda tidak dapat memuat skill sebelumnya yang mengatur [`disable-model-invocation: true`](/docs/id/skills#control-who-invokes-a-skill), karena memuat sebelumnya menarik dari set skill yang sama yang dapat dipanggil Claude. Ini termasuk skill `/verify` bundel, yang tidak dapat dijalankan Claude dengan sendirinya.

646 648 

Details

666 666 

667* WebFetch menolak `localhost` dan nama host lainnya tanpa titik, seperti nama intranet biasa, sebelum membuat permintaan. [Kesalahan yang dikembalikannya](/docs/id/errors#webfetch-cannot-fetch-localhost) memberitahu Claude untuk menjangkau server lokal dengan `curl` melalui Bash sebagai gantinya.667* WebFetch menolak `localhost` dan nama host lainnya tanpa titik, seperti nama intranet biasa, sebelum membuat permintaan. [Kesalahan yang dikembalikannya](/docs/id/errors#webfetch-cannot-fetch-localhost) memberitahu Claude untuk menjangkau server lokal dengan `curl` melalui Bash sebagai gantinya.

668* URL HTTP secara otomatis ditingkatkan ke HTTPS.668* URL HTTP secara otomatis ditingkatkan ke HTTPS.

669* Halaman besar dipotong ke batas karakter tetap sebelum diproses.669* WebFetch membaca hingga 100.000 karakter konten halaman per panggilan. Pada Claude Code v2.1.290 atau lebih baru, hasil untuk halaman yang lebih panjang memberi tahu Claude berapa banyak yang belum terbaca, sehingga Claude dapat mengambil bagian berikutnya.

670* WebFetch menyimpan cache setiap respons selama 15 menit secara default, jadi pengambilan berulang dari URL yang sama kembali dengan cepat. Pada Claude Code v2.1.233 atau lebih baru, atur [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/id/env-vars#variables) untuk mengubah berapa lama WebFetch menyimpan setiap respons.670* WebFetch menyimpan cache setiap respons selama 15 menit secara default, jadi pengambilan berulang dari URL yang sama kembali dengan cepat. Pada Claude Code v2.1.233 atau lebih baru, atur [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/id/env-vars#variables) untuk mengubah berapa lama WebFetch menyimpan setiap respons.

671* Halaman yang belum selesai diunduh dalam lima menit, termasuk pengalihan apa pun yang diikuti WebFetch, gagal dengan kesalahan batas waktu. Pada Claude Code v2.1.268 atau lebih baru, atur [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/id/env-vars#variables) untuk mengubah batas, atau ke `0` untuk menghapusnya.671* Halaman yang belum selesai diunduh dalam lima menit, termasuk pengalihan apa pun yang diikuti WebFetch, gagal dengan kesalahan batas waktu. Pada Claude Code v2.1.268 atau lebih baru, atur [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/id/env-vars#variables) untuk mengubah batas, atau ke `0` untuk menghapusnya.

672* Ketika URL dialihkan ke host yang berbeda, WebFetch mengembalikan hasil teks yang menyebutkan URL asli dan target pengalihan alih-alih mengikutinya. Claude kemudian mengambil URL baru dengan panggilan WebFetch kedua.672* Ketika URL dialihkan ke host yang berbeda, WebFetch mengembalikan hasil teks yang menyebutkan URL asli dan target pengalihan alih-alih mengikutinya. Claude kemudian mengambil URL baru dengan panggilan WebFetch kedua.

ultrareview.md +6 −6

Details

56 Tinjau pull request56 Tinjau pull request

57</h3>57</h3>

58 58 

59Untuk meninjau pull request GitHub sebagai gantinya dari cabang lokal, teruskan nomor PR:59Untuk meninjau pull request di `github.com` alih-alih branch lokal, teruskan nomor PR:

60 60 

61```text theme={null}61```text theme={null}

62/code-review ultra 123462/code-review ultra 1234


64 64 

65Perintah juga menerima `#1234`, `PR 1234`, dan URL PR yang ditempel; URL yang ditempel harus menunjuk ke repositori di direktori saat ini Anda.65Perintah juga menerima `#1234`, `PR 1234`, dan URL PR yang ditempel; URL yang ditempel harus menunjuk ke repositori di direktori saat ini Anda.

66 66 

67Dalam mode PR, sandbox jarak jauh mengkloning pull request langsung dari host daripada membundel pohon kerja lokal Anda. Mode PR bekerja dengan repositori di `github.com` dan pada instans [GitHub Enterprise Server](/docs/id/github-enterprise-server) yang telah dihubungkan oleh Owner ke Claude Code.67Mode PR memerlukan repositori di `github.com`. Untuk repositori pada instans [GitHub Enterprise Server](/docs/id/github-enterprise-server), jalankan `/code-review ultra` tanpa nomor PR untuk meninjau branch lokal Anda sebagai gantinya.

68 68 

69Untuk repositori di `github.com`, sandbox mengkloning dengan akun GitHub yang terhubung ke akun Claude Anda, jadi akun harus dapat membaca repositori PR.69Dalam mode PR, sandbox cloud mengkloning pull request dari `github.com` alih-alih mengunggah pohon kerja Anda. Sandbox menggunakan akun GitHub yang terhubung ke akun Claude Anda, jadi akun tersebut memerlukan akses baca ke repositori.

70 70 

71Jalankan [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda.71Jalankan [`/web-setup`](/docs/id/web-quickstart#connect-from-your-terminal) untuk menghubungkan login GitHub CLI Anda ke akun Claude Anda.

72 72 


74 Posting temuan ke pull request74 Posting temuan ke pull request

75</h3>75</h3>

76 76 

77Pada Claude Code v2.1.227 atau lebih baru, ketika Anda meninjau pull request di `github.com`, Anda dapat membuat Claude memposting temuan yang selesai ke PR sebagai komentar polos tunggal dari akun GitHub Anda sendiri. Komentar bukan tinjauan atau persetujuan, dan berakhir dengan catatan "Generated by Claude Code". Ketika Anda meninjau cabang atau pull request GitHub Enterprise Server, Claude Code menampilkan temuan di sesi Anda saja.77Pada Claude Code v2.1.227 atau lebih baru, ketika Anda meninjau pull request di `github.com`, Anda dapat membuat Claude memposting temuan yang selesai ke PR sebagai komentar polos tunggal dari akun GitHub Anda sendiri. Komentar bukan tinjauan atau persetujuan, dan berakhir dengan catatan "Generated by Claude Code". Ketika Anda meninjau branch, Claude Code menampilkan temuan di sesi Anda saja.

78 78 

79Claude Code tidak pernah memposting kecuali Anda memilih untuk melakukannya pada run itu, dan `--no-post` adalah default. Posting adalah pilihan yang Anda buat untuk setiap run:79Claude Code tidak pernah memposting kecuali Anda memilih untuk melakukannya pada run itu, dan `--no-post` adalah default. Posting adalah pilihan yang Anda buat untuk setiap run:

80 80 


106Claude Code memperlakukan teks Anda sebagai catatan hanya ketika memiliki lebih dari satu kata dan bukan nama cabang atau referensi PR. Ini membaca satu kata sebagai nama cabang atau referensi PR, jadi nama cabang yang salah ketik mendapat kesalahan cabang terdekat dari [Tinjau terhadap basis yang berbeda](#review-against-a-different-base) sebagai gantinya meluncurkan dengan catatan. Jika teks Anda menggabungkan referensi PR dengan kata-kata lain, seperti `check PR 123 again`, Claude Code juga tidak meluncurkan; itu meminta Anda untuk menjalankan kembali dengan nomor PR saja untuk meninjau PR itu, atau tanpa referensi untuk meninjau cabang saat ini Anda.106Claude Code memperlakukan teks Anda sebagai catatan hanya ketika memiliki lebih dari satu kata dan bukan nama cabang atau referensi PR. Ini membaca satu kata sebagai nama cabang atau referensi PR, jadi nama cabang yang salah ketik mendapat kesalahan cabang terdekat dari [Tinjau terhadap basis yang berbeda](#review-against-a-different-base) sebagai gantinya meluncurkan dengan catatan. Jika teks Anda menggabungkan referensi PR dengan kata-kata lain, seperti `check PR 123 again`, Claude Code juga tidak meluncurkan; itu meminta Anda untuk menjalankan kembali dengan nomor PR saja untuk meninjau PR itu, atau tanpa referensi untuk meninjau cabang saat ini Anda.

107 107 

108<Tip>108<Tip>

109 Jika repositori Anda terlalu besar untuk dibundel, Claude Code meminta Anda menggunakan mode PR sebagai gantinya. Dorong cabang Anda dan buka PR draft, kemudian jalankan `/code-review ultra <PR-number>`.109 Jika repositori Anda terlalu besar untuk dibundel, Claude Code meminta Anda menggunakan mode PR sebagai gantinya. Untuk repositori di `github.com`, push branch Anda dan buka PR draft, kemudian jalankan `/code-review ultra <PR-number>`.

110</Tip>110</Tip>

111 111 

112<h3 id="diff-limits-and-fallbacks">112<h3 id="diff-limits-and-fallbacks">


173claude ultrareview origin/main173claude ultrareview origin/main

174```174```

175 175 

176Tanpa argumen, subperintah meninjau perbedaan antara cabang saat ini Anda dan cabang default, dengan [fallback seluruh repositori](#diff-limits-and-fallbacks) yang sama seperti `/code-review ultra` ketika tidak ada merge base. Teruskan nomor PR untuk meninjau pull request, atau teruskan cabang dasar untuk meninjau terhadapnya; [penanganan cabang dasar](#review-against-a-different-base) cocok dengan perintah interaktif.176Tanpa argumen, subperintah meninjau diff antara branch Anda saat ini dan branch default, dengan [fallback seluruh repositori](#diff-limits-and-fallbacks) yang sama seperti `/code-review ultra` ketika tidak ada merge base. Teruskan nomor PR untuk [meninjau pull request di `github.com`](#review-a-pull-request), atau teruskan branch dasar untuk meninjau terhadapnya; [penanganan branch dasar](#review-against-a-different-base) cocok dengan perintah interaktif.

177 177 

178Anda menyetujui fallback seluruh repositori dan prompt penagihan serta syarat ketika Anda menjalankan subperintah, sehingga jalankan dimulai tanpa menunggu input. Menjalankannya sendiri adalah apa yang dihitung sebagai persetujuan. Ketika Claude menjalankan subperintah untuk Anda sebagai gantinya, misalnya melalui alat Bash, Claude Code menolak tinjauan seluruh repositori.178Anda menyetujui fallback seluruh repositori dan prompt penagihan serta syarat ketika Anda menjalankan subperintah, sehingga jalankan dimulai tanpa menunggu input. Menjalankannya sendiri adalah apa yang dihitung sebagai persetujuan. Ketika Claude menjalankan subperintah untuk Anda sebagai gantinya, misalnya melalui alat Bash, Claude Code menolak tinjauan seluruh repositori.

179 179 

workflows.md +27 −1

Details

354 354 

355Badan adalah JavaScript biasa dengan `await` tingkat atas. `agent()` menghasilkan satu subagen, `pipeline()` menjalankan satu per item dalam daftar, dan `parallel()` menjalankan serangkaian tugas agen pada waktu yang sama dan menunggu semuanya selesai.355Badan adalah JavaScript biasa dengan `await` tingkat atas. `agent()` menghasilkan satu subagen, `pipeline()` menjalankan satu per item dalam daftar, dan `parallel()` menjalankan serangkaian tugas agen pada waktu yang sama dan menunggu semuanya selesai.

356 356 

357Panggilan `agent()` diselesaikan ke `null` jika Anda menghentikannya di tengah-jalan atau mengalami kesalahan API yang tidak dapat dipulihkan. `pipeline()` menyimpan setiap `null` dalam array hasil, itulah mengapa contoh berakhir dengan `.filter(Boolean)` untuk menghapus entri tersebut.357Panggilan `agent()` diselesaikan ke `null` jika Anda menghentikannya di tengah-jalan atau mengalami kesalahan API yang tidak dapat dipulihkan. `pipeline()` menyimpan setiap `null` dalam array hasil, itulah mengapa contoh berakhir dengan `.filter(Boolean)` untuk menghapus entri tersebut, termasuk slot dari [agent yang macet pada setiap upaya](#when-an-agent-stalls-and-restarts).

358 358 

359Dalam [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), prompt yang diteruskan skrip Anda ke `agent()` tidak dihitung sebagai permintaan dari Anda ketika pengklasifikasi meninjau tindakan subagen itu, karena Claude Code menandainya sebagai teks yang dihitung skrip.359Dalam [mode otomatis](/docs/id/permission-modes#eliminate-prompts-with-auto-mode), prompt yang diteruskan skrip Anda ke `agent()` tidak dihitung sebagai permintaan dari Anda ketika pengklasifikasi meninjau tindakan subagen itu, karena Claude Code menandainya sebagai teks yang dihitung skrip.

360 360 


463* Batas direset dalam 24 jam. Batas mingguan dapat direset lebih jauh.463* Batas direset dalam 24 jam. Batas mingguan dapat direset lebih jauh.

464* Run belum menunggu dua kali. Ketika mencapai batas untuk ketiga kalinya, agen gagal.464* Run belum menunggu dua kali. Ketika mencapai batas untuk ketiga kalinya, agen gagal.

465 465 

466<h3 id="when-an-agent-stalls-and-restarts">

467 Ketika agent macet dan dimulai ulang

468</h3>

469 

470Agent yang outputnya berhenti datang cukup lama akan dimulai ulang dari prompt yang sama. Di [`/workflows`](#watch-the-run), namanya mendapat akhiran `(retry 1)` dan detailnya menampilkan `attempt 2 (stalled)`. Mulai ulang terjadi secara otomatis, jadi Anda tidak perlu melakukan apa pun.

471 

472Percobaan baru dimulai tanpa transkrip dari percobaan yang macet. File yang sudah diubah oleh percobaan yang macet tetap berubah, dan token yang dihabiskannya tetap masuk dalam total run. Jendela macet adalah berapa lama Claude Code menunggu output dari agent sebelum mengakhiri percobaan. Waktu yang dihabiskan agent untuk menunggu panggilan tool-nya sendiri atau [reset batas penggunaan](#when-a-run-hits-your-usage-limit) tidak dihitung dalam jendela macet.

473 

474Agent dimulai ulang paling banyak lima kali, termasuk mulai ulang yang Anda minta dengan `r`. Jika percobaan keenam juga macet, panggilan `agent()` gagal, dan awal pesan kesalahan menjelaskan alasannya:

475 

476* `agent stalled on all 6 attempts`: setiap percobaan melewati seluruh jendela tanpa output. Jika pekerjaan agent membuatnya diam selama itu, perpanjang jendelanya

477* `agent lost its reply on all 6 attempts`: stream respons setiap percobaan menjadi diam dan Claude Code berhenti menunggunya. Memperpanjang jendela macet tidak membantu, karena [streaming idle watchdog](/docs/id/network-config#streaming-idle-watchdogs) mengakhiri respons lebih dulu dan `CLAUDE_STREAM_IDLE_TIMEOUT_MS` mengatur timeout watchdog tersebut

478* `agent abandoned after 6 attempts`: percobaan berakhir dengan cara yang berbeda-beda, yang dicantumkan oleh pesan kesalahan secara berurutan

479 

480Untuk memberi agent lebih banyak waktu menghasilkan output sebelum jendela berakhir:

481 

482* **Satu agent**: teruskan `stallMs` dalam milidetik pada panggilan `agent()`-nya, seperti `agent(prompt, { stallMs: 1800000 })` untuk 30 menit

483* **Setiap agent**: atur [`CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`](/docs/id/env-vars#variables), yang juga berlaku untuk subagent di luar alur kerja

484 

485Apakah run berlanjut setelah kegagalan tergantung pada cara skrip Anda memanggil agent:

486 

487* **Di dalam [`parallel()` atau `pipeline()`](#what-the-saved-script-looks-like)**: run berlanjut dengan `null` sebagai pengganti hasil agent

488* **Di-await secara langsung**: run berakhir dengan kesalahan tersebut

489 

490Untuk mencoba lagi, minta Claude untuk meluncurkan kembali alur kerja. [Lanjutkan setelah jeda](#resume-after-a-pause) menjelaskan apa yang berjalan lagi.

491 

466<h3 id="cost">492<h3 id="cost">

467 Biaya493 Biaya

468</h3>494</h3>

worktrees.md +1 −1

Details

104* **Pengalihan git**: Claude Code memblokir perintah Bash atau Monitor yang mengalihkan git ke checkout utama. Pengalihan dapat datang melalui `git -C`, `--git-dir`, variabel `GIT_DIR` atau `GIT_WORK_TREE`, atau `cd` ke checkout utama sebelum menjalankan git.104* **Pengalihan git**: Claude Code memblokir perintah Bash atau Monitor yang mengalihkan git ke checkout utama. Pengalihan dapat datang melalui `git -C`, `--git-dir`, variabel `GIT_DIR` atau `GIT_WORK_TREE`, atau `cd` ke checkout utama sebelum menjalankan git.

105* **Bentuk perintah**: Claude Code memblokir perintah Bash atau Monitor saat tidak dapat memverifikasi dari teks perintah bahwa git apa pun yang dijalankan perintah tetap berada di dalam worktree. Itu terjadi, misalnya, saat nama perintah dihitung saat runtime, saat sintaks tidak dapat diuraikan, atau saat ekspansi seperti `${!name}` atau `${ command; }` dapat menjalankan perintah yang teks tidak jelaskan. Claude Code memberi tahu Claude cara menulis ulang perintah yang ditolak, seperti membaginya menjadi perintah biasa yang terpisah. Anda tidak dapat mematikan pemeriksaan ini.105* **Bentuk perintah**: Claude Code memblokir perintah Bash atau Monitor saat tidak dapat memverifikasi dari teks perintah bahwa git apa pun yang dijalankan perintah tetap berada di dalam worktree. Itu terjadi, misalnya, saat nama perintah dihitung saat runtime, saat sintaks tidak dapat diuraikan, atau saat ekspansi seperti `${!name}` atau `${ command; }` dapat menjalankan perintah yang teks tidak jelaskan. Claude Code memberi tahu Claude cara menulis ulang perintah yang ditolak, seperti membaginya menjadi perintah biasa yang terpisah. Anda tidak dapat mematikan pemeriksaan ini.

106 106 

107Pemeriksaan ini membaca jalur yang ditargetkan oleh sebuah edit, direktori tempat perintah dijalankan, dan teks perintah. Tidak satu pun dari pemeriksaan ini melacak file mana yang ditulis oleh perintah shell, sehingga perintah yang menulis ke checkout utama tanpa menjalankan git di sana, seperti `cp` atau pengalihan shell, tidak ditolak olehnya. Claude Code memperlakukan perintah tersebut seperti perintah shell lainnya, sehingga apakah perintah itu dijalankan atau Claude Code meminta persetujuan Anda bergantung pada [mode izin](/docs/id/permission-modes) dan aturan Anda.107Pemeriksaan ini membaca jalur yang ditargetkan oleh sebuah edit, direktori tempat perintah dijalankan, dan teks perintah. Tidak satu pun dari pemeriksaan ini melacak file mana yang ditulis oleh perintah shell, sehingga perintah yang menulis ke checkout utama tanpa menjalankan git di sana, seperti `cp` atau pengalihan shell, tidak ditolak olehnya. Claude Code memperlakukan perintah tersebut seperti perintah shell lainnya berdasarkan pengaturan [izin](/docs/id/permissions) dan [sandboxing](/docs/id/sandboxing) Anda.

108 108 

109Pemeriksaan berlaku untuk repositori tempat Anda meluncurkan Claude Code. Mereka juga mencakup checkout utama yang ditautkan worktree ditautkan darinya. Untuk perintah PowerShell, Claude Code hanya menerapkan pemeriksaan direktori kerja.109Pemeriksaan berlaku untuk repositori tempat Anda meluncurkan Claude Code. Mereka juga mencakup checkout utama yang ditautkan worktree ditautkan darinya. Untuk perintah PowerShell, Claude Code hanya menerapkan pemeriksaan direktori kerja.

110 110