SpyBara
Go Premium

Documentation 2026-10-26 22:57 UTC to 2026-10-27 22:59 UTC

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

79| `Permission Required:` | Permintaan izin yang menunggu jawaban Anda |79| `Permission Required:` | Permintaan izin yang menunggu jawaban Anda |

80| `Cost:` | Ringkasan biaya sesi ketika Claude Code keluar, jika akun Anda [menampilkan biaya](https://code.claude.com/docs/id/costs.md) |80| `Cost:` | Ringkasan biaya sesi ketika Claude Code keluar, jika akun Anda [menampilkan biaya](https://code.claude.com/docs/id/costs.md) |

81 81 

82Claude Code menjaga kursor terminal pada tanda sisip input, sehingga perintah baca-baris-saat-ini pembaca layar Anda membaca prompt yang Anda edit.82Claude Code menjaga kursor terminal pada tanda sisip input, sehingga perintah baca-baris-saat-ini pembaca layar Anda membaca prompt yang Anda edit. Saat Anda mengetik di akhir baris input, atau menekan `Backspace` di sana, Claude Code hanya menulis karakter yang berubah. Pembaca layar Anda mengulangi hanya karakter tersebut.

83 

84Saat Anda mengetik di akhir baris input, atau tekan `Backspace` di sana, Claude Code hanya menulis karakter yang berubah. Pembaca layar Anda mengulangi hanya karakter tersebut.

85 83 

86Ketika Anda menghapus kata atau baris dengan salah satu [pintasan pengeditan teks](https://code.claude.com/docs/id/interactive-mode.md#text-editing), Claude Code mengumumkan teks yang dihapus:84Ketika Anda menghapus kata atau baris dengan salah satu [pintasan pengeditan teks](https://code.claude.com/docs/id/interactive-mode.md#text-editing), Claude Code mengumumkan teks yang dihapus:

87 85 

admin-setup.md +1 −0

Details

191* [Server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md): kirimkan kebijakan terkelola dari konsol admin Claude191* [Server-managed settings](https://code.claude.com/docs/id/server-managed-settings.md): kirimkan kebijakan terkelola dari konsol admin Claude

192* [All settings](https://code.claude.com/docs/id/settings-reference.md): setiap kunci pengaturan, dengan lokasi file dan contohnya192* [All settings](https://code.claude.com/docs/id/settings-reference.md): setiap kunci pengaturan, dengan lokasi file dan contohnya

193* [Which value Claude Code uses](https://code.claude.com/docs/id/settings.md#which-value-claude-code-uses): aturan prioritas di seluruh pengaturan terkelola, proyek, lokal, dan pengguna193* [Which value Claude Code uses](https://code.claude.com/docs/id/settings.md#which-value-claude-code-uses): aturan prioritas di seluruh pengaturan terkelola, proyek, lokal, dan pengguna

194* [Manage plugins for your organization](https://code.claude.com/docs/id/plugins/org.md): instal plugin bersama di setiap mesin melalui pengaturan terkelola

194* [Monorepos and large repos](https://code.claude.com/docs/id/large-codebases.md): pola konfigurasi per-direktori untuk organisasi yang menerapkan ke dalam monorepo195* [Monorepos and large repos](https://code.claude.com/docs/id/large-codebases.md): pola konfigurasi per-direktori untuk organisasi yang menerapkan ke dalam monorepo

195* [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md): penerapan khusus penyedia196* [Amazon Bedrock](https://code.claude.com/docs/id/amazon-bedrock.md), [Google Cloud's Agent Platform](https://code.claude.com/docs/id/google-vertex-ai.md), [Microsoft Foundry](https://code.claude.com/docs/id/microsoft-foundry.md): penerapan khusus penyedia

196* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, manajemen kursi, dan playbook peluncuran197* [Claude Enterprise Administrator Guide](https://claude.com/resources/tutorials/claude-enterprise-administrator-guide): SSO, SCIM, manajemen kursi, dan playbook peluncuran

Details

41 41 

42Itu adalah empat turns: tiga dengan tool calls, satu respons hanya teks final.42Itu adalah empat turns: tiga dengan tool calls, satu respons hanya teks final.

43 43 

44Anda dapat membatasi loop dengan `max_turns` / `maxTurns`, yang menghitung tool-use turns saja. Misalnya, `max_turns=2` dalam loop di atas akan berhenti sebelum langkah edit. Anda juga dapat menggunakan `max_budget_usd` / `maxBudgetUsd` untuk membatasi turns berdasarkan threshold pengeluaran.44Anda dapat membatasi loop dengan `max_turns` / `maxTurns`. Hitung setiap turn yang memiliki tool calls, ditambah satu untuk respons final hanya teks. Tanpa turn tambahan tersebut, proses berakhir dengan `ResultMessage` bersubtipe `error_max_turns` dan tanpa respons final. Misalnya, `max_turns=2` dalam loop di atas akan berhenti sebelum langkah edit. Anda juga dapat menggunakan `max_budget_usd` / `maxBudgetUsd` untuk membatasi turns berdasarkan threshold pengeluaran.

45 45 

46Tanpa batas, loop berjalan sampai Claude selesai sendiri, yang baik untuk tugas yang well-scoped tetapi dapat berjalan lama pada prompts open-ended ("improve this codebase"). Menetapkan budget adalah default yang baik untuk production agents. Lihat [Turns dan budget](#turns-and-budget) di bawah untuk referensi opsi.46Tanpa batas, loop berjalan sampai Claude selesai sendiri, yang baik untuk tugas yang well-scoped tetapi dapat berjalan lama pada prompts open-ended ("improve this codebase"). Menetapkan budget adalah default yang baik untuk production agents. Lihat [Turns dan budget](#turns-and-budget) di bawah untuk referensi opsi.

47 47 


191 191 

192| Opsi | Apa yang dikontrolnya | Default |192| Opsi | Apa yang dikontrolnya | Default |

193| :- | :- | :- |193| :- | :- | :- |

194| Max turns (`max_turns` / `maxTurns`) | Maximum tool-use round trips | Tidak ada batas |194| Max turns (`max_turns` / `maxTurns`) | Jumlah maksimum [giliran](#turns-and-messages) | Tidak ada batas |

195| Max budget (`max_budget_usd` / `maxBudgetUsd`) | Perkiraan pengeluaran saat loop berhenti | Tidak ada batas |195| Max budget (`max_budget_usd` / `maxBudgetUsd`) | Perkiraan pengeluaran saat loop berhenti | Tidak ada batas |

196 196 

197Ketika 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`](https://code.claude.com/docs/id/agent-sdk/python#claudeagentoptions) / [`Options`](https://code.claude.com/docs/id/agent-sdk/typescript#options) untuk syntax.197Ketika 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`](https://code.claude.com/docs/id/agent-sdk/python#claudeagentoptions) / [`Options`](https://code.claude.com/docs/id/agent-sdk/typescript#options) untuk syntax.

Details

161 161 

162Kedua bahasa memiliki setter yang sama:162Kedua bahasa memiliki setter yang sama:

163 163 

164* **`setModel()` / `set_model()`**: mengganti model. Panggilnya tanpa model untuk beralih ke [model default Claude Code](https://code.claude.com/docs/id/model-config.md#default-model-setting) daripada `model` yang Anda berikan dalam opsi.164* **`setModel()` / `set_model()`**: mengganti model. Panggilnya tanpa model untuk beralih ke [model default Claude Code](https://code.claude.com/docs/id/model-config.md#default-model-setting) daripada `model` yang Anda berikan dalam opsi. Jika sesi berada dalam auto mode dan Anda beralih ke model yang tidak didukung oleh auto mode, sesi berubah ke mode `default`. Untuk kembali ke auto mode, lihat [Auto mode (`auto`)](https://code.claude.com/docs/id/agent-sdk/permissions#auto-mode-auto).

165* **`setPermissionMode()` / `set_permission_mode()`**: mengganti mode izin165* **`setPermissionMode()` / `set_permission_mode()`**: mengganti mode izin

166 166 

167TypeScript juga memiliki `applyFlagSettings()` dan `updateSettings()`:167TypeScript juga memiliki `applyFlagSettings()` dan `updateSettings()`:

Details

192 192 

193Kontainer memerlukan runtime bahasa SDK Anda:193Kontainer memerlukan runtime bahasa SDK Anda:

194 194 

195* Python 3.10+ untuk Python SDK, atau Node.js 18+ untuk TypeScript SDK195* Python 3.10+ untuk Python SDK, atau Node.js 18.14+ untuk TypeScript SDK

196* Baik TypeScript maupun Python SDK membundel binary Claude Code native untuk sebagian besar instalasi, dan CLI yang dihasilkan tidak memerlukan instalasi Node.js terpisah. Lihat [catatan instalasi quickstart](https://code.claude.com/docs/id/agent-sdk/quickstart.md) untuk instalasi yang memerlukan instalasi Claude Code native terpisah.196* Baik TypeScript maupun Python SDK membundel binary Claude Code native untuk sebagian besar instalasi, dan CLI yang dihasilkan tidak memerlukan instalasi Node.js terpisah. Lihat [catatan instalasi quickstart](https://code.claude.com/docs/id/agent-sdk/quickstart.md) untuk instalasi yang memerlukan instalasi Claude Code native terpisah.

197 197 

198Binary yang dibundel disematkan ke versi paket SDK, jadi memperbarui SDK adalah cara Anda memperbarui CLI. SDK mengikuti semver: ambil rilis patch secara berkelanjutan dan tinjau changelog [TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) atau [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) sebelum mengambil minor.198Binary yang dibundel disematkan ke versi paket SDK, jadi memperbarui SDK adalah cara Anda memperbarui CLI. SDK mengikuti semver: ambil rilis patch secara berkelanjutan dan tinjau changelog [TypeScript](https://github.com/anthropics/claude-agent-sdk-typescript/blob/main/CHANGELOG.md) atau [Python](https://github.com/anthropics/claude-agent-sdk-python/blob/main/CHANGELOG.md) sebelum mengambil minor.


335 335 

336| Keterbatasan | Apa yang harus dilakukan |336| Keterbatasan | Apa yang harus dilakukan |

337| - | - |337| - | - |

338| Tidak ada timeout sesi tingkat atas | Sesi tidak akan habis waktu dengan sendirinya. Atur `maxTurns` di TypeScript atau `max_turns` di Python untuk membatasi berapa banyak putaran penggunaan alat yang diambil agen sebelum berhenti. |338| Tidak ada timeout sesi tingkat atas | Sesi tidak akan habis waktu dengan sendirinya. Atur `maxTurns` di TypeScript atau `max_turns` di Python untuk membatasi berapa banyak [giliran](https://code.claude.com/docs/id/agent-sdk/agent-loop.md#turns-and-messages) yang diambil agent sebelum berhenti. |

339| Pertumbuhan memori selama sesi panjang | Batasi panjang sesi atau daur ulang subproses secara berkala. Lihat [Penskalaan dan konkurensi](#scaling-and-concurrency). |339| Pertumbuhan memori selama sesi panjang | Batasi panjang sesi atau daur ulang subproses secara berkala. Lihat [Penskalaan dan konkurensi](#scaling-and-concurrency). |

340| Fanout subagen paralel besar dapat mencapai batas laju | Pecah pekerjaan menjadi batch yang lebih kecil daripada mengeluarkan satu pengiriman yang luas. |340| Fanout subagen paralel besar dapat mencapai batas laju | Pecah pekerjaan menjadi batch yang lebih kecil daripada mengeluarkan satu pengiriman yang luas. |

341| Tidak ada batas waktu dinding per subagen | Batasi setiap [subagen](https://code.claude.com/docs/id/agent-sdk/subagents.md) dengan `maxTurns` di `AgentDefinition`-nya. `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` menetapkan watchdog stall yang aktif ketika subagen berhenti menghasilkan output; ini bukan batas waktu runtime total. |341| Tidak ada batas waktu dinding per subagen | Batasi setiap [subagen](https://code.claude.com/docs/id/agent-sdk/subagents.md) dengan `maxTurns` di `AgentDefinition`-nya. `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS` menetapkan watchdog stall yang aktif ketika subagen berhenti menghasilkan output; ini bukan batas waktu runtime total. |

Details

425 425 

426Atur `includeGitInstructions` ke `false` untuk menyingkirkan instruksi commit dan pull request bawaan, yang merupakan bagian dari deskripsi tool Bash dan tetap mencapai Claude bahkan dengan `systemPrompt` kustom. Namun, dengan default minimal, `systemPrompt` kustom, atau agent thread utama kustom yang memiliki prompt sendiri, sesi dimulai tanpa snapshot status git.426Atur `includeGitInstructions` ke `false` untuk menyingkirkan instruksi commit dan pull request bawaan, yang merupakan bagian dari deskripsi tool Bash dan tetap mencapai Claude bahkan dengan `systemPrompt` kustom. Namun, dengan default minimal, `systemPrompt` kustom, atau agent thread utama kustom yang memiliki prompt sendiri, sesi dimulai tanpa snapshot status git.

427 427 

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

429* Untuk menghentikan hanya perluasan penyebutan file `@`, atur [`CLAUDE_CODE_DISABLE_FILE_MENTIONS=1`](https://code.claude.com/docs/id/env-vars#variables) sebagai gantinya, pada Claude Code v2.1.299 atau yang lebih baru. Claude kemudian mendapatkan path yang disebutkan beserta catatan untuk membacanya dengan tool file-nya, dan hook `PreToolUse` Anda melihat setiap pembacaan file sebagai panggilan tool.

429 430 

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

431 432 

Details

43Terapkan [mode izin](#permission-modes) yang aktif:43Terapkan [mode izin](#permission-modes) yang aktif:

44 44 

45* Dalam mode `bypassPermissions`, Claude Code menyetujui semua yang mencapai langkah ini kecuali [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) yang dikenali dan perintah Bash yang ditandai [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/id/permission-modes#dangerous-rm-operation-not-ruled-out), yang justru diteruskan ke langkah berikutnya.45* Dalam mode `bypassPermissions`, Claude Code menyetujui semua yang mencapai langkah ini kecuali [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) yang dikenali dan perintah Bash yang ditandai [`Dangerous rm operation not ruled out`](https://code.claude.com/docs/id/permission-modes#dangerous-rm-operation-not-ruled-out), yang justru diteruskan ke langkah berikutnya.

46 * Untuk menjalankan penghapusan tersebut tanpa permintaan izin, lihat [Matikan permintaan izin penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode).

46* Dalam mode `acceptEdits`, Claude Code menyetujui operasi file yang tercantum di bawah [Mode accept edits](#accept-edits-mode-acceptedits).47* Dalam mode `acceptEdits`, Claude Code menyetujui operasi file yang tercantum di bawah [Mode accept edits](#accept-edits-mode-acceptedits).

47* Dalam mode `plan`, Claude Code mengirimkan tool pengeditan file ke callback `canUseTool` Anda terlepas dari aturan allow.48* Dalam mode `plan`, Claude Code mengirimkan tool pengeditan file ke callback `canUseTool` Anda terlepas dari aturan allow.

48* Dalam mode lain, permintaan diteruskan ke langkah berikutnya.49* Dalam mode lain, permintaan diteruskan ke langkah berikutnya.


305> `allowed_tools` tidak membatasi mode ini. Setiap tool disetujui, bukan hanya yang Anda daftarkan. Kontrol ini masih berlaku:306> `allowed_tools` tidak membatasi mode ini. Setiap tool disetujui, bukan hanya yang Anda daftarkan. Kontrol ini masih berlaku:

306>307>

307> * Aturan penolakan, aturan `ask` eksplisit, dan hook dievaluasi sebelum pemeriksaan mode dan masih dapat memblokir tool.308> * Aturan penolakan, aturan `ask` eksplisit, dan hook dievaluasi sebelum pemeriksaan mode dan masih dapat memblokir tool.

308> * Tool konektor [yang diatur organisasi Anda ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools), tools yang memerlukan interaksi pengguna, dan [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) yang dikenali masih jatuh ke callback `canUseTool` Anda. Pemeriksaan yang mengenali penghapusan ini [dapat melewatkan beberapa perintah](https://code.claude.com/docs/id/permission-modes.md#critical-paths). Di luar [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), panggilan ke tool kustom yang [ditandai `always_ask`](https://code.claude.com/docs/id/agent-sdk/custom-tools#require-approval-for-specific-tools) oleh aplikasi Anda juga jatuh ke callback tersebut.309> * Tool konektor [yang diatur organisasi Anda ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools), tools yang memerlukan interaksi pengguna, dan [penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#critical-paths) yang dikenali masih jatuh ke callback `canUseTool` Anda. Pemeriksaan yang mengenali penghapusan ini [dapat melewatkan beberapa perintah](https://code.claude.com/docs/id/permission-modes.md#critical-paths), dan Anda dapat [mematikan permintaan izin penghapusan jalur kritis](https://code.claude.com/docs/id/permission-modes.md#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). Di luar [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), panggilan ke tool kustom yang [ditandai `always_ask`](https://code.claude.com/docs/id/agent-sdk/custom-tools#require-approval-for-specific-tools) oleh aplikasi Anda juga jatuh ke callback tersebut.

309> * [Perlindungan pesan lintas sesi](https://code.claude.com/docs/id/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) masih berlaku.310> * [Perlindungan pesan lintas sesi](https://code.claude.com/docs/id/permission-modes.md#skip-all-checks-with-bypasspermissions-mode) masih berlaku.

310 311 

311#### Mode rencana (`plan`)312#### Mode rencana (`plan`)

agent-sdk/python.md +143 −141

Details

742 742 

743> [!NOTE]743> [!NOTE]

744>744>

745> **`@dataclass` vs `TypedDict`:** SDK ini menggunakan dua jenis tipe. Kelas yang didekorasi dengan `@dataclass` (seperti `ResultMessage`, `AgentDefinition`, `TextBlock`) adalah instance objek saat runtime dan mendukung akses atribut: `msg.result`. Kelas yang didefinisikan dengan `TypedDict` (seperti `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`) adalah **dict biasa saat runtime** dan memerlukan akses kunci: `config["budget_tokens"]`, bukan `config.budget_tokens`. Sintaks panggilan `ClassName(field=value)` bekerja untuk keduanya, tetapi hanya dataclass yang menghasilkan objek dengan atribut.745> **`@dataclass` vs `TypedDict`:** SDK ini menggunakan dua jenis tipe. Kelas yang didekorasi dengan `@dataclass` (seperti `ResultMessage`, `AgentDefinition`, `TextBlock`) adalah instans objek saat runtime dan mendukung akses atribut: `msg.result`. Kelas yang didefinisikan dengan `TypedDict` (seperti `ThinkingConfigEnabled`, `McpStdioServerConfig`, `SyncHookJSONOutput`) adalah **dict biasa saat runtime** dan memerlukan akses kunci: `config["budget_tokens"]`, bukan `config.budget_tokens`. Sintaks pemanggilan `ClassName(field=value)` berfungsi untuk keduanya, tetapi hanya dataclass yang menghasilkan objek dengan atribut.

746 746 

747### `SdkMcpTool`747### `SdkMcpTool`

748 748 

749Definisi untuk tool SDK MCP yang dibuat dengan dekorator `@tool`.749Definisi untuk tool MCP SDK yang dibuat dengan dekorator `@tool`.

750 750 

751```python theme={null}751```python theme={null}

752@dataclass752@dataclass


760 760 

761| Properti | Tipe | Deskripsi |761| Properti | Tipe | Deskripsi |

762| :- | :- | :- |762| :- | :- | :- |

763| `name` | `str` | Pengenal unik untuk tool |763| `name` | `str` | Pengidentifikasi unik untuk tool |

764| `description` | `str` | Deskripsi yang dapat dibaca manusia |764| `description` | `str` | Deskripsi yang dapat dibaca manusia |

765| `input_schema` | `type[T] \| dict[str, Any]` | Skema untuk validasi input |765| `input_schema` | `type[T] \| dict[str, Any]` | Skema untuk validasi input |

766| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | Fungsi async yang menangani eksekusi tool |766| `handler` | `Callable[[T], Awaitable[dict[str, Any]]]` | Fungsi async yang menangani eksekusi tool |


768 768 

769### `Transport`769### `Transport`

770 770 

771Kelas dasar abstrak untuk implementasi transport kustom. Gunakan ini untuk berkomunikasi dengan proses Claude melalui saluran kustom (misalnya, koneksi jarak jauh alih-alih subprocess lokal).771Kelas dasar abstrak untuk implementasi transport kustom. Gunakan ini untuk berkomunikasi dengan proses Claude melalui channel kustom (misalnya, koneksi jarak jauh alih-alih subproses lokal).

772 772 

773> [!WARNING]773> [!WARNING]

774>774>

775> Ini adalah API internal tingkat rendah. Antarmuka dapat berubah di rilis mendatang. Implementasi kustom harus diperbarui agar sesuai dengan perubahan antarmuka apa pun.775> Ini adalah API internal tingkat rendah. Antarmukanya dapat berubah di rilis mendatang. Implementasi kustom harus diperbarui agar sesuai dengan setiap perubahan antarmuka.

776 776 

777```python theme={null}777```python theme={null}

778from abc import ABC, abstractmethod778from abc import ABC, abstractmethod


802 802 

803| Metode | Deskripsi |803| Metode | Deskripsi |

804| :- | :- |804| :- | :- |

805| `connect()` | Hubungkan transport dan siapkan untuk komunikasi |805| `connect()` | Menghubungkan transport dan bersiap untuk komunikasi |

806| `write(data)` | Tulis data mentah (JSON + newline) ke transport |806| `write(data)` | Menulis data mentah (JSON + baris baru) ke transport |

807| `read_messages()` | Async iterator yang menghasilkan pesan JSON yang diuraikan |807| `read_messages()` | Iterator async yang menghasilkan pesan JSON yang telah di-parse |

808| `close()` | Tutup koneksi dan bersihkan sumber daya |808| `close()` | Menutup koneksi dan membersihkan sumber daya |

809| `is_ready()` | Mengembalikan `True` jika transport dapat mengirim dan menerima |809| `is_ready()` | Mengembalikan `True` jika transport dapat mengirim dan menerima |

810| `end_input()` | Tutup aliran input (misalnya, tutup stdin untuk transport subprocess) |810| `end_input()` | Menutup stream input (misalnya, menutup stdin untuk transport subproses) |

811 811 

812Impor: `from claude_agent_sdk import Transport`812Import: `from claude_agent_sdk import Transport`

813 813 

814### `ClaudeAgentOptions`814### `ClaudeAgentOptions`

815 815 

816Dataclass konfigurasi untuk query Claude Code.816Dataclass konfigurasi untuk kueri Claude Code.

817 817 

818```python theme={null}818```python theme={null}

819@dataclass819@dataclass


871 871 

872| Properti | Tipe | Default | Deskripsi |872| Properti | Tipe | Default | Deskripsi |

873| :- | :- | :- | :- |873| :- | :- | :- | :- |

874| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Konfigurasi tools. Gunakan `{"type": "preset", "preset": "claude_code"}` untuk tools default Claude Code |874| `tools` | `list[str] \| ToolsPreset \| None` | `None` | Konfigurasi tool. Gunakan `{"type": "preset", "preset": "claude_code"}` untuk tool default Claude Code |

875| `allowed_tools` | `list[str]` | `[]` | Tool yang disetujui otomatis tanpa meminta konfirmasi, kecuali pembacaan dari [jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths). Ini tidak membatasi Claude hanya pada tool ini. Jika Anda menyebutkan salah satu [tool pelacakan tugas](https://code.claude.com/docs/id/agent-sdk/todo-tracking.md#model-availability) di sini, Claude Code juga mengikutsertakan sesi tersebut. Tool lain yang tidak tercantum diteruskan ke `permission_mode` dan `can_use_tool`. Gunakan `disallowed_tools` untuk memblokir tool. Lihat [Izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#allow-and-deny-rules) |875| `allowed_tools` | `list[str]` | `[]` | Tool yang disetujui otomatis tanpa permintaan izin, kecuali pembacaan dari [jalur jaringan](https://code.claude.com/docs/id/permissions.md#network-paths). Ini tidak membatasi Claude hanya pada tool-tool ini. Jika Anda menyebutkan salah satu [tool pelacakan tugas](https://code.claude.com/docs/id/agent-sdk/todo-tracking.md#model-availability) di sini, Claude Code juga mengikutsertakan sesi tersebut. Tool lain yang tidak tercantum diteruskan ke `permission_mode` dan `can_use_tool`. Gunakan `disallowed_tools` untuk memblokir tool. Lihat [Izin](https://code.claude.com/docs/id/agent-sdk/permissions.md#allow-and-deny-rules) |

876| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Konfigurasi system prompt. Teruskan string untuk prompt kustom, `{"type": "preset", "preset": "claude_code"}` untuk system prompt Claude Code dengan `"append"` opsional, `{"type": "custom", "prompt": "..."}` untuk prompt kustom yang juga dapat mengatur `"snapshot"`, atau `{"type": "file", "path": "..."}` untuk memuat prompt besar dari disk. Lihat [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom), dan [`SystemPromptFile`](#systempromptfile) |876| `system_prompt` | `str \| SystemPromptPreset \| SystemPromptCustom \| SystemPromptFile \| None` | `None` | Konfigurasi system prompt. Berikan string untuk prompt kustom, `{"type": "preset", "preset": "claude_code"}` untuk system prompt Claude Code dengan `"append"` opsional, `{"type": "custom", "prompt": "..."}` untuk prompt kustom yang juga dapat mengatur `"snapshot"`, atau `{"type": "file", "path": "..."}` untuk memuat prompt besar dari disk. Lihat [`SystemPromptPreset`](#systempromptpreset), [`SystemPromptCustom`](#systempromptcustom), dan [`SystemPromptFile`](#systempromptfile) |

877| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Konfigurasi server MCP atau jalur ke file konfigurasi |877| `mcp_servers` | `dict[str, McpServerConfig] \| str \| Path` | `{}` | Konfigurasi server MCP atau jalur ke file konfigurasi |

878| `strict_mcp_config` | `bool` | `False` | Ketika `True`, gunakan hanya server yang diteruskan dalam `mcp_servers` dan abaikan `.mcp.json` proyek, pengaturan pengguna, server MCP yang disediakan plugin, dan [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai). Memetakan ke flag CLI `--strict-mcp-config` |878| `strict_mcp_config` | `bool` | `False` | Jika `True`, hanya gunakan server yang diberikan di `mcp_servers` dan abaikan `.mcp.json` proyek, pengaturan pengguna, server MCP yang disediakan plugin, dan [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai). Dipetakan ke flag CLI `--strict-mcp-config` |

879| `permission_mode` | `PermissionMode \| None` | `None` | Mode izin untuk penggunaan tool |879| `permission_mode` | `PermissionMode \| None` | `None` | Mode izin untuk penggunaan tool |

880| `continue_conversation` | `bool` | `False` | Lanjutkan percakapan terbaru |880| `continue_conversation` | `bool` | `False` | Melanjutkan percakapan terbaru |

881| `resume` | `str \| None` | `None` | ID sesi untuk dilanjutkan |881| `resume` | `str \| None` | `None` | ID sesi yang akan dilanjutkan |

882| `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 |882| `session_id` | `str \| None` | `None` | Gunakan ID sesi tertentu alih-alih ID yang dibuat otomatis. Harus berupa UUID yang valid. Tidak dapat digabungkan dengan `continue_conversation` atau `resume` kecuali `fork_session` juga diatur |

883| `max_turns` | `int \| None` | `None` | Jumlah maksimal giliran agentic (round trip penggunaan tool) |883| `max_turns` | `int \| None` | `None` | Jumlah maksimum [giliran](https://code.claude.com/docs/id/agent-sdk/agent-loop.md#turns-and-messages) agentic |

884| `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](https://code.claude.com/docs/id/agent-sdk/agent-loop.md#budget-headroom). Hanya menghitung pengeluaran panggilan sendiri; total yang dipulihkan dari sesi yang dilanjutkan tidak dihitung. Untuk peringatan akurasi dan perilaku reset, lihat [Lacak biaya dan penggunaan](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md) |884| `max_budget_usd` | `float \| None` | `None` | Menghentikan kueri ketika estimasi biaya sisi klien mencapai nilai USD ini. Estimasi dapat melampaui nilai ini, jadi [sisakan ruang](https://code.claude.com/docs/id/agent-sdk/agent-loop.md#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](https://code.claude.com/docs/id/agent-sdk/cost-tracking.md) |

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

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

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

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

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

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

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

892| `cwd` | `str \| Path \| None` | `None` | Direktori kerja saat ini |892| `cwd` | `str \| Path \| None` | `None` | Direktori kerja saat ini |

893| `cli_path` | `str \| Path \| None` | `None` | Jalur kustom ke executable CLI Claude Code |893| `cli_path` | `str \| Path \| None` | `None` | Jalur kustom ke executable CLI Claude Code |

894| `settings` | `str \| None` | `None` | Jalur ke file pengaturan atau string JSON inline |894| `settings` | `str \| None` | `None` | Jalur ke file pengaturan atau string JSON inline |

895| `add_dirs` | `list[str \| Path]` | `[]` | Direktori tambahan yang dapat diakses Claude. SDK meneruskan setiap entri ke Claude Code sebagai `--add-dir`, jadi dengan sumber pengaturan `project` Claude Code juga [memuat skills, commands, dan subagents direktori](https://code.claude.com/docs/id/permissions.md#additional-directories-grant-file-access-not-configuration) |895| `add_dirs` | `list[str \| Path]` | `[]` | Direktori tambahan yang dapat diakses Claude. SDK meneruskan setiap entri ke Claude Code sebagai `--add-dir`, sehingga dengan sumber pengaturan `project`, Claude Code juga [memuat skill, perintah, dan subagent dari direktori tersebut](https://code.claude.com/docs/id/permissions.md#additional-directories-grant-file-access-not-configuration) |

896| `env` | `dict[str, str]` | `{}` | Environment variable yang digabungkan di atas lingkungan proses yang diwarisi. Lihat [Environment variables](https://code.claude.com/docs/id/env-vars.md) untuk variabel yang dibaca CLI yang mendasar, dan [Handle slow or stalled API responses](#handle-slow-or-stalled-api-responses) untuk variabel terkait timeout. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |896| `env` | `dict[str, str]` | `{}` | Environment variable yang digabungkan di atas environment proses yang diwarisi. Lihat [Environment variable](https://code.claude.com/docs/id/env-vars.md) untuk variabel yang dibaca CLI yang mendasarinya, dan [Menangani respons API yang lambat atau macet](#handle-slow-or-stalled-api-responses) untuk variabel terkait timeout. Atur `CLAUDE_AGENT_SDK_CLIENT_APP` untuk mengidentifikasi aplikasi Anda di header User-Agent |

897| `extra_args` | `dict[str, str \| None]` | `{}` | Argumen CLI tambahan untuk diteruskan langsung ke CLI |897| `extra_args` | `dict[str, str \| None]` | `{}` | Argumen CLI tambahan untuk diteruskan langsung ke CLI |

898| `max_buffer_size` | `int \| None` | `None` | Byte maksimal saat membuffer stdout CLI |898| `max_buffer_size` | `int \| None` | `None` | Jumlah byte maksimum saat melakukan buffering stdout CLI |

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

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

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

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

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

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

905| `include_hook_events` | `bool` | `False` | Sertakan event lifecycle hook dalam aliran pesan sebagai objek `HookEventMessage` |905| `include_hook_events` | `bool` | `False` | Menyertakan event siklus hidup hook dalam stream pesan sebagai objek `HookEventMessage` |

906| `forward_subagent_text` | `bool` | `False` | Teruskan blok teks dan thinking subagent dalam aliran pesan. Tanpa opsi ini, Claude Code menghilangkan blok teks dan thinking dari subagent yang berjalan di [foreground](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background). Untuk subagent bertingkat, skill dengan `context: fork`, dan versi Claude Code yang dibutuhkan masing-masing, lihat [Follow subagent messages](https://code.claude.com/docs/id/headless.md#follow-subagent-messages). Memerlukan Python Agent SDK 0.2.140 atau lebih baru |906| `forward_subagent_text` | `bool` | `False` | Meneruskan blok teks dan thinking subagent dalam stream pesan. Tanpa opsi ini, Claude Code menghilangkan blok teks dan thinking dari subagent yang berjalan di [foreground](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background). Untuk subagent bersarang, skill dengan `context: fork`, dan versi Claude Code yang dibutuhkan masing-masing, lihat [Mengikuti pesan subagent](https://code.claude.com/docs/id/headless.md#follow-subagent-messages). Memerlukan Python Agent SDK 0.2.140 atau lebih baru |

907| `verbatim_prompts` | `bool` | `False` | Berikan setiap prompt seperti yang ditulis. SDK mengirim setiap pesan pengguna dengan `client_composed` diatur ke `True`. Lihat [`client_composed`](https://code.claude.com/docs/id/agent-sdk/typescript#sdkusermessage) untuk apa yang Claude Code lewati pada pesan tersebut. Gunakan opsi ini ketika teks prompt Anda menyertakan konten yang pengguna akhir tidak ketik. Untuk kontrol per giliran, biarkan mati dan atur `"client_composed": True` pada pesan streaming individual sebagai gantinya. Sementara opsi aktif, SDK menimpa nilai `client_composed` apa pun yang Anda atur. Memerlukan Python Agent SDK 0.2.158 atau lebih baru dan Claude Code v2.1.248 atau lebih baru; CLI yang disertakan dengan versi SDK tersebut memenuhi persyaratan Claude Code |907| `verbatim_prompts` | `bool` | `False` | Mengirimkan setiap prompt sebagaimana ditulis. SDK mengirim setiap pesan pengguna dengan `client_composed` diatur ke `True`. Lihat [`client_composed`](https://code.claude.com/docs/id/agent-sdk/typescript#sdkusermessage) untuk apa yang dilewati Claude Code pada pesan-pesan tersebut. Gunakan opsi ini ketika teks prompt Anda menyertakan konten yang tidak diketik oleh pengguna akhir. Untuk kontrol per giliran, biarkan opsi ini nonaktif dan atur `"client_composed": True` pada pesan streaming individual sebagai gantinya. Selama opsi ini aktif, SDK menimpa nilai `client_composed` apa pun yang Anda atur. Memerlukan Python Agent SDK 0.2.158 atau lebih baru dan Claude Code v2.1.248 atau lebih baru; CLI yang dibundel dengan versi SDK tersebut memenuhi persyaratan Claude Code |

908| `fork_session` | `bool` | `False` | Ketika melanjutkan dengan `resume`, fork ke ID sesi baru alih-alih melanjutkan sesi asli |908| `fork_session` | `bool` | `False` | Saat melanjutkan dengan `resume`, lakukan fork ke ID sesi baru alih-alih melanjutkan sesi asli |

909| `resume_session_at` | `str \| None` | `None` | Ketika melanjutkan, muat percakapan hanya hingga dan termasuk pesan dengan UUID ini. Gunakan dengan `resume`, dan biasanya `fork_session`, untuk bercabang dari titik sebelumnya. Memerlukan Python Agent SDK 0.2.137 atau lebih baru |909| `resume_session_at` | `str \| None` | `None` | Saat melanjutkan, muat percakapan hanya sampai dan termasuk pesan dengan UUID ini. Gunakan bersama `resume`, dan biasanya `fork_session`, untuk bercabang dari titik sebelumnya. Memerlukan Python Agent SDK 0.2.137 atau lebih baru |

910| `resume_drops_turn` | `str \| None` | `None` | UUID dari prompt pengguna yang gilirannya dibuang oleh pemotongan `resume_session_at`. Ketika diatur, CLI menolak resume jika rentang yang dibuang menyimpan entri yang tidak dapat diatribusikan ke giliran itu. Memerlukan Python Agent SDK 0.2.137 atau lebih baru dan Claude Code v2.1.223 atau lebih baru; CLI yang disertakan dengan versi SDK tersebut memenuhi persyaratan Claude Code |910| `resume_drops_turn` | `str \| None` | `None` | UUID prompt pengguna yang gilirannya dibuang oleh pemotongan `resume_session_at`. Jika diatur, CLI menolak pelanjutan jika rentang yang dibuang berisi entri yang tidak dapat dikaitkan dengan giliran tersebut. Memerlukan Python Agent SDK 0.2.137 atau lebih baru dan Claude Code v2.1.223 atau lebih baru; CLI yang dibundel dengan versi SDK tersebut memenuhi persyaratan Claude Code |

911| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Subagent yang didefinisikan secara programatis |911| `agents` | `dict[str, AgentDefinition] \| None` | `None` | Subagent yang didefinisikan secara terprogram |

912| `plugins` | `list[SdkPluginConfig]` | `[]` | Muat plugin kustom dari jalur lokal. Lihat [Plugins](https://code.claude.com/docs/id/agent-sdk/plugins.md) untuk detail |912| `plugins` | `list[SdkPluginConfig]` | `[]` | Memuat plugin kustom dari jalur lokal. Lihat [Plugin](https://code.claude.com/docs/id/agent-sdk/plugins.md) untuk detailnya |

913| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Konfigurasi perilaku sandbox secara programatis. Lihat [Sandbox settings](#sandboxsettings) untuk detail |913| `sandbox` | [`SandboxSettings`](#sandboxsettings) ` \| None` | `None` | Mengonfigurasi perilaku sandbox secara terprogram. Lihat [Pengaturan sandbox](#sandboxsettings) untuk detailnya |

914| `setting_sources` | `list[SettingSource] \| None` | `None` (CLI defaults: all sources) | Kontrol pengaturan filesystem mana yang akan dimuat. Teruskan `[]` untuk menonaktifkan pengaturan pengguna, proyek, dan lokal. Dengan `skills` diatur dan field ini tidak diatur, hanya sumber pengguna dan proyek yang dimuat. Atur `setting_sources` secara eksplisit untuk menyimpan pengaturan lokal. Pengaturan kebijakan terkelola endpoint dimuat terlepas dari itu; pengaturan yang dikelola server diambil ketika sesi mengautentikasi dengan kredensial organisasi pada [konfigurasi yang memenuhi syarat](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability). Untuk input yang dibaca terlepas dari opsi ini, lihat [Apa yang tidak dikontrol settingSources](https://code.claude.com/docs/id/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) |914| `setting_sources` | `list[SettingSource] \| None` | `None` (default CLI: semua sumber) | Mengontrol pengaturan filesystem mana yang dimuat. Berikan `[]` untuk menonaktifkan pengaturan pengguna, proyek, dan lokal. Jika `skills` diatur dan field ini tidak diatur, hanya sumber pengguna dan proyek yang dimuat. Atur `setting_sources` secara eksplisit agar pengaturan lokal tetap dimuat. Kebijakan yang dikelola endpoint tetap dimuat dalam kondisi apa pun; pengaturan yang dikelola server diambil ketika sesi diautentikasi dengan kredensial organisasi pada [konfigurasi yang memenuhi syarat](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability). Untuk input yang dibaca terlepas dari opsi ini, lihat [Apa yang tidak dikontrol oleh settingSources](https://code.claude.com/docs/id/agent-sdk/claude-code-features.md#what-settingsources-does-not-control) |

915| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skills yang tersedia untuk sesi. Teruskan `"all"` untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Teruskan nama yang tepat saja. SDK menolak nama yang salah bentuk dan bentuk wildcard dengan `ValueError` sebelum memulai proses Claude Code; pemeriksaan ini memerlukan Python Agent SDK 0.2.129 atau lebih baru. Ketika diatur, SDK secara otomatis menambahkan tool Skill ke `allowed_tools`. Jika Anda juga meneruskan `tools`, sertakan `"Skill"` dalam daftar itu. Lihat [Skills](https://code.claude.com/docs/id/agent-sdk/skills.md) |915| `skills` | `list[str] \| Literal["all"] \| None` | `None` | Skill yang tersedia untuk sesi. Berikan `"all"` untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Hanya berikan nama yang persis. SDK menolak nama yang salah format dan berbentuk wildcard dengan `ValueError` sebelum memulai proses Claude Code; pemeriksaan ini memerlukan Python Agent SDK 0.2.129 atau lebih baru. Jika diatur, SDK menambahkan tool Skill ke `allowed_tools` secara otomatis. Jika Anda juga memberikan `tools`, sertakan `"Skill"` dalam daftar tersebut. Lihat [Skills](https://code.claude.com/docs/id/agent-sdk/skills.md) |

916| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Token maksimal untuk blok thinking. Gunakan `thinking` sebagai gantinya |916| `max_thinking_tokens` | `int \| None` | `None` | *Deprecated* - Jumlah token maksimum untuk thinking block. Gunakan `thinking` sebagai gantinya |

917| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Mengontrol perilaku extended thinking. Diutamakan daripada `max_thinking_tokens` |917| `thinking` | [`ThinkingConfig`](#thinkingconfig) ` \| None` | `None` | Mengontrol perilaku extended thinking. Diutamakan daripada `max_thinking_tokens` |

918| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Tingkat effort untuk kedalaman thinking. Lihat [adjust the effort level](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) |918| `effort` | [`EffortLevel`](#effortlevel) ` \| None` | `None` | Tingkat effort untuk kedalaman thinking. Lihat [menyesuaikan tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) |

919| `session_store` | [`SessionStore`](https://code.claude.com/docs/id/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Cerminkan transkrip sesi ke backend eksternal sehingga host lain dapat melanjutkannya. Lihat [Simpan sesi ke penyimpanan eksternal](https://code.claude.com/docs/id/agent-sdk/session-storage.md) |919| `session_store` | [`SessionStore`](https://code.claude.com/docs/id/agent-sdk/session-storage#the-sessionstore-interface) ` \| None` | `None` | Mencerminkan transkrip sesi ke backend eksternal agar host lain dapat melanjutkannya. Lihat [Menyimpan sesi ke penyimpanan eksternal](https://code.claude.com/docs/id/agent-sdk/session-storage.md) |

920| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Kapan membuang entri transkrip yang dicerminkan ke `session_store`. `"batched"` membuang sekali per giliran atau ketika buffer penuh; `"eager"` memicu pembilasan latar belakang setelah setiap frame. Diabaikan ketika `session_store` adalah `None` |920| `session_store_flush` | `Literal["batched", "eager"]` | `"batched"` | Kapan entri transkrip yang dicerminkan di-flush ke `session_store`. `"batched"` melakukan flush sekali per giliran atau ketika buffer penuh; `"eager"` memicu flush di latar belakang setelah setiap frame. Diabaikan ketika `session_store` bernilai `None` |

921| `load_timeout_ms` | `int` | `60000` | Per-call timeout untuk `session_store.load()` dan `list_subkeys()` selama materialisasi resume, dalam milidetik |921| `load_timeout_ms` | `int` | `60000` | Timeout per panggilan untuk `session_store.load()` dan `list_subkeys()` selama materialisasi pelanjutan, dalam milidetik |

922| `task_budget` | `TaskBudget \| None` | `None` | Budget token sisi API. Dikirim sebagai `output_config.task_budget` dengan header beta `task-budgets-2026-03-13`. Teruskan `{"total": <int>}`. |922| `task_budget` | `TaskBudget \| None` | `None` | Anggaran token di sisi API. Dikirim sebagai `output_config.task_budget` dengan header beta `task-budgets-2026-03-13`. Berikan `{"total": <int>}`. |

923 923 

924#### Menangani respons API yang lambat atau terhenti924#### Menangani respons API yang lambat atau macet

925 925 

926Subprocess CLI membaca beberapa environment variable yang mengontrol timeout API dan deteksi stall. Teruskan melalui `ClaudeAgentOptions.env`:926Subproses CLI membaca beberapa environment variable yang mengontrol timeout API dan deteksi macet. Teruskan variabel-variabel tersebut melalui `ClaudeAgentOptions.env`:

927 927 

928```python theme={null}928```python theme={null}

929from claude_agent_sdk import ClaudeAgentOptions929from claude_agent_sdk import ClaudeAgentOptions


937)937)

938```938```

939 939 

940* [`API_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars): berapa lama setiap percobaan permintaan dapat menunggu header respons, dalam milidetik. Ini tidak membatasi berapa lama respons streaming berjalan setelah header tiba. Default `600000`. Berlaku untuk loop utama dan semua subagent.940* [`API_TIMEOUT_MS`](https://code.claude.com/docs/id/env-vars): berapa lama setiap percobaan permintaan dapat menunggu header respons, dalam milidetik. Variabel ini tidak membatasi berapa lama respons streaming berjalan setelah header tiba. Default `600000`. Berlaku untuk loop utama dan semua subagent.

941* `CLAUDE_CODE_MAX_RETRIES`: maksimal retry API. Default `10`, dibatasi pada `15`. Setiap retry mendapat jendela `API_TIMEOUT_MS` sendiri.941* `CLAUDE_CODE_MAX_RETRIES`: jumlah retry API maksimum. Default `10`, dibatasi hingga `15`. Setiap retry mendapatkan jendela `API_TIMEOUT_MS` tersendiri.

942 942 

943 Untuk run tanpa pengawasan yang perlu menunggu melalui pemadaman yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](https://code.claude.com/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.943 Untuk eksekusi tanpa pengawasan yang perlu menunggu melewati gangguan yang lebih lama, atur [`CLAUDE_CODE_RETRY_WATCHDOG=1`](https://code.claude.com/docs/id/errors#tune-retry-behavior): 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.

944* `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`.944* `CLAUDE_ASYNC_AGENT_STALL_TIMEOUT_MS`: watchdog macet untuk subagent. Selama stream watchdog aktif, defaultnya adalah `CLAUDE_STREAM_IDLE_TIMEOUT_MS` ditambah 5 menit, yang menjadi `600000` kecuali Anda menaikkan variabel tersebut. Jika stream watchdog nonaktif, defaultnya adalah `600000`. Sebelum v2.1.257, defaultnya selalu `600000`.

945 945 

946 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.946 Timer direset pada setiap event stream. Saat terjadi kemacetan, Claude Code membatalkan subagent dan melaporkan kemacetan tersebut ke induk. Untuk subagent latar belakang, Claude Code juga menandai tugas sebagai gagal dan melampirkan hasil parsial apa pun.

947* `CLAUDE_ENABLE_STREAM_WATCHDOG` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: watchdog stream yang membatalkan permintaan ketika header telah tiba tetapi badan respons berhenti streaming. Watchdog aktif secara default untuk semua penyedia; atur `CLAUDE_ENABLE_STREAM_WATCHDOG=0` untuk menonaktifkannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` default ke `300000` dan diklem ke minimum itu. Setelah pembatalan, [Automatic retries](https://code.claude.com/docs/id/errors.md#automatic-retries) mencakup apa yang Claude Code lakukan, berdasarkan seberapa jauh respons telah maju.947* `CLAUDE_ENABLE_STREAM_WATCHDOG` dengan `CLAUDE_STREAM_IDLE_TIMEOUT_MS`: stream watchdog yang membatalkan permintaan ketika header telah tiba tetapi body respons berhenti melakukan streaming. Watchdog aktif secara default untuk semua penyedia; atur `CLAUDE_ENABLE_STREAM_WATCHDOG=0` untuk menonaktifkannya. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` memiliki default `300000` dan dibatasi pada nilai minimum tersebut. Setelah pembatalan, [Retry otomatis](https://code.claude.com/docs/id/errors.md#automatic-retries) menjelaskan apa yang dilakukan Claude Code, berdasarkan sejauh mana respons telah berjalan.

948 948 

949 Sementara watchdog menunggu respons yang gateway di belakang `ANTHROPIC_BASE_URL` tahan terbuka dengan keep-alive pings, host yang mengatur `include_partial_messages` terus menerima pesan `ping` [`StreamEvent`](#streamevent). Baca frame tersebut sebagai liveness daripada timeout sesi pada keheningan. Sebelum v2.1.257, frame berhenti 5 menit setelah event stream nyata terakhir.949 Selama watchdog menunggu respons yang ditahan tetap terbuka oleh gateway di belakang `ANTHROPIC_BASE_URL` dengan ping keep-alive, host yang mengatur `include_partial_messages` terus menerima pesan [`StreamEvent`](#streamevent) `ping`. Baca frame tersebut sebagai tanda keaktifan, alih-alih menghentikan sesi karena timeout akibat tidak ada aktivitas. Sebelum v2.1.257, frame tersebut berhenti 5 menit setelah event stream nyata terakhir.

950 950 

951### `OutputFormat`951### `OutputFormat`

952 952 

953Konfigurasi untuk validasi output terstruktur. Teruskan ini sebagai `dict` ke field `output_format` pada `ClaudeAgentOptions`:953Konfigurasi untuk validasi output terstruktur. Berikan ini sebagai `dict` ke field `output_format` pada `ClaudeAgentOptions`:

954 954 

955```python theme={null}955```python theme={null}

956# Expected dict shape for output_format956# Expected dict shape for output_format


960}960}

961```961```

962 962 

963| Field | Diperlukan | Deskripsi |963| Field | Wajib | Deskripsi |

964| :- | :- | :- |964| :- | :- | :- |

965| `type` | Ya | Harus `"json_schema"` untuk validasi JSON Schema |965| `type` | Ya | Harus `"json_schema"` untuk validasi JSON Schema |

966| `schema` | Ya | Definisi JSON Schema untuk validasi output |966| `schema` | Ya | Definisi JSON Schema untuk validasi output |

967 967 

968### `SystemPromptPreset`968### `SystemPromptPreset`

969 969 

970Konfigurasi untuk menggunakan preset system prompt Claude Code dengan penambahan opsional.970Konfigurasi untuk menggunakan system prompt preset Claude Code dengan tambahan opsional.

971 971 

972```python theme={null}972```python theme={null}

973class SystemPromptPreset(TypedDict):973class SystemPromptPreset(TypedDict):


978 snapshot: NotRequired[bool]978 snapshot: NotRequired[bool]

979```979```

980 980 

981| Field | Diperlukan | Deskripsi |981| Field | Wajib | Deskripsi |

982| :- | :- | :- |982| :- | :- | :- |

983| `type` | Ya | Harus `"preset"` untuk menggunakan preset system prompt |983| `type` | Ya | Harus `"preset"` untuk menggunakan system prompt preset |

984| `preset` | Ya | Harus `"claude_code"` untuk menggunakan system prompt Claude Code |984| `preset` | Ya | Harus `"claude_code"` untuk menggunakan system prompt Claude Code |

985| `append` | Tidak | Instruksi tambahan untuk ditambahkan ke preset system prompt |985| `append` | Tidak | Instruksi tambahan untuk ditambahkan ke system prompt preset |

986| `exclude_dynamic_sections` | Tidak | Pindahkan konteks per-pengguna, seperti lokasi auto memory, dari system prompt ke pesan pengguna pertama. Meningkatkan reuse prompt-cache di seluruh pengguna dan mesin. Lihat [Modify system prompts](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines) |986| `exclude_dynamic_sections` | Tidak | Memindahkan konteks per pengguna, seperti lokasi auto memory, dari system prompt ke pesan pengguna pertama. Meningkatkan penggunaan ulang prompt-cache di berbagai pengguna dan mesin. Lihat [Memodifikasi system prompt](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines) |

987| `snapshot` | Tidak | Atur ke `False` untuk membangun kembali system prompt pada setiap permintaan alih-alih [menggunakan kembali prompt yang sesi catat pada permintaan pertamanya](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session). Memerlukan `claude-agent-sdk` v0.2.153 atau lebih baru |987| `snapshot` | Tidak | Atur ke `False` untuk membangun ulang system prompt pada setiap permintaan alih-alih [menggunakan ulang prompt yang dicatat sesi pada permintaan pertamanya](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session). Memerlukan `claude-agent-sdk` v0.2.153 atau lebih baru |

988 988 

989### `SystemPromptCustom`989### `SystemPromptCustom`

990 990 

991System prompt kustom dalam bentuk objek, setara dengan melewatkan string sebagai `system_prompt`, yang juga dapat mengatur `snapshot`. Memerlukan `claude-agent-sdk` v0.2.153 atau lebih baru.991System prompt kustom dalam bentuk objek, setara dengan memberikan string sebagai `system_prompt`, yang juga dapat mengatur `snapshot`. Memerlukan `claude-agent-sdk` v0.2.153 atau lebih baru.

992 992 

993```python theme={null}993```python theme={null}

994class SystemPromptCustom(TypedDict):994class SystemPromptCustom(TypedDict):


997 snapshot: NotRequired[bool]997 snapshot: NotRequired[bool]

998```998```

999 999 

1000| Field | Diperlukan | Deskripsi |1000| Field | Wajib | Deskripsi |

1001| :- | :- | :- |1001| :- | :- | :- |

1002| `type` | Ya | Harus `"custom"` |1002| `type` | Ya | Harus `"custom"` |

1003| `prompt` | Ya | Teks system prompt. Diteruskan ke CLI sebagai argumen command-line, jadi [batas panjang command-line](#systempromptfile) berlaku |1003| `prompt` | Ya | Teks system prompt. Diteruskan ke CLI sebagai argumen baris perintah, sehingga [batas panjang baris perintah](#systempromptfile) berlaku |

1004| `snapshot` | Tidak | Sama seperti [`SystemPromptPreset.snapshot`](#systempromptpreset), diterapkan ke `prompt` |1004| `snapshot` | Tidak | Sama seperti [`SystemPromptPreset.snapshot`](#systempromptpreset), diterapkan pada `prompt` |

1005 1005 

1006### `SystemPromptFile`1006### `SystemPromptFile`

1007 1007 

1008Konfigurasi untuk memuat system prompt kustom dari file alih-alih meneruskannya sebagai string. SDK memetakan ini ke flag CLI [`--system-prompt-file`](https://code.claude.com/docs/id/cli-reference#system-prompt-flags). Gunakan bentuk file ketika prompt besar: SDK meneruskan string `system_prompt` pada argv subprocess CLI, yang tunduk pada batas panjang command-line OS sebelum SDK mengirim permintaan API apa pun. Di Linux satu argumen lebih panjang dari kira-kira 128 KB gagal pada spawn proses dengan `Argument list too long`. Di Windows seluruh command line dibatasi pada kira-kira 32 KB, jadi bentuk string gagal pada ambang yang lebih rendah.1008Konfigurasi untuk memuat system prompt kustom dari file alih-alih memberikannya sebagai string. SDK memetakan ini ke flag CLI [`--system-prompt-file`](https://code.claude.com/docs/id/cli-reference#system-prompt-flags). Gunakan bentuk file ketika prompt berukuran besar: SDK meneruskan `system_prompt` berupa string pada argv subproses CLI, yang tunduk pada batas panjang baris perintah OS sebelum SDK mengirimkan permintaan API apa pun. Di Linux, satu argumen yang lebih panjang dari sekitar 128 KB gagal saat pembuatan proses dengan `Argument list too long`. Di Windows, seluruh baris perintah dibatasi sekitar 32 KB, sehingga bentuk string gagal pada ambang yang lebih rendah.

1009 1009 

1010```python theme={null}1010```python theme={null}

1011class SystemPromptFile(TypedDict):1011class SystemPromptFile(TypedDict):


1013 path: str1013 path: str

1014```1014```

1015 1015 

1016| Field | Diperlukan | Deskripsi |1016| Field | Wajib | Deskripsi |

1017| :- | :- | :- |1017| :- | :- | :- |

1018| `type` | Ya | Harus `"file"` untuk memuat prompt dari disk |1018| `type` | Ya | Harus `"file"` untuk memuat prompt dari disk |

1019| `path` | Ya | Jalur ke file yang berisi system prompt |1019| `path` | Ya | Jalur ke file yang berisi system prompt |

1020 1020 

1021### `SettingSource`1021### `SettingSource`

1022 1022 

1023Mengontrol sumber konfigurasi berbasis filesystem mana yang dimuat pengaturan SDK.1023Mengontrol sumber konfigurasi berbasis filesystem mana yang digunakan SDK untuk memuat pengaturan.

1024 1024 

1025```python theme={null}1025```python theme={null}

1026SettingSource = Literal["user", "project", "local"]1026SettingSource = Literal["user", "project", "local"]


1029| Nilai | Deskripsi | Lokasi |1029| Nilai | Deskripsi | Lokasi |

1030| :- | :- | :- |1030| :- | :- | :- |

1031| `"user"` | Pengaturan pengguna global | `~/.claude/settings.json` |1031| `"user"` | Pengaturan pengguna global | `~/.claude/settings.json` |

1032| `"project"` | Pengaturan proyek bersama (version controlled) | `.claude/settings.json` |1032| `"project"` | Pengaturan proyek bersama (dikontrol versi) | `.claude/settings.json` |

1033| `"local"` | Pengaturan proyek lokal, gitignored ketika Claude Code menyimpan pengaturan ke dalamnya | `.claude/settings.local.json` |1033| `"local"` | Pengaturan proyek lokal, dimasukkan ke gitignore ketika Claude Code menyimpan pengaturan ke dalamnya | `.claude/settings.local.json` |

1034 1034 

1035#### Perilaku default1035#### Perilaku default

1036 1036 

1037Ketika `setting_sources` dihilangkan atau `None` dan `skills` tidak diatur, `query()` memuat pengaturan filesystem yang sama seperti CLI Claude Code: pengguna, proyek, dan lokal. Dengan `skills` diatur, baris [`setting_sources`](#claudeagentoptions) menjelaskan default saat ini. Pengaturan kebijakan terkelola endpoint dimuat dalam semua kasus; pengaturan yang dikelola server diambil ketika sesi mengautentikasi dengan kredensial organisasi pada [konfigurasi yang memenuhi syarat](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability). Untuk informasi lebih lanjut, lihat [Apa yang tidak dikontrol settingSources](https://code.claude.com/docs/id/agent-sdk/claude-code-features.md#what-settingsources-does-not-control).1037Ketika `setting_sources` dihilangkan atau bernilai `None` dan `skills` tidak diatur, `query()` memuat pengaturan filesystem yang sama dengan CLI Claude Code: pengguna, proyek, dan lokal. Jika `skills` diatur, baris [`setting_sources`](#claudeagentoptions) menjelaskan default saat ini. Kebijakan yang dikelola endpoint dimuat dalam semua kasus; pengaturan yang dikelola server diambil ketika sesi diautentikasi dengan kredensial organisasi pada [konfigurasi yang memenuhi syarat](https://code.claude.com/docs/id/server-managed-settings.md#platform-availability). Untuk informasi lebih lanjut, lihat [Apa yang tidak dikontrol oleh settingSources](https://code.claude.com/docs/id/agent-sdk/claude-code-features.md#what-settingsources-does-not-control).

1038 1038 

1039#### Mengapa menggunakan setting\_sources1039#### Mengapa menggunakan setting\_sources

1040 1040 

1041**Nonaktifkan pengaturan filesystem:**1041**Menonaktifkan pengaturan filesystem:**

1042 1042 

1043```python theme={null}1043```python theme={null}

1044# Do not load user, project, or local settings from disk1044# Do not load user, project, or local settings from disk


1061 1061 

1062> [!NOTE]1062> [!NOTE]

1063>1063>

1064> Dalam Python SDK 0.1.59 dan lebih awal, daftar kosong diperlakukan sama dengan menghilangkan opsi, jadi `setting_sources=[]` tidak menonaktifkan pengaturan filesystem. Upgrade ke rilis yang lebih baru jika Anda memerlukan daftar kosong untuk berlaku. SDK TypeScript tidak terpengaruh.1064> Pada Python SDK 0.1.59 dan sebelumnya, daftar kosong diperlakukan sama seperti menghilangkan opsi, sehingga `setting_sources=[]` tidak menonaktifkan pengaturan filesystem. Tingkatkan ke rilis yang lebih baru jika Anda memerlukan daftar kosong agar berlaku. TypeScript SDK tidak terpengaruh.

1065 1065 

1066**Muat hanya sumber pengaturan tertentu:**1066**Memuat hanya sumber pengaturan tertentu:**

1067 1067 

1068```python theme={null}1068```python theme={null}

1069# Load only project settings, ignore user and local1069# Load only project settings, ignore user and local


1084asyncio.run(main())1084asyncio.run(main())

1085```1085```

1086 1086 

1087**Aplikasi SDK-only:**1087**Aplikasi khusus SDK:**

1088 1088 

1089```python theme={null}1089```python theme={null}

1090# Define everything programmatically.1090# Define everything programmatically.


1113asyncio.run(main())1113asyncio.run(main())

1114```1114```

1115 1115 

1116Untuk memuat instruksi proyek CLAUDE.md, sertakan `"project"` dalam `setting_sources`. Lihat [Modify system prompts](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#claude-md-files-for-project-level-instructions) untuk cara loading CLAUDE.md berinteraksi dengan opsi system prompt.1116Untuk memuat instruksi proyek CLAUDE.md, sertakan `"project"` di `setting_sources`. Lihat [Memodifikasi system prompt](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#claude-md-files-for-project-level-instructions) untuk cara pemuatan CLAUDE.md berinteraksi dengan opsi system prompt.

1117 1117 

1118#### Prioritas pengaturan1118#### Prioritas pengaturan

1119 1119 

1120Ketika beberapa sumber dimuat, pengaturan digabungkan dengan urutan prioritas ini (tertinggi ke terendah):1120Ketika beberapa sumber dimuat, pengaturan digabungkan dengan urutan prioritas berikut (tertinggi ke terendah):

1121 1121 

11221. Pengaturan lokal (`.claude/settings.local.json`)11221. Pengaturan lokal (`.claude/settings.local.json`)

11232. Pengaturan proyek (`.claude/settings.json`)11232. Pengaturan proyek (`.claude/settings.json`)

11243. Pengaturan pengguna (`~/.claude/settings.json`)11243. Pengaturan pengguna (`~/.claude/settings.json`)

1125 1125 

1126Opsi programatis seperti `agents`, `allowed_tools`, dan `settings` menimpa pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola diutamakan daripada opsi programatis.1126Opsi terprogram seperti `agents`, `allowed_tools`, dan `settings` menimpa pengaturan filesystem pengguna, proyek, dan lokal. Pengaturan kebijakan terkelola diutamakan daripada opsi terprogram.

1127 1127 

1128### `AgentDefinition`1128### `AgentDefinition`

1129 1129 

1130Konfigurasi untuk subagent yang didefinisikan secara programatis.1130Konfigurasi untuk subagent yang didefinisikan secara terprogram.

1131 1131 

1132```python theme={null}1132```python theme={null}

1133@dataclass1133@dataclass


1147 permissionMode: PermissionMode | None = None1147 permissionMode: PermissionMode | None = None

1148```1148```

1149 1149 

1150| Field | Diperlukan | Deskripsi |1150| Field | Wajib | Deskripsi |

1151| :- | :- | :- |1151| :- | :- | :- |

1152| `description` | Ya | Deskripsi bahasa alami tentang kapan menggunakan agent ini |1152| `description` | Ya | Deskripsi dalam bahasa alami tentang kapan agent ini digunakan |

1153| `prompt` | Ya | System prompt agent |1153| `prompt` | Ya | System prompt agent |

1154| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi setiap [tool yang tersedia untuk subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools) |1154| `tools` | Tidak | Array nama tool yang diizinkan. Jika dihilangkan, mewarisi setiap [tool yang tersedia untuk subagent](https://code.claude.com/docs/id/sub-agents.md#available-tools) |

1155| `disallowedTools` | Tidak | Array nama tool untuk dihapus dari set tool agent. Pola tingkat server MCP juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap tool dari server itu, dan `mcp__*` menghapus setiap tool MCP dari server apa pun |1155| `disallowedTools` | Tidak | Array nama tool yang akan dihapus dari kumpulan tool agent. Pola tingkat server MCP juga diterima: `mcp__server` atau `mcp__server__*` menghapus setiap tool dari server tersebut, dan `mcp__*` menghapus setiap tool MCP dari server mana pun |

1156| `model` | Tidak | Override model untuk agent ini. Menerima alias seperti `"sonnet"`, `"opus"`, `"haiku"`, atau `"inherit"`, atau ID model lengkap. Ketika Anda menghilangkannya, Claude Code memilih model dalam [urutan model subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model) |1156| `model` | Tidak | Override model untuk agent ini. Menerima alias seperti `"sonnet"`, `"opus"`, `"haiku"`, atau `"inherit"`, atau ID model lengkap. Jika Anda menghilangkannya, Claude Code memilih model sesuai [urutan model subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model) |

1157| `skills` | Tidak | Daftar nama skill untuk preload ke dalam konteks agent saat startup. Skill yang tidak terdaftar tetap dapat dipanggil melalui tool Skill |1157| `skills` | Tidak | Daftar nama skill yang dimuat terlebih dahulu ke dalam konteks agent saat startup. Skill yang tidak tercantum tetap dapat dipanggil melalui tool Skill |

1158| `memory` | Tidak | Sumber memori untuk agent ini: `"user"`, `"project"`, atau `"local"` |1158| `memory` | Tidak | Sumber memori untuk agent ini: `"user"`, `"project"`, atau `"local"` |

1159| `mcpServers` | Tidak | Server MCP yang tersedia untuk agent ini. Setiap entri adalah nama server atau dict `{name: config}` inline |1159| `mcpServers` | Tidak | Server MCP yang tersedia untuk agent ini. Setiap entri adalah nama server atau dict inline `{name: config}` |

1160| `initialPrompt` | Tidak | Auto-submitted sebagai giliran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |1160| `initialPrompt` | Tidak | Dikirim otomatis sebagai giliran pengguna pertama ketika agent ini berjalan sebagai agent thread utama |

1161| `maxTurns` | Tidak | Jumlah maksimal giliran agentic sebelum agent berhenti |1161| `maxTurns` | Tidak | Jumlah maksimum giliran agentic sebelum agent berhenti |

1162| `background` | Tidak | Jalankan agent ini sebagai tugas latar belakang non-blocking ketika dipanggil |1162| `background` | Tidak | Menjalankan agent ini sebagai tugas latar belakang yang tidak memblokir saat dipanggil |

1163| `effort` | Tidak | Tingkat effort reasoning untuk agent ini. Menerima tingkat bernama atau integer. Lihat [`EffortLevel`](#effortlevel) |1163| `effort` | Tidak | Tingkat effort penalaran untuk agent ini. Menerima tingkat bernama atau bilangan bulat. Lihat [`EffortLevel`](#effortlevel) |

1164| `permissionMode` | Tidak | Mode izin untuk eksekusi tool dalam agent ini. [Aturan inheritance subagent](https://code.claude.com/docs/id/agent-sdk/permissions.md#available-modes) memutuskan kapan itu berlaku. Lihat [`PermissionMode`](#permissionmode) |1164| `permissionMode` | Tidak | Mode izin untuk eksekusi tool di dalam agent ini. [Aturan pewarisan subagent](https://code.claude.com/docs/id/agent-sdk/permissions.md#available-modes) menentukan kapan mode ini berlaku. Lihat [`PermissionMode`](#permissionmode) |

1165 1165 

1166> [!NOTE]1166> [!NOTE]

1167>1167>

1168> Field `AgentDefinition` menggunakan camelCase, seperti `disallowedTools`, `permissionMode`, dan `maxTurns`. Nama-nama ini memetakan langsung ke format wire yang dibagikan dengan SDK TypeScript. Ini berbeda dari `ClaudeAgentOptions`, yang menggunakan Python snake\_case untuk field tingkat atas yang setara seperti `disallowed_tools` dan `permission_mode`. Karena `AgentDefinition` adalah dataclass, melewatkan keyword snake\_case menimbulkan `TypeError` pada waktu konstruksi.1168> Nama field `AgentDefinition` menggunakan camelCase, seperti `disallowedTools`, `permissionMode`, dan `maxTurns`. Nama-nama ini dipetakan langsung ke format wire yang digunakan bersama dengan TypeScript SDK. Ini berbeda dari `ClaudeAgentOptions`, yang menggunakan snake\_case Python untuk field tingkat atas yang setara seperti `disallowed_tools` dan `permission_mode`. Karena `AgentDefinition` adalah dataclass, memberikan keyword snake\_case akan memunculkan `TypeError` saat konstruksi.

1169 1169 

1170### `PermissionMode`1170### `PermissionMode`

1171 1171 


1184 1184 

1185### `EffortLevel`1185### `EffortLevel`

1186 1186 

1187Tingkat effort untuk membimbing kedalaman thinking.1187Tingkat effort untuk mengarahkan kedalaman thinking.

1188 1188 

1189```python theme={null}1189```python theme={null}

1190EffortLevel = Literal[1190EffortLevel = Literal[


1198 1198 

1199### `CanUseTool`1199### `CanUseTool`

1200 1200 

1201Type alias untuk fungsi callback izin tool.1201Alias tipe untuk fungsi callback izin tool.

1202 1202 

1203```python theme={null}1203```python theme={null}

1204CanUseTool = Callable[1204CanUseTool = Callable[


1208 1208 

1209Callback menerima:1209Callback menerima:

1210 1210 

1211* `tool_name`: Nama tool yang sedang dipanggil1211* `tool_name`: Nama tool yang dipanggil

1212* `input_data`: Parameter input tool1212* `input_data`: Parameter input tool

1213* `context`: `ToolPermissionContext` dengan informasi tambahan1213* `context`: `ToolPermissionContext` dengan informasi tambahan

1214 1214 

1215Mengembalikan `PermissionResult` (baik `PermissionResultAllow` atau `PermissionResultDeny`).1215Mengembalikan `PermissionResult` (baik `PermissionResultAllow` maupun `PermissionResultDeny`).

1216 1216 

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

1218 1218 

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

1220 1220 

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

1222 1222 


1238 1238 

1239| Field | Tipe | Deskripsi |1239| Field | Tipe | Deskripsi |

1240| :- | :- | :- |1240| :- | :- | :- |

1241| `signal` | `Any \| None` | Dicadangkan untuk dukungan sinyal abort di masa depan |1241| `signal` | `Any \| None` | Dicadangkan untuk dukungan sinyal pembatalan di masa mendatang |

1242| `suggestions` | `list[PermissionUpdate]` | Saran pembaruan izin dari CLI. Prompt Bash menyertakan saran dengan destinasi `localSettings`, jadi mengembalikannya dalam `updated_permissions` menulis aturan ke `.claude/settings.local.json` dan bertahan di seluruh sesi. |1242| `suggestions` | `list[PermissionUpdate]` | Saran pembaruan izin dari CLI. Permintaan izin Bash menyertakan saran dengan tujuan `localSettings`, sehingga mengembalikannya di `updated_permissions` akan menulis aturan ke `.claude/settings.local.json` dan tetap berlaku di seluruh sesi. |

1243| `tool_use_id` | `str \| None` | Pengenal panggilan tool tertentu yang prompt ini untuk. Selalu diisi ketika dikirim ke `can_use_tool` |1243| `tool_use_id` | `str \| None` | Pengidentifikasi panggilan tool spesifik yang menjadi tujuan permintaan izin ini. Selalu terisi saat dikirimkan ke `can_use_tool` |

1244| `agent_id` | `str \| None` | ID sub-agent ketika panggilan berasal dari subagent; `None` untuk agent utama |1244| `agent_id` | `str \| None` | ID subagent ketika panggilan berasal dari subagent; `None` untuk agent utama |

1245| `blocked_path` | `str \| None` | Jalur file yang memicu permintaan izin, jika berlaku. Misalnya, ketika perintah Bash mencoba mengakses jalur di luar direktori yang diizinkan |1245| `blocked_path` | `str \| None` | Jalur file yang memicu permintaan izin, jika berlaku. Misalnya, ketika perintah Bash mencoba mengakses jalur di luar direktori yang diizinkan |

1246| `decision_reason` | `str \| None` | Alasan permintaan izin ini dipicu. Diteruskan dari `permissionDecisionReason` hook PreToolUse ketika hook mengembalikan `"ask"` |1246| `decision_reason` | `str \| None` | Alasan permintaan izin ini dipicu. Diteruskan dari `permissionDecisionReason` hook PreToolUse ketika hook mengembalikan `"ask"` |

1247| `title` | `str \| None` | Kalimat prompt izin lengkap, seperti `Claude wants to read foo.txt`. Gunakan sebagai teks prompt utama ketika ada |1247| `title` | `str \| None` | Kalimat permintaan izin lengkap, seperti `Claude wants to read foo.txt`. Gunakan sebagai teks permintaan izin utama jika tersedia |

1248| `display_name` | `str \| None` | Frasa kata benda pendek untuk aksi tool, seperti `Read file`, cocok untuk label tombol |1248| `display_name` | `str \| None` | Frasa nomina singkat untuk tindakan tool, seperti `Read file`, cocok untuk label tombol |

1249| `description` | `str \| None` | Subtitle yang dapat dibaca manusia untuk UI izin |1249| `description` | `str \| None` | Subjudul yang dapat dibaca manusia untuk UI izin |

1250 1250 

1251### `PermissionResult`1251### `PermissionResult`

1252 1252 


1258 1258 

1259### `PermissionResultAllow`1259### `PermissionResultAllow`

1260 1260 

1261Hasil yang menunjukkan panggilan tool harus diizinkan.1261Hasil yang menunjukkan bahwa panggilan tool harus diizinkan.

1262 1262 

1263```python theme={null}1263```python theme={null}

1264@dataclass1264@dataclass


1271| Field | Tipe | Default | Deskripsi |1271| Field | Tipe | Default | Deskripsi |

1272| :- | :- | :- | :- |1272| :- | :- | :- | :- |

1273| `behavior` | `Literal["allow"]` | `"allow"` | Harus "allow" |1273| `behavior` | `Literal["allow"]` | `"allow"` | Harus "allow" |

1274| `updated_input` | `dict[str, Any] \| None` | `None` | Input yang dimodifikasi untuk digunakan alih-alih asli |1274| `updated_input` | `dict[str, Any] \| None` | `None` | Input yang dimodifikasi untuk digunakan alih-alih input asli |

1275| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Pembaruan izin untuk diterapkan |1275| `updated_permissions` | `list[PermissionUpdate] \| None` | `None` | Pembaruan izin yang akan diterapkan |

1276 1276 

1277### `PermissionResultDeny`1277### `PermissionResultDeny`

1278 1278 

1279Hasil yang menunjukkan panggilan tool harus ditolak.1279Hasil yang menunjukkan bahwa panggilan tool harus ditolak.

1280 1280 

1281```python theme={null}1281```python theme={null}

1282@dataclass1282@dataclass


1290| :- | :- | :- | :- |1290| :- | :- | :- | :- |

1291| `behavior` | `Literal["deny"]` | `"deny"` | Harus "deny" |1291| `behavior` | `Literal["deny"]` | `"deny"` | Harus "deny" |

1292| `message` | `str` | `""` | Pesan yang menjelaskan mengapa tool ditolak |1292| `message` | `str` | `""` | Pesan yang menjelaskan mengapa tool ditolak |

1293| `interrupt` | `bool` | `False` | Apakah akan mengganggu eksekusi saat ini |1293| `interrupt` | `bool` | `False` | Apakah eksekusi saat ini akan diinterupsi |

1294 1294 

1295### `PermissionUpdate`1295### `PermissionUpdate`

1296 1296 

1297Konfigurasi untuk memperbarui izin secara programatis.1297Konfigurasi untuk memperbarui izin secara terprogram.

1298 1298 

1299```python theme={null}1299```python theme={null}

1300@dataclass1300@dataclass


1323| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Perilaku untuk operasi berbasis aturan |1323| `behavior` | `Literal["allow", "deny", "ask"] \| None` | Perilaku untuk operasi berbasis aturan |

1324| `mode` | `PermissionMode \| None` | Mode untuk operasi setMode |1324| `mode` | `PermissionMode \| None` | Mode untuk operasi setMode |

1325| `directories` | `list[str] \| None` | Direktori untuk operasi add/remove direktori |1325| `directories` | `list[str] \| None` | Direktori untuk operasi add/remove direktori |

1326| `destination` | `Literal[...] \| None` | Di mana menerapkan pembaruan izin |1326| `destination` | `Literal[...] \| None` | Tempat pembaruan izin diterapkan |

1327 1327 

1328### `PermissionRuleValue`1328### `PermissionRuleValue`

1329 1329 

1330Aturan untuk ditambahkan, diganti, atau dihapus dalam pembaruan izin.1330Aturan yang akan ditambahkan, diganti, atau dihapus dalam pembaruan izin.

1331 1331 

1332```python theme={null}1332```python theme={null}

1333@dataclass1333@dataclass


1338 1338 

1339### `ToolsPreset`1339### `ToolsPreset`

1340 1340 

1341Konfigurasi preset tools untuk menggunakan set tool default Claude Code.1341Konfigurasi tool preset untuk menggunakan kumpulan tool default Claude Code.

1342 1342 

1343```python theme={null}1343```python theme={null}

1344class ToolsPreset(TypedDict):1344class ToolsPreset(TypedDict):


1374 1374 

1375| Varian | Field | Deskripsi |1375| Varian | Field | Deskripsi |

1376| :- | :- | :- |1376| :- | :- | :- |

1377| `adaptive` | `type`, `display` | Claude secara adaptif memutuskan kapan harus berpikir |1377| `adaptive` | `type`, `display` | Claude secara adaptif memutuskan kapan melakukan thinking |

1378| `enabled` | `type`, `budget_tokens`, `display` | Aktifkan thinking dengan budget token tertentu |1378| `enabled` | `type`, `budget_tokens`, `display` | Mengaktifkan thinking dengan anggaran token tertentu |

1379| `disabled` | `type` | Nonaktifkan thinking |1379| `disabled` | `type` | Menonaktifkan thinking |

1380 1380 

1381Field opsional `display` mengontrol apakah teks thinking dikembalikan `"summarized"` atau `"omitted"`. Pada Claude Opus 4.7 dan lebih baru, default API adalah `"omitted"`, jadi atur `"summarized"` untuk menerima konten thinking dalam output [`ThinkingBlock`](#thinkingblock). Claude Code tidak meneruskan nilai `display` Anda ke beberapa penyedia, seperti Amazon Bedrock dan Google Cloud's Agent Platform. Pada penyedia tersebut, Opus 4.7 dan lebih baru mengembalikan output `ThinkingBlock` kosong bahkan ketika Anda mengatur `display` ke `"summarized"`.1381Field opsional `display` mengontrol apakah teks thinking dikembalikan dalam bentuk `"summarized"` atau `"omitted"`. Pada Claude Opus 4.7 dan yang lebih baru, default API adalah `"omitted"`, jadi atur `"summarized"` untuk menerima konten thinking dalam output [`ThinkingBlock`](#thinkingblock). Claude Code tidak meneruskan nilai `display` Anda ke beberapa penyedia, seperti Amazon Bedrock dan Agent Platform milik Google Cloud. Pada penyedia tersebut, Opus 4.7 dan yang lebih baru mengembalikan output `ThinkingBlock` kosong bahkan ketika Anda mengatur `display` ke `"summarized"`.

1382 1382 

1383Karena ini adalah kelas `TypedDict`, mereka adalah dict biasa saat runtime. Baik buatlah sebagai dict literal atau panggil kelas seperti konstruktor; keduanya menghasilkan `dict`. Akses field dengan `config["budget_tokens"]`, bukan `config.budget_tokens`:1383Karena ini adalah kelas `TypedDict`, kelas-kelas ini merupakan dict biasa saat runtime. Buat sebagai literal dict atau panggil kelas seperti konstruktor; keduanya menghasilkan `dict`. Akses field dengan `config["budget_tokens"]`, bukan `config.budget_tokens`:

1384 1384 

1385```python theme={null}1385```python theme={null}

1386from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled1386from claude_agent_sdk import ClaudeAgentOptions, ThinkingConfigEnabled


1396 1396 

1397### `TaskBudget`1397### `TaskBudget`

1398 1398 

1399Budget tugas sisi API dalam token, digunakan dengan field `task_budget` dalam `ClaudeAgentOptions`.1399Anggaran tugas di sisi API dalam token, digunakan dengan field `task_budget` di `ClaudeAgentOptions`.

1400 1400 

1401```python theme={null}1401```python theme={null}

1402class TaskBudget(TypedDict):1402class TaskBudget(TypedDict):


1405 1405 

1406| Field | Tipe | Deskripsi |1406| Field | Tipe | Deskripsi |

1407| :- | :- | :- |1407| :- | :- | :- |

1408| `total` | `int` | Total budget token untuk tugas |1408| `total` | `int` | Total anggaran token untuk tugas |

1409 1409 

1410Karena ini adalah `TypedDict`, teruskan sebagai dict biasa, seperti `ClaudeAgentOptions(task_budget={"total": 50000})`.1410Karena ini adalah `TypedDict`, berikan sebagai dict biasa, seperti `ClaudeAgentOptions(task_budget={"total": 50000})`.

1411 1411 

1412### `SdkBeta`1412### `SdkBeta`

1413 1413 


1417SdkBeta = Literal["context-1m-2025-08-07"]1417SdkBeta = Literal["context-1m-2025-08-07"]

1418```1418```

1419 1419 

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

1421 1421 

1422> [!WARNING]1422> [!WARNING]

1423>1423>

1424> Pada Claude API, beta `context-1m-2025-08-07` sudah pensiun untuk Claude Sonnet 4.5 dan Claude Sonnet 4. Jika Anda masih meneruskannya dengan salah satu model tersebut, permintaan yang melebihi context window standar 200K token akan mengembalikan error, jadi hapus beta tersebut dari `betas`. Untuk menjalankan sesi dengan context window 1M token, atur `model` ke model yang [berjalan dengan window 1M secara default](https://code.claude.com/docs/id/model-config.md#extended-context), seperti `claude-sonnet-5-5` atau `claude-opus-5-5`. Untuk model yang mencapai 1M hanya melalui varian `[1m]`-nya, tambahkan sufiks tersebut ke ID model, seperti pada `claude-opus-4-6[1m]`.1424> Pada Claude API, beta `context-1m-2025-08-07` telah dihentikan untuk Claude Sonnet 4.5 dan Claude Sonnet 4. Jika Anda masih memberikannya dengan salah satu model tersebut, permintaan yang melebihi context window standar 200K token akan mengembalikan error, jadi hapus dari `betas`. Untuk menjalankan sesi dengan context window 1M token, atur `model` ke model yang [berjalan dengan jendela 1M secara default](https://code.claude.com/docs/id/model-config.md#extended-context), seperti `claude-sonnet-5-5` atau `claude-opus-5-5`. Untuk model yang mencapai 1M hanya melalui varian `[1m]`-nya, tambahkan sufiks ke ID model, seperti pada `claude-opus-4-6[1m]`.

1425 1425 

1426### `McpSdkServerConfig`1426### `McpSdkServerConfig`

1427 1427 


1474 1474 

1475### `McpServerStatusConfig`1475### `McpServerStatusConfig`

1476 1476 

1477Konfigurasi server MCP seperti yang dilaporkan oleh [`get_mcp_status()`](#methods). Ini adalah union dari semua varian transport [`McpServerConfig`](#mcpserverconfig) ditambah varian output-only `claudeai-proxy` untuk server yang di-proxy melalui claude.ai.1477Konfigurasi server MCP sebagaimana dilaporkan oleh [`get_mcp_status()`](#methods). Ini adalah union dari semua varian transport [`McpServerConfig`](#mcpserverconfig) ditambah varian `claudeai-proxy` khusus output untuk server yang diproksikan melalui claude.ai.

1478 1478 

1479```python theme={null}1479```python theme={null}

1480McpServerStatusConfig = (1480McpServerStatusConfig = (


1518| `status` | `str` | Salah satu dari `"connected"`, `"failed"`, `"needs-auth"`, `"pending"`, atau `"disabled"` |1518| `status` | `str` | Salah satu dari `"connected"`, `"failed"`, `"needs-auth"`, `"pending"`, atau `"disabled"` |

1519| `serverInfo` | `dict` (opsional) | Nama dan versi server (`{"name": str, "version": str}`) |1519| `serverInfo` | `dict` (opsional) | Nama dan versi server (`{"name": str, "version": str}`) |

1520| `error` | `str` (opsional) | Pesan error jika server gagal terhubung |1520| `error` | `str` (opsional) | Pesan error jika server gagal terhubung |

1521| `config` | [`McpServerStatusConfig`](#mcpserverstatusconfig) (opsional) | Konfigurasi server. Bentuk yang sama seperti [`McpServerConfig`](#mcpserverconfig) (stdio, SSE, HTTP, atau SDK), ditambah varian `claudeai-proxy` untuk server yang terhubung melalui claude.ai |1521| `config` | [`McpServerStatusConfig`](#mcpserverstatusconfig) (opsional) | Konfigurasi server. Bentuknya sama dengan [`McpServerConfig`](#mcpserverconfig) (stdio, SSE, HTTP, atau SDK), ditambah varian `claudeai-proxy` untuk server yang terhubung melalui claude.ai |

1522| `scope` | `str` (opsional) | Cakupan konfigurasi |1522| `scope` | `str` (opsional) | Cakupan konfigurasi |

1523| `tools` | `list` (opsional) | Tools yang disediakan oleh server ini, masing-masing dengan field `name`, `description`, dan `annotations` |1523| `tools` | `list` (opsional) | Tool yang disediakan oleh server ini, masing-masing dengan field `name`, `description`, dan `annotations` |

1524 1524 

1525### `ContextUsageResponse`1525### `ContextUsageResponse`

1526 1526 

1527Respons dari [`ClaudeSDKClient.get_context_usage()`](#methods). Respons ini menyertakan payload yang Claude Code render untuk perintah `/context` dalam sesi interaktif. Di samping hitungan token, payload tersebut membawa field tampilan seperti `color` dan `gridRows` yang Claude Code gunakan untuk menggambar grid penggunaan `/context`.1527Respons dari [`ClaudeSDKClient.get_context_usage()`](#methods). Respons ini menyertakan payload yang dirender Claude Code untuk perintah `/context` dalam sesi interaktif. Selain jumlah token, payload tersebut membawa field tampilan seperti `color` dan `gridRows` yang digunakan Claude Code untuk menggambar grid penggunaan `/context`.

1528 1528 

1529Claude Code membangun payload ini dengan mengirim beberapa permintaan ke API [token-counting](https://platform.claude.com/docs/en/build-with-claude/token-counting). Permintaan ini tidak muncul dalam aliran pesan, jadi pelacakan biaya yang membaca aliran tidak akan melihatnya. Pada Anthropic API, penghitungan token tidak ditagih.1529Claude Code membangun payload ini dengan mengirimkan beberapa permintaan ke API [penghitungan token](https://platform.claude.com/docs/en/build-with-claude/token-counting). Permintaan ini tidak muncul di stream pesan, sehingga pelacakan biaya yang membaca stream tidak akan melihatnya. Pada Anthropic API, penghitungan token tidak dikenai biaya.

1530 1530 

1531```python theme={null}1531```python theme={null}

1532class ContextUsageResponse(TypedDict):1532class ContextUsageResponse(TypedDict):


1551 apiUsage: NotRequired[dict[str, Any] | None]1551 apiUsage: NotRequired[dict[str, Any] | None]

1552```1552```

1553 1553 

1554Setiap entri `ContextUsageCategory` membawa `name`, `tokens`, `color`, dan flag `isDeferred` opsional. `totalTokens` adalah penggunaan konteks sesi saat ini, dan `maxTokens` adalah window yang penggunaan diukur terhadapnya. Window itu adalah context window model, atau window auto-compaction yang lebih rendah ketika satu berlaku, dan `rawMaxTokens` membawa nilai yang sama dengan `maxTokens`. `apiUsage` menyimpan penggunaan dari respons API terbaru, bukan total berjalan untuk sesi. Claude Code meninggalkan key `deferredBuiltinTools`, `systemTools`, dan `systemPromptSections` opsional yang tidak diatur, jadi harapkan mereka tidak ada bahkan meskipun tipe mendeklarasikannya.1554Setiap entri `ContextUsageCategory` membawa `name`, `tokens`, `color`, dan flag opsional `isDeferred`. `totalTokens` adalah penggunaan konteks sesi saat ini, dan `maxTokens` adalah jendela yang menjadi acuan pengukuran penggunaan tersebut. Jendela tersebut adalah context window model, atau jendela auto-compaction yang lebih rendah jika berlaku, dan `rawMaxTokens` membawa nilai yang sama dengan `maxTokens`. `apiUsage` menyimpan penggunaan dari respons API terbaru, bukan total berjalan untuk sesi. Claude Code membiarkan kunci opsional `deferredBuiltinTools`, `systemTools`, dan `systemPromptSections` tidak diatur, jadi perkirakan kunci-kunci tersebut tidak ada meskipun tipe mendeklarasikannya.

1555 1555 

1556### `SdkPluginConfig`1556### `SdkPluginConfig`

1557 1557 

1558Konfigurasi untuk memuat plugins dalam SDK.1558Konfigurasi untuk memuat plugin di SDK.

1559 1559 

1560```python theme={null}1560```python theme={null}

1561class SdkPluginConfig(TypedDict):1561class SdkPluginConfig(TypedDict):


1565 1565 

1566| Field | Tipe | Deskripsi |1566| Field | Tipe | Deskripsi |

1567| :- | :- | :- |1567| :- | :- | :- |

1568| `type` | `Literal["local"]` | Harus `"local"` (hanya plugins lokal yang saat ini didukung) |1568| `type` | `Literal["local"]` | Harus `"local"` (saat ini hanya plugin lokal yang didukung) |

1569| `path` | `str` | Jalur absolut atau relatif ke direktori plugin |1569| `path` | `str` | Jalur absolut atau relatif ke direktori plugin |

1570 1570 

1571**Contoh:**1571**Contoh:**


1577]1577]

1578```1578```

1579 1579 

1580Untuk informasi lengkap tentang membuat dan menggunakan plugins, lihat [Plugins](https://code.claude.com/docs/id/agent-sdk/plugins.md).1580Untuk informasi lengkap tentang membuat dan menggunakan plugin, lihat [Plugin](https://code.claude.com/docs/id/agent-sdk/plugins.md).

1581 1581 

1582## Tipe Pesan1582## Tipe Pesan

1583 1583 


2568 2568 

2569### Agent2569### Agent

2570 2570 

2571**Nama tool:** `Agent`. Nama sebelumnya `Task` masih diterima sebagai alias, dan daftar `tools` dalam init [`SystemMessage`](#systemmessage) melaporkan tool ini sebagai `Task` untuk kompatibilitas mundur.2571**Nama tool:** `Agent`. Nama sebelumnya `Task` masih diterima sebagai alias ketika tool ini tersedia untuk sesi.

2572 

2573Daftar `tools` dalam init [`SystemMessage`](#systemmessage) melaporkan tool ini sebagai `Task` untuk kompatibilitas mundur.

2572 2574 

2573**Input:**2575**Input:**

2574 2576 


3642| `deniedDomains` | `list[str]` | `[]` | Nama domain yang tidak dapat diakses oleh proses yang di-sandbox. Mengambil prioritas atas `allowedDomains` |3644| `deniedDomains` | `list[str]` | `[]` | Nama domain yang tidak dapat diakses oleh proses yang di-sandbox. Mengambil prioritas atas `allowedDomains` |

3643| `allowManagedDomainsOnly` | `bool` | `False` | Hanya pengaturan terkelola: ketika diatur dalam pengaturan terkelola, abaikan `allowedDomains` dan aturan izin `WebFetch(domain:...)` dari sumber pengaturan non-terkelola. Tidak berpengaruh ketika diatur melalui opsi SDK |3645| `allowManagedDomainsOnly` | `bool` | `False` | Hanya pengaturan terkelola: ketika diatur dalam pengaturan terkelola, abaikan `allowedDomains` dan aturan izin `WebFetch(domain:...)` dari sumber pengaturan non-terkelola. Tidak berpengaruh ketika diatur melalui opsi SDK |

3644| `allowUnixSockets` | `list[str]` | `[]` | Hanya macOS: Jalur Unix socket yang dapat diakses oleh proses, seperti socket Docker. Diabaikan di Linux |3646| `allowUnixSockets` | `list[str]` | `[]` | Hanya macOS: Jalur Unix socket yang dapat diakses oleh proses, seperti socket Docker. Diabaikan di Linux |

3645| `allowAllUnixSockets` | `bool` | `False` | Izinkan akses ke semua Unix socket |3647| `allowAllUnixSockets` | `bool` | `False` | Izinkan akses ke semua Unix socket, dan di Linux ke socket VM (`AF_VSOCK`) |

3646| `allowLocalBinding` | `bool` | `False` | Izinkan proses untuk mengikat ke port lokal (misalnya, untuk server dev) |3648| `allowLocalBinding` | `bool` | `False` | Izinkan proses untuk mengikat ke port lokal (misalnya, untuk server dev) |

3647| `allowMachLookup` | `list[str]` | `[]` | Hanya macOS: Nama layanan XPC/Mach yang diizinkan. Mendukung wildcard trailing |3649| `allowMachLookup` | `list[str]` | `[]` | Hanya macOS: Nama layanan XPC/Mach yang diizinkan. Mendukung wildcard trailing |

3648| `httpProxyPort` | `int` | `None` | Port proxy HTTP untuk permintaan jaringan |3650| `httpProxyPort` | `int` | `None` | Port proxy HTTP untuk permintaan jaringan |

Details

16 16 

17## Prasyarat17## Prasyarat

18 18 

19* **Node.js 18+** atau **Python 3.10+**19* **Node.js 18.14+** atau **Python 3.10+**

20* Akun **Anthropic**. Jika Anda belum memilikinya, [daftar di sini](https://platform.claude.com/).20* Akun **Anthropic**. Jika Anda belum memilikinya, [daftar di sini](https://platform.claude.com/).

21 21 

22## Penyiapan22## Penyiapan

Details

118 118 

119### Menangani stream yang terputus119### Menangani stream yang terputus

120 120 

121Jika sebuah stream terputus di tengah pesan, misalnya saat Anda menginterupsi giliran atau koneksi terputus, Anda tetap menerima `message_stop` untuk pesan tersebut sebelum giliran berakhir. Blok teks atau thinking block yang terputus juga mendapatkan `content_block_stop`-nya. Panggilan tool yang terputus tidak mendapatkannya, jadi jika `message_stop` tiba saat blok panggilan tool masih terbuka, anggap input panggilan tersebut tidak lengkap.121Jika sebuah stream terputus di tengah pesan, Anda tetap menerima `message_stop` untuk pesan tersebut sebelum giliran berakhir. Penyebab stream terputus termasuk giliran yang diinterupsi, koneksi yang terputus, dan fallback ke permintaan non-streaming. `content_block_stop` dan `message_delta` dapat tidak muncul sebelum `message_stop` tersebut:

122 

123* **`content_block_stop`**: tiba untuk blok yang sedang terbuka, kecuali blok tersebut adalah panggilan tool. Jika `message_stop` tiba saat blok panggilan tool masih terbuka, anggap input panggilan tersebut tidak lengkap.

124* **`message_delta`**: tiba saat Anda menginterupsi giliran, dan dapat tidak muncul setelah koneksi terputus atau fallback ke non-streaming, jadi jangan menunggunya pada pesan yang terputus.

122 125 

123Sebelum Claude Code v2.1.290, stream yang terputus dapat mengakhiri giliran tanpa `message_stop`, sehingga balasan yang Anda render dari acara stream dapat tetap ditampilkan sebagai sedang berlangsung. TypeScript Agent SDK menyertakan Claude Code v2.1.290 atau yang lebih baru mulai dari v0.3.290, dan Python Agent SDK mulai dari v0.2.164. Jika balasan tetap ditampilkan sebagai sedang berlangsung setelah giliran berakhir, perbarui SDK.126Sebelum Claude Code v2.1.290, stream yang terputus dapat mengakhiri giliran tanpa `message_stop`, sehingga balasan yang Anda render dari acara stream dapat tetap ditampilkan sebagai sedang berlangsung. TypeScript Agent SDK menyertakan Claude Code v2.1.290 atau yang lebih baru mulai dari v0.3.290, dan Python Agent SDK mulai dari v0.2.164. Jika balasan tetap ditampilkan sebagai sedang berlangsung setelah giliran berakhir, perbarui SDK.

124 127 

Details

105 105 

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

107 107 

108Dari pesan [`hook_progress`](#sdkhookprogressmessage) yang dipancarkan hook `SessionStart` atau `Setup` sebelum handshake selesai, Anda hanya mendapatkan yang terbaru, yang membawa seluruh output hook sejauh ini. `startup()` menahan pesan tersebut, pesan [`hook_started`](#sdkhookstartedmessage) dari hook, dan apa pun lainnya yang dipancarkan subprocess sebelum handshake selesai. Pesan yang ditahan akan sampai kepada Anda setelah Anda memanggil `.query()` pada `WarmQuery` dan melakukan iterasi atas hasilnya.

109 

108#### Contoh110#### Contoh

109 111 

110Panggil `startup()` lebih awal, misalnya saat boot aplikasi, kemudian panggil `.query()` pada handle yang dikembalikan setelah prompt siap. Ini memindahkan spawn subprocess dan inisialisasi keluar dari jalur kritis.112Panggil `startup()` lebih awal, misalnya saat boot aplikasi, kemudian panggil `.query()` pada handle yang dikembalikan setelah prompt siap. Ini memindahkan spawn subprocess dan inisialisasi keluar dari jalur kritis.


524| `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`](https://code.claude.com/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola. Nilai yang digabungkan melewati filter yang hanya bersifat membatasi; [Membatasi pengaturan induk](https://code.claude.com/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`](https://code.claude.com/docs/id/env-vars) memiliki tiga kunci yang justru dibaca langsung dari payload ini: [konfigurasi model](https://code.claude.com/docs/id/model-config.md#restrict-model-selection)-nya pada Claude Code v2.1.222 atau lebih baru, [`modelPricing`](https://code.claude.com/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 |526| `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`](https://code.claude.com/docs/id/settings-reference#policyhelper) menyediakan pengaturan terkelola. Nilai yang digabungkan melewati filter yang hanya bersifat membatasi; [Membatasi pengaturan induk](https://code.claude.com/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`](https://code.claude.com/docs/id/env-vars) memiliki tiga kunci yang justru dibaca langsung dari payload ini: [konfigurasi model](https://code.claude.com/docs/id/model-config.md#restrict-model-selection)-nya pada Claude Code v2.1.222 atau lebih baru, [`modelPricing`](https://code.claude.com/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 |

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

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

527| `maxTurns` | `number` | `undefined` | Giliran agentic maksimum (perjalanan bolak-balik penggunaan tool) |529| `maxTurns` | `number` | `undefined` | Maksimum [giliran](https://code.claude.com/docs/id/agent-sdk/agent-loop.md#turns-and-messages) agentik |

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

529| `model` | `string` | Default dari CLI | Alias model Claude atau nama model lengkap. Lihat [nilai yang diterima dan ID khusus penyedia](https://code.claude.com/docs/id/model-config.md#available-models) |531| `model` | `string` | Default dari CLI | Alias model Claude atau nama model lengkap. Lihat [nilai yang diterima dan ID khusus penyedia](https://code.claude.com/docs/id/model-config.md#available-models) |

530| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback untuk menangani permintaan elicitation MCP. Dipanggil ketika server MCP meminta input pengguna dan tidak ada hook yang menanganinya terlebih dahulu. Jika tidak disediakan, permintaan elicitation yang tidak ditangani ditolak secara otomatis |532| `onElicitation` | `(request: ElicitationRequest, options: { signal: AbortSignal }) => Promise<ElicitationResult>` | `undefined` | Callback untuk menangani permintaan elicitation MCP. Dipanggil ketika server MCP meminta input pengguna dan tidak ada hook yang menanganinya terlebih dahulu. Jika tidak disediakan, permintaan elicitation yang tidak ditangani ditolak secara otomatis |


1403 };1405 };

1404```1406```

1405 1407 

1408Jika Anda mengembalikan `allow` dengan lebih dari 4.096 item dalam `updatedPermissions`, Claude Code memperlakukan hasil tersebut sebagai tidak valid dan menolak panggilan tool. Setiap pembaruan dihitung sebagai satu item, begitu pula setiap entri dalam daftar `rules` atau `directories`-nya. Pesan penolakan diakhiri dengan `updatedPermissions may hold at most 4096 updates, rules and directories in all`. Agar panggilan diizinkan, kembalikan 4.096 item atau kurang.

1409 

1406### `ToolConfig`1410### `ToolConfig`

1407 1411 

1408Konfigurasi untuk perilaku tool bawaan.1412Konfigurasi untuk perilaku tool bawaan.


1464 1468 

1465#### `McpSdkServerConfigWithInstance`1469#### `McpSdkServerConfigWithInstance`

1466 1470 

1467Konfigurasi untuk server MCP in-process, yaitu server yang dibuat oleh [`createSdkMcpServer()`](#createsdkmcpserver) dan berjalan di dalam proses aplikasi Anda. Ini adalah objek yang dikembalikan oleh `createSdkMcpServer()`, ditambah daftar `tools` opsional berisi entri [`McpServerToolPolicy`](#mcpservertoolpolicy) yang Anda tambahkan sendiri. Untuk mewajibkan persetujuan bagi panggilan ke salah satu tool server, atau untuk menolaknya, tambahkan entri yang menyebutkan tool tersebut.1471Konfigurasi untuk server MCP in-process. Ini adalah apa yang dikembalikan oleh [`createSdkMcpServer()`](#createsdkmcpserver), ditambah daftar `tools` opsional berisi entri [`McpServerToolPolicy`](#mcpservertoolpolicy) yang Anda tambahkan.

1468 1472 

1469```typescript theme={null}1473```typescript theme={null}

1470type McpSdkServerConfigWithInstance = {1474type McpSdkServerConfigWithInstance = {


1476};1480};

1477```1481```

1478 1482 

1479Untuk mengatur kebijakan, sebarkan (spread) objek yang dikembalikan oleh `createSdkMcpServer()` ke dalam objek baru di `mcpServers` dan tambahkan daftar `tools` ke objek baru tersebut. Opsi `tools` dari `createSdkMcpServer()` itu sendiri adalah daftar yang berbeda, yang berisi definisi tool dan tidak menerima entri kebijakan. Daftar kebijakan memerlukan Agent SDK v0.3.301 atau lebih baru, dan [`McpServerToolPolicy`](#mcpservertoolpolicy) menjelaskan fungsi setiap nilai `permission_policy`.1483Untuk mewajibkan persetujuan atas panggilan ke salah satu tool server, atau menolaknya, tambahkan entri kebijakan yang menyebutkan tool tersebut. Sebarkan (spread) apa yang dikembalikan oleh `createSdkMcpServer()` ke dalam sebuah objek di bawah `mcpServers` dan letakkan entri tersebut dalam daftar `tools` pada objek itu, karena opsi `tools` milik fungsi tersebut menerima definisi tool, bukan entri kebijakan. Daftar kebijakan memerlukan Agent SDK v0.3.301 atau lebih baru, dan [`McpServerToolPolicy`](#mcpservertoolpolicy) menjelaskan apa yang dilakukan setiap nilai `permission_policy`.

1480 1484 

1481Contoh ini menyetujui terlebih dahulu setiap tool pada server `records` dengan wildcard `allowedTools`, lalu menandai `delete_record` sebagai `always_ask` sehingga panggilan ke tool tersebut tetap diteruskan ke `canUseTool`. Dengan anotasi `destructiveHint: true`, panggilan tetap mencapai callback jika sesi berjalan dalam mode `auto`, di mana [pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) auto mode dapat menyetujuinya jika tidak demikian.1485Dalam skrip ini, wildcard `allowedTools` menyetujui terlebih dahulu setiap tool pada server `records`, tetapi `delete_record` ditandai `always_ask`, sehingga panggilan ke tool tersebut tetap diteruskan ke `canUseTool`. Dengan anotasi `destructiveHint: true`, panggilan tetap mencapai callback jika sesi berjalan dalam mode `auto`, di mana [pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) auto mode dapat menyetujuinya jika tidak demikian.

1482 1486 

1483```typescript theme={null}1487```typescript theme={null}

1484import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";1488import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";


1517}1521}

1518```1522```

1519 1523 

1520Ketika Claude memanggil tool tersebut, skrip mencetak `Approval requested for mcp__records__delete_record` sebelum tool `delete_record` berjalan, meskipun entri `allowedTools` sebenarnya akan menyetujui panggilan tersebut.1524Ketika Claude memanggil `delete_record`, skrip mencetak `Approval requested for mcp__records__delete_record`.

1521 1525 

1522Untuk mengubah atau mencabut kebijakan tool saat sesi berjalan, berikan konfigurasi server dengan nilai `tools` baru ke [`setMcpServers()`](#mcpsetserversresult). Nilai `tools` yang Anda berikan berlaku mulai dari panggilan Claude berikutnya ke tool server tersebut:1526Untuk mengubah atau mencabut kebijakan tool saat sesi berjalan, berikan konfigurasi server dengan nilai `tools` baru ke [`setMcpServers()`](#mcpsetserversresult). Nilai `tools` yang Anda berikan berlaku mulai dari panggilan Claude berikutnya ke tool server tersebut:

1523 1527 


1556 1560 

1557##### Mode izin yang dapat menyetujui panggilan `always_ask`1561##### Mode izin yang dapat menyetujui panggilan `always_ask`

1558 1562 

1559Dalam mode `auto`, `plan`, dan `bypassPermissions`, panggilan ke tool yang ditandai [`always_ask`](#permission-policy-values) dapat disetujui sebelum mencapai callback `canUseTool` Anda. Temukan mode sesi Anda dalam daftar ini untuk melihat kapan persetujuan tersebut terjadi dan apa yang harus diatur agar panggilan tetap mencapai callback Anda:1563Dalam mode `auto`, `plan`, dan `bypassPermissions`, panggilan ke tool yang ditandai [`always_ask`](#permission-policy-values) dapat disetujui sebelum mencapai callback `canUseTool` Anda.

1560 1564 

1561* **`auto`**: [pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) auto mode meninjau panggilan dan dapat mengizinkannya. Agar setiap panggilan mencapai callback Anda dalam mode `auto`, atur `destructiveHint: true` dalam [anotasi](#toolannotations) tool1565* **`auto`**: [pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) auto mode meninjau panggilan dan dapat mengizinkannya. Agar setiap panggilan mencapai callback Anda dalam mode `auto`, atur `destructiveHint: true` dalam [anotasi](#toolannotations) tool

1562* **`plan`**: selama [auto mode tersedia](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk sesi, panggilan ke tool `always_ask` yang dianotasi `readOnlyHint: true` diteruskan ke pengklasifikasi auto mode, yang dapat mengizinkannya. Panggilan ke tool `always_ask` lainnya mencapai callback Anda. Agar panggilan tool read-only juga mencapai callback Anda, tambahkan `destructiveHint: true` ke anotasi tool tersebut bersama `readOnlyHint: true`. Sebagai alternatif, atur [`useAutoModeDuringPlan`](https://code.claude.com/docs/id/settings-reference#useautomodeduringplan) ke `false`, yang mematikan pengklasifikasi selama perencanaan1566* **`plan`**: selama [auto mode tersedia](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk sesi, panggilan ke tool `always_ask` yang dianotasi `readOnlyHint: true` diteruskan ke pengklasifikasi auto mode, yang dapat mengizinkannya. Panggilan ke tool `always_ask` lainnya mencapai callback Anda. Agar panggilan tool read-only juga mencapai callback Anda, tambahkan `destructiveHint: true` ke anotasi tool tersebut bersama `readOnlyHint: true`. Sebagai alternatif, atur [`useAutoModeDuringPlan`](https://code.claude.com/docs/id/settings-reference#useautomodeduringplan) ke `false`, yang mematikan pengklasifikasi selama perencanaan


1692 1696 

1693`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.1697`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.

1694 1698 

1695`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](https://code.claude.com/docs/id/agent-sdk/subagents.md#resume-subagents). Field ini memerlukan Agent SDK v0.3.292 atau yang lebih baru.1699`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](https://code.claude.com/docs/id/agent-sdk/subagents.md#resume-subagents). Pada pesan dari [subagent bersarang](https://code.claude.com/docs/id/sub-agents.md#let-subagents-spawn-their-own-subagents), field ini menyebutkan subagent bersarang, bukan subagent yang memunculkannya. Field ini memerlukan Agent SDK v0.3.292 atau yang lebih baru.

1696 1700 

1697Cocokkan 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.1701Cocokkan 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.

1698 1702 


3273 3277 

3274### Agent3278### Agent

3275 3279 

3276**Nama tool:** `Agent`. Nama sebelumnya `Task` masih diterima sebagai alias, dan array `tools` dalam pesan init [`SDKSystemMessage`](#sdksystemmessage) saat ini mencantumkan tool ini sebagai `Task` untuk kompatibilitas mundur.3280**Nama tool:** `Agent`. Nama sebelumnya `Task` masih diterima sebagai alias ketika tool ini tersedia untuk sesi.

3281 

3282Array `tools` dalam pesan init [`SDKSystemMessage`](#sdksystemmessage) mencantumkan tool ini sebagai `Task` untuk kompatibilitas mundur.

3277 3283 

3278> [!NOTE]3284> [!NOTE]

3279>3285>


4010 4016 

4011### Agent4017### Agent

4012 4018 

4013**Nama tool:** `Agent`. Nama sebelumnya `Task` masih diterima sebagai alias, dan array `tools` dalam pesan init [`SDKSystemMessage`](#sdksystemmessage) saat ini mencantumkan tool ini sebagai `Task` untuk kompatibilitas mundur.4019**Nama tool:** `Agent`. Nama sebelumnya `Task` masih diterima sebagai alias ketika tool ini tersedia untuk sesi.

4014 4020 

4015```typescript theme={null}4021```typescript theme={null}

4016type AgentOutput =4022type AgentOutput =


5210 5216 

5211#### Ketika `_meta.ui` suatu tool hanya berisi `visibility`5217#### Ketika `_meta.ui` suatu tool hanya berisi `visibility`

5212 5218 

5213Jika server Anda mendeklarasikan `ui.resourceUri` untuk suatu tool tetapi `_meta.ui` yang diterima aplikasi Anda hanya berisi `visibility`, objek `ui` yang dikirim server gagal dalam salah satu pemeriksaan Claude Code. Claude Code memeriksa `ui` dan `ui/resourceUri` secara terpisah, sehingga satu kunci dapat mencapai aplikasi Anda ketika kunci lainnya gagal. Bandingkan `_meta` dalam respons `tools/list` server Anda dengan pemeriksaan untuk setiap kunci:5219Jika server Anda mendeklarasikan `ui.resourceUri` untuk suatu tool tetapi `_meta.ui` yang diterima aplikasi Anda hanya berisi `visibility`, objek `ui` yang dikirim server gagal dalam salah satu pemeriksaan Claude Code. Bandingkan `_meta` dalam respons `tools/list` server Anda dengan pemeriksaan untuk setiap kunci:

5214 5220 

5215* **`ui`**: mencapai aplikasi Anda tanpa perubahan, termasuk anggota apa pun selain `resourceUri` dan `visibility`, jika ketiga pemeriksaan lolos:5221* **`ui`**: mencapai aplikasi Anda tanpa perubahan, termasuk anggota apa pun selain `resourceUri` dan `visibility`, jika ketiga pemeriksaan lolos:

5216 5222 


5553 5559 

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

5555 5561 

5562Jika Anda memulai sesi dengan [`startup()`](#startup), pesan-pesan ini sampai kepada Anda setelah Anda memanggil `.query()` dan melakukan iterasi atas hasilnya.

5563 

5556```typescript theme={null}5564```typescript theme={null}

5557type SDKHookStartedMessage = {5565type SDKHookStartedMessage = {

5558 type: "system";5566 type: "system";


6072| `allowManagedDomainsOnly` | `boolean` | `false` | Hanya pengaturan yang dikelola. Ketika diatur dalam [pengaturan yang dikelola](https://code.claude.com/docs/id/managed-settings.md), hanya entri `allowedDomains` dan aturan izin `WebFetch(domain:...)` dari pengaturan yang dikelola yang dihormati, dan entri izin dari pengaturan pengguna, proyek, atau lokal diabaikan. Dari SDK, teruskan melalui opsi [`managedSettings`](#options) |6080| `allowManagedDomainsOnly` | `boolean` | `false` | Hanya pengaturan yang dikelola. Ketika diatur dalam [pengaturan yang dikelola](https://code.claude.com/docs/id/managed-settings.md), hanya entri `allowedDomains` dan aturan izin `WebFetch(domain:...)` dari pengaturan yang dikelola yang dihormati, dan entri izin dari pengaturan pengguna, proyek, atau lokal diabaikan. Dari SDK, teruskan melalui opsi [`managedSettings`](#options) |

6073| `allowLocalBinding` | `boolean` | `false` | Izinkan proses untuk mengikat ke port lokal (misalnya, untuk dev server) |6081| `allowLocalBinding` | `boolean` | `false` | Izinkan proses untuk mengikat ke port lokal (misalnya, untuk dev server) |

6074| `allowUnixSockets` | `string[]` | `[]` | Jalur Unix socket yang dapat diakses proses (misalnya, Docker socket) |6082| `allowUnixSockets` | `string[]` | `[]` | Jalur Unix socket yang dapat diakses proses (misalnya, Docker socket) |

6075| `allowAllUnixSockets` | `boolean` | `false` | Izinkan akses ke semua Unix socket |6083| `allowAllUnixSockets` | `boolean` | `false` | Izinkan akses ke semua Unix socket, dan di Linux ke VM socket (`AF_VSOCK`) |

6076| `httpProxyPort` | `number` | `undefined` | Port proxy HTTP untuk permintaan jaringan |6084| `httpProxyPort` | `number` | `undefined` | Port proxy HTTP untuk permintaan jaringan |

6077| `socksProxyPort` | `number` | `undefined` | Port proxy SOCKS untuk permintaan jaringan |6085| `socksProxyPort` | `number` | `undefined` | Port proxy SOCKS untuk permintaan jaringan |

6078 6086 

agent-view.md +8 −2

Details

320 320 

321#### Bawa kembali sesi masa lalu321#### Bawa kembali sesi masa lalu

322 322 

323Untuk membawa sesi kembali pada Claude Code v2.1.212 atau lebih baru, ketik `/resume` dalam [input pengiriman](#dispatch-an-agent-from-agent-view). Pemilih terbuka dengan sesi masa lalu dari repositori tempat Anda membuka tampilan agent, terbaru terlebih dahulu, termasuk sesi yang Anda hapus dari daftar. Sesi yang sudah memiliki baris tidak tercantum. Tekan `Enter` untuk melanjutkan sesi yang dipilih sebagai sesi latar belakang, sehingga kembali masuk ke daftar sebagai baris.323Untuk membawa sesi kembali, ketik `/resume` dalam [input pengiriman](#dispatch-an-agent-from-agent-view). Pemilih terbuka dengan sesi masa lalu dari repositori tempat Anda membuka tampilan agent, terbaru terlebih dahulu, termasuk sesi yang Anda hapus dari daftar. Sesi yang sudah memiliki baris tidak tercantum. Tekan `Enter` untuk melanjutkan sesi yang dipilih sebagai sesi latar belakang, sehingga kembali masuk ke daftar sebagai baris.

324 324 

325`/resume` gagal dengan `isn't available in agent view` ketika:325`/resume` gagal dengan `isn't available in agent view` ketika:

326 326 


410* `/logout` mengeluarkan Anda410* `/logout` mengeluarkan Anda

411* `/model`, `/effort`, dan `/fast` menetapkan [apa yang digunakan sesi yang Anda kirim berikutnya saat dimulai](#set-the-model-effort-and-fast-mode). `/effort` dan `/fast` memerlukan Claude Code v2.1.299 atau lebih baru.411* `/model`, `/effort`, dan `/fast` menetapkan [apa yang digunakan sesi yang Anda kirim berikutnya saat dimulai](#set-the-model-effort-and-fast-mode). `/effort` dan `/fast` memerlukan Claude Code v2.1.299 atau lebih baru.

412* `/login` membuka dialog masuk sehingga Anda dapat masuk lagi tanpa melampirkan ke sesi412* `/login` membuka dialog masuk sehingga Anda dapat masuk lagi tanpa melampirkan ke sesi

413* `/resume` tanpa argumen, atau alias `/continue` miliknya, membuka pemilih sesi masa lalu repositori untuk [membawa satu kembali](#bring-back-a-past-session) sebagai sesi latar belakang. Memerlukan Claude Code v2.1.212 atau lebih baru413* `/resume` tanpa argumen, atau alias `/continue` miliknya, membuka pemilih sesi masa lalu repositori untuk [membawa satu kembali](#bring-back-a-past-session) sebagai sesi latar belakang

414 414 

415Skills, perintah Anda sendiri, dan perintah bawaan yang memperluas prompt seperti `/init` dikirim ke sesi latar belakang baru sebagai prompt pertama mereka. Petunjuk `isn't available in agent view` berarti perintah bawaan yang Anda masukkan tidak dijalankan. Untuk menjalankannya, [lampirkan ke sesi](#attach-to-a-session) dan masukkan perintah itu di sana. Semua yang Anda ketik tetap berada di input di sebelah petunjuk sehingga Anda dapat mengeditnya.415Skills, perintah Anda sendiri, dan perintah bawaan yang memperluas prompt seperti `/init` dikirim ke sesi latar belakang baru sebagai prompt pertama mereka. Petunjuk `isn't available in agent view` berarti perintah bawaan yang Anda masukkan tidak dijalankan. Untuk menjalankannya, [lampirkan ke sesi](#attach-to-a-session) dan masukkan perintah itu di sana. Semua yang Anda ketik tetap berada di input di sebelah petunjuk sehingga Anda dapat mengeditnya.

416 416 


454 454 

455Ketika [agent view dimatikan](#turn-off-agent-view), `/fork` memulai [forked subagent](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation) alih-alih menyalin sesi.455Ketika [agent view dimatikan](#turn-off-agent-view), `/fork` memulai [forked subagent](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation) alih-alih menyalin sesi.

456 456 

457##### Prompt the copy and open its session

458 

457Berikan prompt seperti `/fork open a draft pull request with the work so far` dan salinan langsung mulai mengerjakannya. Tanpa prompt, salinan menunggu instruksi pertamanya: pilih barisnya di `claude agents` dan tekan `Space` untuk mengirim satu, atau jalankan `claude attach <id>`. Baris yang dipilih menampilkan `space to send it a prompt` selama menunggu.459Berikan prompt seperti `/fork open a draft pull request with the work so far` dan salinan langsung mulai mengerjakannya. Tanpa prompt, salinan menunggu instruksi pertamanya: pilih barisnya di `claude agents` dan tekan `Space` untuk mengirim satu, atau jalankan `claude attach <id>`. Baris yang dipilih menampilkan `space to send it a prompt` selama menunggu.

458 460 

459Konfirmasi `/fork` adalah satu baris yang menampilkan status salinan, seperti `session running`, nama baris agent view-nya, dan ID sesinya untuk `claude attach`. Klik nama untuk beralih ke salinan: sesi ini pindah ke latar belakang, sama seperti menekan `←`, dan agent view membuka sesi salinan.461Konfirmasi `/fork` adalah satu baris yang menampilkan status salinan, seperti `session running`, nama baris agent view-nya, dan ID sesinya untuk `claude attach`. Klik nama untuk beralih ke salinan: sesi ini pindah ke latar belakang, sama seperti menekan `←`, dan agent view membuka sesi salinan.

460 462 

463##### Where the copy runs

464 

461Kecuali ketika salinan [mengedit di tempat](#how-file-edits-are-isolated), Claude Code menginstruksikannya untuk membuat worktree miliknya sendiri sebelum membuat perubahan kode. Di luar repositori git, hanya salinan yang dipindahkan keluar dari worktree yang dibuat hook yang mendapat instruksi tersebut; tanpa [`WorktreeCreate` hook](https://code.claude.com/docs/id/hooks#worktreecreate), salinan mengedit di tempat. Salinan yang dipindahkan keluar dari worktree Anda juga diberi tahu untuk tidak pernah mengedit, menjalankan perintah di, atau memasuki worktree itu, apa pun pengaturan isolasinya.465Kecuali ketika salinan [mengedit di tempat](#how-file-edits-are-isolated), Claude Code menginstruksikannya untuk membuat worktree miliknya sendiri sebelum membuat perubahan kode. Di luar repositori git, hanya salinan yang dipindahkan keluar dari worktree yang dibuat hook yang mendapat instruksi tersebut; tanpa [`WorktreeCreate` hook](https://code.claude.com/docs/id/hooks#worktreecreate), salinan mengedit di tempat. Salinan yang dipindahkan keluar dari worktree Anda juga diberi tahu untuk tidak pernah mengedit, menjalankan perintah di, atau memasuki worktree itu, apa pun pengaturan isolasinya.

462 466 

463Tempat salinan dimulai tergantung di mana sesi saat ini berjalan:467Tempat salinan dimulai tergantung di mana sesi saat ini berjalan:


467* Ketika Anda meluncurkan sesi di dalam worktree tertaut dari repositori yang memiliki main working tree, salinan dimulai di main working tree itu, dengan aturan worktree-miliknya-sendiri yang sama tetapi tanpa instruksi branch. Konfirmasi juga berakhir dengan `runs in the origin tree` di sini.471* Ketika Anda meluncurkan sesi di dalam worktree tertaut dari repositori yang memiliki main working tree, salinan dimulai di main working tree itu, dengan aturan worktree-miliknya-sendiri yang sama tetapi tanpa instruksi branch. Konfirmasi juga berakhir dengan `runs in the origin tree` di sini.

468* Sesi yang diluncurkan di dalam worktree dari tata letak bare repository tidak memiliki main working tree untuk kembali, jadi salinan tetap di tempatnya, dan konfirmasi berakhir dengan `edits this checkout`. Catatan yang sama muncul ketika isolasi worktree [dimatikan](#how-file-edits-are-isolated) dalam sesi yang tidak berada di dalam worktree tertaut, karena salinan kemudian mengedit file yang Anda buka.472* Sesi yang diluncurkan di dalam worktree dari tata letak bare repository tidak memiliki main working tree untuk kembali, jadi salinan tetap di tempatnya, dan konfirmasi berakhir dengan `edits this checkout`. Catatan yang sama muncul ketika isolasi worktree [dimatikan](#how-file-edits-are-isolated) dalam sesi yang tidak berada di dalam worktree tertaut, karena salinan kemudian mengedit file yang Anda buka.

469 473 

474##### Sessions that can't be forked

475 

470Sesi yang dimulai dengan flag peluncuran yang tidak akan diwarisi salinan, seperti system prompt yang diganti atau allowlist `--tools`, tidak dapat di-fork; Claude Code memberitahukan hal itu alih-alih membuat salinan sebagian. Sesi yang dikirim dari agent view dapat di-fork secara normal: salinan diluncurkan dengan [definisi agent](https://code.claude.com/docs/id/sub-agents.md) dan instruksi tambahan yang sama seperti sesi asalnya.476Sesi yang dimulai dengan flag peluncuran yang tidak akan diwarisi salinan, seperti system prompt yang diganti atau allowlist `--tools`, tidak dapat di-fork; Claude Code memberitahukan hal itu alih-alih membuat salinan sebagian. Sesi yang dikirim dari agent view dapat di-fork secara normal: salinan diluncurkan dengan [definisi agent](https://code.claude.com/docs/id/sub-agents.md) dan instruksi tambahan yang sama seperti sesi asalnya.

471 477 

472#### What carries over when you background478#### What carries over when you background

agents.md +1 −1

Details

32 32 

33> [!NOTE]33> [!NOTE]

34>34>

35> Menjalankan beberapa sesi atau subagents sekaligus mengalikan penggunaan token. Lihat [Costs](https://code.claude.com/docs/id/costs.md) untuk detail penggunaan dan batas laju.35> Menjalankan beberapa sesi atau subagent sekaligus mengalikan penggunaan token. Lihat [Costs](https://code.claude.com/docs/id/costs.md) untuk detail penggunaan dan rate limit.

36 36 

37## Pilih pendekatan37## Pilih pendekatan

38 38 

Details

251| Model utama | Opus 5.5, misalnya `us.anthropic.claude-opus-5-5` di wilayah `us-*` |251| Model utama | Opus 5.5, misalnya `us.anthropic.claude-opus-5-5` di wilayah `us-*` |

252| Model kecil/cepat | Sonnet 4.5, misalnya `us.anthropic.claude-sonnet-4-5-20250929-v1:0` di wilayah `us-*` |252| Model kecil/cepat | Sonnet 4.5, misalnya `us.anthropic.claude-sonnet-4-5-20250929-v1:0` di wilayah `us-*` |

253 253 

254Sebelum v2.1.280, model utama di Amazon Bedrock default ke Opus 5 dan alias `opus` diselesaikan ke Opus 5 dari v2.1.219.

255 

254Tugas latar belakang seperti pembuatan judul sesi menggunakan model kecil/cepat, biasanya model kelas Haiku. Di Amazon Bedrock, Claude Code menggunakan model Sonnet default untuk tugas latar belakang karena Haiku mungkin tidak diaktifkan di setiap akun atau wilayah. Dua pilihan mengubah model mana yang membawanya:256Tugas latar belakang seperti pembuatan judul sesi menggunakan model kecil/cepat, biasanya model kelas Haiku. Di Amazon Bedrock, Claude Code menggunakan model Sonnet default untuk tugas latar belakang karena Haiku mungkin tidak diaktifkan di setiap akun atau wilayah. Dua pilihan mengubah model mana yang membawanya:

255 257 

256* Ketika Anda memilih model utama dengan `--model`, `ANTHROPIC_MODEL`, atau pengaturan `model`, tugas latar belakang menggunakan model itu. Ketika Claude Code memulai sesi pada model yang Anda atur dengan [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/id/model-config#set-a-default-model-for-new-sessions), tugas latar belakang juga menggunakan model itu. Pengaturan `ANTHROPIC_DEFAULT_OPUS_MODEL` tanpa `ANTHROPIC_DEFAULT_SONNET_MODEL` juga dihitung sebagai pilihan, karena model Sonnet bawaan mungkin tidak diaktifkan di akun yang mengarahkan Opus-nya sendiri.258* Ketika Anda memilih model utama dengan `--model`, `ANTHROPIC_MODEL`, atau pengaturan `model`, tugas latar belakang menggunakan model itu. Ketika Claude Code memulai sesi pada model yang Anda atur dengan [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/id/model-config#set-a-default-model-for-new-sessions), tugas latar belakang juga menggunakan model itu. Pengaturan `ANTHROPIC_DEFAULT_OPUS_MODEL` tanpa `ANTHROPIC_DEFAULT_SONNET_MODEL` juga dihitung sebagai pilihan, karena model Sonnet bawaan mungkin tidak diaktifkan di akun yang mengarahkan Opus-nya sendiri.


260>262>

261> Model Opus memiliki harga per-token yang lebih tinggi daripada model Sonnet, jadi jika Anda tidak pin model utama, Anda ditagih dengan tarif Opus. Untuk menggunakan Sonnet 4.5 sebagai model utama, atur `ANTHROPIC_MODEL` ke ID model lengkapnya. Deployment yang mengarahkan default dengan `ANTHROPIC_DEFAULT_SONNET_MODEL` dan tidak mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` menyimpan model Sonnet yang diarahkan sebagai default.263> Model Opus memiliki harga per-token yang lebih tinggi daripada model Sonnet, jadi jika Anda tidak pin model utama, Anda ditagih dengan tarif Opus. Untuk menggunakan Sonnet 4.5 sebagai model utama, atur `ANTHROPIC_MODEL` ke ID model lengkapnya. Deployment yang mengarahkan default dengan `ANTHROPIC_DEFAULT_SONNET_MODEL` dan tidak mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` menyimpan model Sonnet yang diarahkan sebagai default.

262 264 

263Sebelum v2.1.280, model utama di Amazon Bedrock default ke Opus 5 dan alias `opus` diselesaikan ke Opus 5 dari v2.1.219. Pada v2.1.207 melalui v2.1.218, model utama di Amazon Bedrock default ke Opus 4.8 dan alias `opus` diselesaikan ke Opus 4.8.

264 

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

266 266 

267```bash theme={null}267```bash theme={null}

artifacts.md +2 −2

Details

95 95 

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

97 97 

98* **`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 Anda98* **`Enter`**: membukanya di browser Anda jika artifact tersebut sudah terlampir ke sesi saat ini, dan melampirkannya jika belum

99* **`o`**: membukanya di browser Anda99* **`o`**: membukanya di browser Anda

100* **`c`**: menyalin tautannya100* **`c`**: menyalin tautannya

101* **`d`**: di luar [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), menghapus secara permanen artifact yang Anda miliki setelah Anda mengonfirmasi. Tautannya berhenti berfungsi untuk semua orang, termasuk Anda101* **`d`**: di luar [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md), menghapus secara permanen artifact yang Anda miliki setelah Anda mengonfirmasi. Tautannya berhenti berfungsi untuk semua orang, termasuk Anda


225 225 

226Ketika halaman yang didukung konektor dirender tetapi bagian langsung-nya tetap kosong untuk penampil dalam organisasi Anda, kerjakan penyebab-penyebab ini:226Ketika halaman yang didukung konektor dirender tetapi bagian langsung-nya tetap kosong untuk penampil dalam organisasi Anda, kerjakan penyebab-penyebab ini:

227 227 

228* **Penampil belum menghubungkan konektor**: konektor adalah per-akun, jadi setiap penampil memerlukan koneksi mereka sendiri ke setiap konektor yang dipanggil halaman. Mereka dapat menambahkan satu di bawah **Settings > Connectors** di claude.ai, kemudian muat ulang halaman.228* **Penampil belum menghubungkan konektor**: konektor bersifat per-akun, jadi setiap penampil memerlukan koneksi mereka sendiri ke setiap konektor yang dipanggil halaman. Mereka dapat menambahkannya di bawah [**Customize > Connectors**](https://claude.ai/customize/connectors) di claude.ai, kemudian memuat ulang halaman.

229* **Penampil menolak permintaan izin**: penolakan berlaku untuk sisa pemuatan halaman itu. Memuat ulang halaman membawa permintaan izin kembali.229* **Penampil menolak permintaan izin**: penolakan berlaku untuk sisa pemuatan halaman itu. Memuat ulang halaman membawa permintaan izin kembali.

230* **Panggilan konektor dimatikan untuk organisasi**: Pemilik mengontrol [toggle **Enable artifact connectors**](#control-connector-calls-from-artifacts) dalam pengaturan admin.230* **Panggilan konektor dimatikan untuk organisasi**: Pemilik mengontrol [toggle **Enable artifact connectors**](#control-connector-calls-from-artifacts) dalam pengaturan admin.

231* **Halaman memanggil nama alat yang tidak diekspos konektor**: bagian yang terpengaruh tetap kosong untuk semua orang, termasuk Anda. Ini dapat terjadi ketika halaman menamakan alat individual di balik konektor gaya gateway yang hanya mengekspos beberapa alat miliknya sendiri. Minta Claude untuk memperbaiki nama alat yang dipanggil halaman dan menerbitkannya lagi.231* **Halaman memanggil nama alat yang tidak diekspos konektor**: bagian yang terpengaruh tetap kosong untuk semua orang, termasuk Anda. Ini dapat terjadi ketika halaman menamakan alat individual di balik konektor gaya gateway yang hanya mengekspos beberapa alat miliknya sendiri. Minta Claude untuk memperbaiki nama alat yang dipanggil halaman dan menerbitkannya lagi.

best-practices.md +417 −355

Details

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

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

4 4 

5# Praktik Terbaik untuk Claude Code5# Praktik terbaik untuk Claude Code

6 6 

7> Tips dan pola untuk memaksimalkan Claude Code, dari mengonfigurasi lingkungan Anda hingga menskalakan di seluruh sesi paralel.7> Dapatkan lebih banyak dari Claude Code: beri tahu Claude apa yang tidak dapat dilihatnya, berikan pemeriksaan untuk dijalankan, dan tegakkan aturan yang tidak boleh memiliki pengecualian.

8 8 

9Claude Code adalah lingkungan pengkodean yang bersifat agentic. Tidak seperti chatbot yang menjawab pertanyaan dan menunggu, Claude Code dapat membaca file Anda, menjalankan perintah, membuat perubahan, dan bekerja secara mandiri melalui masalah sambil Anda menonton, mengarahkan, atau sepenuhnya menjauh.9Claude Code dibangun sedemikian rupa sehingga, dalam sebagian besar kasus, prompt sederhana pertama Anda di sesi baru sudah melakukan hal yang benar, tanpa setup apa pun dari pihak Anda.

10 10 

11Ini mengubah cara Anda bekerja. Alih-alih menulis kode sendiri dan meminta Claude untuk meninjau, Anda menjelaskan apa yang Anda inginkan dan Claude mengetahui cara membangunnya. Claude mengeksplorasi, merencanakan, dan mengimplementasikan.11Sebagai contoh:

12 12 

13Namun otonomi ini masih datang dengan kurva pembelajaran. Claude bekerja dalam batasan tertentu yang perlu Anda pahami.13* Agar perintah dapat berjalan dengan aman tanpa Anda menyetujui masing-masing, sesi terminal dan VS Code baru dimulai dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode), di mana pengklasifikasi meninjau apa pun yang berisiko sebelum dijalankan.

14* Agar percakapan utama Anda tetap fokus sementara pekerjaan independen berlangsung secara paralel, Claude mendelegasikan ke subagent dan hanya melapor kepada Anda ketika memang perlu.

15* Agar sesi panjang tetap berjalan tanpa Anda kelola, percakapan Anda menjalani compaction secara otomatis sebelum context window penuh.

14 16 

15Panduan ini mencakup pola yang telah terbukti efektif di seluruh tim internal Anthropic dan untuk insinyur yang menggunakan Claude Code di berbagai basis kode, bahasa, dan lingkungan. Untuk cara loop agentic bekerja, lihat [Cara Claude Code Bekerja](https://code.claude.com/docs/id/how-claude-code-works.md).17Halaman ini membahas apa yang harus dilakukan ketika default tidak cukup. Hal itu biasanya terjadi ketika proyek Anda memiliki pengetahuan, aturan, atau batasan yang tidak dapat dilihat Claude dari kode saja:

16 18 

17***19* Proses deploy yang hanya ada di kepala seseorang

20* File yang tidak boleh dibaca sama sekali

21* Pemeriksaan yang harus lulus sebelum apa pun dianggap selesai

22* Anggaran yang tidak boleh Anda lampaui

18 23 

19Sebagian besar praktik terbaik didasarkan pada satu batasan: jendela konteks Claude terisi dengan cepat, dan kinerja menurun saat terisi.24Tidak ada default yang dapat mengetahui hal-hal tersebut tentang proyek Anda, jadi di sinilah sedikit setup dari pihak Anda akan sangat bermanfaat.

20 25 

21Jendela konteks Claude menyimpan seluruh percakapan Anda, termasuk setiap pesan, setiap file yang dibaca Claude, dan setiap output perintah. Namun, ini dapat terisi dengan cepat. Sesi debugging tunggal atau eksplorasi basis kode mungkin menghasilkan dan mengonsumsi puluhan ribu token.26Ketika sebuah sesi tidak berjalan seperti yang Anda harapkan, penyebabnya hampir selalu salah satu dari ini:

22 27 

23Ini penting karena kinerja LLM menurun saat konteks terisi. Ketika jendela konteks hampir penuh, Claude mungkin mulai "lupa" instruksi sebelumnya atau membuat lebih banyak kesalahan. Jendela konteks adalah sumber daya paling penting untuk dikelola. Untuk melihat bagaimana sesi terisi dalam praktik, [tonton panduan interaktif](https://code.claude.com/docs/id/context-window.md) tentang apa yang dimuat saat startup dan berapa biaya setiap pembacaan file. Lacak penggunaan konteks secara berkelanjutan dengan [baris status khusus](https://code.claude.com/docs/id/statusline.md), dan lihat [Kurangi penggunaan token](https://code.claude.com/docs/id/costs.md#reduce-token-usage) untuk strategi mengurangi penggunaan token.28* Claude membangun sesuatu yang berbeda dari yang Anda bayangkan, atau harus menemukan kembali fakta yang sama di awal setiap sesi. Claude kekurangan informasi yang tidak dapat diperolehnya dengan membaca repo. Lihat [Beri tahu Claude apa yang tidak dapat dilihatnya](#tell-claude-what-it-cant-see).

29* Claude mengatakan sudah selesai padahal belum sepenuhnya, biasanya karena tidak memiliki cara untuk memeriksa pekerjaannya sendiri. Lihat [Berikan Claude pemeriksaan untuk dijalankan](#give-claude-a-check-to-run).

30* Claude melakukan sesuatu yang tidak boleh terjadi di repo ini, atau melewatkan langkah yang harus selalu terjadi. Prompt saja tidak dapat menjamin keduanya. Lihat [Tegakkan aturan yang tidak boleh memiliki pengecualian](#enforce-the-rules-that-cant-have-exceptions).

31* Claude melakukannya dengan benar, tetapi menghabiskan lebih banyak waktu, token, atau permintaan izin daripada yang sepadan dengan tugasnya. Lihat [Ubah default](#change-a-default).

24 32 

25***33[Biarkan Claude berjalan tanpa Anda](#let-claude-run-without-you) menerapkan empat poin yang sama pada run tanpa pengawasan, dan [Apa yang dapat Anda hentikan](#what-you-can-stop-doing) mencantumkan saran yang sudah tidak diperlukan lagi berkat model saat ini.

26 34 

27## Berikan Claude cara untuk memverifikasi pekerjaannya35> [!NOTE]

28 

29> [!TIP]

30>36>

31> Berikan Claude sesuatu yang dapat dijalankannya: tes, build, tangkapan layar untuk dibandingkan. Ini adalah perbedaan antara sesi yang Anda saksikan dan sesi yang dapat Anda tinggalkan.37> Setup untuk seluruh tim ada di halaman terpisah: [Siapkan Claude Code untuk organisasi Anda](https://code.claude.com/docs/id/admin-setup.md).

32 38 

33Claude berhenti ketika pekerjaan terlihat selesai. Tanpa pemeriksaan yang dapat dijalankannya, "terlihat selesai" adalah satu-satunya sinyal yang tersedia, dan Anda menjadi loop verifikasi: setiap kesalahan menunggu Anda untuk menyadarinya. Berikan Claude sesuatu yang menghasilkan lulus atau gagal, dan loop akan menutup dengan sendirinya. Claude melakukan pekerjaan, menjalankan pemeriksaan, membaca hasilnya, dan melakukan iterasi hingga pemeriksaan lulus.39## Instruksi deterministik dan non-deterministik

34 40 

35Pemeriksaan adalah apa pun yang mengembalikan sinyal yang dapat dibaca Claude dalam percakapan: rangkaian tes, kode keluar build, linter, skrip yang membedakan output terhadap fixture, atau [tangkapan layar browser](https://code.claude.com/docs/id/chrome.md) dibandingkan dengan desain. Jalankan [`/verify`](https://code.claude.com/docs/id/skills#run-and-verify-your-app) sendiri setelah pemeriksaan Claude lulus untuk mengonfirmasi perubahan terhadap aplikasi yang berjalan.41Setiap instruksi yang Anda berikan kepada Claude Code termasuk salah satu dari ini:

36 42 

37| Strategi | Sebelum | Sesudah |431. Non-deterministik: Anda menulis instruksi, dan Claude (model) membacanya. Ini bisa berupa prompt Anda, `CLAUDE.md`, atau skill. Model kemudian memutuskan apa yang harus dilakukan dengan informasi ini. Model biasanya mengikuti perintah Anda, dan model saat ini pandai memahami maksud Anda tanpa banyak konteks, tetapi tidak ada *jaminan* bahwa model akan mengikuti instruksi Anda. Model tetap dapat memutuskan untuk tidak melakukan sesuatu, atau melakukan hal lain.

38| - | - | - |442. Deterministik: Anda mengonfigurasi instruksi, dan Claude Code (harness) *harus* menjalankannya. Ini bisa berupa hook, aturan deny, atau pengaturan terkelola. Claude Code menerapkannya setiap saat, apa pun yang diputuskan model.

39| **Sediakan kriteria verifikasi** | *"implementasikan fungsi yang memvalidasi alamat email"* | *"tulis fungsi validateEmail. contoh kasus uji: [user@example.com](mailto:user@example.com) adalah true, invalid adalah false, [user@.com](mailto:user@.com) adalah false. jalankan tes setelah mengimplementasikan"* |

40| **Verifikasi perubahan UI secara visual** | *"buat dashboard terlihat lebih baik"* | *"\[tempel tangkapan layar] implementasikan desain ini. ambil tangkapan layar hasilnya dan bandingkan dengan yang asli. daftar perbedaan dan perbaiki"* |

41| **Tangani penyebab akar, bukan gejala** | *"build gagal"* | *"build gagal dengan kesalahan ini: \[tempel kesalahan]. perbaiki dan verifikasi build berhasil. tangani penyebab akar, jangan tekan kesalahan"* |

42 45 

43Setelah pemeriksaan ada, putuskan seberapa ketat pemeriksaan tersebut membatasi penghentian:46Sebagian besar hal di Claude Code hadir dalam kedua bentuk:

44 47 

45* **Dalam satu prompt**: minta Claude menjalankan pemeriksaan dan melakukan iterasi dalam pesan yang sama, seperti dalam tabel di atas.48| | Non-deterministik (Claude memutuskan) | Deterministik (Claude Code menegakkan) |

46* **Sepanjang sesi**: atur pemeriksaan sebagai [kondisi `/goal`](https://code.claude.com/docs/id/goal). Evaluator terpisah memeriksa ulang setelah setiap giliran dan Claude terus bekerja sampai goal terpenuhi. Jika Claude terhenti, Claude Code pada akhirnya menghentikan run dengan goal masih ditetapkan — lihat [bagaimana evaluasi /goal bekerja](https://code.claude.com/docs/id/goal.md#how-evaluation-works).49| :- | :- | :- |

47* **Sebagai gerbang deterministik**: [hook Stop](https://code.claude.com/docs/id/hooks.md#stop) menjalankan pemeriksaan Anda sebagai skrip dan memblokir giliran dari berakhir sampai lulus. [Stop input](https://code.claude.com/docs/id/hooks.md#stop-input) mencakup batas pada blok berturut-turut.50| Apa yang dilakukan | Prompt Anda, `CLAUDE.md`, skill yang digunakan Claude atas inisiatifnya sendiri | Hook, dan skill mana yang hanya dapat Anda mulai |

48* **Dengan pendapat kedua**: [subagent verifikasi](https://code.claude.com/docs/id/sub-agents.md) atau [alur kerja dinamis](https://code.claude.com/docs/id/workflows.md) yang memeriksa temuannya sendiri memiliki model segar yang mencoba menyangkal hasil, sehingga agen yang melakukan pekerjaan bukan yang menilainya.51| Apa yang dapat disentuhnya | Pengklasifikasi auto mode | Aturan deny, sandbox dalam [mode strict](https://code.claude.com/docs/id/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), pengaturan terkelola |

52| Kapan selesai | Permintaan bukti, `/goal`, `/code-review` | Tes, typecheck, hook `Stop`, CI |

53| Berapa banyak yang dihabiskannya | Tingkat effort, laju Claude sendiri | `--max-turns` atau [`--max-budget-usd`](https://code.claude.com/docs/id/cli-reference) dengan `-p`, [batas pengeluaran](https://code.claude.com/docs/id/costs.md) yang telah Anda tetapkan |

54| Siapa yang memiliki keputusan akhir | Ringkasan Claude tentang apa yang telah dilakukannya | Proteksi branch, orang yang menyetujui merge |

49 55 

50Setiap langkah menukar setup untuk perhatian. Versi prompt berfungsi pada tugas apa pun hari ini. Versi `/goal` dan Stop hook adalah yang memungkinkan run tanpa pengawasan selesai dengan benar tanpa Anda.56Sebagian besar waktu, Anda ingin Claude yang memutuskan. Hampir setiap pedoman memiliki pengecualian, dan model saat ini pandai membaca kode di hadapannya dan menilai apakah suatu pedoman cocok dengan situasinya. Dengan kode yang sebenarnya di hadapannya, Claude biasanya berada dalam posisi yang lebih baik untuk membuat keputusan itu daripada aturan yang Anda tulis sebelumnya.

51 57 

52Biarkan Claude menunjukkan bukti daripada menegaskan kesuksesan: output tes, perintah yang dijalankannya dan apa yang dikembalikannya, atau tangkapan layar hasilnya. Meninjau bukti lebih cepat daripada menjalankan kembali verifikasi sendiri, dan ini berfungsi untuk sesi yang tidak Anda saksikan.58Jenis deterministik adalah untuk saat Anda ingin memastikan hal-hal tertentu *selalu* terjadi (atau tidak pernah terjadi), apa pun yang diputuskan model. Ini tidak harus sesuatu yang dramatis. Auto mode sudah [memblokir hal-hal yang dramatis](https://code.claude.com/docs/id/permission-modes.md#what-the-classifier-blocks-by-default), seperti deploy produksi atau force push yang menimpa pekerjaan orang lain. Biasanya ini adalah sesuatu yang spesifik untuk proyek *Anda*, dan bisa sespesifik yang Anda inginkan:

53 59 

54***60* Jangan pernah mengedit client yang dihasilkan di `src/gen/`

61* Selalu jalankan skrip license-header setelah membuat file

55 62 

56## Jelajahi terlebih dahulu, kemudian rencanakan, kemudian kode63Anda bisa saja menulis salah satu dari ini sebagai baris di `CLAUDE.md` atau di prompt Anda, dan Claude akan mengikutinya hampir setiap saat. Tetapi sekuat apa pun Anda merumuskannya, apakah Claude mengikuti baris itu pada giliran tertentu tetap merupakan keputusan Claude.

57 64 

58> [!TIP]65> [!TIP]

59>66>

60> Pisahkan penelitian dan perencanaan dari implementasi untuk menghindari menyelesaikan masalah yang salah.67> Jika Anda terus menambahkan penekanan pada baris `CLAUDE.md` dan Claude tetap melewatkannya, itu tanda bahwa baris tersebut seharusnya menjadi hook. Sebaliknya juga berlaku: jika Anda memiliki hook untuk hal-hal yang hanya berupa preferensi, hapus hook tersebut dan biarkan Claude yang memutuskan.

61 68 

62Membiarkan Claude langsung melompat ke pengkodean dapat menghasilkan kode yang menyelesaikan masalah yang salah. Gunakan [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) untuk memisahkan eksplorasi dari eksekusi.69## Beri tahu Claude apa yang tidak dapat dilihatnya

63 70 

64Alur kerja yang direkomendasikan memiliki empat fase:71> [!TIP]

72>

73> Tuliskan hanya apa yang tidak dapat ditemukan Claude dengan membaca repo, atau apa yang jika tidak akan menghabiskan waktunya untuk ditemukan kembali di setiap sesi.

65 74 

66**1. Jelajahi**75Claude memulai setiap tugas dengan membaca kode Anda, dan model saat ini *sangat* pandai dalam hal ini. Model akan menemukan tata letak file Anda, konvensi Anda, framework tes Anda, dan cara komponen yang ada dibangun, biasanya lebih cepat daripada Anda dapat menjelaskannya. Artinya Claude sudah mengetahui sebagian besar hal yang mungkin ingin Anda tuliskan untuknya.

67 76 

68Masukkan plan mode dengan menekan `Shift+Tab` hingga bilah status menunjukkan `⏸ plan mode on`, atau mulai sesi dengan `claude --permission-mode plan`. Claude membaca file dan menjawab pertanyaan tanpa membuat perubahan.77Yang tidak dapat ditemukannya adalah informasi yang tidak pernah ada di repo:

69 78 

70```txt title="claude (plan mode)" wrap theme={null}79* Keputusan yang dibuat tim Anda dalam rapat

71read /src/auth and understand how we handle sessions and login.80* Proses deploy yang hanya ada di kepala satu orang

72also look at how we manage environment variables for secrets.81* Environment variable yang dibutuhkan tes integrasi Anda

73```

74 82 

75**2. Rencanakan**83Ada juga informasi yang *memang* ada di repo tetapi butuh beberapa menit penggalian untuk ditemukan, dan Claude harus mengulang penggalian itu di awal setiap sesi.

76 84 

77Minta Claude untuk membuat rencana implementasi terperinci.85Uji yang baik sebelum Anda menuliskan apa pun untuk Claude:

78 86 

79```txt title="claude (plan mode)" wrap theme={null}871. Apakah Claude dapat menemukan ini dengan membaca kode?

80I want to add Google OAuth. What files need to change?882. Apakah Claude benar-benar akan mencarinya?

81What's the session flow? Create a plan.

82```

83 89 

84Tekan `Ctrl+G` untuk membuka rencana di editor teks Anda untuk pengeditan langsung sebelum Claude melanjutkan.90Jika keduanya ya, jangan tuliskan.

85 91 

86**3. Implementasikan**92### Tulis prompt yang spesifik

87 93 

88Beralih keluar dari plan mode dengan menyetujui rencana atau menekan `Shift+Tab`, kemudian biarkan Claude kode, memverifikasi terhadap rencananya.94Prompt yang spesifik membantu untuk alasan yang sama, karena memberikan Claude informasi yang belum dimilikinya. Jika Anda menyebutkan file, menjelaskan gejala, dan mengatakan seperti apa kondisi "diperbaiki" sejak awal, Anda biasanya menghemat satu putaran koreksi nanti.

89 95 

90```txt title="claude" wrap theme={null}96Hal yang sama berlaku untuk preferensi di antara dua pendekatan yang sama-sama masuk akal: Claude tidak dapat membacanya dari kode, jadi jika Anda peduli mana yang dipilihnya, katakan sejak awal.

91implement the OAuth flow from your plan. write tests for the

92callback handler, run the test suite and fix any failures.

93```

94 97 

95**4. Komit**98| Alih-alih | Coba |

99| :- | :- |

100| *"perbaiki bug login"* | *"pengguna melaporkan login gagal setelah sesi timeout. periksa penyegaran token di src/auth/, tulis tes gagal yang mereproduksinya, lalu perbaiki"* |

101| *"tambahkan widget kalender"* | *"ikuti pola di HotDogWidget.php dan bangun widget kalender yang memungkinkan Anda memilih bulan dan berpindah halaman antar tahun. tanpa library baru"* |

96 102 

97Minta Claude untuk melakukan komit dengan pesan deskriptif dan membuat PR.103Jika Anda sudah memiliki hal yang dibutuhkan Claude, serahkan saja alih-alih menjelaskannya:

98 104 

99```txt title="claude" wrap theme={null}105* File: ketik `@` dan path-nya untuk [menyertakan isi file](https://code.claude.com/docs/id/common-workflows.md#reference-files-and-directories) dalam pesan Anda.

100commit with a descriptive message and open a PR106* Gambar: tempel tangkapan layar desain atau error ke dalam prompt.

101```107* Output perintah: salurkan dari shell Anda dengan `cat error.log | claude -p "what's going on here"`.

102 108 

103Plan mode berguna, tetapi juga menambah overhead.109Frasa seperti `think step by step` atau `be thorough` adalah teks prompt biasa, bukan kata kunci. Kontrol utama untuk seberapa keras Claude berpikir adalah [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level), yang dibahas di [Ubah model dan effort](#change-the-model-and-effort). Kata-kata seperti itu masih dapat sedikit mendorong Claude dalam batas pengaturan effort-nya, tetapi tidak akan mengangkatnya melampaui pengaturan tersebut.

104 110 

105Untuk tugas di mana cakupannya jelas dan perbaikannya kecil (seperti memperbaiki typo, menambahkan baris log, atau mengganti nama variabel) minta Claude untuk melakukannya secara langsung.111Satu frasa yang masih membantu adalah `be ambitious`. Claude cenderung membaca permintaan secara konservatif dan membangun hal terkecil yang memenuhinya, karena tidak dapat melihat seberapa banyak yang Anda harapkan. Ketika Anda menginginkan versi yang lebih lengkap, dengan kasus tepi ditangani dan kelanjutan alaminya disertakan, katakan saja:

106 112 

107Perencanaan paling berguna ketika Anda tidak yakin tentang pendekatannya, ketika perubahan memodifikasi beberapa file, atau ketika Anda tidak terbiasa dengan kode yang dimodifikasi. Jika Anda dapat menjelaskan diff dalam satu kalimat, lewati rencana.113```text theme={null}

114build the settings page from the mockup. be ambitious: empty and error states, the save flow wired up, keyboard navigation, not just the layout

115```

108 116 

109***117Itu memberi tahu Claude tentang cakupan, yang hanya Anda ketahui, bukan tentang seberapa keras harus berpikir.

110 118 

111## Berikan konteks spesifik dalam prompt Anda119Dan ketika Anda sedang mengeksplorasi alih-alih memperbaiki sesuatu yang spesifik, prompt samar seperti `what would you improve in this file?` sama sekali tidak masalah. Anda akan sedikit lebih banyak mengoreksi seiring berjalannya waktu, dan itulah konsekuensinya.

112 120 

113> [!TIP]121### Lakukan brainstorming dengan Claude terlebih dahulu

114>

115> Semakin tepat instruksi Anda, semakin sedikit koreksi yang Anda butuhkan.

116 122 

117Claude dapat menyimpulkan niat, tetapi tidak dapat membaca pikiran Anda. Referensikan file spesifik, sebutkan batasan, dan tunjukkan pola contoh.123Ketika Anda belum tahu persis apa yang Anda inginkan, Anda tidak harus memikirkan semuanya sebelum menulis prompt. Minta Claude untuk mewawancarai Anda saja:

118 124 

119| Strategi | Sebelum | Sesudah |125```text theme={null}

120| - | - | - |126I want to add rate limiting to the public API but haven't thought it through yet. Interview me until you could write the spec, then write it to SPEC.md.

121| **Batasi tugas.** Tentukan file mana, skenario apa, dan preferensi pengujian. | *"tambahkan tes untuk foo.py"* | *"tulis tes untuk foo.py yang mencakup kasus tepi di mana pengguna logout. hindari mock."* |127```

122| **Tunjukkan sumber.** Arahkan Claude ke sumber yang dapat menjawab pertanyaan. | *"mengapa ExecutionFactory memiliki api yang aneh?"* | *"lihat melalui riwayat git ExecutionFactory dan ringkas bagaimana api-nya menjadi seperti ini"* |

123| **Referensikan pola yang ada.** Tunjukkan Claude pola dalam basis kode Anda. | *"tambahkan widget kalender"* | *"lihat bagaimana widget yang ada diimplementasikan di halaman beranda untuk memahami pola. HotDogWidget.php adalah contoh yang baik. ikuti pola untuk mengimplementasikan widget kalender baru yang memungkinkan pengguna memilih bulan dan paginate maju/mundur untuk memilih tahun. bangun dari awal tanpa perpustakaan selain yang sudah digunakan dalam basis kode."* |

124| **Jelaskan gejala.** Berikan gejala, lokasi yang mungkin, dan apa "diperbaiki" terlihat seperti. | *"perbaiki bug login"* | *"pengguna melaporkan bahwa login gagal setelah timeout sesi. periksa alur auth di src/auth/, terutama penyegaran token. tulis tes yang gagal yang mereproduksi masalah, kemudian perbaiki"* |

125 128 

126Prompt yang samar dapat berguna ketika Anda mengeksplorasi dan dapat mengubah arah. Prompt seperti `"apa yang akan Anda tingkatkan dalam file ini?"` dapat mengungkap hal-hal yang tidak akan Anda pikirkan untuk ditanyakan.129Claude kembali dengan pertanyaan pilihan ganda tentang bagian-bagian yang belum Anda tetapkan: batas per pengguna versus per kunci, apa yang terjadi pada permintaan yang melebihi batas, apa yang berada di luar cakupan. Claude terus bertanya sampai jawaban-jawabannya membentuk sebuah spesifikasi.

127 130 

128### Berikan konten kaya131Setelah `SPEC.md` ada, mulai sesi baru untuk membangun berdasarkan file tersebut, sehingga pembangunan dimulai dengan konteks bersih dan definisi selesai yang tertulis. File ini juga yang akan Anda tunjukkan kepada peninjau nanti, di [Berikan Claude pemeriksaan untuk dijalankan](#give-claude-a-check-to-run).

129 132 

130> [!TIP]133### Jaga CLAUDE.md tetap singkat

131>

132> Gunakan `@` untuk mereferensikan file, tempel tangkapan layar/gambar, atau pipa data secara langsung.

133 134 

134Anda dapat memberikan data kaya kepada Claude dalam beberapa cara:135Claude Code memuat [`CLAUDE.md`](https://code.claude.com/docs/id/memory) ke setiap sesi, yang berarti setiap baris di dalamnya mengambil sedikit perhatian Claude pada *setiap* tugas, relevan atau tidak. Itulah sebabnya file ini paling efektif ketika hanya berisi apa yang tidak dapat diketahui Claude dari kode itu sendiri:

135 136 

136* **Referensikan file dengan `@`** alih-alih menjelaskan di mana kode berada. Claude membaca file sebelum merespons.137* Cara mengonfirmasi pekerjaan di repo ini: perintah tes, typecheck, dan lint yang tepat, serta cara menjalankan satu file tes

137* **Tempel gambar secara langsung**. Salin/tempel atau seret dan lepas gambar ke dalam prompt.138* Tempat-tempat di mana kode menyesatkan: pola lama yang ada di mana-mana tetapi tidak boleh ditiru oleh kode baru, atau direktori yang terlihat tidak digunakan padahal digunakan

138* **Berikan URL** untuk dokumentasi dan referensi API. Gunakan `/permissions` untuk allowlist domain yang sering digunakan.139* Keputusan yang tidak ada di repo: helper error mana yang dipilih tim, bagaimana deploy bekerja, apa yang memerlukan review migrasi

139* **Pipa data** dengan menjalankan `cat error.log | claude -p "explain this error"` untuk mengirim konten file secara langsung.140* Apa pun yang sudah harus Anda koreksi dua kali

140* **Biarkan Claude mengambil apa yang dibutuhkan**. Beri tahu Claude untuk menarik konteks sendiri menggunakan perintah Bash, alat MCP, atau dengan membaca file.

141 141 

142***142`CLAUDE.md` yang lulus uji itu akan tetap singkat:

143 143 

144## Konfigurasi lingkungan Anda144```markdown CLAUDE.md theme={null}

145# Commands

146- Install: pnpm install

147- Run one test file: pnpm vitest run path/to/file.test.ts

148- Typecheck: pnpm tsc --noEmit

145 149 

146Beberapa langkah setup membuat Claude Code jauh lebih efektif di semua sesi Anda. Untuk gambaran lengkap fitur ekstensi dan kapan menggunakan masing-masing, lihat [Perluas Claude Code](https://code.claude.com/docs/id/features-overview.md).150# Conventions

151- Use the error helpers in src/lib/errors.ts, never throw raw strings

152- src/legacy/ is still live but don't copy its patterns into new code

147 153 

148### Tulis CLAUDE.md yang efektif154# Gotchas

155- Integration tests need DATABASE_URL set, see .env.example

156```

149 157 

150> [!TIP]158Dalam sesi, jalankan `/context` untuk mengonfirmasi bahwa Claude memuat file tersebut.

151>

152> Jalankan `/init` untuk menghasilkan file CLAUDE.md pemula berdasarkan struktur proyek Anda saat ini, kemudian perbaiki seiring waktu.

153 159 

154CLAUDE.md adalah file khusus yang dibaca Claude di awal setiap percakapan. Sertakan perintah Bash, gaya kode, dan aturan alur kerja. Ini memberikan Claude konteks persisten yang tidak dapat disimpulkan dari kode saja.160Perhatikan bahwa baris typecheck hanya berisi perintahnya. Claude perlu mengetahui perintah tersebut agar dapat memeriksa pekerjaannya sendiri sambil berjalan. Jika Anda juga ingin Claude Code *menegakkan* typecheck yang lulus sebelum Claude selesai, itu tugas untuk [hook `Stop`](#enforce-the-check-with-a-stop-hook). Baris seperti `Always typecheck before you finish` di file ini berhasil hampir sepanjang waktu, tetapi tidak setiap saat.

155 161 

156Tidak ada format yang diperlukan untuk file CLAUDE.md, tetapi tetap singkat dan mudah dibaca manusia. Sebagai contoh:162Anda tidak harus menulis file ini dari awal:

157 163 

158```markdown CLAUDE.md theme={null}164* `/init` menghasilkan versi awal dari codebase Anda. Dari sana, pekerjaannya sebagian besar adalah menghapus baris. [Panduan memori](https://code.claude.com/docs/id/memory.md#write-effective-instructions) merekomendasikan agar tetap di bawah 200 baris.

159# Code style165* `/doctor` menyarankan pemotongan untuk apa pun yang [sudah dapat diketahui Claude dari kode](https://code.claude.com/docs/id/memory.md#my-claude-md-is-too-large).

160- Use ES modules (import/export) syntax, not CommonJS (require)166* `/doctor prompt-audit` menandai instruksi yang ditulis untuk model lama, yang menunjuk ke file yang sudah tidak ada, atau yang [saling bertentangan](https://code.claude.com/docs/id/memory.md#audit-your-instruction-files).

161- Destructure imports when possible (eg. import { foo } from 'bar')

162 167 

163# Workflow168Preferensi pribadi Anda ditaruh di `CLAUDE.local.md` alih-alih `CLAUDE.md`, dan Anda menambahkan file tersebut ke `.gitignore` agar tidak masuk ke repo.

164- Be sure to typecheck when you're done making a series of code changes

165- Prefer running single tests, and not the whole test suite, for performance

166```

167 169 

168Jalankan `/context` untuk mengonfirmasi Claude memuat file. CLAUDE.md dimuat setiap sesi, jadi hanya sertakan hal-hal yang berlaku secara luas. Untuk pengetahuan domain atau alur kerja yang hanya relevan kadang-kadang, gunakan [skills](https://code.claude.com/docs/id/skills.md) sebagai gantinya. Claude memuat mereka sesuai permintaan tanpa membengkak setiap percakapan.170> [!NOTE]

171>

172> Jika Claude terus mengabaikan baris yang *memang* ada di `CLAUDE.md`, menambahkan IMPORTANT mungkin tidak akan memperbaikinya. Entah file tersebut sudah cukup panjang sehingga baris itu tenggelam, atau baris itu adalah aturan yang tidak boleh memiliki pengecualian, dan dalam hal ini tempatnya adalah di [hook](#enforce-the-rules-that-cant-have-exceptions).

169 173 

170Tetap ringkas. Untuk setiap baris, tanyakan: *"Apakah menghapus ini akan menyebabkan Claude membuat kesalahan?"* Jika tidak, potong. File CLAUDE.md yang membengkak menyebabkan Claude mengabaikan instruksi aktual Anda!174### Batasi aturan ke satu bagian codebase

171 175 

172| ✅ Sertakan | ❌ Kecualikan |176Jika suatu aturan hanya penting di satu bagian codebase, letakkan di [`.claude/rules/`](https://code.claude.com/docs/id/memory#path-specific-rules) dengan filter `paths:` sehingga aturan itu hanya dimuat ketika Claude benar-benar bekerja di sana. Sebagai contoh, `.claude/rules/api.md` ini dimuat untuk file TypeScript di bawah `src/api/`:

173| - | - |

174| Perintah Bash yang tidak dapat ditebak Claude | Apa pun yang dapat diketahui Claude dengan membaca kode |

175| Aturan gaya kode yang berbeda dari default | Konvensi bahasa standar yang sudah diketahui Claude |

176| Instruksi pengujian dan test runner pilihan | Dokumentasi API terperinci (tautkan ke dokumen sebagai gantinya) |

177| Etiket repositori (penamaan cabang, konvensi PR) | Informasi yang berubah sering |

178| Keputusan arsitektur khusus untuk proyek Anda | Penjelasan panjang atau tutorial |

179| Keanehan lingkungan pengembang (variabel env yang diperlukan) | Praktik yang jelas sendiri seperti "tulis kode yang bersih" |

180| Gotcha umum atau perilaku yang tidak jelas | Praktik yang jelas sendiri seperti "tulis kode yang bersih" |

181 177 

182Jika Claude terus melakukan sesuatu yang tidak Anda inginkan meskipun memiliki aturan melawannya, file mungkin terlalu panjang dan aturan hilang. Jika Claude mengajukan pertanyaan yang dijawab di CLAUDE.md, frasenya mungkin ambigu. Perlakukan CLAUDE.md seperti kode: tinjau saat ada yang salah, pangkas secara teratur, dan uji perubahan dengan mengamati apakah perilaku Claude benar-benar bergeser. Untuk CLAUDE.md yang diperiksa, jalankan [`/doctor`](https://code.claude.com/docs/id/commands#all-commands) dan Claude mengusulkan pemotongan untuk konten yang dapat diturunkan dari basis kode.178```markdown .claude/rules/api.md theme={null}

179---

180paths:

181 - "src/api/**/*.ts"

182---

183- Validate request bodies with the zod schemas in src/api/schemas/, don't hand-roll checks

184- Every new endpoint needs an entry in openapi.yaml, CI fails without it

185```

183 186 

184Jika Claude terus melewatkan satu instruksi, tambahkan penekanan seperti "PENTING" ke baris itu saja. Jika Anda menekankan banyak baris, tidak ada yang menonjol. Periksa CLAUDE.md ke dalam git sehingga tim Anda dapat berkontribusi. File ini meningkat nilainya seiring waktu.187### Letakkan prosedur tim dalam skill

185 188 

186File CLAUDE.md dapat mengimpor file tambahan menggunakan sintaks `@path/to/import`. Untuk aturan impor dan di mana file CLAUDE.md dapat berada, lihat [file CLAUDE.md](https://code.claude.com/docs/id/memory.md#claude-md-files).189Model yang lebih mampu mengetahui lebih banyak tentang rekayasa perangkat lunak, tetapi tidak tahu bagaimana tim *Anda* melakukan rilis, apa isi runbook insiden Anda, atau bagaimana Anda ingin dokumentasi API ditulis. Pengetahuan semacam itu ditaruh di [skill](https://code.claude.com/docs/id/skills.md): prosedur atau bagian pengetahuan tim yang disimpan di `.claude/skills/<name>/SKILL.md`.

187 190 

188### Konfigurasi izin191Skill juga lebih ringan terhadap konteks daripada `CLAUDE.md` untuk hal semacam ini. Untuk skill yang dapat dimulai Claude sendiri, Claude melihat nama dan deskripsinya di setiap sesi, tetapi hanya [membaca file lengkapnya](https://code.claude.com/docs/id/skills.md#skill-content-lifecycle) ketika tugas membutuhkannya. Prosedur rilis yang panjang di dalam skill tidak membebani perbaikan bug Anda yang tidak terkait seperti yang akan terjadi jika ada di `CLAUDE.md`.

189 192 

190> [!TIP]193> [!NOTE]

191>194>

192> Untuk mendapatkan lebih sedikit prompt tanpa mengorbankan kontrol, pra-setujui alat yang Anda percayai dengan `/permissions` dan biarkan perintah sandboxed berjalan tanpa bertanya dengan `/sandbox`. Beralih ke mode Manual ketika Anda ingin menyetujui pengeditan dan perintah sendiri.195> Aturan `CLAUDE.md` juga berlaku untuk skill: tuliskan hanya apa yang tidak dapat ditemukan Claude sendiri.

193 196 

194Dengan Claude Code v2.1.283 atau lebih baru, auto mode adalah [mode izin awal bawaan](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) untuk sesi terminal interaktif dan VS Code: model classifier terpisah meninjau sebagian besar tindakan alih-alih Anda dan hanya memblokir apa yang terlihat berisiko, seperti eskalasi cakupan, infrastruktur yang tidak dikenal, atau tindakan yang didorong konten bermusuhan. Pada versi sebelumnya, auto mode adalah mode izin awal bawaan hanya pada paket Pro, Max, dan Team.197Untuk alur kerja dengan efek samping, seperti benar-benar membuat rilis tersebut, tambahkan `disable-model-invocation: true`. Claude kemudian [tidak dapat memulai skill tersebut sendiri](https://code.claude.com/docs/id/skills.md#control-who-invokes-a-skill), dan skill hanya berjalan ketika Anda sendiri mengetik `/release`. Jika disimpan sebagai `.claude/skills/release/SKILL.md`, tampilannya bisa seperti ini:

195 198 

196Dalam mode Manual, Claude Code meminta sebelum tindakan yang mungkin memodifikasi sistem Anda: penulisan file, perintah Bash, alat MCP. Itu aman tetapi membosankan. Setelah persetujuan kesepuluh Anda mengklik saja daripada meninjau. Dua alat mengurangi gangguan tersebut dalam mode Manual dan berlaku dalam mode auto juga:199```markdown .claude/skills/release/SKILL.md theme={null}

200---

201name: release

202description: Cut a new release. Bumps the version, writes the changelog entry, tags it and pushes the tag so CI can publish.

203disable-model-invocation: true

204---

2051. Make sure you're on main with a clean tree. If not, stop and ask.

2062. Run `pnpm changeset version` and commit the result.

2073. Summarize the PRs merged since the last tag into CHANGELOG.md, one line each, user-facing changes only.

2084. Tag `v<new version>` and push the tag. CI publishes from there, never publish from your machine.

209```

197 210 

198* **Allowlist izin**: izinkan alat spesifik yang Anda tahu aman, seperti `npm run lint` atau `git commit`211### Hubungkan tool yang dibutuhkan Claude

199* **Sandboxing**: aktifkan isolasi tingkat OS yang membatasi akses sistem file dan jaringan, memungkinkan Claude bekerja lebih bebas dalam batas yang ditentukan

200 212 

201Baca lebih lanjut tentang [permission modes](https://code.claude.com/docs/id/permission-modes.md), [permission rules](https://code.claude.com/docs/id/permissions.md), dan [sandboxing](https://code.claude.com/docs/id/sandboxing.md).213Sebagian hal yang tidak dapat dilihat Claude berada di sistem lain sepenuhnya, seperti issue tracker atau dashboard error Anda. Jika sistem tersebut memiliki CLI, biasanya itulah jalan termudah. Dengan `gh` terinstal dan sudah masuk, misalnya, Claude akan membuka pull request dan membaca komentar review tanpa penjelasan apa pun dari Anda. Untuk CLI yang belum pernah dilihatnya, cukup arahkan ke `--help`.

202 214 

203### Gunakan alat CLI215Untuk sistem tanpa CLI, ada [MCP](https://code.claude.com/docs/id/mcp.md). Anda menambahkan server dari shell Anda:

204 216 

205> [!TIP]217```bash theme={null}

206>218claude mcp add --transport http notion https://mcp.notion.com/mcp

207> Beri tahu Claude Code untuk menggunakan alat CLI seperti `gh`, `aws`, `gcloud`, dan `sentry-cli` saat berinteraksi dengan layanan eksternal.219```

220 

221Server tersebut kemudian muncul di bawah `/mcp` di dalam sesi. Server yang terhubung menambahkan nama tool dan instruksinya ke konteks bahkan ketika Anda tidak menggunakannya, jadi sebaiknya [matikan server yang tidak Anda butuhkan](https://code.claude.com/docs/id/mcp.md#disable-a-server-without-removing-it) di sana.

222 

223Dan jika Anda bekerja dengan bahasa bertipe, [plugin code intelligence](https://code.claude.com/docs/id/plugins/code-intelligence.md) memungkinkan Claude langsung melompat ke definisi alih-alih membaca banyak file untuk menemukannya.

208 224 

209Alat CLI adalah cara paling efisien konteks untuk berinteraksi dengan layanan eksternal. Jika Anda menggunakan GitHub, instal CLI `gh`. Claude tahu cara menggunakannya untuk membuat masalah, membuka pull request, dan membaca komentar. Tanpa `gh`, Claude masih dapat menggunakan GitHub API, tetapi permintaan yang tidak diautentikasi sering kali mencapai batas laju.225## Berikan Claude pemeriksaan untuk dijalankan

210 226 

211Claude juga efektif dalam mempelajari alat CLI yang tidak diketahuinya. Coba prompt seperti `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`227Claude berhenti ketika pekerjaan terlihat selesai. Jika Claude tidak memiliki apa pun untuk dijalankan yang memberi tahu apakah pekerjaan itu benar-benar *sudah* selesai, "terlihat selesai" adalah satu-satunya pegangannya. Dalam praktiknya, itu menjadikan Anda sebagai rangkaian tesnya, dan setiap kesalahan tetap di sana sampai Anda kebetulan menyadarinya.

212 228 

213### Hubungkan server MCP229Jika Anda memberinya sesuatu yang menghasilkan lulus atau gagal, Claude dapat menutup loop itu sendiri. Claude membuat perubahan, menjalankan pemeriksaan, dan jika ada yang rusak, Claude membaca output-nya dan memperbaikinya sebelum menjalankan pemeriksaan lagi.

214 230 

215> [!TIP]231> [!TIP]

216>232>

217> Jalankan `claude mcp add` dengan nama server dan URL atau perintah untuk menghubungkan alat eksternal seperti Notion, Figma, atau database Anda. Sebagai contoh: `claude mcp add --transport http notion https://mcp.notion.com/mcp`.233> Berikan Claude sesuatu yang dapat dijalankannya yang menghasilkan lulus atau gagal. Setelah memilikinya, Claude dapat terus bekerja sendiri dan Anda tidak perlu mengawasinya.

218 234 

219Dengan [server MCP](https://code.claude.com/docs/id/mcp.md), Anda dapat meminta Claude untuk mengimplementasikan fitur dari pelacak masalah, query database, menganalisis data pemantauan, mengintegrasikan desain dari Figma, dan mengotomatisasi alur kerja.235Pemeriksaan bisa berupa hampir apa saja, selama Claude dapat membaca hasilnya:

220 236 

221### Atur hooks237* File tes

238* Exit code sebuah build

239* Linter

240* Skrip yang membandingkan output dengan fixture melalui diff

241* [Tangkapan layar browser](https://code.claude.com/docs/id/chrome.md) di samping mockup

222 242 

223> [!TIP]243Jika repo Anda sudah memiliki salah satu dari ini, baris paling berguna di `CLAUDE.md` Anda adalah perintah yang menjalankannya.

224>

225> Gunakan hooks untuk tindakan yang harus terjadi setiap kali tanpa pengecualian.

226 244 

227[Hooks](https://code.claude.com/docs/id/hooks-guide.md) menjalankan skrip secara otomatis pada titik tertentu dalam alur kerja Claude. Tidak seperti instruksi CLAUDE.md yang bersifat penasihat, hooks bersifat deterministik dan menjamin tindakan terjadi.245Seberapa ketat pemeriksaan tersebut terserah Anda. Pilihannya berkisar dari Claude yang memutuskan sendiri hingga Claude Code yang menegakkannya:

228 246 

229Claude dapat menulis hooks untuk Anda. Coba prompt seperti *"Tulis hook yang menjalankan eslint setelah setiap pengeditan file"* atau *"Tulis hook yang memblokir penulisan ke folder migrasi."* Edit `.claude/settings.json` secara langsung untuk mengonfigurasi hooks dengan tangan, dan jalankan `/hooks` untuk menjelajahi apa yang dikonfigurasi.247* Dalam prompt: `run the auth tests after, and keep going until they pass`. Claude memutuskan sendiri kapan ia puas. Ini berfungsi untuk tugas apa pun, saat ini juga, tanpa setup.

248* Sebagai goal: [`/goal all tests in tests/auth pass and lint is clean`](https://code.claude.com/docs/id/goal) menetapkan kondisi yang diperiksa oleh model terpisah terhadap percakapan setelah setiap giliran, dan Claude terus bekerja sampai kondisi itu terpenuhi. Anda jarang membutuhkan ini sendiri di dalam sesi. Ini penting untuk run latar belakang yang panjang, di mana Claude terkadang mengakhiri giliran dengan ringkasan kemajuan sementara masih ada item yang belum selesai, dan goal mengirimnya kembali bekerja.

249* Sebagai hook Stop: [hook `Stop`](https://code.claude.com/docs/id/hooks#stop) menjalankan skrip Anda setiap kali Claude mencoba mengakhiri gilirannya, dan mengirim Claude kembali bekerja jika skrip keluar dengan kode 2. Yang ini ditegakkan oleh Claude Code (harness), sehingga giliran tidak berakhir sampai typecheck lulus atau [batas blok](https://code.claude.com/docs/id/hooks.md#stop-input) tercapai. Ada [contohnya di bawah](#enforce-the-check-with-a-stop-hook).

250* Oleh seseorang yang tidak menulis kodenya: di terminal, [`/code-review`](https://code.claude.com/docs/id/code-review-local) meninjau diff dalam subagent baru yang tidak pernah melihat percakapan Anda. Subagent tersebut tidak terpengaruh oleh penalaran yang menghasilkan kode tersebut.

230 251 

231### Buat skills252Pilihan mana pun yang Anda gunakan, mintalah *bukti* dari Claude: perintah yang dijalankannya beserta output-nya, atau tangkapan layarnya. "Semua tes lulus" saja hanya memberi tahu Anda sangat sedikit, dan membaca output lebih cepat daripada menjalankan ulang pemeriksaan sendiri. Untuk sesi yang tidak Anda awasi, itu juga satu-satunya bukti yang Anda miliki.

232 253 

233> [!TIP]254> [!TIP]

234>255>

235> Buat file `SKILL.md` di `.claude/skills/` untuk memberikan Claude pengetahuan domain dan alur kerja yang dapat digunakan kembali.256> Setelah Claude mengatakan sudah selesai, Anda juga dapat menjalankan [`/verify`](https://code.claude.com/docs/id/skills#run-and-verify-your-app) di sesi, yang membuat Claude mem-build dan menjalankan aplikasi serta melihat hasilnya. Ini menangkap jenis masalah yang terlewat oleh tes dan typecheck.

236 257 

237[Skills](https://code.claude.com/docs/id/skills.md) memperluas pengetahuan Claude dengan informasi khusus untuk proyek, tim, atau domain Anda. Claude menerapkannya secara otomatis saat relevan, atau Anda dapat menginvokannya secara langsung dengan `/skill-name`.258### Tinjau terhadap spesifikasi Anda

238 259 

239Buat skill dengan menambahkan direktori dengan `SKILL.md` ke `.claude/skills/`:260Jika Anda lebih suka review memeriksa pekerjaan terhadap rencana Anda daripada mencari bug secara umum, tulis prompt review sendiri:

240 261 

241```markdown .claude/skills/api-conventions/SKILL.md theme={null}262```text theme={null}

242name: api-conventions263use a subagent to review the rate limiter diff against SPEC.md, check every requirement is implemented and the listed edge cases have tests, report gaps that affect correctness and skip style

243description: REST API design conventions for our services

244# API Conventions

245- Use kebab-case for URL paths

246- Use camelCase for JSON properties

247- Always include pagination for list endpoints

248- Version APIs in the URL path (/v1/, /v2/)

249```264```

250 265 

251Skills juga dapat mendefinisikan alur kerja yang dapat digunakan kembali yang Anda panggil secara langsung:266> [!NOTE]

252 267>

253```markdown .claude/skills/fix-issue/SKILL.md theme={null}268> Jangan hapus bagian `skip style` dari prompt tersebut. Peninjau yang diminta menemukan masalah akan selalu menemukan *sesuatu*. Jika Anda memperbaiki setiap temuan, Anda akan berakhir dengan lapisan abstraksi tambahan dan tes untuk kasus yang tidak mungkin terjadi.

254name: fix-issue269 

255description: Fix a GitHub issue270### Tegakkan pemeriksaan dengan hook Stop

256disable-model-invocation: true271 

257Analyze and fix the GitHub issue: $ARGUMENTS.272Versi hook `Stop` dari aturan typecheck hanyalah beberapa baris di `.claude/settings.json`. Exit code 2 adalah yang memblokir penghentian. Apa pun yang dicetak perintah ke stderr dikirim kembali ke Claude sebagai alasan mengapa ia belum boleh selesai, itulah sebabnya output compiler dialihkan ke sana:

258 273 

2591. Use `gh issue view` to get the issue details274```json .claude/settings.json theme={null}

2602. Understand the problem described in the issue275{

2613. Search the codebase for relevant files276 "hooks": {

2624. Implement the necessary changes to fix the issue277 "Stop": [

2635. Write and run tests to verify the fix278 {

2646. Ensure code passes linting and type checking279 "hooks": [

2657. Create a descriptive commit message280 { "type": "command", "command": "pnpm tsc --noEmit 1>&2 || exit 2" }

2668. Push and create a PR281 ]

282 }

283 ]

284 }

285}

267```286```

268 287 

269Jalankan `/fix-issue 1234` untuk menginvokannya. Gunakan `disable-model-invocation: true` untuk alur kerja dengan efek samping yang ingin Anda picu secara manual.288Untuk melihatnya bekerja, minta Claude membuat perubahan yang merusak sebuah tipe: alih-alih selesai, Claude mendapatkan error compiler kembali dan terus bekerja sampai `tsc` lulus. Jika hook memblokir [delapan penghentian berturut-turut](https://code.claude.com/docs/id/hooks.md#stop-input) tanpa panggilan tool di antaranya, Claude Code menimpa blok berikutnya dan mengakhiri giliran. Untuk menaikkan batas tersebut, atur [`CLAUDE_CODE_STOP_HOOK_BLOCK_CAP`](https://code.claude.com/docs/id/env-vars).

270 289 

271### Buat subagent khusus290## Tegakkan aturan yang tidak boleh memiliki pengecualian

272 291 

273> [!TIP]292> [!TIP]

274>293>

275> Tentukan asisten khusus di `.claude/agents/` yang dapat didelegasikan Claude untuk tugas terisolasi.294> Jika sesuatu harus terjadi setiap saat, jadikan itu hook, aturan deny, atau pengaturan terkelola. `CLAUDE.md` adalah untuk pedoman, dan Claude diperbolehkan memutuskan bahwa suatu pedoman tidak berlaku.

276 295 

277[Subagents](https://code.claude.com/docs/id/sub-agents.md) berjalan dalam konteks mereka sendiri dengan set alat yang diizinkan mereka sendiri. Mereka berguna untuk tugas yang membaca banyak file atau memerlukan fokus khusus tanpa mengacaukan percakapan utama Anda.296Ambil tiga aturan yang mungkin Anda miliki di `CLAUDE.md` saat ini: `Never read .env`, `Always run the formatter after editing`, `Don't touch the migrations folder`. Claude akan mengikutinya hampir setiap saat. Untuk sedikit aturan di mana "hampir" tidak cukup baik, pindahkan dari `CLAUDE.md` ke konfigurasi yang diterapkan sendiri oleh Claude Code (harness). Sejak saat itu, hasilnya tidak bergantung pada apa yang diingat atau diputuskan model.

278 297 

279```markdown .claude/agents/security-reviewer.md theme={null}298### Tegakkan langkah dengan hook

280name: security-reviewer299 

281description: Reviews code for security vulnerabilities300[Hooks](https://code.claude.com/docs/id/hooks-guide.md) menjalankan sesuatu milik Anda pada titik-titik tetap dalam loop Claude: sebelum atau sesudah panggilan tool, ketika Claude mencoba berhenti, ketika sesi dimulai, dan seterusnya. Sesuatu itu bisa berupa:

282tools: Read, Grep, Glob, Bash301 

283model: opus302* Perintah shell (kasus yang biasa)

284You are a senior security engineer. Review code for:303* POST ke endpoint HTTP

285- Injection vulnerabilities (SQL, XSS, command injection)304* Panggilan tool pada salah satu server MCP Anda

286- Authentication and authorization flaws305* [Hook `prompt` atau `agent`](https://code.claude.com/docs/id/hooks#hook-handler-fields), yang membiarkan sebuah model memutuskan

287- Secrets or credentials in code306 

288- Insecure data handling307Hook `prompt` atau `agent` meminta *model lain* untuk memutuskan, sehingga juga tidak deterministik. Untuk penegakan yang sesungguhnya, gunakan hook `command` atau `http`, dan tambahkan [`onFailure: "block"`](https://code.claude.com/docs/id/hooks#block-the-action-when-a-hook-fails) jika tindakan juga harus dihentikan ketika hook itu sendiri crash atau timeout. Untuk hook yang memindai commit untuk mencari secret, misalnya, Anda lebih suka memblokir commit daripada membiarkannya lolos tanpa dipindai saat pemindai sedang tidak berfungsi.

308 

309Berikut aturan formatter sebagai hook `PostToolUse`. Hook ini berjalan setelah setiap `Edit` atau `Write`, dan apakah Claude mengingat aturan tersebut tidak lagi penting, karena bukan Claude yang menjalankannya:

289 310 

290Provide specific line references and suggested fixes.311```json .claude/settings.json theme={null}

312{

313 "hooks": {

314 "PostToolUse": [

315 {

316 "matcher": "Edit|Write",

317 "hooks": [

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

319 ]

320 }

321 ]

322 }

323}

291```324```

292 325 

293Beri tahu Claude untuk menggunakan subagent secara eksplisit: *"Gunakan subagent untuk meninjau kode ini untuk masalah keamanan."*326Untuk memeriksa hook tersebut, minta Claude menambahkan baris dengan indentasi buruk ke file yang diformat Prettier. File yang disimpan kembali dengan indentasi yang sudah diperbaiki.

294 327 

295### Instal plugins328Aturan migrasi menjadi [hook `PreToolUse`](https://code.claude.com/docs/id/hooks-guide#block-edits-to-protected-files) yang keluar dengan kode 2 untuk path apa pun di bawah `migrations/`. Anda tidak harus menulisnya sendiri: `write a hook that blocks edits to the migrations folder` berfungsi sebagai prompt, dan `/hooks` menampilkan hasilnya. Namun jangan berlebihan: hook adalah untuk aturan dengan *nol* pengecualian, dan `Prefer named exports` memiliki banyak pengecualian, jadi aturan itu tetap di `CLAUDE.md`.

296 329 

297> [!TIP]330### Batasi akses dengan aturan izin dan sandbox

298>

299> Jalankan `/plugin` untuk menjelajahi marketplace. Plugins menambahkan skills, alat, dan integrasi tanpa konfigurasi.

300 331 

301[Plugins](https://code.claude.com/docs/id/plugins/overview.md) menggabungkan skills, hooks, subagents, dan server MCP menjadi satu unit yang dapat diinstal dari komunitas dan Anthropic. Jika Anda bekerja dengan bahasa yang diketik, instal [plugin code intelligence](https://code.claude.com/docs/id/plugins/code-intelligence.md) untuk memberikan Claude navigasi simbol presisi dan deteksi kesalahan otomatis setelah pengeditan.332[Aturan izin](https://code.claude.com/docs/id/permissions.md) menentukan apa yang boleh dijalankan, dibaca, dan diambil oleh Claude. Aturan `deny` berlaku di setiap mode izin, termasuk auto dan `bypassPermissions`, itulah tepatnya mengapa aturan `.env` ditaruh di sana:

302 333 

303Untuk panduan memilih antara skills, subagents, hooks, dan MCP, lihat [Perluas Claude Code](https://code.claude.com/docs/id/features-overview.md#match-features-to-your-goal).334```json .claude/settings.json theme={null}

335{

336 "permissions": {

337 "allow": ["Bash(pnpm tsc --noEmit)"],

338 "ask": ["Bash(git push *)"],

339 "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]

340 }

341}

342```

304 343 

305***344Setelah ini disimpan, menanyakan Claude apa isi `.env` akan gagal, baik melalui tool `Read` maupun melalui `cat .env`.

306 345 

307## Berkomunikasi secara efektif346Aturan mencocokkan panggilan tool, bukan niat, jadi ada baiknya mengetahui di mana batas-batasnya:

308 347 

309Tanyakan kepada Claude pertanyaan yang akan Anda tanyakan kepada insinyur lain, dan untuk fitur yang lebih besar, biarkan Claude mewawancarai Anda dan menulis spesifikasi sebelum Anda mulai mengimplementasikan.348* Aturan `Read` *memang* menangkap `cat .env`, karena Claude Code mengenali [perintah pembacaan file yang umum](https://code.claude.com/docs/id/permissions.md#read-and-edit).

349* Aturan itu tidak akan menangkap skrip yang membuka file tersebut.

350* Aturan deny `WebFetch` untuk sebuah domain tidak berpengaruh apa pun terhadap `curl` ke domain yang sama, kecuali sandbox aktif.

310 351 

311### Tanyakan pertanyaan basis kode352Untuk batasan tingkat OS pada akses sistem file atau jaringan, aktifkan [sandbox](https://code.claude.com/docs/id/sandboxing.md) dengan `/sandbox` di dalam sesi. Sandbox membatasi perintah shell Claude di macOS, Linux, dan WSL2 serta [menerapkan aturan deny `Read` dan aturan `WebFetch(domain:...)` Anda](https://code.claude.com/docs/id/sandboxing#permission-rules) juga, jadi untuk apa pun yang terkait keamanan Anda menginginkan keduanya.

312 353 

313> [!TIP]354Secara default Claude masih dapat meminta untuk mencoba ulang perintah yang diblokir di luar sandbox, dan permintaan itu melewati alur izin normal. [Mode sandbox strict](https://code.claude.com/docs/id/sandboxing.md#turn-off-the-retry-with-strict-sandbox-mode), di tab **Overrides** pada `/sandbox`, mematikan retry tersebut.

355 

356> [!WARNING]

314>357>

315> Tanyakan Claude pertanyaan yang akan Anda tanyakan kepada insinyur senior.358> Auto mode adalah model pengklasifikasi yang menilai setiap tindakan, bukan aturan yang keras. Model ini pandai melakukannya, tetapi seperti penilaian apa pun, bisa saja salah. Anda juga dapat menyesuaikan apa yang dianggapnya berisiko, dan organisasi Anda dapat mematikannya sepenuhnya, jadi aturan "jangan pernah" Anda harus ditaruh di aturan deny atau hook.

359 

360### Pilih kepada siapa aturan berlaku

316 361 

317Saat onboarding ke basis kode baru, gunakan Claude Code untuk pembelajaran dan eksplorasi. Anda dapat mengajukan Claude pertanyaan yang sama seperti yang Anda tanyakan kepada insinyur lain:362Di mana sebuah aturan berada menentukan kepada siapa aturan itu berlaku:

318 363 

319* Bagaimana cara logging bekerja?364* `.claude/settings.local.json` dan `~/.claude/settings.json` hanya milik Anda. Ketika Anda memilih **Yes, and don't ask again** untuk sebuah perintah, Claude Code menyimpan aturan tersebut ke file lokal.

320* Bagaimana cara membuat endpoint API baru?365* `.claude/settings.json` dan hook di dalamnya milik repo. Setelah Anda meng-commit-nya, semuanya berlaku untuk semua orang yang bekerja di repo tersebut. Aturan deny-nya langsung berlaku. Aturan `allow`-nya menunggu sampai setiap orang menerima [dialog trust](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) untuk folder tersebut, dan [workspace trust](https://code.claude.com/docs/id/hooks.md#workspace-trust) juga menentukan kapan hook-nya mulai berjalan di mesin mereka.

321* Apa yang dilakukan `async move { ... }` pada baris 134 dari `foo.rs`?366* [Pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) milik organisasi. Pengaturan ini berasal dari konsol admin, MDM, atau file `managed-settings.json`, dan tidak ada file pengaturan pribadi yang dapat menimpanya, yang menjadikannya satu-satunya tempat untuk kebijakan tim keamanan. Jika Anda orang yang menetapkannya, lihat [Siapkan Claude Code untuk organisasi Anda](https://code.claude.com/docs/id/admin-setup.md).

322* Kasus tepi apa yang ditangani `CustomerOnboardingFlowImpl`?

323* Mengapa kode ini memanggil `foo()` alih-alih `bar()` pada baris 333?

324 367 

325Menggunakan Claude Code dengan cara ini adalah alur kerja onboarding yang efektif, meningkatkan waktu ramp-up dan mengurangi beban pada insinyur lain. Tidak ada prompt khusus yang diperlukan: tanyakan pertanyaan secara langsung.368Apa pun cakupannya, jaga agar kumpulan yang ditegakkan tetap kecil. Setiap hook dan aturan deny sesekali akan terpicu ketika seharusnya tidak, dan seseorang harus memelihara masing-masing. Jika Anda suatu saat mendapati diri Anda memiliki empat puluh aturan, sebagian besar mungkin adalah preferensi yang sebenarnya bisa dipertimbangkan Claude sendiri.

326 369 

327### Biarkan Claude mewawancarai Anda370## Ubah default

328 371 

329> [!TIP]372> [!TIP]

330>373>

331> Untuk fitur yang lebih besar, biarkan Claude mewawancarai Anda terlebih dahulu. Mulai dengan prompt minimal dan minta Claude untuk mewawancarai Anda menggunakan alat `AskUserQuestion`.374> Default sudah cukup baik untuk dibiarkan sampai suatu tugas menghabiskan lebih banyak waktu, token, atau gangguan daripada yang seharusnya. Ketika itu terjadi, jalankan `/usage` di sesi untuk melihat ke mana semuanya terpakai.

332 375 

333Claude menanyakan tentang hal-hal yang mungkin belum Anda pertimbangkan, termasuk implementasi teknis, UI/UX, kasus tepi, dan trade-off. Ganti `[brief description]` dengan fitur Anda sebelum mengirim prompt.376Sesi baru sudah membuat beberapa keputusan untuk Anda:

334 377 

335```text wrap theme={null}378* Sesi terminal interaktif dan VS Code dimulai dalam auto mode.

336I want to build [brief description]. Interview me in detail using the AskUserQuestion tool.379* Sesi menjalankan [Claude Opus 5.5 dengan effort medium](https://code.claude.com/docs/id/model-config.md#default-model-setting) pada sebagian besar paket dan penyedia.

380* Sesi mendelegasikan pekerjaan ke subagent ketika melihat alasan untuk melakukannya.

381* Sesi menjalankan compaction pada percakapan seiring bertambah panjangnya.

337 382 

338Ask about technical implementation, UI/UX, edge cases, concerns, and tradeoffs. Don't ask obvious questions, dig into the hard parts I might not have considered.383Sebagian besar waktu Anda tidak pernah memikirkan hal-hal ini. Ketika suatu tugas memang menghabiskan lebih dari yang seharusnya, salah satu dari keempat hal ini biasanya penyebabnya.

339 384 

340Keep interviewing until we've covered everything, then write a complete spec to SPEC.md.385### Ubah mode izin

341```

342 386 

343Setelah spesifikasi selesai, mulai sesi segar untuk menjalankannya. Sesi baru memiliki konteks bersih yang fokus sepenuhnya pada implementasi, dan Anda memiliki spesifikasi tertulis untuk direferensikan.387Kedua ujung rentang izin memiliki biaya:

344 388 

345Spesifikasi yang paling berguna adalah mandiri: mereka menamai file dan antarmuka yang terlibat, menyatakan apa yang berada di luar cakupan, dan diakhiri dengan langkah verifikasi end-to-end yang membuktikan fitur berfungsi. Waktu yang dihabiskan untuk membuat spesifikasi presisi memberikan hasil lebih banyak daripada waktu yang dihabiskan untuk menonton implementasi.389* **Mode Manual**: Anda sendiri menyetujui setiap edit dan setiap perintah yang tidak read-only. Aman, tetapi setelah permintaan izin kesepuluh Anda mulai menyetujui tanpa membaca, dan tidak ada yang berjalan saat Anda jauh dari keyboard.

390* **`bypassPermissions`**: menyetujui semua hal yang tidak dicakup oleh aturan deny dan ask Anda, yang hanya masuk akal di container sekali pakai.

346 391 

347***392[Auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode) berada di antara keduanya, dan itulah mode [awal](https://code.claude.com/docs/id/permission-modes.md#which-mode-a-session-starts-in) untuk sesi terminal interaktif dan VS Code. Claude bekerja tanpa berhenti untuk persetujuan rutin, dan model pengklasifikasi terpisah memeriksa tindakan dalam [urutan tetap](https://code.claude.com/docs/id/permission-modes.md#how-the-classifier-evaluates-actions) sebelum dijalankan. Pengklasifikasi berkonsentrasi pada [hal-hal yang Anda ingin dihentikan oleh seseorang](https://code.claude.com/docs/id/permission-modes.md#what-the-classifier-blocks-by-default):

348 393 

349## Kelola sesi Anda394* `curl | bash`

395* Deploy dan migrasi produksi

396* Force push yang menimpa pekerjaan orang lain

397* Data sensitif yang dikirim ke endpoint eksternal

398* Tindakan yang tampak didorong oleh konten yang dibaca Claude, bukan oleh Anda

350 399 

351Percakapan bersifat persisten dan dapat dibalik. Gunakan ini untuk keuntungan Anda!400Ketika pengklasifikasi memblokir sesuatu, Anda mendapat notifikasi dan tindakan tersebut muncul di bawah **Recently denied** di `/permissions`, di mana Anda dapat mencobanya ulang dengan persetujuan manual. Setelah [tiga blok berturut-turut](https://code.claude.com/docs/id/permission-modes.md#when-auto-mode-falls-back) (atau dua puluh secara total), auto mode berhenti sejenak dan kembali meminta persetujuan Anda.

352 401 

353### Perbaiki arah dengan cepat dan sering402Semua ini tidak menggantikan kontrol deterministik Anda, karena berjalan *setelah* kontrol tersebut. Aturan deny dan ask serta hook `PreToolUse` berlaku sebelum pengklasifikasi melihat apa pun, sehingga aturan deny memblokir dalam auto mode persis seperti di tempat lain. Sandbox tetap membatasi [perintah shell yang dibungkusnya](https://code.claude.com/docs/id/sandboxing.md#what-runs-outside-the-sandbox).

354 403 

355> [!TIP]404> [!NOTE]

356>405>

357> Perbaiki Claude segera setelah Anda melihatnya keluar jalur.406> Anda juga dapat mengatakan `don't push until I've reviewed` dalam percakapan, dan pengklasifikasi [memperlakukannya sebagai sinyal blok](https://code.claude.com/docs/id/permission-modes.md#boundaries-you-state-in-conversation). Ini tetap merupakan model yang membaca transkrip, dan kalimat tersebut bisa hilang ketika percakapan menjalani compaction, jadi apa pun yang penting harus ditaruh di aturan deny.

407 

408Masalah sebaliknya adalah pengklasifikasi berulang kali menghentikan sesuatu yang rutin dalam setup Anda. Alih-alih menyetujuinya secara manual setiap kali, tambahkan ke `autoMode.allow` atau jelaskan infrastruktur tepercaya Anda dalam [konfigurasi auto mode](https://code.claude.com/docs/id/auto-mode-config.md). Konfigurasinya berupa bahasa Inggris biasa, bukan pola, dan [`/auto-mode-setup`](https://code.claude.com/docs/id/auto-mode-config#generate-environment-entries) dapat menyusun draf bagian `environment` untuk Anda dari proyek dan sesi terbaru Anda:

409 

410```json ~/.claude/settings.json theme={null}

411{

412 "autoMode": {

413 "environment": [

414 "$defaults",

415 "Source control: github.com/example-org and every repo under it",

416 "Trusted internal domains: *.internal.example.com"

417 ],

418 "allow": [

419 "$defaults",

420 "Deploying to the staging namespace is fine, it's isolated from production and resets nightly"

421 ]

422 }

423}

424```

358 425 

359Hasil terbaik datang dari loop umpan balik yang ketat. Meskipun Claude kadang-kadang menyelesaikan masalah dengan sempurna pada upaya pertama, memperbaikinya dengan cepat umumnya menghasilkan solusi yang lebih baik lebih cepat.426> [!WARNING]

427>

428> Pertahankan `"$defaults"` di setiap daftar yang Anda atur, karena tanpanya entri Anda akan *menggantikan* aturan bawaan daftar tersebut alih-alih menambahkannya. Untuk `environment` dan `allow` Anda akan kehilangan konteks dan pengecualian bawaan, dan daftar `soft_deny` tanpanya akan menghilangkan blok bawaan terhadap force push dan deploy produksi.

429>

430> Blok `autoMode` juga harus berada di `~/.claude/settings.json`, bukan di proyek, karena pengklasifikasi mengabaikan `autoMode` di pengaturan proyek.

360 431 

361* **`Esc`**: hentikan Claude di tengah-tindakan dengan tombol `Esc`. Konteks dipertahankan, jadi Anda dapat mengarahkan kembali.432Jika Anda lebih suka melihat setiap edit dan perintah sebelum terjadi, `Shift+Tab` di sesi berpindah di antara mode-mode izin, termasuk Manual, atau mulai dengan `claude --permission-mode manual` dari shell Anda. Dan jika Manual kemudian terlalu sering meminta persetujuan, `/fewer-permission-prompts` memindai transkrip terbaru Anda untuk panggilan Bash dan MCP read-only yang umum dan menambahkannya ke allowlist di `.claude/settings.json`.

362* **`Esc + Esc` atau `/rewind`**: tekan `Esc` dua kali atau jalankan `/rewind` untuk membuka menu rewind dan mengembalikan percakapan dan status kode sebelumnya, atau ringkas dari pesan yang dipilih.

363* **`"Undo that"`**: biarkan Claude mengembalikan perubahannya.

364* **`/clear`**: atur ulang konteks antara tugas yang tidak terkait. Sesi panjang dengan konteks yang tidak relevan dapat mengurangi kinerja.

365 433 

366Jika Anda telah memperbaiki Claude lebih dari dua kali pada masalah yang sama dalam satu sesi, konteks penuh dengan pendekatan yang gagal. Jalankan `/clear` dan mulai segar dengan prompt yang lebih spesifik yang menggabungkan apa yang Anda pelajari. Sesi bersih dengan prompt yang lebih baik hampir selalu mengungguli sesi panjang dengan koreksi terakumulasi.434### Ubah model dan effort

367 435 

368### Kelola konteks secara agresif436[Effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) adalah kontrol utama untuk berapa lama Claude berpikir, dan menggantikan sebagian besar hal yang dulu dilakukan orang dengan kata-kata dalam prompt. Claude Opus 5.5, Sonnet 5.5, dan Haiku 5.5 secara default menggunakan `medium`, yang sudah lebih dari cukup untuk pekerjaan fitur sehari-hari dengan cakupan yang jelas. Saat-saat Anda akan mengubahnya, dengan `/effort` di sesi:

369 437 

370> [!TIP]438* Naikkan dengan `/effort high` atau `/effort xhigh` ketika keberhasilan bergantung pada kasus-kasus yang mudah terlewat. Bayangkan bug di kode yang tidak Anda tulis, tes yang flaky, atau perubahan skema di mana Claude harus menemukan setiap pembaca bentuk lama. Claude kemudian memeriksa lebih banyak kasus tepi dan memverifikasi lebih banyak pekerjaannya sebelum menjawab, dan di situlah waktu serta token tambahan terpakai.

371>439* Turunkan dengan `/effort low` ketika Anda bolak-balik dengan cepat dan tetap meninjau setiap hasil: brainstorming, sketsa pertama, penggantian nama di beberapa file. Claude memberi Anda titik awal lebih cepat, dan karena Anda mengarahkan setiap langkah, pertimbangan tambahan tidak akan banyak mengubah apa pun selain waktu tunggu.

372> Jalankan `/clear` antara tugas yang tidak terkait untuk mengatur ulang konteks.440* Simpan `max` untuk masalah sulit yang ingin Anda selesaikan oleh Claude tanpa Anda, seperti mencari kerentanan keamanan. Pada tugas biasa, `max` cenderung berpikir berlebihan, sehingga Anda membayar lebih untuk jawaban yang mungkin tidak lebih baik daripada yang akan diberikan `high`.

441* Ketika hanya pesan berikutnya yang membutuhkannya, seperti satu pertanyaan rumit di tengah pekerjaan yang selebihnya rutin, masukkan [`ultrathink`](https://code.claude.com/docs/id/model-config#use-ultrathink-for-one-off-deep-reasoning) ke dalam prompt tersebut alih-alih mengubah pengaturan.

373 442 

374Claude Code secara otomatis mengompaksi riwayat percakapan saat Anda mendekati batas konteks, yang mempertahankan kode dan keputusan penting sambil membebaskan ruang.443Untuk modelnya sendiri, Opus 5.5 default menangani sebagian besar pekerjaan coding dengan baik dan Sonnet lebih murah untuk pekerjaan rutin. [Claude Fable 5.1](https://code.claude.com/docs/id/model-config.md#work-with-fable) tersedia ketika Anda memilihnya secara eksplisit dengan `/model fable`, dan Haiku cocok untuk subagent yang mengerjakan tugas sederhana. [Konfigurasi model](https://code.claude.com/docs/id/model-config.md) berisi daftar lengkap per paket dan penyedia.

375 444 

376Selama sesi panjang, jendela konteks Claude dapat terisi dengan percakapan yang tidak relevan, konten file, dan perintah. Ini dapat mengurangi kinerja dan kadang-kadang mengalihkan Claude.445### Ketahui biaya subagent

377 446 

378* Gunakan `/clear` sering antara tugas untuk mengatur ulang jendela konteks sepenuhnya447Claude mendelegasikan ke [subagent](https://code.claude.com/docs/id/sub-agents.md) atas inisiatifnya sendiri:

379* Ketika auto compaction dipicu, Claude meringkas apa yang paling penting, termasuk pola kode, status file, dan keputusan kunci

380* Untuk kontrol lebih, jalankan `/compact <instructions>`, seperti `/compact Focus on the API changes`

381* Untuk mengompaksi hanya bagian dari percakapan, gunakan `Esc + Esc` atau `/rewind`, pilih checkpoint pesan, dan pilih **Summarize from here** atau **Summarize up to here**. Yang pertama mengondensasi pesan dari titik itu maju sambil menjaga konteks awal tetap utuh; yang kedua mengondensasi pesan awal sambil menjaga pesan terbaru tetap lengkap. Lihat [menu rewind's summarize options](https://code.claude.com/docs/id/checkpointing.md#rewind-and-summarize).

382* Sesuaikan perilaku compaction di CLAUDE.md dengan instruksi seperti `"When compacting, always preserve the full list of modified files and any test commands"` untuk memastikan konteks kritis bertahan dari ringkasan

383* Untuk pertanyaan yang tidak perlu tetap dalam konteks, gunakan [`/btw`](https://code.claude.com/docs/id/interactive-mode#side-questions-with-%2Fbtw). Jawabannya tidak pernah memasuki riwayat percakapan, jadi Anda dapat memeriksa detail tanpa menumbuhkan konteks.

384 448 

385### Gunakan subagents untuk investigasi449* Pencarian codebase yang luas diserahkan ke agent Explore bawaan.

450* Tugas sampingan di-[fork](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation) selama mode fork aktif (default).

451* Subagent yang dimulainya berjalan di latar belakang secara default, sehingga percakapan utama Anda tetap berjalan.

386 452 

387> [!TIP]453Anda jarang perlu meminta semua ini, tetapi ada baiknya mengetahui apa yang Anda dapatkan dan berapa biayanya.

388>

389> Delegasikan penelitian dengan `"use subagents to investigate X"`. Mereka mengeksplorasi dalam konteks terpisah, menjaga percakapan utama Anda bersih untuk implementasi.

390 454 

391Karena konteks adalah batasan fundamental Anda, gunakan subagents untuk menjaga penelitian di luar konteks. Ketika Claude meneliti basis kode, ia membaca banyak file, semuanya mengonsumsi konteks Anda. Subagents berjalan dalam jendela konteks terpisah dan melaporkan kembali ringkasan:455Subagent bermanfaat dalam situasi berikut:

392 456 

393```text wrap theme={null}457* Menjalankan bagian-bagian pekerjaan independen pada saat yang sama, sehingga seluruh tugas selesai lebih cepat

394Use subagents to investigate how our authentication system handles token458* Menjaga output panjang, seperti run tes lengkap atau pencarian yang luas, di luar percakapan utama Anda, di mana output tersebut jika tidak akan terbawa sepanjang sisa sesi

395refresh, and whether we have any existing OAuth utilities I should reuse.459* Mendapatkan peninjau yang belum melihat bagaimana kode ditulis

396```460* Memberikan tugas lebih sedikit tool daripada yang dimiliki sesi utama, seperti peninjau yang dapat membaca tetapi tidak dapat mengedit

397 461 

398Anda juga dapat menggunakan subagents untuk verifikasi setelah Claude mengimplementasikan sesuatu. Lihat [Add an adversarial review step](#add-an-adversarial-review-step).462Biaya yang Anda tanggung sebagian besar berupa token, karena setiap subagent mengirim permintaannya sendiri dan semuanya dihitung terhadap penggunaan yang sama dengan percakapan utama Anda. Terkadang biayanya juga waktu: subagent baru harus terlebih dahulu mengumpulkan konteks yang sudah dimiliki percakapan Anda, sehingga bisa saja menjadi *lebih lambat* daripada mengerjakan tugas di tempat Anda berada.

399 463 

400### Rewind dengan checkpoints464Dan secara default, ini adalah model yang sama (atau yang lebih kecil) pada tugas yang sama. Anda mendapatkan paralelisme atau sudut pandang segar darinya, tetapi bukan jawaban yang lebih cerdas.

401 465 

402> [!TIP]466Untuk menghemat biaya subagent:

403>

404> Setiap prompt yang Anda kirim yang memulai giliran membuat checkpoint. Anda dapat mengembalikan percakapan, kode, atau keduanya ke checkpoint sebelumnya.

405 467 

406Claude secara otomatis membuat snapshot file sebelum setiap perubahan sehingga checkpoint dapat mengembalikannya. Tekan Escape dua kali atau jalankan `/rewind` untuk membuka menu rewind. Anda dapat mengembalikan percakapan saja, mengembalikan kode saja, mengembalikan keduanya, atau meringkas dari pesan yang dipilih. Lihat [Checkpointing](https://code.claude.com/docs/id/checkpointing.md) untuk detail.468* Atur [`model: haiku`](https://code.claude.com/docs/id/sub-agents#choose-a-model) di definisi subagent jika pekerjaannya sederhana, seperti mengumpulkan file yang mengimpor sebuah modul atau memeriksa tautan di dokumentasi. Pekerjaan semacam itu tidak membutuhkan model yang lebih besar, dan Haiku jauh lebih murah per permintaan.

469* Minta ringkasan singkat sebagai balasan, agar dua puluh hasil tidak tetap memenuhi konteks Anda.

470* Periksa `/usage` untuk melihat porsi penggunaan Anda yang diambil setiap jenis subagent, sehingga Anda dapat mengetahui mana yang sepadan dengan biayanya.

471* Berikan subagent kustom di `.claude/agents/` hanya `tools: Read, Grep, Glob`. Sekarang subagent itu menjadi peninjau yang tidak dapat mengedit apa pun, dan batasan itu ditegakkan oleh Claude Code, bukan diminta dalam prompt.

407 472 

408Alih-alih merencanakan setiap langkah dengan hati-hati, Anda dapat memberi tahu Claude untuk mencoba sesuatu yang berisiko. Jika tidak berhasil, rewind dan coba pendekatan berbeda. Checkpoints bertahan di seluruh sesi, jadi Anda dapat menutup terminal dan masih rewind nanti.473Peninjau tersebut hanya satu file pendek, `.claude/agents/reviewer.md`:

409 474 

410> [!WARNING]475```markdown .claude/agents/reviewer.md theme={null}

411>476---

412> Checkpoints hanya melacak perubahan yang dibuat melalui alat pengeditan file Claude. Perubahan yang dibuat melalui perintah Bash atau proses eksternal tidak ditangkap. Ini bukan pengganti git.477name: reviewer

478description: Reviews changed files against the spec they were built from. Use after implementing a feature, before opening the PR.

479tools: Read, Grep, Glob

480---

481You're reviewing code you didn't write. Compare the changed files against the spec you're given,

482check that every requirement is implemented and the listed edge cases have tests,

483and report only the gaps that affect correctness. Skip style.

484```

413 485 

414### Lanjutkan percakapan486Minta Claude untuk `have the reviewer compare the rate limiter against SPEC.md` dan kekurangan-kekurangannya kembali ke sesi Anda, di mana Claude dapat memperbaikinya.

415 487 

416> [!TIP]488### Tekan biaya dan konteks

417>

418> Beri nama sesi dengan `/rename` dan perlakukan mereka seperti cabang: setiap alur kerja mendapatkan konteks persisten sendiri.

419 489 

420Claude Code menyimpan percakapan secara lokal, jadi ketika tugas mencakup beberapa sesi Anda tidak harus menjelaskan ulang konteksnya. Jalankan [`claude --continue`](https://code.claude.com/docs/id/sessions#resume-a-session) untuk melanjutkan dari sesi terbaru, atau `claude --resume` untuk memilih dari daftar. Berikan sesi nama deskriptif seperti `oauth-migration` sehingga Anda dapat menemukannya nanti. Lihat [Manage sessions](https://code.claude.com/docs/id/sessions.md) untuk set lengkap kontrol resume, branch, dan naming.490Dengan window 1M token pada sebagian besar model saat ini dan compaction di dekat batas atasnya, Anda jarang akan kehabisan konteks. Namun, Anda tetap dapat *membayar* untuk konteks yang tidak Anda butuhkan. Setiap permintaan mengirim seluruh percakapan, sehingga sesi yang telah mengumpulkan tiga tugas yang tidak terkait akan membaca ulang ketiganya pada setiap giliran tugas keempat. Biaya itu [didiskon selama cache masih hangat](https://code.claude.com/docs/id/costs.md#why-usage-climbs-in-a-long-session) dan dikenakan harga penuh setelah cache kedaluwarsa.

421 491 

422***492[`/usage`](https://code.claude.com/docs/id/costs) adalah tempat pertama untuk melihat. Pada Pro, Max, Team, dan Enterprise, perintah ini merinci penggunaan Anda berdasarkan skill, subagent, plugin, dan server MCP. Perintah ini juga menandai pola seperti konteks panjang atau cache miss yang sering setelah salah satunya melewati 10% penggunaan Anda. Dari sana, perbaikan yang biasa:

423 493 

424## Otomatisasi dan skalakan494* `/clear` di antara tugas yang tidak terkait. Tidak ada biayanya, dan artinya tugas berikutnya tidak terus membayar riwayat tugas sebelumnya. `/clear oauth-migration` memberi nama sesi yang Anda tinggalkan, sehingga Anda dapat kembali ke sesi itu nanti.

495* `/compact` dengan fokus, seperti `/compact keep the API changes and the test commands`. Pada sesi panjang, `/compact` sendiri merupakan permintaan besar, karena membaca seluruh percakapan untuk meringkasnya, terlebih lagi setelah cache kedaluwarsa.

496* Awasi pekerjaan latar belakang: `/loop`, pemeriksaan goal setelah setiap giliran, dan subagent milik Claude sendiri semuanya terus mengirim permintaan saat Anda tidak mengetik.

425 497 

426Setelah Anda efektif dengan satu Claude, kalikan output Anda dengan sesi paralel, mode non-interaktif, dan pola fan-out.498> [!NOTE]

499>

500> [Prompt cache](https://code.claude.com/docs/id/prompt-caching.md) bertahan sekitar satu jam pada langganan dan lima menit pada kunci API, penyedia cloud, atau kredit penggunaan. Subagent mendapat lima menit kecuali Anda mengubahnya.

501>

502> Pada cache satu jam, sesi yang melewati sekitar 200K token dan dibiarkan menganggur akan menjalani compaction sesaat sebelum cache kedaluwarsa, sehingga setelah makan siang Anda melanjutkan dari sebuah ringkasan. Jika Anda sama sekali tidak membutuhkan riwayatnya, sesi baru tetap lebih murah.

427 503 

428### Jalankan mode non-interaktif504## Arahkan sesi

429 505 

430> [!TIP]506> [!TIP]

431>507>

432> Gunakan `claude -p "prompt"` di CI, pre-commit hooks, atau skrip. Tambahkan `--output-format stream-json --verbose` untuk output JSON streaming.508> Awasi menit pertama, tekan `Esc` begitu Claude menyimpang, dan setelah dua koreksi yang gagal jalankan `/clear` dan tulis prompt yang lebih baik alih-alih koreksi ketiga.

433 509 

434Dengan `claude -p "your prompt"`, Anda dapat menjalankan Claude secara non-interaktif, tanpa prompt interaktif. Jalankan masih membuat sesi yang dapat dilanjutkan kecuali Anda melewatkan `--no-session-persistence`. [Mode non-interaktif](https://code.claude.com/docs/id/headless.md) adalah cara Anda mengintegrasikan Claude ke dalam pipeline CI, pre-commit hooks, atau alur kerja otomatis apa pun. Format output memungkinkan Anda mengurai hasil secara terprogram: teks biasa, JSON, atau JSON streaming.510Sebanyak apa pun konfigurasi tidak menggantikan mengawasi menit pertama dan turun tangan ketika Claude menuju ke arah yang tidak Anda maksudkan. Hanya ada beberapa kontrol untuk itu, dan semuanya layak dihafal:

435 511 

436```bash theme={null}512* `Esc` menghentikan Claude di tengah tindakan dan mempertahankan semuanya hingga titik itu, sehingga Anda dapat mengarahkan ulang tanpa kehilangan pekerjaan.

437# One-off queries513* `/rewind`, atau `Esc` dua kali pada prompt kosong, membuka [menu rewind](https://code.claude.com/docs/id/checkpointing.md#rewind-and-summarize), di mana Anda mengembalikan kode, percakapan, atau keduanya ke prompt sebelumnya. Hal itu membuat mencoba pendekatan yang lebih berani terlebih dahulu menjadi berisiko rendah, lalu melakukan rewind jika tidak berhasil. Menu yang sama juga dapat meringkas bagian percakapan yang sudah basi.

438claude -p "Explain what this project does"514* `/clear` memulai dari awal. Jika Anda sudah mengoreksi hal yang sama dua kali dan masih salah, koreksi ketiga sebagian besar hanya menambah percakapan yang sudah berisi dua upaya gagal yang terus dibaca ulang oleh Claude. `/clear` ditambah satu prompt baru yang menggabungkan apa yang Anda pelajari hampir selalu lebih berhasil.

439 

440# Structured output for scripts

441claude -p "List all API endpoints" --output-format json

442 515 

443# Streaming for real-time processing516> [!WARNING]

444claude -p "Analyze this log file" --output-format stream-json --verbose517>

445```518> Checkpoint mencakup file yang diedit Claude dengan tool file miliknya sendiri di percakapan utama Anda, sehingga file yang hanya disentuh oleh perintah Bash [tidak dipulihkan](https://code.claude.com/docs/id/checkpointing.md#bash-command-changes-not-tracked). Checkpoint bekerja berdampingan dengan git, bukan menggantikannya.

446 519 

447Perintah pertama mencetak teks biasa. Format `json` mengembalikan satu objek JSON dengan bidang `result`. Format `stream-json` mencetak satu objek JSON per baris, dimulai dengan acara init.520Dua kontrol yang lebih kecil: [`/btw`](https://code.claude.com/docs/id/interactive-mode#side-questions-with-%2Fbtw) menjawab pertanyaan singkat tanpa menambahkan apa pun ke riwayat. Dan untuk pekerjaan yang berlangsung beberapa hari, `/rename oauth-migration` di sesi memberinya nama, sehingga [`claude --resume oauth-migration`](https://code.claude.com/docs/id/sessions#resume-by-session-id-or-name) dari shell Anda dapat melanjutkannya nanti, termasuk checkpoint-nya. `claude --continue` melanjutkan sesi terbaru.

448 521 

449### Jalankan beberapa sesi Claude522## Biarkan Claude berjalan tanpa Anda

450 523 

451> [!TIP]524> [!TIP]

452>525>

453> Jalankan beberapa sesi Claude secara paralel untuk mempercepat pengembangan, menjalankan eksperimen terisolasi, atau memulai alur kerja kompleks.526> Sebelum sebuah run berjalan tanpa pengawasan, pastikan run tersebut tahu seperti apa kondisi selesai, dapat memeriksa pekerjaannya sendiri, dan hanya dapat menyentuh apa yang seharusnya. Berikan batas giliran atau pengeluaran, dan minta seseorang menyetujui hasilnya di akhir.

454 

455Pilih pendekatan paralel yang sesuai dengan seberapa banyak koordinasi yang ingin Anda lakukan sendiri, dan tambahkan pesan ketika sesi perlu melewatkan temuan satu sama lain:

456 527 

457* [Worktrees](https://code.claude.com/docs/id/worktrees.md): jalankan sesi CLI terpisah dalam checkout git terisolasi sehingga edit tidak bertabrakan528Semua yang ada di halaman ini menjadi sedikit lebih penting ketika Anda tidak ada untuk menangkap kesalahan. Saat Anda mengawasi, Claude yang melewatkan sebagian konteks bukan masalah besar: Anda menyadarinya dalam satu atau dua pesan dan memberitahunya. Dalam run yang Anda mulai sebelum tidur, tidak ada yang memberitahunya, dan Anda baru mengetahui keesokan paginya bahwa Claude menghabiskan semalaman membangun di atas asumsi yang salah.

458* [Cross-session messaging](https://code.claude.com/docs/id/cross-session-messaging.md): biarkan sesi yang Anda jalankan sendiri melewatkan temuan satu sama lain

459* [Aplikasi desktop](https://code.claude.com/docs/id/desktop.md#work-in-parallel-with-sessions): kelola beberapa sesi lokal secara visual, masing-masing dalam worktree-nya sendiri

460* [Claude Code di web](https://code.claude.com/docs/id/claude-code-on-the-web.md): jalankan sesi di cloud, pada infrastruktur yang dikelola Anthropic secara default

461* [Agent view](https://code.claude.com/docs/id/agent-view.md): pratinjau penelitian. Jalankan `claude agents` untuk mengirim sesi yang terus berjalan di latar belakang dan tonton dari satu layar

462* [Agent teams](https://code.claude.com/docs/id/agent-teams.md): eksperimental dan dinonaktifkan secara default. Koordinasi otomatis dari beberapa sesi dengan tugas bersama, pesan, dan pemimpin tim

463 529 

464Selain paralelisasi pekerjaan, beberapa sesi memungkinkan alur kerja yang berfokus pada kualitas. Konteks segar meningkatkan tinjauan kode karena Claude tidak akan bias terhadap kode yang baru saja ditulisnya.530Sebelum Anda membiarkan sebuah tugas berjalan sendiri, ada baiknya menelusuri lima pertanyaan ini dengan memikirkan tugas spesifik tersebut:

465 531 

466Sebagai contoh, gunakan pola Writer/Reviewer:5321. Apakah run tahu seperti apa kondisi selesai? Kondisi goal, file spesifikasi, atau tes gagal yang harus dibuatnya lulus.

5332. Dapatkah run memeriksa pekerjaannya sendiri? Rangkaian tes, hook `Stop`, semacam langkah review.

5343. Apa yang boleh disentuhnya? Aturan izin, `dontAsk`, sandbox, worktree, satu-satunya branch yang boleh di-push.

5354. Apa yang menghentikannya? `--max-turns`, `--max-budget-usd`, batas pengeluaran.

5365. Ke mana hasilnya pergi, dan siapa yang menyetujuinya? PR, komentar, atau ringkasan, lalu seseorang yang menyetujui merge, deploy, atau apa pun yang tidak dapat dibatalkan.

467 537 

468| Sesi A (Penulis) | Sesi B (Peninjau) |538Setelah berjalan, Claude akan menyelesaikan tugas panjang sendiri. Bagian yang tetap menjadi tanggung jawab Anda adalah memulainya, memutuskan apa arti "selesai" kali ini, dan menyetujui merge di akhir.

469| - | - |

470| `Implementasikan rate limiter untuk endpoint API kami` | |

471| | `Tinjau implementasi rate limiter di @src/middleware/rateLimiter.ts. Cari kasus tepi, kondisi race, dan konsistensi dengan pola middleware yang ada.` |

472| `Berikut adalah umpan balik tinjauan: [output Sesi B]. Tangani masalah ini.` | |

473 539 

474Anda dapat melakukan sesuatu yang serupa dengan tes: biarkan satu Claude menulis tes, kemudian yang lain menulis kode untuk lulus.540### Jalankan Claude dari skrip

475 541 

476### Fan out di seluruh file542[`claude -p "prompt"`](https://code.claude.com/docs/id/headless) berjalan sekali lalu keluar, dan begitulah Claude Code akhirnya berada di job CI, git hook, dan loop shell.

477 

478> [!TIP]

479>

480> Loop melalui tugas memanggil `claude -p` untuk masing-masing. Gunakan `--allowedTools` untuk menyetujui tool terlebih dahulu untuk operasi batch.

481 543 

482Untuk migrasi besar atau analisis, Anda dapat mendistribusikan pekerjaan di seluruh banyak invokasi Claude paralel. Jalankan [`/batch <instruction>`](https://code.claude.com/docs/id/commands#all-commands) untuk membuat Claude membagi perubahan di seluruh 5 hingga 30 subagent. Setiap subagent bekerja dalam worktree-nya sendiri. Untuk menjalankan fan-out dari skrip Anda sendiri, loop melalui `claude -p`:544Dalam skrip, Anda hampir selalu menginginkan beberapa flag tambahan:

483 545 

484**1. Hasilkan daftar tugas**546* [`--bare`](https://code.claude.com/docs/id/headless#start-faster-with-bare-mode) melewati hook, skill, plugin, server MCP, dan file `CLAUDE.md`, baik milik repo maupun milik mesin, sehingga run melakukan hal yang sama di mana pun dijalankan. Flag ini juga tidak pernah menyentuh login claude.ai Anda: autentikasi berasal dari `ANTHROPIC_API_KEY`, `apiKeyHelper` di file yang Anda berikan dengan `--settings`, atau kredensial penyedia cloud Anda.

547* `--append-system-prompt`, `--mcp-config`, dan `--settings` memasukkan apa pun yang *memang* dibutuhkan run, secara eksplisit.

548* `--allowedTools` menyetujui tool-nya terlebih dahulu, dan [`--permission-mode dontAsk`](https://code.claude.com/docs/id/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) menolak apa pun lainnya yang seharusnya memunculkan permintaan izin.

549* `--output-format json` memberi Anda satu objek hasil untuk di-parse, dan `stream-json` dengan `--verbose` mengalirkan event saat terjadi.

485 550 

486Biarkan Claude menulis daftar file yang perlu dimigrasikan ke file, sehingga loop di langkah berikutnya dapat membacanya, dengan prompt seperti `list all 2,000 Python files that need migrating and save the list to files.txt`551Jika digabungkan, tampilannya seperti ini:

487 

488**2. Tulis skrip untuk loop melalui daftar**

489 552 

490```bash theme={null}553```bash theme={null}

491for file in $(cat files.txt); do554for file in $(cat files.txt); do

492 claude -p "Migrate $file from Python 2 to Python 3. Return OK or FAIL." \555 claude --bare -p "Migrate $file to the new logger API and commit. Reply OK or FAIL." \

493 --allowedTools "Edit,Bash(git commit *)" \556 --allowedTools "Read,Edit,Bash(git add *),Bash(git commit *)" \

494 --permission-mode dontAsk557 --permission-mode dontAsk \

558 --max-turns 20

495done559done

496```560```

497 561 

498**3. Uji pada beberapa file, kemudian jalankan pada semua file**562Ketika sebuah run selesai, Claude membalas `OK` atau `FAIL`, dan run yang mencapai batas giliran keluar dengan error sebagai gantinya. Coba pada tiga file terlebih dahulu, lihat apa yang salah, perbaiki prompt-nya, lalu jalankan sisanya.

499 

500Perbaiki prompt Anda berdasarkan apa yang salah dengan 2-3 file pertama, kemudian jalankan pada set lengkap. Flag `--allowedTools` menyetujui terlebih dahulu tool yang dibutuhkan migrasi. [`--permission-mode dontAsk`](https://code.claude.com/docs/id/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) menolak apa pun lainnya yang memerlukan persetujuan, yang penting ketika Anda menjalankan tanpa pengawasan, meskipun [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang Anda instal masih dapat menyetujui sebagian dari panggilan tersebut.

501 563 

502Anda juga dapat mengintegrasikan Claude ke dalam pipeline pemrosesan/data yang ada:564Auto mode juga berfungsi dengan `-p` jika Anda memberikan `--permission-mode auto`. Dalam run non-interaktif, blok pengklasifikasi menolak tindakan tersebut dan Claude melanjutkan, dan blok berulang tidak menjeda run seperti yang terjadi di terminal. Baca [bagaimana ambang batas berlaku di sana](https://code.claude.com/docs/id/permission-modes.md#repeated-block-thresholds) sebelum Anda mengandalkannya.

503 565 

504```bash theme={null}566### Mulai run berdasarkan jadwal atau event

505claude -p "<your prompt>" --output-format json | your_command

506```

507 567 

508### Jalankan secara otonom dengan auto mode568Setelah sebuah run berjalan, Claude dapat menangani sisanya sendiri. Satu-satunya hal yang tidak dapat dilakukannya adalah memutuskan untuk *memulai*, jadi harus ada sesuatu yang memulainya: Anda, timer, atau event seperti pemeriksaan CI yang gagal atau PR baru.

509 569 

510Untuk eksekusi tanpa gangguan dengan pemeriksaan keamanan latar belakang, gunakan [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode). Model classifier meninjau perintah sebelum dijalankan, memblokir eskalasi cakupan, infrastruktur yang tidak dikenal, dan tindakan yang didorong konten bermusuhan sambil membiarkan pekerjaan rutin berjalan tanpa prompt.570Di dalam sesi yang terbuka, itulah [`/loop`](https://code.claude.com/docs/id/scheduled-tasks#run-a-prompt-repeatedly-with-%2Floop), yang mengulang sebuah prompt pada interval tertentu:

511 571 

512```bash theme={null}572```text theme={null}

513claude --permission-mode auto -p "fix all lint errors"573/loop 15m check CI on this branch, and if it's red pull the failing job's log, fix it and push

514```574```

515 575 

516Ketika classifier secara berulang memblokir tindakan dalam run non-interaktif dengan bendera `-p`, Claude Code tidak menghentikan run. Lihat [kapan auto mode kembali](https://code.claude.com/docs/id/permission-modes.md#when-auto-mode-falls-back) untuk apa yang terjadi sebagai gantinya dan untuk ambang batas.576Setiap run adalah giliran lain di sesi yang sama, jadi jangan biarkan satu berjalan di percakapan yang panjang. Untuk apa pun yang harus terjadi saat laptop Anda tertutup, [`/schedule`](https://code.claude.com/docs/id/routines#create-from-the-cli) menyiapkan [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) yang berjalan berdasarkan timer. Ini membutuhkan login claude.ai, bukan kunci API. Anda dapat menambahkan trigger event GitHub dengan meminta Claude, atau trigger API di [claude.ai/code/routines](https://claude.ai/code/routines).

517 

518### Tambahkan langkah tinjauan adversarial

519 577 

520> [!TIP]578> [!WARNING]

521>579>

522> Sebelum menganggap tugas selesai, biarkan subagent meninjau diff dalam konteks segar dan melaporkan kesenjangan.580> Sebelum Anda membiarkan tugas terjadwal cloud berjalan, lindungi `main` dengan [aturan branch GitHub yang tidak dapat dilewati oleh tugas tersebut](https://code.claude.com/docs/id/routines.md#repositories-and-branch-permissions). Dan awasi beberapa run pertama dari apa pun yang baru sebelum memercayainya berjalan tanpa pengawasan.

523 

524Semakin lama Claude bekerja tanpa pengawasan, semakin penting pemeriksaan independen sebelum Anda menghitung pekerjaan sebagai selesai. Peninjau yang berjalan dalam konteks [subagent](https://code.claude.com/docs/id/sub-agents.md) segar hanya melihat diff dan kriteria yang Anda berikan, bukan penalaran yang menghasilkan perubahan, sehingga mengevaluasi hasil berdasarkan istilahnya sendiri.

525 581 

526Untuk pemeriksaan kebenaran, jalankan skill [`/code-review`](https://code.claude.com/docs/id/commands) yang disertakan, yang meninjau diff saat ini untuk bug dalam subagent segar dan mengembalikan temuan ke sesi. Untuk memeriksa diff terhadap rencana Anda, tulis prompt tinjauan sendiri. Beri nama pekerjaan untuk diperiksa, rencana untuk memeriksanya, dan apa yang dihitung sebagai temuan:582### Jalankan sesi secara paralel

527 583 

528```text wrap theme={null}584Ketika Anda memiliki beberapa pekerjaan terpisah yang berjalan bersamaan, berikan masing-masing checkout-nya sendiri agar edit tidak bertabrakan. [`claude -w feature-auth`](https://code.claude.com/docs/id/worktrees#start-claude-in-a-worktree) memulai sesi di worktree baru, [aplikasi desktop](https://code.claude.com/docs/id/desktop.md#work-in-parallel-with-sessions) menjalankan beberapa di antaranya berdampingan, dan [sesi cloud](https://code.claude.com/docs/id/claude-code-on-the-web.md) menjalankannya di cloud alih-alih di mesin Anda.

529Gunakan subagent untuk meninjau diff rate limiter terhadap PLAN.md. Periksa bahwa

530setiap persyaratan diimplementasikan, kasus tepi yang terdaftar memiliki tes, dan

531tidak ada yang di luar cakupan tugas yang berubah. Laporkan kesenjangan, bukan preferensi gaya.

532```

533 585 

534Karena peninjau berjalan sebagai subagent, sesi implementasi menerima kesenjangan secara langsung dan dapat memperbaikinya dan meninjau ulang tanpa Anda menyalin temuan antar jendela.586Worktree adalah checkout baru, yang berarti file yang di-gitignore seperti `.env` tidak ada di sana dan dependensi belum terinstal. Untuk yang pertama, cantumkan file yang di-gitignore yang Anda butuhkan di [`.worktreeinclude`](https://code.claude.com/docs/id/worktrees#copy-gitignored-files-into-worktrees) di root repo (sintaksnya sama dengan `.gitignore`) dan Claude Code menyalinnya ke setiap worktree yang dibuatnya:

535 587 

536Peninjau yang diminta untuk menemukan kesenjangan biasanya akan melaporkan beberapa, bahkan ketika pekerjaan itu solid, karena itulah yang diminta untuk dilakukan. Mengejar setiap temuan menyebabkan over-engineering: lapisan abstraksi ekstra, kode defensif, dan tes untuk kasus yang tidak dapat terjadi. Beri tahu peninjau untuk menandai hanya kesenjangan yang mempengaruhi kebenaran atau persyaratan yang dinyatakan, dan perlakukan sisanya sebagai opsional.588```text .worktreeinclude theme={null}

589.env

590.env.local

591config/dev-credentials.json

592```

537 593 

538***594Batasi pada file kecil: file disalin, bukan ditautkan, sehingga `node_modules` di sana berarti salinan penuh per worktree. Untuk direktori besar ada pengaturan [`worktree.symlinkDirectories`](https://code.claude.com/docs/id/settings-reference#worktree-symlinkdirectories), atau simpan perintah instalasi di `CLAUDE.md` agar Claude menjalankannya setiap kali memulai di checkout baru.

539 595 

540## Hindari pola kegagalan umum596Anda jarang harus membersihkan semua ini sendiri:

541 597 

542Ini adalah kesalahan umum. Mengenalinya lebih awal menghemat waktu:598* Ketika Anda keluar dari sesi worktree tanpa nama, Claude Code [menghapus worktree](https://code.claude.com/docs/id/worktrees.md#clean-up-worktrees) jika tidak ada apa pun di dalamnya. Untuk sesi bernama, atau sesi dengan perubahan, Claude Code menanyakan apa yang harus dilakukan.

599* Worktree subagent menghilang ketika subagent selesai tanpa perubahan.

600* Worktree subagent dan sesi latar belakang yang tertinggal akan dibersihkan setelah usianya melebihi `cleanupPeriodDays` dan tidak berisi pekerjaan.

543 601 

544* **Sesi kitchen sink.** Anda mulai dengan satu tugas, kemudian meminta Claude sesuatu yang tidak terkait, kemudian kembali ke tugas pertama. Konteks penuh dengan informasi yang tidak relevan.602> [!NOTE]

545 > **Perbaikan**: `/clear` antara tugas yang tidak terkait.603>

546* **Mengoreksi berulang kali.** Claude melakukan sesuatu yang salah, Anda memperbaikinya, masih salah, Anda memperbaiki lagi. Konteks tercemar dengan pendekatan yang gagal.604> Run `claude -p --worktree` adalah run yang harus Anda bersihkan sendiri, karena keluar tanpa bertanya. Hapus dengan `git worktree remove <path>`, dan jika git menolak karena worktree terkunci, jalankan `git worktree unlock <path>` terlebih dahulu.

547 > **Perbaikan**: Setelah dua koreksi yang gagal, `/clear` dan tulis prompt awal yang lebih baik menggabungkan apa yang Anda pelajari.

548* **CLAUDE.md yang terlalu spesifik.** Jika CLAUDE.md Anda terlalu panjang, Claude mengabaikan setengahnya karena aturan penting hilang dalam kebisingan.

549 > **Perbaikan**: Pangkas tanpa ampun. Jika Claude sudah melakukan sesuatu dengan benar tanpa instruksi, hapus atau ubah menjadi hook.

550* **Kesenjangan kepercayaan-kemudian-verifikasi.** Claude menghasilkan implementasi yang terlihat masuk akal tetapi tidak menangani kasus tepi.

551 > **Perbaikan**: Selalu berikan verifikasi (tes, skrip, tangkapan layar). Jika Anda tidak dapat memverifikasinya, jangan kirimkan.

552* **Eksplorasi tak terbatas.** Anda meminta Claude untuk "menyelidiki" sesuatu tanpa membatasinya. Claude membaca ratusan file, mengisi konteks.

553 > **Perbaikan**: Batasi investigasi secara sempit atau gunakan subagents sehingga eksplorasi tidak mengonsumsi konteks utama Anda.

554 605 

555***606Untuk satu perubahan mekanis besar di banyak file, [`/batch migrate every handler to the v2 response helpers`](https://code.claude.com/docs/id/commands) membagi pekerjaan menjadi 5 hingga 30 unit dan menunjukkan rencananya kepada Anda. Kemudian perintah ini menjalankan setiap unit di worktree-nya sendiri dan membuka PR untuknya. Dari shell Anda, [`claude agents`](https://code.claude.com/docs/id/agent-view) (masih research preview) memberi Anda satu layar untuk semua yang berjalan di latar belakang di mesin Anda.

556 607 

557## Kembangkan intuisi Anda608Sesi kedua juga merupakan peninjau independen termudah yang bisa Anda dapatkan. Satu sesi menulis rate limiter, sesi lain meninjau `@src/middleware/rateLimiter.ts` tanpa menyaksikan proses penulisannya, dan Anda menempelkan temuannya kembali ke sesi pertama. Idenya sama dengan `/code-review`, hanya saja Anda yang membawa pesannya.

558 609 

559Pola dalam panduan ini bukan batu loncatan. Mereka adalah titik awal yang bekerja dengan baik secara umum, tetapi mungkin tidak optimal untuk setiap situasi.610## Apa yang dapat Anda hentikan

560 611 

561Kadang-kadang Anda *harus* membiarkan konteks terakumulasi karena Anda mendalam dalam satu masalah kompleks dan riwayat berharga. Kadang-kadang Anda harus melewati perencanaan dan membiarkan Claude mengetahuinya karena tugas bersifat eksplorasi. Kadang-kadang prompt yang samar adalah tepat karena Anda ingin melihat bagaimana Claude menafsirkan masalah sebelum membatasinya.612Setiap saran ini adalah saran yang baik pada saat ditulis. Sebagian besar adalah solusi sementara untuk sesuatu yang belum dapat dilakukan model dengan andal, dan model sejak itu sudah mengejar ketertinggalannya. Jika beberapa masih menjadi kebiasaan, berikut alasan mengapa aman untuk meninggalkannya.

562 613 

563Perhatikan apa yang berhasil. Ketika Claude menghasilkan output yang hebat, perhatikan apa yang Anda lakukan: struktur prompt, konteks yang Anda berikan, mode yang Anda gunakan. Ketika Claude berjuang, tanyakan mengapa. Apakah konteksnya terlalu bising? Prompt terlalu samar? Tugas terlalu besar untuk satu pass?614| Saran lama | Mengapa sudah tidak berlaku |

615| :- | :- |

616| Context window adalah batasan utama Anda, kelola secara agresif | Sebagian besar model saat ini memiliki window 1M token dan compaction terjadi dengan sendirinya, sehingga kehabisan konteks jarang terjadi. `/clear` di antara tugas masih layak dilakukan, karena konteks yang terfokus memberi Anda jawaban yang lebih baik dan lebih murah. |

617| Tambahkan IMPORTANT atau HURUF KAPITAL SEMUA pada instruksi yang terus dilewatkan Claude | Model lama terkadang membutuhkan penekanan. Model saat ini mengikuti baris yang dirumuskan dengan lugas, dan menumpuk penekanan sebagian besar justru membuat Claude menerapkan aturan secara berlebihan. Jika itu aturan yang tidak boleh dilanggar, jadikan hook atau aturan deny. Jika baris tersebut tenggelam dalam file yang panjang, file tersebut perlu dipersingkat. |

618| Gunakan subagent untuk melindungi context window Anda | Kehabisan konteks jarang menjadi masalah lagi. Subagent masih sangat baik untuk pekerjaan paralel, menjauhkan output yang ramai dari Anda, dan review independen, tetapi masing-masing menambah biaya token. |

619| Delegasikan ke subagent untuk jawaban yang lebih baik | Menyerahkan tugas yang sama ke subagent tidak membuat jawabannya lebih baik. Peninjau baru memang membantu, karena belum melihat penalaran Anda, tetapi itu hal yang berbeda dari mendelegasikan. |

620| `think hard`, `think harder`, `be thorough` dalam prompt | Effort adalah kontrol untuk itu. Frasa-frasa tersebut adalah teks prompt biasa yang sedikit mendorong Claude dalam batas pengaturan effort-nya, bukan kata kunci yang menaikkannya. `ultrathink` masih berfungsi: ini meminta penalaran yang lebih dalam untuk satu giliran itu saja tanpa menyentuh pengaturan effort Anda. |

621| Suruh Claude terus bekerja, loop sampai selesai, jangan malas | Model saat ini biasanya menuntaskan tugas yang telah disepakati tanpa perlu disuruh, dan baris seperti itu lebih mungkin menyebabkan kerja berlebihan daripada memperbaiki kemacetan. Memberi Claude pemeriksaan untuk diluluskan adalah hal yang berbeda, dan masih layak dilakukan. Jika sebuah run memang berhenti terlalu cepat, katakan `continue`, dan untuk run yang tidak diawasi siapa pun, `/goal` atau hook `Stop` akan menegakkannya. |

622| Jelaskan arsitektur dan tata letak file Anda di `CLAUDE.md` | Claude membaca repo sendiri. Tuliskan hanya apa yang tidak ada di sana. |

564 623 

565Seiring waktu, Anda akan mengembangkan intuisi yang tidak dapat ditangkap oleh panduan apa pun. Anda akan tahu kapan harus spesifik dan kapan harus terbuka, kapan harus merencanakan dan kapan harus mengeksplorasi, kapan harus menghapus konteks dan kapan harus membiarkannya terakumulasi.624Jika saran lain di halaman ini suatu saat mulai terasa seperti pekerjaan sia-sia, itu mungkin tanda bahwa saran tersebut juga pantas masuk ke tabel ini.

566 625 

567## Sumber daya terkait626## Sumber daya terkait

568 627 

569* [Cara Claude Code Bekerja](https://code.claude.com/docs/id/how-claude-code-works.md): loop agentic, alat, dan manajemen konteks628* [Cara Claude Code bekerja](https://code.claude.com/docs/id/how-claude-code-works.md): loop, tool, dan apa yang dimuat saat startup

570* [Perluas Claude Code](https://code.claude.com/docs/id/features-overview.md): skills, hooks, MCP, subagents, dan plugins629* [Jelajahi context window](https://code.claude.com/docs/id/context-window.md): apa yang menggunakan ruang dalam sesi dan kapan dimuat

571* [Alur kerja umum](https://code.claude.com/docs/id/common-workflows.md): resep langkah demi langkah untuk debugging, pengujian, PR, dan lainnya630* [Perluas Claude Code](https://code.claude.com/docs/id/features-overview.md): pilihan antara skill, hook, MCP, subagent, dan plugin

572* [CLAUDE.md](https://code.claude.com/docs/id/memory.md): simpan konvensi proyek dan konteks persisten631* [Pilih mode izin](https://code.claude.com/docs/id/permission-modes.md) dan [Konfigurasi izin](https://code.claude.com/docs/id/permissions.md)

632* [Kelola biaya secara efektif](https://code.claude.com/docs/id/costs.md)

633* [Jalankan Claude Code secara terprogram](https://code.claude.com/docs/id/headless.md) dan [Otomatiskan pekerjaan dengan tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md)

634* Untuk pemimpin tim dan admin: [Siapkan Claude Code untuk organisasi Anda](https://code.claude.com/docs/id/admin-setup.md)

chrome.md +1 −1

Details

43 43 

44Di organisasi Enterprise yang mengaktifkan HIPAA, Claude in Chrome nonaktif secara default, dan seorang [Owner](https://code.claude.com/docs/id/server-managed-settings.md#access-control) dapat mengaktifkannya di [**Organization settings > Claude in Chrome**](https://claude.ai/admin-settings/browser-extension). Business Associate Agreement (BAA) Anda dengan Anthropic tidak mencakup data yang dikirim ke situs pihak ketiga melalui Claude in Chrome. Lihat [Implementation Guide](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) untuk daftar Eligible Services.44Di organisasi Enterprise yang mengaktifkan HIPAA, Claude in Chrome nonaktif secara default, dan seorang [Owner](https://code.claude.com/docs/id/server-managed-settings.md#access-control) dapat mengaktifkannya di [**Organization settings > Claude in Chrome**](https://claude.ai/admin-settings/browser-extension). Business Associate Agreement (BAA) Anda dengan Anthropic tidak mencakup data yang dikirim ke situs pihak ketiga melalui Claude in Chrome. Lihat [Implementation Guide](https://trust.anthropic.com/resources?s=l1wrssd9hsbi4gak0tp5a6\&name=%5Banthropic%5D-hipaa-ready-offering-implementation-guide) untuk daftar Eligible Services.

45 45 

46Integrasi Chrome juga memerlukan masuk dengan `/login`. Jika Anda melakukan autentikasi dengan kunci API atau token jangka panjang dari [`claude setup-token`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token), Claude Code membuat integrasi Chrome tetap mati, bahkan ketika Anda melewatkan `--chrome`, karena ekstensi browser tidak dapat melakukan autentikasi dengan kredensial tersebut. Sebelum v2.1.216, sesi ini dapat mengaktifkan integrasi Chrome, tetapi setiap upaya untuk terhubung ke ekstensi browser gagal dengan kesalahan 403.46Integrasi Chrome juga memerlukan masuk dengan `/login`. Jika Anda melakukan autentikasi dengan kunci API atau token jangka panjang dari [`claude setup-token`](https://code.claude.com/docs/id/authentication#generate-a-long-lived-token), Claude Code membuat integrasi Chrome tetap mati, bahkan ketika Anda melewatkan `--chrome`. Ekstensi browser tidak dapat melakukan autentikasi dengan kredensial tersebut.

47 47 

48> [!NOTE]48> [!NOTE]

49>49>

Details

996 996 

997[Memori persetujuan](https://code.claude.com/docs/id/server-managed-settings.md#approval-memory) membahas berapa lama persetujuan bertahan dan kapan dialog muncul lagi.997[Memori persetujuan](https://code.claude.com/docs/id/server-managed-settings.md#approval-memory) membahas berapa lama persetujuan bertahan dan kapan dialog muncul lagi.

998 998 

999Claude Code menerapkan beberapa variabel `env` yang dikirim tanpa menampilkan dialog persetujuan kepada developer, seperti pengaturan pemilihan model dan batas numerik. Variabel lain yang dikirim dapat memerlukan persetujuan developer sebelum berlaku; nilai proxy, base-URL, atau `OTEL_EXPORTER_OTLP_ENDPOINT` yang tidak kosong selalu memerlukannya. Jika variabel yang dikirim memerlukan persetujuan, dialog akan menyebutkannya.999Claude Code menerapkan beberapa variabel `env` yang dikirimkan tanpa menampilkan dialog persetujuan kepada pengembang, seperti pengaturan pemilihan model dan batas numerik. Variabel lain yang dikirimkan dapat memerlukan persetujuan pengembang; nilai proxy, base-URL, atau `OTEL_EXPORTER_OTLP_ENDPOINT` yang tidak kosong selalu memerlukannya. Ketika variabel yang dikirimkan memerlukan persetujuan, dialog menyebutkannya. [Environment variable dan dialog persetujuan](https://code.claude.com/docs/id/server-managed-settings.md#environment-variables-and-the-approval-dialog) berisi detailnya, termasuk empat toggle privasi yang nilai kirimannya menentukan apakah memerlukan persetujuan.

1000 

1001[Environment variable dan dialog persetujuan](https://code.claude.com/docs/id/server-managed-settings.md#environment-variables-and-the-approval-dialog) memuat detailnya, termasuk empat toggle privasi yang nilai kirimannya menentukan apakah toggle tersebut memerlukan persetujuan. Sebelum v2.1.218, Claude Code menerapkan lebih sedikit variabel tanpa bertanya kepada developer, sehingga lebih banyak variabel yang dikirim memicu dialog.

1002 1000 

1003Konfigurasi [telemetri](#telemetry) gateway mengirim `OTEL_EXPORTER_OTLP_ENDPOINT`, sehingga menyetel `telemetry.forward_to` memicu dialog pada setiap klien interaktif. Dialog ini melindungi mesin developer dari gateway yang disusupi atau berniat jahat, bukan melindungi organisasi dari developer.1001Konfigurasi [telemetri](#telemetry) gateway mengirim `OTEL_EXPORTER_OTLP_ENDPOINT`, sehingga menyetel `telemetry.forward_to` memicu dialog pada setiap klien interaktif. Dialog ini melindungi mesin developer dari gateway yang disusupi atau berniat jahat, bukan melindungi organisasi dari developer.

1004 1002 

Details

264* **Panduan lengkap, termasuk pembuatan PR**: lihat [Review and iterate](https://code.claude.com/docs/id/web-quickstart.md#review-and-iterate)264* **Panduan lengkap, termasuk pembuatan PR**: lihat [Review and iterate](https://code.claude.com/docs/id/web-quickstart.md#review-and-iterate)

265* **Membuat Claude memantau PR untuk kegagalan CI dan komentar ulasan secara otomatis**: lihat [Auto-fix pull requests](#auto-fix-pull-requests)265* **Membuat Claude memantau PR untuk kegagalan CI dan komentar ulasan secara otomatis**: lihat [Auto-fix pull requests](#auto-fix-pull-requests)

266 266 

267#### Memecahkan masalah file yang hilang di tampilan diff

268 

269File yang Anda harapkan bisa tidak muncul di daftar file tampilan diff ketika tampilan tersebut membandingkan dengan branch dasar, baik sesi sudah melakukan push perubahan maupun belum:

270 

271* **Belum ada perubahan yang di-push**: daftar berisi editan Claude sendiri, tetapi tidak berisi perubahan yang dibuat oleh perintah yang dijalankan Claude, seperti formatter

272* **Perubahan sudah di-push**: daftar berisi commit yang sudah di-push, tetapi tidak berisi perubahan yang dibuat setelah push terakhir

273 

274Untuk menambahkan perubahan yang hilang ke daftar, minta Claude untuk melakukan commit dan push.

275 

267### Kelola konteks276### Kelola konteks

268 277 

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

270 279 

271* **`/model`, `/effort`, `/color`, dan `/rename`**: teruskan nilai sebagai argumen, misalnya `/model sonnet`, alih-alih membuka pemilih terminal atau slider. Bentuk argumen mengikuti [catatan ketersediaan](https://code.claude.com/docs/id/commands.md#all-commands) setiap perintah.280* **`/model`, `/effort`, `/color`, dan `/rename`**: teruskan nilai sebagai argumen, misalnya `/model sonnet`, alih-alih membuka pemilih terminal atau slider. Bentuk argumen mengikuti [catatan ketersediaan](https://code.claude.com/docs/id/commands.md#all-commands) setiap perintah.

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

273* **`/config`**: di peramban Anda di claude.ai/code, membuka bagian Claude Code dari pengaturan Anda alih-alih menetapkan nilai. Untuk mengubah pengaturan sesi cloud, atur [environment variable](https://code.claude.com/docs/id/cloud-environments.md#set-environment-variables) pada lingkungan. Dalam sesi dengan satu repositori di luar thread [proyek](https://code.claude.com/docs/id/claude-projects.md), lakukan commit kunci ke `.claude/settings.json` repositori tersebut sebagai gantinya. [Pengaturan di sesi cloud](https://code.claude.com/docs/id/settings.md#settings-in-cloud-sessions) mencantumkan apa yang dibaca setiap sesi.282* **`/config`**: di peramban Anda di claude.ai/code, membuka **Settings > Code** atau **Settings > Claude Code** alih-alih menetapkan nilai. Untuk mengubah pengaturan sesi cloud, atur [environment variable](https://code.claude.com/docs/id/cloud-environments.md#set-environment-variables) pada lingkungan. Dalam sesi dengan satu repositori di luar thread [proyek](https://code.claude.com/docs/id/claude-projects.md), lakukan commit kunci ke `.claude/settings.json` repositori tersebut sebagai gantinya. [Pengaturan di sesi cloud](https://code.claude.com/docs/id/settings.md#settings-in-cloud-sessions) mencantumkan apa yang dibaca setiap sesi.

274 283 

275Untuk manajemen konteks di sesi cloud di luar [thread proyek](https://code.claude.com/docs/id/claude-projects.md#choose-models-and-let-claude-manage-context):284Untuk manajemen konteks di sesi cloud di luar [thread proyek](https://code.claude.com/docs/id/claude-projects.md#choose-models-and-let-claude-manage-context):

276 285 


337* **Akses repositori**: verifikasi tidak diaktifkan secara default346* **Akses repositori**: verifikasi tidak diaktifkan secara default

338* **Konten sensitif**: periksa sesi Anda sebelum berbagi. Sesi dapat berisi kode dan kredensial dari repositori GitHub pribadi347* **Konten sensitif**: periksa sesi Anda sebelum berbagi. Sesi dapat berisi kode dan kredensial dari repositori GitHub pribadi

339 348 

340Untuk memerlukan penerima memiliki akses repositori, atau untuk menyembunyikan nama Anda dari sesi bersama, buka [**Settings > Claude Code > Sharing settings**](https://claude.ai/settings/claude-code).349Untuk mewajibkan penerima memiliki akses repositori, atau untuk menyembunyikan nama Anda dari sesi bersama, buka Settings di claude.ai, lalu:

350 

351* **Jika menu Settings menampilkan Code alih-alih Claude Code**: buka [**Privacy**](https://claude.ai/settings/data-privacy-controls), yang memiliki pengaturan ini

352* **Jika tidak**: buka [**Claude Code > Sharing settings**](https://claude.ai/settings/claude-code)

341 353 

342### Arsipkan sesi354### Arsipkan sesi

343 355 

Details

95 95 

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

97 97 

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

99 99 

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

101 101 

Details

70Anda membuat dan menggunakan projects di [claude.ai/code](https://claude.ai/code), di tab Code dari aplikasi desktop, atau di aplikasi mobile Claude untuk [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) dan [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). Di browser dan aplikasi desktop ada dua cara untuk memulai project:70Anda membuat dan menggunakan projects di [claude.ai/code](https://claude.ai/code), di tab Code dari aplikasi desktop, atau di aplikasi mobile Claude untuk [iOS](https://apps.apple.com/us/app/claude-by-anthropic/id6473753684) dan [Android](https://play.google.com/store/apps/details?id=com.anthropic.claude). Di browser dan aplikasi desktop ada dua cara untuk memulai project:

71 71 

72* **Dari awal**, ketika Anda tahu aliran pekerjaan yang ingin dijalankan Claude: buka dialog **New project** dan beri nama. [Mulai project baru dari awal](#start-a-new-project-from-scratch) memandu melalui dialog.72* **Dari awal**, ketika Anda tahu aliran pekerjaan yang ingin dijalankan Claude: buka dialog **New project** dan beri nama. [Mulai project baru dari awal](#start-a-new-project-from-scratch) memandu melalui dialog.

73* **Dari sesi cloud yang sudah melakukan pekerjaan**: di menu sidebar sesi itu, pilih **Move to project**, lalu **Continue as new project**. Claude mengusulkan setup project dari apa yang dilakukan sesi. Lihat [Mulai dari sesi cloud yang ada](#start-from-an-existing-cloud-session).73* **Dari sesi cloud yang sudah melakukan pekerjaan**: di menu sidebar sesi itu, pilih **Continue in project**, lalu **Continue as new project**. Claude mengusulkan setup project dari apa yang dilakukan sesi. Lihat [Mulai dari sesi cloud yang ada](#start-from-an-existing-cloud-session).

74 74 

75Bagaimanapun, [periksa prasyarat](#check-the-prerequisites) terlebih dahulu.75Bagaimanapun, [periksa prasyarat](#check-the-prerequisites) terlebih dahulu.

76 76 


113 113 

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

115 115 

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

117 117 

118* Pilih **Continue as new project** untuk membuat project baru dari sesi tersebut. Project terbuka, dan Claude membaca sesi dan memposting **Setup recommendations** dalam percakapan project untuk Anda konfirmasi. Sesi asli tetap ada di daftar sesi Anda. Jika sedang dalam giliran, sesi itu terus berjalan, jadi hentikan sendiri jika Anda tidak ingin keduanya bekerja sekaligus.118* Pilih **Continue as new project** untuk membuat project baru dari sesi tersebut. Project terbuka, dan Claude membaca sesi dan memposting **Setup recommendations** dalam percakapan project untuk Anda konfirmasi. Sesi asli tetap ada di daftar sesi Anda. Jika sedang dalam giliran, sesi itu terus berjalan, jadi hentikan sendiri jika Anda tidak ingin keduanya bekerja sekaligus.

119* Pilih salah satu project Anda yang ada untuk membawa pekerjaan sesi ke project itu. Project itu terbuka, dan pesan yang dikirim atas nama Anda meminta Claude untuk membaca sesi dan melanjutkan dari mana ia berhenti. Sesi asli tetap ada di daftar sesi Anda, tidak berubah.119* Pilih salah satu project Anda yang ada untuk membawa pekerjaan sesi ke project itu. Project itu terbuka, dan pesan yang dikirim atas nama Anda meminta Claude untuk membaca sesi dan melanjutkan dari mana ia berhenti. Sesi asli tetap ada di daftar sesi Anda, tidak berubah.


262 262 

263Di komputer yang memiliki folder yang dibutuhkan tugas, buatnya tersedia melalui Remote Control dengan salah satu dari dua cara. Keduanya memerlukan Claude Code v2.1.280 atau lebih baru di komputer itu.263Di komputer yang memiliki folder yang dibutuhkan tugas, buatnya tersedia melalui Remote Control dengan salah satu dari dua cara. Keduanya memerlukan Claude Code v2.1.280 atau lebih baru di komputer itu.

264 264 

265* **Di aplikasi desktop Claude**: buka **Settings > Claude Code**, aktifkan **Use this computer from your phone and claude.ai**, dan tambahkan folder ke daftar di bawah switch itu. Thread dapat berjalan di komputer ini saat aplikasi terbuka.265* **Di aplikasi desktop Claude**: buka **Settings > Code** atau **Settings > Claude Code** dan aktifkan **Use this computer from your phone and claude.ai**. Tambahkan folder ke daftar di bawah switch itu. Thread dapat berjalan di komputer ini saat aplikasi terbuka.

266* **Di terminal**: jalankan `claude remote-control` di folder dan biarkan berjalan. Dalam repositori git, tambahkan `--spawn worktree` untuk memberikan setiap thread di sana [worktree](https://code.claude.com/docs/id/worktrees.md)-nya sendiri alih-alih folder itu sendiri.266* **Di terminal**: jalankan `claude remote-control` di folder dan biarkan berjalan. Dalam repositori git, tambahkan `--spawn worktree` untuk memberikan setiap thread di sana [worktree](https://code.claude.com/docs/id/worktrees.md)-nya sendiri alih-alih folder itu sendiri.

267 267 

268**2. Minta tugas dengan Work locally**268**2. Minta tugas dengan Work locally**


275 275 

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

277 277 

278Saat thread berjalan, ikon laptop di headernya menunjukkan apakah komputer Anda terhubung. Klik untuk melihat folder mana yang digunakan thread atau untuk mematikan koneksi. Thread dijeda saat komputer itu tidur, dan berhenti jika aplikasi desktop atau `claude remote-control` berhenti. [Kehilangan kontak dengan folder Anda](#lost-contact-with-your-folder) mencakup membuatnya berjalan lagi. Di aplikasi desktop, aktifkan **Keep this computer awake for Remote Control** di bawah **Settings > Claude Code** untuk mencegah komputer tidur dengan sendirinya.278Saat thread berjalan, ikon laptop di headernya menunjukkan apakah komputer Anda terhubung. Klik untuk melihat folder mana yang digunakan thread atau untuk mematikan koneksi. Thread dijeda saat komputer itu tidur, dan berhenti jika aplikasi desktop atau `claude remote-control` berhenti.

279 

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

281* **Untuk mencegah komputer tidur dengan sendirinya**: di aplikasi desktop, aktifkan **Keep this computer awake for Remote Control** di **Settings > Code** atau **Settings > Claude Code**

279 282 

280Project tidak dapat menjalankan thread di komputer Anda saat [**Require trusted devices**](https://code.claude.com/docs/id/remote-control.md#trusted-devices) aktif untuk akun Anda.283Project tidak dapat menjalankan thread di komputer Anda saat [**Require trusted devices**](https://code.claude.com/docs/id/remote-control.md#trusted-devices) aktif untuk akun Anda.

281 284 


427Beberapa fitur Claude Code memungkinkan lebih dari satu sesi bekerja pada waktu yang sama, jadi menjalankan pekerjaan secara paralel bukan dengan sendirinya apa yang dimaksudkan project. Dalam project, Claude memulai dan melacak sesi alih-alih Anda, dan masing-masing dimulai dari instruksi yang sama. Inilah cara setiap fitur tetangga terhubung ke project:430Beberapa fitur Claude Code memungkinkan lebih dari satu sesi bekerja pada waktu yang sama, jadi menjalankan pekerjaan secara paralel bukan dengan sendirinya apa yang dimaksudkan project. Dalam project, Claude memulai dan melacak sesi alih-alih Anda, dan masing-masing dimulai dari instruksi yang sama. Inilah cara setiap fitur tetangga terhubung ke project:

428 431 

429* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) adalah Claude di saluran Slack tim Anda, di paket Team dan Enterprise. Siapa pun di saluran dapat memberikan pekerjaan, semua orang di saluran melihat dan mengarahkannya, dan itu menggunakan koneksi yang disiapkan admin untuk saluran itu. Project adalah milik Anda sendiri: Anda satu-satunya yang mengirim pekerjaan atau melihat thread-nya, itu menggunakan akses GitHub dan connectors Anda sendiri, dan itu di Pro dan Max. [Bagaimana Claude Tag berbeda dari Cowork dan Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) memiliki perbandingan berdampingan.432* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) adalah Claude di saluran Slack tim Anda, di paket Team dan Enterprise. Siapa pun di saluran dapat memberikan pekerjaan, semua orang di saluran melihat dan mengarahkannya, dan itu menggunakan koneksi yang disiapkan admin untuk saluran itu. Project adalah milik Anda sendiri: Anda satu-satunya yang mengirim pekerjaan atau melihat thread-nya, itu menggunakan akses GitHub dan connectors Anda sendiri, dan itu di Pro dan Max. [Bagaimana Claude Tag berbeda dari Cowork dan Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) memiliki perbandingan berdampingan.

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

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

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

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


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

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

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

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

449 452 

450## Troubleshooting453## Troubleshooting

451 454 


489 492 

490### Kehilangan kontak dengan folder Anda493### Kehilangan kontak dengan folder Anda

491 494 

492Thread yang berjalan di komputer Anda menunjukkan ini ketika sesi Claude Code di sana berhenti merespons, biasanya karena komputer tidur atau aplikasi desktop atau `claude remote-control` berhenti. Bangunkan komputer, dan jika aplikasi desktop atau `claude remote-control` tidak lagi berjalan di sana, mulai lagi: buka kembali aplikasi dan konfirmasi **Use this computer from your phone and claude.ai** masih aktif di bawah **Settings > Claude Code**, atau jalankan `claude remote-control` lagi di folder yang sama.495Thread yang berjalan di komputer Anda menunjukkan ini ketika sesi Claude Code di sana berhenti merespons, biasanya karena komputer tidur atau aplikasi desktop atau `claude remote-control` berhenti. Bangunkan komputer. Jika aplikasi desktop atau `claude remote-control` tidak lagi berjalan di sana, mulai lagi:

496 

497* **Aplikasi desktop**: buka kembali aplikasi dan konfirmasi **Use this computer from your phone and claude.ai** masih aktif di bawah **Settings > Code** atau **Settings > Claude Code**

498* **Terminal**: jalankan `claude remote-control` lagi di folder yang sama

493 499 

494### Pesan lainnya500### Pesan lainnya

495 501 

Details

71* Dalam sesi terminal, tempat `/code-review` menjalankan review sebagai [subagent hasil fork](https://code.claude.com/docs/id/skills.md#run-skills-in-a-subagent)71* Dalam sesi terminal, tempat `/code-review` menjalankan review sebagai [subagent hasil fork](https://code.claude.com/docs/id/skills.md#run-skills-in-a-subagent)

72* Dalam eksekusi `-p` dengan output teks atau JSON72* Dalam eksekusi `-p` dengan output teks atau JSON

73 73 

74Dalam aplikasi host yang meminta daftar temuan, seperti [aplikasi desktop](https://code.claude.com/docs/id/desktop.md#review-your-code), Claude melaporkan temuan review melalui [tool `ReportFindings`](https://code.claude.com/docs/id/tools-reference). Laporan muncul sebagai daftar temuan, dan setiap entri menampilkan lokasi file, ringkasan satu kalimat, dan tag kategori seperti `correctness` jika temuan memilikinya. Permintaan host berlaku di setiap tingkat effort dan memerlukan Claude Code v2.1.218 atau yang lebih baru.74Dalam aplikasi host yang meminta daftar temuan, seperti [aplikasi desktop](https://code.claude.com/docs/id/desktop.md#review-your-code), Claude melaporkan temuan review melalui [tool `ReportFindings`](https://code.claude.com/docs/id/tools-reference) sebagai gantinya. Laporan muncul sebagai daftar temuan, dan setiap entri menampilkan lokasi file, ringkasan satu kalimat, dan tag kategori seperti `correctness` jika temuan memilikinya. Permintaan host berlaku di setiap tingkat effort.

75 75 

76Ketika Claude memperbaiki temuan yang dilaporkan di kemudian hari dalam sesi, Claude melaporkannya lagi. Claude Code kemudian menandai setiap temuan dalam daftar temuan yang diperbarui sebagai diperbaiki, dilewati, atau tidak perlu perubahan.76Ketika Claude memperbaiki temuan yang dilaporkan di kemudian hari dalam sesi, Claude melaporkannya lagi. Claude Code kemudian menandai setiap temuan dalam daftar temuan yang diperbarui sebagai diperbaiki, dilewati, atau tidak perlu perubahan.

77 77 


104Setelah tingkat effort dan flag, Claude Code membaca sisa baris sebagai target review. Argumen `ultra` mengubah cara pembacaan tersebut:104Setelah tingkat effort dan flag, Claude Code membaca sisa baris sebagai target review. Argumen `ultra` mengubah cara pembacaan tersebut:

105 105 

106* **Dengan `ultra`**: Claude Code membaca satu kata sebagai base branch atau nomor PR. Teks yang lebih panjang yang tidak menyebut branch atau PR menjadi [catatan yang dilampirkan ke review](https://code.claude.com/docs/id/ultrareview.md#pass-a-request-in-plain-words). `/code-review ultra check my auth changes` meninjau branch Anda saat ini, dan Claude mengaitkan temuan dengan catatan Anda.106* **Dengan `ultra`**: Claude Code membaca satu kata sebagai base branch atau nomor PR. Teks yang lebih panjang yang tidak menyebut branch atau PR menjadi [catatan yang dilampirkan ke review](https://code.claude.com/docs/id/ultrareview.md#pass-a-request-in-plain-words). `/code-review ultra check my auth changes` meninjau branch Anda saat ini, dan Claude mengaitkan temuan dengan catatan Anda.

107* **Tanpa `ultra`**: semua yang tersisa adalah target review, bahkan ketika diawali dengan nama perintah lain. `/code-review /fix-issue 123` meninjau dengan `/fix-issue 123` sebagai teks target alih-alih memuat `/fix-issue` sebagai [skill bertumpuk](https://code.claude.com/docs/id/skills.md#stack-several-skills-in-one-message) kedua. Sebelum v2.1.218, perintah yang ditumpuk setelah `/code-review` diekspansi sebagai skill tersendiri.107* **Tanpa `ultra`**: semua yang tersisa adalah target review, bahkan ketika diawali dengan nama perintah lain. `/code-review /fix-issue 123` meninjau dengan `/fix-issue 123` sebagai teks target alih-alih memuat `/fix-issue` sebagai [skill bertumpuk](https://code.claude.com/docs/id/skills.md#stack-several-skills-in-one-message) kedua.

108 108 

109## Jalankan di foreground109## Jalankan di foreground

110 110 


114* Atur [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/id/env-vars) ke `1`, yang juga mematikan fitur tugas latar belakang lainnya114* Atur [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](https://code.claude.com/docs/id/env-vars) ke `1`, yang juga mematikan fitur tugas latar belakang lainnya

115* Jalankan `/code-review` lagi saat review sebelumnya masih berlangsung115* Jalankan `/code-review` lagi saat review sebelumnya masih berlangsung

116 116 

117Sebelum v2.1.218, review berjalan di dalam percakapan Anda.

118 

119## Biarkan Claude memulai review117## Biarkan Claude memulai review

120 118 

121Claude dapat memulai `/code-review` sendiri, tanpa Anda mengetik perintahnya:119Claude dapat memulai `/code-review` sendiri, tanpa Anda mengetik perintahnya:

commands.md +3 −3

Details

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

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

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

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

41 41 

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

43 43 


54| `/agents` | Cetak pengingat untuk meminta Claude membuat atau mengelola [subagent](https://code.claude.com/docs/id/sub-agents.md), atau untuk mengedit `.claude/agents/` atau `~/.claude/agents/` secara langsung. Pada v2.1.197 dan lebih awal, membuka antarmuka interaktif untuk membuat dan mengelola konfigurasi subagent |54| `/agents` | Cetak pengingat untuk meminta Claude membuat atau mengelola [subagent](https://code.claude.com/docs/id/sub-agents.md), atau untuk mengedit `.claude/agents/` atau `~/.claude/agents/` secara langsung. Pada v2.1.197 dan lebih awal, membuka antarmuka interaktif untuk membuat dan mengelola konfigurasi subagent |

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

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

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

58| `/auto-mode-setup` | [Buat entri `autoMode.environment`](https://code.claude.com/docs/id/auto-mode-config#generate-environment-entries) dari proyek dan sesi terbaru Anda, kemudian tinjau draf dan simpan ke pengaturan pengguna Anda. Pada paket Pro, Max, atau Team, memerlukan Claude Code v2.1.228 atau lebih baru, atau v2.1.233 atau lebih baru di Windows asli. Pada paket Enterprise atau dengan kunci API Claude Console, memerlukan v2.1.283 atau lebih baru. Jika perintah tidak ada, lihat [`/auto-mode-setup` mengembalikan "Unknown command"](https://code.claude.com/docs/id/auto-mode-config#auto-mode-setup-returns-unknown-command) |58| `/auto-mode-setup` | [Buat entri `autoMode.environment`](https://code.claude.com/docs/id/auto-mode-config#generate-environment-entries) dari proyek dan sesi terbaru Anda, kemudian tinjau draf dan simpan ke pengaturan pengguna Anda. Pada paket Pro, Max, atau Team, memerlukan Claude Code v2.1.228 atau lebih baru, atau v2.1.233 atau lebih baru di Windows asli. Pada paket Enterprise atau dengan kunci API Claude Console, memerlukan v2.1.283 atau lebih baru. Jika perintah tidak ada, lihat [`/auto-mode-setup` mengembalikan "Unknown command"](https://code.claude.com/docs/id/auto-mode-config#auto-mode-setup-returns-unknown-command) |

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

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


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

86| `/diff` | Tinjau perubahan di working tree Anda, termasuk edit yang telah dilakukan Claude sejauh ini. Lihat [Tinjau perubahan dengan /diff](https://code.claude.com/docs/id/interactive-mode.md#review-changes-with-%2Fdiff) |86| `/diff` | Tinjau perubahan di working tree Anda, termasuk edit yang telah dilakukan Claude sejauh ini. Lihat [Tinjau perubahan dengan /diff](https://code.claude.com/docs/id/interactive-mode.md#review-changes-with-%2Fdiff) |

87| `/doctor [prompt-audit [path]]` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Jalankan pemeriksaan pengaturan yang mendiagnosis masalah instalasi, pengaturan, ekstensi, dan `CLAUDE.md` serta mengusulkan perbaikan yang diterapkan Claude setelah Anda mengonfirmasi. Untuk apa yang dicakup pemeriksaan, atau untuk mengaudit instruksi Anda dengan `prompt-audit` sebagai gantinya, lihat [Periksa pengaturan Anda dengan `/doctor`](https://code.claude.com/docs/id/skills#check-your-setup-with-/doctor). Subperintah `prompt-audit` memerlukan Claude Code v2.1.283 atau lebih baru. Alias: `/checkup` |87| `/doctor [prompt-audit [path]]` | **[Skill](https://code.claude.com/docs/id/skills.md#bundled-skills).** Jalankan pemeriksaan pengaturan yang mendiagnosis masalah instalasi, pengaturan, ekstensi, dan `CLAUDE.md` serta mengusulkan perbaikan yang diterapkan Claude setelah Anda mengonfirmasi. Untuk apa yang dicakup pemeriksaan, atau untuk mengaudit instruksi Anda dengan `prompt-audit` sebagai gantinya, lihat [Periksa pengaturan Anda dengan `/doctor`](https://code.claude.com/docs/id/skills#check-your-setup-with-/doctor). Subperintah `prompt-audit` memerlukan Claude Code v2.1.283 atau lebih baru. Alias: `/checkup` |

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

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

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

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

computer-use.md +1 −1

Details

178| Fitur | Desktop | CLI |178| Fitur | Desktop | CLI |

179| :- | :- | :- |179| :- | :- | :- |

180| Platform | macOS dan Windows | macOS saja |180| Platform | macOS dan Windows | macOS saja |

181| Aktifkan | Toggle di **Settings > This computer > System** | Aktifkan `computer-use` di `/mcp` |181| Aktifkan | Toggle di [Settings](https://code.claude.com/docs/id/desktop.md#enable-computer-use) | Aktifkan `computer-use` di `/mcp` |

182| Daftar aplikasi yang ditolak | Dapat dikonfigurasi di Settings | Belum tersedia |182| Daftar aplikasi yang ditolak | Dapat dikonfigurasi di Settings | Belum tersedia |

183| Toggle auto-unhide | Opsional | Selalu aktif |183| Toggle auto-unhide | Opsional | Selalu aktif |

184| Integrasi Dispatch | Sesi yang dispawn Dispatch dapat menggunakan computer use | Tidak berlaku |184| Integrasi Dispatch | Sesi yang dispawn Dispatch dapat menggunakan computer use | Tidak berlaku |

Details

70* [Perluas Claude Code](https://code.claude.com/docs/id/features-overview.md): kapan menggunakan CLAUDE.md vs skill vs aturan vs hook vs MCP70* [Perluas Claude Code](https://code.claude.com/docs/id/features-overview.md): kapan menggunakan CLAUDE.md vs skill vs aturan vs hook vs MCP

71* [Simpan instruksi dan memori](https://code.claude.com/docs/id/memory.md): hierarki CLAUDE.md dan memori otomatis71* [Simpan instruksi dan memori](https://code.claude.com/docs/id/memory.md): hierarki CLAUDE.md dan memori otomatis

72* [Subagent](https://code.claude.com/docs/id/sub-agents.md): delegasikan penelitian ke jendela konteks terpisah72* [Subagent](https://code.claude.com/docs/id/sub-agents.md): delegasikan penelitian ke jendela konteks terpisah

73* [Praktik terbaik](https://code.claude.com/docs/id/best-practices.md): mengelola konteks sebagai batasan utama Anda73* [Praktik terbaik](https://code.claude.com/docs/id/best-practices.md#keep-cost-and-context-down): jaga sesi tetap fokus dan biaya tetap rendah

74* [Prompt caching](https://code.claude.com/docs/id/prompt-caching.md): tindakan mana yang membatalkan awalan yang di-cache74* [Prompt caching](https://code.claude.com/docs/id/prompt-caching.md): tindakan mana yang membatalkan awalan yang di-cache

75* [Kurangi penggunaan token](https://code.claude.com/docs/id/costs.md#reduce-token-usage): strategi untuk menjaga penggunaan konteks tetap rendah75* [Kurangi penggunaan token](https://code.claude.com/docs/id/costs.md#reduce-token-usage): strategi untuk menjaga penggunaan konteks tetap rendah

Details

174Salah satu dari ini menunjukkan Anda teks lengkap:174Salah satu dari ini menunjukkan Anda teks lengkap:

175 175 

176* Tekan `Ctrl+O` untuk membuka [transcript viewer](https://code.claude.com/docs/id/interactive-mode.md#transcript-viewer) dan baca teks lengkap di bawah nama sesi pengirim.176* Tekan `Ctrl+O` untuk membuka [transcript viewer](https://code.claude.com/docs/id/interactive-mode.md#transcript-viewer) dan baca teks lengkap di bawah nama sesi pengirim.

177 

178 Jika Claude sedang sibuk dan belum menerima pesan, gulir ke akhir transkrip, tempat pesan tercantum di bawah `Waiting to be delivered`. Memerlukan Claude Code v2.1.309 atau lebih baru.

179 

177* Dalam [rendering layar penuh](https://code.claude.com/docs/id/fullscreen.md#use-the-mouse), klik baris pratinjau yang tidak menampilkan sebagian pesan untuk memperluasnya di tempat.180* Dalam [rendering layar penuh](https://code.claude.com/docs/id/fullscreen.md#use-the-mouse), klik baris pratinjau yang tidak menampilkan sebagian pesan untuk memperluasnya di tempat.

181 

178* Dalam sesi yang dimulai dengan [`--verbose`](https://code.claude.com/docs/id/cli-reference#cli-flags), Claude Code menunjukkan teks lengkap alih-alih pratinjau.182* Dalam sesi yang dimulai dengan [`--verbose`](https://code.claude.com/docs/id/cli-reference#cli-flags), Claude Code menunjukkan teks lengkap alih-alih pratinjau.

179 183 

180Pratinjau mempersingkat hanya apa yang Anda lihat. Apakah Anda memperluas atau tidak, Claude membaca pesan lengkap.184Pratinjau mempersingkat hanya apa yang Anda lihat. Apakah Anda memperluas atau tidak, Claude membaca pesan lengkap.

desktop.md +31 −22

Details

69* **Gunakan saran**: tekan **Tab** atau **Right arrow** untuk menempatkannya di kotak prompt, edit jika Anda mau, lalu tekan **Enter** untuk mengirimnya. Menekan **Enter** sebelum Anda menerima saran tidak akan mengirimnya.69* **Gunakan saran**: tekan **Tab** atau **Right arrow** untuk menempatkannya di kotak prompt, edit jika Anda mau, lalu tekan **Enter** untuk mengirimnya. Menekan **Enter** sebelum Anda menerima saran tidak akan mengirimnya.

70* **Tulis prompt Anda sendiri**: mulai mengetik. Saran hanya ditampilkan selama kotak prompt kosong dan tidak memiliki file terlampir.70* **Tulis prompt Anda sendiri**: mulai mengetik. Saran hanya ditampilkan selama kotak prompt kosong dan tidak memiliki file terlampir.

71 71 

72Buka **Settings > Claude Code** dan matikan **Prompt suggestions** di bawah **Sessions** untuk menghentikan saran di setiap sesi mulai saat sesi tersebut dimulai atau dilanjutkan berikutnya.72Matikan **Prompt suggestions** di **Settings > Code** atau **Settings > Claude Code** untuk menghentikan saran. Setiap sesi berhenti menampilkannya saat sesi tersebut dimulai atau dilanjutkan berikutnya.

73 73 

74### Tambahkan file dan konteks ke prompt74### Tambahkan file dan konteks ke prompt

75 75 


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

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

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

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

96 96 

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

98 98 


100 100 

101> [!TIP]101> [!TIP]

102>102>

103> Mulai tugas kompleks di Plan sehingga Claude memetakan pendekatan sebelum membuat perubahan. Setelah Anda menyetujui rencana, beralih ke Accept edits atau Manual untuk menjalankannya. Lihat [explore first, then plan, then code](https://code.claude.com/docs/id/best-practices.md#explore-first-then-plan-then-code) untuk informasi lebih lanjut tentang alur kerja ini.103> Mulai tugas kompleks di Plan sehingga Claude memetakan pendekatan sebelum membuat perubahan. Setelah Anda menyetujui rencana, beralih ke Accept edits atau Manual untuk menjalankannya. Lihat [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) untuk informasi lebih lanjut tentang alur kerja ini.

104 104 

105Sesi cloud mendukung Accept edits, Plan, dan Auto. Accept edits sesuai dengan mode `default`: sesi cloud secara otomatis menyetujui edit file, jadi pemilih menampilkan Accept edits alih-alih Manual. Bypass permissions tidak tersedia di sesi cloud, termasuk sesi di [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments).105Sesi cloud mendukung Accept edits, Plan, dan Auto. Accept edits sesuai dengan mode `default`: sesi cloud secara otomatis menyetujui edit file, jadi pemilih menampilkan Accept edits alih-alih Manual. Bypass permissions tidak tersedia di sesi cloud, termasuk sesi di [lingkungan self-hosted](https://code.claude.com/docs/id/self-hosted-environments).

106 106 


133 133 

134Claude membuat konfigurasi server awal berdasarkan proyek Anda. Jika aplikasi Anda menggunakan perintah dev kustom, edit `.claude/launch.json` agar sesuai dengan setup Anda. Lihat [Configure preview servers](#configure-preview-servers) untuk referensi lengkap.134Claude membuat konfigurasi server awal berdasarkan proyek Anda. Jika aplikasi Anda menggunakan perintah dev kustom, edit `.claude/launch.json` agar sesuai dengan setup Anda. Lihat [Configure preview servers](#configure-preview-servers) untuk referensi lengkap.

135 135 

136Untuk menghapus data yang disimpan Browser, pilih **Clear browsing data** di menu **⋮** pane Browser. Untuk menonaktifkan Browser sepenuhnya, matikan **Browser tools** di **Settings > Claude Code**.136Untuk menghapus data yang disimpan Browser, pilih **Clear browsing data** di menu **⋮** pane Browser. Untuk menonaktifkan Browser sepenuhnya, matikan **Browser tools** di **Settings > Code** atau **Settings > Claude Code**.

137 137 

138### Jelajahi situs eksternal138### Jelajahi situs eksternal

139 139 


164 164 

165### Tinjau perubahan dengan diff view165### Tinjau perubahan dengan diff view

166 166 

167Setelah Claude membuat perubahan pada kode Anda, diff view memungkinkan Anda meninjau modifikasi file demi file sebelum membuat pull request. Untuk membuka diff view, klik jumlah baris, seperti `+12 -1`, di kartu **Changes** pada [panel detail sesi](#see-session-details). Anda juga dapat mengklik **Changes** di bilah judul sesi.167Setelah Claude membuat perubahan pada kode Anda, diff view memungkinkan Anda meninjau modifikasi file demi file sebelum membuat pull request. Untuk membuka diff view, klik jumlah baris, seperti `+12 -1`, di kartu **Changes** pada [panel detail sesi](#see-session-details). Anda juga dapat mengklik **Changes** di bilah judul sesi. Diff sesi cloud terhadap branch dasar dapat [tidak menyertakan perubahan yang belum di-push](https://code.claude.com/docs/id/claude-code-on-the-web.md#troubleshoot-a-missing-file-in-the-diff-view).

168 168 

169Untuk mengomentari baris tertentu, klik baris apa pun di diff untuk membuka kotak komentar. Ketik umpan balik Anda dan tekan **Enter** untuk menambahkan komentar. Setelah menambahkan komentar ke beberapa baris, kirimkan semua komentar sekaligus:169Untuk mengomentari baris tertentu, arahkan kursor ke sebuah baris dan klik **+** yang muncul di samping nomor barisnya untuk membuka kotak komentar. Ketik umpan balik Anda dan tekan **Enter** untuk menambahkan komentar. Setelah menambahkan komentar ke beberapa baris, kirimkan semua komentar sekaligus:

170 170 

171* **macOS**: tekan **Cmd+Enter**171* **macOS**: tekan **Cmd+Enter**

172* **Windows**: tekan **Ctrl+Enter**172* **Windows**: tekan **Ctrl+Enter**


194 * **Jika repositori tidak mengizinkan auto-merge**: **Merge when ready** tidak akan aktif, jadi aktifkan auto-merge di [pengaturan repositori GitHub Anda](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository) terlebih dahulu194 * **Jika repositori tidak mengizinkan auto-merge**: **Merge when ready** tidak akan aktif, jadi aktifkan auto-merge di [pengaturan repositori GitHub Anda](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository) terlebih dahulu

195* **[Tata letak sebelumnya](#check-which-layout-you-have)**: setelah sesi memiliki pull request, klik **CI** di bilah statusnya.195* **[Tata letak sebelumnya](#check-which-layout-you-have)**: setelah sesi memiliki pull request, klik **CI** di bilah statusnya.

196 196 

197Untuk mengarsipkan sesi secara otomatis setelah PR di-merge atau ditutup, aktifkan [auto-archive](#archive-a-session) di **Settings > Claude Code**.197Untuk mengarsipkan sesi secara otomatis setelah PR di-merge atau ditutup, aktifkan [auto-archive](#archive-a-session) di **Settings > Code** atau **Settings > Claude Code**.

198 198 

199> [!NOTE]199> [!NOTE]

200>200>


275* **Cmd+Ctrl**: tekan **Ctrl+Alt**275* **Cmd+Ctrl**: tekan **Ctrl+Alt**

276* **Cmd**: tekan **Ctrl**276* **Cmd**: tekan **Ctrl**

277 277 

278Siklus sesi, toggle terminal, dan toggle view-mode menggunakan **Ctrl** di setiap platform.278Pintasan yang diawali dengan `Ctrl` tetap sama di setiap platform.

279 279 

280| Shortcut | Action |280| Shortcut | Action |

281| - | - |281| - | - |


284| `Cmd` `Option` `1`–`9` | Di layar sesi baru pada [tata letak saat ini](#check-which-layout-you-have), pilih lingkungan |284| `Cmd` `Option` `1`–`9` | Di layar sesi baru pada [tata letak saat ini](#check-which-layout-you-have), pilih lingkungan |

285| `Cmd` `Option` `0` | Di layar sesi baru pada tata letak saat ini, buka [dialog **New environment**](#create-a-saved-environment) |285| `Cmd` `Option` `0` | Di layar sesi baru pada tata letak saat ini, buka [dialog **New environment**](#create-a-saved-environment) |

286| `Cmd` `W` | Tutup sesi |286| `Cmd` `W` | Tutup sesi |

287| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Sesi berikutnya atau sebelumnya |287| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | Beralih antar sesi |

288| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Sesi berikutnya atau sebelumnya |288| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | Sesi berikutnya atau sebelumnya |

289| `Esc` | Hentikan respons Claude |289| `Esc` | Hentikan respons Claude |

290| `Tab` / `Right arrow` | [Terima prompt yang disarankan](#accept-a-suggested-prompt) di kotak prompt yang kosong |290| `Tab` / `Right arrow` | [Terima prompt yang disarankan](#accept-a-suggested-prompt) di kotak prompt yang kosong |


352 352 

353**2. Aktifkan toggle**353**2. Aktifkan toggle**

354 354 

355Di aplikasi desktop, buka **Settings > This computer > System**. Di bawah **Computer use**, aktifkan **Enable computer use**. Di Windows, toggle berlaku segera dan setup selesai. Di macOS, lanjutkan ke langkah berikutnya.355Di aplikasi desktop, buka **Settings**, lalu:

356 

357* **Jika menu Settings mencantumkan This computer**: buka **This computer > System**

358* **Jika tidak**: buka **Capabilities**

359 

360Di bawah **Computer use**, aktifkan **Enable computer use**:

361 

362* **Windows**: toggle berlaku segera dan setup selesai

363* **macOS**: lanjutkan ke langkah berikutnya

356 364 

357Jika Anda tidak melihat toggle, konfirmasi Anda menggunakan macOS atau Windows dengan rencana Pro atau Max, kemudian perbarui dan mulai ulang aplikasi.365Jika Anda tidak melihat toggle, konfirmasi Anda menggunakan macOS atau Windows dengan rencana Pro atau Max, kemudian perbarui dan mulai ulang aplikasi.

358 366 


379 387 

380Aplikasi dengan jangkauan luas, seperti terminal, Finder atau File Explorer, dan System Settings atau Settings, menampilkan peringatan tambahan di prompt sehingga Anda tahu apa yang disetujui.388Aplikasi dengan jangkauan luas, seperti terminal, Finder atau File Explorer, dan System Settings atau Settings, menampilkan peringatan tambahan di prompt sehingga Anda tahu apa yang disetujui.

381 389 

382Bagian **Computer use** di **Settings > This computer > System** mencakup opsi-opsi berikut:390Di Settings, bagian **Computer use** tempat Anda [mengaktifkan computer use](#enable-computer-use) mencakup opsi-opsi berikut:

383 391 

384* **Denied apps**: tambahkan aplikasi di sini untuk menolaknya tanpa meminta. Claude mungkin masih mempengaruhi aplikasi yang ditolak secara tidak langsung melalui tindakan di aplikasi yang diizinkan, tetapi tidak dapat berinteraksi dengan aplikasi yang ditolak secara langsung.392* **Denied apps**: tambahkan aplikasi di sini untuk menolaknya tanpa meminta. Claude mungkin masih mempengaruhi aplikasi yang ditolak secara tidak langsung melalui tindakan di aplikasi yang diizinkan, tetapi tidak dapat berinteraksi dengan aplikasi yang ditolak secara langsung.

385* **Unhide apps when Claude finishes**: saat computer use tidak berjalan di latar belakang, Claude menyembunyikan jendela lain Anda saat bekerja sehingga hanya berinteraksi dengan aplikasi yang disetujui. Ketika Claude selesai, jendela yang disembunyikan dipulihkan kecuali Anda mematikan pengaturan ini.393* **Unhide apps when Claude finishes**: saat computer use tidak berjalan di latar belakang, Claude menyembunyikan jendela lain Anda saat bekerja sehingga hanya berinteraksi dengan aplikasi yang disetujui. Ketika Claude selesai, jendela yang disembunyikan dipulihkan kecuali Anda mematikan pengaturan ini.


390 398 

391### Bekerja secara paralel dengan sesi399### Bekerja secara paralel dengan sesi

392 400 

393Klik **+ New** 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.401Klik **+ New** 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 beralih antar sesi.

394 402 

395Anda juga dapat membuka sesi kedua di samping sesi saat ini atau di jendelanya sendiri:403Anda juga dapat membuka sesi kedua di samping sesi saat ini atau di jendelanya sendiri:

396 404 


401 409 

402#### Jalankan sesi di worktree-nya sendiri410#### Jalankan sesi di worktree-nya sendiri

403 411 

404Dalam proyek yang merupakan repositori Git, aktifkan **Worktree** sebelum Anda memulai sesi untuk menjalankannya di [Git worktree](https://code.claude.com/docs/id/worktrees.md)-nya sendiri, yaitu salinan proyek yang terisolasi. Secara default, **Worktree** nonaktif dan Claude bekerja langsung di folder proyek. Klik kontrol folder proyek di [baris di bawah kotak prompt](#start-a-session) dan aktifkan **Worktree**.412Dalam proyek yang merupakan repositori Git, aktifkan **Worktree** sebelum Anda memulai sesi untuk menjalankannya di [Git worktree](https://code.claude.com/docs/id/worktrees.md)-nya sendiri, yaitu salinan proyek yang terisolasi. Secara default, **Worktree** nonaktif dan Claude bekerja langsung di folder proyek. Pada [tata letak saat ini](#check-which-layout-you-have), aktifkan tombol **Worktree** di [baris di bawah kotak prompt](#start-a-session).

405 413 

406* **Dengan [lingkungan tersimpan](#create-a-saved-environment)**: atur **Worktree** saat Anda membuat atau mengedit lingkungan tersebut414* **Dengan [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md)**: jika baris di bawah kotak prompt menampilkan kontrol folder proyek tetapi tidak ada tombol **Worktree**, klik kontrol tersebut dan aktifkan **Worktree**

415* **Sebagai default untuk [lingkungan lokal atau SSH tersimpan](#create-a-saved-environment)**: atur **Worktree** saat Anda membuat atau mengedit lingkungan tersebut

407* **[Tata letak sebelumnya](#check-which-layout-you-have)**: pilih kotak centang **worktree** di sebelah nama branch, di atas kotak prompt416* **[Tata letak sebelumnya](#check-which-layout-you-have)**: pilih kotak centang **worktree** di sebelah nama branch, di atas kotak prompt

408 417 

409Worktree disimpan di `<project-root>/.claude/worktrees/` secara default. Untuk menyimpannya di direktori kustom:418Worktree disimpan di `<project-root>/.claude/worktrees/` secara default. Untuk menyimpannya di direktori kustom:

410 419 

411* **Sesi lokal**: atur **Worktree location** di **Settings > Claude Code**420* **Sesi lokal**: atur **Worktree location** di **Settings > Code** atau **Settings > Claude Code**

412* **Sesi SSH**: atur **Worktree folder** pada [koneksi SSH](#choose-where-ssh-session-worktrees-go)421* **Sesi SSH**: atur **Worktree folder** pada [koneksi SSH](#choose-where-ssh-session-worktrees-go)

413 422 

414Anda juga dapat mengatur **Branch prefix** di **Settings > Claude Code**. Desktop menambahkannya di depan setiap nama branch worktree, yang berguna untuk menjaga branch yang dibuat Claude tetap terorganisir.423Anda juga dapat mengatur **Branch prefix** di **Settings > Code** atau **Settings > Claude Code**. Desktop menambahkannya di depan setiap nama branch worktree, yang berguna untuk menjaga branch yang dibuat Claude tetap terorganisir.

415 424 

416Untuk menyertakan file yang diabaikan git seperti `.env` di worktree baru, buat file [`.worktreeinclude`](https://code.claude.com/docs/id/worktrees#copy-gitignored-files-into-worktrees) di root proyek Anda. Lihat [Apa yang dibagikan worktree dengan checkout utama](https://code.claude.com/docs/id/worktrees.md#what-worktrees-share-with-the-main-checkout) untuk mengetahui dari mana sesi worktree membaca pengaturan proyek, hook, dan skill.425Untuk menyertakan file yang diabaikan git seperti `.env` di worktree baru, buat file [`.worktreeinclude`](https://code.claude.com/docs/id/worktrees#copy-gitignored-files-into-worktrees) di root proyek Anda. Lihat [Apa yang dibagikan worktree dengan checkout utama](https://code.claude.com/docs/id/worktrees.md#what-worktrees-share-with-the-main-checkout) untuk mengetahui dari mana sesi worktree membaca pengaturan proyek, hook, dan skill.

417 426 


430 439 

431Sebelum Anda mengarsipkan sesi yang worktree-nya memiliki perubahan yang belum di-commit, lihat [Simpan perubahan yang belum di-commit saat sesi diarsipkan](#keep-uncommitted-changes-when-a-session-is-archived). Untuk mengarsipkan sesi, arahkan kursor ke sesi tersebut di sidebar, buka menunya, dan pilih **Archive**. Sesi berpindah ke [sesi yang diarsipkan](#organize-and-find-sessions) Anda.440Sebelum Anda mengarsipkan sesi yang worktree-nya memiliki perubahan yang belum di-commit, lihat [Simpan perubahan yang belum di-commit saat sesi diarsipkan](#keep-uncommitted-changes-when-a-session-is-archived). Untuk mengarsipkan sesi, arahkan kursor ke sesi tersebut di sidebar, buka menunya, dan pilih **Archive**. Sesi berpindah ke [sesi yang diarsipkan](#organize-and-find-sessions) Anda.

432 441 

433Agar sesi mengarsipkan dirinya sendiri ketika pull request-nya di-merge atau ditutup, aktifkan **Auto-archive after PR merge or close** di **Settings > Claude Code**. Sesi cloud dan sesi yang masih berjalan tidak mengarsipkan dirinya sendiri.442Agar sesi mengarsipkan dirinya sendiri ketika pull request-nya di-merge atau ditutup, aktifkan **Auto-archive after PR merge or close** di **Settings > Code** atau **Settings > Claude Code**. Sesi cloud dan sesi yang masih berjalan tidak mengarsipkan dirinya sendiri.

434 443 

435#### Simpan perubahan yang belum di-commit saat sesi diarsipkan444#### Simpan perubahan yang belum di-commit saat sesi diarsipkan

436 445 


527Sesi lokal terhubung ketika Anda mengaktifkan Remote Control untuknya, atau ketika sesi tersebut terhubung secara otomatis saat dimulai:536Sesi lokal terhubung ketika Anda mengaktifkan Remote Control untuknya, atau ketika sesi tersebut terhubung secara otomatis saat dimulai:

528 537 

529* **Anda mengaktifkannya untuk sesi tersebut**: dengan sakelar **Remote Control** milik sesi tersebut, atau dengan mengetik `/remote-control` di kotak prompt-nya.538* **Anda mengaktifkannya untuk sesi tersebut**: dengan sakelar **Remote Control** milik sesi tersebut, atau dengan mengetik `/remote-control` di kotak prompt-nya.

530* **Sesi terhubung saat dimulai**: sesi baru terhubung secara otomatis selama **Connect new sessions to Remote Control** aktif di **Settings > Claude Code**. Jika Anda belum pernah mengubah pengaturan tersebut, Desktop mengikuti [`remoteControlAtStartup`](https://code.claude.com/docs/id/settings-reference#remotecontrolatstartup) di pengaturan pengguna atau pengaturan terkelola Anda, lalu default organisasi Anda.539* **Sesi terhubung saat dimulai**: sesi baru terhubung secara otomatis selama **Connect new sessions to Remote Control** aktif di **Settings > Code** atau **Settings > Claude Code**. Jika Anda belum pernah mengubah pengaturan tersebut, Desktop mengikuti [`remoteControlAtStartup`](https://code.claude.com/docs/id/settings-reference#remotecontrolatstartup) di pengaturan pengguna atau pengaturan terkelola Anda, lalu default organisasi Anda.

531 540 

532Untuk melihat apakah sesi terhubung, periksa sakelar **Remote Control** di kartu **Environment** pada [panel detail sesi](#see-session-details)-nya.541Untuk melihat apakah sesi terhubung, periksa sakelar **Remote Control** di kartu **Environment** pada [panel detail sesi](#see-session-details)-nya.

533 542 

534Untuk menjaga agar sesi tidak muncul di perangkat Anda yang lain, matikan Remote Control pada tingkat yang Anda perlukan:543Untuk menjaga agar sesi tidak muncul di perangkat Anda yang lain, matikan Remote Control pada tingkat yang Anda perlukan:

535 544 

536* **Satu sesi**: matikan sakelar **Remote Control**-nya. Di sesi yang terhubung saat dimulai, mengetik `/remote-control` membiarkan Remote Control tetap aktif dan menampilkan `Remote Control is already on. This session connected automatically when it started.` Klik **Turn off** pada baris tersebut untuk memutuskan koneksi.545* **Satu sesi**: matikan sakelar **Remote Control**-nya. Di sesi yang terhubung saat dimulai, mengetik `/remote-control` membiarkan Remote Control tetap aktif dan menampilkan `Remote Control is already on. This session connected automatically when it started.` Klik **Turn off** pada baris tersebut untuk memutuskan koneksi.

537* **Sesi Desktop baru di komputer ini**: matikan **Connect new sessions to Remote Control** di **Settings > Claude Code**. Jika sudah menunjukkan nonaktif, aktifkan lalu matikan agar Desktop menyimpan pilihan Anda. Setelah disimpan, pengaturan ini diutamakan daripada `remoteControlAtStartup` dan default.546* **Sesi Desktop baru di komputer ini**: matikan **Connect new sessions to Remote Control** di **Settings > Code** atau **Settings > Claude Code**. Jika sudah menunjukkan nonaktif, aktifkan lalu matikan agar Desktop menyimpan pilihan Anda. Setelah disimpan, pengaturan ini diutamakan daripada `remoteControlAtStartup` dan default.

538* **Sesi apa pun di komputer ini, termasuk CLI**: atur [`disableRemoteControl`](https://code.claude.com/docs/id/settings-reference#disableremotecontrol) ke `true` di `~/.claude/settings.json` untuk mencegah sesi terhubung. Sesi yang sudah terhubung saat Anda menyimpan file tetap terhubung sampai Anda mematikan Remote Control untuknya.547* **Sesi apa pun di komputer ini, termasuk CLI**: atur [`disableRemoteControl`](https://code.claude.com/docs/id/settings-reference#disableremotecontrol) ke `true` di `~/.claude/settings.json` untuk mencegah sesi terhubung. Sesi yang sudah terhubung saat Anda menyimpan file tetap terhubung sampai Anda mematikan Remote Control untuknya.

539 548 

540Untuk menyembunyikan sesi yang sudah muncul di perangkat Anda yang lain, arsipkan sesi tersebut di Desktop. Desktop juga mengarsipkan salinan Remote Control dari sesi tersebut, sehingga sesi tersebut keluar dari daftar sesi default di perangkat tersebut. Untuk melihat atau menghapusnya di sana, lihat [Archive sessions](https://code.claude.com/docs/id/claude-code-on-the-web.md#archive-sessions).549Untuk menyembunyikan sesi yang sudah muncul di perangkat Anda yang lain, arsipkan sesi tersebut di Desktop. Desktop juga mengarsipkan salinan Remote Control dari sesi tersebut, sehingga sesi tersebut keluar dari daftar sesi default di perangkat tersebut. Untuk melihat atau menghapusnya di sana, lihat [Archive sessions](https://code.claude.com/docs/id/claude-code-on-the-web.md#archive-sessions).


576> * **Connectors berwarna abu-abu dalam sesi WSL**: lihat [If the terminal or connectors are unavailable](https://code.claude.com/docs/id/desktop-wsl.md#check-for-the-terminal-and-connectors)585> * **Connectors berwarna abu-abu dalam sesi WSL**: lihat [If the terminal or connectors are unavailable](https://code.claude.com/docs/id/desktop-wsl.md#check-for-the-terminal-and-connectors)

577> * **Sesi cloud**: lihat [How connectors reach Claude Code](https://code.claude.com/docs/id/mcp.md#how-connectors-reach-claude-code)586> * **Sesi cloud**: lihat [How connectors reach Claude Code](https://code.claude.com/docs/id/mcp.md#how-connectors-reach-claude-code)

578 587 

579Setelah terhubung, Claude dapat membaca kalender Anda, mengirim pesan, membuat masalah, dan berinteraksi dengan alat Anda secara langsung. Anda dapat meminta Claude konektor apa yang dikonfigurasi di sesi Anda. Untuk mengelola atau memutuskan konektor, buka **Settings > Connectors** di aplikasi desktop.588Setelah terhubung, Claude dapat membaca kalender Anda, mengirim pesan, membuat masalah, dan berinteraksi dengan alat Anda secara langsung. Anda dapat meminta Claude konektor apa yang dikonfigurasi di sesi Anda. Untuk mengelola atau memutuskan konektor, klik **Customize** di sidebar dan buka **Connectors**.

580 589 

581Untuk integrasi yang tidak tercantum di Connectors, tambahkan MCP servers secara manual melalui [file pengaturan](https://code.claude.com/docs/id/mcp.md#installing-mcp-servers). Anda juga dapat [membuat custom connectors](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).590Untuk integrasi yang tidak tercantum di Connectors, tambahkan MCP servers secara manual melalui [file pengaturan](https://code.claude.com/docs/id/mcp.md#installing-mcp-servers). Anda juga dapat [membuat custom connectors](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp).

582 591 


2028| `--model sonnet` | Pemilih model di baris di bawah kotak prompt |2037| `--model sonnet` | Pemilih model di baris di bawah kotak prompt |

2029| `--resume`, `--continue` | Klik sesi di sidebar, atau ketik `/resume` di kotak prompt untuk mengambil sesi yang Anda mulai dari CLI |2038| `--resume`, `--continue` | Klik sesi di sidebar, atau ketik `/resume` di kotak prompt untuk mengambil sesi yang Anda mulai dari CLI |

2030| `--permission-mode` | Pemilih mode di baris di bawah kotak prompt |2039| `--permission-mode` | Pemilih mode di baris di bawah kotak prompt |

2031| `--dangerously-skip-permissions` | Bypass permissions mode. Di paket Pro dan Max, aktifkan di Settings → Claude Code → "Allow bypass permissions mode"; di paket Team dan Enterprise, kebijakan organisasi mengontrolnya |2040| `--dangerously-skip-permissions` | Bypass permissions mode. Di paket Pro dan Max, aktifkan "Allow bypass permissions mode" di **Settings > Code** atau **Settings > Claude Code**; di paket Team dan Enterprise, kebijakan organisasi mengontrolnya |

2032| `--add-dir` | [Tambahkan folder ke sesi](#add-folders-to-a-session) di sesi lokal dan SSH, atau pilih [beberapa repositori](#run-long-running-tasks-in-the-cloud) di sesi cloud |2041| `--add-dir` | [Tambahkan folder ke sesi](#add-folders-to-a-session) di sesi lokal dan SSH, atau pilih [beberapa repositori](#run-long-running-tasks-in-the-cloud) di sesi cloud |

2033| `--allowedTools`, `--disallowedTools` | Tidak ada setara per-sesi. Aturan izin di [file pengaturan](https://code.claude.com/docs/id/settings.md) masih berlaku. |2042| `--allowedTools`, `--disallowedTools` | Tidak ada setara per-sesi. Aturan izin di [file pengaturan](https://code.claude.com/docs/id/settings.md) masih berlaku. |

2034| `--verbose` | [Mode tampilan verbose](#switch-view-modes) |2043| `--verbose` | [Mode tampilan verbose](#switch-view-modes) |


2088* **Tim agent**: tim terkoordinasi, di mana Claude sebagai pemimpin tim menugaskan tugas kepada rekan tim dari daftar tugas bersama, tersedia di [CLI](https://code.claude.com/docs/id/agent-teams.md), bukan di Desktop. Untuk pekerjaan multi-agent di dalam satu sesi, gunakan [dynamic workflows](https://code.claude.com/docs/id/workflows.md), yang berjalan di Desktop; Claude juga dapat [mengirim pesan dan mengelola sesi Anda yang lain](#work-across-sessions) secara langsung.2097* **Tim agent**: tim terkoordinasi, di mana Claude sebagai pemimpin tim menugaskan tugas kepada rekan tim dari daftar tugas bersama, tersedia di [CLI](https://code.claude.com/docs/id/agent-teams.md), bukan di Desktop. Untuk pekerjaan multi-agent di dalam satu sesi, gunakan [dynamic workflows](https://code.claude.com/docs/id/workflows.md), yang berjalan di Desktop; Claude juga dapat [mengirim pesan dan mengelola sesi Anda yang lain](#work-across-sessions) secara langsung.

2089* **Perintah terminal-dialog**: perintah bawaan yang membuka panel interaktif di terminal berperilaku berbeda di tab Code. Edit [file pengaturan](https://code.claude.com/docs/id/settings.md) secara langsung untuk mengelola aturan izin dan konfigurasi, atau jalankan perintah dari CLI mandiri.2098* **Perintah terminal-dialog**: perintah bawaan yang membuka panel interaktif di terminal berperilaku berbeda di tab Code. Edit [file pengaturan](https://code.claude.com/docs/id/settings.md) secara langsung untuk mengelola aturan izin dan konfigurasi, atau jalankan perintah dari CLI mandiri.

2090 * Perintah tanpa bentuk argumen, seperti `/permissions`, membalas dengan `isn't available in this environment`.2099 * Perintah tanpa bentuk argumen, seperti `/permissions`, membalas dengan `isn't available in this environment`.

2091 * `/config` membuka **Settings > Claude Code**.2100 * `/config` membuka **Settings > Code** atau **Settings > Claude Code**.

2092 2101 

2093## Troubleshooting2102## Troubleshooting

2094 2103 

Details

135 135 

136Tugas terjadwal lokal berjalan di mesin Anda. Desktop memeriksa jadwal setiap menit saat aplikasi terbuka dan memulai sesi segar saat tugas jatuh tempo, independen dari sesi manual apa pun yang Anda buka. Setiap tugas mendapat penundaan kecil beberapa menit setelah waktu terjadwal untuk membagi lalu lintas API. Penundaan bersifat deterministik: tugas yang sama selalu dimulai pada offset yang sama.136Tugas terjadwal lokal berjalan di mesin Anda. Desktop memeriksa jadwal setiap menit saat aplikasi terbuka dan memulai sesi segar saat tugas jatuh tempo, independen dari sesi manual apa pun yang Anda buka. Setiap tugas mendapat penundaan kecil beberapa menit setelah waktu terjadwal untuk membagi lalu lintas API. Penundaan bersifat deterministik: tugas yang sama selalu dimulai pada offset yang sama.

137 137 

138Tugas hanya berjalan saat aplikasi desktop berjalan dan komputer Anda terjaga. Jika komputer Anda tidur melalui waktu terjadwal, run dilewati. Untuk mencegah idle-sleep, aktifkan **Keep computer awake** di **Settings > This computer > System**. Menutup laptop lid masih membuatnya tidur.138Tugas hanya berjalan saat aplikasi desktop berjalan dan komputer Anda terjaga. Jika komputer Anda tidur melalui waktu terjadwal, run dilewati. Untuk mencegah idle-sleep, aktifkan **Keep computer awake** di **Settings > Desktop app** atau **Settings > This computer > System**. Menutup laptop lid masih membuatnya tidur.

139 139 

140> [!NOTE]140> [!NOTE]

141>141>

env-vars.md +2 −0

Details

291| `CLAUDE_CODE_ENABLE_TASKS` | Memilih tool pelacakan tugas mana yang disediakan Claude Code dalam [sesi yang memilikinya](https://code.claude.com/docs/id/tools-reference.md#task-tool-availability). Secara default, Claude Code menyediakan tool Task `TaskCreate`, `TaskUpdate`, `TaskGet`, dan `TaskList`. Atur ke `0` untuk mendapatkan tool lama `TodoWrite` sebagai gantinya. Lihat [Daftar tugas](https://code.claude.com/docs/id/interactive-mode.md#task-list) |291| `CLAUDE_CODE_ENABLE_TASKS` | Memilih tool pelacakan tugas mana yang disediakan Claude Code dalam [sesi yang memilikinya](https://code.claude.com/docs/id/tools-reference.md#task-tool-availability). Secara default, Claude Code menyediakan tool Task `TaskCreate`, `TaskUpdate`, `TaskGet`, dan `TaskList`. Atur ke `0` untuk mendapatkan tool lama `TodoWrite` sebagai gantinya. Lihat [Daftar tugas](https://code.claude.com/docs/id/interactive-mode.md#task-list) |

292| `CLAUDE_CODE_ENABLE_TELEMETRY` | Atur ke `1` untuk mengaktifkan pengumpulan data OpenTelemetry untuk metrik dan logging. Diperlukan sebelum mengonfigurasi exporter OTel. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |292| `CLAUDE_CODE_ENABLE_TELEMETRY` | Atur ke `1` untuk mengaktifkan pengumpulan data OpenTelemetry untuk metrik dan logging. Diperlukan sebelum mengonfigurasi exporter OTel. Atur di shell, pengaturan pengguna, atau pengaturan terkelola Anda. Diabaikan di [pengaturan proyek dan lokal](https://code.claude.com/docs/id/settings-reference.md#variables-claude-code-ignores-in-env). Lihat [Pemantauan](https://code.claude.com/docs/id/monitoring-usage.md) |

293| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Atur ke `1` untuk mendapatkan tool pelacakan tugas di setiap model. Tanpanya, Claude Code menyediakannya secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](https://code.claude.com/docs/id/tools-reference.md#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` tetap memilih tool Task atau `TodoWrite`. Memerlukan Claude Code v2.1.233 atau yang lebih baru |293| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | Atur ke `1` untuk mendapatkan tool pelacakan tugas di setiap model. Tanpanya, Claude Code menyediakannya secara default hanya pada model yang tercantum di bawah [Ketersediaan tool Task](https://code.claude.com/docs/id/tools-reference.md#task-tool-availability). `CLAUDE_CODE_ENABLE_TASKS` tetap memilih tool Task atau `TodoWrite`. Memerlukan Claude Code v2.1.233 atau yang lebih baru |

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

294| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Waktu dalam milidetik untuk menunggu setelah loop kueri menjadi idle sebelum keluar secara otomatis. Berguna untuk alur kerja otomatis dan skrip yang menggunakan mode SDK |295| `CLAUDE_CODE_EXIT_AFTER_STOP_DELAY` | Waktu dalam milidetik untuk menunggu setelah loop kueri menjadi idle sebelum keluar secara otomatis. Berguna untuk alur kerja otomatis dan skrip yang menggunakan mode SDK |

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

296| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke tingkat teratas setiap body permintaan API. Berguna untuk meneruskan parameter khusus penyedia yang tidak diekspos langsung oleh Claude Code. Nilai yang diekspor di shell Anda juga berlaku untuk [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang Anda kirim dengan `claude agents` atau `--bg`. Sebelum v2.1.206, sesi latar belakang mengabaikan nilai yang diekspor shell dan menggunakan salinan apa pun yang diwarisi oleh proses supervisor latar belakang |297| `CLAUDE_CODE_EXTRA_BODY` | Objek JSON untuk digabungkan ke tingkat teratas setiap body permintaan API. Berguna untuk meneruskan parameter khusus penyedia yang tidak diekspos langsung oleh Claude Code. Nilai yang diekspor di shell Anda juga berlaku untuk [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) yang Anda kirim dengan `claude agents` atau `--bg`. Sebelum v2.1.206, sesi latar belakang mengabaikan nilai yang diekspor shell dan menggunakan salinan apa pun yang diwarisi oleh proses supervisor latar belakang |


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

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

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

372| `CLAUDE_CODE_RESUME_SHOWS_CUT_OFF_CALLS` | Atur ke `1` untuk mempertahankan [panggilan tool yang terputus](https://code.claude.com/docs/id/sessions.md#what-a-resumed-session-restores), yang ditandai sebagai terpotong, dalam giliran yang dilanjutkan oleh `CLAUDE_CODE_RESUME_INTERRUPTED_TURN`. Saat tidak diatur, panggilan tersebut dibuang sebelum giliran berlanjut. Beberapa panggilan tetap dibuang, seperti panggilan ke subagent, skill, workflow, dan tool yang menunggu seseorang. Untuk panel chat VS Code, lihat [Melanjutkan percakapan setelah reload](https://code.claude.com/docs/id/vs-code.md#continue-conversations-after-a-reload). Memerlukan Claude Code v2.1.309 atau yang lebih baru |

371| `CLAUDE_CODE_RETRY_WATCHDOG` | Atur ke `1` untuk sesi tanpa pengawasan seperti harness eval, 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 saat permintaan berkecepatan standar mendapat `429` yang melaporkan batas pengeluaran atau kredit penggunaan yang habis, bahkan yang berasal dari [batas pengeluaran gateway](https://code.claude.com/docs/id/errors.md#spend-limit-reached) yang direset sesuai jadwal. Sebelum v2.1.239, watchdog melakukan retry pada error ini tanpa batas. Untuk permintaan fast mode, lihat [Menangani rate limit](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Watchdog melakukan backoff hingga 5 menit di antara percobaan, atau hingga batas direset saat respons membawa waktu reset rate limit, sehingga sesi yang mencapai batas penggunaan menunggu hingga sisa jendela 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 yang terputus, menjadi 300, kira-kira 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 |373| `CLAUDE_CODE_RETRY_WATCHDOG` | Atur ke `1` untuk sesi tanpa pengawasan seperti harness eval, 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 saat permintaan berkecepatan standar mendapat `429` yang melaporkan batas pengeluaran atau kredit penggunaan yang habis, bahkan yang berasal dari [batas pengeluaran gateway](https://code.claude.com/docs/id/errors.md#spend-limit-reached) yang direset sesuai jadwal. Sebelum v2.1.239, watchdog melakukan retry pada error ini tanpa batas. Untuk permintaan fast mode, lihat [Menangani rate limit](https://code.claude.com/docs/id/fast-mode.md#handle-rate-limits). Watchdog melakukan backoff hingga 5 menit di antara percobaan, atau hingga batas direset saat respons membawa waktu reset rate limit, sehingga sesi yang mencapai batas penggunaan menunggu hingga sisa jendela 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 yang terputus, menjadi 300, kira-kira 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 |

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

373| `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS` | Interval minimum dalam milidetik di antara pemeriksaan apakah [batas penggunaan](https://code.claude.com/docs/id/errors.md#youve-hit-your-session-limit) sudah dicabut, selama permintaan menunggu batas tersebut direset dengan `CLAUDE_CODE_RETRY_WATCHDOG` diatur. Saat pemeriksaan menemukan batas telah dicabut, permintaan langsung dikirim. Berikan bilangan bulat dalam digit biasa dari `60000`, satu menit, hingga `10800000`, tiga jam. Pemeriksaan hanya dilakukan untuk batas sesi atau mingguan langganan claude.ai saat kredit penggunaan tidak sedang digunakan, dan tidak dilakukan saat `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur. Saat variabel ini tidak diatur atau nilainya di luar rentang tersebut, tidak ada pemeriksaan yang dilakukan. Memerlukan Claude Code v2.1.305 atau yang lebih baru |375| `CLAUDE_CODE_RETRY_WATCHDOG_USAGE_LIMIT_RECHECK_MS` | Interval minimum dalam milidetik di antara pemeriksaan apakah [batas penggunaan](https://code.claude.com/docs/id/errors.md#youve-hit-your-session-limit) sudah dicabut, selama permintaan menunggu batas tersebut direset dengan `CLAUDE_CODE_RETRY_WATCHDOG` diatur. Saat pemeriksaan menemukan batas telah dicabut, permintaan langsung dikirim. Berikan bilangan bulat dalam digit biasa dari `60000`, satu menit, hingga `10800000`, tiga jam. Pemeriksaan hanya dilakukan untuk batas sesi atau mingguan langganan claude.ai saat kredit penggunaan tidak sedang digunakan, dan tidak dilakukan saat `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` diatur. Saat variabel ini tidak diatur atau nilainya di luar rentang tersebut, tidak ada pemeriksaan yang dilakukan. Memerlukan Claude Code v2.1.305 atau yang lebih baru |

errors.md +39 −12

Details

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

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

148| `Couldn't send feedback` | [Network](#couldnt-send-feedback) |148| `Couldn't send feedback` | [Network](#couldnt-send-feedback) |

149| `Feedback payload too large. Try again without the transcript, or shorten the details.` | [Jaringan](#feedback-payload-too-large) |

149| `MCP server "<name>" connection timed out. Your computer went to sleep or its clock changed while connecting.` | [Network](#mcp-server-connection-timed-out-during-a-sleep-or-clock-change) |150| `MCP server "<name>" connection timed out. Your computer went to sleep or its clock changed while connecting.` | [Network](#mcp-server-connection-timed-out-during-a-sleep-or-clock-change) |

150| `Prompt is too long` / `Input is too long for requested model` | [Request errors](#prompt-is-too-long) |151| `Prompt is too long` / `Input is too long for requested model` | [Request errors](#prompt-is-too-long) |

151| `Prompt is too long · automatic compaction failed:` | [Request errors](#prompt-is-too-long) |152| `Prompt is too long · automatic compaction failed:` | [Request errors](#prompt-is-too-long) |


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

336| `Its agent definition was not restored: the folder its definition file came from is not trusted` | [Tool errors](#teammate-agent-definition-not-restored) |337| `Its agent definition was not restored: the folder its definition file came from is not trusted` | [Tool errors](#teammate-agent-definition-not-restored) |

337| `Only a teammate can approve a shutdown request` | [Tool errors](#only-a-teammate-can-approve-a-shutdown-request) |338| `Only a teammate can approve a shutdown request` | [Tool errors](#only-a-teammate-can-approve-a-shutdown-request) |

339| `A command-line deny rule cannot be handed to a teammate intact` | [Error tool](#command-line-deny-rule-cannot-be-handed-to-a-teammate) |

338| `Message too large for cross-session delivery` | [Tool errors](#message-too-large-for-cross-session-delivery) |340| `Message too large for cross-session delivery` | [Tool errors](#message-too-large-for-cross-session-delivery) |

339| `Too many messages to this session just now` | [Tool errors](#too-many-messages-to-this-session-just-now) |341| `Too many messages to this session just now` | [Tool errors](#too-many-messages-to-this-session-just-now) |

340| `Cross-session message was dropped at the recipient session's inbox` | [Tool errors](#cross-session-message-dropped-at-the-inbox) |342| `Cross-session message was dropped at the recipient session's inbox` | [Tool errors](#cross-session-message-dropped-at-the-inbox) |


375| `This conversation is already open in another running Claude session` | [Background session errors](#this-session-is-running-in-another-terminal) |377| `This conversation is already open in another running Claude session` | [Background session errors](#this-session-is-running-in-another-terminal) |

376| `This session's saved conversation is no longer on disk` | [Background session errors](#this-sessions-saved-conversation-is-no-longer-on-disk) |378| `This session's saved conversation is no longer on disk` | [Background session errors](#this-sessions-saved-conversation-is-no-longer-on-disk) |

377| `Bypass permissions was requested at launch and ignored` | [Bypass permissions ignored in a background session](https://code.claude.com/docs/id/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |379| `Bypass permissions was requested at launch and ignored` | [Bypass permissions ignored in a background session](https://code.claude.com/docs/id/permission-modes.md#bypass-permissions-ignored-in-a-background-session) |

378| `kept <id> — its worktree is still at <path>` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) |380| `kept <id> — its worktree is still at <path>` | [Kesalahan sesi latar belakang](#worktree-has-commits-that-are-not-pushed-anywhere) jika baris berikutnya dari pesan menyebutkan commit yang belum di-push, jika tidak, [Apa yang dihapus saat menghapus sesi](https://code.claude.com/docs/id/agent-view.md#what-deleting-a-session-removes) |

379| `kept <id> — <n> unpushed commits on <branch>` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) |381| `kept <id> — <n> unpushed commits on <branch>` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) |

380| `kept <id> — worktree has commits that are not pushed anywhere` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) |382| `kept <id> — worktree has commits that are not pushed anywhere` | [Background session errors](#worktree-has-commits-that-are-not-pushed-anywhere) |

381| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Background session errors](#terminal-host-process-died) |383| `terminal host process died — press Enter to restart` / `This session's terminal host process died` | [Background session errors](#terminal-host-process-died) |


2188 2190 

2189### Couldn't send feedback2191### Couldn't send feedback

2190 2192 

2191Pesan yang diawali `Couldn't send feedback` berarti laporan yang Anda kirimkan dari [dialog `/feedback`, `/bug`, atau `/share`](https://code.claude.com/docs/id/commands#all-commands), atau [draf umpan balik](https://code.claude.com/docs/id/tools-reference.md#sendfeedback-tool-behavior) yang berada dalam antrean, tidak terkirim. Ketika kalimat tentang organisasi Anda muncul setelah titik dua, organisasi Anda menolak umpan balik dan laporan yang sama akan mendapatkan jawaban yang sama.2193Pesan yang diawali `Couldn't send feedback` berarti layanan umpan balik tidak mengonfirmasi laporan yang Anda kirimkan dari [dialog `/feedback`, `/bug`, atau `/share`](https://code.claude.com/docs/id/commands#all-commands), atau [draf umpan balik](https://code.claude.com/docs/id/tools-reference.md#sendfeedback-tool-behavior) yang berada dalam antrean. Anggap laporan tersebut tidak diterima. Ketika kalimat tentang organisasi Anda muncul setelah titik dua, organisasi Anda menolak umpan balik dan laporan yang sama akan mendapatkan jawaban yang sama.

2192 2194 

2193Contoh pertama dari dua contoh ini adalah kegagalan jaringan dan yang kedua adalah penolakan organisasi:2195Contoh kedua dari dua contoh ini adalah penolakan organisasi:

2194 2196 

2195```text wrap theme={null}2197```text wrap theme={null}

2196Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.2198Couldn't send feedback (couldn't reach the service). If it keeps failing, you can file at https://github.com/anthropics/claude-code/issues instead.


2203* **Belum masuk**: pesan berlanjut dengan `: not signed in. Run /login, then retry.` Jalankan `/login`, lalu kirim lagi2205* **Belum masuk**: pesan berlanjut dengan `: not signed in. Run /login, then retry.` Jalankan `/login`, lalu kirim lagi

2204* **Penolakan organisasi Anda**: misalnya `: Feedback has not been enabled for your organization.` atau `: Feedback collection is not available for organizations with custom data retention policies.` Jika pesan menambahkan `To report a bug, open an issue`, lakukan di [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Draf dalam antrean tetap berada dalam antrean, dan Anda dapat [membuangnya](https://code.claude.com/docs/id/tools-reference.md#discard-or-keep-a-draft)2206* **Penolakan organisasi Anda**: misalnya `: Feedback has not been enabled for your organization.` atau `: Feedback collection is not available for organizations with custom data retention policies.` Jika pesan menambahkan `To report a bug, open an issue`, lakukan di [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues). Draf dalam antrean tetap berada dalam antrean, dan Anda dapat [membuangnya](https://code.claude.com/docs/id/tools-reference.md#discard-or-keep-a-draft)

2205* **Kredensial ditolak**: pesan berlanjut dengan `: the sign-in this session uses is not allowed to send feedback` atau `: the server did not accept the credentials this session uses`. Jalankan `/status` di prompt Claude Code untuk melihat login, token, atau kunci API mana yang dikirim sesi ini2207* **Kredensial ditolak**: pesan berlanjut dengan `: the sign-in this session uses is not allowed to send feedback` atau `: the server did not accept the credentials this session uses`. Jalankan `/status` di prompt Claude Code untuk melihat login, token, atau kunci API mana yang dikirim sesi ini

2206* **`(request timed out)` atau `(couldn't reach the service)` langsung setelah `Couldn't send feedback`**: ini adalah kegagalan jaringan. Kirim laporan atau draf dalam antrean lagi. Dialog menyimpan teks Anda, dan pesan untuk draf dalam antrean menyatakan `The draft is still queued.` Jika permintaan lain juga gagal, periksa koneksi jaringan Anda dan lihat [Unable to connect to API](#unable-to-connect-to-api). Jika terus gagal, ajukan laporan di [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)2208* **`(request timed out)` atau `(couldn't reach the service)` langsung setelah `Couldn't send feedback`**: kirim laporan atau draf dalam antrean lagi. Dialog menyimpan teks Anda, dan pesan untuk draf dalam antrean menyatakan `The draft is still queued.` Jika permintaan lain juga gagal, periksa koneksi jaringan Anda dan lihat [Unable to connect to API](#unable-to-connect-to-api). Jika terus gagal, ajukan laporan di [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)

2207* **`(server returned <status>)`, atau tanpa alasan, langsung setelah `Couldn't send feedback`**: status adalah kode respons layanan. Pesan layanan itu sendiri mengikutinya ketika layanan mengirimkannya, seperti dalam `(server returned 403: Access Forbidden)`. Jika terus gagal, ajukan laporan di [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)2209* **`(server returned <status>)`, atau tanpa alasan, langsung setelah `Couldn't send feedback`**: status adalah kode respons layanan. Pesan layanan itu sendiri mengikutinya ketika layanan mengirimkannya, seperti dalam `(server returned 403: Access Forbidden)`. Jika terus gagal, ajukan laporan di [github.com/anthropics/claude-code/issues](https://github.com/anthropics/claude-code/issues)

2208 2210 

2209Issue di github.com/anthropics/claude-code bersifat publik, jadi jangan sertakan kode, transkrip, dan apa pun yang bersifat rahasia saat Anda membukanya.2211Issue di github.com/anthropics/claude-code bersifat publik, jadi jangan sertakan kode, transkrip, dan apa pun yang bersifat rahasia saat Anda membukanya.

2210 2212 

2211Sebelum v2.1.281, setiap pengiriman gagal dengan pesan ini sekali Remote Control **Stop** atau pesan lintas-sesi mendesak telah tiba saat dialog terbuka. Di versi tersebut, tutup dialog, buka kembali, dan kirim lagi.2213Sebelum v2.1.281, setiap pengiriman gagal dengan pesan ini sekali Remote Control **Stop** atau pesan lintas-sesi mendesak telah tiba saat dialog terbuka. Di versi tersebut, tutup dialog, buka kembali, dan kirim lagi.

2212 2214 

2215### Feedback payload too large

2216 

2217Pesan ini di [layar tinjauan](https://code.claude.com/docs/id/tools-reference.md#review-and-edit-a-draft) untuk [draf umpan balik](https://code.claude.com/docs/id/tools-reference.md#sendfeedback-tool-behavior) berarti Claude Code tidak memiliki konfirmasi bahwa layanan menerima draf tersebut. Anggap draf tersebut tidak diterima. Draf tetap berada dalam antrean `/feedback` Anda, sehingga Anda dapat mengirimnya lagi.

2218 

2219```text wrap theme={null}

2220Feedback payload too large. Try again without the transcript, or shorten the details.

2221```

2222 

2223**Yang harus dilakukan:**

2224 

2225* Di layar tinjauan, atur **Send transcript** ke `no`, lalu kirim draf lagi. Memperpendek detail menghapus paling banyak 10 KB teks, yang merupakan seluruh kapasitas detail sebuah draf.

2226 

2213### MCP server connection timed out during a sleep or clock change2227### MCP server connection timed out during a sleep or clock change

2214 2228 

2215Pesan ini berarti koneksi ke [server MCP](https://code.claude.com/docs/id/mcp.md) mengalami timeout, dan Claude Code mendapati bahwa jam sistem Anda melompat maju selama upaya tersebut:2229Pesan ini berarti koneksi ke [server MCP](https://code.claude.com/docs/id/mcp.md) mengalami timeout, dan Claude Code mendapati bahwa jam sistem Anda melompat maju selama upaya tersebut:


3235 3249 

3236> [!NOTE]3250> [!NOTE]

3237>3251>

3238> Jika `claude ultrareview` mencetak `Error: Workspace not trusted`, lihat [Workspace not trusted when running claude ultrareview](#workspace-not-trusted-when-running-claude-ultrareview).3252> Jika `claude ultrareview` mencetak `Error: Workspace not trusted`, lihat [Workspace not trusted when running claude ultrareview](#workspace-not-trusted-when-running-claude-ultrareview) sebagai gantinya.

3239 3253 

3240Anda memulai mode server [Remote Control](https://code.claude.com/docs/id/remote-control.md) dengan `claude remote-control` atau alias `claude rc`-nya di direktori yang belum Anda percayai, dan perintah tersebut tidak dapat menanyakan apakah Anda ingin memercayainya. Misalnya, input standar atau output standar perintah bukan terminal karena salah satunya dialihkan atau di-pipe. Perintah keluar dengan kode 1:3254Anda memulai mode server [Remote Control](https://code.claude.com/docs/id/remote-control.md) dengan `claude remote-control` atau alias `claude rc`-nya di direktori yang belum Anda percayai, dan perintah tersebut tidak dapat menanyakan apakah Anda ingin memercayainya. Misalnya, input standar atau output standar perintah bukan terminal karena salah satunya dialihkan atau di-pipe. Perintah keluar dengan kode 1:

3241 3255 


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

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

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

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

3285 3299 

3286Sebelum v2.1.309, `claude ultrareview` tidak menerima `--trust-workspace`.3300Sebelum v2.1.309, `claude ultrareview` tidak menerima `--trust-workspace`.

3287 3301 


3476 3490 

3477### Server MCP menolak kapabilitas elicitation3491### Server MCP menolak kapabilitas elicitation

3478 3492 

3479Server MCP yang dibangun di atas Java MCP SDK 0.11.0 hingga 0.17.0 menolak koneksi. Versi-versi SDK tersebut tidak dapat mem-parse [mode elicitation](https://code.claude.com/docs/id/mcp.md#elicitation-modes-claude-code-declares) `form` dan `url` yang dideklarasikan Claude Code dalam handshake-nya. `claude mcp list` menampilkan server sebagai gagal dengan pesan ini sebagai pengganti kesalahan dari server itu sendiri:3493Server MCP yang dibangun di atas Java MCP SDK 0.11.0 hingga 0.17.0 menolak koneksi. Versi SDK tersebut tidak dapat mem-parse [mode elicitation](https://code.claude.com/docs/id/mcp.md#elicitation-modes-claude-code-declares) `form` dan `url` yang dideklarasikan Claude Code dalam handshake-nya. Pesannya berbunyi:

3480 3494 

3481```text theme={null}3495```text theme={null}

3482This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).3496This server (Java MCP SDK 0.17.0 or older) rejected Claude Code's elicitation capability. Set "bareElicitationCapability": true for it, or upgrade to Java MCP SDK 0.17.1+ (Spring AI 1.0.7+ or 1.1.6+).


3573 3587 

3574String serupa muncul sebelum perintah dijalankan sama sekali:3588String serupa muncul sebelum perintah dijalankan sama sekali:

3575 3589 

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

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

3578* `No shell command in <name> was run`: salah satu perintah `!` di file mengandung karakter kontrol mentah selain tab atau baris baru, sehingga tidak ada satu pun yang dijalankan. Lihat [cara menemukan dan menghapus karakter tersebut](#no-shell-command-was-run)3592* `No shell command in <name> was run`: salah satu perintah `!` di file mengandung karakter kontrol mentah selain tab atau baris baru, sehingga tidak ada satu pun yang dijalankan. Lihat [cara menemukan dan menghapus karakter tersebut](#no-shell-command-was-run)

3579 3593 

3580**Yang perlu dilakukan:**3594**Yang perlu dilakukan:**


3725 3739 

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

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

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

3729 3743 

3730**Yang perlu dilakukan:**3744**Yang perlu dilakukan:**

3731 3745 


4678* Jika rekan kerja masih berjalan, minta pemimpin di prompt-nya untuk men-shutdown rekan kerja tersebut, misalnya `Ask the researcher teammate to shut down`. Lihat [Shut down teammates](https://code.claude.com/docs/id/agent-teams.md#shut-down-teammates).4692* Jika rekan kerja masih berjalan, minta pemimpin di prompt-nya untuk men-shutdown rekan kerja tersebut, misalnya `Ask the researcher teammate to shut down`. Lihat [Shut down teammates](https://code.claude.com/docs/id/agent-teams.md#shut-down-teammates).

4679* Jika mantan rekan kerja yang Anda lanjutkan sendiri dengan `claude --resume` mendapatkan penolakan ini, tidak ada yang dikirim. Untuk mengakhiri sesi tersebut, jalankan `/exit` di prompt-nya.4693* Jika mantan rekan kerja yang Anda lanjutkan sendiri dengan `claude --resume` mendapatkan penolakan ini, tidak ada yang dikirim. Untuk mengakhiri sesi tersebut, jalankan `/exit` di prompt-nya.

4680 4694 

4695### A command-line deny rule cannot be handed to a teammate intact

4696 

4697Pesan ini berarti Claude Code tidak memulai rekan kerja [split-pane](https://code.claude.com/docs/id/agent-teams.md#choose-a-display-mode) di [tim agent](https://code.claude.com/docs/id/agent-teams.md) Anda. Claude Code meneruskan aturan penolakan baris perintah milik pemimpin ke rekan kerja split-pane melalui baris perintah rekan kerja itu sendiri, dan berhenti ketika rekan kerja akan membaca salah satu aturan tersebut secara berbeda:

4698 

4699```text wrap theme={null}

4700A command-line deny rule cannot be handed to a teammate intact, so the teammate would not enforce it — spawn aborted

4701```

4702 

4703**What to do:**

4704 

4705* Jalankan `/config` di sesi pemimpin dan atur **Teammate mode** ke `in-process`, lalu minta Claude memulai rekan kerja lagi. Anda tidak perlu menemukan aturan tersebut atau memulai ulang pemimpin. Rekan kerja in-process [berjalan di bawah aturan penolakan aktif milik pemimpin](https://code.claude.com/docs/id/agent-teams.md#permissions).

4706* Sesi berikutnya yang mengambil [`teammateMode`](https://code.claude.com/docs/id/settings-reference#teammatemode) dari pengaturan pengguna Anda juga memulai rekan kerja secara in-process, karena `/config` menyimpan pilihan tersebut di sana. Untuk kembali ke split pane di sesi berikutnya, atur **Teammate mode** ke `auto`, `tmux`, atau `iterm2`, mana pun yang Anda gunakan sebelumnya.

4707 

4681### Message too large for cross-session delivery4708### Message too large for cross-session delivery

4682 4709 

4683Pesan [lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) Claude ke sesi lain Anda di mesin ini terlalu panjang untuk dikirim. Claude Code menolaknya, dan sesi penerima tidak mendapat apa pun. Penolakan muncul dalam hasil tool sesi pengirim, bukan sebagai spanduk di terminal Anda. Penolakan ini menyebutkan kedua ukuran dan cara membuat pesan muat:4710Pesan [lintas sesi](https://code.claude.com/docs/id/cross-session-messaging.md) Claude ke sesi lain Anda di mesin ini terlalu panjang untuk dikirim. Claude Code menolaknya, dan sesi penerima tidak mendapat apa pun. Penolakan muncul dalam hasil tool sesi pengirim, bukan sebagai spanduk di terminal Anda. Penolakan ini menyebutkan kedua ukuran dan cara membuat pesan muat:


5115**Yang harus dilakukan:**5142**Yang harus dilakukan:**

5116 5143 

5117* Untuk menyimpan commit, dorong branch worktree, atau gabungkan ke dalam branch default yang diperiksa dalam checkout utama Anda, kemudian hapus sesi lagi5144* Untuk menyimpan commit, dorong branch worktree, atau gabungkan ke dalam branch default yang diperiksa dalam checkout utama Anda, kemudian hapus sesi lagi

5118* Untuk membuang commit, jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak pesan, atau tekan `Ctrl+X` dua kali pada baris sesi dalam tampilan agent lagi. Ini menghapus sesi dan worktree bersama dengan branch-nya, commit yang tidak didorong, dan perubahan yang belum di-commit. Jika worktree telah mendapatkan commit sejak penolakan, Claude Code menyimpannya lagi dan menampilkan status yang diperbarui5145* Untuk membuang commit, jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak pesan, atau tekan `Ctrl+X` dua kali pada baris sesi dalam tampilan agent lagi. Ini menghapus sesi dan worktree bersama dengan branch-nya, commit yang tidak didorong, dan perubahan yang belum di-commit. Jika penghapusan ditolak lagi, ikuti pesan yang baru.

5119* Ketika pesan mengatakan worktree juga dicatat oleh sesi selesai lain, menghapus lagi tidak membuangnya: dorong commit, kemudian hapus sesi lagi5146* Ketika pesan mengatakan worktree juga dicatat oleh sesi selesai lain, menghapus lagi tidak membuangnya: dorong commit, kemudian hapus sesi lagi

5120 5147 

5121Sebelum v2.1.268, `claude rm` menempatkan ringkasan commit pada baris `kept` itu sendiri. Ketika `claude rm` tidak dapat merangkum commit, baris `kept` berbunyi `worktree has commits that are not pushed anywhere` sebagai pengganti ringkasan.5148Sebelum v2.1.268, `claude rm` menempatkan ringkasan commit pada baris `kept` itu sendiri. Ketika `claude rm` tidak dapat merangkum commit, baris `kept` berbunyi `worktree has commits that are not pushed anywhere` sebagai pengganti ringkasan.

5122 5149 

5123Sebelum v2.1.260, pesan tidak menamai branch atau commit, dan menghapus lagi ditolak dengan cara yang sama: menghapus sesi tanpa mendorong berarti menghapus worktree sendiri dengan `git worktree remove --force <path>`, kemudian menjalankan `claude rm <id>` lagi.5150Sebelum v2.1.260, pesan tidak menamai branch atau commit, dan tidak ada cara untuk membuangnya. Anda tetap dapat menghapus sesi, dengan kehilangan perubahan yang belum di-commit tetapi tetap menyimpan branch dan commit. Jalankan `git worktree remove --force --force <path>` dengan jalur yang dicetak oleh penolakan, kemudian `claude rm <id>`. Git memerlukan `--force` dua kali untuk worktree yang terkunci.

5124 5151 

5125Sebelum v2.1.248, branch default yang diperiksa dalam checkout utama Anda tidak dihitung: branch yang sudah Anda gabungkan di sana masih memicu penolakan ini sampai commit-nya mencapai remote.5152Sebelum v2.1.248, branch default yang diperiksa dalam checkout utama Anda tidak dihitung: branch yang sudah Anda gabungkan di sana masih memicu penolakan ini sampai commit-nya mencapai remote.

5126 5153 

fast-mode.md +1 −1

Details

45* Ikon kecil `↯` muncul di samping prompt selama fast mode aktif45* Ikon kecil `↯` muncul di samping prompt selama fast mode aktif

46* Jalankan `/fast` lagi kapan saja untuk memeriksa apakah fast mode aktif atau tidak46* Jalankan `/fast` lagi kapan saja untuk memeriksa apakah fast mode aktif atau tidak

47 47 

48Opus 5.5 adalah default fast mode di Claude Code v2.1.280 dan yang lebih baru. Sebelum v2.1.280, fast mode secara default menggunakan Opus 5 sejak v2.1.219, dan Opus 4.8 pada v2.1.154 hingga v2.1.218.48Opus 5.5 adalah default fast mode di Claude Code v2.1.280 dan yang lebih baru. Sebelum v2.1.280, fast mode secara default menggunakan Opus 5 sejak v2.1.219.

49 49 

50Saat Anda menonaktifkan fast mode dengan `/fast` lagi, Anda tetap menggunakan Opus. Untuk beralih ke model lain, gunakan `/model`.50Saat Anda menonaktifkan fast mode dengan `/fast` lagi, Anda tetap menggunakan Opus. Untuk beralih ke model lain, gunakan `/model`.

51 51 

Details

248 248 

249> [!TIP]249> [!TIP]

250>250>

251> Jaga CLAUDE.md di bawah 200 baris. Pindahkan materi referensi ke skills, yang dimuat on demand. Untuk mendapatkan [proposal trim untuk CLAUDE.md yang diperiksa](https://code.claude.com/docs/id/memory.md#my-claude-md-is-too-large), jalankan `/doctor`.251> Jaga CLAUDE.md di bawah 200 baris. Pindahkan materi referensi ke skills, yang dimuat on demand. Untuk mendapatkan [usulan pemangkasan untuk CLAUDE.md yang di-commit ke repositori](https://code.claude.com/docs/id/memory.md#my-claude-md-is-too-large), jalankan `/doctor`.

252 252 

253**Skills**253**Skills**

254 254 

glossary.md +1 −1

Details

373 373 

374Bagaimana sesi mengetahui pekerjaan benar-benar selesai alih-alih menerima hasil yang tampak masuk akal. Anda memberi Claude pemeriksaan yang dapat dijalankan, seperti suite test, build, atau perbandingan screenshot, dan Claude melakukan iterasi sampai pemeriksaan lulus alih-alih berhenti setelah satu percobaan. Loop verifikasi adalah prasyarat untuk [`/goal`](https://code.claude.com/docs/id/goal), unattended runs, dan [dynamic workflows](https://code.claude.com/docs/id/workflows.md): tanpanya, satu-satunya hal yang memutuskan agent selesai adalah agent itu sendiri.374Bagaimana sesi mengetahui pekerjaan benar-benar selesai alih-alih menerima hasil yang tampak masuk akal. Anda memberi Claude pemeriksaan yang dapat dijalankan, seperti suite test, build, atau perbandingan screenshot, dan Claude melakukan iterasi sampai pemeriksaan lulus alih-alih berhenti setelah satu percobaan. Loop verifikasi adalah prasyarat untuk [`/goal`](https://code.claude.com/docs/id/goal), unattended runs, dan [dynamic workflows](https://code.claude.com/docs/id/workflows.md): tanpanya, satu-satunya hal yang memutuskan agent selesai adalah agent itu sendiri.

375 375 

376Pelajari lebih lanjut: [Berikan Claude cara untuk memverifikasi pekerjaannya](https://code.claude.com/docs/id/best-practices.md#give-claude-a-way-to-verify-its-work)376Pelajari lebih lanjut: [Berikan Claude pemeriksaan untuk dijalankan](https://code.claude.com/docs/id/best-practices.md#give-claude-a-check-to-run)

377 377 

378## W378## W

379 379 

Details

166| Model utama | `claude-opus-5-5` |166| Model utama | `claude-opus-5-5` |

167| Model kecil/cepat | `claude-sonnet-4-5@20250929` |167| Model kecil/cepat | `claude-sonnet-4-5@20250929` |

168 168 

169Sebelum v2.1.280, model utama di Google Cloud's Agent Platform default ke Opus 5 dan alias `opus` diselesaikan ke Opus 5 dari v2.1.219.

170 

169Tugas latar belakang seperti pembuatan judul sesi menggunakan model kecil/cepat, biasanya model kelas Haiku. Di Google Cloud's Agent Platform, Claude Code menggunakan model Sonnet default untuk tugas latar belakang karena Haiku mungkin tidak diaktifkan di setiap proyek atau wilayah. Dua pilihan mengubah model mana yang membawanya:171Tugas latar belakang seperti pembuatan judul sesi menggunakan model kecil/cepat, biasanya model kelas Haiku. Di Google Cloud's Agent Platform, Claude Code menggunakan model Sonnet default untuk tugas latar belakang karena Haiku mungkin tidak diaktifkan di setiap proyek atau wilayah. Dua pilihan mengubah model mana yang membawanya:

170 172 

171* Ketika Anda memilih model utama dengan `--model`, `ANTHROPIC_MODEL`, atau pengaturan `model`, tugas latar belakang menggunakan model tersebut. Ketika Claude Code memulai sesi pada model yang Anda atur dengan [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/id/model-config#set-a-default-model-for-new-sessions), tugas latar belakang menggunakan model tersebut juga. Mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` tanpa `ANTHROPIC_DEFAULT_SONNET_MODEL` juga dihitung sebagai pilihan, karena model Sonnet bawaan mungkin tidak diaktifkan dalam proyek yang mengarahkan Opus-nya sendiri.173* Ketika Anda memilih model utama dengan `--model`, `ANTHROPIC_MODEL`, atau pengaturan `model`, tugas latar belakang menggunakan model tersebut. Ketika Claude Code memulai sesi pada model yang Anda atur dengan [`ANTHROPIC_DEFAULT_MODEL`](https://code.claude.com/docs/id/model-config#set-a-default-model-for-new-sessions), tugas latar belakang menggunakan model tersebut juga. Mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` tanpa `ANTHROPIC_DEFAULT_SONNET_MODEL` juga dihitung sebagai pilihan, karena model Sonnet bawaan mungkin tidak diaktifkan dalam proyek yang mengarahkan Opus-nya sendiri.


175>177>

176> Model Opus memiliki harga per-token yang lebih tinggi daripada model Sonnet, jadi jika Anda tidak melakukan pin model utama, Anda ditagih dengan tarif Opus. Untuk menggunakan Sonnet 4.5 sebagai model utama, atur `ANTHROPIC_MODEL` ke ID model lengkapnya. Deployment yang mengarahkan default dengan `ANTHROPIC_DEFAULT_SONNET_MODEL` dan tidak mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` menjaga model Sonnet yang diarahkan sebagai default.178> Model Opus memiliki harga per-token yang lebih tinggi daripada model Sonnet, jadi jika Anda tidak melakukan pin model utama, Anda ditagih dengan tarif Opus. Untuk menggunakan Sonnet 4.5 sebagai model utama, atur `ANTHROPIC_MODEL` ke ID model lengkapnya. Deployment yang mengarahkan default dengan `ANTHROPIC_DEFAULT_SONNET_MODEL` dan tidak mengatur `ANTHROPIC_DEFAULT_OPUS_MODEL` menjaga model Sonnet yang diarahkan sebagai default.

177 179 

178Sebelum v2.1.280, model utama di Google Cloud's Agent Platform default ke Opus 5 dan alias `opus` diselesaikan ke Opus 5 dari v2.1.219. Pada v2.1.207 melalui v2.1.218, model utama di Google Cloud's Agent Platform default ke Opus 4.8 dan alias `opus` diselesaikan ke Opus 4.8.

179 

180Untuk menyesuaikan model lebih lanjut:180Untuk menyesuaikan model lebih lanjut:

181 181 

182```bash theme={null}182```bash theme={null}

headless.md +4 −3

Details

236 236 

237Jika sebagian pesan ini tidak ada di stream Anda, periksa versi Claude Code Anda terhadap versi minimum berikut:237Jika sebagian pesan ini tidak ada di stream Anda, periksa versi Claude Code Anda terhadap versi minimum berikut:

238 238 

239* **Penerusan di setiap kedalaman nesting**: v2.1.219 atau lebih baru

240* **Forked skill yang dimulai Claude dengan tool Skill dari percakapan utama**: v2.1.86 atau lebih baru untuk blok `tool_use` dan `tool_result`-nya, dan v2.1.265 atau lebih baru untuk pesan `user` pertamanya serta blok teks dan thinking-nya239* **Forked skill yang dimulai Claude dengan tool Skill dari percakapan utama**: v2.1.86 atau lebih baru untuk blok `tool_use` dan `tool_result`-nya, dan v2.1.265 atau lebih baru untuk pesan `user` pertamanya serta blok teks dan thinking-nya

241* **Pesan subagent yang dibuat oleh forked skill, dan pesan forked skill yang dimulai di dalam subagent atau forked skill lainnya**: v2.1.275 atau lebih baru240* **Pesan subagent yang dibuat oleh forked skill, dan pesan forked skill yang dimulai di dalam subagent atau forked skill lainnya**: v2.1.275 atau lebih baru

242* **Pesan forked skill yang Anda mulai dengan memberikan `/<skill-name>` sebagai prompt**: v2.1.287 atau lebih baru241* **Pesan forked skill yang Anda mulai dengan memberikan `/<skill-name>` sebagai prompt**: v2.1.287 atau lebih baru


285| Bidang | Tipe | Deskripsi |284| Bidang | Tipe | Deskripsi |

286| - | - | - |285| - | - | - |

287| `mcp_servers` | array | server MCP dalam sesi, masing-masing dengan `name` dan `status` |286| `mcp_servers` | array | server MCP dalam sesi, masing-masing dengan `name` dan `status` |

288| `mcp_server_errors` | array | entri `--mcp-config` yang dilewati oleh validasi konfigurasi, masing-masing dengan `name`, `type`, dan `message`. `type` adalah kategori lewati seperti `unknown_type`, `url_missing_type`, `invalid_config`, atau `reserved_name`; perlakukan nilai yang tidak Anda kenali sebagai lewati generik. Server yang terpengaruh tidak ada di `mcp_servers`. Kunci dihilangkan ketika tidak ada kesalahan, jadi gerbang CI dapat gagal pada array yang tidak kosong. Memerlukan Claude Code v2.1.219 atau lebih baru |287| `mcp_server_errors` | array | entri `--mcp-config` yang dilewati oleh validasi konfigurasi, masing-masing dengan `name`, `type`, dan `message`. `type` adalah kategori lewati seperti `unknown_type`, `url_missing_type`, `invalid_config`, atau `reserved_name`; perlakukan nilai yang tidak Anda kenali sebagai lewati generik. Server yang terpengaruh tidak ada di `mcp_servers`. Kunci dihilangkan ketika tidak ada kesalahan, jadi gerbang CI dapat gagal pada array yang tidak kosong |

289 288 

290Ketika Anda menjalankan perintah dengan tangan di terminal, Claude Code juga mencetak peringatan startup ke stderr, seperti `Warning: 1 MCP server skipped due to invalid config:`, diikuti oleh alasan untuk setiap entri yang dilewati. Ketika Anda mengarahkan stderr, atau ketika program seperti runner CI atau host SDK menangkapnya, Claude Code tidak mencetak peringatan dan melaporkan entri yang dilewati hanya di bidang `mcp_server_errors`. Peringatan memerlukan Claude Code v2.1.219 atau lebih baru.289Ketika Anda menjalankan perintah sendiri di terminal, Claude Code juga mencetak peringatan startup ke stderr, seperti `Warning: 1 MCP server skipped due to invalid config:`, diikuti oleh alasan untuk setiap entri yang dilewati.

290 

291Ketika Anda mengarahkan stderr, atau ketika program seperti runner CI atau host SDK menangkapnya, Claude Code tidak mencetak peringatan. Claude Code melaporkan entri yang dilewati hanya di bidang `mcp_server_errors`.

291 292 

292#### Lacak pemasangan plugin293#### Lacak pemasangan plugin

293 294 

hooks.md +5 −9

Details

679 679 

680Frontmatter hooks dalam skill proyek mengikuti [workspace trust rule yang sama seperti hooks dalam file pengaturan](#workspace-trust). Claude Code mendaftarkannya ketika Anda atau Claude memanggil skill, termasuk dalam run `-p` dalam folder yang belum Anda percayai.680Frontmatter hooks dalam skill proyek mengikuti [workspace trust rule yang sama seperti hooks dalam file pengaturan](#workspace-trust). Claude Code mendaftarkannya ketika Anda atau Claude memanggil skill, termasuk dalam run `-p` dalam folder yang belum Anda percayai.

681 681 

682Frontmatter hooks dalam subagent proyek berjalan hanya setelah Anda menerima [workspace trust dialog](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) untuk folder file agent berasal. Sesi `-p` tidak dihitung sebagai menerimanya. [Apa yang berjalan sebelum Anda mempercayai folder](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) membandingkan ini dengan rule file pengaturan, dan halaman subagents mencantumkan [cakupan mana yang dikecualikan](https://code.claude.com/docs/id/sub-agents.md#hooks-in-subagent-frontmatter). Sebelum v2.1.218, hooks ini dapat berjalan dari folder yang belum Anda percayai.682Frontmatter hooks dalam subagent proyek berjalan hanya setelah Anda menerima [workspace trust dialog](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) untuk folder asal file agent tersebut. Sesi `-p` tidak dihitung sebagai menerimanya. [Apa yang berjalan sebelum Anda mempercayai folder](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) membandingkan ini dengan rule file pengaturan, dan halaman subagents mencantumkan [cakupan mana yang dikecualikan](https://code.claude.com/docs/id/sub-agents.md#hooks-in-subagent-frontmatter).

683 683 

684#### Batasan pada hook skill684#### Batasan pada hook skill

685 685 


3196* **Hook command** (`type: "command"`): cetak path sebagai baris tidak kosong terakhir dari stdout. Claude Code menghapus kode escape ANSI sebelum membaca baris tersebut, sehingga banner startup shell yang dicetak sebelum `echo` Anda diabaikan. Alihkan output hook lainnya ke stderr.3196* **Hook command** (`type: "command"`): cetak path sebagai baris tidak kosong terakhir dari stdout. Claude Code menghapus kode escape ANSI sebelum membaca baris tersebut, sehingga banner startup shell yang dicetak sebelum `echo` Anda diabaikan. Alihkan output hook lainnya ke stderr.

3197* **Hook HTTP** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` di body respons.3197* **Hook HTTP** (`type: "http"`): kembalikan `{ "hookSpecificOutput": { "hookEventName": "WorktreeCreate", "worktreePath": "/absolute/path" } }` di body respons.

3198 3198 

3199Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan error.3199Jika hook gagal atau tidak menghasilkan path, pembuatan worktree gagal dengan error. Claude Code me-resolve path relatif terhadap direktori tempat hook dijalankan, dengan meringkas segmen `.` atau `..` di dalamnya. Jika path yang dihasilkan bukan direktori yang dapat dimasuki Claude Code, sesi mencetak error yang menyebutkan path tersebut dan keluar dengan kode 1.

3200 3200 

3201Claude Code me-resolve path relatif terhadap direktori tempat hook dijalankan, dengan meringkas segmen `.` atau `..` di dalamnya. Jika path yang dihasilkan bukan direktori yang dapat dimasuki Claude Code, sesi mencetak error yang menyebutkan path tersebut dan keluar dengan kode 1.3201Claude Code menolak path absolut yang berisi segmen `.` atau `..`, serta path apa pun yang melewati symlink di bawah root repositori. Error menyebutkan komponen yang ditolak. Symlink yang di-commit ke repositori dapat mengalihkan worktree ke luar repositori. Kembalikan path yang dinormalisasi dan tidak melewati symlink di dalam repositori.

3202 

3203Claude Code menolak path absolut yang berisi segmen `.` atau `..`, dan path apa pun yang melewati symlink di bawah root repositori, karena symlink yang di-commit ke repositori dapat mengalihkan worktree ke luar repositori. Error tersebut menyebutkan komponen yang ditolak. Kembalikan path yang sudah dinormalisasi dan tidak melewati symlink di dalam repositori. Sebelum v2.1.216, pembuatan worktree mengikuti path dari hook tanpa pemeriksaan ini.

3204 3202 

3205### WorktreeRemove3203### WorktreeRemove

3206 3204 


3228* **Hook keluar dengan 0**: worktree dianggap telah dihapus. Claude Code tidak membaca apa pun lagi dari hook, jadi pastikan hook Anda telah menghapus direktori tersebut.3226* **Hook keluar dengan 0**: worktree dianggap telah dihapus. Claude Code tidak membaca apa pun lagi dari hook, jadi pastikan hook Anda telah menghapus direktori tersebut.

3229* **Hook keluar dengan non-zero**: penghapusan gagal jika direktori di `worktree_path` masih ada setelahnya, dan worktree tetap ada di disk tanpa fallback git. Hook yang menghapus direktori sebelum keluar dengan non-zero dianggap telah menghapus. Untuk cara kegagalan dilaporkan, lihat [input WorktreeRemove](#worktreeremove-input).3227* **Hook keluar dengan non-zero**: penghapusan gagal jika direktori di `worktree_path` masih ada setelahnya, dan worktree tetap ada di disk tanpa fallback git. Hook yang menghapus direktori sebelum keluar dengan non-zero dianggap telah menghapus. Untuk cara kegagalan dilaporkan, lihat [input WorktreeRemove](#worktreeremove-input).

3230 3228 

3231Claude Code tidak pernah menghapus branch milik worktree yang dibuat hook, karena Claude Code hanya mengetahui path yang dikembalikan oleh hook WorktreeCreate Anda. Jika hook WorktreeCreate Anda membuat branch, hapus branch tersebut di hook WorktreeRemove Anda.3229Claude Code tidak pernah menghapus branch milik worktree yang dibuat hook, karena Claude Code hanya mengetahui path yang dikembalikan hook WorktreeCreate Anda. Jika hook WorktreeCreate Anda membuat branch, hapus branch tersebut di hook WorktreeRemove Anda. Claude Code membuang [field output JSON](#json-output) hook WorktreeRemove, seperti `systemMessage` dan `continue`.

3232 

3233Claude Code membuang [field output JSON](#json-output) hook WorktreeRemove, seperti `systemMessage` dan `continue`.

3234 3230 

3235Untuk penghapusan sesi latar belakang, Claude Code memverifikasi path worktree yang tersimpan sebelum menjalankan hook dan menolak path yang merupakan symlink atau melewati symlink di bawah root repositori. Pada jalur tersebut, hook berjalan untuk worktree yang masih berisi file hanya ketika Anda mengonfirmasi penghapusan di [agent view](https://code.claude.com/docs/id/agent-view.md#what-deleting-a-session-removes); untuk worktree seperti itu, [`claude rm`](https://code.claude.com/docs/id/agent-view#manage-sessions-from-the-shell) justru menyimpan sesi dan worktree. Sebelum v2.1.216, hook berjalan pada path yang tersimpan tanpa pemeriksaan ini.3231Untuk penghapusan sesi latar belakang, Claude Code memverifikasi path worktree yang tersimpan sebelum menjalankan hook, dan menolak path yang merupakan symlink atau melewati symlink di bawah root repositori. Pada jalur tersebut, hook berjalan untuk worktree yang masih berisi file hanya ketika Anda mengonfirmasi penghapusan di [agent view](https://code.claude.com/docs/id/agent-view.md#what-deleting-a-session-removes). Untuk worktree seperti itu, [`claude rm`](https://code.claude.com/docs/id/agent-view#manage-sessions-from-the-shell) justru mempertahankan sesi dan worktree.

3236 3232 

3237Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` dalam input hook. Contoh ini membaca path tersebut dan menghapus direktorinya:3233Claude Code meneruskan path yang dikembalikan oleh WorktreeCreate sebagai `worktree_path` dalam input hook. Contoh ini membaca path tersebut dan menghapus direktorinya:

3238 3234 

Details

174 174 

175## Bekerja secara efektif dengan Claude Code175## Bekerja secara efektif dengan Claude Code

176 176 

177Tips ini membantu Anda mendapatkan hasil yang lebih baik dari Claude Code. Untuk informasi lebih lanjut tentang prompt spesifik, verifikasi, dan perencanaan, lihat [Best practices](https://code.claude.com/docs/id/best-practices.md).177Tips ini membantu Anda mendapatkan hasil yang lebih baik dari Claude Code. Untuk informasi lebih lanjut tentang prompt spesifik, verifikasi, dan aturan yang layak ditegakkan alih-alih diminta melalui prompt, lihat [Praktik terbaik](https://code.claude.com/docs/id/best-practices.md).

178 178 

179### Minta bantuan Claude Code179### Minta bantuan Claude Code

180 180 

Details

92| `/` di awal | Perintah atau skill | Lihat [perintah](#commands) dan [skills](https://code.claude.com/docs/id/skills.md) |92| `/` di awal | Perintah atau skill | Lihat [perintah](#commands) dan [skills](https://code.claude.com/docs/id/skills.md) |

93| `!` di awal | Mode shell | Jalankan perintah secara langsung, tambahkan outputnya ke sesi, dan biarkan Claude meresponsnya |93| `!` di awal | Mode shell | Jalankan perintah secara langsung, tambahkan outputnya ke sesi, dan biarkan Claude meresponsnya |

94| `@` | Penyebutan jalur file | Picu pelengkapan otomatis jalur file. Dalam sesi dengan [cross-session messaging](https://code.claude.com/docs/id/cross-session-messaging.md#message-another-session), ketika Anda mengetik setidaknya satu huruf setelah `@`, Claude Code juga menyarankan sesi live lain Anda di mesin ini, sehingga Anda dapat memberi tahu Claude untuk mengirim pesan ke yang Anda pilih. Memerlukan Claude Code v2.1.232 atau yang lebih baru |94| `@` | Penyebutan jalur file | Picu pelengkapan otomatis jalur file. Dalam sesi dengan [cross-session messaging](https://code.claude.com/docs/id/cross-session-messaging.md#message-another-session), ketika Anda mengetik setidaknya satu huruf setelah `@`, Claude Code juga menyarankan sesi live lain Anda di mesin ini, sehingga Anda dapat memberi tahu Claude untuk mengirim pesan ke yang Anda pilih. Memerlukan Claude Code v2.1.232 atau yang lebih baru |

95| `:` | Kode shortcode emoji | Ketik `:name:` lengkap untuk menyisipkan emoji, atau dua atau lebih karakter untuk saran. Lihat [Kode shortcode emoji](#emoji-shortcodes). Memerlukan Claude Code v2.1.217 atau yang lebih baru |95| `:` | Kode shortcode emoji | Ketik `:name:` lengkap untuk menyisipkan emoji, atau dua atau lebih karakter untuk saran. Lihat [Kode shortcode emoji](#emoji-shortcodes) |

96| `?` pada input kosong | Alihkan panel bantuan pintasan | Mengetik `?` ketika input sudah berisi teks menyisipkan karakter |96| `?` pada input kosong | Alihkan panel bantuan pintasan | Mengetik `?` ketika input sudah berisi teks menyisipkan karakter |

97 97 

98### Penampil transkrip98### Penampil transkrip


197 197 

198> [!NOTE]198> [!NOTE]

199>199>

200> Dalam mode NORMAL vim, jika kursor berada di awal atau akhir input dan tidak dapat bergerak lebih jauh, `j`/`k` dan `↑`/`↓` menavigasi riwayat perintah sebagai gantinya. `←` pada prompt kosong membuka [tampilan agen](https://code.claude.com/docs/id/agent-view.md) dari mode NORMAL serta INSERT; sebelum v2.1.219, `←` pada prompt kosong tidak melakukan apa pun dalam mode NORMAL.200> Dalam mode NORMAL vim, jika kursor berada di awal atau akhir input dan tidak dapat bergerak lebih jauh, `j`/`k` dan `↑`/`↓` menavigasi riwayat perintah sebagai gantinya. `←` pada prompt kosong membuka [tampilan agent](https://code.claude.com/docs/id/agent-view.md) dari mode NORMAL serta INSERT.

201 201 

202### Pengeditan (mode NORMAL)202### Pengeditan (mode NORMAL)

203 203 


396Claude Code menjalankan beberapa perintah segera setelah Anda mengirimkannya alih-alih mengantrekannya, di antaranya `/model`, `/effort`, dan `/fast`. Masing-masing dari ketiga perintah mengubah pengaturan: model, tingkat effort, atau fast mode. Apakah Claude Code menerapkan pengaturan baru ke giliran yang sudah dikerjakan Claude, atau hanya dari giliran Anda berikutnya, berbeda menurut perintah:396Claude Code menjalankan beberapa perintah segera setelah Anda mengirimkannya alih-alih mengantrekannya, di antaranya `/model`, `/effort`, dan `/fast`. Masing-masing dari ketiga perintah mengubah pengaturan: model, tingkat effort, atau fast mode. Apakah Claude Code menerapkan pengaturan baru ke giliran yang sudah dikerjakan Claude, atau hanya dari giliran Anda berikutnya, berbeda menurut perintah:

397 397 

398* [`/model`](https://code.claude.com/docs/id/model-config#setting-your-model): setelah Anda mengonfirmasi [peringatan cache](https://code.claude.com/docs/id/prompt-caching.md#switching-models), jika Claude Code menampilkannya, Claude Code menerapkan perubahan Anda ke permintaan berikutnya yang dibuat dalam giliran itu398* [`/model`](https://code.claude.com/docs/id/model-config#setting-your-model): setelah Anda mengonfirmasi [peringatan cache](https://code.claude.com/docs/id/prompt-caching.md#switching-models), jika Claude Code menampilkannya, Claude Code menerapkan perubahan Anda ke permintaan berikutnya yang dibuat dalam giliran itu

399* [`/effort`](https://code.claude.com/docs/id/model-config#adjust-effort-level): setelah Anda mengonfirmasi [peringatan cache](https://code.claude.com/docs/id/prompt-caching.md#changing-effort-level), jika Claude Code menampilkannya, Claude Code menerapkan perubahan Anda ke permintaan berikutnya yang dibuat dalam giliran itu399* `/effort`: pesan berikutnya yang Anda kirim berjalan pada tingkat yang baru. Untuk [memulainya dalam giliran yang sudah dikerjakan Claude](https://code.claude.com/docs/id/model-config.md#when-a-new-effort-level-starts), antrekan pesan saat Claude menjalankan panggilan tool

400* [`/fast`](https://code.claude.com/docs/id/fast-mode#toggle-fast-mode): Claude Code mempertahankan pengaturan fast mode yang aktif saat giliran dimulai, jadi perubahan kecepatan Anda berlaku dari giliran Anda berikutnya. Jika model saat ini Anda tidak mendukung fast mode, mengaktifkannya juga [beralih model Anda](https://code.claude.com/docs/id/prompt-caching.md#turning-on-fast-mode), dan Claude Code menggunakan model baru dari permintaan berikutnya dalam giliran itu400* [`/fast`](https://code.claude.com/docs/id/fast-mode#toggle-fast-mode): Claude Code mempertahankan pengaturan fast mode yang aktif saat giliran dimulai, jadi perubahan kecepatan Anda berlaku dari giliran Anda berikutnya. Jika model saat ini Anda tidak mendukung fast mode, mengaktifkannya juga [beralih model Anda](https://code.claude.com/docs/id/prompt-caching.md#turning-on-fast-mode), dan Claude Code menggunakan model baru dari permintaan berikutnya dalam giliran itu

401 401 

402### Pindahkan sesi ke latar belakang dengan pesan yang antri402### Pindahkan sesi ke latar belakang dengan pesan yang antri


513 513 

514## Emoji shortcodes514## Emoji shortcodes

515 515 

516Ketik `:` diikuti dengan emoji shortcode dalam input prompt untuk menyisipkan emoji. Memerlukan Claude Code v2.1.217 atau lebih baru.516Ketik `:` diikuti dengan emoji shortcode dalam input prompt untuk menyisipkan emoji.

517 517 

518* Ketik shortcode lengkap seperti `:heart:` dan Claude Code menggantinya dengan ❤️ segera setelah Anda mengetik `:` penutup518* Ketik shortcode lengkap seperti `:heart:` dan Claude Code menggantinya dengan ❤️ segera setelah Anda mengetik `:` penutup

519* Ketik `:` ditambah setidaknya dua karakter dari nama, seperti `:hea`, untuk membuka popup saran, kemudian tekan `Tab` atau `Enter` untuk menyisipkan emoji yang disorot519* Ketik `:` ditambah setidaknya dua karakter dari nama, seperti `:hea`, untuk membuka popup saran, kemudian tekan `Tab` atau `Enter` untuk menyisipkan emoji yang disorot

Details

22| :- | :- |22| :- | :- |

23| Muat hanya konvensi untuk kode yang Anda sentuh, bukan satu file root yang mencakup setiap subsistem | File [CLAUDE.md](#layer-claude-md-files-by-directory) per-direktori |23| Muat hanya konvensi untuk kode yang Anda sentuh, bukan satu file root yang mencakup setiap subsistem | File [CLAUDE.md](#layer-claude-md-files-by-directory) per-direktori |

24| Kecualikan file CLAUDE.md untuk paket yang tidak pernah Anda kerjakan | [`claudeMdExcludes`](#exclude-irrelevant-claude-md-files) |24| Kecualikan file CLAUDE.md untuk paket yang tidak pernah Anda kerjakan | [`claudeMdExcludes`](#exclude-irrelevant-claude-md-files) |

25| Blokir Claude dari membuka output build, kode yang dihasilkan, dan dependensi yang di-vendor | Aturan deny [Read](#block-reads-of-generated-and-vendored-code) di `permissions.deny` |25| Memblokir Claude agar tidak membuka output build, kode yang dihasilkan, dan dependensi yang di-vendor | [Aturan deny `Read`](#block-reads-of-generated-and-vendored-code) di `permissions.deny` |

26| Temukan definisi simbol atau pemanggil melalui language server bukan memindai file | Plugin [code intelligence](#reduce-file-reads-with-code-intelligence) |26| Temukan definisi simbol atau pemanggil melalui language server bukan memindai file | Plugin [code intelligence](#reduce-file-reads-with-code-intelligence) |

27| Periksa hanya direktori yang dibutuhkan tugas ketika Claude membuat worktree | [`worktree.sparsePaths`](#check-out-only-the-directories-you-need) |27| Periksa hanya direktori yang dibutuhkan tugas ketika Claude membuat worktree | [`worktree.sparsePaths`](#check-out-only-the-directories-you-need) |

28| Baca dan edit paket sibling atau repository lain dari sesi yang sama | [`--add-dir`](#grant-access-across-packages-or-repositories) atau `additionalDirectories` |28| Baca dan edit paket sibling atau repository lain dari sesi yang sama | [`--add-dir`](#grant-access-across-packages-or-repositories) atau `additionalDirectories` |


31 31 

32> [!TIP]32> [!TIP]

33>33>

34> Untuk teknik alur kerja yang menjaga konteks tetap kecil di repository apa pun, seperti [menjalankan eksplorasi di subagent](https://code.claude.com/docs/id/best-practices.md#use-subagents-for-investigation) sehingga pembacaan file tetap keluar dari percakapan utama, lihat [Best practices untuk Claude Code](https://code.claude.com/docs/id/best-practices.md). Untuk meluncurkan konfigurasi baseline ke setiap pengembang di organisasi Anda, lihat [Siapkan Claude Code untuk organisasi Anda](https://code.claude.com/docs/id/admin-setup.md).34> Untuk teknik alur kerja yang menjaga konteks tetap kecil di repositori apa pun, lihat [Praktik terbaik untuk Claude Code](https://code.claude.com/docs/id/best-practices.md). Salah satu contohnya adalah [menjalankan eksplorasi di subagent](https://code.claude.com/docs/id/best-practices.md#know-what-subagents-cost) sehingga pembacaan file tetap berada di luar percakapan utama. Untuk meluncurkan konfigurasi baseline ke setiap pengembang di organisasi Anda, lihat [Siapkan Claude Code untuk organisasi Anda](https://code.claude.com/docs/id/admin-setup.md).

35 35 

36### The example monorepo36### The example monorepo

37 37 


50 .claude/skills/50 .claude/skills/

51 src/51 src/

52 shared/52 shared/

53 CLAUDE.md # instruksi perpustakaan bersama53 CLAUDE.md # instruksi pustaka bersama

54 src/54 src/

55```55```

56 56 


158Aturan deny dapat mencakup semua orang yang bekerja di repository, hanya Anda, atau setiap sesi di mesin, tergantung pada file pengaturan mana yang Anda masukkan:158Aturan deny dapat mencakup semua orang yang bekerja di repository, hanya Anda, atau setiap sesi di mesin, tergantung pada file pengaturan mana yang Anda masukkan:

159 159 

160* **Semua orang yang bekerja di repository**: komitkan aturan ke `.claude/settings.json`, di root repository jika Anda memulai Claude di sana, atau di `.claude/` setiap paket jika Anda memulai dari subdirektori. Seperti pengaturan proyek lainnya di halaman ini, file itu tidak diwariskan dari direktori induk.160* **Semua orang yang bekerja di repository**: komitkan aturan ke `.claude/settings.json`, di root repository jika Anda memulai Claude di sana, atau di `.claude/` setiap paket jika Anda memulai dari subdirektori. Seperti pengaturan proyek lainnya di halaman ini, file itu tidak diwariskan dari direktori induk.

161* **Hanya Anda**: gunakan `.claude/settings.local.json` di root repository, yang dimuat di setiap sesi CLI di dalam repository terlepas dari direktori awal, kecuali dalam kasus di mana Claude Code [tidak menggunakan root repository](https://code.claude.com/docs/id/settings.md#where-claude-code-looks-for-each-file), seperti di Windows. Pola relatif seperti contoh `Read(./**/vendor/**/*)` masih [jangkar di direktori kerja saat ini sesi](https://code.claude.com/docs/id/permissions.md#read-and-edit) daripada root repository, jadi jika Anda memulai sesi dari subdirektori, tulis aturan di file ini sebagai jalur absolut `//`, seperti `Read(//absolute/path/to/repo/**/vendor/**/*)`. Sebelum v2.1.211, `.claude/settings.local.json` juga dimuat hanya dari direktori awal.161* **Hanya Anda**: gunakan `.claude/settings.local.json` di root repositori. File ini dimuat di setiap sesi CLI di dalam repositori terlepas dari direktori awal, kecuali dalam kasus di mana Claude Code [tidak menggunakan root repositori](https://code.claude.com/docs/id/settings.md#where-claude-code-looks-for-each-file), seperti di Windows.

162 

163 Pola relatif seperti contoh `Read(./**/vendor/**/*)` tetap [berjangkar di direktori kerja saat ini dari sesi](https://code.claude.com/docs/id/permissions.md#read-and-edit) alih-alih root repositori. Jika Anda memulai sesi dari subdirektori, tulis aturan di file ini sebagai jalur absolut `//`, seperti `Read(//absolute/path/to/repo/**/vendor/**/*)`.

162* **Semua orang, ditegakkan di setiap sesi**: atur aturan di [managed settings](https://code.claude.com/docs/id/managed-settings.md), yang tidak dapat ditimpa oleh pengaturan user dan project.164* **Semua orang, ditegakkan di setiap sesi**: atur aturan di [managed settings](https://code.claude.com/docs/id/managed-settings.md), yang tidak dapat ditimpa oleh pengaturan user dan project.

163 165 

164Contoh di bawah memblokir artefak build dan SDK yang di-vendor. Pola direktorinya berakhir dengan `/**/*` daripada `/**` sehingga setiap aturan mencakup segalanya di dalam direktori tetapi bukan direktori itu sendiri. Claude kemudian masih dapat mendaftar direktori itu atau mengubah ke dalamnya, misalnya dengan `ls dist` atau `cd build`.166Contoh di bawah memblokir artefak build dan SDK yang di-vendor. Pola direktorinya berakhir dengan `/**/*` daripada `/**` sehingga setiap aturan mencakup segalanya di dalam direktori tetapi bukan direktori itu sendiri. Claude kemudian masih dapat mendaftar direktori itu atau mengubah ke dalamnya, misalnya dengan `ls dist` atau `cd build`.


376Pindahkan konvensi dan konten referensi keluar dari CLAUDE.md yang selalu dimuat dan ke mekanisme yang dimuat sesuai permintaan:378Pindahkan konvensi dan konten referensi keluar dari CLAUDE.md yang selalu dimuat dan ke mekanisme yang dimuat sesuai permintaan:

377 379 

378* [Skills](https://code.claude.com/docs/id/skills.md): materi referensi Claude dimuat hanya ketika relevan dengan tugas380* [Skills](https://code.claude.com/docs/id/skills.md): materi referensi Claude dimuat hanya ketika relevan dengan tugas

379* [Plugins](https://code.claude.com/docs/id/plugins/overview.md): bundel terversi dari skills, hooks, dan perintah yang tim platform miliki secara terpusat381* [Plugins](https://code.claude.com/docs/id/plugins/overview.md): bundel terversi dari skills, hooks, dan perintah yang tim platform miliki secara terpusat dan dapat [diinstal untuk semua orang melalui pengaturan terkelola](https://code.claude.com/docs/id/plugins/org.md#pre-install-and-require-plugins)

380* [MCP servers](https://code.claude.com/docs/id/mcp.md): jika organisasi Anda sudah menjalankan pencarian kode atau indeks RAG di atas repository, eksposnya sebagai alat MCP sehingga Claude menanyainya bukan membaca file secara langsung382* [MCP servers](https://code.claude.com/docs/id/mcp.md): jika organisasi Anda sudah menjalankan pencarian kode atau indeks RAG di atas repository, eksposnya sebagai alat MCP sehingga Claude menanyainya bukan membaca file secara langsung

381 383 

382Lihat [pengaturan yang dikelola server atau endpoint](https://code.claude.com/docs/id/server-managed-settings.md#choose-between-server-managed-and-endpoint-managed-settings) untuk bagaimana tim platform dapat memberlakukan ini secara terpusat.384Lihat [pengaturan yang dikelola server atau endpoint](https://code.claude.com/docs/id/server-managed-settings.md#choose-between-server-managed-and-endpoint-managed-settings) untuk bagaimana tim platform dapat memberlakukan ini secara terpusat.


465Dua teknik membantu menjaga perubahan lintas-paket konsisten:467Dua teknik membantu menjaga perubahan lintas-paket konsisten:

466 468 

467* **Berikan Claude seluruh perubahan dalam satu sesi**: menyerahkan edit bersama dan situs panggilannya bersama-sama menjaga keputusan di balik setiap edit konsisten, bukan menurunkan mereka per paket469* **Berikan Claude seluruh perubahan dalam satu sesi**: menyerahkan edit bersama dan situs panggilannya bersama-sama menjaga keputusan di balik setiap edit konsisten, bukan menurunkan mereka per paket

468* **Rencanakan sebelum mengedit**: [rencanakan terlebih dahulu](https://code.claude.com/docs/id/best-practices.md#explore-first-then-plan-then-code) dalam [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode), dan Claude menulis rencana ke file. Sesi lintas-paket panjang [mengompak konteksnya](https://code.claude.com/docs/id/context-window.md#what-survives-compaction) sepanjang jalan. Claude Code menyuntikkan kembali file rencana setelah setiap compaction, sehingga rencana bertahan di mana riwayat percakapan mungkin tidak470* **Rencanakan sebelum mengedit**: rencanakan terlebih dahulu dalam [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode), dan Claude menulis rencana ke file. Sesi lintas-paket panjang [mengompak konteksnya](https://code.claude.com/docs/id/context-window.md#what-survives-compaction) sepanjang jalan. Claude Code menyuntikkan kembali file rencana setelah setiap compaction, sehingga rencana bertahan di mana riwayat percakapan mungkin tidak

469 471 

470## Langkah berikutnya472## Langkah berikutnya

471 473 

Details

361 361 

362Gateway membawa permintaan model, tetapi Claude Code juga mengirim lalu lintas latar belakang yang tidak penting di luar jalur gateway, ke Anthropic dan ke layanan pihak ketiga seperti GitHub: pemeriksaan versi, telemetri, catatan rilis, dan permintaan serupa. Di jaringan yang hanya memungkinkan egress ke gateway, permintaan ini gagal dan dapat muncul sebagai koneksi yang diblokir dalam pemantauan egress Anda.362Gateway membawa permintaan model, tetapi Claude Code juga mengirim lalu lintas latar belakang yang tidak penting di luar jalur gateway, ke Anthropic dan ke layanan pihak ketiga seperti GitHub: pemeriksaan versi, telemetri, catatan rilis, dan permintaan serupa. Di jaringan yang hanya memungkinkan egress ke gateway, permintaan ini gagal dan dapat muncul sebagai koneksi yang diblokir dalam pemantauan egress Anda.

363 363 

364Claude Code melampirkan kredensial ke permintaan telemetri atau metrik penggunaan hanya ketika permintaan pergi ke host yang kredensial miliknya. Sementara `ANTHROPIC_BASE_URL` menunjuk ke gateway, Claude Code mengirim acara telemetrinya ke Anthropic tanpa kredensial gateway Anda. Dengan [variabel kredensial](#set-the-credential-variable) atau `apiKeyHelper` juga aktif, Claude Code tidak melaporkan metrik penggunaan ke [dasbor analitik](https://code.claude.com/docs/id/analytics.md#access-analytics-for-api-customers) Konsol. Sebelum v2.1.246, Claude Code dapat melampirkan kredensial gateway ke permintaan telemetri dan metrik penggunaan yang ditujukan untuk host Anthropic; permintaan model selalu pergi ke gateway dengan kredensial yang diharapkan gateway.

365 

366Untuk mematikan lalu lintas itu, atur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` bersama variabel gateway, di ekspor shell yang sama atau blok `env` file pengaturan:364Untuk mematikan lalu lintas itu, atur `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1` bersama variabel gateway, di ekspor shell yang sama atau blok `env` file pengaturan:

367 365 

368**Bash atau Zsh**366**Bash atau Zsh**

mcp.md +9 −3

Details

84 84 

85Hanya aplikasi host SDK, seperti aplikasi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/mcp.md) atau [aplikasi desktop](https://code.claude.com/docs/id/desktop.md), yang dapat mendaftarkan server in-process `"type": "sdk"`. Claude Code melewati entri `"type": "sdk"` di `.mcp.json`, `~/.claude.json`, atau pengaturan dan melaporkan `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.85Hanya aplikasi host SDK, seperti aplikasi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/mcp.md) atau [aplikasi desktop](https://code.claude.com/docs/id/desktop.md), yang dapat mendaftarkan server in-process `"type": "sdk"`. Claude Code melewati entri `"type": "sdk"` di `.mcp.json`, `~/.claude.json`, atau pengaturan dan melaporkan `Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register`.

86 86 

87Dalam eksekusi `--output-format stream-json`, Claude Code juga melaporkan entri `--mcp-config` yang dilewati di [field `mcp_server_errors`](https://code.claude.com/docs/id/headless#stream-responses) pada event `system/init`, sehingga skrip dapat mendeteksi bahwa server tersebut tidak pernah dimuat. Ini memerlukan Claude Code v2.1.219 atau yang lebih baru.87> [!NOTE]

88>

89> Dalam eksekusi `--output-format stream-json`, Claude Code juga melaporkan entri `--mcp-config` yang dilewati di [field `mcp_server_errors`](https://code.claude.com/docs/id/headless#stream-responses) pada event `system/init`, sehingga skrip dapat mendeteksi bahwa server tersebut tidak pernah dimuat.

88 90 

89### Opsi 2: Menambahkan server SSE jarak jauh91### Opsi 2: Menambahkan server SSE jarak jauh

90 92 


250 252 

251Status dalam daftar berikut melaporkan keputusan konfigurasi, bukan upaya koneksi, sehingga Claude Code mencetaknya tanpa terhubung ke server:253Status dalam daftar berikut melaporkan keputusan konfigurasi, bukan upaya koneksi, sehingga Claude Code mencetaknya tanpa terhubung ke server:

252 254 

253* ``⏸ Pending approval (run `claude` to approve)``: server dengan cakupan proyek dari `.mcp.json` yang belum Anda setujui. Claude Code menampilkannya di `claude mcp list` maupun `claude mcp get <name>`. Jalankan `claude` secara interaktif untuk meninjau dan menyetujuinya.255* ``⏸ Pending approval (run `claude` to approve)``: server bercakupan proyek dari `.mcp.json` yang belum Anda setujui. Claude Code menampilkannya di `claude mcp list` dan `claude mcp get <name>`. Jalankan `claude` secara interaktif untuk meninjau dan menyetujuinya.

254* `✘ Rejected (see disabledMcpjsonServers in settings)`: server `.mcp.json` yang ditolak oleh entri [`disabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#disabledmcpjsonservers). Claude Code hanya menampilkannya di `claude mcp get <name>`.256* `✘ Rejected (see disabledMcpjsonServers in settings)`: server `.mcp.json` yang ditolak oleh entri [`disabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#disabledmcpjsonservers). Claude Code hanya menampilkannya di `claude mcp get <name>`.

255* `⊘ Disabled for this project (re-enable via /mcp)`: server yang disebutkan dalam daftar [`disabledMcpServers`](#disable-a-server-without-removing-it) proyek. Claude Code menampilkannya di `claude mcp list` maupun `claude mcp get <name>`. Aktifkan kembali server dari panel `/mcp`.257* `⊘ Disabled for this project (re-enable via /mcp)`: server yang disebutkan dalam daftar [`disabledMcpServers`](#disable-a-server-without-removing-it) proyek. Claude Code menampilkannya di `claude mcp list` maupun `claude mcp get <name>`. Aktifkan kembali server dari panel `/mcp`.

256 258 


276 278 

277Ketika Anda memilih **Disable** atau **Clear authentication** dari menu server di `/mcp`, Claude Code juga membuang entri cache server tersebut. **Reconnect** juga membuangnya pada server yang terhubung atau gagal; pada server `cached`, **Reconnect** langsung menghubungkan server dan mempertahankan entri tersebut. Saat berikutnya Claude Code terhubung ke server setelah membuang entri, Claude Code mengambil daftar tool dari server alih-alih dari cache.279Ketika Anda memilih **Disable** atau **Clear authentication** dari menu server di `/mcp`, Claude Code juga membuang entri cache server tersebut. **Reconnect** juga membuangnya pada server yang terhubung atau gagal; pada server `cached`, **Reconnect** langsung menghubungkan server dan mempertahankan entri tersebut. Saat berikutnya Claude Code terhubung ke server setelah membuang entri, Claude Code mengambil daftar tool dari server alih-alih dari cache.

278 280 

279Ketika status server adalah `✘ Failed to connect`, `claude mcp list` menambahkan detail kegagalan ke baris status tersebut, dan `claude mcp get <name>` menampilkannya pada baris `Issue:`: status HTTP atau kode kesalahan, ditambah teks kesalahan apa pun yang dikembalikan server. Tampilan detail server di `/mcp` menyertakan teks yang sama yang dilaporkan server di baris `Issue:`. Claude Code menyamarkan teks yang menyerupai kredensial dari detail ini dan tidak pernah menyertakan URL server yang sudah diekspansi, yang dapat membawa rahasia. Claude Code tidak menambahkan detail apa pun ke status `✘ Connection error`, karena teks exception yang akan dicetaknya di sana dapat menyematkan URL tersebut. Sebelum v2.1.219, kedua perintah hanya menampilkan status kegagalan saja, tanpa kode status atau teks kesalahan server.281##### Kegagalan koneksi dan server yang tidak dikonfigurasi

282 

283Ketika status server adalah `✘ Failed to connect`, `claude mcp list` menambahkan detail kegagalan ke baris status tersebut, dan `claude mcp get <name>` menampilkannya pada baris `Issue:`. Detailnya adalah status HTTP atau kode kesalahan, ditambah teks kesalahan apa pun yang dikembalikan server. Tampilan detail server di `/mcp` menyertakan teks yang sama yang dilaporkan server di baris `Issue:`-nya.

284 

285Claude Code menyamarkan teks yang menyerupai kredensial dari detail ini dan tidak pernah menyertakan URL server yang telah diekspansi, yang dapat membawa rahasia. Claude Code tidak menambahkan detail ke status `✘ Connection error`, karena teks exception yang akan dicetaknya di sana dapat menyertakan URL tersebut.

280 286 

281Ketika Anda menyelesaikan autentikasi dari `/mcp` dan koneksi masih gagal dengan status HTTP atau kode kesalahan transport, Claude Code menambahkan kode tersebut dan origin URL server ke pesan yang dicetaknya setelah upaya tersebut. Origin adalah skema dan host, ditambah port jika URL menyebutkannya, seperti `https://mcp.example.com`.287Ketika Anda menyelesaikan autentikasi dari `/mcp` dan koneksi masih gagal dengan status HTTP atau kode kesalahan transport, Claude Code menambahkan kode tersebut dan origin URL server ke pesan yang dicetaknya setelah upaya tersebut. Origin adalah skema dan host, ditambah port jika URL menyebutkannya, seperti `https://mcp.example.com`.

282 288 

memory.md +2 −2

Details

237 237 

238Setiap grup brace mengalikan jumlah pola yang diperluas: `src/*.{ts,tsx}` diperluas menjadi dua pola, dan `{a,b}/{c,d}/*.{ts,tsx}` menjadi delapan. Untuk menjaga ekspansi terbatas, seluruh daftar `paths` aturan berbagi satu anggaran 1.000 pola yang diperluas dan 4 MiB, dan pola tanpa brace tidak dihitung terhadapnya.238Setiap grup brace mengalikan jumlah pola yang diperluas: `src/*.{ts,tsx}` diperluas menjadi dua pola, dan `{a,b}/{c,d}/*.{ts,tsx}` menjadi delapan. Untuk menjaga ekspansi terbatas, seluruh daftar `paths` aturan berbagi satu anggaran 1.000 pola yang diperluas dan 4 MiB, dan pola tanpa brace tidak dihitung terhadapnya.

239 239 

240Claude Code menggunakan pola apa pun yang akan melampaui anggaran yang tidak diperluas, dan brace literal mereka tidak cocok dengan file apa pun. Sebelum v2.1.217, nilai `paths` dengan banyak grup brace menghentikan atau menghancurkan CLI saat startup.240Claude Code menggunakan pola apa pun yang akan melampaui anggaran yang tidak diperluas, dan brace literal mereka tidak cocok dengan file apa pun.

241 241 

242Sintaks Glob memperlakukan `[` sebagai awal ekspresi bracket seperti `[abc]`. Pola dengan `[` yang tidak dapat dibaca sebagai ekspresi bracket, seperti `photos [2024/**`, tidak valid: itu tidak cocok dengan file apa pun, dan pola lain aturan terus bekerja. Untuk mencocokkan `[` literal dalam nama file, lepaskan sebagai `photos \[2024/**`.242Sintaks Glob memperlakukan `[` sebagai awal ekspresi bracket seperti `[abc]`. Pola dengan `[` yang tidak dapat dibaca sebagai ekspresi bracket, seperti `photos [2024/**`, tidak valid: itu tidak cocok dengan file apa pun, dan pola lain aturan terus bekerja. Untuk mencocokkan `[` literal dalam nama file, lepaskan sebagai `photos \[2024/**`.

243 243 


568 568 

569Perintah `/memory` mencantumkan file CLAUDE.md, CLAUDE.local.md, dan file memory lainnya di seluruh cakupan pengguna dan proyek, termasuk entri CLAUDE.md pengguna dan proyek untuk file yang belum ada. Ini juga memungkinkan Anda mengalihkan auto memory aktif atau mati dan menyediakan opsi untuk membuka folder auto memory. Pilih file apa pun untuk membukanya di editor Anda; memilih file yang belum ada akan membuatnya terlebih dahulu. Untuk memeriksa file `CLAUDE.md` dan file aturan mana yang dimuat saat peluncuran, jalankan `/context`.569Perintah `/memory` mencantumkan file CLAUDE.md, CLAUDE.local.md, dan file memory lainnya di seluruh cakupan pengguna dan proyek, termasuk entri CLAUDE.md pengguna dan proyek untuk file yang belum ada. Ini juga memungkinkan Anda mengalihkan auto memory aktif atau mati dan menyediakan opsi untuk membuka folder auto memory. Pilih file apa pun untuk membukanya di editor Anda; memilih file yang belum ada akan membuatnya terlebih dahulu. Untuk memeriksa file `CLAUDE.md` dan file aturan mana yang dimuat saat peluncuran, jalankan `/context`.

570 570 

571Editor GUI seperti VS Code membuka file di jendela terpisah, dan Anda dapat terus menggunakan sesi saat file terbuka. Sebelum v2.1.216, `/memory` menunggu Anda menutup file sebelum merespons. Editor terminal seperti Vim mengambil alih terminal sampai Anda keluar.571Editor GUI seperti VS Code membuka file di jendela terpisah, dan Anda dapat terus menggunakan sesi saat file terbuka. Editor terminal seperti Vim mengambil alih terminal sampai Anda keluar.

572 572 

573Ketika Anda meminta Claude untuk mengingat sesuatu, seperti "selalu gunakan pnpm, bukan npm" atau "ingat bahwa tes API memerlukan instans Redis lokal," Claude menyimpannya ke auto memory. Untuk menambahkan instruksi ke CLAUDE.md sebagai gantinya, minta Claude secara langsung, seperti "tambahkan ini ke CLAUDE.md," atau edit file sendiri melalui `/memory`.573Ketika Anda meminta Claude untuk mengingat sesuatu, seperti "selalu gunakan pnpm, bukan npm" atau "ingat bahwa tes API memerlukan instans Redis lokal," Claude menyimpannya ke auto memory. Untuk menambahkan instruksi ke CLAUDE.md sebagai gantinya, minta Claude secara langsung, seperti "tambahkan ini ke CLAUDE.md," atau edit file sendiri melalui `/memory`.

574 574 

model-config.md +21 −4

Details

542Tingkat yang berbeda berlaku dalam kasus seperti berikut:542Tingkat yang berbeda berlaku dalam kasus seperti berikut:

543 543 

544* **Perubahan Anda sendiri**: setelah Anda memilih tingkat effort, memilih model di `/model`, atau melanjutkan sesi nanti, tingkat dari permintaan yang ditandai tidak lagi terbawa.544* **Perubahan Anda sendiri**: setelah Anda memilih tingkat effort, memilih model di `/model`, atau melanjutkan sesi nanti, tingkat dari permintaan yang ditandai tidak lagi terbawa.

545* **Effort skill**: tingkat yang ditetapkan oleh frontmatter `effort` sebuah skill untuk permintaan yang ditandai berlaku untuk giliran itu, dan giliran berikutnya berjalan pada tingkat yang diberikan [urutan resolusi effort](#adjust-effort-level) untuk model fallback.545* **Effort yang ditetapkan untuk satu giliran**: jika Anda menaikkan giliran yang ditandai dengan `ultrathink`, atau frontmatter `effort` sebuah skill menetapkan tingkatnya, tingkat itu berlaku untuk giliran tersebut. Giliran berikutnya berjalan pada tingkat yang diberikan [urutan resolusi effort](#adjust-effort-level) untuk model fallback.

546 546 

547Dalam sesi, jalankan `/effort status` untuk melihat tingkat yang berlaku, atau `/effort` untuk mengubahnya.547Dalam sesi, jalankan `/effort status` untuk melihat tingkat yang berlaku, atau `/effort` untuk mengubahnya.

548 548 


674 674 

675#### Gunakan ultrathink untuk penalaran mendalam sekali jalan675#### Gunakan ultrathink untuk penalaran mendalam sekali jalan

676 676 

677Sertakan `ultrathink` di mana saja dalam prompt Anda untuk meminta penalaran lebih dalam pada giliran itu tanpa mengubah pengaturan effort sesi Anda. Claude Code mengenali kata kunci tersebut dan menambahkan instruksi dalam konteks. Tingkat effort yang dikirim ke API tidak berubah. Claude Code meneruskan frasa lain seperti "think", "think hard", dan "think more" sebagai teks prompt biasa dan tidak mengenalinya sebagai kata kunci.677Sertakan `ultrathink` di mana saja dalam prompt Anda untuk meminta penalaran lebih dalam pada giliran itu tanpa mengubah pengaturan effort sesi Anda. Claude Code mengenali kata kunci tersebut dan menambahkan instruksi dalam konteks. Claude Code meneruskan frasa lain seperti "think", "think hard", dan "think more" sebagai teks prompt biasa dan tidak mengenalinya sebagai kata kunci.

678 

679Jika diketik di prompt terminal, kata tersebut juga dapat menaikkan giliran itu ke effort `xhigh`. Ketika dapat melakukannya, kata tersebut ditampilkan dalam warna pelangi. Memerlukan Claude Code v2.1.311 atau lebih baru. Jika kata tersebut tidak berwarna pelangi saat Anda memulai giliran baru, coba salah satu dari berikut ini:

680 

681* Ketik ulang kata tersebut di luar apa pun seperti tanda kutip, tanda kurung, path, atau perintah, dalam prompt yang tidak diawali dengan `/`

682* Hapus `CLAUDE_CODE_EFFORT_LEVEL` jika ditetapkan di bawah `xhigh`, naikkan [`maxEffortLevel`](https://code.claude.com/docs/id/settings-reference#maxeffortlevel) Anda sendiri ke `xhigh` atau lebih tinggi, atau minta admin organisasi untuk menaikkan [batas organisasi Anda](#organization-effort-limits)

683* Jalankan `/model` dalam sesi Anda untuk beralih ke model Opus 5.5, Sonnet 5.5, Haiku 5.5, atau Fable 5.1. Di tempat kata tersebut tidak dapat menaikkan giliran, seperti pada Amazon Bedrock, [atur tingkat effort](#set-the-effort-level) sebagai gantinya

678 684 

679#### Atur tingkat effort685#### Atur tingkat effort

680 686 

681Anda dapat mengubah effort melalui salah satu dari berikut ini:687Anda dapat mengubah effort melalui salah satu dari berikut ini:

682 688 

683* **`/effort`**: jalankan `/effort` tanpa argumen untuk membuka slider interaktif, `/effort` diikuti dengan nama tingkat untuk menetapkannya secara langsung, atau `/effort auto` untuk menghapus tingkat tersimpan Anda untuk model aktif. Anda dapat menjalankannya saat Claude sedang bekerja, dan setelah Anda mengonfirmasi [peringatan cache](https://code.claude.com/docs/id/prompt-caching.md#changing-effort-level), jika Claude Code menampilkannya, Claude Code menerapkan tingkat baru ke permintaan berikutnya dalam giliran689* **`/effort`**: jalankan `/effort` tanpa argumen untuk membuka slider interaktif, `/effort` diikuti dengan nama tingkat untuk menetapkannya secara langsung, atau `/effort auto` untuk menghapus tingkat tersimpan Anda untuk model aktif

684* **Dalam `/model`**: gunakan tombol panah kiri/kanan untuk menyesuaikan slider effort saat memilih model690* **Dalam `/model`**: gunakan tombol panah kiri/kanan untuk menyesuaikan slider effort saat memilih model

685* **Flag `--effort`**: teruskan nama tingkat untuk menetapkannya untuk satu sesi saat meluncurkan Claude Code691* **Flag `--effort`**: teruskan nama tingkat untuk menetapkannya untuk satu sesi saat meluncurkan Claude Code

686* **Environment variable**: atur `CLAUDE_CODE_EFFORT_LEVEL` ke nama tingkat atau `auto`692* **Environment variable**: atur `CLAUDE_CODE_EFFORT_LEVEL` ke nama tingkat atau `auto`


692 698 

693Jika Anda menetapkan `effortLevel` dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), Claude Code menerapkannya pada langkah pengaturan dari [urutan resolusi effort](#adjust-effort-level), dan pengguna masih dapat mengubah tingkat dengan `/effort` atau `--effort`. Untuk menjaga pengguna pada atau di bawah suatu tingkat, atur [`maxEffortLevel`](https://code.claude.com/docs/id/settings-reference#maxeffortlevel).699Jika Anda menetapkan `effortLevel` dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), Claude Code menerapkannya pada langkah pengaturan dari [urutan resolusi effort](#adjust-effort-level), dan pengguna masih dapat mengubah tingkat dengan `/effort` atau `--effort`. Untuk menjaga pengguna pada atau di bawah suatu tingkat, atur [`maxEffortLevel`](https://code.claude.com/docs/id/settings-reference#maxeffortlevel).

694 700 

695Slider effort muncul dalam `/model` ketika model yang didukung dipilih. Tingkat effort saat ini juga ditampilkan dalam header sesi di sebelah nama model, misalnya "with low effort", jadi Anda dapat mengonfirmasi pengaturan mana yang aktif tanpa membuka `/model`. Footer juga secara singkat menampilkan tingkat effort saat startup dan saat berubah.701#### Periksa tingkat effort yang Anda tetapkan

702 

703Slider effort muncul dalam `/model` ketika model yang didukung dipilih. Tingkat dalam header sesi, misalnya "with low effort", berasal dari pengaturan effort Anda, meskipun Claude [masih bekerja pada tingkat lama](#when-a-new-effort-level-starts). Footer juga secara singkat menampilkan tingkat effort saat startup dan saat berubah.

704 

705#### Kapan tingkat effort baru mulai berlaku

706 

707Dalam sesi terminal, setelah `/effort` mengonfirmasi tingkat baru, pesan berikutnya yang Anda kirim berjalan pada tingkat itu. Anda dapat mengirimnya setelah giliran yang sedang berlangsung berakhir atau [saat Claude masih bekerja](https://code.claude.com/docs/id/interactive-mode.md#queue-messages-while-claude-works):

708 

709* **Setelah giliran berakhir**: Anda tidak perlu melakukan apa pun sampai saat itu, dan wajar jika giliran selesai pada tingkat lama

710* **Saat Claude masih bekerja**: ketik pesan, seperti `keep going`, dan tekan `Enter` untuk memasukkannya ke antrean tanpa menginterupsi giliran. Claude menerimanya ketika panggilan tool saat ini selesai, atau paling lambat ketika giliran berakhir, dan bekerja pada tingkat baru sejak saat itu.

711 

712Sebelum v2.1.242, Claude Code dapat mengantrekan `/effort` itu sendiri sampai giliran selesai, dan selalu melakukannya dalam sesi yang tidak [mengambil feature flag](https://code.claude.com/docs/id/env-vars.md#features-that-need-feature-flag-fetching), seperti pada [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md).

696 713 

697#### Penalaran adaptif dan thinking budget tetap714#### Penalaran adaptif dan thinking budget tetap

698 715 

Details

648| `claude_code.code_edit_tool.decision` | Jumlah keputusan izin tool pengeditan kode | tidak ada |648| `claude_code.code_edit_tool.decision` | Jumlah keputusan izin tool pengeditan kode | tidak ada |

649| `claude_code.active_time.total` | Total waktu aktif | s |649| `claude_code.active_time.total` | Total waktu aktif | s |

650 650 

651Ketika `prometheus` adalah satu-satunya exporter yang tercantum di `OTEL_METRICS_EXPORTER`, Claude Code menghilangkan unit `USD`, `tokens`, dan `s` dari metrik yang diekspor sehingga scrape tetap dalam format teks Prometheus yang valid. Nama metrik tidak berubah, dan konfigurasi yang menggabungkan exporter, seperti `otlp,prometheus`, tetap mempertahankan unit. Sebelum v2.1.216, scrape Prometheus menyertakan baris `# UNIT` khusus OpenMetrics yang ditolak oleh sebagian scraper.651Ketika `prometheus` adalah satu-satunya exporter yang tercantum di `OTEL_METRICS_EXPORTER`, Claude Code menghilangkan unit `USD`, `tokens`, dan `s` dari metrik yang diekspor agar hasil scrape tetap dalam format teks Prometheus yang valid. Nama metrik tidak berubah, dan konfigurasi yang menggabungkan exporter, seperti `otlp,prometheus`, tetap mempertahankan unit.

652 652 

653### Detail metrik653### Detail metrik

654 654 


995 995 

996 Nilai `source` tidak menunjukkan sumber mana yang cocok. Untuk menemukan sumber mana yang menolak suatu panggilan, cari [Event safety](#safety-event) dengan `tool_use_id` yang sama dan baca atribut `category` dan `rule_source`-nya. Beberapa panggilan yang ditolak [tidak memiliki event safety](#calls-without-a-safety-event).996 Nilai `source` tidak menunjukkan sumber mana yang cocok. Untuk menemukan sumber mana yang menolak suatu panggilan, cari [Event safety](#safety-event) dengan `tool_use_id` yang sama dan baca atribut `category` dan `rule_source`-nya. Beberapa panggilan yang ditolak [tidak memiliki event safety](#calls-without-a-safety-event).

997 997 

998 Claude Code juga melaporkan `"config"` ketika permintaan dialog izin itu sendiri gagal. Misalnya, permintaan tersebut gagal ketika callback [`canUseTool`](https://code.claude.com/docs/id/agent-sdk/typescript#canusetool) dari Agent SDK atau tool [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) mengembalikan hasil yang tidak valid, atau ketika input stream ditutup saat permintaan masih tertunda. Sebelum v2.1.216, Claude Code melaporkan kegagalan ini sebagai `"user_reject"`.998 Claude Code juga melaporkan `"config"` ketika permintaan izin itu sendiri gagal. Misalnya, permintaan tersebut gagal ketika callback [`canUseTool`](https://code.claude.com/docs/id/agent-sdk/typescript#canusetool) dari Agent SDK atau tool [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) mengembalikan hasil yang tidak valid, atau ketika stream input ditutup saat permintaan masih tertunda.

999 * `"hook"`: Hook `PreToolUse` atau `PermissionRequest` mengembalikan keputusan.999 * `"hook"`: Hook `PreToolUse` atau `PermissionRequest` mengembalikan keputusan.

1000 * `"user_permanent"`: Dipancarkan ketika pengguna memilih "Yes, and don't ask again for ..." pada permintaan izin, yang menyimpan aturan allow ke pengaturan pribadinya. Dalam CLI interaktif, ini hanya dipancarkan untuk pilihan itu sendiri; panggilan selanjutnya yang cocok dengan aturan yang disimpan memancarkan `"config"`. Dalam sesi Agent SDK atau `-p` non-interaktif, baik pilihan awal maupun kecocokan aturan selanjutnya memancarkan `"user_permanent"`. Diperlakukan sebagai penerimaan.1000 * `"user_permanent"`: Dipancarkan ketika pengguna memilih "Yes, and don't ask again for ..." pada permintaan izin, yang menyimpan aturan izinkan ke pengaturan pribadinya. Di CLI interaktif, ini hanya dipancarkan untuk pilihan itu sendiri; panggilan berikutnya yang cocok dengan aturan yang disimpan memancarkan `"config"`. Dalam sesi Agent SDK atau sesi `-p` non-interaktif, baik pilihan awal maupun kecocokan aturan berikutnya memancarkan `"user_permanent"`. Diperlakukan sebagai penerimaan.

1001 * `"user_temporary"`: Dipancarkan ketika pengguna memilih "Yes" pada permintaan izin untuk persetujuan satu kali, atau memilih opsi yang memberikan akses untuk sisa sesi pada permintaan izin edit atau baca file. Dalam CLI interaktif, ini hanya dipancarkan untuk pilihan itu sendiri; panggilan selanjutnya yang diizinkan oleh pemberian akses berlingkup sesi tersebut memancarkan `"config"`. Dalam sesi Agent SDK atau `-p` non-interaktif, baik pilihan maupun kecocokan selanjutnya memancarkan `"user_temporary"`. Diperlakukan sebagai penerimaan.1001 * `"user_temporary"`: Dipancarkan ketika pengguna memilih "Yes" pada permintaan izin untuk persetujuan satu kali, atau memilih opsi yang memberikan akses untuk sisa sesi pada permintaan izin pengeditan atau pembacaan file. Di CLI interaktif, ini hanya dipancarkan untuk pilihan itu sendiri; panggilan berikutnya yang diizinkan oleh pemberian izin berlingkup sesi tersebut memancarkan `"config"`. Dalam sesi Agent SDK atau sesi `-p` non-interaktif, baik pilihan maupun kecocokan berikutnya memancarkan `"user_temporary"`. Diperlakukan sebagai penerimaan.

1002 * `"user_abort"`: Dipancarkan ketika pengguna menutup permintaan izin tanpa menjawab. Dalam sesi Agent SDK dan `-p` non-interaktif, ini mencakup menginterupsi giliran saat permintaan izin `canUseTool` atau `--permission-prompt-tool` masih tertunda; sebelum v2.1.216, Claude Code melaporkan interupsi tersebut sebagai `"user_reject"`. Diperlakukan sebagai penolakan.1002 * `"user_abort"`: Dipancarkan ketika pengguna menutup permintaan izin tanpa menjawab. Dalam sesi Agent SDK dan sesi `-p` non-interaktif, ini termasuk menginterupsi giliran saat permintaan izin `canUseTool` atau `--permission-prompt-tool` masih tertunda. Diperlakukan sebagai penolakan.

1003 * `"user_reject"`: Dipancarkan ketika pengguna memilih "No" saat diminta. Dalam CLI interaktif, ini hanya dipancarkan untuk pilihan itu sendiri; panggilan yang cocok dengan aturan deny dalam pengaturan pribadi pengguna memancarkan `"config"`. Dalam sesi Agent SDK atau `-p` non-interaktif, panggilan yang cocok dengan aturan deny dalam pengaturan pribadi memancarkan `"user_reject"`. Diperlakukan sebagai penolakan.1003 * `"user_reject"`: Dipancarkan ketika pengguna memilih "No" saat diminta. Di CLI interaktif, ini hanya dipancarkan untuk pilihan itu sendiri; panggilan yang cocok dengan aturan tolak dalam pengaturan pribadi pengguna memancarkan `"config"`. Dalam sesi Agent SDK atau sesi `-p` non-interaktif, panggilan yang cocok dengan aturan tolak dalam pengaturan pribadi memancarkan `"user_reject"`. Diperlakukan sebagai penolakan.

1004* `classifier_verdict`: Verdict [pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#how-the-classifier-evaluates-actions) auto mode untuk panggilan, atau alasan Claude Code menolak panggilan ketika tidak ada verdict yang datang. Memerlukan Claude Code v2.1.301 atau lebih baru1004* `classifier_verdict`: Verdict [pengklasifikasi](https://code.claude.com/docs/id/permission-modes.md#how-the-classifier-evaluates-actions) auto mode untuk panggilan, atau alasan Claude Code menolak panggilan ketika tidak ada verdict yang datang. Memerlukan Claude Code v2.1.301 atau lebih baru

1005 1005 

1006 * `"allow"`: pengklasifikasi menyetujui panggilan1006 * `"allow"`: pengklasifikasi menyetujui panggilan

Details

97 Perintah ini juga berfungsi dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dan sesi Agent SDK, serta dari aplikasi mobile atau web melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md#limitations), di mana Anda dapat mencantumkan dan memilih hanya [gaya bawaan](#built-in-output-styles). Memerlukan Claude Code v2.1.269 atau lebih baru.97 Perintah ini juga berfungsi dalam [mode non-interaktif](https://code.claude.com/docs/id/headless.md) dan sesi Agent SDK, serta dari aplikasi mobile atau web melalui [Remote Control](https://code.claude.com/docs/id/remote-control.md#limitations), di mana Anda dapat mencantumkan dan memilih hanya [gaya bawaan](#built-in-output-styles). Memerlukan Claude Code v2.1.269 atau lebih baru.

98* **Menu Terminal**: jalankan `/config` dan pilih **Output style** untuk memilih gaya dari menu.98* **Menu Terminal**: jalankan `/config` dan pilih **Output style** untuk memilih gaya dari menu.

99* **Ekstensi VS Code**: buka [menu perintah](https://code.claude.com/docs/id/vs-code.md#use-the-prompt-box) dengan `/` dan pilih **Output styles** untuk memilih gaya, termasuk gaya kustom Anda. Memerlukan Claude Code v2.1.257 atau lebih baru.99* **Ekstensi VS Code**: buka [menu perintah](https://code.claude.com/docs/id/vs-code.md#use-the-prompt-box) dengan `/` dan pilih **Output styles** untuk memilih gaya, termasuk gaya kustom Anda. Memerlukan Claude Code v2.1.257 atau lebih baru.

100* **Aplikasi Desktop**: atur field `outputStyle` dalam file settings, misalnya `.claude/settings.local.json`, file yang ditulis menu terminal. Ketika Anda menjalankan `/config` di sana, Claude Code [membuka **Settings > Claude Code**](https://code.claude.com/docs/id/desktop.md#what%E2%80%99s-not-available-in-desktop) daripada menu.100* **Aplikasi Desktop**: atur field `outputStyle` dalam file settings, misalnya `.claude/settings.local.json`, file yang ditulis menu terminal. Ketika Anda menjalankan `/config` di sana, Claude Code [membuka **Settings > Code** atau **Settings > Claude Code**](https://code.claude.com/docs/id/desktop.md#what’s-not-available-in-desktop) daripada menu.

101 101 

102Untuk menetapkan gaya tanpa menu, edit field `outputStyle` secara langsung dalam file settings:102Untuk menetapkan gaya tanpa menu, edit field `outputStyle` secara langsung dalam file settings:

103 103 

Details

31 31 

32### Tindakan yang tidak disetujui otomatis oleh mode mana pun32### Tindakan yang tidak disetujui otomatis oleh mode mana pun

33 33 

34Claude Code tidak secara otomatis menyetujui hal-hal berikut di mode apa pun, termasuk `bypassPermissions`. Setiap poin menghubungkan ke bagian yang mengatakan apa yang terjadi sebagai gantinya di setiap mode:34Claude Code tidak secara otomatis menyetujui hal-hal berikut di mode apa pun, termasuk `bypassPermissions`, meskipun Anda dapat [mematikan permintaan izin untuk perintah `rm` yang berbahaya](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) dalam mode `bypassPermissions`. Setiap poin menghubungkan ke bagian yang mengatakan apa yang terjadi sebagai gantinya di setiap mode:

35 35 

36* Alat yang cocok dengan [aturan ask](https://code.claude.com/docs/id/permissions.md#manage-permissions) eksplisit36* Alat yang cocok dengan [aturan ask](https://code.claude.com/docs/id/permissions.md#manage-permissions) eksplisit

37* Alat konektor yang organisasi Anda [atur ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools), dalam sesi di mana pengaturan itu mencapai Claude Code37* Alat konektor yang organisasi Anda [atur ke `ask`](https://code.claude.com/docs/id/mcp#organization-controls-on-connector-tools), dalam sesi di mana pengaturan itu mencapai Claude Code


504* Permintaan HTTP read-only504* Permintaan HTTP read-only

505* Melakukan push ke branch mana pun dari repositori yang sedang Anda kerjakan, termasuk branch default. Branch non-default yang namanya menandainya sebagai target deploy atau publikasi, seperti `production` atau `gh-pages`, tidak tercakup: pengklasifikasi menilai push ke sana secara tersendiri.505* Melakukan push ke branch mana pun dari repositori yang sedang Anda kerjakan, termasuk branch default. Branch non-default yang namanya menandainya sebagai target deploy atau publikasi, seperti `production` atau `gh-pages`, tidak tercakup: pengklasifikasi menilai push ke sana secara tersendiri.

506 506 

507 Konten push tetap diperiksa terhadap aturan lain pengklasifikasi, dan [aturan `permissions.deny`](https://code.claude.com/docs/id/permissions#manage-permissions) tetap dapat memblokir perintah push [sebagaimana ditulis](https://code.claude.com/docs/id/permissions.md#bash-rule-limits) dalam setiap mode. Proteksi branch milik remote itu sendiri tetap berlaku. Mulai v2.1.203 hingga v2.1.211, hanya push rutin ke branch default dan push ke branch tempat Anda memulai atau ke branch yang dibuat Claude yang diizinkan secara default.507 Konten push tetap diperiksa terhadap aturan lain pengklasifikasi, dan [aturan `permissions.deny`](https://code.claude.com/docs/id/permissions#manage-permissions) tetap dapat memblokir perintah push [sebagaimana ditulis](https://code.claude.com/docs/id/permissions.md#bash-rule-limits) dalam setiap mode. Proteksi branch milik remote itu sendiri tetap berlaku.

508* Menghapus pekerjaan persis yang dibuat Claude sebelumnya dalam sesi yang sama508* Menghapus pekerjaan persis yang dibuat Claude sebelumnya dalam sesi yang sama

509* Membaca, meninjau, atau menulis kode, konfigurasi, dan model ancaman terkait keamanan sebagai bagian dari tugas Anda509* Membaca, meninjau, atau menulis kode, konfigurasi, dan model ancaman terkait keamanan sebagai bagian dari tugas Anda

510* Pesan antar agent yang bekerja bersama dalam sesi multi-agent yang sama510* Pesan antar agent yang bekerja bersama dalam sesi multi-agent yang sama


649 649 

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

651 651 

652Bahkan dalam mode `bypassPermissions`, setiap [tindakan yang tidak disetujui otomatis oleh mode mana pun](#actions-no-mode-auto-approves) akan memunculkan permintaan izin atau penolakan alih-alih berjalan dengan sendirinya. Membaca [artifact publik organisasi lain](https://code.claude.com/docs/id/artifacts.md#read-an-artifact-shared-with-you) memerlukan persetujuan Anda, dan mode ini tidak memintanya, sehingga Claude tidak dapat membacanya. Penolakan [Remove-Item di PowerShell](#remove-item-in-powershell) juga berlaku dalam mode ini.652Bahkan dalam mode `bypassPermissions`, setiap [tindakan yang tidak disetujui otomatis oleh mode mana pun](#actions-no-mode-auto-approves) akan memunculkan permintaan izin atau penolakan, meskipun Anda dapat [mematikan permintaan izin untuk perintah `rm` yang berbahaya](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode). Membaca [artifact publik organisasi lain](https://code.claude.com/docs/id/artifacts.md#read-an-artifact-shared-with-you) memerlukan persetujuan Anda, dan mode ini tidak memintanya, sehingga Claude tidak dapat membacanya. Penolakan [Remove-Item di PowerShell](#remove-item-in-powershell) juga berlaku dalam mode ini.

653 653 

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

655 655 


861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.861This command could not be checked for dangerous rm operations: the shell may read it differently than it was parsed.

862```862```

863 863 

864Anda mendapatkan prompt atau penolakan yang sama dengan yang didapat penghapusan jalur kritis [dalam mode izin Anda](#critical-path-removals-in-each-permission-mode), termasuk `bypassPermissions`. Anda tidak dapat menyetujui perintah tersebut dengan aturan allow `Bash` atau `Bash(*)`, [mode auto-allow](https://code.claude.com/docs/id/sandboxing.md#auto-allow-mode) sandbox, atau hook `PreToolUse` yang mengembalikan `"allow"`. Baca perintahnya, lalu setujui prompt tersebut atau, setelah penolakan, jalankan di shell Anda.864Anda mendapatkan prompt atau penolakan yang sama dengan yang didapat penghapusan jalur kritis [dalam mode izin Anda](#critical-path-removals-in-each-permission-mode), termasuk `bypassPermissions`, meskipun Anda dapat [mematikan prompt tersebut](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) dalam mode `bypassPermissions`. Anda tidak dapat menyetujui perintah tersebut dengan aturan allow `Bash` atau `Bash(*)`, [mode auto-allow](https://code.claude.com/docs/id/sandboxing.md#auto-allow-mode) sandbox, atau hook `PreToolUse` yang mengembalikan `"allow"`. Baca perintahnya, lalu setujui prompt tersebut atau, setelah penolakan, jalankan di shell Anda.

865 865 

866### Prompt drive yang di-mount866### Prompt drive yang di-mount

867 867 


923 923 

924Jika [aturan ask](https://code.claude.com/docs/id/permissions.md#manage-permissions) eksplisit cocok dengan perintah, Claude Code meminta Anda sebagai gantinya, bahkan dalam mode `auto` dan tanpa batas waktu. Dalam mode yang meminta, hook [`PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) dapat menjawab prompt.924Jika [aturan ask](https://code.claude.com/docs/id/permissions.md#manage-permissions) eksplisit cocok dengan perintah, Claude Code meminta Anda sebagai gantinya, bahkan dalam mode `auto` dan tanpa batas waktu. Dalam mode yang meminta, hook [`PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) dapat menjawab prompt.

925 925 

926Untuk menjalankan penghapusan ini tanpa prompt dalam mode `bypassPermissions`, lihat [Matikan prompt penghapusan jalur kritis](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode).

927 

926### Batas waktu dan penolakan dalam mode auto dan bypassPermissions928### Batas waktu dan penolakan dalam mode auto dan bypassPermissions

927 929 

928Dalam mode `auto` dan `bypassPermissions`, prompt terminal untuk penghapusan jalur kritis menampilkan hitungan mundur dua menit:930Dalam mode `auto` dan `bypassPermissions`, prompt terminal untuk penghapusan jalur kritis menampilkan hitungan mundur dua menit:


939| :- | :- | :- |941| :- | :- | :- |

940| Panel chat [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) | Menolaknya | Menolaknya kecuali [hook `PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) mengizinkannya |942| Panel chat [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) | Menolaknya | Menolaknya kecuali [hook `PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) mengizinkannya |

941| [Aplikasi Desktop](https://code.claude.com/docs/id/desktop.md) | Menolaknya | Menolaknya kecuali hook `PermissionRequest` mengizinkannya |943| [Aplikasi Desktop](https://code.claude.com/docs/id/desktop.md) | Menolaknya | Menolaknya kecuali hook `PermissionRequest` mengizinkannya |

942| [Run `-p`](https://code.claude.com/docs/id/headless) atau [sesi Agent SDK](https://code.claude.com/docs/id/agent-sdk/permissions.md) | Menolaknya | [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) atau [callback `canUseTool`](https://code.claude.com/docs/id/agent-sdk/user-input#handle-tool-approval-requests) Anda yang memutuskan. Tanpa keduanya, atau di bawah [`--permission-prompts none`](https://code.claude.com/docs/id/headless#turn-off-permission-prompts-in-unattended-runs), menolaknya kecuali hook `PermissionRequest` mengizinkannya |944| [Run `-p`](https://code.claude.com/docs/id/headless) atau [sesi Agent SDK](https://code.claude.com/docs/id/agent-sdk/permissions.md) | Menolaknya | [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) atau [callback `canUseTool`](https://code.claude.com/docs/id/agent-sdk/user-input#handle-tool-approval-requests) Anda yang memutuskan. Tanpa keduanya, atau di bawah [`--permission-prompts none`](https://code.claude.com/docs/id/headless#turn-off-permission-prompts-in-unattended-runs), menolaknya kecuali hook `PermissionRequest` mengizinkannya. Untuk menjalankan penghapusan ini tanpa prompt sebagai gantinya, lihat [Matikan prompt penghapusan jalur kritis](#turn-off-the-critical-path-removal-prompt-in-bypasspermissions-mode) |

943 945 

944Di mana pun penghapusan ditolak, Anda dapat membaca seluruh perintah dan menjalankannya di shell Anda.946Di mana pun penghapusan ditolak, Anda dapat membaca seluruh perintah dan menjalankannya di shell Anda.

945 947 


958}960}

959```961```

960 962 

963### Matikan prompt penghapusan jalur kritis dalam mode bypassPermissions

964 

965Untuk menjalankan perintah Bash `rm` dan `rmdir` yang menargetkan [jalur kritis](#critical-paths) tanpa prompt dalam mode `bypassPermissions`, mulai Claude Code dengan [`CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1`](https://code.claude.com/docs/id/env-vars#variables) di lingkungannya. Ini memerlukan Claude Code v2.1.311 atau lebih baru. Claude Code hanya membaca variabel tersebut dari lingkungan peluncuran dan [mengabaikannya dalam blok `env` file pengaturan](https://code.claude.com/docs/id/settings-reference#variables-claude-code-ignores-in-env). Misalnya, atur variabel tersebut di [shell Anda](https://code.claude.com/docs/id/env-vars.md#set-variables-in-your-shell) dan mulai `claude` dari sana:

966 

967**macOS, Linux, WSL**

968 

969```bash theme={null}

970export CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1

971claude --permission-mode bypassPermissions

972```

973 

974**Windows PowerShell**

975 

976```powershell theme={null}

977$env:CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS = "1"

978claude --permission-mode bypassPermissions

979```

980 

981**Windows CMD**

982 

983```batch theme={null}

984set CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS=1

985claude --permission-mode bypassPermissions

986```

987 

988> [!WARNING]

989>

990> Dengan variabel ini diatur, Anda kehilangan prompt keamanan untuk penghapusan destruktif: perintah seperti `rm -rf ~` dapat berjalan tanpa bertanya kepada Anda. Atur variabel ini hanya di [lingkungan terisolasi](#skip-all-checks-with-bypasspermissions-mode) yang isinya boleh hilang.

991 

992Penghapusan berjalan tanpa prompt hanya dalam mode `bypassPermissions` itu sendiri, bukan dalam plan mode, dan hanya untuk apa yang ditandai oleh pemeriksaan jalur kritis dalam tool Bash dan [Monitor](https://code.claude.com/docs/id/tools-reference.md#monitor-tool). Itu termasuk perintah yang tidak dapat diurai sepenuhnya oleh Claude Code, yang juga berjalan tanpa prompt.

993 

994#### Pemberitahuan saat startup tentang prompt penghapusan jalur kritis

995 

996Untuk memeriksa apakah `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` berfungsi, baca baris yang dicetak Claude Code saat startup. Dalam run `-p`, baris tersebut ada di stderr. Dalam aplikasi Agent SDK, teruskan [opsi `stderr`](https://code.claude.com/docs/id/agent-sdk/typescript#options) untuk membacanya. Baris tersebut menyatakan salah satu dari berikut:

997 

998* **`is set, so dangerous rm commands can run without a prompt`**: penghapusan dapat berjalan tanpa prompt setelah pengaturan terkelola dan hook plugin dimuat. Jika penghapusan terus mendapatkan prompt atau penolakan, lihat [Mengapa prompt penghapusan jalur kritis tetap aktif](#why-the-critical-path-removal-prompt-stays-on)

999* **`has no effect in this session`**: penghapusan tetap mendapatkan prompt atau penolakan seperti biasa selama seluruh sesi. Untuk mengubahnya, temukan kasus Anda di [Mengapa prompt penghapusan jalur kritis tetap aktif](#why-the-critical-path-removal-prompt-stays-on)

1000* **`has no effect while the Windows registry cannot be read for managed settings`**: penghapusan tetap mendapatkan prompt atau penolakan seperti biasa, dan variabel tersebut berlaku tanpa restart jika pembacaan registry berikutnya berhasil. Jika penghapusan terus mendapatkan prompt atau penolakan, lihat [Mengapa prompt penghapusan jalur kritis tetap aktif](#why-the-critical-path-removal-prompt-stays-on)

1001 

1002Tidak adanya baris tersebut tidak berarti prompt aktif: aplikasi Agent SDK tanpa opsi `stderr` tidak melihat baris apa pun, dan penghapusan masih dapat berjalan tanpa prompt. Selain itu, periksa bahwa Anda mengatur variabel di lingkungan peluncuran, bahwa sesi [dapat memasuki mode `bypassPermissions`](#skip-all-checks-with-bypasspermissions-mode), dan bahwa `claude` tidak berada di dalam sesi lain. Beberapa sesi [dimulai tanpa variabel tersebut](#why-the-critical-path-removal-prompt-stays-on).

1003 

1004Jika Anda melihat salah satu baris ini padahal tidak mengatur variabel tersebut, temukan tempat variabel itu diatur, seperti profil shell Anda, lalu hapus.

1005 

1006#### Mengapa prompt penghapusan jalur kritis tetap aktif

1007 

1008Jika `CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS` tidak berpengaruh dan penghapusan tetap mendapatkan [prompt atau penolakan seperti biasa](#critical-path-removals-in-each-permission-mode), periksa penyebab seperti berikut:

1009 

1010* **Sesuatu yang lain menangani prompt izin**: [`--permission-prompt-tool`](https://code.claude.com/docs/id/cli-reference#cli-flags) atau [callback `canUseTool`](https://code.claude.com/docs/id/agent-sdk/user-input) Agent SDK tanpa [`--permission-prompts none`](https://code.claude.com/docs/id/headless#turn-off-permission-prompts-in-unattended-runs), [hook `PermissionRequest`](https://code.claude.com/docs/id/hooks#permissionrequest) dengan matcher apa pun, atau [mod](https://code.claude.com/docs/id/plugins/mods/events.md#hook-the-settings-hook-events) yang menangani event tersebut. Hapus hook, mod, tool, atau callback tersebut dan mulai ulang `claude`

1011* **Panel chat [ekstensi VS Code](https://code.claude.com/docs/id/vs-code.md) atau [aplikasi Desktop](https://code.claude.com/docs/id/desktop.md) yang menjalankan sesi**: mulai `claude` di terminal sebagai gantinya, seperti terminal terintegrasi IDE

1012* **Aturan mencakup Bash, Edit, atau Read**: [aturan deny atau ask](https://code.claude.com/docs/id/permissions.md#manage-permissions) yang menargetkan salah satu tool ini, saat peluncuran atau begitu Claude Code membacanya selama sesi, bahkan jika Anda menghapusnya kemudian. Hapus aturan tersebut dan mulai ulang `claude`. Untuk mengecualikan suatu tool, gunakan [`--tools`](https://code.claude.com/docs/id/cli-reference#cli-flags) alih-alih aturan deny

1013* **[`permissions.blockReadsOutsideWorkingDirectories`](https://code.claude.com/docs/id/settings-reference#permissions-blockreadsoutsideworkingdirectories) aktif**: hapus pengaturan tersebut dari setiap file pengaturan yang mengaturnya ke `true`, lalu mulai ulang `claude`

1014* **`claude` berjalan di dalam sesi lain**: `claude` yang dimulai dari tool Bash milik suatu sesi atau dari hook, bahkan dengan variabel tersebut di baris perintahnya. Mulai `claude` dari shell Anda sendiri. Jangan mengandalkan batasan sesi bersarang ini sebagai batas keamanan

1015* **Hook `PreToolUse` menjawab `ask` untuk suatu penghapusan**: ubah apa yang dikembalikan hook tersebut

1016* **Claude Code memulai sesi untuk Anda**: [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md), rekan [tim agent](https://code.claude.com/docs/id/agent-teams.md) di panel terpisah, dan sesi yang dibuat server [Remote Control](https://code.claude.com/docs/id/remote-control.md) dimulai tanpa variabel tersebut. Mulai `claude` dari shell Anda sendiri

1017* **Pengaturan terkelola tidak dapat dibaca**: Claude Code belum berhasil membaca sumber [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md) Anda. Jika pengaturan terkelola server terus gagal dimuat, lihat [Remote managed settings failed to load](https://code.claude.com/docs/id/errors.md#remote-managed-settings-failed-to-load). Untuk kegagalan lain yang bukan kueri registry, minta pihak yang mengelola sumber tersebut untuk memperbaikinya

1018* **Windows registry tidak dapat dikueri**: di Windows dan di WSL, variabel tersebut memerlukan jawaban dari registry, bahkan ketika [WSL tidak menggunakannya untuk pengaturan](https://code.claude.com/docs/id/settings-reference.md#wslinheritswindowssettings). Kueri dapat gagal sepanjang sesi di Windows non-Inggris, di WSL dengan interop dimatikan, atau di container pada kernel WSL2. Jika interop dimatikan, aktifkan. Jika tidak, jalankan penghapusan tersebut sendiri

1019 

961### Remove-Item dalam PowerShell1020### Remove-Item dalam PowerShell

962 1021 

963Ketika Anda mengaktifkan [alat PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool), Claude Code memberikan `Remove-Item` dan built-in `cmd` `rd`, `rmdir`, `del`, dan `erase` pemeriksaan mereka sendiri, terpisah dari daftar jalur kritis `rm`. Untuk `Remove-Item`, hasilnya bergantung pada target, dan kasus pertama yang cocok berlaku:1022Ketika Anda mengaktifkan [alat PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool), Claude Code memberikan `Remove-Item` dan built-in `cmd` `rd`, `rmdir`, `del`, dan `erase` pemeriksaan mereka sendiri, terpisah dari daftar jalur kritis `rm`. Untuk `Remove-Item`, hasilnya bergantung pada target, dan kasus pertama yang cocok berlaku:

permissions.md +11 −9

Details

28 28 

29Ketika Anda memilih "Ya, dan jangan tanya lagi" dan persetujuan disimpan secara permanen, seperti untuk perintah Bash atau domain WebFetch, Claude Code menyimpan aturan ke `.claude/settings.local.json` di akar repositori git, diselesaikan melalui [worktrees](https://code.claude.com/docs/id/worktrees.md) ke checkout utama. Aturan berlaku untuk sesi masa depan di mana pun dalam repositori itu, termasuk sesi yang dimulai di subdirektori dan di worktrees. Persetujuan modifikasi file tidak disimpan ke file: seperti yang ditunjukkan tabel, itu berlangsung hingga sesi berakhir. Dalam beberapa kasus, seperti di luar repositori git atau di Windows, Claude Code tidak menggunakan akar repositori; [Tempat Claude Code mencari setiap file](https://code.claude.com/docs/id/settings.md#where-claude-code-looks-for-each-file) mencantumkan kasus-kasus itu dan tempat itu menyimpan aturan sebagai gantinya.29Ketika Anda memilih "Ya, dan jangan tanya lagi" dan persetujuan disimpan secara permanen, seperti untuk perintah Bash atau domain WebFetch, Claude Code menyimpan aturan ke `.claude/settings.local.json` di akar repositori git, diselesaikan melalui [worktrees](https://code.claude.com/docs/id/worktrees.md) ke checkout utama. Aturan berlaku untuk sesi masa depan di mana pun dalam repositori itu, termasuk sesi yang dimulai di subdirektori dan di worktrees. Persetujuan modifikasi file tidak disimpan ke file: seperti yang ditunjukkan tabel, itu berlangsung hingga sesi berakhir. Dalam beberapa kasus, seperti di luar repositori git atau di Windows, Claude Code tidak menggunakan akar repositori; [Tempat Claude Code mencari setiap file](https://code.claude.com/docs/id/settings.md#where-claude-code-looks-for-each-file) mencantumkan kasus-kasus itu dan tempat itu menyimpan aturan sebagai gantinya.

30 30 

31Sebelum v2.1.211, Claude Code selalu menyimpan aturan di direktori awal, jadi persetujuan yang diberikan di worktree atau subdirektori tidak berlaku untuk sisa repositori. Aturan yang disimpan versi sebelumnya di subdirektori atau worktree masih berlaku untuk sesi yang dimulai di sana.

32 

33Kadang-kadang permintaan izin hanya menawarkan persetujuan satu kali, tanpa opsi "jangan tanya lagi" dan tanpa opsi untuk mengizinkan tindakan untuk sisa sesi. Claude Code menawarkan opsi-opsi itu hanya ketika permintaan izin dapat menunjukkan kepada Anda semua yang akan mereka izinkan, jadi aturan yang Anda simpan dari permintaan izin mencakup hanya apa yang dinamai opsinya. Ketika permintaan izin hanya menawarkan persetujuan satu kali, setujui tindakan sekali, atau tambahkan aturan sendiri di [`/permissions`](#manage-permissions). Untuk menghentikan permintaan izin bagi perintah yang diawali dengan exec wrapper seperti `watch`, atau bagi perintah `find` dengan tindakan seperti `-delete`, lihat [Exec wrapper dan tindakan `find`](#exec-wrappers-and-find-actions).31Kadang-kadang permintaan izin hanya menawarkan persetujuan satu kali, tanpa opsi "jangan tanya lagi" dan tanpa opsi untuk mengizinkan tindakan untuk sisa sesi. Claude Code menawarkan opsi-opsi itu hanya ketika permintaan izin dapat menunjukkan kepada Anda semua yang akan mereka izinkan, jadi aturan yang Anda simpan dari permintaan izin mencakup hanya apa yang dinamai opsinya. Ketika permintaan izin hanya menawarkan persetujuan satu kali, setujui tindakan sekali, atau tambahkan aturan sendiri di [`/permissions`](#manage-permissions). Untuk menghentikan permintaan izin bagi perintah yang diawali dengan exec wrapper seperti `watch`, atau bagi perintah `find` dengan tindakan seperti `-delete`, lihat [Exec wrapper dan tindakan `find`](#exec-wrappers-and-find-actions).

34 32 

35### Tambahkan komentar ketika Anda menjawab prompt izin33### Tambahkan komentar ketika Anda menjawab prompt izin


218 216 

219> [!TIP]217> [!TIP]

220>218>

221> Claude Code memahami operator shell, sehingga aturan seperti `Bash(safe-cmd *)` tidak akan memberinya izin untuk menjalankan perintah `safe-cmd && other-cmd`. Pemisah perintah yang dikenali adalah `&&`, `||`, `;`, `|`, `|&`, `&`, dan baris baru. Sebuah aturan harus cocok dengan setiap subperintah secara independen.219> Claude Code memahami operator shell, sehingga aturan seperti `Bash(safe-cmd *)` tidak akan memberinya izin untuk menjalankan perintah `safe-cmd && other-cmd`. Pemisah perintah yang dikenali adalah `&&`, `||`, `;`, `|`, `|&`, `&`, dan baris baru. Setiap subperintah harus diizinkan agar perintah gabungan dapat berjalan tanpa permintaan izin, misalnya karena subperintah tersebut cocok dengan aturan allow atau merupakan [perintah read-only](#read-only-commands).

222 220 

223Aturan deny dan ask berlaku ketika subperintah mana pun cocok dengannya, termasuk perintah yang bersarang di dalam subshell, substitusi perintah, atau badan alur kontrol seperti loop `for`. Aturan ask seperti `Bash(git clean *)` tetap meminta persetujuan Anda untuk `cd /tmp && git clean -f` atau `echo "$(git clean -f)"`, bahkan dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode).221Aturan deny dan ask berlaku ketika subperintah mana pun cocok dengannya, termasuk perintah yang bersarang di dalam subshell, substitusi perintah, atau badan alur kontrol seperti loop `for`. Aturan ask seperti `Bash(git clean *)` tetap meminta persetujuan Anda untuk `cd /tmp && git clean -f` atau `echo "$(git clean -f)"`, bahkan dalam [auto mode](https://code.claude.com/docs/id/permission-modes.md#eliminate-prompts-with-auto-mode).

224 222 


314 312 

315### PowerShell313### PowerShell

316 314 

317Aturan izin PowerShell menggunakan bentuk yang sama dengan aturan Bash. Wildcard dengan `*` cocok di posisi mana pun, sufiks `:*` setara dengan ` *` di akhir, dan `PowerShell` atau `PowerShell(*)` tanpa argumen cocok dengan setiap perintah. Konfigurasi ini mengizinkan perintah `Get-ChildItem` dan `git commit` sambil memblokir `Remove-Item`:315Aturan izin PowerShell menggunakan bentuk yang sama dengan [aturan Bash](#wildcard-patterns), dan `PowerShell` atau `PowerShell(*)` tanpa argumen cocok dengan setiap perintah. Konfigurasi ini mengizinkan perintah `Get-ChildItem` dan `git commit` sambil memblokir `Remove-Item`:

318 316 

319```json theme={null}317```json theme={null}

320{318{


330}328}

331```329```

332 330 

333Alias umum dikanonisasi sebelum pencocokan. Aturan yang ditulis untuk nama cmdlet juga cocok dengan alias-aliasnya, sehingga `PowerShell(Get-ChildItem *)` juga cocok dengan `gci`, `ls`, dan `dir`. Pencocokan tidak peka huruf besar/kecil.331Alias umum dikanonikalisasi sebelum pencocokan. Aturan yang ditulis untuk nama cmdlet juga cocok dengan alias-alias tersebut, sehingga `PowerShell(Get-ChildItem *)` juga cocok dengan `gci`, `ls`, dan `dir`. Pencocokan tidak peka huruf besar-kecil.

334 332 

335Claude Code mem-parse AST PowerShell dan memeriksa setiap perintah dalam perintah gabungan secara independen. Operator pipeline `|`, pemisah pernyataan `;`, dan pada PowerShell 7+ operator rantai `&&` dan `||` memecah perintah gabungan menjadi subperintah. Sebuah aturan harus cocok dengan setiap subperintah agar perintah gabungan diizinkan.333Claude Code mem-parse AST PowerShell dan memeriksa setiap perintah dalam perintah gabungan secara independen. Operator pipeline `|`, pemisah pernyataan `;`, dan pada PowerShell 7+ operator rantai `&&` dan `||` memecah perintah gabungan menjadi subperintah. Setiap subperintah harus diizinkan agar perintah gabungan dapat berjalan tanpa permintaan izin, misalnya dengan mencocokkan aturan allow.

336 334 

337### Read dan Edit335### Read dan Edit

338 336 


390 388 

391Aturan yang Anda tambahkan melalui `/permissions` mengikuti baris untuk file pengaturan tempat Anda menyimpannya.389Aturan yang Anda tambahkan melalui `/permissions` mengikuti baris untuk file pengaturan tempat Anda menyimpannya.

392 390 

393Aturan pengaturan lokal berjangkar pada [direktori kerja utama](#working-directories) sesi, bukan pada root repositori tempat Claude Code [menyimpan file tersebut](#permission-system) di v2.1.211 dan yang lebih baru. Dalam sesi yang dimulai di root repositori, kedua direktori tersebut sama; dalam sesi [worktree](https://code.claude.com/docs/id/worktrees.md), aturan bersama seperti `Edit(/src/**)` cocok dengan direktori `src/` milik worktree tersebut.391Aturan pengaturan lokal berjangkar pada [direktori kerja utama](#working-directories) sesi, bukan pada root repositori tempat Claude Code [menyimpan file tersebut](#permission-system). Dalam sesi yang dimulai di root repositori, kedua direktori tersebut sama; dalam sesi [worktree](https://code.claude.com/docs/id/worktrees.md), aturan bersama seperti `Edit(/src/**)` cocok dengan direktori `src/` milik worktree tersebut.

394 392 

395Aturan deny seperti `Read(/secrets/**)` dalam pengaturan pengguna memblokir `~/.claude/secrets/**`, bukan direktori `secrets` di proyek Anda. Untuk menulis aturan dalam pengaturan pengguna yang berlaku di dalam setiap proyek, gunakan path absolut `//` atau path relatif-home `~/`.393Aturan deny seperti `Read(/secrets/**)` dalam pengaturan pengguna memblokir `~/.claude/secrets/**`, bukan direktori `secrets` di proyek Anda. Untuk menulis aturan dalam pengaturan pengguna yang berlaku di dalam setiap proyek, gunakan path absolut `//` atau path relatif-home `~/`.

396 394 


524 522 

525Untuk membaca file di share jaringan tanpa permintaan izin ini, berikan share tersebut path lokal terlebih dahulu:523Untuk membaca file di share jaringan tanpa permintaan izin ini, berikan share tersebut path lokal terlebih dahulu:

526 524 

527* **Windows**: petakan share ke sebuah huruf drive dan teruskan drive tersebut dengan `--add-dir` saat Anda meluncurkan Claude Code, seperti yang dijelaskan di [Direktori kerja](#working-directories). Pembacaan di bawah drive yang Anda tambahkan kemudian dengan `/add-dir`, atau yang Anda cantumkan dalam `additionalDirectories` di file pengaturan, tetap memunculkan permintaan izin. Untuk menghentikan permintaan izin tersebut bagi share yang dipetakan ke `Z:`, mulai sesi baru di PowerShell dengan `claude --add-dir Z:\`.525* **Windows**: petakan share ke sebuah huruf drive dan teruskan drive tersebut dengan `--add-dir` saat Anda meluncurkan Claude Code, seperti yang dijelaskan di [Direktori kerja](#working-directories). Untuk share yang dipetakan ke `Z:`, jalankan `claude --add-dir Z:\` di PowerShell.

528* **macOS dan Linux**: mount share di path lokal, seperti direktori di bawah `/mnt` atau `/Volumes`, dan baca file dari sana, seperti yang dijelaskan di [Direktori kerja adalah path jaringan](https://code.claude.com/docs/id/errors.md#working-directory-is-a-network-path)526* **macOS dan Linux**: mount share di path lokal, seperti direktori di bawah `/mnt` atau `/Volumes`, dan baca file dari sana, seperti yang dijelaskan di [Direktori kerja adalah path jaringan](https://code.claude.com/docs/id/errors.md#working-directory-is-a-network-path)

529 527 

530### WebFetch528### WebFetch


711 709 

712Untuk memuat skills, perintah, dan subagents dari subdirektori [direktori kerja utama](#working-directories) Anda di tengah sesi, jalankan `/add-dir` dengan jalur subdirektori tersebut. Claude Code memuat mereka untuk sisa sesi tanpa meminta Anda atau menambahkan direktori kerja, karena subdirektori sudah dapat dibaca. Ini memerlukan Claude Code v2.1.257 atau lebih baru.710Untuk memuat skills, perintah, dan subagents dari subdirektori [direktori kerja utama](#working-directories) Anda di tengah sesi, jalankan `/add-dir` dengan jalur subdirektori tersebut. Claude Code memuat mereka untuk sisa sesi tanpa meminta Anda atau menambahkan direktori kerja, karena subdirektori sudah dapat dibaca. Ini memerlukan Claude Code v2.1.257 atau lebih baru.

713 711 

714Claude Code menemukan gaya output dari direktori kerja saat ini dan induknya, direktori pengguna Anda di `~/.claude/`, dan pengaturan terkelola. Hooks dan kunci `.claude/settings.json` lainnya dimuat dari folder `.claude/` direktori kerja saat ini tanpa fallback direktori induk, bersama dengan `~/.claude/settings.json` pengguna Anda dan pengaturan terkelola. `.claude/settings.local.json` dimuat dari akar repositori git sebagai gantinya, bahkan ketika Anda memulai Claude Code dalam subdirektori, kecuali dalam kasus di mana Claude Code [tidak menggunakan akar repositori](https://code.claude.com/docs/id/settings.md#where-claude-code-looks-for-each-file), seperti di Windows; sebelum v2.1.211, itu juga dimuat hanya dari direktori kerja saat ini. Sesi [Agent SDK](https://code.claude.com/docs/id/agent-sdk/claude-code-features.md#control-filesystem-settings-with-settingsources) memuat dari direktori kerja di semua versi.712#### Tempat gaya output, hooks, dan pengaturan lokal dimuat

713 

714Claude Code menemukan gaya output dari direktori kerja saat ini dan induknya, direktori pengguna Anda di `~/.claude/`, dan pengaturan terkelola. Hooks dan kunci `.claude/settings.json` lainnya dimuat dari folder `.claude/` direktori kerja saat ini tanpa fallback direktori induk, bersama dengan `~/.claude/settings.json` pengguna Anda dan pengaturan terkelola.

715 

716`.claude/settings.local.json` dimuat dari akar repositori git sebagai gantinya, bahkan ketika Anda memulai Claude Code dalam subdirektori, kecuali dalam kasus di mana Claude Code [tidak menggunakan akar repositori](https://code.claude.com/docs/id/settings.md#where-claude-code-looks-for-each-file), seperti di Windows.

715 717 

716Untuk berbagi konfigurasi itu di seluruh proyek, gunakan salah satu pendekatan ini:718Untuk berbagi konfigurasi itu di seluruh proyek, gunakan salah satu pendekatan ini:

717 719 

Details

313 313 

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

315 315 

316#### Kirim permintaan ke model yang berbeda

317 

318Jika permintaan `turn.step` gagal dengan error model ketika `model` adalah alias seperti `haiku`, perbarui ke Claude Code v2.1.309 atau yang lebih baru, atau gunakan id model lengkap. Sebelum v2.1.309, alias dikirim apa adanya.

319 

320Untuk mengirim permintaan ke model yang berbeda, teruskan ke `next` peristiwa dengan `model` yang diubah, seperti dalam `yield* next({ ...e, model: 'haiku' })`.

321 

316### Ubah atau tolak pembacaan pengaturan322### Ubah atau tolak pembacaan pengaturan

317 323 

318Hook `settings.read` berjalan pada pembacaan oleh mod dan pada pembacaan oleh Claude Code sendiri:324Gunakan hook `settings.read` untuk mengubah atau menolak pembacaan pengaturan, baik pembacaan oleh mod maupun pembacaan oleh Claude Code sendiri:

319 325 

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

321* **Pembacaan oleh Claude Code sendiri**: Claude Code menyusun pengaturan gabungan sesi. Pembacaan ini berulang ketika pengaturan atau plugin yang dimuat berubah.327* **Pembacaan oleh Claude Code sendiri**: hook Anda pertama kali berjalan ketika Claude Code menggabungkan pengaturan sesi, setelah mod sesi dimuat. Hook Anda berjalan lagi ketika pengaturan atau plugin yang dimuat berubah.

322 328 

323Sebelum Anda mengandalkan salah satu pembacaan tersebut, periksa penjaga dan versi Anda:329Periksa mod mana yang mendapatkan peristiwa ini dan versi Claude Code Anda:

324 330 

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

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


336 342 

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

338 344 

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

346 

347* **Pembacaan oleh Claude Code sendiri**: `{ plugin: 'engine', tier: 'core' }`

348* **Pembacaan oleh mod**: `plugin` adalah nama mod yang memanggil

340 349 

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

342 351 

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

344 353 

345| Nilai kembalian | Pada pembacaan Claude Code sendiri | Pada pembacaan oleh mod |354| Nilai kembalian | Pada [pembacaan Claude Code sendiri](#settings-read-hook) | Pada pembacaan oleh mod |

346| :- | :- | :- |355| :- | :- | :- |

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

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

349 358 

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


373})382})

374```383```

375 384 

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

377 386 

378### Tangani peristiwa hook pengaturan387### Tangani peristiwa hook pengaturan

379 388 

Details

421Note: Type a note and press Enter421Note: Type a note and press Enter

422```422```

423 423 

424Tambahkan `rows` agar bidang dapat menampung beberapa baris. Enter tetap mengirimkan, dan garis miring terbalik sebelum Enter memulai baris baru, demikian pula Shift+Enter jika [terminal mendukungnya](https://code.claude.com/docs/id/terminal-config.md#enter-multiline-prompts). Galeri menampilkan [bidang dengan `rows`](https://code.claude.com/docs/id/plugins/mods/gallery#input).424Atur `rows` ke 2 atau lebih untuk [bidang yang menampung beberapa baris](https://code.claude.com/docs/id/plugins/mods/gallery.md#input).

425 425 

426[Galeri antarmuka](https://code.claude.com/docs/id/plugins/mods/gallery.md) memiliki contoh dan tangkapan layar dari sebagian besar elemen. Tabel ini mencantumkan setiap elemen:426[Galeri antarmuka](https://code.claude.com/docs/id/plugins/mods/gallery.md) memiliki contoh dan tangkapan layar dari sebagian besar elemen. Tabel ini mencantumkan setiap elemen:

427 427 


546| Kunci | Apa yang dilakukannya |546| Kunci | Apa yang dilakukannya |

547| :- | :- |547| :- | :- |

548| Tab | Bergerak ke kontrol berikutnya |548| Tab | Bergerak ke kontrol berikutnya |

549| Atas dan Bawah | Bergerak antar kontrol saat gambar Anda pas. Ketika panel atau pita memiliki lebih banyak baris daripada yang dapat ditampilkan, mereka menggulirnya. Di dalam `Input`, kunci ini [berpindah antar baris bidang](https://code.claude.com/docs/id/plugins/mods/gallery.md#input) terlebih dahulu. |549| Atas dan Bawah | Bergerak antar kontrol saat gambar Anda pas. Ketika panel atau pita memiliki lebih banyak baris daripada yang dapat ditampilkan, mereka menggulirnya. Di dalam `Input` di terminal, kunci ini [berpindah antar baris bidang](https://code.claude.com/docs/id/plugins/mods/gallery.md#input), dan dari baris pertama atau terakhirnya, kunci ini berpindah ke kontrol sebelum atau sesudahnya. |

550| Enter | Menekan `Button` yang fokus, mengirimkan `Input` yang fokus, atau memilih di `Select` |550| Enter | Menekan `Button` yang fokus, mengirimkan `Input` yang fokus, atau memilih di `Select` |

551| Pintasan keyboard tombol | Menekan tombol itu. Saat `Input` memiliki fokus, setiap kunci yang dapat dicetak pergi ke bidang. |551| Pintasan keyboard tombol | Menekan tombol itu. Saat `Input` memiliki fokus, setiap kunci yang dapat dicetak pergi ke bidang. |

552| Page Up, Page Down, Home, dan End | Menggulir panel atau pita Anda ketika memiliki lebih banyak baris daripada yang dapat ditampilkan |552| Page Up, Page Down, Home, dan End | Menggulir panel atau pita Anda ketika memiliki lebih banyak baris daripada yang dapat ditampilkan |

Details

110 110 

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

112 112 

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

114 

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

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

117| [`command.run`](https://code.claude.com/docs/id/plugins/mods/api#add-a-command) | Sebuah perintah akan dijalankan | `{ text }`, `{}`, atau `next(e)` |115| [`command.run`](https://code.claude.com/docs/id/plugins/mods/api#add-a-command) | Sebuah perintah akan dijalankan | `{ text }`, `{}`, atau `next(e)` |

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

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

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

121| [`settings.read`](https://code.claude.com/docs/id/plugins/mods/events#settings-read-hook) | Sebuah mod memanggil [`$.settings.read`](https://code.claude.com/docs/id/plugins/mods/api#reach-files-processes-and-the-network), atau Claude Code membangun pengaturan gabungan sesi | `next(e)`, `{ value }`, atau `{ deny: reason }` |119| [`settings.read`](https://code.claude.com/docs/id/plugins/mods/events#settings-read-hook) | Sebuah mod memanggil [`$.settings.read`](https://code.claude.com/docs/id/plugins/mods/api#reach-files-processes-and-the-network), atau Claude Code membangun pengaturan gabungan sesi. Memerlukan Claude Code v2.1.304 atau yang lebih baru pada pembacaan milik Claude Code sendiri dan untuk `e.layers` | `next(e)`, `{ value }`, atau `{ deny: reason }` |

122 120 

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

124 122 

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

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

127 

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

129 125 

130### Giliran126### Giliran

131 127 


271| :- | :- | :-: | :-: | :-: |267| :- | :- | :-: | :-: | :-: |

272| [`Box`](https://code.claude.com/docs/id/plugins/mods/interface#build-a-tree-from-elements) | `key`, tata letak flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, `minWidth`, `minHeight`, [`borderStyle`](#box-border-styles), `borderColor`, `borderDimColor`, `backgroundColor`, `position`, `top`, `left`, `right`, `bottom`, `overflow`, `display`, `hover` | ✓ | ✓ | ✓ |268| [`Box`](https://code.claude.com/docs/id/plugins/mods/interface#build-a-tree-from-elements) | `key`, tata letak flex, [`gap`, `padding`, `margin`](#box-spacing-steps), `width`, `height`, `minWidth`, `minHeight`, [`borderStyle`](#box-border-styles), `borderColor`, `borderDimColor`, `backgroundColor`, `position`, `top`, `left`, `right`, `bottom`, `overflow`, `display`, `hover` | ✓ | ✓ | ✓ |

273| [`Text`](https://code.claude.com/docs/id/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `strikethrough`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography), `hover` | ✓ | ✓ | ✓ |269| [`Text`](https://code.claude.com/docs/id/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, [`bold`](#text-bold), `italic`, `underline`, `strikethrough`, `dimColor`, `inverse`, `wrap`, [`size`, `weight`, `mono`, `tabular`](#text-typography), `hover` | ✓ | ✓ | ✓ |

274| [`Button`](https://code.claude.com/docs/id/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `hover` | ✓ | ✓ | ✓ |270| [`Button`](https://code.claude.com/docs/id/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `children`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action`, `variant`, `role`, `hover` | ✓ | ✓ | ✓ |

275| [`Link`](https://code.claude.com/docs/id/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Lihat [Batasan](#limits). | ✓ | ✓ | ✓ |271| [`Link`](https://code.claude.com/docs/id/plugins/mods/interface#link-in-the-desktop-app) | `href`, `label`. Lihat [Batasan](#limits). | ✓ | ✓ | ✓ |

276| [`Code`](https://code.claude.com/docs/id/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |272| [`Code`](https://code.claude.com/docs/id/plugins/mods/gallery#show-code-and-changes) | `source`, `language`, `path`, `startLine`, `format`, `wrap` | ✓ | ✓ | ✓ |

277| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |273| `Markdown` | `text`, `key`, `dimColor`, `onLinkPress`, `pressableLinks` | ✓ | ✓ | ✓ |


288* **Hotkey digit pada band**: `hotkey` berupa digit pada tombol di band juga terpicu saat pengguna mengetik digit tersebut saja ke dalam prompt kosong lalu berhenti sejenak284* **Hotkey digit pada band**: `hotkey` berupa digit pada tombol di band juga terpicu saat pengguna mengetik digit tersebut saja ke dalam prompt kosong lalu berhenti sejenak

289* **Band yang diciutkan**: selama band [diciutkan](https://code.claude.com/docs/id/plugins/mods/interface.md#when-the-user-collapses-the-band), baik pintasan `action` maupun hotkey tidak menekan tombol di dalamnya285* **Band yang diciutkan**: selama band [diciutkan](https://code.claude.com/docs/id/plugins/mods/interface.md#when-the-user-collapses-the-band), baik pintasan `action` maupun hotkey tidak menekan tombol di dalamnya

290* **Dua tombol dengan satu hotkey**: jika dua tombol dalam satu gambar menyebutkan `hotkey` yang sama, tombol yang lebih belakang yang mendapatkannya286* **Dua tombol dengan satu hotkey**: jika dua tombol dalam satu gambar menyebutkan `hotkey` yang sama, tombol yang lebih belakang yang mendapatkannya

287* **`variant`**: `primary` atau `secondary`, dan nilai lain apa pun akan melempar error. Di terminal, tombol `primary` digambar dengan warna aksen kecuali tombol tersebut `plain`.

288* **`role`**: `dismiss` menandai tombol tutup, dan nilai lain apa pun akan melempar error. Lakukan penutupan di `onPress` Anda. Pada band yang berisi teks dan sebaris tombol, aplikasi Desktop dapat menggambar tombol `dismiss` pertama pada baris tersebut sebagai kontrol tutupnya sendiri. Terminal menggambar tombol tersebut seperti halnya tanpa `role`.

289 

290`Button` dapat berisi `children` sebagai pengganti `label`:

291 

292* **Apa saja yang dapat menjadi children**: string dan elemen `Text`, seperti nama yang diikuti detail redup atau chip berwarna. Claude Code menolak elemen lain apa pun di dalam `Button`.

293* **Memberi nama tombol**: `label` memberi nama tombol dan secara default bernilai teks dari children-nya. Berikan `key` atau `label` pada tombol yang children-nya bukan satu string.

294* **Di terminal**: children digambar di tempat label seharusnya berada, dan tekanan di mana pun pada children tersebut dihitung sebagai satu tekanan, sehingga Anda dapat menjadikan setiap baris dalam daftar sebagai satu tombol

295* **Di aplikasi Desktop dan ekstensi VS Code**: tombol menggambar `label`-nya

296 

297> [!NOTE]

298>

299> `Button` dengan children selain satu string memerlukan Claude Code v2.1.295 atau yang lebih baru.

291 300 

292`autoFocus` hanya menerima `true` pada kontrol apa pun, jadi hilangkan prop tersebut untuk menonaktifkannya.301`autoFocus` hanya menerima `true` pada kontrol apa pun, jadi hilangkan prop tersebut untuk menonaktifkannya.

293 302 


295 304 

296* **`Box`**: `position` beserta `top`, `left`, `right`, dan `bottom`-nya, `alignSelf`, `borderDimColor`, dan `hover`305* **`Box`**: `position` beserta `top`, `left`, `right`, dan `bottom`-nya, `alignSelf`, `borderDimColor`, dan `hover`

297* **`Text`**: `size`, `mono`, `tabular`, dan `hover`306* **`Text`**: `size`, `mono`, `tabular`, dan `hover`

298* **`Button`**: `hotkey`, `plain`, `autoFocus`, `action`, dan `hover`, sehingga pengguna menekan tombol di sana dengan klik, atau dengan Enter setelah tombol tersebut mendapatkan fokus307* **`Button`**: `hotkey`, `plain`, `autoFocus`, `action`, dan `hover`, sehingga pengguna menekan tombol di sana dengan klik, atau dengan Enter setelah tombol tersebut mendapatkan fokus. Ekstensi ini juga mengabaikan `variant` dan `role`.

299* **`Code`**: `language`, `path`, `startLine`, `format`, dan `wrap`, sehingga kode digambar tanpa warna atau nomor baris, dan blok `format: 'diff'` menampilkan teks mentah diff tersebut308* **`Code`**: `language`, `path`, `startLine`, `format`, dan `wrap`, sehingga kode digambar tanpa warna atau nomor baris, dan blok `format: 'diff'` menampilkan teks mentah diff tersebut

300* **`Input` dan `Select`**: `autoFocus`309* **`Input` dan `Select`**: `autoFocus`, serta `rows` pada `Input`

301* **`Svg`**: `isInteractive`310* **`Svg`**: `isInteractive`

302 311 

303### Gaya border `Box`312### Gaya border `Box`


364| Waktu eksekusi handler `.catch` | 1 detik |373| Waktu eksekusi handler `.catch` | 1 detik |

365| Semua hook `session.end` secara keseluruhan | Selama [anggaran hook SessionEnd](https://code.claude.com/docs/id/hooks.md#sessionend-input), 1,5 detik kecuali Anda mengubahnya, dihitung sejak hook `SessionEnd` di pengaturan Anda selesai |374| Semua hook `session.end` secara keseluruhan | Selama [anggaran hook SessionEnd](https://code.claude.com/docs/id/hooks.md#sessionend-input), 1,5 detik kecuali Anda mengubahnya, dihitung sejak hook `SessionEnd` di pengaturan Anda selesai |

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

376| `stdout` dan `stderr` `$.process.run` | Masing-masing 4 MiB. `isStdoutTruncated` atau `isStderrTruncated` bernilai `true` jika salah satunya dipotong. |

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

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

369| Body permintaan `$.http.fetch` | 4 MiB, dihitung dalam karakter. Panggilan dengan body yang lebih besar akan ditolak (reject). |379| Body permintaan `$.http.fetch` | 4 MiB, dihitung dalam karakter. Panggilan dengan body yang lebih besar akan ditolak (reject). |


381| `$.store` | Total 4 MiB JSON |391| `$.store` | Total 4 MiB JSON |

382| `$.session.messages()` | 4.096 entri terbaru |392| `$.session.messages()` | 4.096 entri terbaru |

383| Penggambaran ulang `$.ui.invalidate('ui.render')` | Dibatasi hingga 10 per detik, atau 30 di terminal untuk panel yang terlihat, band yang diperluas, dan baris petunjuk di bawah prompt. Panggilan yang datang lebih cepat digabungkan. |393| Penggambaran ulang `$.ui.invalidate('ui.render')` | Dibatasi hingga 10 per detik, atau 30 di terminal untuk panel yang terlihat, band yang diperluas, dan baris petunjuk di bawah prompt. Panggilan yang datang lebih cepat digabungkan. |

384| `$.ui.toast` | Ditampilkan selama 4 detik kecuali Anda meneruskan `{ timeoutMs }` |394| `$.ui.toast` | Ditampilkan selama 4 detik kecuali Anda meneruskan `{ timeoutMs }`. Di [renderer klasik](https://code.claude.com/docs/id/fullscreen.md#enable-fullscreen-rendering), toast yang lebih baru dari sebuah mod dapat [menggantikan toast lamanya](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#a-toast-doesn’t-appear) yang sedang ditampilkan atau menunggu untuk ditampilkan. |

385| Panel yang dibuka tanpa diminta pengguna | Ditempatkan mulai dari 144 kolom terminal, 110 setelah pengguna pernah membukanya sekali |395| Panel yang dibuka tanpa diminta pengguna | Ditempatkan mulai dari 144 kolom terminal, 110 setelah pengguna pernah membukanya sekali |

396| Kedalaman bersarang argumen panggilan API mod | 28.000 level. Melewati batas itu, panggilan ditolak (reject) dengan pesan yang diakhiri `nesting deeper than 28000 levels is not supported`. Memerlukan Claude Code v2.1.299 atau yang lebih baru. |

397| Kedalaman bersarang event yang diubah dan diteruskan ke `next`, di luar [hook async generator](#events) seperti hook pada `turn.step` | 28.000 level. Melewati batas itu, `next` ditolak (reject) dengan pesan yang diakhiri `nesting deeper than 28000 levels is not supported`. Memerlukan Claude Code v2.1.299 atau yang lebih baru. |

398| Kedalaman bersarang nilai kembalian hook, di luar `ui.render`, `ui.resolve`, dan hook async generator | 28.000 level. Melewati batas itu, hasil hook ditolak, dan [pemberitahuan yang melaporkannya](https://code.claude.com/docs/id/plugins/mods/troubleshoot.md#find-out-why-a-mod-does-nothing) menyertakan `nesting deeper than 28000 levels is not supported`. Memerlukan Claude Code v2.1.299 atau yang lebih baru. |

386| Cakupan, seperti fungsi, blok, dan loop, yang bersarang satu di dalam yang lain dalam satu file modul hook | 2.000 |399| Cakupan, seperti fungsi, blok, dan loop, yang bersarang satu di dalam yang lain dalam satu file modul hook | 2.000 |

387| Nama perintah, tool, tipe subagent, dan panel | Huruf, digit, `_`, dan `-`, hingga 64 karakter |400| Nama perintah, tool, tipe subagent, dan panel | Huruf, digit, `_`, dan `-`, hingga 64 karakter |

388| Satu tes `claude plugin test` | 5 detik kecuali tes tersebut menetapkan `timeoutMs` |401| Satu tes `claude plugin test` | 5 detik kecuali tes tersebut menetapkan `timeoutMs` |

Details

341 341 

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

343 343 

344Entri `env` yang dikembalikan tidak menjadi environment variable. Aturan `allow`, `ask`, dan `deny` yang dikembalikan tidak diperiksa pada panggilan tool. Tetapkan itu di [file pengaturan](https://code.claude.com/docs/id/settings.md), atau panggil [`$.env.set`](https://code.claude.com/docs/id/plugins/mods/api#reach-files-processes-and-the-network) untuk environment variable.344Jika Anda mengembalikan aturan izin atau `env` pada [pembacaan milik Claude Code sendiri](https://code.claude.com/docs/id/plugins/mods/events.md#settings-read-hook), aturan tersebut tidak diperiksa pada panggilan tool dan entri `env` tidak menjadi environment variable. Gunakan [file pengaturan](https://code.claude.com/docs/id/settings.md) untuk keduanya, atau [`$.env.set`](https://code.claude.com/docs/id/plugins/mods/api#reach-files-processes-and-the-network) untuk `env`.

345 345 

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

347 347 


349| :- | :- |349| :- | :- |

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

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

352| `settings.read: the answer for <key> is no value the key can hold` | Nilai yang dikembalikan tidak sesuai dengan skema kunci tersebut. [Kembalikan nilai yang diizinkannya](#settings-read-key-refused). |352| `settings.read: the answer for <key> is no value the key can hold` | Claude Code menolak nilai yang dikembalikan sebuah hook untuk kunci tersebut. Hook tersebut bisa milik Anda atau milik mod lain. Ikuti [langkah untuk kasus Anda](#settings-read-key-refused). |

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

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

355| `settings.read: refused to the engine` | Pembacaan ditolak, sehingga tidak ada `{ value }` dari hook mana pun yang diterapkan. [Temukan apa yang menolaknya](#settings-read-refused). |355| `settings.read: refused to the engine` | Nilai Anda tidak diterapkan karena pembacaan milik Claude Code sendiri ditolak. [Temukan apa yang menolaknya](#settings-read-refused). |

356 356 

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

358 358 

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

360 360 

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

362 362 

363```text theme={null}363```text theme={null}

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

365```365```

366 366 

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

368 

369* **Nilai Anda tidak sesuai dengan skema kunci tersebut**: kembalikan nilai yang diizinkan oleh entri kunci tersebut di [referensi pengaturan](https://code.claude.com/docs/id/settings-reference.md).

370* **Nilai Anda sesuai**: nilai yang tidak sesuai berasal dari hook `settings.read` milik mod lain. Untuk menemukan mod tersebut, ikuti [langkah-langkah untuk mematikan mod satu per satu](#settings-read-refused). Cari baris ini di setiap log baru, alih-alih `refused to the engine`.

371 

372Selama nilai tersebut tidak sesuai, kunci tersebut mempertahankan nilai hasil penggabungan dari sumber pengaturan sebelum hook mana pun menjawab. Baris tersebut menyebutnya sebagai nilai milik pengaturan itu sendiri.

368 373 

369### `settings.read: refused to the engine`374### `settings.read: refused to the engine`

370 375 

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

372 377 

373```text theme={null}378```text theme={null}

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

375```380```

376 381 

377Cari teks `<reason>` di kode hook Anda sendiri:382Cari alasan di dalam tanda kurung tersebut di kode Anda:

378 383 

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

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

386 1. Mulai sesi dari shell Anda dengan `claude --debug-file ./settings-read-2.log`, diikuti flag yang digunakan saat sesi tersebut dimulai. Gunakan path baru setiap kali.

387 2. Cari `refused to the engine` di file tersebut. Jika baris tersebut ada, matikan mod berikutnya. Jika tidak, mod terakhir yang Anda matikan adalah yang menolak pembacaan tersebut, jadi biarkan tetap mati.

381 388 

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

383 390 

384## Baca debug log391## Baca debug log

385 392 

Details

192Ekstensi VS Code dan aplikasi Desktop juga memiliki toggle auto-connect:192Ekstensi VS Code dan aplikasi Desktop juga memiliki toggle auto-connect:

193 193 

194* **VS Code extension**: **Enable Remote Control for all sessions** dalam bagian Settings [command menu](https://code.claude.com/docs/id/vs-code.md#use-the-prompt-box).194* **VS Code extension**: **Enable Remote Control for all sessions** dalam bagian Settings [command menu](https://code.claude.com/docs/id/vs-code.md#use-the-prompt-box).

195* **Desktop app**: **Settings > Claude Code > Connect new sessions to Remote Control**. Lihat [Mengontrol sesi mana yang muncul di perangkat Anda yang lain](https://code.claude.com/docs/id/desktop.md#control-which-sessions-appear-on-your-other-devices).195* **Desktop app**: **Connect new sessions to Remote Control** di **Settings > Code** atau **Settings > Claude Code**. Lihat [Mengontrol sesi mana yang muncul di perangkat Anda yang lain](https://code.claude.com/docs/id/desktop.md#control-which-sessions-appear-on-your-other-devices).

196 196 

197Untuk mengaktifkan auto-connect dari file pengaturan, atur [`remoteControlAtStartup`](https://code.claude.com/docs/id/settings-reference#remotecontrolatstartup) ke `true` dalam `~/.claude/settings.json` pengguna Anda atau dalam [managed settings](https://code.claude.com/docs/id/managed-settings.md). Dalam pengaturan proyek atau lokal (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code menghormati `false` dan mematikan auto-connect untuk repositori itu, tetapi mengabaikan `true`, sehingga file yang diperiksa tidak dapat mengaktifkan Remote Control untuk semua orang yang membuka repositori.197Untuk mengaktifkan auto-connect dari file pengaturan, atur [`remoteControlAtStartup`](https://code.claude.com/docs/id/settings-reference#remotecontrolatstartup) ke `true` dalam `~/.claude/settings.json` pengguna Anda atau dalam [managed settings](https://code.claude.com/docs/id/managed-settings.md). Dalam pengaturan proyek atau lokal (`.claude/settings.json`, `.claude/settings.local.json`), Claude Code menghormati `false` dan mematikan auto-connect untuk repositori itu, tetapi mengabaikan `true`, sehingga file yang diperiksa tidak dapat mengaktifkan Remote Control untuk semua orang yang membuka repositori.

198 198 


363 * Perintah dengan output teks: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, dan `/reload-plugins`. `/usage-credits` mencetak URL penagihan alih-alih membuka browser. `/reload-plugins` hanya berfungsi ketika sesi berjalan di terminal interaktif; sesi tanpa terminal interaktif akan menolaknya.363 * Perintah dengan output teks: `/compact`, `/clear`, `/context`, `/usage`, `/exit`, `/usage-credits`, `/recap`, dan `/reload-plugins`. `/usage-credits` mencetak URL penagihan alih-alih membuka browser. `/reload-plugins` hanya berfungsi ketika sesi berjalan di terminal interaktif; sesi tanpa terminal interaktif akan menolaknya.

364 * `/model`, `/effort`, `/fast`, `/color`, dan `/rename`: berikan nilai sebagai argumen, misalnya `/model sonnet` atau `/effort high`. Dari perangkat seluler dan web, `/model` dan `/effort` menerima argumen sebagai pengganti pemilih atau slider terminal.364 * `/model`, `/effort`, `/fast`, `/color`, dan `/rename`: berikan nilai sebagai argumen, misalnya `/model sonnet` atau `/effort high`. Dari perangkat seluler dan web, `/model` dan `/effort` menerima argumen sebagai pengganti pemilih atau slider terminal.

365 * `/mcp`: dari aplikasi seluler, mengembalikan ringkasan teks status server alih-alih membuka pemilih. Di web, `/mcp` tanpa argumen membuka direktori [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) alih-alih mengembalikan ringkasan. [Subperintah](https://code.claude.com/docs/id/commands.md#all-commands) `reconnect`, `enable`, dan `disable` berfungsi dari keduanya ketika sesi berjalan di terminal interaktif. `/mcp reconnect` tanpa nama server akan mencoba ulang setiap server yang gagal atau memerlukan autentikasi. Untuk mengotorisasi konektor claude.ai tanpa pemilih, lihat [Otorisasi konektor lagi dari shell Anda](#authorize-a-connector-again-from-your-shell).365 * `/mcp`: dari aplikasi seluler, mengembalikan ringkasan teks status server alih-alih membuka pemilih. Di web, `/mcp` tanpa argumen membuka direktori [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) alih-alih mengembalikan ringkasan. [Subperintah](https://code.claude.com/docs/id/commands.md#all-commands) `reconnect`, `enable`, dan `disable` berfungsi dari keduanya ketika sesi berjalan di terminal interaktif. `/mcp reconnect` tanpa nama server akan mencoba ulang setiap server yang gagal atau memerlukan autentikasi. Untuk mengotorisasi konektor claude.ai tanpa pemilih, lihat [Otorisasi konektor lagi dari shell Anda](#authorize-a-connector-again-from-your-shell).

366 * `/config`: dari aplikasi seluler, berikan `key=value` untuk mengatur suatu pengaturan, atau jalankan tanpa argumen untuk menampilkan daftar kunci yang dapat Anda atur. Di web, `/config` justru membuka bagian Claude Code di pengaturan Anda.366 * `/config`: dari aplikasi seluler, berikan `key=value` untuk mengatur suatu pengaturan, atau jalankan tanpa argumen untuk menampilkan daftar kunci yang dapat Anda atur. Di web, `/config` justru membuka **Settings > Code** atau **Settings > Claude Code**.

367 * Pada paket Team dan Enterprise, `/usage-credits` dari perangkat seluler atau web tidak mengirimkan [permintaan kredit penggunaan kepada admin Anda](https://code.claude.com/docs/id/costs.md#add-usage-credits-to-your-subscription). Pengiriman memerlukan konfirmasi yang hanya muncul di CLI interaktif, sehingga perintah tersebut meminta Anda untuk menjalankannya di sana.367 * Pada paket Team dan Enterprise, `/usage-credits` dari perangkat seluler atau web tidak mengirimkan [permintaan kredit penggunaan kepada admin Anda](https://code.claude.com/docs/id/costs.md#add-usage-credits-to-your-subscription). Pengiriman memerlukan konfirmasi yang hanya muncul di CLI interaktif, sehingga perintah tersebut meminta Anda untuk menjalankannya di sana.

368 * `/autocompact`, mulai v2.1.221: berikan ukuran jendela sebagai argumen, misalnya `/autocompact 500k`. Tanpa argumen, perintah ini mencetak ukuran jendela saat ini sebagai teks alih-alih membuka dialog yang ditampilkan perintah tersebut dalam sesi terminal.368 * `/autocompact`, mulai v2.1.221: berikan ukuran jendela sebagai argumen, misalnya `/autocompact 500k`. Tanpa argumen, perintah ini mencetak ukuran jendela saat ini sebagai teks alih-alih membuka dialog yang ditampilkan perintah tersebut dalam sesi terminal.

369 * `/advisor`, mulai v2.1.260: berikan model sebagai argumen, misalnya `/advisor opus`, atau berikan `off` untuk mematikan advisor. Kedua bentuk hanya berlaku untuk sesi saat ini dan tidak mengubah default yang tersimpan. Tanpa argumen, perintah ini mencetak advisor saat ini sebagai teks alih-alih membuka pemilih.369 * `/advisor`, mulai v2.1.260: berikan model sebagai argumen, misalnya `/advisor opus`, atau berikan `off` untuk mematikan advisor. Kedua bentuk hanya berlaku untuk sesi saat ini dan tidak mengubah default yang tersimpan. Tanpa argumen, perintah ini mencetak advisor saat ini sebagai teks alih-alih membuka pemilih.

routines.md +9 −5

Details

77 77 

78**2. Beri nama tugas dan tulis prompt**78**2. Beri nama tugas dan tulis prompt**

79 79 

80Berikan tugas terjadwal nama yang deskriptif dan tulis prompt yang dijalankan Claude setiap kali. Prompt adalah bagian terpenting: tugas berjalan secara otonom, sehingga prompt harus mandiri dan eksplisit tentang apa yang harus dilakukan dan seperti apa keberhasilan itu. Pilih model di pemilih model pada input prompt. Claude menggunakannya pada setiap eksekusi.80Berikan tugas terjadwal nama yang deskriptif dan tulis prompt yang dijalankan Claude setiap kali. Prompt adalah bagian terpenting: tugas berjalan secara otonom, sehingga prompt harus mandiri dan eksplisit tentang apa yang harus dilakukan dan seperti apa keberhasilan itu.

81 81 

82Ketika pemicu aktif, sesi menerima prompt yang disimpan sebagai tugasnya dan melaksanakannya, alih-alih memperlakukannya sebagai konten tidak tepercaya yang tiba di tengah percakapan. Pemicu hanya membuktikan bahwa prompt disimpan sebelumnya oleh sesi yang berwenang di akun Anda. Karena itu, prompt yang dipicu bukan input pengguna langsung dan tidak dapat berfungsi sebagai persetujuan atau izin untuk tindakan selama eksekusi. Konten yang diambil sesi selama eksekusi tetap ditangani seperti biasa.82Ketika pemicu aktif, sesi menerima prompt yang disimpan sebagai tugasnya dan melaksanakannya, alih-alih memperlakukannya sebagai konten tidak tepercaya yang tiba di tengah percakapan. Pemicu hanya membuktikan bahwa prompt disimpan sebelumnya oleh sesi yang berwenang di akun Anda. Karena itu, prompt yang dipicu bukan input pengguna langsung dan tidak dapat berfungsi sebagai persetujuan atau izin untuk tindakan selama eksekusi. Konten yang diambil sesi selama eksekusi tetap ditangani seperti biasa.

83 83 


115 115 

116Jika tugas Anda perlu menjangkau layanan Anda sendiri secara langsung, atau domain di luar daftar tersebut, edit [akses jaringan](https://code.claude.com/docs/id/cloud-environments.md#network-access) lingkungan sebelum menjalankan. Untuk menggunakan lingkungan terpisah, [buat satu](https://code.claude.com/docs/id/cloud-environments.md#configure-your-environment) terlebih dahulu.116Jika tugas Anda perlu menjangkau layanan Anda sendiri secara langsung, atau domain di luar daftar tersebut, edit [akses jaringan](https://code.claude.com/docs/id/cloud-environments.md#network-access) lingkungan sebelum menjalankan. Untuk menggunakan lingkungan terpisah, [buat satu](https://code.claude.com/docs/id/cloud-environments.md#configure-your-environment) terlebih dahulu.

117 117 

118**6. Tinjau konektor**118**6. Pilih model dan tingkat effort**

119 

120Pilih model di pemilih model pada input prompt untuk digunakan Claude pada setiap eksekusi. Untuk tugas Claude Code, jika model menawarkan [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level), **Effort** di pemilih yang sama menampilkan tingkat saat ini. Untuk mengubahnya, pilih tingkat lain. Opsi **Default** pada pemilih tidak menawarkan tingkat apa pun.

121 

122**7. Tinjau konektor**

119 123 

120Beralih ke tab **Connectors** pada **Advanced settings**. Semua [konektor MCP](https://code.claude.com/docs/id/mcp.md) Anda yang terhubung disertakan secara default. Hapus yang tidak dibutuhkan tugas: Claude dapat menggunakan konektor yang disertakan selama eksekusi, termasuk operasi tulis. Untuk mengetahui kapan eksekusi berhenti untuk bertanya kepada Anda terlebih dahulu, lihat [Permintaan izin selama eksekusi](#permission-prompts-during-a-run).124Beralih ke tab **Connectors** pada **Advanced settings**. Semua [konektor MCP](https://code.claude.com/docs/id/mcp.md) Anda yang terhubung disertakan secara default. Hapus yang tidak dibutuhkan tugas: Claude dapat menggunakan konektor yang disertakan selama eksekusi, termasuk operasi tulis. Untuk mengetahui kapan eksekusi berhenti untuk bertanya kepada Anda terlebih dahulu, lihat [Permintaan izin selama eksekusi](#permission-prompts-during-a-run).

121 125 

122**7. Buat tugas**126**8. Buat tugas**

123 127 

124Klik **Create**. Dialog tertutup dan halaman detail tugas baru terbuka. Tugas berjalan saat salah satu pemicunya cocok berikutnya. Untuk memulai eksekusi segera, klik **Run now** di halaman detail.128Klik **Create**. Dialog tertutup dan halaman detail tugas baru terbuka. Tugas berjalan saat salah satu pemicunya cocok berikutnya. Untuk memulai eksekusi segera, klik **Run now** di halaman detail.

125 129 


136Di aplikasi Desktop, jika menu dengan **Local** dan **Cloud** terbuka, pilih **Cloud**. Halaman berjudul **New routine** atau **New scheduled task** akan terbuka. Isi kolom-kolomnya:140Di aplikasi Desktop, jika menu dengan **Local** dan **Cloud** terbuka, pilih **Cloud**. Halaman berjudul **New routine** atau **New scheduled task** akan terbuka. Isi kolom-kolomnya:

137 141 

138* **Name**: masukkan nama.142* **Name**: masukkan nama.

139* **Instructions**: masukkan prompt. Di kotak yang sama, pilih model, repositori, dan lingkungan. Untuk mengetahui apa yang dikontrol masing-masing, lihat langkah-langkah di bawah [Buat dari web](#create-from-the-web).143* **Instructions**: masukkan prompt. Di kotak yang sama, pilih model, tingkat effort jika model menawarkannya, repositori, dan lingkungan. Untuk mengetahui apa yang dikontrol masing-masing, lihat langkah-langkah di bawah [Buat dari web](#create-from-the-web).

140* **Select a trigger**: pilih **Schedule**, **GitHub event**, atau **API**. Untuk jadwal, lihat [Tambahkan pemicu jadwal](#add-a-schedule-trigger). Untuk [peristiwa GitHub](#add-a-github-trigger), pilih repositori. Untuk [pemicu API](#add-an-api-trigger), salin token dari dialog **API token** yang terbuka setelah Anda mengklik **Create**, karena token hanya ditampilkan sekali. Untuk menggabungkan beberapa pemicu, klik **Add another trigger**.144* **Select a trigger**: pilih **Schedule**, **GitHub event**, atau **API**. Untuk jadwal, lihat [Tambahkan pemicu jadwal](#add-a-schedule-trigger). Untuk [peristiwa GitHub](#add-a-github-trigger), pilih repositori. Untuk [pemicu API](#add-an-api-trigger), salin token dari dialog **API token** yang terbuka setelah Anda mengklik **Create**, karena token hanya ditampilkan sekali. Untuk menggabungkan beberapa pemicu, klik **Add another trigger**.

141* **Connectors**: semua konektor Anda yang terhubung disertakan secara default, jadi hapus yang tidak dibutuhkan tugas.145* **Connectors**: semua konektor Anda yang terhubung disertakan secara default, jadi hapus yang tidak dibutuhkan tugas.

142 146 


153* **Pemicu API**: edit tugas di web di [claude.ai/code/routines](https://claude.ai/code/routines)157* **Pemicu API**: edit tugas di web di [claude.ai/code/routines](https://claude.ai/code/routines)

154* **[Pemicu GitHub](#add-a-github-trigger)**: edit tugas di web, atau minta Claude di CLI. Menambahkannya dari CLI memerlukan Claude Code v2.1.225 atau lebih baru158* **[Pemicu GitHub](#add-a-github-trigger)**: edit tugas di web, atau minta Claude di CLI. Menambahkannya dari CLI memerlukan Claude Code v2.1.225 atau lebih baru

155 159 

156Tugas terjadwal tanpa pemicu jadwal, seperti yang hanya dimulai oleh panggilan API atau peristiwa GitHub, tidak memiliki waktu eksekusi berikutnya. CLI tidak menampilkannya ketika Claude menyimpan atau memperbaruinya. Sebelum v2.1.211, CLI melaporkan waktu eksekusi berikutnya pada tahun 1 untuk tugas-tugas ini.160Tugas terjadwal tanpa pemicu jadwal, seperti yang hanya dimulai oleh panggilan API atau peristiwa GitHub, tidak memiliki waktu eksekusi berikutnya. CLI tidak menampilkannya ketika Claude menyimpan atau memperbaruinya.

157 161 

158## Konfigurasi pemicu162## Konfigurasi pemicu

159 163 

sandboxing.md +3 −2

Details

320* **Setiap perintah dalam panggilan harus cocok**: `npm ci && docker compose build` tetap berada di dalam sandbox kecuali ada entri lain yang mencakup `npm ci`320* **Setiap perintah dalam panggilan harus cocok**: `npm ci && docker compose build` tetap berada di dalam sandbox kecuali ada entri lain yang mencakup `npm ci`

321* **Claude Code mencocokkan teks panggilan**: skrip atau target `make` yang memanggil `docker` secara internal tidak cocok, begitu pula `/usr/local/bin/docker`321* **Claude Code mencocokkan teks panggilan**: skrip atau target `make` yang memanggil `docker` secara internal tidak cocok, begitu pula `/usr/local/bin/docker`

322* **Beberapa panggilan tetap berada di dalam sandbox**: redirect ke file, `cd`, atau command substitution seperti `$(...)` membuat seluruh panggilan tetap berada di dalam sandbox. [Entri referensi](https://code.claude.com/docs/id/settings-reference.md#sandbox-excludedcommands) mencantumkan lebih banyak panggilan yang tetap berada di dalam sandbox322* **Beberapa panggilan tetap berada di dalam sandbox**: redirect ke file, `cd`, atau command substitution seperti `$(...)` membuat seluruh panggilan tetap berada di dalam sandbox. [Entri referensi](https://code.claude.com/docs/id/settings-reference.md#sandbox-excludedcommands) mencantumkan lebih banyak panggilan yang tetap berada di dalam sandbox

323* **`git clone` memerlukan path relatif**: entri Anda tidak mencakup clone yang menyebutkan path absolut, path yang diawali `~`, atau path dengan segmen `..`. Jika clone dapat dilakukan di dalam direktori kerja Anda, minta Claude menggunakan path relatif tanpa segmen `..`, seperti `vendor/lib`

323* **Lokasi penyimpanan entri dapat berpengaruh**: selama sandbox [diwajibkan oleh admin](#repository-settings-under-an-admin-required-sandbox), Claude Code mengabaikan entri di `.claude/settings.json` dan `.claude/settings.local.json`324* **Lokasi penyimpanan entri dapat berpengaruh**: selama sandbox [diwajibkan oleh admin](#repository-settings-under-an-admin-required-sandbox), Claude Code mengabaikan entri di `.claude/settings.json` dan `.claude/settings.local.json`

324 325 

325Perintah yang dikecualikan melewati alur izin biasa:326Perintah yang dikecualikan melewati alur izin biasa:


354 355 

355Sandbox memiliki dua lapisan independen: [isolasi filesystem](#filesystem-isolation) mengontrol path mana yang dapat dibaca dan ditulis oleh perintah sandbox, dan [isolasi jaringan](#network-isolation) mengontrol domain mana yang dapat mereka jangkau. Dengan lapisan filesystem dimatikan, perintah sandbox mendapatkan akses baca dan tulis tanpa batas ke filesystem host, sementara lalu lintas jaringan keluarnya tetap terbatas pada domain yang Anda izinkan. Matikan lapisan ini ketika Anda menggunakan sandbox untuk mengontrol ke mana perintah terhubung, bukan apa yang mereka tulis.356Sandbox memiliki dua lapisan independen: [isolasi filesystem](#filesystem-isolation) mengontrol path mana yang dapat dibaca dan ditulis oleh perintah sandbox, dan [isolasi jaringan](#network-isolation) mengontrol domain mana yang dapat mereka jangkau. Dengan lapisan filesystem dimatikan, perintah sandbox mendapatkan akses baca dan tulis tanpa batas ke filesystem host, sementara lalu lintas jaringan keluarnya tetap terbatas pada domain yang Anda izinkan. Matikan lapisan ini ketika Anda menggunakan sandbox untuk mengontrol ke mana perintah terhubung, bukan apa yang mereka tulis.

356 357 

357`sandbox.filesystem.disabled` default ke `false`. Memerlukan Claude Code v2.1.216 atau lebih baru.358`sandbox.filesystem.disabled` default ke `false`.

358 359 

359> [!WARNING]360> [!WARNING]

360>361>


365Karena mematikan isolasi filesystem memperluas apa yang dapat dilakukan perintah sandbox, Claude Code hanya menghormati `filesystem.disabled` dari sumber pengaturan berikut:366Karena mematikan isolasi filesystem memperluas apa yang dapat dilakukan perintah sandbox, Claude Code hanya menghormati `filesystem.disabled` dari sumber pengaturan berikut:

366 367 

367* Pengaturan pengguna, pengaturan terkelola, dan flag CLI `--settings` dapat mengaturnya. Pengaturan proyek di `.claude/settings.json` dan `.claude/settings.local.json` tidak dapat, sehingga proyek yang di-checkout tidak dapat mematikan isolasi filesystem.368* Pengaturan pengguna, pengaturan terkelola, dan flag CLI `--settings` dapat mengaturnya. Pengaturan proyek di `.claude/settings.json` dan `.claude/settings.local.json` tidak dapat, sehingga proyek yang di-checkout tidak dapat mematikan isolasi filesystem.

368* Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` sama sekali, atau mencantumkan entri `sandbox.credentials.files` apa pun dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat mengatur kunci tersebut. Ini mencegah developer mematikan isolasi filesystem dalam deployment semacam itu; untuk mematikannya bagi semua orang, atur `"disabled": true` di pengaturan terkelola.369* Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` dengan cara apa pun, atau mencantumkan entri `sandbox.credentials.files` apa pun dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat mengatur kunci tersebut. Ini mencegah developer mematikan isolasi filesystem dalam deployment semacam itu; untuk mematikannya bagi semua orang, atur `"disabled": true` di pengaturan terkelola.

369* Ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/id/env-vars) diatur, Claude Code mengabaikan `filesystem.disabled` dari setiap sumber, termasuk pengaturan terkelola, dan tetap mengaktifkan isolasi filesystem.370* Ketika [`CLAUDE_CODE_SUBPROCESS_ENV_SCRUB`](https://code.claude.com/docs/id/env-vars) diatur, Claude Code mengabaikan `filesystem.disabled` dari setiap sumber, termasuk pengaturan terkelola, dan tetap mengaktifkan isolasi filesystem.

370 371 

371Entri `mask` yang [valid](https://code.claude.com/docs/id/settings-reference.md#invalid-credential-entries-in-managed-settings) tidak mengunci kunci tersebut, bahkan ketika Claude Code [melakukan fallback ke `deny`](#mask-credential-files) untuk entri tersebut saat startup. Cantumkan path yang tidak dapat di-mask, seperti direktori kredensial, sebagai entri `deny` eksplisit di pengaturan terkelola, yang mengunci kunci tersebut.372Entri `mask` yang [valid](https://code.claude.com/docs/id/settings-reference.md#invalid-credential-entries-in-managed-settings) tidak mengunci kunci tersebut, bahkan ketika Claude Code [melakukan fallback ke `deny`](#mask-credential-files) untuk entri tersebut saat startup. Cantumkan path yang tidak dapat di-mask, seperti direktori kredensial, sebagai entri `deny` eksplisit di pengaturan terkelola, yang mengunci kunci tersebut.

Details

381 381 

382| Flag, dengan contoh nilai | Teruskan ke | Fungsinya |382| Flag, dengan contoh nilai | Teruskan ke | Fungsinya |

383| :- | :- | :- |383| :- | :- | :- |

384| `--release-idle-session-min 30` | Setiap runner yang dimulai oleh hook Anda | Runner melepaskan sesinya setelah idle selama jumlah menit tersebut lalu keluar dengan 0. Sesi dilanjutkan ketika penggunanya mengirim pesan berikutnya, tetapi [pekerjaan yang belum di-push akan hilang](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#additional-limitations). |384| `--release-idle-session-min 30` | Setiap runner yang dimulai oleh hook Anda | Runner melepaskan sesinya setelah idle selama jumlah menit tersebut lalu keluar dengan 0. Sesi dilanjutkan ketika penggunanya mengirim pesan berikutnya, tetapi [pekerjaan yang belum di-push akan hilang](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#additional-limitations). [Tahan sesi](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#keep-an-idle-session-while-its-processes-run) untuk proses yang dibiarkannya tetap berjalan. |

385| `--kill-session-after-min 480` | Setiap runner yang dimulai oleh hook Anda | Membatasi setiap sesi hingga jumlah menit tersebut, sebagai cadangan untuk [sesi yang tidak dihitung sebagai idle](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), jadi atur nilainya di atas sesi terpanjang yang Anda perkirakan |385| `--kill-session-after-min 480` | Setiap runner yang dimulai oleh hook Anda | Membatasi setiap sesi hingga jumlah menit tersebut, sebagai cadangan untuk [sesi yang tidak dihitung sebagai idle](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), jadi atur nilainya di atas sesi terpanjang yang Anda perkirakan |

386| `--exit-if-unused-min 60` | Runner standby, yang dimulai oleh hook Anda untuk permintaan pre-warming | Runner standby yang tidak pernah mengambil sesi akan keluar setelah jumlah menit tersebut. Jika Anda mengatur [`--min-idle`](https://code.claude.com/docs/id/self-hosted-environments-reference#orchestrator-cli-flags), Anda akan mendapatkan pengganti kecuali standby tersebut berlebih, jadi gunakan nilai yang jauh di atas waktu boot Anda. |386| `--exit-if-unused-min 60` | Runner standby, yang dimulai oleh hook Anda untuk permintaan pre-warming | Runner standby yang tidak pernah mengambil sesi akan keluar setelah jumlah menit tersebut. Jika Anda mengatur [`--min-idle`](https://code.claude.com/docs/id/self-hosted-environments-reference#orchestrator-cli-flags), Anda akan mendapatkan pengganti kecuali standby tersebut berlebih, jadi gunakan nilai yang jauh di atas waktu boot Anda. |

387 387 

Details

68| `code.claude.com` dan `claude.com` | 443 | Pencarian dokumentasi oleh agen claude-code-guide built-in dan permintaan WebFetch yang telah disetujui sebelumnya selama sesi. Memblokir host-host ini hanya mempengaruhi pencarian dokumentasi. |68| `code.claude.com` dan `claude.com` | 443 | Pencarian dokumentasi oleh agen claude-code-guide built-in dan permintaan WebFetch yang telah disetujui sebelumnya selama sesi. Memblokir host-host ini hanya mempengaruhi pencarian dokumentasi. |

69| `*.frame.claudeusercontent.com` | 443 | Hanya ketika [alat Artifact](https://code.claude.com/docs/id/artifacts.md#availability) tersedia untuk sesi di organisasi Anda; default bervariasi menurut paket, sesuai tabel ketersediaan di sana. Atur `CLAUDE_CODE_DISABLE_ARTIFACT=1` di runner untuk menjaga alat tetap dinonaktifkan terlepas dari pengaturan organisasi. |69| `*.frame.claudeusercontent.com` | 443 | Hanya ketika [alat Artifact](https://code.claude.com/docs/id/artifacts.md#availability) tersedia untuk sesi di organisasi Anda; default bervariasi menurut paket, sesuai tabel ketersediaan di sana. Atur `CLAUDE_CODE_DISABLE_ARTIFACT=1` di runner untuk menjaga alat tetap dinonaktifkan terlepas dari pengaturan organisasi. |

70| `registry.npmjs.org` | 443 | Ketika sesi menginstal plugin, baik untuk mengambil paket plugin sumber npm maupun untuk menginstal dependensi Node.js plugin, atau ketika server MCP yang diluncurkan `npx` berjalan |70| `registry.npmjs.org` | 443 | Ketika sesi menginstal plugin, baik untuk mengambil paket plugin sumber npm maupun untuk menginstal dependensi Node.js plugin, atau ketika server MCP yang diluncurkan `npx` berjalan |

71| Mirror internal dari registri paket yang digunakan build Anda, atau registri itu sendiri | 443, atau port mirror Anda | Ketika sesi menginstal dependensi untuk mem-build atau menguji repositori Anda |

71| `http-intake.logs.us5.datadoghq.com` | 443 | Metrik operasional Anthropic. Hanya ketika `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` diatur; dimatikan secara default di lingkungan yang di-host sendiri. |72| `http-intake.logs.us5.datadoghq.com` | 443 | Metrik operasional Anthropic. Hanya ketika `CLAUDE_CODE_BYOC_ENABLE_DATADOG=1` diatur; dimatikan secara default di lingkungan yang di-host sendiri. |

72| `browser-intake-us5-datadoghq.com` | 443 | Unggahan laporan kesalahan Anthropic, dikirim hanya ketika [pelaporan kesalahan](https://code.claude.com/docs/id/data-usage.md#telemetry-services) diaktifkan untuk akun sesi. Ditekan oleh `DISABLE_ERROR_REPORTING=1` atau `DISABLE_TELEMETRY=1`. |73| `browser-intake-us5-datadoghq.com` | 443 | Unggahan laporan kesalahan Anthropic, dikirim hanya ketika [pelaporan kesalahan](https://code.claude.com/docs/id/data-usage.md#telemetry-services) diaktifkan untuk akun sesi. Ditekan oleh `DISABLE_ERROR_REPORTING=1` atau `DISABLE_TELEMETRY=1`. |

73| Endpoint penyedia cloud Anda untuk permintaan model, pencarian model, dan pembaruan kredensial, seperti `bedrock-runtime.us-east-1.amazonaws.com` atau `aiplatform.googleapis.com` | 443 | Hanya ketika runner [mengirim permintaan model ke Amazon Bedrock atau Agent Platform Google Cloud](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) |74| Endpoint penyedia cloud Anda untuk permintaan model, pencarian model, dan pembaruan kredensial, seperti `bedrock-runtime.us-east-1.amazonaws.com` atau `aiplatform.googleapis.com` | 443 | Hanya ketika runner [mengirim permintaan model ke Amazon Bedrock atau Agent Platform Google Cloud](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#send-model-requests-to-bedrock-or-agent-platform) |


631 632 

632Dalam dua tahap pertama yang mengikuti sinyal, runner melepaskan sesi, dan sesi yang dirilis dilanjutkan di runner segar ketika pengguna mereka mengirim pesan berikutnya. Menghitung dari sinyal pertama, runner bergerak melalui tiga tahap:633Dalam dua tahap pertama yang mengikuti sinyal, runner melepaskan sesi, dan sesi yang dirilis dilanjutkan di runner segar ketika pengguna mereka mengirim pesan berikutnya. Menghitung dari sinyal pertama, runner bergerak melalui tiga tahap:

633 634 

634* **Untuk `n` menit pertama**: runner melayani sesinya secara normal dan terus memberlakukan `--startup-timeout-min` dan `--kill-session-after-min`. Jika Anda juga menetapkan [`--release-idle-session-min`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags), runner melepaskan sesi apa pun yang penggunanya telah idle selama itu; tanpanya, sesi idle tetap di runner.635* **Untuk `n` menit pertama**: runner melayani sesinya secara normal dan terus memberlakukan `--startup-timeout-min` dan `--kill-session-after-min`. Jika Anda juga menetapkan [`--release-idle-session-min`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags), runner melepaskan sesi apa pun yang penggunanya telah idle selama itu, kecuali Anda [menahan sesi tersebut](#keep-an-idle-session-while-its-processes-run). Tanpa flag tersebut, sesi idle tetap di runner.

635* **Ketika `n` menit habis**: runner melepaskan setiap sesi yang masih dipegang, idle atau tidak. Runner menunggu turn sesi mid-turn berakhir, dan hingga 60 detik lagi untuk background tasks turn, sebelum melepaskan sesi itu.636* **Ketika `n` menit habis**: runner melepaskan setiap sesi yang masih dipegang, idle atau tidak. Runner menunggu turn sesi mid-turn berakhir, dan hingga 60 detik lagi untuk background tasks turn, sebelum melepaskan sesi itu.

636* **Ketika post-release grace habis**: runner mendrainkan sesi apa pun yang masih dipegang, dan control plane mengantrekan kembali setiap sesi yang didrain ke runner lain segera. Post-release grace dimulai ketika `n` menit habis dan 75 detik pada default. Jika Anda menetapkan `--drain-wait-sec` di atas 60 detik, post-release grace adalah `--drain-wait-sec` ditambah 15 detik sebagai gantinya.637* **Ketika post-release grace habis**: runner mendrainkan sesi apa pun yang masih dipegang, dan control plane mengantrekan kembali setiap sesi yang didrain ke runner lain segera. Post-release grace dimulai ketika `n` menit habis dan 75 detik pada default. Jika Anda menetapkan `--drain-wait-sec` di atas 60 detik, post-release grace adalah `--drain-wait-sec` ditambah 15 detik sebagai gantinya.

637 638 


716 717 

717### Lepaskan sesi idle pada armada tetap718### Lepaskan sesi idle pada armada tetap

718 719 

719Jika sesi tetap mengantri pada armada tetap sementara setiap runner online, sesi idle mungkin penyebabnya. Secara default, sebuah sesi mempertahankan slotnya setelah gilirannya selesai, dan runner-nya tetap terkunci pada [pemilik](https://code.claude.com/docs/id/self-hosted-environments#key-concepts) sesi tersebut. Jika [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) tim Anda memulai sesi baru pada setiap eksekusi, sesi idle-nya dapat memenuhi setiap slot.720Jika sesi tetap mengantri pada armada tetap sementara setiap runner online, sesi idle mungkin penyebabnya. Secara default, sebuah sesi mempertahankan slotnya setelah gilirannya selesai, dan runner-nya tetap terkunci pada [pemilik](https://code.claude.com/docs/id/self-hosted-environments#key-concepts) sesi tersebut. Sesi milik pemilik lain tidak dapat menggunakan slot kosong pada runner tersebut. Jika [tugas terjadwal cloud](https://code.claude.com/docs/id/routines.md) tim Anda memulai sesi baru pada setiap eksekusi, sesi idle-nya dapat memenuhi setiap slot.

720 721 

721Untuk memeriksanya, baca `claude_code_self_hosted_runner_session_idle_seconds` di [metrik Prometheus](https://code.claude.com/docs/id/self-hosted-environments-reference.md#prometheus-metrics) setiap runner. Setiap sesi yang dipegang runner memiliki seri tersendiri: `0` selama sesi sibuk, jika tidak, jumlah detik sejak sesi tersebut menjadi idle. Pilih waktu idle yang Anda izinkan: lebih lama dari jeda yang diambil orang di tengah tugas, dan cukup singkat sehingga setiap eksekusi dilepaskan sebelum eksekusi berikutnya dari tugas terjadwal dimulai. Bandingkan seri tersebut dengan waktu itu.722Untuk memeriksanya, baca `claude_code_self_hosted_runner_session_idle_seconds` di [metrik Prometheus](https://code.claude.com/docs/id/self-hosted-environments-reference.md#prometheus-metrics) setiap runner. Setiap sesi yang dipegang runner memiliki seri tersendiri: `0` selama sesi sibuk, jika tidak, jumlah detik sejak sesi tersebut menjadi idle. Pilih waktu idle yang Anda izinkan: lebih lama dari jeda yang diambil orang di tengah tugas, dan cukup singkat sehingga setiap eksekusi dilepaskan sebelum eksekusi berikutnya dari tugas terjadwal dimulai. Bandingkan seri tersebut dengan waktu itu.

722 723 


725* **Runner tanpa seri**: tidak ada sesi yang memegangnya. Lihat **Sessions stay queued** di bawah [Pemecahan masalah](#troubleshooting).726* **Runner tanpa seri**: tidak ada sesi yang memegangnya. Lihat **Sessions stay queued** di bawah [Pemecahan masalah](#troubleshooting).

726* **Runner yang metriknya tidak merespons**: prosesnya mungkin telah keluar. Lihat **An environment that looks healthy** di bawah [When the runner exits](#when-the-runner-exits).727* **Runner yang metriknya tidak merespons**: prosesnya mungkin telah keluar. Lihat **An environment that looks healthy** di bawah [When the runner exits](#when-the-runner-exits).

727 728 

728Untuk melepaskan sesi idle, mulai setiap runner dengan [`--release-idle-session-min`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags) dan waktu tersebut dalam menit, seperti `--release-idle-session-min 30`. Runner kemudian melepaskan setiap sesi yang tetap idle selama itu, baik yang dimulai oleh tugas terjadwal maupun oleh seseorang.729Untuk melepaskan sesi idle, mulai setiap runner dengan [`--release-idle-session-min`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags) dan waktu tersebut dalam menit, seperti `--release-idle-session-min 30`. Runner kemudian melepaskan setiap sesi yang tetap idle selama itu, baik yang dimulai oleh tugas terjadwal maupun oleh seseorang, kecuali Anda [menahannya untuk proses yang masih berjalan yang ditinggalkannya](#keep-an-idle-session-while-its-processes-run).

729 730 

730* **Pekerjaan yang belum di-push**: sesi yang dilepaskan dilanjutkan pada pesan berikutnya, tanpa pekerjaan yang belum di-push. Untuk mempertahankan commit-nya, lihat [Resumed sessions lose unpushed work](#additional-limitations).731* **Pekerjaan yang belum di-push**: sesi yang dilepaskan dilanjutkan pada pesan berikutnya, tanpa pekerjaan yang belum di-push. Untuk mempertahankan commit-nya, lihat [Resumed sessions lose unpushed work](#additional-limitations).

731* **Runner keluar**: runner yang melepaskan sesi terakhirnya memulai [keluar normal](#when-the-runner-exits). Minta supervisor Anda memulai ulang runner tersebut pada filesystem baru, seperti yang dijelaskan di [Harden your deployment](#harden-your-deployment).732* **Runner keluar**: runner yang melepaskan sesi terakhirnya memulai [keluar normal](#when-the-runner-exits). Minta supervisor Anda memulai ulang runner tersebut pada filesystem baru, seperti yang dijelaskan di [Harden your deployment](#harden-your-deployment).

732* **Sesi yang tidak pernah menjadi idle**: atur juga [`--kill-session-after-min`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags), karena [beberapa sesi tidak dihitung sebagai idle](#some-sessions-don’t-count-as-idle)733* **Sesi yang tidak pernah menjadi idle**: atur juga [`--kill-session-after-min`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags), karena [beberapa sesi tidak dihitung sebagai idle](#some-sessions-don’t-count-as-idle)

733 734 

735### Pertahankan sesi idle selama prosesnya berjalan

736 

737Untuk mempertahankan sesi idle hingga proses yang ditinggalkannya di host Anda selesai, seperti job `nohup`, mulai runner dengan [`--hold-idle-file`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags) dan terus lakukan touch pada file tersebut dari host. Memerlukan Claude Code v2.1.311 atau yang lebih baru.

738 

739Langkah-langkah ini mengasumsikan runner non-root pada sebuah host. Jika runner Anda berjalan sebagai `root`, sesinya dapat melakukan touch pada file tersebut sendiri, jadi jalankan runner sebagai pengguna khusus terlebih dahulu.

740 

741**1. Pilih path untuk file**

742 

743Pilih file reguler lokal, seperti `/var/lib/claude-hold/hold-idle`, di direktori yang tidak dapat ditulisi oleh sesi, termasuk direktori induknya, sehingga sesi tidak dapat menulis ke file tersebut. Runner dan sesinya berbagi satu pengguna OS, jadi buat direktori tersebut terlebih dahulu, dimiliki oleh pengguna lain seperti `root`, dengan mode `755`.

744 

745**2. Mulai runner**

746 

747Dari shell Anda, mulai runner dengan `--hold-idle-file`, `--release-idle-session-min`, dan [`--max-hold-min`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags), yaitu batas maksimum penahanan, dihitung sejak sesi menjadi idle. Tanpa opsi tersebut, batasnya adalah satu hari. Atur nilainya di atas `--release-idle-session-min`, atau tidak ada yang ditahan. Contoh ini melepaskan sesi idle setelah 30 menit dan melepaskan sesi yang ditahan paling lambat 4 jam setelah sesi tersebut menjadi idle:

748 

749```bash theme={null}

750claude self-hosted-runner \

751 --environment-secret-file /etc/claude/environment-secret \

752 --release-idle-session-min 30 \

753 --hold-idle-file /var/lib/claude-hold/hold-idle \

754 --max-hold-min 240

755```

756 

757**3. Lakukan touch pada file selama proses berjalan**

758 

759Selama proses berjalan, jalankan `touch` pada file tersebut dari host sebagai pemilik direktori, lebih sering dari setiap tiga menit. `touch` pertama akan membuat file tersebut. Misalnya, tambahkan baris ini ke crontab `root`:

760 

761```text theme={null}

762* * * * * pgrep -x nightly-build > /dev/null && touch /var/lib/claude-hold/hold-idle

763```

764 

765Baris ini berjalan sekali per menit dan melakukan touch pada file selama ada proses bernama `nightly-build` yang berjalan, sehingga sesi yang memulai proses tersebut tetap ditahan hingga batas maksimum. Ganti pemeriksaan `pgrep` dengan cara apa pun yang digunakan host Anda untuk menemukan apa yang ditinggalkan sesi dalam keadaan berjalan.

766 

767Pemeriksaan tersebut harus berhenti cocok ketika proses-proses itu selesai, atau setiap sesi idle pada runner tersebut tetap ditahan hingga batas maksimum.

768 

769**4. Konfirmasi penahanan**

770 

771Selama proses berjalan, periksa bahwa waktu modifikasi file tetap kurang dari tiga menit. Ketika waktu idle sebuah sesi habis, cari `idle release held` di log runner. Jika baris tersebut tidak muncul, baca `leftover-hold=` di baris `watchdog config` yang dicatat runner saat startup, yang menunjukkan file dan batas maksimumnya, atau alasan tidak ada yang ditahan.

772 

773Tiga menit setelah `touch` terakhir, penahanan berakhir. Dalam waktu sekitar satu menit berikutnya, log menampilkan `idle release no longer held` dan runner melepaskan sesi tersebut.

774 

775Bahkan ketika file terus berubah, penahanan dapat berakhir, dalam kasus seperti berikut:

776 

777* **Melewati batas maksimum**: `--max-hold-min` habis. Untuk menahan lebih lama, naikkan nilainya

778* **Pelepasan paksa**: Anda mengatur [`--retire-at`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags), [`--defer-shutdown-max-min`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags), atau [`--kill-session-after-min`](https://code.claude.com/docs/id/self-hosted-environments-reference#runner-cli-flags), dan batas tersebut tercapai. Untuk menahan lebih lama, atur batas yang lebih lambat

779 

734## Masalah dan batasan yang diketahui780## Masalah dan batasan yang diketahui

735 781 

736Berikut adalah batasan dalam rilis ini, dengan workaround di mana ada.782Berikut adalah batasan dalam rilis ini, dengan workaround di mana ada.


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

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

830 876 

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

878 

879 Dengan [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), ketika git proxy menolak repositori dengan `access denied by the git proxy`, runner melewatinya. Baris log kemudian menyebutkan `blocked by the git proxy`. Untuk penyebab yang perlu diperiksa, lihat kasus `remote: access denied by the git proxy` di [Ketika sesi gagal dimulai pada runner dengan git proxy](#when-anthropic-doesnt-serve-a-session).

880 

881 Kegagalan jaringan, timeout, atau HTTP `403` lainnya tetap menggagalkan dimulainya sesi, begitu pula penolakan untuk repositori tempat sesi mendorong hasil. Runner tetap menggagalkan sesi yang akan tidak memiliki repositori sama sekali jika dilewati.

832 882 

833 Pemeriksaan akses dijalankan lagi setiap kali sesi dimulai pada runner, sehingga begitu identitas git runner memiliki akses baca, proses mulai berikutnya akan meng-clone repositori tersebut. Sebelum v2.1.274, setiap penolakan ini menggagalkan dimulainya sesi.883 Pemeriksaan akses dijalankan lagi setiap kali sesi dimulai pada runner, sehingga begitu identitas git runner memiliki akses baca, proses mulai berikutnya akan meng-clone repositori tersebut. Sebelum v2.1.274, setiap penolakan ini menggagalkan dimulainya sesi.

884* **Log menampilkan `could not read context source`**: baris ini, berbeda dengan `could not access context source`, berarti host git terus menjawab dengan HTTP `429`, atau wrapper yang Anda pasang sebagai `git` terus keluar dengan `75`. Runner melewati repositori tersebut. Untuk mencoba ulang, mulai sesi baru. Runner juga mencoba repositori tersebut lagi setiap kali sesi ini dimulai pada runner.

885 

886 Tanpa hook `checkout`, runner dapat melewati repositori yang hanya dibaca oleh sesi, kecuali repositori tersebut merupakan yang pertama di antara repositori sesi. Sebelum v2.1.311, dimulainya sesi gagal.

834* **Sesi gagal dimulai dengan `This runner couldn't read`**: runner meminta repositori dari host git dengan [kredensial git](#configure-git)-nya dan mendapat jawaban tidak ditemukan. Repositori tersebut tidak ada, atau kredensial tersebut tidak dapat menjangkau repositori itu.887* **Sesi gagal dimulai dengan `This runner couldn't read`**: runner meminta repositori dari host git dengan [kredensial git](#configure-git)-nya dan mendapat jawaban tidak ditemukan. Repositori tersebut tidak ada, atau kredensial tersebut tidak dapat menjangkau repositori itu.

835 * **Jika Anda mengelola runner**: berikan akses baca ke repositori tersebut kepada kredensial git runner, lalu mulai sesi baru.888 * **Jika Anda mengelola runner**: berikan akses baca ke repositori tersebut kepada kredensial git runner, lalu mulai sesi baru.

836 * **Jika Anda yang memulai sesi**: jika repositori tidak ada, mulai sesi baru dengan repositori yang benar. Jika runner tidak dapat menjangkau repositori tersebut, minta administrator runner untuk memberikan akses, lalu mulai sesi baru.889 * **Jika Anda yang memulai sesi**: jika repositori tidak ada, mulai sesi baru dengan repositori yang benar. Jika runner tidak dapat menjangkau repositori tersebut, minta administrator runner untuk memberikan akses, lalu mulai sesi baru.

Details

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

37 37 

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

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

40 40 

41Konfirmasi host siap:41Konfirmasi host siap:

42 42 


89(umask 077 && cat > /etc/claude/environment-secret)89(umask 077 && cat > /etc/claude/environment-secret)

90```90```

91 91 

92Pilih direktori dasar, mengganti `<writable-dir>` dalam perintah runner di bawah dengan jalur absolut yang dapat ditulis atau dibuat oleh runner. Runner membuat direktori saat startup, kemudian memeriksa repositori dan membuat direktori per-sesi di bawahnya. Tanpa `--base-dir` itu menggunakan `/workspace`, yang hanya berfungsi jika direktori itu sudah ada dan dapat ditulis atau Anda memulai runner sebagai root.92Pilih direktori dasar, mengganti `<writable-dir>` dalam perintah runner di bawah dengan jalur absolut yang dapat ditulis atau dibuat oleh runner. Runner membuat direktori saat startup, kemudian melakukan checkout repositori dan membuat direktori per-sesi di bawahnya. Tanpa `--base-dir` itu menggunakan `/workspace`, yang hanya berfungsi jika direktori itu sudah ada dan dapat ditulis atau Anda memulai runner sebagai root.

93 93 

94> [!WARNING]94> [!WARNING]

95>95>

Details

37| `--git-host-rewrite <from>=<to>` | none | unset | Tulis ulang URL sumber `https://<from>/...` ke `https://<to>/...` sebelum cloning, untuk split-horizon DNS. Dapat diulang; flag saja. |37| `--git-host-rewrite <from>=<to>` | none | unset | Tulis ulang URL sumber `https://<from>/...` ke `https://<to>/...` sebelum cloning, untuk split-horizon DNS. Dapat diulang; flag saja. |

38| `--git-ssh-rewrite <host>` | none | unset | Tulis ulang URL sumber `https://<host>/...` ke `git@<host>:...` sebelum cloning, untuk git host SSH-only. Dapat diulang; flag saja. |38| `--git-ssh-rewrite <host>` | none | unset | Tulis ulang URL sumber `https://<host>/...` ke `git@<host>:...` sebelum cloning, untuk git host SSH-only. Dapat diulang; flag saja. |

39| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Port untuk listener `/healthz` dan `/metrics`. Atur `0` untuk menonaktifkan. |39| `--health-port <port>` | `SELF_HOSTED_RUNNER_HEALTH_PORT` | `8080` | Port untuk listener `/healthz` dan `/metrics`. Atur `0` untuk menonaktifkan. |

40| `--hold-idle-file <path>` | `SELF_HOSTED_RUNNER_HOLD_IDLE_FILE` | unset | File yang terus diubah oleh host Anda untuk menahan sesi idle di runner. Lihat [Keep an idle session while its processes run](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#keep-an-idle-session-while-its-processes-run). Memerlukan Claude Code v2.1.311 atau lebih baru. |

40| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | unset | Direktori script hook lifecycle. Lihat [Lifecycle hooks](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#lifecycle-hooks). |41| `--hooks-dir <path>` | `SELF_HOSTED_RUNNER_HOOKS_DIR` | unset | Direktori script hook lifecycle. Lihat [Lifecycle hooks](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#lifecycle-hooks). |

41| `--host-config-snapshot <mode>` | `SELF_HOSTED_RUNNER_HOST_CONFIG_SNAPSHOT` | `disk` | Tempat runner menyimpan snapshot startup dari [direktori host config](#environment-variable-only-settings) yang diseednya dari setiap session. `disk` menyalin snapshot ke direktori yang dimiliki runner di bawah `--base-dir` dan, di setiap awal session, memverifikasi setiap file terhadap digest in-memory. Jika file dalam salinan telah dimodifikasi, session gagal dan runner menolak session sampai Anda memulainya ulang. `memory` menyimpan seluruh snapshot di heap, dibatasi pada 64 MiB; di atas batas, session dimulai tanpa host config dan menampilkan pemberitahuan yang mengatakan demikian. Ketika runner tidak dapat menulis snapshot disk, itu mencatat kegagalan dan menggunakan `memory` untuk run itu. Memerlukan Claude Code v2.1.271 atau lebih baru. |42| `--host-config-snapshot <mode>` | `SELF_HOSTED_RUNNER_HOST_CONFIG_SNAPSHOT` | `disk` | Tempat runner menyimpan snapshot startup dari [direktori host config](#environment-variable-only-settings) yang diseednya dari setiap session. `disk` menyalin snapshot ke direktori yang dimiliki runner di bawah `--base-dir` dan, di setiap awal session, memverifikasi setiap file terhadap digest in-memory. Jika file dalam salinan telah dimodifikasi, session gagal dan runner menolak session sampai Anda memulainya ulang. `memory` menyimpan seluruh snapshot di heap, dibatasi pada 64 MiB; di atas batas, session dimulai tanpa host config dan menampilkan pemberitahuan yang mengatakan demikian. Ketika runner tidak dapat menulis snapshot disk, itu mencatat kegagalan dan menggunakan `memory` untuk run itu. Memerlukan Claude Code v2.1.271 atau lebih baru. |

42| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Batasi session ke N menit wall-clock, sebagai batas keselamatan untuk session yang macet. Pada v2.1.260 atau lebih baru, runner melepaskan session yang mencapai batas sehingga dapat dilanjutkan pada pesan berikutnya pengguna, dan menghentikannya hanya jika masih ada di runner ketika jendela grace [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) berakhir. Sebelum v2.1.260, runner menghentikan session pada batas. Lihat [Some sessions don't count as idle](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#some-sessions-don%E2%80%99t-count-as-idle) untuk detail dan cara memilih nilai. `0` menonaktifkan. |43| `--kill-session-after-min <n>` | `SELF_HOSTED_RUNNER_MAX_LIFETIME_MS` | `0` | Batasi session ke N menit wall-clock, sebagai batas keselamatan untuk session yang macet. Pada v2.1.260 atau lebih baru, runner melepaskan session yang mencapai batas sehingga dapat dilanjutkan pada pesan berikutnya pengguna, dan menghentikannya hanya jika masih ada di runner ketika jendela grace [`SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS`](#environment-variable-only-settings) berakhir. Sebelum v2.1.260, runner menghentikan session pada batas. Lihat [Some sessions don't count as idle](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#some-sessions-don%E2%80%99t-count-as-idle) untuk detail dan cara memilih nilai. `0` menonaktifkan. |

43| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | unset | Pre-lock runner ke akun spesifik saat startup daripada mengunci pada session pertama. Menerima alamat email atau ID `user_...` dalam organisasi lingkungan. Runner yang pre-locked tidak pernah mengambil session Claude Tag channel, yang tidak memiliki akun. |44| `--lock-to-account <id>` | `SELF_HOSTED_RUNNER_LOCK_TO_ACCOUNT` | unset | Pre-lock runner ke akun spesifik saat startup daripada mengunci pada session pertama. Menerima alamat email atau ID `user_...` dalam organisasi lingkungan. Runner yang pre-locked tidak pernah mengambil session Claude Tag channel, yang tidak memiliki akun. |

44| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | unset | Mirror log runner ke file selain stdout dan stderr, dibuat dengan izin `0600`. Diperlukan untuk `self-hosted-runner doctor` untuk tail log secara lokal. |45| `--log-file <path>` | `SELF_HOSTED_RUNNER_LOG_FILE` | unset | Mirror log runner ke file selain stdout dan stderr, dibuat dengan izin `0600`. Diperlukan untuk `self-hosted-runner doctor` untuk tail log secara lokal. |

45| `--log-level <level>` | none | `info` | `info` atau `debug` |46| `--log-level <level>` | none | `info` | `info` atau `debug` |

47| `--max-hold-min <n>` | `SELF_HOSTED_RUNNER_MAX_HOLD_MS` | `1440` | Dengan `--hold-idle-file`, tetap lepaskan sesi yang ditahan N menit setelah sesi tersebut menjadi idle. Nilai yang sama dengan atau di bawah `--release-idle-session-min` tidak menahan apa pun. `0` mematikan penahanan. Memerlukan Claude Code v2.1.311 atau lebih baru. |

46| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Anggaran untuk hook [`post-session`](https://code.claude.com/docs/id/self-hosted-environments-configuration#post-session) di setiap akhir session, termasuk shutdown runner |48| `--post-session-hook-timeout-sec <n>` | `SELF_HOSTED_RUNNER_POST_SESSION_HOOK_TIMEOUT_MS` | `60` | Anggaran untuk hook [`post-session`](https://code.claude.com/docs/id/self-hosted-environments-configuration#post-session) di setiap akhir session, termasuk shutdown runner |

47| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | unset | Perintah shell yang dijalankan runner untuk setiap koneksi ke proxy egress Anda, menggunakan stdout yang dipangkas sebagai nilai header `Proxy-Authorization`. Memerlukan `HTTPS_PROXY` atau `HTTP_PROXY`, dan tidak dapat digabungkan dengan `--proxy-authorization-file`. Lihat [Authenticate to an egress proxy](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Memerlukan Claude Code v2.1.238 atau lebih baru. |49| `--proxy-authorization-command <command>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_COMMAND` | unset | Perintah shell yang dijalankan runner untuk setiap koneksi ke proxy egress Anda, menggunakan stdout yang dipangkas sebagai nilai header `Proxy-Authorization`. Memerlukan `HTTPS_PROXY` atau `HTTP_PROXY`, dan tidak dapat digabungkan dengan `--proxy-authorization-file`. Lihat [Authenticate to an egress proxy](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Memerlukan Claude Code v2.1.238 atau lebih baru. |

48| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | unset | File yang dibaca runner untuk setiap koneksi ke proxy egress Anda, menggunakan isinya yang dipangkas sebagai nilai header `Proxy-Authorization`. Gunakan flag ini untuk token yang proses lain rotasi di tempat. Membawa persyaratan yang sama dengan `--proxy-authorization-command`, dan tidak dapat digabungkan dengannya. Lihat [Authenticate to an egress proxy](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Memerlukan Claude Code v2.1.238 atau lebih baru. |50| `--proxy-authorization-file <path>` | `SELF_HOSTED_RUNNER_PROXY_AUTHORIZATION_FILE` | unset | File yang dibaca runner untuk setiap koneksi ke proxy egress Anda, menggunakan isinya yang dipangkas sebagai nilai header `Proxy-Authorization`. Gunakan flag ini untuk token yang proses lain rotasi di tempat. Membawa persyaratan yang sama dengan `--proxy-authorization-command`, dan tidak dapat digabungkan dengannya. Lihat [Authenticate to an egress proxy](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#authenticate-to-an-egress-proxy). Memerlukan Claude Code v2.1.238 atau lebih baru. |

49| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | off | Pada akhir session yang dimulai runner seperti drain atau idle release, push tracked outcome branch ke `origin` sebelum menghapus workspace, jadi commit in-flight bertahan restart. Best-effort; menambah 30 detik ke anggaran shutdown, dan memerlukan git 2.29 atau lebih baru untuk melanjutkan dari branch yang didorong. Batasi akses push ke ref `claude/*` sebelum mengaktifkan; lihat [Resumed sessions lose unpushed work](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#additional-limitations). Repositori yang diperiksa melalui hook lifecycle `checkout` tidak didorong; snapshot itu dari hook [`post-session`](https://code.claude.com/docs/id/self-hosted-environments-configuration#post-session) sebagai gantinya. |51| `--push-outcome-on-release` | `SELF_HOSTED_RUNNER_PUSH_OUTCOME_ON_RELEASE` | off | Pada akhir session yang dimulai runner seperti drain atau idle release, push tracked outcome branch ke `origin` sebelum menghapus workspace, jadi commit in-flight bertahan restart. Best-effort; menambah 30 detik ke anggaran shutdown, dan memerlukan git 2.29 atau lebih baru untuk melanjutkan dari branch yang didorong. Batasi akses push ke ref `claude/*` sebelum mengaktifkan; lihat [Resumed sessions lose unpushed work](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#additional-limitations). Repositori yang diperiksa melalui hook lifecycle `checkout` tidak didorong; snapshot itu dari hook [`post-session`](https://code.claude.com/docs/id/self-hosted-environments-configuration#post-session) sebagai gantinya. |

50| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Lepaskan slot session setelah N menit inaktivitas setelah turn selesai atau session menunggu tindakan pengguna. Session yang masih mid-turn, termasuk yang menahan background task yang tidak pernah selesai atau persetujuan yang diminta dari dalam panggilan tool yang berjalan, tidak dihitung sebagai idle; pasangkan dengan `--kill-session-after-min` sebagai backstop keras. Setelah background task session selesai, runner menganggap session sibuk sampai turn follow-up yang membaca hasil dimulai, untuk paling banyak jendela [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Sampai runner menerima sinyal shutdown atau mencapai waktu pensiun, release yang meninggalkan runner tanpa session aktif memulai jalur keluar yang sama seperti drain normal, diatur oleh `--drain-grace-sec`. Setelah sinyal pertama yang Anda tunda dengan [`--defer-shutdown-max-min`](https://code.claude.com/docs/id/self-hosted-environments-deploy#defer-the-drain-past-the-first-signal), runner keluar segera setelah release meninggalkannya tanpa session. `0` menonaktifkan. |52| `--release-idle-session-min <n>` | `SELF_HOSTED_RUNNER_SESSION_IDLE_MS` | `0` | Lepaskan slot sesi setelah N menit tanpa aktivitas begitu giliran selesai atau sesi menunggu tindakan pengguna. [Some sessions don't count as idle](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#some-sessions-don’t-count-as-idle), jadi pasangkan dengan `--kill-session-after-min`. Tugas latar belakang yang sudah selesai membuat sesi tetap sibuk paling lama selama jendela [`SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS`](#environment-variable-only-settings). Untuk menunda pelepasan, atur [`--hold-idle-file`](https://code.claude.com/docs/id/self-hosted-environments-deploy#keep-an-idle-session-while-its-processes-run). `0` menonaktifkan. |

51| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Hapus direktori per-session session di bawah `<base-dir>/_sessions/` ketika session berakhir di runner ini, apa pun hasilnya. [Reuse a pre-warmed checkout](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout) menjelaskan apa yang mereka pegang dan siapa yang dapat membacanya ketika mereka tetap. Penghapusan adalah best-effort: direktori per-session tetap ada ketika runner dibunuh atau mencapai deadline drain sebelum cleanup berjalan. Dengan flag aktif, debug log session yang gagal atau terputus tidak disimpan di disk. Memerlukan Claude Code v2.1.268 atau lebih baru. |53| `--remove-session-state [bool]` | `SELF_HOSTED_RUNNER_REMOVE_SESSION_STATE` | off | Hapus direktori per-session session di bawah `<base-dir>/_sessions/` ketika session berakhir di runner ini, apa pun hasilnya. [Reuse a pre-warmed checkout](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#reuse-a-pre-warmed-checkout) menjelaskan apa yang mereka pegang dan siapa yang dapat membacanya ketika mereka tetap. Penghapusan adalah best-effort: direktori per-session tetap ada ketika runner dibunuh atau mencapai deadline drain sebelum cleanup berjalan. Dengan flag aktif, debug log session yang gagal atau terputus tidak disimpan di disk. Memerlukan Claude Code v2.1.268 atau lebih baru. |

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

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


314 316 

315### Peringatan untuk runner yang hilang dan sesi yang menunggu317### Peringatan untuk runner yang hilang dan sesi yang menunggu

316 318 

317Pada [armada tetap](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#scale-the-fleet), muat `ClaudeRunnersBelowFloor`. Dengan [runner on-demand](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#on-demand-runners), muat `ClaudeOrchestratorSessionsWaiting` dan `ClaudeOrchestratorQueueWaitHigh` sebagai gantinya.319Agar mendapat peringatan ketika runner hilang, sesi menunggu, atau orchestrator mati, muat aturan peringatan Prometheus berikut bersama [contoh aturan peringatan](#sample-alert-rules):

320 

321* **[Armada tetap](https://code.claude.com/docs/id/self-hosted-environments-deploy.md#scale-the-fleet)**: `ClaudeRunnersBelowFloor`

322* **[Runner on-demand](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#on-demand-runners)**: `ClaudeOrchestratorSessionsWaiting`, `ClaudeOrchestratorQueueWaitHigh`, dan `ClaudeOrchestratorAbsent`

318 323 

319#### Peringatan ketika armada tetap kehilangan runner324#### Peringatan ketika armada tetap kehilangan runner

320 325 


372* **Ambang batas**: jika selalu ada sesi yang menunggu, naikkan `> 0` dalam `ClaudeOrchestratorSessionsWaiting` di atas jumlah yang biasanya Anda lihat377* **Ambang batas**: jika selalu ada sesi yang menunggu, naikkan `> 0` dalam `ClaudeOrchestratorSessionsWaiting` di atas jumlah yang biasanya Anda lihat

373* **`ClaudeOrchestratorDisconnected`**: tetap muat dari [contoh aturan peringatan](#sample-alert-rules), karena `ClaudeOrchestratorSessionsWaiting` berhenti dipicu sekitar 2 menit setelah orchestrator terakhir di namespace tersebut terputus378* **`ClaudeOrchestratorDisconnected`**: tetap muat dari [contoh aturan peringatan](#sample-alert-rules), karena `ClaudeOrchestratorSessionsWaiting` berhenti dipicu sekitar 2 menit setelah orchestrator terakhir di namespace tersebut terputus

374 379 

380#### Peringatan ketika orchestrator mati

381 

382Untuk mengetahui bahwa [orchestrator](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#on-demand-runners) itu sendiri mati, muat `ClaudeOrchestratorAbsent`. Peringatan ini dipicu ketika tidak ada orchestrator di namespace tersebut yang di-scrape selama 5 menit:

383 

384```yaml theme={null}

385groups:

386 # On-demand runners only. Replace claude-runners with the orchestrator's namespace.

387 - name: claude-code-self-hosted-on-demand-orchestrator

388 rules:

389 - alert: ClaudeOrchestratorAbsent

390 expr: absent(claude_code_self_hosted_orchestrator_connected{namespace="claude-runners"})

391 for: 5m

392 labels: {severity: critical}

393 annotations:

394 summary: "No orchestrator has been scraped for 5 minutes. If it's down, no on-demand runner starts, and sessions wait. Check the orchestrator workload first, then its scrape target if it's running."

395```

396 

397* **Namespace**: ganti `claude-runners` dengan namespace orchestrator, lalu salin peringatan tersebut untuk setiap namespace tambahan yang menjalankan orchestrator. Jika target Anda tidak memiliki label `namespace`, hapus matcher tersebut, jika tidak peringatan akan dipicu setelah 5 menit dan tetap aktif.

398* **Server Prometheus yang tidak melakukan scrape pada orchestrator**: jangan sertakan peringatan ini dalam file aturan server tersebut, karena pada server seperti itu peringatan akan dipicu setelah 5 menit dan tetap aktif

399* **Jangan mengandalkan peringatan orchestrator lainnya**: peringatan tersebut membaca metrik yang disajikan oleh orchestrator itu sendiri. `ClaudeOrchestratorSessionsWaiting`, `ClaudeOrchestratorQueueWaitHigh`, dan [contoh aturan peringatan](#sample-alert-rules) orchestrator semuanya berhenti dipicu dalam sekitar 10 menit setelah orchestrator mati.

400 

375### Meneruskan metrik proses anak sesi401### Meneruskan metrik proses anak sesi

376 402 

377Setiap sesi berjalan dalam proses anaknya sendiri dengan metrik OpenTelemetry-nya sendiri; pada `--capacity` di atas satu, runner menulis ulang cara metrik proses anak tersebut diekspos. Mengatur `OTEL_METRICS_EXPORTER=prometheus` pada host runner dan `CLAUDE_CODE_ENABLE_TELEMETRY=1` di environment sesi, misalnya dari [skrip wrapper](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#wrapper-scripts) Anda atau environment runner itu sendiri, yang diwarisi oleh sesi, akan mengekspos ulang instrumen counter dan gauge setiap proses anak pada endpoint `/metrics` milik runner sendiri, bersama seri runner. Runner menulis ulang exporter proses anak agar mengirim melalui OTLP ke receiver khusus loopback pada port health, menandai setiap seri dengan label `session_id` dan `client_platform`, dan menghapus seri sebuah sesi ketika sesi tersebut berakhir. Histogram tidak diteruskan, dan metrik proses anak yang namanya akan bertabrakan dengan prefiks milik runner sendiri akan dibuang.403Setiap sesi berjalan dalam proses anaknya sendiri dengan metrik OpenTelemetry-nya sendiri; pada `--capacity` di atas satu, runner menulis ulang cara metrik proses anak tersebut diekspos. Mengatur `OTEL_METRICS_EXPORTER=prometheus` pada host runner dan `CLAUDE_CODE_ENABLE_TELEMETRY=1` di environment sesi, misalnya dari [skrip wrapper](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#wrapper-scripts) Anda atau environment runner itu sendiri, yang diwarisi oleh sesi, akan mengekspos ulang instrumen counter dan gauge setiap proses anak pada endpoint `/metrics` milik runner sendiri, bersama seri runner. Runner menulis ulang exporter proses anak agar mengirim melalui OTLP ke receiver khusus loopback pada port health, menandai setiap seri dengan label `session_id` dan `client_platform`, dan menghapus seri sebuah sesi ketika sesi tersebut berakhir. Histogram tidak diteruskan, dan metrik proses anak yang namanya akan bertabrakan dengan prefiks milik runner sendiri akan dibuang.

Details

288 288 

289 Perintah tersebut tidak dapat membaca dari keyboard ketika Anda melakukan pipe atau mengalihkan input-nya dan, di macOS dan Linux, perintah tersebut juga tidak dapat membuka `/dev/tty`. Jika Anda juga melakukan pipe atau mengalihkan output-nya, eksekusi tersebut menjadi non-interaktif, dan pengaturan yang dikirim hanya berlaku untuk eksekusi tersebut.289 Perintah tersebut tidak dapat membaca dari keyboard ketika Anda melakukan pipe atau mengalihkan input-nya dan, di macOS dan Linux, perintah tersebut juga tidak dapat membuka `/dev/tty`. Jika Anda juga melakukan pipe atau mengalihkan output-nya, eksekusi tersebut menjadi non-interaktif, dan pengaturan yang dikirim hanya berlaku untuk eksekusi tersebut.

290* **Kesalahan menutup dialog sebelum Anda menjawab**: Claude Code tidak menerapkan pengaturan yang dikirim dan mempertahankan pengaturan yang terakhir disetujui. Claude Code menampilkan dialog lagi di sesi berikutnya yang dapat menampilkannya.290* **Kesalahan menutup dialog sebelum Anda menjawab**: Claude Code tidak menerapkan pengaturan yang dikirim dan mempertahankan pengaturan yang terakhir disetujui. Claude Code menampilkan dialog lagi di sesi berikutnya yang dapat menampilkannya.

291* **Eksekusi non-interaktif**, seperti `claude -p`, sesi Agent SDK, atau sesi di panel chat ekstensi VS Code atau tab Code aplikasi desktop: Claude Code tidak dapat menampilkan dialog, sehingga ketika pengaturan yang dikirim memerlukan persetujuan, Claude Code menerapkannya hanya untuk eksekusi tersebut. Claude Code tidak mencatatnya sebagai disetujui atau menuliskannya ke [cache lokal](#fetch-and-caching-behavior), dan sesi interaktif berikutnya menampilkan dialog. Hingga pengguna menyetujui dalam sesi interaktif, setiap eksekusi non-interaktif mengambil pengaturan lagi saat startup. Sebelum v2.1.207, eksekusi non-interaktif menyimpan pengaturan sebagai disetujui, sehingga sesi interaktif berikutnya tidak pernah menampilkan dialog untuk pengaturan tersebut.291* **Eksekusi non-interaktif**, seperti `claude -p`, sesi Agent SDK, atau sesi di panel chat ekstensi VS Code atau tab Code aplikasi desktop: Claude Code tidak dapat menampilkan dialog. Ketika pengaturan yang dikirim memerlukan persetujuan, pengaturan tersebut hanya berlaku untuk eksekusi tersebut.

292 

293 Claude Code tidak mencatat pengaturan tersebut sebagai disetujui atau menuliskannya ke [cache lokal](#fetch-and-caching-behavior), dan sesi interaktif berikutnya menampilkan dialog. Hingga pengguna menyetujui dalam sesi interaktif, setiap eksekusi non-interaktif mengambil pengaturan lagi saat startup.

292 294 

293#### Environment variable dan dialog persetujuan295#### Environment variable dan dialog persetujuan

294 296 


306* `OTEL_EXPORTER_OTLP_ENDPOINT`308* `OTEL_EXPORTER_OTLP_ENDPOINT`

307* `CLAUDE_CODE_DISABLE_1M_CONTEXT`309* `CLAUDE_CODE_DISABLE_1M_CONTEXT`

308 310 

309Ketika variabel yang dikirim memerlukan persetujuan, dialog menyebutkan namanya, sehingga pengguna melihat dengan tepat apa yang diminta kebijakan untuk ditetapkan. Sebelum v2.1.218, Claude Code menerapkan lebih sedikit variabel tanpa meminta pengguna, sehingga pengaturan seperti `DISABLE_AUTO_COMPACT` memicu dialog pada nilai tidak kosong apa pun.311Ketika variabel yang dikirim memerlukan persetujuan, dialog menyebutkan namanya, sehingga pengguna melihat dengan tepat apa yang diminta kebijakan untuk ditetapkan.

310 312 

311Claude Code menentukan apakah empat toggle privasi memerlukan persetujuan berdasarkan nilai yang dikirim, bukan berdasarkan nama variabel: `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY`, dan `DO_NOT_TRACK`. Nilai truthy seperti `1` atau `true` hanya mematikan pelacakan, pelaporan, atau lalu lintas nonesensial lainnya, sehingga Claude Code menerapkannya tanpa meminta pengguna. Untuk nilai tidak kosong lainnya, Claude Code menampilkan dialog. Sebelum v2.1.218, semuanya kecuali `DO_NOT_TRACK` berlaku tanpa persetujuan pada nilai apa pun, dan `DO_NOT_TRACK` memicu dialog pada nilai tidak kosong apa pun.313Claude Code menentukan apakah empat toggle privasi memerlukan persetujuan berdasarkan nilai yang dikirim, bukan berdasarkan nama variabel: `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_ERROR_REPORTING`, `DISABLE_TELEMETRY`, dan `DO_NOT_TRACK`. Nilai truthy seperti `1` atau `true` hanya mematikan pelacakan, pelaporan, atau lalu lintas nonesensial lainnya, sehingga Claude Code menerapkannya tanpa meminta pengguna. Untuk nilai tidak kosong lainnya, Claude Code menampilkan dialog.

312 314 

313Claude Code juga menentukan apakah [`API_FORCE_IDLE_TIMEOUT`](https://code.claude.com/docs/id/env-vars) memerlukan persetujuan berdasarkan nilai yang dikirim: nilai truthy hanya mengaktifkan [body idle timeout](https://code.claude.com/docs/id/network-config.md#streaming-idle-watchdogs), sehingga Claude Code menerapkannya tanpa meminta pengguna. Untuk nilai tidak kosong lainnya, Claude Code menampilkan dialog. Sebelum v2.1.248, nilai tidak kosong apa pun memicu dialog.315Claude Code juga menentukan apakah [`API_FORCE_IDLE_TIMEOUT`](https://code.claude.com/docs/id/env-vars) memerlukan persetujuan berdasarkan nilai yang dikirim: nilai truthy hanya mengaktifkan [body idle timeout](https://code.claude.com/docs/id/network-config.md#streaming-idle-watchdogs), sehingga Claude Code menerapkannya tanpa meminta pengguna. Untuk nilai tidak kosong lainnya, Claude Code menampilkan dialog. Sebelum v2.1.248, nilai tidak kosong apa pun memicu dialog.

314 316 

sessions.md +2 −2

Details

46Ketika Claude Code memuat percakapan dari transkrip-nya, sesi yang dilanjutkan memulihkan percakapan bersama dengan status yang disimpan di dalamnya:46Ketika Claude Code memuat percakapan dari transkrip-nya, sesi yang dilanjutkan memulihkan percakapan bersama dengan status yang disimpan di dalamnya:

47 47 

48* Riwayat percakapan: pesan, panggilan tool, dan hasil. Jika sesi telah melalui [compaction](https://code.claude.com/docs/id/context-window.md#what-survives-compaction), percakapan terbuka pada baris `Conversation compacted`. Claude melanjutkan dengan ringkasan compaction terakhir, pesan yang tidak diringkas oleh compaction tersebut, dan setiap pesan sejak itu. Pesan yang diringkas oleh compaction terakhir tidak dimuat lagi.48* Riwayat percakapan: pesan, panggilan tool, dan hasil. Jika sesi telah melalui [compaction](https://code.claude.com/docs/id/context-window.md#what-survives-compaction), percakapan terbuka pada baris `Conversation compacted`. Claude melanjutkan dengan ringkasan compaction terakhir, pesan yang tidak diringkas oleh compaction tersebut, dan setiap pesan sejak itu. Pesan yang diringkas oleh compaction terakhir tidak dimuat lagi.

49* Panggilan tool yang terputus: tool yang masih berjalan ketika proses sebelumnya berakhir, misalnya dalam kerusakan, tidak selesai atau dijalankan ulang ketika Anda melanjutkan. Claude melihat panggilan yang ditandai sebagai terputus sebelum hasilnya dicatat dan diberitahu untuk memeriksa apakah itu berlaku sebelum menjalankannya lagi, kecuali [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](https://code.claude.com/docs/id/env-vars#variables) diatur.49* Panggilan tool yang terputus: tool yang masih berjalan ketika proses sebelumnya berakhir, misalnya dalam kerusakan, tidak dijalankan ulang ketika Anda melanjutkan.

50* Model: sesi berlanjut pada model yang digunakannya, kecuali dalam kasus di [Mengatur model Anda](https://code.claude.com/docs/id/model-config.md#setting-your-model).50* Model: sesi berlanjut pada model yang digunakannya, kecuali dalam kasus di [Mengatur model Anda](https://code.claude.com/docs/id/model-config.md#setting-your-model).

51* Agent: sesi yang dimulai dengan [`--agent`](https://code.claude.com/docs/id/sub-agents#invoke-subagents-explicitly) atau pengaturan `agent` berlanjut sebagai agent tersebut, mempertahankan pembatasan tool dan model-nya. Teruskan `--agent` saat melanjutkan untuk memilih yang berbeda; untuk system prompt dalam kedua kasus, lihat [Flag system prompt dalam percakapan yang dilanjutkan](https://code.claude.com/docs/id/cli-reference.md#system-prompt-flags-in-resumed-conversations). Claude Code mencari agent di dua tempat: direktori asli sesi, asalkan Anda telah [mempercayai workspace tersebut](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust), dan kemudian direktori tempat Anda melanjutkan, sehingga agent yang bersifat proyek masih dimuat ketika Anda melanjutkan dari direktori lain. Jika Claude Code tidak menemukan agent di salah satu tempat, sesi dilanjutkan dengan tool default dan menampilkan [peringatan yang menyebutkan agent](https://code.claude.com/docs/id/errors.md#session-agent-no-longer-available).51* Agent: sesi yang dimulai dengan [`--agent`](https://code.claude.com/docs/id/sub-agents#invoke-subagents-explicitly) atau pengaturan `agent` berlanjut sebagai agent tersebut, mempertahankan pembatasan tool dan model-nya. Teruskan `--agent` saat melanjutkan untuk memilih yang berbeda; untuk system prompt dalam kedua kasus, lihat [Flag system prompt dalam percakapan yang dilanjutkan](https://code.claude.com/docs/id/cli-reference.md#system-prompt-flags-in-resumed-conversations). Claude Code mencari agent di dua tempat: direktori asli sesi, asalkan Anda telah [mempercayai workspace tersebut](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust), dan kemudian direktori tempat Anda melanjutkan, sehingga agent yang bersifat proyek masih dimuat ketika Anda melanjutkan dari direktori lain. Jika Claude Code tidak menemukan agent di salah satu tempat, sesi dilanjutkan dengan tool default dan menampilkan [peringatan yang menyebutkan agent](https://code.claude.com/docs/id/errors.md#session-agent-no-longer-available).

52* Mode izin: jika Anda melanjutkan dari terminal dengan `claude --continue`, `claude --resume <session-id>`, atau `claude --resume <name>` ketika nama cocok dengan satu sesi, tanpa `-p`, Claude Code memulihkan mode izin yang ada di sesi, kecuali dalam kasus di [mode izin saat melanjutkan](#permission-mode-on-resume), yang juga mencakup pemilih sesi, `/resume`, dan melanjutkan dengan `claude -p`. Teruskan `--permission-mode` atau `--dangerously-skip-permissions` untuk menimpa mode yang dipulihkan.52* Mode izin: jika Anda melanjutkan dari terminal dengan `claude --continue`, `claude --resume <session-id>`, atau `claude --resume <name>` ketika nama cocok dengan satu sesi, tanpa `-p`, Claude Code memulihkan mode izin yang ada di sesi, kecuali dalam kasus di [mode izin saat melanjutkan](#permission-mode-on-resume), yang juga mencakup pemilih sesi, `/resume`, dan melanjutkan dengan `claude -p`. Teruskan `--permission-mode` atau `--dangerously-skip-permissions` untuk menimpa mode yang dipulihkan.


224* **`/compact [instructions]`**: ganti riwayat dengan ringkasan, secara opsional berfokus pada apa yang Anda tentukan224* **`/compact [instructions]`**: ganti riwayat dengan ringkasan, secara opsional berfokus pada apa yang Anda tentukan

225* **`/context`**: tampilkan apa yang saat ini mengonsumsi konteks225* **`/context`**: tampilkan apa yang saat ini mengonsumsi konteks

226 226 

227Untuk cara pemadatan berinteraksi dengan CLAUDE.md, skills, dan aturan, lihat [panduan jendela konteks](https://code.claude.com/docs/id/context-window.md). Untuk strategi tentang kapan harus menghapus versus memadatkan, lihat [Praktik terbaik](https://code.claude.com/docs/id/best-practices.md#manage-your-session).227Untuk cara compaction berinteraksi dengan CLAUDE.md, skills, dan aturan, lihat [panduan context window](https://code.claude.com/docs/id/context-window.md). Untuk strategi tentang kapan harus menghapus versus memadatkan, lihat [Praktik terbaik](https://code.claude.com/docs/id/best-practices.md#keep-cost-and-context-down).

228 228 

229## Mengekspor dan menemukan data sesi229## Mengekspor dan menemukan data sesi

230 230 

settings.md +1 −1

Details

326* **Pengaturan proyek bersama dengan beberapa repositori**: 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](https://code.claude.com/docs/id/cloud-environments.md#what-carries-over-from-your-setup). Untuk lingkungan yang di-host sendiri, lihat [pengaturan repositori mana yang berlaku](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).326* **Pengaturan proyek bersama dengan beberapa repositori**: 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](https://code.claude.com/docs/id/cloud-environments.md#what-carries-over-from-your-setup). Untuk lingkungan yang di-host sendiri, lihat [pengaturan repositori mana yang berlaku](https://code.claude.com/docs/id/self-hosted-environments-configuration.md#repository-settings-in-sessions-with-several-repositories).

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

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

329* **`/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 [environment variable](https://code.claude.com/docs/id/cloud-environments.md#set-environment-variables) di lingkungan. Dalam sesi dengan satu repositori di luar thread proyek, Anda dapat sebagai gantinya melakukan commit kunci ke `.claude/settings.json` repositori tersebut.329* **`/config`**: di browser Anda di claude.ai/code, membuka halaman pengaturan **Code** atau **Claude Code** claude.ai Anda alih-alih mengubah nilai. Untuk mengubah pengaturan untuk sesi cloud, atur [environment variable](https://code.claude.com/docs/id/cloud-environments.md#set-environment-variables) di lingkungan. Dalam sesi dengan satu repositori di luar thread proyek, Anda dapat sebagai gantinya melakukan commit kunci ke `.claude/settings.json` repositori tersebut.

330 330 

331[Apa yang dibawa dari pengaturan Anda](https://code.claude.com/docs/id/cloud-environments.md#what-carries-over-from-your-setup) mencantumkan sisanya: `CLAUDE.md`, skills, server MCP, plugins, dan kredensial.331[Apa yang dibawa dari pengaturan Anda](https://code.claude.com/docs/id/cloud-environments.md#what-carries-over-from-your-setup) mencantumkan sisanya: `CLAUDE.md`, skills, server MCP, plugins, dan kredensial.

332 332 

Details

1293* Perintah yang dimulai dengan `sudo`, `eval`, atau `xargs`1293* Perintah yang dimulai dengan `sudo`, `eval`, atau `xargs`

1294* `cd`, `pushd`, atau `popd`, di mana pun muncul dalam panggilan1294* `cd`, `pushd`, atau `popd`, di mana pun muncul dalam panggilan

1295* Substitusi perintah, subshell, atau blok alur kontrol seperti `if` atau `for`1295* Substitusi perintah, subshell, atau blok alur kontrol seperti `if` atau `for`

1296* Pengalihan, seperti `docker build . > build.log`, selain yang hanya menduplikasi deskriptor file, seperti `2>&1`1296* Pengalihan, seperti `docker build . > build.log` atau heredoc `<<EOF`, selain pengalihan yang hanya menduplikasi file descriptor, seperti yang dilakukan `2>&1`

1297* Nama perintah yang berasal dari variabel1297* Nama perintah yang berasal dari variabel

1298* `git clone`, `git init`, `git worktree add`, `git worktree move`, atau `git bundle create` dengan argumen jalur yang absolut, dimulai dengan `~`, atau berisi segmen `..`1298* `git clone`, `git init`, `git worktree add`, `git worktree move`, atau `git bundle create` dengan argumen jalur yang absolut, dimulai dengan `~`, atau berisi segmen `..`

1299 1299 


1521 1521 

1522### `sandbox.filesystem.disabled`1522### `sandbox.filesystem.disabled`

1523 1523 

1524Lewati isolasi sistem file sambil mempertahankan isolasi jaringan. Perintah bersandbox mendapatkan akses baca dan tulis tanpa batas ke sistem file host, dan egress jaringannya tetap terbatas pada [`network.allowedDomains`](#sandbox-network-alloweddomains). Gunakan ketika Anda memakai sandbox untuk mengontrol tempat perintah terhubung, bukan apa yang ditulisnya. Memerlukan Claude Code v2.1.216 atau lebih baru.1524Lewati isolasi sistem file sambil mempertahankan isolasi jaringan. Perintah yang di-sandbox mendapatkan akses baca dan tulis tanpa batas ke sistem file host, dan lalu lintas keluar jaringannya tetap dibatasi pada [`network.allowedDomains`](#sandbox-network-alloweddomains). Gunakan ini ketika Anda men-sandbox untuk mengontrol ke mana perintah terhubung, bukan apa yang mereka tulis.

1525 1525 

1526* **Scope**: [`User or managed`](#scopes). Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` sama sekali, atau mencantumkan entri `sandbox.credentials.files` dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat menetapkannya.1526* **Scope**: [`User or managed`](#scopes). Ketika pengaturan terkelola mengonfigurasi `sandbox.filesystem` sama sekali, atau mencantumkan entri `sandbox.credentials.files` dengan `"mode": "deny"`, hanya pengaturan terkelola yang dapat menetapkannya.

1527* **Type**: Boolean1527* **Type**: Boolean


1545}1545}

1546```1546```

1547 1547 

1548Dengan lapisan ini mati, Claude Code tidak memberlakukan entri `denyRead` atau entri `deny` `credentials.files`, sementara entri `credentials.envVars` dan entri `mask` yang diterapkan tetap bekerja. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) tetap default ke `true`, jadi atur ke `false` agar permintaan izin tetap muncul. Lihat [Disable filesystem isolation](https://code.claude.com/docs/id/sandboxing.md#disable-filesystem-isolation) untuk daftar lengkap sumber yang dapat menetapkannya dan apa yang berubah ketika isolasi mati. Memerlukan Claude Code v2.1.216 atau lebih baru.1548Dengan lapisan ini nonaktif, Claude Code tidak menerapkan entri `denyRead` atau entri `deny` di `credentials.files`, sementara entri `credentials.envVars` dan entri `mask` yang diterapkan tetap berfungsi. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) tetap default ke `true`, jadi atur ke `false` agar permintaan izin tetap muncul. Lihat [Menonaktifkan isolasi sistem file](https://code.claude.com/docs/id/sandboxing.md#disable-filesystem-isolation) untuk daftar lengkap sumber yang dapat mengaturnya dan apa yang berubah ketika isolasi nonaktif.

1549 1549 

1550### `sandbox.ignoreViolations`1550### `sandbox.ignoreViolations`

1551 1551 


2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file.2392* [`CLAUDE_CODE_RESTRICTED`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file.

2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file. Variabel ini memerlukan Claude Code v2.1.283 atau yang lebih baru.2393* [`CLAUDE_CODE_DISABLE_POWERSHELL_CMD_RM_DENY`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file. Variabel ini memerlukan Claude Code v2.1.283 atau yang lebih baru.

2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT`, dan `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file.2394* [`CLAUDE_CODE_DISABLE_DANGEROUS_RM_TIMEOUT`, `CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT`, `CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPT`, dan `CLAUDE_CODE_DISABLE_MOUNTED_DRIVE_RM_PROMPT`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file.

2395* [`CLAUDE_CODE_EVEN_MORE_DANGEROUSLY_SKIP_PERMISSIONS`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file.

2395* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` dan `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file. Variabel ini memerlukan Claude Code v2.1.304 atau yang lebih baru.2396* [`CLAUDE_CODE_WARN_DISK_FREE_GIB` dan `CLAUDE_CODE_WARN_MEMORY_FREE_GIB`](https://code.claude.com/docs/id/env-vars#variables), yang dibaca Claude Code hanya dari lingkungan peluncuran, diabaikan dari setiap file. Variabel ini memerlukan Claude Code v2.1.304 atau yang lebih baru.

2396 2397 

2397### `fileCheckpointingEnabled`2398### `fileCheckpointingEnabled`


2716}2717}

2717```2718```

2718 2719 

2719Lihat [Emoji shortcodes](https://code.claude.com/docs/id/interactive-mode.md#emoji-shortcodes). Memerlukan Claude Code v2.1.217 atau lebih baru.2720Lihat [Emoji shortcodes](https://code.claude.com/docs/id/interactive-mode.md#emoji-shortcodes).

2720 2721 

2721### `fileSuggestion`2722### `fileSuggestion`

2722 2723 


3691 3692 

3692### `workflowSizeGuideline`3693### `workflowSizeGuideline`

3693 3694 

3694Atur [jumlah agent yang Claude targetkan](https://code.claude.com/docs/id/workflows.md#set-a-size-guideline) dalam dynamic workflows yang ditulisnya. Claude Code mengirimkan nilai ke Claude sebagai saran, bukan batas yang diberlakukan: `"small"` meminta lebih sedikit dari 5 agent, `"medium"` lebih sedikit dari 10, dan `"large"` lebih sedikit dari 50. Pilih `"small"` ketika Anda ingin membatasi apa yang dihabiskan alur kerja. Memerlukan Claude Code v2.1.219 atau lebih baru.3695Atur [jumlah agent yang Claude targetkan](https://code.claude.com/docs/id/workflows.md#set-a-size-guideline) dalam dynamic workflows yang ditulisnya. Claude Code mengirimkan nilai ke Claude sebagai saran, bukan batas yang diberlakukan: `"small"` meminta lebih sedikit dari 5 agent, `"medium"` lebih sedikit dari 10, dan `"large"` lebih sedikit dari 50. Pilih `"small"` ketika Anda ingin membatasi apa yang dihabiskan alur kerja.

3695 3696 

3696* **Scope**: [`Any file`](#scopes). Nilai di sana diutamakan daripada pilihan **Dynamic workflow size** di `/config`, yang disimpan Claude Code di `~/.claude.json`, dan Claude Code menyembunyikan baris itu saat file pengaturan menyetel kunci.3697* **Scope**: [`Any file`](#scopes). Nilai di sana diutamakan daripada pilihan **Dynamic workflow size** di `/config`, yang disimpan Claude Code di `~/.claude.json`, dan Claude Code menyembunyikan baris itu saat file pengaturan menyetel kunci.

3697* **Type**: string, salah satu dari:3698* **Type**: string, salah satu dari:


3707}3708}

3708```3709```

3709 3710 

3710Memerlukan Claude Code v2.1.219 atau lebih baru; pada v2.1.202 hingga v2.1.218, atur panduan di `/config` sebagai gantinya.

3711 

3712## Plugins dan skills3711## Plugins dan skills

3713 3712 

3714Aktifkan plugins, daftarkan marketplaces, batasi sumber plugin mana yang diizinkan organisasi, dan kontrol skills mana yang dimuat. Untuk menginstal dan membangun plugins, lihat [Plugins](https://code.claude.com/docs/id/plugins/overview.md).3713Aktifkan plugins, daftarkan marketplaces, batasi sumber plugin mana yang diizinkan organisasi, dan kontrol skills mana yang dimuat. Untuk menginstal dan membangun plugins, lihat [Plugins](https://code.claude.com/docs/id/plugins/overview.md).

skills.md +5 −7

Details

83| Subperintah | Fungsinya | Versi minimum |83| Subperintah | Fungsinya | Versi minimum |

84| :- | :- | :- |84| :- | :- | :- |

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

86| `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 |86| `upgrade` | Meningkatkan Anthropic SDK proyek Anda ke versi mayor baru dan memperbarui kode Anda untuk perubahan yang merusak kompatibilitas di versi tersebut | v2.1.236 atau yang lebih baru |

87| `api-version` | Memperbarui kode Claude API Anda untuk [versi API](https://platform.claude.com/docs/en/api/versioning) yang lebih baru, lalu mengalihkan permintaan Anda ke versi tersebut | v2.1.307 atau yang lebih baru |87| `api-version` | Memperbarui kode Claude API Anda untuk [versi API](https://platform.claude.com/docs/en/api/versioning) yang lebih baru, lalu mengalihkan permintaan Anda ke versi tersebut | v2.1.307 atau yang lebih baru |

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

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


3713. Push to the deployment target3713. Push to the deployment target

372```372```

373 373 

374Jaga agar isi skill itu sendiri tetap ringkas. Setelah skill dimuat, kontennya [tetap berada dalam konteks di sepanjang giliran](#skill-content-lifecycle), sehingga setiap baris merupakan biaya token yang berulang. Nyatakan apa yang harus dilakukan alih-alih menjelaskan bagaimana atau mengapa, dan terapkan uji keringkasan yang sama seperti yang Anda lakukan untuk [konten CLAUDE.md](https://code.claude.com/docs/id/best-practices.md#write-an-effective-claude-md).374Jaga agar isi skill itu sendiri tetap ringkas. Setelah skill dimuat, kontennya [tetap berada dalam konteks di sepanjang giliran](#skill-content-lifecycle), sehingga setiap baris merupakan biaya token yang berulang. Nyatakan apa yang harus dilakukan alih-alih menjelaskan bagaimana atau mengapa, dan terapkan uji keringkasan yang sama seperti yang Anda lakukan untuk [konten CLAUDE.md](https://code.claude.com/docs/id/best-practices.md#keep-claude-md-short).

375 375 

376### Referensi frontmatter376### Referensi frontmatter

377 377 


388Your skill instructions here...388Your skill instructions here...

389```389```

390 390 

391Semua field bersifat opsional. Hanya `description` yang direkomendasikan agar Claude tahu kapan harus menggunakan skill tersebut. Nama field harus sama persis dengan tabel, termasuk tanda hubungnya: Claude Code mengabaikan field yang tidak dikenalinya tanpa melaporkan kesalahan.391Semua field bersifat opsional. Hanya `description` yang direkomendasikan agar Claude tahu kapan harus menggunakan skill tersebut. Nama field harus sama persis dengan tabel, termasuk tanda hubungnya: Claude Code mengabaikan field yang tidak dikenalinya tanpa melaporkan kesalahan. Field boolean menerima `yes`, `no`, `on`, `off`, `1`, dan `0` dalam huruf besar maupun kecil, selain `true` dan `false`.

392 392 

393Claude Code membaca frontmatter hanya jika `---` pembuka berada di baris pertama file. Jika tidak, seluruh file, termasuk penanda `---`, diperlakukan sebagai konten skill. Jika YAML di antara penanda tidak dapat di-parse, skill tetap dimuat tanpa field apa pun yang diatur; lihat [Skill tidak terpicu](#skill-not-triggering) untuk menemukan dan memperbaiki kesalahannya.393Claude Code membaca frontmatter hanya jika `---` pembuka berada di baris pertama file. Jika tidak, seluruh file, termasuk penanda `---`, diperlakukan sebagai konten skill. Jika YAML di antara penanda tidak dapat di-parse, skill tetap dimuat tanpa field apa pun yang diatur; lihat [Skill tidak terpicu](#skill-not-triggering) untuk menemukan dan memperbaiki kesalahannya.

394 394 

395Field boolean menerima `yes`, `no`, `on`, `off`, `1`, dan `0` dalam huruf besar maupun kecil, selain `true` dan `false`. Sebelum v2.1.218, Claude Code hanya mengenali `true` dan `false`.

396 

397| Field | Wajib | Deskripsi |395| Field | Wajib | Deskripsi |

398| :- | :- | :- |396| :- | :- | :- |

399| `name` | Tidak | Nama perintah yang ditampilkan di menu `/`. Default-nya adalah nama direktori. Lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name) untuk cara field ini berinteraksi dengan nama yang Anda ketik untuk memanggil skill. |397| `name` | Tidak | Nama perintah yang ditampilkan di menu `/`. Default-nya adalah nama direktori. Lihat [Bagaimana skill mendapatkan nama perintahnya](#how-a-skill-gets-its-command-name) untuk cara field ini berinteraksi dengan nama yang Anda ketik untuk memanggil skill. |


409| `effort` | Tidak | [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) ketika skill ini aktif. Menimpa tingkat effort sesi. Jika Anda menghilangkannya, tingkatnya berasal dari [urutan resolusi effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level). Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia bergantung pada model. |407| `effort` | Tidak | [Tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) ketika skill ini aktif. Menimpa tingkat effort sesi. Jika Anda menghilangkannya, tingkatnya berasal dari [urutan resolusi effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level). Opsi: `low`, `medium`, `high`, `xhigh`, `max`; tingkat yang tersedia bergantung pada model. |

410| `context` | Tidak | Atur ke `fork` untuk menjalankan dalam konteks subagent hasil fork. Lihat [Menjalankan skills dalam subagent](#run-skills-in-a-subagent). |408| `context` | Tidak | Atur ke `fork` untuk menjalankan dalam konteks subagent hasil fork. Lihat [Menjalankan skills dalam subagent](#run-skills-in-a-subagent). |

411| `agent` | Tidak | Jenis subagent yang digunakan ketika `context: fork` diatur. |409| `agent` | Tidak | Jenis subagent yang digunakan ketika `context: fork` diatur. |

412| `background` | Tidak | Hanya berlaku dengan `context: fork`. Atur ke `false` untuk menunggu hasil subagent hasil fork dalam giliran yang memanggil skill, alih-alih [menjalankannya di latar belakang](#run-skills-in-a-subagent). Default: `true`. Memerlukan Claude Code v2.1.218 atau yang lebih baru. |410| `background` | Tidak | Hanya berlaku dengan `context: fork`. Atur ke `false` untuk menunggu hasil subagent hasil fork dalam giliran yang memanggil skill, alih-alih [menjalankannya di latar belakang](#run-skills-in-a-subagent). Default: `true`. |

413| `hooks` | Tidak | Hook yang didaftarkan Claude Code ketika skill dipanggil dan tetap berjalan selama sisa sesi. Lihat [Hooks dalam skills dan agent](https://code.claude.com/docs/id/hooks.md#hooks-in-skills-and-agents) untuk format konfigurasi, opsi `once`, dan [batasan pada hook skill](https://code.claude.com/docs/id/hooks.md#limits-on-skill-hooks). |411| `hooks` | Tidak | Hook yang didaftarkan Claude Code ketika skill dipanggil dan tetap berjalan selama sisa sesi. Lihat [Hooks dalam skills dan agent](https://code.claude.com/docs/id/hooks.md#hooks-in-skills-and-agents) untuk format konfigurasi, opsi `once`, dan [batasan pada hook skill](https://code.claude.com/docs/id/hooks.md#limits-on-skill-hooks). |

414| `paths` | Tidak | Pola glob yang membatasi kapan skill ini diaktifkan. Menerima string yang dipisahkan koma atau daftar YAML. Jika diatur, Claude memuat skill secara otomatis hanya ketika bekerja dengan file yang cocok dengan pola tersebut. Pola bersifat relatif terhadap direktori kerja Claude saat ini, dan file di luar direktori tersebut tidak cocok. Menggunakan format glob yang sama dengan [aturan khusus path](https://code.claude.com/docs/id/memory.md#path-specific-rules). |412| `paths` | Tidak | Pola glob yang membatasi kapan skill ini diaktifkan. Menerima string yang dipisahkan koma atau daftar YAML. Jika diatur, Claude memuat skill secara otomatis hanya ketika bekerja dengan file yang cocok dengan pola tersebut. Pola bersifat relatif terhadap direktori kerja Claude saat ini, dan file di luar direktori tersebut tidak cocok. Menggunakan format glob yang sama dengan [aturan khusus path](https://code.claude.com/docs/id/memory.md#path-specific-rules). |

415| `shell` | Tidak | Shell yang digunakan untuk blok `` !`command` `` dan ` ```! ` dalam skill ini. Menerima `bash` (default) atau `powershell`. Mengatur `powershell` menjalankan perintah shell inline melalui PowerShell ketika [tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool) diaktifkan: tool ini aktif secara default di Windows tanpa Git Bash, aktif secara default dengan Git Bash untuk akun claude.ai dan Console, dan memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` dalam sesi Amazon Bedrock, Agent Platform milik Google Cloud, dan Microsoft Foundry serta di macOS, Linux, dan WSL. Atur ke `0` untuk mematikan tool tersebut. |413| `shell` | Tidak | Shell yang digunakan untuk blok `` !`command` `` dan ` ```! ` dalam skill ini. Menerima `bash` (default) atau `powershell`. Mengatur `powershell` menjalankan perintah shell inline melalui PowerShell ketika [tool PowerShell](https://code.claude.com/docs/id/tools-reference.md#powershell-tool) diaktifkan: tool ini aktif secara default di Windows tanpa Git Bash, aktif secara default dengan Git Bash untuk akun claude.ai dan Console, dan memerlukan `CLAUDE_CODE_USE_POWERSHELL_TOOL=1` dalam sesi Amazon Bedrock, Agent Platform milik Google Cloud, dan Microsoft Foundry serta di macOS, Linux, dan WSL. Atur ke `0` untuk mematikan tool tersebut. |


800>798>

801> Meskipun namanya, skill dengan `context: fork` tidak berjalan dalam [fork dari percakapan saat ini](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation), yang akan memberikan subagent semua yang telah Anda diskusikan sejauh ini. Ketika tugas bergantung pada riwayat itu, fork percakapan alih-alih menggunakan `context: fork`.799> Meskipun namanya, skill dengan `context: fork` tidak berjalan dalam [fork dari percakapan saat ini](https://code.claude.com/docs/id/sub-agents.md#fork-the-current-conversation), yang akan memberikan subagent semua yang telah Anda diskusikan sejauh ini. Ketika tugas bergantung pada riwayat itu, fork percakapan alih-alih menggunakan `context: fork`.

802 800 

803Subagent yang di-fork berjalan di [latar belakang](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background): Anda terus bekerja sementara itu berjalan, dan hasilnya tiba dalam percakapan Anda ketika selesai. Atur `background: false` dalam frontmatter untuk menunggu hasil dalam giliran yang menginvokasi skill. Sebelum v2.1.218, skill yang di-fork selalu memblokir giliran sampai selesai.801Subagent yang di-fork berjalan di [latar belakang](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background): Anda terus bekerja sementara itu berjalan, dan hasilnya tiba dalam percakapan Anda ketika selesai. Atur `background: false` dalam frontmatter untuk menunggu hasil dalam giliran yang menginvokasi skill.

804 802 

805Claude Code juga menunggu hasil, bahkan ketika skill tidak menetapkan `background: false`, dalam kasus seperti ini:803Claude Code juga menunggu hasil, bahkan ketika skill tidak menetapkan `background: false`, dalam kasus seperti ini:

806 804 

sub-agents.md +2 −9

Details

352* **ID model lengkap**: gunakan ID model lengkap seperti `claude-opus-5-5` atau `claude-sonnet-5`. Menerima nilai yang sama seperti flag `--model`352* **ID model lengkap**: gunakan ID model lengkap seperti `claude-opus-5-5` atau `claude-sonnet-5`. Menerima nilai yang sama seperti flag `--model`

353* **inherit**: gunakan model yang sama seperti percakapan utama353* **inherit**: gunakan model yang sama seperti percakapan utama

354 354 

355Ketika Claude memanggil subagent, ia juga dapat melewatkan parameter `model` untuk invokasi spesifik itu. Claude Code menyelesaikan model subagent dalam urutan ini:355Ketika Claude memanggil subagent, ia juga dapat melewatkan parameter `model` untuk invokasi spesifik itu. Pada panggilan tool Agent, parameter itu menerima alias model: `sonnet`, `opus`, `haiku`, atau `fable`. Claude tidak dapat melewatkan ID model lengkap atau `inherit` pada panggilan itu. Claude Code menyelesaikan model subagent dalam urutan ini:

356 356 

3571. Parameter `model` per-invokasi3571. Parameter `model` per-invokasi

3582. Frontmatter `model` definisi subagent, di mana `inherit` memilih model percakapan utama3582. Frontmatter `model` definisi subagent, di mana `inherit` memilih model percakapan utama


762 762 

763Untuk membiarkan hook frontmatter subagent tingkat proyek berjalan, terima [workspace trust dialog](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) untuk folder yang berisi file agent. Hook dari subagent tingkat pengguna dalam `~/.claude/agents/` dan dari definisi yang Anda lewatkan dengan `--agents` berjalan tanpa langkah ini. Jika Anda menambahkan folder dengan `--add-dir` dari luar repositori workspace terpercaya Anda, percayai folder itu secara terpisah: hook `.claude/agents/` miliknya tidak mewarisi kepercayaan workspace.763Untuk membiarkan hook frontmatter subagent tingkat proyek berjalan, terima [workspace trust dialog](https://code.claude.com/docs/id/permissions.md#project-allow-rules-and-workspace-trust) untuk folder yang berisi file agent. Hook dari subagent tingkat pengguna dalam `~/.claude/agents/` dan dari definisi yang Anda lewatkan dengan `--agents` berjalan tanpa langkah ini. Jika Anda menambahkan folder dengan `--add-dir` dari luar repositori workspace terpercaya Anda, percayai folder itu secara terpisah: hook `.claude/agents/` miliknya tidak mewarisi kepercayaan workspace.

764 764 

765Sampai Anda mempercayai folder, subagent masih berjalan, tetapi Claude Code melewati hook frontmatter-nya dan mencatat kesalahan ke debug log yang menjelaskan cara mempercayai folder. Ini adalah aturan yang lebih ketat daripada untuk hook dalam file pengaturan: mempercayai folder induk tidak cukup, dan sesi `-p` tidak dihitung sebagai terpercaya. [What runs before you trust a folder](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) membandingkan keduanya. Sebelum v2.1.218, hook frontmatter dapat berjalan dari folder yang belum Anda percayai, termasuk dalam sesi non-interaktif.765Sampai Anda mempercayai folder, subagent masih berjalan, tetapi Claude Code melewati hook frontmatter-nya dan mencatat kesalahan ke debug log yang menjelaskan cara mempercayai folder. Ini adalah aturan yang lebih ketat daripada untuk hook dalam file pengaturan: mempercayai folder induk tidak cukup, dan sesi `-p` tidak dihitung sebagai terpercaya. [What runs before you trust a folder](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) membandingkan keduanya.

766 766 

767Semua [hook events](https://code.claude.com/docs/id/hooks.md#hook-events) didukung. Peristiwa paling umum untuk subagent adalah:767Semua [hook events](https://code.claude.com/docs/id/hooks.md#hook-events) didukung. Peristiwa paling umum untuk subagent adalah:

768 768 


1075 1075 

1076Dalam terminal, Claude Code menampilkan subagent bersarang sebagai pohon dalam panel subagent di bawah input prompt dan menandai setiap baris yang masih memiliki keturunan dalam panel dengan hitungan `(+N)` mereka. Buka baris untuk melihat saudara dan anak langsung subagent itu dengan jalur kembali ke `main`.1076Dalam terminal, Claude Code menampilkan subagent bersarang sebagai pohon dalam panel subagent di bawah input prompt dan menandai setiap baris yang masih memiliki keturunan dalam panel dengan hitungan `(+N)` mereka. Buka baris untuk melihat saudara dan anak langsung subagent itu dengan jalur kembali ke `main`.

1077 1077 

1078> [!NOTE]

1079>

1080> Versi sebelumnya menggunakan default yang berbeda:

1081>

1082> * **v2.1.172 hingga v2.1.216**: subagent dapat bersarang secara default, hingga lima lapisan dalam, dan batas tidak dapat diubah.

1083> * **v2.1.217 hingga v2.1.218**: batas default ke satu, jadi subagent tidak dapat menghasilkan miliknya sendiri kecuali Anda menaikkannya; v2.1.219 menaikkan default ke tiga.

1084 

1085### Batas subagent bersamaan1078### Batas subagent bersamaan

1086 1079 

1087Dua batas mengontrol penggunaan subagent, masing-masing dengan variabelnya sendiri: yang ini menghentikan Claude dari menghasilkan lebih banyak subagent sementara terlalu banyak berjalan, dan [batas kedalaman](#let-subagents-spawn-their-own-subagents) membatasi seberapa dalam subagent bersarang. Tidak ada batas pada jumlah total subagent yang dapat Claude hasilkan selama sesi.1080Dua batas mengontrol penggunaan subagent, masing-masing dengan variabelnya sendiri: yang ini menghentikan Claude dari menghasilkan lebih banyak subagent sementara terlalu banyak berjalan, dan [batas kedalaman](#let-subagents-spawn-their-own-subagents) membatasi seberapa dalam subagent bersarang. Tidak ada batas pada jumlah total subagent yang dapat Claude hasilkan selama sesi.

Details

290>290>

291> Setiap [subagent](https://code.claude.com/docs/id/sub-agents.md) dan tugas paralel ditampilkan dalam salah satu dari delapan warna bernama sehingga Anda dapat membedakannya dalam transkrip. Nama token mengikuti pola `<color>_FOR_SUBAGENTS_ONLY`, di mana `<color>` adalah `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, atau `cyan`. Ganti ini untuk mengubah tampilan setiap warna bernama. Misalnya, subagent dengan `color: blue` dalam definisinya digambar menggunakan nilai `blue_FOR_SUBAGENTS_ONLY`.291> Setiap [subagent](https://code.claude.com/docs/id/sub-agents.md) dan tugas paralel ditampilkan dalam salah satu dari delapan warna bernama sehingga Anda dapat membedakannya dalam transkrip. Nama token mengikuti pola `<color>_FOR_SUBAGENTS_ONLY`, di mana `<color>` adalah `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, atau `cyan`. Ganti ini untuk mengubah tampilan setiap warna bernama. Misalnya, subagent dengan `color: blue` dalam definisinya digambar menggunakan nilai `blue_FOR_SUBAGENTS_ONLY`.

292>292>

293> Claude Code merender kata kunci [`ultrathink`](https://code.claude.com/docs/id/model-config#use-ultrathink-for-one-off-deep-reasoning) dalam input prompt dengan gradien pelangi tujuh warna. Nama token mengikuti pola `rainbow_<color>` dan `rainbow_<color>_shimmer`, di mana `<color>` adalah `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, atau `violet`.293> Ketika [`ultrathink`](https://code.claude.com/docs/id/model-config#use-ultrathink-for-one-off-deep-reasoning) dapat meningkatkan tingkat upaya suatu giliran, Claude Code merender kata tersebut dalam input prompt dengan gradien pelangi tujuh warna. Nama token mengikuti pola `rainbow_<color>` dan `rainbow_<color>_shimmer`, di mana `<color>` adalah `red`, `orange`, `yellow`, `green`, `blue`, `indigo`, atau `violet`.

294 294 

295## Beralih ke rendering fullscreen295## Beralih ke rendering fullscreen

296 296 

ultrareview.md +4 −2

Details

85 85 

86### Teruskan permintaan dalam kata-kata polos86### Teruskan permintaan dalam kata-kata polos

87 87 

88Pada Claude Code v2.1.218 atau lebih baru, Anda juga dapat mendeskripsikan apa yang Anda kerjakan dalam kata-kata polos:88Anda juga dapat mendeskripsikan apa yang Anda kerjakan dalam kata-kata polos:

89 89 

90```text theme={null}90```text theme={null}

91/code-review ultra check my auth changes91/code-review ultra check my auth changes


159 159 

160Anda menyetujui fallback seluruh repositori dan prompt penagihan serta syarat ketika Anda menjalankan subperintah, sehingga jalankan tidak berhenti untuk mengonfirmasinya. Menjalankannya sendiri adalah apa yang dihitung sebagai persetujuan. Ketika Claude menjalankan subperintah untuk Anda sebagai gantinya, misalnya melalui tool Bash, Claude Code menolak tinjauan seluruh repositori.160Anda menyetujui fallback seluruh repositori dan prompt penagihan serta syarat ketika Anda menjalankan subperintah, sehingga jalankan tidak berhenti untuk mengonfirmasinya. Menjalankannya sendiri adalah apa yang dihitung sebagai persetujuan. Ketika Claude menjalankan subperintah untuk Anda sebagai gantinya, misalnya melalui tool Bash, Claude Code menolak tinjauan seluruh repositori.

161 161 

162`claude -p '/code-review ultra'` tidak memberikan temuan kepada Anda, jadi gunakan `claude ultrareview` dalam skrip. Jalankan `-p` meluncurkan tinjauan cloud dan keluar tanpa menunggunya. Ketika tinjauan akan menagih kredit penggunaan, jalankan `-p` berhenti tanpa meluncurkannya. Sebelum v2.1.218, `/code-review ultra` dalam sesi non-interaktif menjalankan tinjauan lokal.162> [!NOTE]

163>

164> `claude -p '/code-review ultra'` tidak memberikan temuan kepada Anda, jadi gunakan `claude ultrareview` dalam skrip. Jalankan `-p` meluncurkan tinjauan cloud dan keluar tanpa menunggunya. Ketika tinjauan akan menagih kredit penggunaan, jalankan `-p` berhenti tanpa meluncurkannya.

163 165 

164| Bendera | Deskripsi |166| Bendera | Deskripsi |

165| - | - |167| - | - |

Details

182* Anda juga dapat mengklik **Changes** di bilah judul sesi, atau di menu **⋮** pada bilah tersebut.182* Anda juga dapat mengklik **Changes** di bilah judul sesi, atau di menu **⋮** pada bilah tersebut.

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

184 184 

185Diff membandingkan perubahan sesi terhadap branch dasarnya secara default. Untuk membandingkan terhadap branch yang berbeda, pilih **Compare against** dan pilih satu.185Diff membandingkan perubahan sesi terhadap branch dasarnya secara default. Untuk membandingkan terhadap branch yang berbeda, pilih **Compare against** dan pilih satu. Jika dibandingkan terhadap branch dasar, diff dapat [tidak menyertakan perubahan yang belum didorong](https://code.claude.com/docs/id/claude-code-on-the-web.md#troubleshoot-a-missing-file-in-the-diff-view).

186 186 

187**2. Tinggalkan komentar inline**187**2. Tinggalkan komentar inline**

188 188 

189Pilih baris apa pun di diff, ketik umpan balik Anda, dan tekan Enter. Komentar antri sampai Anda mengirim pesan berikutnya, kemudian digabungkan dengannya. Claude melihat "di `src/auth.ts:47`, jangan tangkap kesalahan di sini" bersama instruksi utama Anda, jadi Anda tidak harus menjelaskan di mana masalahnya.189Arahkan kursor ke sebuah baris di diff dan klik **+** yang muncul di samping nomor barisnya untuk membuka kotak komentar, lalu ketik umpan balik Anda dan tekan Enter. Komentar antri sampai Anda mengirim pesan berikutnya, kemudian digabungkan dengannya. Claude melihat "di `src/auth.ts:47`, jangan tangkap kesalahan di sini" bersama instruksi utama Anda, jadi Anda tidak harus menjelaskan di mana masalahnya.

190 190 

191**3. Buat pull request**191**3. Buat pull request**

192 192 

workflows.md +5 −9

Details

155* [batas subagen bersamaan](https://code.claude.com/docs/id/sub-agents.md#concurrent-subagent-limit) sesi tidak diterapkan untuk subagen yang Claude hasilkan dengan alat Agent155* [batas subagen bersamaan](https://code.claude.com/docs/id/sub-agents.md#concurrent-subagent-limit) sesi tidak diterapkan untuk subagen yang Claude hasilkan dengan alat Agent

156* Dalam mode izin otomatis, Anda tidak diminta untuk [menyetujui peluncuran alur kerja pertama](#approve-the-plan-before-it-runs)156* Dalam mode izin otomatis, Anda tidak diminta untuk [menyetujui peluncuran alur kerja pertama](#approve-the-plan-before-it-runs)

157 157 

158`/effort ultracode` berlangsung untuk sesi saat ini; untuk memiliki setiap sesi dimulai dengan itu, atur pengaturan [`ultracode`](https://code.claude.com/docs/id/settings-reference#ultracode). Matikan dengan `/effort ultracode off` ketika Anda kembali ke pekerjaan rutin. Penggeser `/effort` menawarkan toggle tersebut hanya [ketika ultracode tersedia](https://code.claude.com/docs/id/model-config.md#when-ultracode-is-available).158`/effort ultracode` berlangsung untuk sesi saat ini; untuk memiliki setiap sesi dimulai dengan itu, atur pengaturan [`ultracode`](https://code.claude.com/docs/id/settings-reference#ultracode). Matikan dengan `/effort ultracode off` ketika Anda kembali ke pekerjaan sehari-hari. Penggeser `/effort` menawarkan toggle tersebut hanya [ketika ultracode tersedia](https://code.claude.com/docs/id/model-config.md#when-ultracode-is-available). Sebelum v2.1.284, `/effort ultracode` mengatur sesi ke `xhigh`, dan `/effort ultracode off` gagal dengan `Invalid argument`.

159 159 

160### Setujui rencana sebelum berjalan160### Setujui rencana sebelum berjalan

161 161 


198* `.claude/workflows/` di proyek Anda: dibagikan dengan semua orang yang mengkloning repo198* `.claude/workflows/` di proyek Anda: dibagikan dengan semua orang yang mengkloning repo

199* `~/.claude/workflows/` di direktori home Anda: tersedia di setiap proyek, hanya terlihat oleh Anda. Jika Anda menetapkan [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars), lokasi ini adalah direktori `workflows/` di bawah jalur itu.199* `~/.claude/workflows/` di direktori home Anda: tersedia di setiap proyek, hanya terlihat oleh Anda. Jika Anda menetapkan [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars), lokasi ini adalah direktori `workflows/` di bawah jalur itu.

200 200 

201Dialog simpan menunjukkan jalur yang diselesaikan untuk lokasi pribadi.201Dialog simpan menunjukkan jalur yang diselesaikan untuk lokasi pribadi. Tekan Enter untuk menyimpan. Alur kerja berjalan sebagai `/<name>` di sesi mendatang dari lokasi mana pun.

202 202 

203Tekan Enter untuk menyimpan. Alur kerja berjalan sebagai `/<name>` di sesi mendatang dari lokasi mana pun.203Claude Code memeriksa lokasi simpan untuk symlink sebelum menulis, dan menampilkan kesalahan daripada menulis melalui satu:

204 

205Claude Code memeriksa lokasi simpan untuk symlink sebelum menulis, dan menampilkan kesalahan daripada menulis melalui satu. Apa yang diperiksa tergantung pada tempat Anda menyimpan:

206 204 

207* Lokasi proyek: Claude Code menolak jika `.claude`, `.claude/workflows`, atau file target adalah symlink.205* Lokasi proyek: Claude Code menolak jika `.claude`, `.claude/workflows`, atau file target adalah symlink.

208* Lokasi pribadi: Claude Code hanya menolak jika file target itu sendiri adalah symlink, jadi direktori `~/.claude` yang dikelola oleh alat dotfiles masih berfungsi.206* Lokasi pribadi: Claude Code hanya menolak jika file target itu sendiri adalah symlink, jadi direktori `~/.claude` yang dikelola oleh alat dotfiles masih berfungsi.

209 207 

210Sebelum v2.1.216, Claude Code mengikuti tautan, yang dapat menempatkan file di luar lokasi yang Anda pilih.

211 

212Dalam monorepo dengan beberapa direktori `.claude/`, Anda dapat menyimpan alur kerja di samping paket yang mereka terapkan. Menyimpan ke lokasi proyek menulis ke direktori `.claude/workflows/` terdekat yang sudah ada antara direktori kerja Anda dan akar repositori, atau ke akar repositori jika belum ada. Alur kerja proyek juga dimuat dari setiap `.claude/workflows/` di sepanjang jalur itu, dan ketika lebih dari satu mendefinisikan nama yang sama Claude Code menjalankan yang terdekat dengan direktori kerja.208Dalam monorepo dengan beberapa direktori `.claude/`, Anda dapat menyimpan alur kerja di samping paket yang mereka terapkan. Menyimpan ke lokasi proyek menulis ke direktori `.claude/workflows/` terdekat yang sudah ada antara direktori kerja Anda dan akar repositori, atau ke akar repositori jika belum ada. Alur kerja proyek juga dimuat dari setiap `.claude/workflows/` di sepanjang jalur itu, dan ketika lebih dari satu mendefinisikan nama yang sama Claude Code menjalankan yang terdekat dengan direktori kerja.

213 209 

214Jika alur kerja proyek dan alur kerja pribadi berbagi nama, yang proyek berjalan.210Jika alur kerja proyek dan alur kerja pribadi berbagi nama, yang proyek berjalan.


469| `medium` | Lebih sedikit dari 10 agen |465| `medium` | Lebih sedikit dari 10 agen |

470| `large` | Lebih sedikit dari 50 agen |466| `large` | Lebih sedikit dari 50 agen |

471 467 

472Default adalah `medium`, atau `small` ketika Anda masuk pada paket Pro dengan Claude Code v2.1.271 atau lebih baru. Sampai Anda memilih nilai, baris `/config` menampilkan nilai sebagai default, dan baris `Running in background` alur kerja menampilkan ukuran yang berlaku. Memerlukan Claude Code v2.1.219 atau lebih baru; versi sebelumnya default ke `unrestricted`.468Default adalah `medium`, atau `small` ketika Anda masuk pada paket Pro dengan Claude Code v2.1.271 atau lebih baru. Sampai Anda memilih nilai, baris `/config` menandai nilai sebagai default, dan baris `Running in background` alur kerja menampilkan ukuran yang berlaku.

473 469 

474Untuk mengubah panduan, pilih nilai untuk pengaturan Dynamic workflow size di `/config`, atau jalankan `/config workflowSizeGuideline=small`. Pada v2.1.219 dan lebih baru, Anda juga dapat mengatur kunci [`workflowSizeGuideline`](https://code.claude.com/docs/id/settings-reference#workflowsizeguideline) di file pengaturan apa pun; nilai itu mengambil prioritas atas `/config`, dan Claude Code menyembunyikan baris `/config` saat file pengaturan menyediakan satu.470Untuk mengubah panduan, pilih nilai untuk pengaturan Dynamic workflow size di `/config`, atau jalankan `/config workflowSizeGuideline=small`. Anda juga dapat mengatur [kunci `workflowSizeGuideline`](https://code.claude.com/docs/id/settings-reference#workflowsizeguideline) di file pengaturan apa pun; nilai itu diutamakan daripada `/config`, dan Claude Code menyembunyikan baris `/config` saat file pengaturan menyediakan nilai tersebut.

475 471 

476Perubahan berlaku pada prompt berikutnya. [Batas agen runtime](#behavior-and-limits) masih berlaku terlepas dari pengaturannya.472Perubahan berlaku pada prompt berikutnya. [Batas agen runtime](#behavior-and-limits) masih berlaku terlepas dari pengaturannya.

477 473 

worktrees.md +22 −10

Details

43 43 

44Anda juga dapat meminta Claude untuk "bekerja dalam worktree" selama sesi, dan itu membuat satu dengan tool [`EnterWorktree`](https://code.claude.com/docs/id/tools-reference). Setelah berada dalam worktree, Claude dapat beralih langsung ke worktree lain di bawah `.claude/worktrees/` dengan memanggil `EnterWorktree` dengan jalur target; worktree sebelumnya tetap berada di disk tanpa disentuh.44Anda juga dapat meminta Claude untuk "bekerja dalam worktree" selama sesi, dan itu membuat satu dengan tool [`EnterWorktree`](https://code.claude.com/docs/id/tools-reference). Setelah berada dalam worktree, Claude dapat beralih langsung ke worktree lain di bawah `.claude/worktrees/` dengan memanggil `EnterWorktree` dengan jalur target; worktree sebelumnya tetap berada di disk tanpa disentuh.

45 45 

46Saat Claude memasuki jalur di luar direktori `.claude/worktrees/` repositori, Claude Code meminta persetujuan Anda terlebih dahulu, karena perpindahan mengambil direktori kerja sesi, akses tulis, dan konfigurasi proyek seperti `CLAUDE.md` dan settings ke lokasi tersebut. Aturan [izin](https://code.claude.com/docs/id/permissions.md) `EnterWorktree` atau memilih "jangan tanya lagi" tidak menekan prompt ini; hanya mode `bypassPermissions` yang melewatinya. Sebelum v2.1.206, Claude dapat memasuki jalur worktree yang ada tanpa bertanya.46Saat Claude memasuki jalur di luar direktori `.claude/worktrees/` repositori, Claude Code meminta persetujuan Anda terlebih dahulu. Perpindahan tersebut membawa direktori kerja sesi, akses tulis, dan konfigurasi proyek seperti `CLAUDE.md` dan pengaturan ke lokasi tersebut. [Aturan izin](https://code.claude.com/docs/id/permissions.md) `EnterWorktree` atau memilih "jangan tanya lagi" tidak menekan dialog izin ini; hanya mode `bypassPermissions` yang melewatinya.

47 47 

48> [!NOTE]48> [!NOTE]

49>49>


63 63 

64Jalankan non-interaktif dengan `-p` tidak memiliki prompt keluar, jadi Claude tidak membersihkan worktrees mereka, dan Claude Code meninggalkan kunci yang diambilnya pada setiap satu saat pembuatan di tempat sampai [sapuan kunci basi](#clean-up-subagent-and-background-session-worktrees) sesi nanti melepaskannya. Untuk menghapus satu, jalankan `git worktree remove`; jika git menolak karena worktree terkunci, jalankan `git worktree unlock` padanya terlebih dahulu.64Jalankan non-interaktif dengan `-p` tidak memiliki prompt keluar, jadi Claude tidak membersihkan worktrees mereka, dan Claude Code meninggalkan kunci yang diambilnya pada setiap satu saat pembuatan di tempat sampai [sapuan kunci basi](#clean-up-subagent-and-background-session-worktrees) sesi nanti melepaskannya. Untuk menghapus satu, jalankan `git worktree remove`; jika git menolak karena worktree terkunci, jalankan `git worktree unlock` padanya terlebih dahulu.

65 65 

66Di Windows, menghapus worktree tidak menghapus file di luar itu. Jika folder di dalam worktree adalah tautan ke tempat lain, seperti junction NTFS atau symlink direktori, Claude Code menghapus hanya tautan dan menyimpan folder yang ditunjuknya. Sebelum v2.1.205, menghapus worktree dengan tautan bersarang di subdirektori dapat menghapus folder yang ditunjuknya.66Di Windows, menghapus worktree tidak menghapus file di luar itu. Jika folder di dalam worktree adalah tautan ke tempat lain, seperti junction NTFS atau symlink direktori, Claude Code hanya menghapus tautannya.

67 67 

68## Lanjutkan sesi worktree68## Lanjutkan sesi worktree

69 69 


81>81>

82> Sebelum v2.1.212, resume non-interaktif tetap berada di direktori awal dan `ExitWorktree` melaporkan bahwa tidak ada sesi worktree aktif untuk keluar.82> Sebelum v2.1.212, resume non-interaktif tetap berada di direktori awal dan `ExitWorktree` melaporkan bahwa tidak ada sesi worktree aktif untuk keluar.

83 83 

84Saat Claude memasuki atau keluar dari worktree yang dibuat Claude Code dengan git, transkrip mengikuti: Claude Code merekam sesi di bawah direktori kerja baru sesi, dengan cara yang sama seperti [`/cd`](https://code.claude.com/docs/id/commands) melakukannya, jadi `/desktop` dan `--resume` menemukannya di sana. Keluar memindahkannya kembali dengan cara yang sama. Worktree yang dibuat oleh hook [`WorktreeCreate`](#non-git-version-control) menyimpan transkrip di direktori peluncuran. Memerlukan Claude Code v2.1.198 atau lebih baru.84Saat Claude memasuki atau keluar dari worktree yang dibuat Claude Code dengan git, transkrip ikut berpindah. Claude Code merekam sesi di bawah direktori kerja baru sesi, dengan cara yang sama seperti [`/cd`](https://code.claude.com/docs/id/commands) melakukannya, jadi `/desktop` dan `--resume` menemukannya di sana. Keluar memindahkannya kembali dengan cara yang sama. Worktree yang dibuat oleh hook [`WorktreeCreate`](#non-git-version-control) menyimpan transkrip di direktori peluncuran.

85 85 

86## Bagaimana Claude Code memberlakukan isolasi86## Bagaimana Claude Code memberlakukan isolasi

87 87 


139 139 

140Claude Code menulis penanda ke metadata git setiap worktree yang dibuat dengan git, dan sapuan menyimpan worktree apa pun tanpa satu, termasuk worktree yang dibuat hook [`WorktreeCreate`](#non-git-version-control).140Claude Code menulis penanda ke metadata git setiap worktree yang dibuat dengan git, dan sapuan menyimpan worktree apa pun tanpa satu, termasuk worktree yang dibuat hook [`WorktreeCreate`](#non-git-version-control).

141 141 

142#### Kunci worktree dan penghapusan manual

143 

142Saat agen berjalan, Claude Code menyimpan `git worktree lock` pada worktree-nya sehingga pembersihan bersamaan tidak dapat menghapusnya, dan melepaskan kunci saat agen selesai. Claude Code menyimpan kunci yang sama pada worktree yang dibuat untuk sesi yang dikirim ke latar belakang saat sesi berjalan, jadi sapuan meninggalkan worktree di tempat dan `git worktree remove` menolak untuk menghapusnya.144Saat agen berjalan, Claude Code menyimpan `git worktree lock` pada worktree-nya sehingga pembersihan bersamaan tidak dapat menghapusnya, dan melepaskan kunci saat agen selesai. Claude Code menyimpan kunci yang sama pada worktree yang dibuat untuk sesi yang dikirim ke latar belakang saat sesi berjalan, jadi sapuan meninggalkan worktree di tempat dan `git worktree remove` menolak untuk menghapusnya.

143 145 

144Sapuan juga melepaskan kunci yang Claude Code atur untuk sesi yang proses-nya telah keluar, jadi sesi latar belakang yang terbunuh tidak meninggalkan worktree-nya terkunci secara permanen. Sapuan tidak pernah melepaskan kunci yang Anda atur sendiri dengan `git worktree lock`. Sebelum v2.1.210, kunci yang ditinggalkan sesi yang terbunuh tetap di tempat sampai Anda menjalankan `git worktree unlock`.146Sapuan juga melepaskan kunci yang Claude Code atur untuk sesi yang prosesnya telah keluar, jadi sesi latar belakang yang terbunuh tidak meninggalkan worktree-nya terkunci secara permanen. Sapuan tidak pernah melepaskan kunci yang Anda atur sendiri dengan `git worktree lock`.

145 147 

146Untuk membersihkan worktree yang disimpan sapuan, jalankan `git worktree remove`, tambahkan `--force` jika worktree memiliki perubahan yang belum dikomit atau file yang tidak dilacak. Jika git menolak karena worktree terkunci, jalankan `git worktree unlock` padanya terlebih dahulu.148Untuk membersihkan worktree yang disimpan sapuan, jalankan `git worktree remove`, tambahkan `--force` jika worktree memiliki perubahan yang belum dikomit atau file yang tidak dilacak. Jika git menolak karena worktree terkunci, jalankan `git worktree unlock` padanya terlebih dahulu.

147 149 


158 160 

159Anda tidak dapat mengatur `worktree.baseRef` ke nama cabang. Untuk memulai worktree dari cabang yang ada tertentu, [buat dengan git secara langsung](#manage-worktrees-manually).161Anda tidak dapat mengatur `worktree.baseRef` ke nama cabang. Untuk memulai worktree dari cabang yang ada tertentu, [buat dengan git secara langsung](#manage-worktrees-manually).

160 162 

161Untuk dasar `"fresh"`, Claude Code menyimpan `origin/HEAD` saat ini: saat repositori belum diambil dalam 24 jam terakhir, itu mengambil cabang default, dibatasi pada lima detik, dan menggunakan ref yang disimpan secara lokal jika pengambilan gagal. Pengambilan tidak pernah menunggu input di terminal Anda, sehingga pengambilan juga dianggap gagal saat git atau ssh akan meminta kata sandi, passphrase kunci, atau konfirmasi host SSH baru. Jika tidak ada remote yang dikonfigurasi, atau `origin/HEAD` tidak disimpan secara lokal dan tidak dapat diambil, worktree kembali ke `HEAD` lokal saat ini Anda. Sebelum v2.1.208, worktree segar menggunakan apa pun yang sudah disimpan secara lokal di `origin/HEAD`.163Untuk dasar `"fresh"`, Claude Code menjaga `origin/HEAD` tetap terkini:

164 

165* Saat repositori belum diambil dalam 24 jam terakhir, itu mengambil branch default, dibatasi pada lima detik, dan menggunakan ref yang disimpan secara lokal jika pengambilan gagal.

166* Pengambilan tidak pernah menunggu input di terminal Anda. Pengambilan juga dianggap gagal saat git atau ssh akan meminta kata sandi, passphrase kunci, atau konfirmasi host SSH baru.

167* Jika tidak ada remote yang dikonfigurasi, atau `origin/HEAD` tidak disimpan secara lokal dan tidak dapat diambil, worktree kembali ke `HEAD` lokal saat ini Anda.

162 168 

163Contoh ini membuat setiap worktree baru membuat cabang dari pekerjaan saat ini Anda:169Contoh ini membuat setiap worktree baru membuat cabang dari pekerjaan saat ini Anda:

164 170 


210 216 

211Melewatkan `--worktree` nama yang direktorinya sudah ada membuka worktree yang ada itu daripada membuat yang baru.217Melewatkan `--worktree` nama yang direktorinya sudah ada membuka worktree yang ada itu daripada membuat yang baru.

212 218 

213Dengan `"fresh"` [dasar](#choose-the-base-branch) default, worktree yang dibuka kembali disetel ulang ke cabang default repositori daripada melanjutkan di ujung lamanya saat semua hal berikut berlaku:219Dengan `"fresh"` [dasar](#choose-the-base-branch) default, worktree yang dibuka kembali disetel ulang ke branch default repositori daripada melanjutkan di ujung lamanya saat semua hal berikut berlaku:

214 220 

215* Tidak memiliki perubahan yang belum dikomit atau file yang tidak dilacak.221* Tidak memiliki perubahan yang belum dikomit atau file yang tidak dilacak.

216* Masih berada di cabang yang dibuat Claude Code untuk itu.222* Masih berada di cabang yang dibuat Claude Code untuk itu.


225* `worktree.baseRef` adalah `"head"`.231* `worktree.baseRef` adalah `"head"`.

226* Nama adalah referensi pull request atau merge request.232* Nama adalah referensi pull request atau merge request.

227 233 

228Sebelum v2.1.208, saat Anda menggunakan kembali nama, Claude Code selalu membuka kembali worktree lama di ujung lamanya.

229 

230### Ganti pembuatan worktree dengan hook234### Ganti pembuatan worktree dengan hook

231 235 

232Konfigurasikan hook [`WorktreeCreate`](https://code.claude.com/docs/id/hooks#worktreecreate) untuk menggantikan logika `git worktree` default sepenuhnya, termasuk menempatkan worktrees di tempat lain selain `.claude/worktrees/`. Untuk contoh lengkap, lihat [Non-git version control](#non-git-version-control).236Konfigurasikan hook [`WorktreeCreate`](https://code.claude.com/docs/id/hooks#worktreecreate) untuk menggantikan logika `git worktree` default sepenuhnya, termasuk menempatkan worktrees di tempat lain selain `.claude/worktrees/`. Untuk contoh lengkap, lihat [Non-git version control](#non-git-version-control).


236Worktree mendapatkan file dan cabang sendiri, tetapi berbagi hal-hal berikut dengan checkout utama:240Worktree mendapatkan file dan cabang sendiri, tetapi berbagi hal-hal berikut dengan checkout utama:

237 241 

238* **Direktori `.git` repositori**: perintah git dalam worktree menulis ke direktori `.git` bersama repositori utama, dan [sandboxing](https://code.claude.com/docs/id/sandboxing.md#filesystem-isolation) memungkinkan penulisan tersebut, jadi perintah seperti `git commit` bekerja dari dalam worktree dengan sandbox diaktifkan.242* **Direktori `.git` repositori**: perintah git dalam worktree menulis ke direktori `.git` bersama repositori utama, dan [sandboxing](https://code.claude.com/docs/id/sandboxing.md#filesystem-isolation) memungkinkan penulisan tersebut, jadi perintah seperti `git commit` bekerja dari dalam worktree dengan sandbox diaktifkan.

239* **Plugins**: plugin yang diinstal pada [cakupan proyek](https://code.claude.com/docs/id/plugins/loading.md#find-where-a-plugin-is-enabled) dari checkout utama juga dimuat dalam worktrees dari repositori yang sama, jadi Anda tidak perlu menginstal ulang per worktree. Memerlukan Claude Code v2.1.200 atau lebih baru.243* **Plugins**: plugin yang diinstal pada [cakupan proyek](https://code.claude.com/docs/id/plugins/loading.md#find-where-a-plugin-is-enabled) dari checkout utama juga dimuat dalam worktrees dari repositori yang sama, jadi Anda tidak perlu menginstal ulang per worktree.

240* **Persetujuan izin**: memilih "Ya, dan jangan tanya lagi" untuk perintah Bash dalam sesi worktree menyimpan aturan ke `.claude/settings.local.json` checkout utama, jadi itu berlaku dalam checkout utama dan di setiap worktree lain dari repositori, dan itu bertahan penghapusan worktree. Di Windows dan dalam kasus lain di mana Claude Code [tidak menggunakan root repositori](https://code.claude.com/docs/id/settings.md#where-claude-code-looks-for-each-file), aturan tetap dengan worktree itu. Sebelum v2.1.211, persetujuan yang diberikan dalam worktree disimpan di dalam worktree itu, tidak berlaku di tempat lain, dan hilang saat worktree dihapus. Lihat [di mana persetujuan disimpan](https://code.claude.com/docs/id/permissions.md#permission-system).244* **Persetujuan izin**: memilih "Yes, and don't ask again" untuk perintah Bash dalam sesi worktree menyimpan aturan ke `.claude/settings.local.json` checkout utama. Aturan tersebut berlaku dalam checkout utama dan di setiap worktree lain dari repositori, dan tetap bertahan setelah worktree dihapus.

245 

246 Di Windows dan dalam kasus lain di mana Claude Code [tidak menggunakan root repositori](https://code.claude.com/docs/id/settings.md#where-claude-code-looks-for-each-file), aturan tetap dengan worktree itu. Lihat [di mana persetujuan disimpan](https://code.claude.com/docs/id/permissions.md#permission-system).

241* **Skills, agents, dan commands yang tidak dilacak**: ketika checkout worktree tidak memiliki direktori `.claude/skills` di akarnya, misalnya karena `.claude/skills` Anda diabaikan oleh git, Claude Code memuat [project skills](https://code.claude.com/docs/id/skills.md#where-skills-live) checkout utama dalam sesi worktree. Dalam worktree dengan direktori `.claude/skills` sendiri, hanya salinan itu yang dimuat.247* **Skills, agents, dan commands yang tidak dilacak**: ketika checkout worktree tidak memiliki direktori `.claude/skills` di akarnya, misalnya karena `.claude/skills` Anda diabaikan oleh git, Claude Code memuat [project skills](https://code.claude.com/docs/id/skills.md#where-skills-live) checkout utama dalam sesi worktree. Dalam worktree dengan direktori `.claude/skills` sendiri, hanya salinan itu yang dimuat.

242 248 

243 Pembacaan yang sama mencakup `.claude/agents` dan `.claude/commands`. Untuk skills, pembacaan memerlukan Claude Code v2.1.277 atau lebih baru.249 Pembacaan yang sama mencakup `.claude/agents` dan `.claude/commands`. Untuk skills, pembacaan memerlukan Claude Code v2.1.277 atau lebih baru.


322 328 

323Claude Code menolak untuk membuat worktree saat `.claude`, `.claude/worktrees`, atau direktori worktree itu sendiri adalah symlink, dan kesalahan menamai jalur symlinked. Hapus symlink dan coba lagi. Sebelum v2.1.212, jika repositori sudah berisi symlink yang dikomit di salah satu jalur itu, pembuatan worktree mengikutinya dan dapat membuat file di luar repositori.329Claude Code menolak untuk membuat worktree saat `.claude`, `.claude/worktrees`, atau direktori worktree itu sendiri adalah symlink, dan kesalahan menamai jalur symlinked. Hapus symlink dan coba lagi. Sebelum v2.1.212, jika repositori sudah berisi symlink yang dikomit di salah satu jalur itu, pembuatan worktree mengikutinya dan dapat membuat file di luar repositori.

324 330 

331### Worktree yang dibuat Claude Code memiliki konten asli dari objek yang diganti

332 

333Jika repositori Anda menggunakan [`git replace`](https://git-scm.com/docs/git-replace), file dalam worktree yang dibuat Claude Code menyimpan konten objek asli, bukan pengganti yang dinamai oleh entri `refs/replace/` Anda. Claude Code menjalankan perintah git yang melakukan checkout file worktree dengan `GIT_NO_REPLACE_OBJECTS=1`, dengan mengabaikan nilai apa pun yang Anda ekspor untuk variabel tersebut.

334 

335Untuk mendapatkan konten yang diganti, [buat worktree sendiri](#manage-worktrees-manually) dengan `git worktree add` dan mulai Claude Code di dalamnya.

336 

325### File Git LFS adalah file pointer dalam worktree yang dibuat Claude Code337### File Git LFS adalah file pointer dalam worktree yang dibuat Claude Code

326 338 

327Jika Anda menyiapkan [Git LFS](https://git-lfs.com) dengan `git lfs install --local`, worktree yang dibuat Claude Code berisi file pointer LFS daripada file nyata. Flag `--local` menulis filter LFS ke `.git/config` repositori itu sendiri daripada konfigurasi git global Anda. `git lfs install` biasa menulis ke konfigurasi global Anda dan tidak terpengaruh. Hal yang sama berlaku untuk [driver filter](https://git-scm.com/docs/gitattributes) lainnya yang didefinisikan dalam konfigurasi repositori itu sendiri.339Jika Anda menyiapkan [Git LFS](https://git-lfs.com) dengan `git lfs install --local`, worktree yang dibuat Claude Code berisi file pointer LFS daripada file nyata. Flag `--local` menulis filter LFS ke `.git/config` repositori itu sendiri daripada konfigurasi git global Anda. `git lfs install` biasa menulis ke konfigurasi global Anda dan tidak terpengaruh. Hal yang sama berlaku untuk [driver filter](https://git-scm.com/docs/gitattributes) lainnya yang didefinisikan dalam konfigurasi repositori itu sendiri.