SpyBara
Go Premium

Documentation 2026-11-13 23:02 UTC to 2026-11-14 03:01 UTC

37 files changed +340 −193. View all changes and history on the product overview
2026
Sat 14 03:01 Fri 13 23:02 Thu 12 23:02 Wed 11 22:59 Tue 10 21:57 Mon 9 23:02 Sun 8 22:58 Sat 7 23:58 Fri 6 23:01 Thu 5 23:03 Wed 4 23:59 Tue 3 23:58 Mon 2 23:57 Sun 1 23:57
Details

14 14 

15## Cara kerja checkpointing15## Cara kerja checkpointing

16 16 

17Saat Anda mengaktifkan checkpointing file, SDK membuat cadangan file sebelum memodifikasinya melalui tool Write, Edit, atau NotebookEdit. Pesan pengguna dalam aliran respons menyertakan UUID checkpoint yang dapat Anda gunakan sebagai titik pemulihan.17Saat Anda mengaktifkan checkpointing file, SDK membuat cadangan file sebelum memodifikasinya melalui tool Write, Edit, atau NotebookEdit. Setiap prompt yang memulai sebuah giliran adalah sebuah checkpoint, dan UUID pesan penggunanya adalah titik pemulihan.

18 18 

19> [!NOTE]19> [!NOTE]

20>20>


147 147 

148**2. Tangkap UUID checkpoint dan ID sesi**148**2. Tangkap UUID checkpoint dan ID sesi**

149 149 

150Dengan opsi `replay-user-messages` yang diatur, setiap pesan pengguna dalam aliran respons memiliki UUID yang berfungsi sebagai checkpoint.150Dengan opsi `replay-user-messages` yang diatur, pesan pengguna untuk setiap prompt yang memulai giliran memiliki UUID yang berfungsi sebagai checkpoint. Pesan pengguna yang membawa hasil tool juga memiliki UUID, tetapi UUID tersebut bukan checkpoint.

151 151 

152Untuk sebagian besar kasus penggunaan, tangkap UUID pesan pengguna pertama (`message.uuid`); mengembalikan ke sana memulihkan file terlacak ke status asli mereka. Untuk menyimpan beberapa checkpoint dan mengembalikan ke status perantara, lihat [Beberapa titik pemulihan](#multiple-restore-points).152Untuk sebagian besar kasus penggunaan, tangkap UUID pesan pengguna pertama (`message.uuid`); mengembalikan ke sana memulihkan file terlacak ke status asli mereka. Untuk menyimpan beberapa checkpoint dan mengembalikan ke status perantara, lihat [Beberapa titik pemulihan](#multiple-restore-points).

153 153 


171 171 

172### Checkpoint sebelum operasi berisiko172### Checkpoint sebelum operasi berisiko

173 173 

174Pola ini menyimpan hanya UUID checkpoint terbaru, memperbaruinya sebelum setiap putaran agen. Jika ada yang salah selama pemrosesan, Anda dapat segera mengembalikan ke status terakhir yang aman dan keluar dari loop.174Pola ini menyimpan hanya UUID checkpoint terbaru, memperbaruinya di setiap prompt yang memulai giliran. Jika ada yang salah selama pemrosesan, Anda dapat segera mengembalikan ke status terakhir yang aman dan keluar dari loop.

175 175 

176Sebelum menjalankan contoh ini, ganti `your_revert_condition` (Python) atau `yourRevertCondition` (TypeScript) dengan pemeriksaan Anda sendiri, seperti deteksi kesalahan atau kegagalan validasi; placeholder tidak didefinisikan dalam contoh.176Sebelum menjalankan contoh ini, ganti `your_revert_condition` (Python) atau `yourRevertCondition` (TypeScript) dengan pemeriksaan Anda sendiri, seperti deteksi kesalahan atau kegagalan validasi; placeholder tidak didefinisikan dalam contoh.

177 177 


193 await client.query("Refactor the authentication module")193 await client.query("Refactor the authentication module")

194 194 

195 async for message in client.receive_response():195 async for message in client.receive_response():

196 # Update checkpoint before each agent turn starts196 # Update checkpoint at each prompt you send; a tool result isn't one

197 # This overwrites the previous checkpoint. Only keep the latest197 # This overwrites the previous checkpoint. Only keep the latest

198 if isinstance(message, UserMessage) and message.uuid:198 if (

199 isinstance(message, UserMessage)

200 and message.uuid

201 and message.tool_use_result is None

202 and message.parent_tool_use_id is None

203 ):

199 safe_checkpoint = message.uuid204 safe_checkpoint = message.uuid

200 205 

201 # Decide when to revert based on your own logic206 # Decide when to revert based on your own logic


225 let safeCheckpoint: string | undefined;230 let safeCheckpoint: string | undefined;

226 231 

227 for await (const message of response) {232 for await (const message of response) {

228 // Update checkpoint before each agent turn starts233 // Update checkpoint at each prompt you send; a tool result isn't one

229 // This overwrites the previous checkpoint. Only keep the latest234 // This overwrites the previous checkpoint. Only keep the latest

230 if (message.type === "user" && message.uuid) {235 if (message.type === "user" && "isReplay" in message && message.isReplay && message.uuid) {

231 safeCheckpoint = message.uuid;236 safeCheckpoint = message.uuid;

232 }237 }

233 238 


246 251 

247### Beberapa titik pemulihan252### Beberapa titik pemulihan

248 253 

249Jika Claude membuat perubahan di beberapa putaran, Anda mungkin ingin mengembalikan ke titik tertentu daripada semuanya. Misalnya, jika Claude merefaktor file di putaran satu dan menambahkan tes di putaran dua, Anda mungkin ingin menyimpan refaktor tetapi membatalkan tes.254Jika Claude membuat perubahan di beberapa prompt, Anda mungkin ingin mengembalikan ke titik tertentu daripada kembali sepenuhnya. Misalnya, jika prompt pertama Anda merefaktor sebuah file dan prompt kedua Anda menambahkan tes, kembalikan ke checkpoint prompt kedua Anda untuk mempertahankan refaktor dan membatalkan tes.

250 255 

251Pola ini menyimpan semua UUID checkpoint dalam array dengan metadata. Setelah sesi selesai, Anda dapat mengembalikan ke checkpoint sebelumnya:256Pola ini menyimpan setiap UUID checkpoint dalam array dengan metadata. Setelah sesi selesai, Anda dapat mengembalikan ke checkpoint sebelumnya mana pun:

252 257 

253```python Python theme={null}258```python Python theme={null}

254import asyncio259import asyncio


284 await client.query("Refactor the authentication module")289 await client.query("Refactor the authentication module")

285 290 

286 async for message in client.receive_response():291 async for message in client.receive_response():

287 if isinstance(message, UserMessage) and message.uuid:292 if (

293 isinstance(message, UserMessage)

294 and message.uuid

295 and message.tool_use_result is None

296 and message.parent_tool_use_id is None

297 ):

288 checkpoints.append(298 checkpoints.append(

289 Checkpoint(299 Checkpoint(

290 id=message.uuid,300 id=message.uuid,


338 348 

339 try {349 try {

340 for await (const message of response) {350 for await (const message of response) {

341 if (message.type === "user" && message.uuid) {351 if (message.type === "user" && "isReplay" in message && message.isReplay && message.uuid) {

342 checkpoints.push({352 checkpoints.push({

343 id: message.uuid,353 id: message.uuid,

344 description: `After turn ${checkpoints.length + 1}`,354 description: `After turn ${checkpoints.length + 1}`,


638 648 

639* File checkpointing tidak diaktifkan pada sesi asli (`enable_file_checkpointing` atau `enableFileCheckpointing` tidak diatur ke `true`)649* File checkpointing tidak diaktifkan pada sesi asli (`enable_file_checkpointing` atau `enableFileCheckpointing` tidak diatur ke `true`)

640* Sesi tidak diselesaikan dengan benar sebelum mencoba melanjutkan dan mengembalikan650* Sesi tidak diselesaikan dengan benar sebelum mencoba melanjutkan dan mengembalikan

651* UUID berasal dari pesan pengguna yang membawa hasil tool, yang bukan merupakan checkpoint

641 652 

642**Solusi**: Pastikan `enable_file_checkpointing=True` (Python) atau `enableFileCheckpointing: true` (TypeScript) diatur pada sesi asli, kemudian gunakan pola yang ditunjukkan dalam contoh: tangkap UUID pesan pengguna pertama, selesaikan sesi sepenuhnya, kemudian lanjutkan dengan prompt kosong dan panggil `rewindFiles()` sekali.653**Solusi**: Pastikan `enable_file_checkpointing=True` (Python) atau `enableFileCheckpointing: true` (TypeScript) diatur pada sesi asli, kemudian gunakan pola yang ditunjukkan dalam contoh: tangkap UUID pesan pengguna pertama, selesaikan sesi sepenuhnya, kemudian lanjutkan dengan prompt kosong dan panggil `rewindFiles()` sekali.

643 654 

Details

496| **Persistence** | File per-proyek | Disimpan sebagai file | Hanya sesi | Hanya sesi |496| **Persistence** | File per-proyek | Disimpan sebagai file | Hanya sesi | Hanya sesi |

497| **Reusability** | Per-proyek | Di berbagai proyek | Duplikasi kode | Duplikasi kode |497| **Reusability** | Per-proyek | Di berbagai proyek | Duplikasi kode | Duplikasi kode |

498| **Management** | Di filesystem | CLI + file | Dalam kode | Dalam kode |498| **Management** | Di filesystem | CLI + file | Dalam kode | Dalam kode |

499| **Default tools** | Dipertahankan | Dipertahankan | Dipertahankan | Hilang (kecuali disertakan) |499| **Tool guidance** | Dipertahankan | Dipertahankan | Dipertahankan | Hilang (kecuali disertakan) |

500| **Built-in safety** | Dipertahankan | Dipertahankan | Dipertahankan | Harus ditambahkan |500| **Built-in safety** | Dipertahankan | Dipertahankan | Dipertahankan | Harus ditambahkan |

501| **Customization level** | Hanya penambahan | Penambahan; dapat menghilangkan instruksi coding | Hanya penambahan | Kontrol penuh |501| **Customization level** | Hanya penambahan | Penambahan; dapat menghilangkan instruksi coding | Hanya penambahan | Kontrol penuh |

502| **Version control** | Dengan proyek | Ya | Dengan kode | Dengan kode |502| **Version control** | Dengan proyek | Ya | Dengan kode | Dengan kode |

Details

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) |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. 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) |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` | 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` |878| `strict_mcp_config` | `bool` | `False` | Jika `True`, 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` | Melanjutkan percakapan terbaru |880| `continue_conversation` | `bool` | `False` | Melanjutkan percakapan terbaru |

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

Details

340| `Read`, `Edit`, `Glob` | Analisis dan modifikasi kode |340| `Read`, `Edit`, `Glob` | Analisis dan modifikasi kode |

341| `Read`, `Edit`, `Bash`, `Glob`, `Grep` | Otomasi penuh |341| `Read`, `Edit`, `Bash`, `Glob`, `Grep` | Otomasi penuh |

342 342 

343Untuk membatasi tool bawaan agent ke salah satu set ini, teruskan set tersebut sebagai `tools`. Jika Anda mencantumkan set tersebut di `allowedTools` sebagai gantinya, Anda [menyetujui tool tersebut terlebih dahulu](https://code.claude.com/docs/id/agent-sdk/custom-tools.md#configure-allowed-tools), dan agent tetap dapat memanggil tool lainnya, bergantung pada mode izin Anda.

344 

343**Permission modes** mengontrol berapa banyak pengawasan manusia yang Anda inginkan. SDK mengevaluasi mode aktif bersama dengan aturan allow dan deny Anda dalam urutan tetap, dijelaskan dalam [Bagaimana izin dievaluasi](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated). Untuk daftar lengkap mode, perilakunya, dan kapan menggunakan masing-masing, lihat [Permission mode dalam Bagaimana agent loop bekerja](https://code.claude.com/docs/id/agent-sdk/agent-loop.md#permission-mode).345**Permission modes** mengontrol berapa banyak pengawasan manusia yang Anda inginkan. SDK mengevaluasi mode aktif bersama dengan aturan allow dan deny Anda dalam urutan tetap, dijelaskan dalam [Bagaimana izin dievaluasi](https://code.claude.com/docs/id/agent-sdk/permissions.md#how-permissions-are-evaluated). Untuk daftar lengkap mode, perilakunya, dan kapan menggunakan masing-masing, lihat [Permission mode dalam Bagaimana agent loop bekerja](https://code.claude.com/docs/id/agent-sdk/agent-loop.md#permission-mode).

344 346 

345## Langkah berikutnya347## Langkah berikutnya

Details

146| `prompt` | `string` | Ya | Prompt sistem agen yang mendefinisikan peran dan perilakunya |146| `prompt` | `string` | Ya | Prompt sistem agen yang mendefinisikan peran dan perilakunya |

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

148| `disallowedTools` | `string[]` | Tidak | Array nama tool yang akan dihapus dari set tool agen. 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 apa pun |148| `disallowedTools` | `string[]` | Tidak | Array nama tool yang akan dihapus dari set tool agen. 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 apa pun |

149| `model` | `string` | Tidak | Penggantian model untuk agen ini. Menerima alias seperti `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'`, atau ID model lengkap. `'inherit'` menggunakan model utama. Ketika Anda menghilangkannya, Claude Code memilih model dalam [urutan model subagen](https://code.claude.com/docs/id/sub-agents.md#choose-a-model) |149| `model` | `string` | Tidak | Override model untuk agent ini. Menerima alias seperti `'fable'`, `'opus'`, `'sonnet'`, `'haiku'`, `'inherit'`, atau ID model lengkap. `'inherit'` menggunakan model dari agent yang menghasilkan agent ini. Ketika Anda menghilangkan `model`, Claude Code memilih model dalam [urutan model subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model) |

150| `skills` | `string[]` | Tidak | Daftar nama skill yang dimuat sebelumnya ke dalam konteks agent saat startup. Paling banyak [32 nama berbeda pertama](https://code.claude.com/docs/id/sub-agents.md#preload-skills-into-subagents) dalam daftar yang dimuat sebelumnya. Skill yang tidak terdaftar tetap dapat dipanggil melalui tool Skill |150| `skills` | `string[]` | Tidak | Daftar nama skill yang dimuat sebelumnya ke dalam konteks agent saat startup. Paling banyak [32 nama berbeda pertama](https://code.claude.com/docs/id/sub-agents.md#preload-skills-into-subagents) dalam daftar yang dimuat sebelumnya. Skill yang tidak terdaftar tetap dapat dipanggil melalui tool Skill |

151| `memory` | `'user' \| 'project' \| 'local'` | Tidak | Sumber memori untuk agen ini |151| `memory` | `'user' \| 'project' \| 'local'` | Tidak | Sumber memori untuk agen ini |

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

Details

589| `skills` | `string[] \| 'all'` | `undefined` | Skill yang tersedia untuk sesi. Teruskan `'all'` untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Teruskan hanya nama yang persis. Pada Agent SDK v0.3.221 atau lebih baru, SDK menolak nama yang salah format dan nama berbentuk wildcard dengan error sebelum memulai proses Claude Code. Jika diatur, SDK menambahkan tool Skill ke `allowedTools` secara otomatis. Jika Anda juga meneruskan `tools`, sertakan `'Skill'` dalam daftar tersebut. Lihat [Skills](https://code.claude.com/docs/id/agent-sdk/skills.md) |589| `skills` | `string[] \| 'all'` | `undefined` | Skill yang tersedia untuk sesi. Teruskan `'all'` untuk mengaktifkan setiap skill yang ditemukan, atau daftar nama skill. Teruskan hanya nama yang persis. Pada Agent SDK v0.3.221 atau lebih baru, SDK menolak nama yang salah format dan nama berbentuk wildcard dengan error sebelum memulai proses Claude Code. Jika diatur, SDK menambahkan tool Skill ke `allowedTools` secara otomatis. Jika Anda juga meneruskan `tools`, sertakan `'Skill'` dalam daftar tersebut. Lihat [Skills](https://code.claude.com/docs/id/agent-sdk/skills.md) |

590| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fungsi kustom untuk men-spawn proses Claude Code. Gunakan untuk menjalankan Claude Code di VM, container, atau lingkungan remote |590| `spawnClaudeCodeProcess` | `(options: SpawnOptions) => SpawnedProcess` | `undefined` | Fungsi kustom untuk men-spawn proses Claude Code. Gunakan untuk menjalankan Claude Code di VM, container, atau lingkungan remote |

591| `stderr` | `(data: string) => void` | `undefined` | Callback untuk output stderr |591| `stderr` | `(data: string) => void` | `undefined` | Callback untuk output stderr |

592| `strictMcpConfig` | `boolean` | `false` | Hanya menggunakan server yang diteruskan dalam `mcpServers` dan mengabaikan `.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) |592| `strictMcpConfig` | `boolean` | `false` | Menggunakan server yang diteruskan dalam `mcpServers` dan mengabaikan `.mcp.json` proyek, pengaturan user, server MCP yang disediakan plugin, dan [konektor claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) |

593| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (prompt minimal) | Konfigurasi system prompt. Teruskan string untuk prompt kustom, atau `{ type: 'preset', preset: 'claude_code' }` untuk menggunakan system prompt Claude Code. Teruskan array string dengan konstanta `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` yang diekspor di antara bagian statis dan bagian per-permintaan untuk [meng-cache bagian statis dari prompt kustom](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#cache-the-static-part-of-a-custom-prompt). Saat menggunakan bentuk objek preset, tambahkan `append` untuk memperluasnya dengan instruksi tambahan, dan atur `excludeDynamicSections: true` untuk memindahkan konteks per-sesi ke pesan pengguna pertama demi [penggunaan ulang prompt cache yang lebih baik di berbagai mesin](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines). Atur `snapshot: false` untuk membangun ulang prompt pada setiap permintaan alih-alih [menggunakan ulang prompt yang direkam sesi pada permintaan pertamanya](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session). Untuk mengatur `snapshot` pada prompt kustom, teruskan bentuk `{ type: 'custom', prompt }`. Bentuk `{ type: 'custom' }` dan field `snapshot` memerlukan TypeScript Agent SDK v0.3.257 atau lebih baru |593| `systemPrompt` | `string \| string[] \| { type: 'custom'; prompt: string \| string[]; snapshot?: boolean } \| { type: 'preset'; preset: 'claude_code'; append?: string; excludeDynamicSections?: boolean; snapshot?: boolean }` | `undefined` (prompt minimal) | Konfigurasi system prompt. Teruskan string untuk prompt kustom, atau `{ type: 'preset', preset: 'claude_code' }` untuk menggunakan system prompt Claude Code. Teruskan array string dengan konstanta `SYSTEM_PROMPT_DYNAMIC_BOUNDARY` yang diekspor di antara bagian statis dan bagian per-permintaan untuk [meng-cache bagian statis dari prompt kustom](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#cache-the-static-part-of-a-custom-prompt). Saat menggunakan bentuk objek preset, tambahkan `append` untuk memperluasnya dengan instruksi tambahan, dan atur `excludeDynamicSections: true` untuk memindahkan konteks per-sesi ke pesan pengguna pertama demi [penggunaan ulang prompt cache yang lebih baik di berbagai mesin](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#improve-prompt-caching-across-users-and-machines). Atur `snapshot: false` untuk membangun ulang prompt pada setiap permintaan alih-alih [menggunakan ulang prompt yang direkam sesi pada permintaan pertamanya](https://code.claude.com/docs/id/agent-sdk/modifying-system-prompts.md#change-the-prompt-of-an-existing-session). Untuk mengatur `snapshot` pada prompt kustom, teruskan bentuk `{ type: 'custom', prompt }`. Bentuk `{ type: 'custom' }` dan field `snapshot` memerlukan TypeScript Agent SDK v0.3.257 atau lebih baru |

594| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* Anggaran tugas sisi API dalam token. Jika diatur, model diberi tahu sisa anggaran tokennya sehingga dapat mengatur laju penggunaan tool dan menyelesaikan pekerjaan sebelum mencapai batas |594| `taskBudget` | `{ total: number }` | `undefined` | *Alpha.* Anggaran tugas sisi API dalam token. Jika diatur, model diberi tahu sisa anggaran tokennya sehingga dapat mengatur laju penggunaan tool dan menyelesaikan pekerjaan sebelum mencapai batas |

595| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` untuk model yang didukung | Mengontrol perilaku thinking/penalaran Claude. Lihat [`ThinkingConfig`](#thinkingconfig) untuk opsi |595| `thinking` | [`ThinkingConfig`](#thinkingconfig) | `{ type: 'adaptive' }` untuk model yang didukung | Mengontrol perilaku thinking/penalaran Claude. Lihat [`ThinkingConfig`](#thinkingconfig) untuk opsi |


1285| `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). Untuk memuat Skills ke dalam konteks agent sejak awal, gunakan field `skills` alih-alih mencantumkan `'Skill'` di sini |1285| `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). Untuk memuat Skills ke dalam konteks agent sejak awal, gunakan field `skills` alih-alih mencantumkan `'Skill'` di sini |

1286| `disallowedTools` | Tidak | Array nama tool yang secara eksplisit tidak diizinkan untuk agent ini. 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 |1286| `disallowedTools` | Tidak | Array nama tool yang secara eksplisit tidak diizinkan untuk agent ini. 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 |

1287| `prompt` | Ya | System prompt agent |1287| `prompt` | Ya | System prompt agent |

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

1289| `mcpServers` | Tidak | Spesifikasi server MCP untuk agent ini |1289| `mcpServers` | Tidak | Spesifikasi server MCP untuk agent ini |

1290| `skills` | Tidak | Array nama skill yang dimuat sejak awal ke dalam konteks agent |1290| `skills` | Tidak | Array nama skill yang dimuat sejak awal ke dalam konteks agent |

1291| `initialPrompt` | Tidak | Dikirim otomatis sebagai giliran pengguna pertama saat agent ini berjalan sebagai agent thread utama |1291| `initialPrompt` | Tidak | Dikirim otomatis sebagai giliran pengguna pertama saat agent ini berjalan sebagai agent thread utama |

agent-teams.md +26 −9

Details

102>102>

103> `tmux` memiliki keterbatasan yang diketahui pada sistem operasi tertentu dan secara tradisional bekerja paling baik di macOS. Menggunakan `tmux -CC` di iTerm2 adalah entrypoint yang disarankan ke `tmux`.103> `tmux` memiliki keterbatasan yang diketahui pada sistem operasi tertentu dan secara tradisional bekerja paling baik di macOS. Menggunakan `tmux -CC` di iTerm2 adalah entrypoint yang disarankan ke `tmux`.

104 104 

105Default adalah `"in-process"`. Atur `"auto"` untuk mengaktifkan split panes ketika Anda sudah berjalan di dalam session tmux, atau ketika terminal Anda adalah iTerm2 dengan CLI `it2` yang terinstal, jatuh kembali ke in-process sebaliknya. Pengaturan `"tmux"` mengaktifkan mode split-pane dan auto-detects apakah akan menggunakan tmux atau iTerm2 berdasarkan terminal Anda.105Dengan tim agent yang sudah [diaktifkan](#enable-agent-teams), ikuti langkah-langkah berikut untuk memberi setiap rekan tim pane-nya sendiri:

106 106 

107Atur `"iterm2"` untuk menggunakan iTerm2 native split panes secara eksplisit. Mode ini memerlukan [`it2` CLI](https://github.com/mkusaka/it2) dan menampilkan error dengan perintah install jika `it2` hilang. Prompt setup yang menawarkan untuk menginstal `it2` atau beralih ke tmux muncul di bawah `"auto"` atau `"tmux"` ketika terminal Anda adalah iTerm2 dan tmux tersedia sebagai fallback.107**1. Instal tmux atau siapkan iTerm2**

108 108 

109Untuk mengganti default, atur [`teammateMode`](https://code.claude.com/docs/id/settings-reference#teammatemode) di `~/.claude/settings.json`:109Mode split-pane memerlukan baik [tmux](https://github.com/tmux/tmux/wiki) atau iTerm2 dengan [`it2` CLI](https://github.com/mkusaka/it2). Siapkan yang akan Anda gunakan untuk menjalankan Claude Code:

110 

111* **tmux**: instal melalui package manager sistem Anda. Lihat [tmux wiki](https://github.com/tmux/tmux/wiki/Installing) untuk instruksi spesifik platform.

112* **iTerm2**: instal [`it2` CLI](https://github.com/mkusaka/it2), kemudian aktifkan Python API di **iTerm2 > Settings > General > Magic > Enable Python API**.

113 

114**2. Aktifkan split panes**

115 

116Rekan tim berjalan in-process sampai Anda mengubah pengaturan [`teammateMode`](https://code.claude.com/docs/id/settings-reference#teammatemode).

117 

118Atur ke `"auto"` di `~/.claude/settings.json`:

110 119 

111```json theme={null}120```json theme={null}

112{121{


114}123}

115```124```

116 125 

126Dengan `"auto"`, rekan tim terbuka di split panes ketika Anda menjalankan Claude Code di dalam tmux atau iTerm2, dan berjalan in-process di terminal lain.

127 

128**3. Jalankan Claude Code dan spawn rekan tim**

129 

130Jalankan `claude` di dalam tmux atau di iTerm2, kemudian minta Claude untuk men-spawn rekan tim.

131 

132Jika prompt setup untuk `it2` muncul di iTerm2, pilih **Install it2 now** untuk membuka pane di jendela iTerm2 Anda.

133 

134Jika Anda menjalankan Claude Code di luar tmux dan iTerm2, atau pane tidak terbuka di jendela iTerm2 Anda, ubah `teammateMode` lagi:

135 

136* **Di luar tmux dan iTerm2**: dengan tmux terinstal, atur `teammateMode` ke `"tmux"`. Pane terbuka di sesi tmux terpisah. Untuk melihatnya, salin perintah dari baris `View teammates` di prompt Claude Code dan jalankan perintah tersebut di terminal kedua.

137* **Pane tidak terbuka di jendela iTerm2 Anda**: atur `teammateMode` ke `"iterm2"` untuk menggunakan pane milik iTerm2 sendiri. Rekan tim kemudian hanya dimulai ketika Anda menjalankan Claude Code di iTerm2 dengan `it2` yang sudah disiapkan.

138 

117Untuk menetapkan mode untuk satu session, teruskan sebagai flag:139Untuk menetapkan mode untuk satu session, teruskan sebagai flag:

118 140 

119```bash theme={null}141```bash theme={null}


122 144 

123Flag `--teammate-mode` bersifat eksperimental dan tidak muncul di `claude --help`.145Flag `--teammate-mode` bersifat eksperimental dan tidak muncul di `claude --help`.

124 146 

125Mode split-pane memerlukan baik [tmux](https://github.com/tmux/tmux/wiki) atau iTerm2 dengan [`it2` CLI](https://github.com/mkusaka/it2). Untuk menginstal secara manual:

126 

127* **tmux**: instal melalui package manager sistem Anda. Lihat [tmux wiki](https://github.com/tmux/tmux/wiki/Installing) untuk instruksi spesifik platform.

128* **iTerm2**: instal [`it2` CLI](https://github.com/mkusaka/it2), kemudian aktifkan Python API di **iTerm2 → Settings → General → Magic → Enable Python API**.

129 

130### Tentukan rekan tim dan model147### Tentukan rekan tim dan model

131 148 

132Claude memutuskan jumlah rekan tim untuk dihasilkan berdasarkan tugas Anda, atau Anda dapat menentukan dengan tepat apa yang Anda inginkan:149Claude memutuskan jumlah rekan tim untuk dihasilkan berdasarkan tugas Anda, atau Anda dapat menentukan dengan tepat apa yang Anda inginkan:


497* **Tidak ada subagent background dari rekan tim in-process**: subagent milik rekan tim in-process berjalan di foreground, karena pekerjaan background rekan tim tidak dapat bertahan lebih lama dari proses lead. Claude Code mengembalikan error ketika rekan tim menelurkan subagent yang definisinya menetapkan `background: true`. Permintaan `run_in_background: true` rekan tim juga gagal, baik dengan error atau dengan berjalan diam-diam di foreground. Subagent yang diluncurkan dari percakapan utama mengikuti [default background](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background).514* **Tidak ada subagent background dari rekan tim in-process**: subagent milik rekan tim in-process berjalan di foreground, karena pekerjaan background rekan tim tidak dapat bertahan lebih lama dari proses lead. Claude Code mengembalikan error ketika rekan tim menelurkan subagent yang definisinya menetapkan `background: true`. Permintaan `run_in_background: true` rekan tim juga gagal, baik dengan error atau dengan berjalan diam-diam di foreground. Subagent yang diluncurkan dari percakapan utama mengikuti [default background](https://code.claude.com/docs/id/sub-agents.md#run-subagents-in-foreground-or-background).

498* **Lead tetap**: session utama adalah lead seumur hidupnya. Anda tidak dapat mempromosikan rekan tim ke lead atau mentransfer kepemimpinan.515* **Lead tetap**: session utama adalah lead seumur hidupnya. Anda tidak dapat mempromosikan rekan tim ke lead atau mentransfer kepemimpinan.

499* **Tidak ada mode izin per-rekan tim saat spawn**: rekan tim dimulai dengan mode izin yang dijelaskan di bawah [Izin](#permissions).516* **Tidak ada mode izin per-rekan tim saat spawn**: rekan tim dimulai dengan mode izin yang dijelaskan di bawah [Izin](#permissions).

500* **Split panes memerlukan tmux atau iTerm2**: mode in-process default bekerja di terminal apa pun. Mode split-pane tidak didukung di integrated terminal VS Code, Windows Terminal, atau Ghostty.517* **Split panes memerlukan tmux atau iTerm2**: mode in-process default bekerja di terminal apa pun.

501 518 

502## Langkah berikutnya519## Langkah berikutnya

503 520 

agent-view.md +30 −39

Details

144| Bentuk | Artinya |144| Bentuk | Artinya |

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

146| `✻` atau animasi `✽` | Proses sesi sedang berjalan, atau sesi membutuhkan masukan Anda |146| `✻` atau animasi `✽` | Proses sesi sedang berjalan, atau sesi membutuhkan masukan Anda |

147| `∙` | Proses telah keluar. Anda masih dapat mengintip baris, dan ketika Anda membalas atau melampirkan, Claude memulai ulang proses tersebut dari percakapan yang tersimpan |147| `∙` | Proses telah keluar. Anda masih dapat mengintip baris, dan ketika Anda membalas atau menekan `Enter`, Claude memulai ulang proses tersebut dari percakapan yang tersimpan |

148| `✢` | Sesi [`/loop`](https://code.claude.com/docs/id/scheduled-tasks) yang tidur di antara iterasi. Baris menunjukkan jumlah jalannya dan hitungan mundur |148| `✢` | Sesi [`/loop`](https://code.claude.com/docs/id/scheduled-tasks) yang tidur di antara iterasi. Baris menunjukkan jumlah jalannya dan hitungan mundur |

149 149 

150Label `#N` atau `!N` yang dapat muncul di tepi kanan baris adalah tautan ke [pull request atau merge request](#pull-request-status) sesi, bukan bagian dari ikon status.150Label `#N` atau `!N` yang dapat muncul di tepi kanan baris adalah tautan ke [pull request atau merge request](#pull-request-status) sesi, bukan bagian dari ikon status.


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

317* Tekan `Ctrl+X` untuk menghentikan sesi dan `Ctrl+X` lagi dalam dua detik untuk menghapusnya dari daftar, atau `Esc` untuk membatalkan konfirmasi tanpa menghapus. Tekanan kedua menghapus sesi bahkan ketika upaya penghentian gagal, misalnya karena [layanan latar belakang tidak merespons](#agent-view-says-the-background-service-did-not-respond). Dalam kasus itu, konfirmasi tetap aktif selama dua detik lagi, dan penghapusan mengakhiri proses sesi itu sendiri317* Tekan `Ctrl+X` untuk menghentikan sesi dan `Ctrl+X` lagi dalam dua detik untuk menghapusnya dari daftar, atau `Esc` untuk membatalkan konfirmasi tanpa menghapus. Tekanan kedua menghapus sesi bahkan ketika upaya penghentian gagal, misalnya karena [layanan latar belakang tidak merespons](#agent-view-says-the-background-service-did-not-respond). Dalam kasus itu, konfirmasi tetap aktif selama dua detik lagi, dan penghapusan mengakhiri proses sesi itu sendiri

318 318 

319Menekan `Ctrl+X` pada header grup menghapus setiap sesi dalam grup itu setelah konfirmasi. Kecuali dalam kasus yang dipertahankan yang tercakup dalam [Apa yang dihapus saat menghapus sesi](#what-deleting-a-session-removes), penghapusan menghapus sesi dari daftar. Worktree yang dibuat Claude untuknya dihapus, dipertahankan, atau dibiarkan di tempat tergantung pada cara Anda menghapus dan apa isi worktree. Transkrip percakapan tetap berada di mesin lokal Anda, tersedia melalui `claude --resume`.319Tekan `Ctrl+X` pada header grup untuk menghapus setiap sesi dalam grup itu setelah konfirmasi, kecuali sesi yang [ditolak untuk dihapus](#delete-a-session-after-claude-code-refuses) oleh Claude Code. Lihat [Apa yang dihapus saat menghapus sesi](#what-deleting-a-session-removes) untuk mengetahui apa yang terjadi pada worktree setiap sesi. Transkrip percakapan tetap berada di mesin lokal Anda, tersedia melalui `claude --resume`.

320 320 

321Sesi yang selesai yang tidak muat di layar dilipat menjadi baris `… N more`. Grup `Completed` mengisi ruang vertikal yang tersisa setelah grup aktif. Di terminal pendek, header dipadatkan menjadi satu baris ringkasan sehingga sesi yang bekerja atau membutuhkan masukan tetap terlihat.321Sesi yang selesai yang tidak muat di layar dilipat menjadi baris `… N more`. Grup `Completed` mengisi ruang vertikal yang tersisa setelah grup aktif. Di terminal pendek, header dipadatkan menjadi satu baris ringkasan sehingga sesi yang bekerja atau membutuhkan masukan tetap terlihat.

322 322 


622 622 

623#### What deleting a session removes623#### What deleting a session removes

624 624 

625Hapus sesi dengan `Ctrl+X` dua kali di [agent view](#organize-the-list) atau dengan [`claude rm`](#manage-sessions-from-the-shell). Kecuali dalam kasus dipertahankan di bawah, sesi keluar dari daftar. Transkripnya tetap ada di mesin Anda melalui `claude --resume`, dan penghapusan bertahan melewati restart supervisor.625Hapus sesi dengan `Ctrl+X` dua kali di [agent view](#organize-the-list) atau dengan [`claude rm`](#manage-sessions-from-the-shell). Sesi hilang dari daftar, kecuali Claude Code [menolak menghapusnya](#delete-a-session-after-claude-code-refuses). Transkripnya tetap ada di mesin Anda, tersedia melalui `claude --resume`.

626 626 

627Apa yang terjadi pada worktree yang dibuat Claude untuk sesi:627Apa yang terjadi pada worktree yang dibuat Claude untuk sesi:

628 628 

629* Agent view menghapusnya, termasuk perubahan yang belum di-commit, jadi commit apa yang ingin Anda simpan terlebih dahulu.629* Agent view menghapusnya, termasuk perubahan yang belum di-commit, jadi commit apa yang ingin Anda simpan terlebih dahulu.

630* `claude rm` mempertahankannya, bersama dengan baris sesi, ketika worktree memiliki perubahan yang belum di-commit.630* `claude rm` mempertahankannya, bersama dengan baris sesi, ketika worktree memiliki perubahan yang belum di-commit.

631* Baik agent view maupun `claude rm` tidak menghapus worktree yang sedang digunakan atau dikunci oleh sesi lain yang berjalan, dan menghapus lagi tidak mengubah hal itu. Claude Code mempertahankan worktree dan sesi, serta menyebutkan direktori yang dipertahankan dan alasannya; di agent view, baris sesi menampilkan `not removed`. Tutup sesi lain tersebut, lalu hapus lagi.

632* Ketika Anda menghapus sesi yang worktree-nya memiliki commit yang tidak dapat dikonfirmasi Claude Code telah tersimpan di tempat lain, Claude Code mempertahankan worktree dan sesi, dan pesan menyebutkan branch worktree dan berapa banyak commit yang belum di-push. Pesan juga menawarkan dua jalan keluar: push commit tersebut, atau hapus lagi untuk membuangnya.

633 631 

634 Commit yang ada di remote tidak memblokir penghapusan. Begitu juga commit pada salinan lokal branch default remote `origin` Anda, asalkan branch itu di-checkout di checkout utama Anda, yaitu direktori repositori itu sendiri, bukan worktree.632Salah satu alasan Claude Code menolak menghapus sesi adalah [commit yang belum di-push di worktree-nya](https://code.claude.com/docs/id/errors.md#worktree-has-commits-that-are-not-pushed-anywhere). Untuk mempertahankan commit tersebut, push commit itu sebelum Anda menghapus sesi.

635 633 

636 Setelah penolakan itu, Anda memilih:634Beberapa worktree tetap ada di disk, baik Anda menggunakan agent view maupun `claude rm`:

637 635 

638 * Untuk mempertahankan commit, push commit tersebut, atau merge ke branch default itu, lalu hapus sesi lagi.636* Jika Anda membuat worktree sendiri dan memulai sesi dari dalamnya, worktree tetap ada di disk agar Anda dapat mempertahankan atau menghapusnya.

639 * Untuk membuangnya, hapus sesi lagi tanpa push: tekan `Ctrl+X` dua kali pada barisnya di agent view, atau jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak oleh penolakan. Ini menghapus sesi dan worktree beserta branch-nya, membuang commit yang belum di-push dan perubahan apa pun yang belum di-commit.637* Jika direktori worktree yang dibuat Claude di dalam repositori Anda tidak lagi memiliki file `.git`-nya, direktori tetap ada di disk agar Anda hapus sendiri. Branch worktree tetap ada di repositori, sehingga Anda tetap memiliki commit pada branch itu.

640 638 

641 Ketika Anda menghapus lagi, Claude Code hanya membuang apa yang ditampilkan oleh penolakan: jika worktree mendapatkan commit baru sejak itu, Claude Code mempertahankannya lagi dan menampilkan status yang diperbarui.639##### Delete a session after Claude Code refuses

642 640 

643 Ketika catatan sesi lain yang telah selesai juga menyebutkan worktree tersebut, worktree tetap ada ketika Anda menghapus lagi; push commit tersebut, lalu hapus lagi.641Ketika Claude Code menolak menghapus sesi karena worktree-nya, ikuti pesan yang ditampilkannya. Jika pesan menyebutkan commit yang belum di-push, lihat [Worktree has commits that are not pushed anywhere](https://code.claude.com/docs/id/errors.md#worktree-has-commits-that-are-not-pushed-anywhere).

644* Worktree yang tidak lagi dikenali git, misalnya setelah `git worktree prune`, tidak memblokir penghapusan. Claude Code menghapus sesi dan membiarkan direktori tetap ada di disk.

645* Ketika git atau [`WorktreeRemove` hook](https://code.claude.com/docs/id/hooks#worktreeremove) Anda gagal menghapus worktree, Claude Code mempertahankan worktree dan sesi, dan pesan menyebutkan penyebabnya. Untuk hook, pesan menyatakan bagaimana hook berakhir, seperti `exited 1`, dan mengutip awal stderr-nya. Pesan juga memberi tahu Anda mana dari berikut ini yang perlu dilakukan selanjutnya:

646 642 

647 * Hapus sesi lagi untuk tetap menghapus direktori, dengan menekan `Ctrl+X` dua kali pada barisnya di agent view atau menjalankan perintah `claude rm <id> --force-remove-worktree <worktree-id>` yang dicetak oleh penolakan `claude rm`. Branch worktree tetap ada di repositori.643##### Resolve a `Worktree not removed` message

648 644 

649 Claude Code menawarkan ini hanya ketika dapat mengonfirmasi semua hal berikut:645Pesan `Worktree not removed` berarti Claude Code atau [`WorktreeRemove` hook](https://code.claude.com/docs/id/hooks#worktreeremove) Anda tidak selesai menghapus worktree sesi. Push commit apa pun dan salin keluar file apa pun yang ingin Anda pertahankan, lalu ikuti pesan tersebut.

650 646 

651 * Direktori adalah salah satu worktree tertaut repositori di bawah `.claude/worktrees/`647##### Resolve a `files that weren't checked against a repository` message

652 * Baik worktree maupun submodule yang di-checkout tidak memiliki perubahan yang belum di-commit pada file yang dilacak

653 * Tidak ada catatan sesi lain yang menyebutkannya

654 648 

655 Ketika Claude Code tidak dapat memverifikasi status checkout submodule, seperti yang digantikan oleh repositori git terpisah, Claude Code juga tidak menawarkan ini.649Pesan dari `claude rm` ini berarti masih ada file di direktori worktree yang tidak berada di dalam repositori git mana pun atau yang dikelola oleh [`WorktreeCreate` hook](https://code.claude.com/docs/id/hooks#worktreecreate). Salin keluar file apa pun yang ingin Anda pertahankan, lalu ambil langkah yang sesuai untuk kasus Anda:

656 * Perbaiki apa yang menghalangi, seperti melakukan commit atau stash perubahan yang belum di-commit, memindahkan repositori git terpisah keluar dari worktree, menutup apa pun yang menggunakan direktori, atau memperbaiki hook, lalu hapus sesi lagi.

657 * Hapus direktori sendiri, lalu hapus sesi lagi.

658 650 

659Worktree yang Anda buat sendiri dan tempat Anda memulai sesi dibiarkan di tempatnya dalam kedua cara.651| Kasus Anda | Yang perlu dilakukan |

660 652| :- | :- |

661Sesi yang direktori worktree-nya tidak termasuk dalam repositori git mana pun, karena repositori telah dihapus atau [`WorktreeCreate` hook](https://code.claude.com/docs/id/hooks#worktreecreate) membuat direktori di tempat lain, tetap dapat dihapus. Selama masih ada file di direktori:653| Tidak ada `WorktreeCreate` hook yang mengelola direktori | Untuk membuang file, tekan `Ctrl+X` dua kali pada baris sesi di agent view. Atau hapus direktori sendiri, lalu jalankan `claude rm <id>` lagi |

662 654| `WorktreeCreate` hook mengelola direktori, dan Anda memiliki [`WorktreeRemove` hook](https://code.claude.com/docs/id/hooks#worktreeremove) | Untuk mencoba menghapus direktori dengan hook Anda, tekan `Ctrl+X` dua kali pada baris sesi di agent view. Atau hapus direktori sendiri, lalu jalankan `claude rm <id>` lagi |

663* Agent view meminta tekan `Ctrl+X` dua kali yang sama sebelum membuangnya. Untuk direktori yang dibuat hook, agent view menjalankan [`WorktreeRemove` hook](https://code.claude.com/docs/id/hooks#worktreeremove) Anda sebagai gantinya, dan tanpa hook tersebut, agent view menolak penghapusan dan mempertahankan sesi.655| `WorktreeCreate` hook mengelola direktori, dan Anda tidak memiliki `WorktreeRemove` hook | Hapus direktori sendiri, lalu jalankan `claude rm <id>` lagi |

664* `claude rm` mempertahankan sesi dan worktree, dan menyebutkan alasannya.

665 

666Kedua jalur mempertahankan direktori yang disebutkan dalam catatan sesi lain yang telah selesai.

667 656 

668### Set the model, effort, and fast mode657### Set the model, effort, and fast mode

669 658 


774| [`--add-dir <path>`](https://code.claude.com/docs/id/permissions#additional-directories-grant-file-access-not-configuration) | Berikan akses file ke direktori tambahan |763| [`--add-dir <path>`](https://code.claude.com/docs/id/permissions#additional-directories-grant-file-access-not-configuration) | Berikan akses file ke direktori tambahan |

775| [`--plugin-dir <path>`](https://code.claude.com/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) | Muat plugin dari direktori lokal |764| [`--plugin-dir <path>`](https://code.claude.com/docs/id/plugins/create#load-a-directory-or-archive-for-one-session) | Muat plugin dari direktori lokal |

776| [`--mcp-config <file-or-json>`](https://code.claude.com/docs/id/mcp) | Muat server MCP dari file konfigurasi atau string JSON |765| [`--mcp-config <file-or-json>`](https://code.claude.com/docs/id/mcp) | Muat server MCP dari file konfigurasi atau string JSON |

777| `--strict-mcp-config` | Gunakan hanya server MCP dari `--mcp-config`, abaikan konfigurasi MCP lainnya. Lihat [Exclusive control with managed-mcp.json](https://code.claude.com/docs/id/managed-mcp.md#exclusive-control-with-managed-mcp-json) untuk apa yang dilakukan flag ini di bawah file MCP terkelola |766| `--strict-mcp-config` | Lewati server MCP yang dikonfigurasi di tempat seperti `.mcp.json`, dan muat server yang Anda berikan dengan `--mcp-config`. Lihat [Exclusive control with managed-mcp.json](https://code.claude.com/docs/id/managed-mcp.md#exclusive-control-with-managed-mcp-json) untuk apa yang dilakukan flag ini di bawah file MCP terkelola |

778 767 

779Ulangi `--add-dir`, `--plugin-dir`, atau `--mcp-config` sekali per nilai. `claude agents` tidak mendukung bentuk yang dipisahkan spasi, seperti `--add-dir a b c`.768Ulangi `--add-dir`, `--plugin-dir`, atau `--mcp-config` sekali per nilai. `claude agents` tidak mendukung bentuk yang dipisahkan spasi, seperti `--add-dir a b c`.

780 769 


802| `claude stop <id>` | Hentikan sesi. Juga menerima `claude kill` |791| `claude stop <id>` | Hentikan sesi. Juga menerima `claude kill` |

803| `claude respawn <id>` | Mulai ulang sesi, baik yang sedang berjalan maupun yang dihentikan, misalnya untuk mengambil biner Claude Code yang telah diperbarui. Sesi yang memiliki percakapan tersimpan akan melanjutkan percakapan tersebut |792| `claude respawn <id>` | Mulai ulang sesi, baik yang sedang berjalan maupun yang dihentikan, misalnya untuk mengambil biner Claude Code yang telah diperbarui. Sesi yang memiliki percakapan tersimpan akan melanjutkan percakapan tersebut |

804| `claude respawn --all` | Mulai ulang setiap sesi yang sedang berjalan, misalnya untuk memindahkan semua sesi ke biner Claude Code yang telah diperbarui sekaligus |793| `claude respawn --all` | Mulai ulang setiap sesi yang sedang berjalan, misalnya untuk memindahkan semua sesi ke biner Claude Code yang telah diperbarui sekaligus |

805| `claude rm <id>` | Hapus sesi dari daftar, bersama dengan worktree yang dibuat Claude untuk sesi tersebut ketika aman untuk dihapus; lihat [Apa yang dihapus saat menghapus sesi](#what-deleting-a-session-removes). Transkrip percakapan tetap berada di mesin lokal Anda dan tetap tersedia melalui `claude --resume` |794| `claude rm <id>` | Hapus sesi dari daftar, bersama dengan worktree yang dibuat Claude untuk sesi tersebut ketika aman untuk dihapus. Jika Claude Code menolak menghapus sesi karena worktree-nya, lihat [Hapus sesi setelah Claude Code menolak](#delete-a-session-after-claude-code-refuses). Transkrip percakapan tetap berada di mesin lokal Anda dan tetap tersedia melalui `claude --resume` |

806| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Hapus sesi yang penghapusannya ditolak karena commit yang belum di-push, membuang worktree beserta branch dan commitnya. Lewatkan nilai yang tepat yang ditampilkan penolakan; lihat [Apa yang dihapus saat menghapus sesi](#what-deleting-a-session-removes). Memerlukan v2.1.260 atau lebih baru |795| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Coba lagi menghapus sesi dan membuang worktree-nya, setelah Claude Code menolak karena commit yang belum di-push. Salin perintah dari pesan `claude rm` yang menawarkannya; lihat [Worktree has commits that are not pushed anywhere](https://code.claude.com/docs/id/errors.md#worktree-has-commits-that-are-not-pushed-anywhere). Memerlukan v2.1.260 atau lebih baru |

807| `claude rm <id> --force-remove-worktree <worktree-id>` | Hapus sesi yang penghapusannya ditolak karena git atau hook `WorktreeRemove` tidak dapat menghapus worktreenya, menghapus direktori worktree bagaimanapun dan meninggalkan branch-nya di repositori. Lewatkan nilai yang tepat yang ditampilkan penolakan; lihat [Apa yang dihapus saat menghapus sesi](#what-deleting-a-session-removes). Memerlukan v2.1.268 atau lebih baru |796| `claude rm <id> --force-remove-worktree <worktree-id>` | Coba lagi menghapus sesi dan tetap menghapus direktori worktree-nya, setelah Claude Code menolak karena tidak dapat menghapus worktree tersebut. Salin perintah dari pesan `claude rm` yang menawarkannya; lihat [Selesaikan pesan `Worktree not removed`](#resolve-a-worktree-not-removed-message). Memerlukan v2.1.268 atau lebih baru |

808| `claude daemon status` | Cetak status [supervisor](#the-supervisor-process), versi, direktori soket, dan jumlah pekerja |797| `claude daemon status` | Cetak status [supervisor](#the-supervisor-process), versi, direktori soket, dan jumlah pekerja |

809| `claude daemon logs` | Ikuti file log supervisor, [`~/.claude/daemon.log`](#where-state-is-stored), dengan mencetak baris baru saat baris tersebut masuk hingga Anda menekan `Ctrl+C` |798| `claude daemon logs` | Ikuti file log supervisor, [`~/.claude/daemon.log`](#where-state-is-stored), dengan mencetak baris baru saat baris tersebut masuk hingga Anda menekan `Ctrl+C` |

810| `claude daemon stop --any` | Hentikan proses supervisor dan sesi latar belakang yang dihosting. Lewatkan `--keep-workers` untuk membiarkan sesi latar belakang tetap berjalan sehingga [supervisor berikutnya](#the-supervisor-process) dapat terhubung kembali ke sesi tersebut. `claude agents` atau `claude --bg` berikutnya memulai supervisor baru |799| `claude daemon stop --any` | Hentikan proses supervisor dan sesi latar belakang yang dihosting. Lewatkan `--keep-workers` untuk membiarkan sesi latar belakang tetap berjalan sehingga [supervisor berikutnya](#the-supervisor-process) dapat terhubung kembali ke sesi tersebut. `claude agents` atau `claude --bg` berikutnya memulai supervisor baru |


939 928 

940 Tekan `Enter` pada baris dan footer menampilkan `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to remove it.` Tekan `Enter` pada baris yang sama lagi untuk melanjutkan percakapan yang disimpannya. Balasan, atau `claude attach <id>`, melanjutkannya tanpa prompt footer itu.929 Tekan `Enter` pada baris dan footer menampilkan `Press enter again to resume this session (it ended while the background service was off), or ctrl+x to remove it.` Tekan `Enter` pada baris yang sama lagi untuk melanjutkan percakapan yang disimpannya. Balasan, atau `claude attach <id>`, melanjutkannya tanpa prompt footer itu.

941 930 

942Ketika [pembersihan transkrip](https://code.claude.com/docs/id/settings-reference.md#cleanupperioddays) telah menghapus percakapan yang disimpan dari sesi yang dihentikan, Claude Code menolak untuk membuka baris: pesan mengatakan tidak ada yang dapat dilanjutkan. `claude rm <id>` menghapus baris, kecuali dalam [kasus yang disimpan](#what-deleting-a-session-removes) yang dijelaskan di atas, dan `claude respawn <id>` menjalankan prompt aslinya lagi. Lihat [Percakapan yang disimpan sesi ini tidak lagi ada di disk](https://code.claude.com/docs/id/errors.md#this-sessions-saved-conversation-is-no-longer-on-disk).931Ketika [pembersihan transkrip](https://code.claude.com/docs/id/settings-reference.md#cleanupperioddays) telah menghapus percakapan yang disimpan dari sesi yang dihentikan, Claude Code menolak untuk membuka baris: pesan mengatakan tidak ada yang dapat dilanjutkan. `claude rm <id>` menghapus baris, kecuali jika [Claude Code menolak](#what-deleting-a-session-removes), dan `claude respawn <id>` menjalankan prompt aslinya lagi. Lihat [Percakapan yang disimpan sesi ini tidak lagi ada di disk](https://code.claude.com/docs/id/errors.md#this-sessions-saved-conversation-is-no-longer-on-disk).

943 932 

944Sleep saja tidak menghentikan sesi. Sesi dipertahankan di seluruh sleep dan supervisor terhubung kembali ke sesi tersebut saat bangun.933Sleep saja tidak menghentikan sesi. Sesi dipertahankan di seluruh sleep dan supervisor terhubung kembali ke sesi tersebut saat bangun.

945 934 


973 962 

974Ketika proses sesi latar belakang keluar sebelum selesai dimulai dan host kekurangan memori, status baris menyebutkan keluar dan menambahkan `possibly low memory — free some up and retry`.963Ketika proses sesi latar belakang keluar sebelum selesai dimulai dan host kekurangan memori, status baris menyebutkan keluar dan menambahkan `possibly low memory — free some up and retry`.

975 964 

976Catatan ini adalah hipotesis, bukan penyebab yang dikonfirmasi. Claude Code menambahkannya hanya ketika proses keluar diam-diam, tanpa menulis kesalahan dan tanpa dihentikan oleh sinyal, dan host melaporkan memori rendah pada saat itu. Ketika proses menulis kesalahan sebelum keluar, baris menampilkan kesalahan itu sebagai gantinya.965> [!NOTE]

966>

967> Catatan ini adalah hipotesis, bukan penyebab yang dikonfirmasi. Claude Code menambahkannya hanya ketika proses keluar diam-diam, tanpa menulis kesalahan dan tanpa dihentikan oleh sinyal, dan host melaporkan memori rendah pada saat itu. Ketika proses menulis kesalahan sebelum keluar, baris menampilkan kesalahan itu sebagai gantinya.

977 968 

978Bebaskan memori di mesin, kemudian lampirkan atau balas ke baris dan supervisor memulai proses segar untuk sesi. Ketika memori tetap rendah, supervisor juga [menghentikan sesi idle](#the-supervisor-process) untuk membebaskan sumber daya dengan sendirinya, dan menghentikan sesi idle yang disematkan juga jika menghentikan yang lain tidak membebaskan apa pun.969Bebaskan memori di host, kemudian tekan `Enter` pada baris, dan tekan lagi jika [footer memintanya](#opening-a-session-says-it-has-no-saved-transcript). [Supervisor](#the-supervisor-process) memulai proses baru untuk sesi tersebut. Ketika memori tetap rendah, supervisor juga [menghentikan sesi idle](#the-supervisor-process) untuk membebaskan sumber daya dengan sendirinya, dan menghentikan sesi idle yang disematkan juga jika menghentikan yang lain tidak membebaskan apa pun.

979 970 

980### Tampilan agent mengatakan layanan latar belakang tidak merespons971### Tampilan agent mengatakan layanan latar belakang tidak merespons

981 972 


1036 1027 

1037### `.claude/worktrees/` penuh1028### `.claude/worktrees/` penuh

1038 1029 

1039Menghapus sesi dalam tampilan agent menghapus worktree yang dibuat Claude untuk sesi tersebut, tetapi [beberapa penghapusan menyimpan worktree atau meninggalkan direktorinya di disk](#what-deleting-a-session-removes), jadi direktori sisa dapat terakumulasi. Direktori yang tidak lagi dikenali git tidak muncul dalam `git worktree list`, jadi hapus yang tersebut dengan tangan.1030Menghapus sesi dalam tampilan agent menghapus worktree yang dibuat Claude untuk sesi tersebut, tetapi [beberapa direktori worktree tetap ada di disk](#what-deleting-a-session-removes). Direktori yang tidak lagi dikenali git tidak muncul dalam `git worktree list`, jadi hapus direktori tersebut sendiri.

1040 1031 

1041Daftar entri sisa dengan `git worktree list` di direktori proyek dan hapus masing-masing dengan `git worktree remove <path>`. Lihat [Bersihkan worktree](https://code.claude.com/docs/id/worktrees.md#clean-up-worktrees).1032Daftar entri sisa dengan `git worktree list` di direktori proyek dan hapus masing-masing dengan `git worktree remove <path>`. Jika git menolak, lihat [Bersihkan worktree subagent dan sesi latar belakang](https://code.claude.com/docs/id/worktrees.md#clean-up-subagent-and-background-session-worktrees).

1042 1033 

1043## Keterbatasan1034## Keterbatasan

1044 1035 


1046 1037 

1047* **Batas laju berlaku**: sesi latar belakang menggunakan kuota langganan Anda sama seperti sesi interaktif, jadi menjalankan sepuluh agen secara paralel menggunakan kuota kira-kira sepuluh kali lebih cepat daripada menjalankan satu.1038* **Batas laju berlaku**: sesi latar belakang menggunakan kuota langganan Anda sama seperti sesi interaktif, jadi menjalankan sepuluh agen secara paralel menggunakan kuota kira-kira sepuluh kali lebih cepat daripada menjalankan satu.

1048* **Sesi bersifat lokal**: sesi latar belakang berjalan di mesin Anda. Sesi ini dipertahankan di seluruh tidur tetapi berhenti jika mesin dimatikan.1039* **Sesi bersifat lokal**: sesi latar belakang berjalan di mesin Anda. Sesi ini dipertahankan di seluruh tidur tetapi berhenti jika mesin dimatikan.

1049* **Worktrees yang dibuat Claude dihapus dengan sesi di tampilan agen**: gabungkan perubahan sebelum menghapus sesi yang mengedit file di worktree-nya sendiri. [Beberapa penghapusan menyimpan worktree sebagai gantinya](#what-deleting-a-session-removes).1040* **Worktree yang dibuat Claude dihapus bersama sesi di tampilan agent**: lakukan commit atas perubahan sebelum menghapus sesi yang mengedit file di worktree-nya sendiri. [Beberapa worktree tetap tersimpan di disk](#what-deleting-a-session-removes).

1050 1041 

1051## Sumber daya terkait1042## Sumber daya terkait

1052 1043 

artifacts.md +2 −2

Details

432 432 

433Untuk mengatur berapa lama artifacts disimpan sebelum penghapusan otomatis, buka [**Organization settings > Data and privacy**](https://claude.ai/admin-settings/data-privacy-controls). Anda dapat mengatur periode retensi terpisah untuk artifacts yang masih pribadi untuk penulis mereka dan artifacts yang telah dibagikan.433Untuk mengatur berapa lama artifacts disimpan sebelum penghapusan otomatis, buka [**Organization settings > Data and privacy**](https://claude.ai/admin-settings/data-privacy-controls). Anda dapat mengatur periode retensi terpisah untuk artifacts yang masih pribadi untuk penulis mereka dan artifacts yang telah dibagikan.

434 434 

435### Tinjau log audit435### Audit aktivitas artifact dengan Compliance API

436 436 

437Penerbitan, berbagi, dan menghapus artifact masing-masing muncul di log audit organisasi Anda di bawah jenis acara `claude_artifact_*`, keluarga yang sama digunakan untuk artifacts yang dibuat dalam percakapan claude.ai.437Pada paket Enterprise, kueri [Activity Feed](https://platform.claude.com/docs/en/manage-claude/compliance-activity-feed) Compliance API untuk melihat siapa yang menerbitkan, membagikan, atau menghapus artifact. Untuk menemukan jenis aktivitas yang dapat digunakan sebagai filter, perluas `activity_types` di [referensi Activity Feed](https://platform.claude.com/docs/en/api/compliance/activities/list) dan cari nama yang mengandung `artifact`.

438 438 

439### Daftar putih domain viewer439### Daftar putih domain viewer

440 440 

Details

163Claude memutuskan di mana setiap pesan yang Anda kirim dalam percakapan pergi:163Claude memutuskan di mana setiap pesan yang Anda kirim dalam percakapan pergi:

164 164 

165* Pertanyaan cepat biasanya mendapat jawaban dalam percakapan.165* Pertanyaan cepat biasanya mendapat jawaban dalam percakapan.

166* Pekerjaan baru masuk ke thread baru atau ke thread yang sudah bekerja di area itu, dan Claude memberi tahu Anda mana. Setiap thread baru muncul di bawah pesan Anda sebagai kartu: kotak dengan judul dan status thread, yang Anda klik untuk membuka thread.166* Pekerjaan baru masuk ke thread baru atau ke thread yang sudah bekerja di area itu, dan Claude memberi tahu Anda mana. Setiap thread baru muncul dalam percakapan, dan Anda mengkliknya untuk membuka thread.

167* Beberapa tugas yang tidak terkait dalam satu pesan menjadi thread terpisah.167* Beberapa tugas yang tidak terkait dalam satu pesan menjadi thread terpisah.

168 168 

169Jika Claude merutekan sesuatu berbeda dari yang Anda inginkan, katakan saja. [Sesuaikan cara Claude menjalankan project](#tune-how-claude-runs-a-project) mencantumkan hal-hal yang dapat Anda katakan, seperti menggunakan kembali thread yang ada untuk follow-up atau menjawab di tempat alih-alih memulai thread.169Jika Claude merutekan sesuatu berbeda dari yang Anda inginkan, katakan saja. [Sesuaikan cara Claude menjalankan project](#tune-how-claude-runs-a-project) mencantumkan hal-hal yang dapat Anda katakan, seperti menggunakan kembali thread yang ada untuk follow-up atau menjawab di tempat alih-alih memulai thread.

170 170 

171Hasil lengkap thread tetap ada di thread, dan Anda membuka kartunya dalam percakapan untuk membacanya. File yang dihasilkan thread juga ada di [**Library**](#see-what-needs-you-in-overview) project.171Hasil lengkap thread tetap ada di thread, jadi buka thread tersebut untuk membacanya. File yang dihasilkan thread juga ada di [**Library**](#see-what-needs-you-in-overview) project.

172 172 

173Kadang-kadang Claude mengusulkan thread alih-alih memulainya, dalam daftar **Suggested threads**. Klik panah pada saran untuk memulai thread itu. Ketika beberapa tercantum, tombol di bawah daftar memulai semuanya.173Kadang-kadang Claude mengusulkan thread alih-alih memulainya, dalam daftar **Suggested threads**. Klik panah pada saran untuk memulai thread itu. Ketika beberapa tercantum, tombol di bawah daftar memulai semuanya.

174 174 


180* **Pull request**: membuka satu ketika Anda minta, dan dapat membuka satu sendiri untuk perbaikan bug atau perubahan konkret lainnya.180* **Pull request**: membuka satu ketika Anda minta, dan dapat membuka satu sendiri untuk perbaikan bug atau perubahan konkret lainnya.

181* **Setelah dibuka**: mengawasi pull request dengan [auto-fix](https://code.claude.com/docs/id/claude-code-on-the-web.md#auto-fix-pull-requests) diaktifkan, terlepas dari apakah auto-fix aktif untuk sesi cloud lainnya. Ini mendorong perbaikan ketika CI gagal, mengatasi komentar review, dan membalas di thread ketika pemeriksaan lulus dan pull request siap untuk Anda.181* **Setelah dibuka**: mengawasi pull request dengan [auto-fix](https://code.claude.com/docs/id/claude-code-on-the-web.md#auto-fix-pull-requests) diaktifkan, terlepas dari apakah auto-fix aktif untuk sesi cloud lainnya. Ini mendorong perbaikan ketika CI gagal, mengatasi komentar review, dan membalas di thread ketika pemeriksaan lulus dan pull request siap untuk Anda.

182 182 

183Ketika thread telah mendorong cabang atau membuka pull request, kartunya dalam percakapan dapat menampilkan tombol untuk langkah berikutnya:

184 

185* **Resolve conflicts**, **Fix CI**, **Address comments**, dan **Merge it** mengirim instruksi itu ke thread sebagai pesan dari Anda, jadi Anda dapat meminta thread sendiri alih-alih menunggu untuk bereaksi terhadap pull request.

186* **Review PR** membuka pull request di GitHub.

187* **Create PR** muncul ketika thread idle telah mendorong cabang tetapi belum membuka pull request. Mengkliknya membuat pull request dari cabang itu secara langsung daripada mengirim instruksi thread untuk membuka satu.

188 

189Untuk mengubah kapan thread membuka pull request, misalnya hanya ketika Anda minta, atau dari cabang mana mereka memulai, katakan saja dalam tugas atau di [project instructions](#write-project-instructions).183Untuk mengubah kapan thread membuka pull request, misalnya hanya ketika Anda minta, atau dari cabang mana mereka memulai, katakan saja dalam tugas atau di [project instructions](#write-project-instructions).

190 184 

191### Lihat apa yang membutuhkan Anda di Overview185### Lihat apa yang membutuhkan Anda di Overview


212 206 

213### Buka thread ketika Anda membutuhkan kontrol207### Buka thread ketika Anda membutuhkan kontrol

214 208 

215Klik kartu thread dalam percakapan atau barisnya di Overview untuk membuka transkripnya di pane Overview. Dari sana Anda dapat:209Klik thread dalam percakapan atau barisnya di Overview untuk membuka thread di pane Overview. Dari sana Anda dapat:

216 210 

217* Baca apa yang dilakukan Claude, langkah demi langkah.211* Baca apa yang dilakukan Claude, langkah demi langkah.

218* Kemudi tugas dengan menulis di kotak pesan thread sendiri. Pesan di sana langsung ke thread itu, sementara follow-up dalam percakapan project mencapainya hanya ketika Claude mencocokkan follow-up ke thread itu.212* Kemudi tugas dengan menulis di kotak pesan thread sendiri. Pesan di sana langsung ke thread itu, sementara follow-up dalam percakapan project mencapainya hanya ketika Claude mencocokkan follow-up ke thread itu.

Details

128| `--session-id` | Menggunakan ID sesi tertentu untuk percakapan (harus berupa UUID yang valid) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |128| `--session-id` | Menggunakan ID sesi tertentu untuk percakapan (harus berupa UUID yang valid) | `claude --session-id "550e8400-e29b-41d4-a716-446655440000"` |

129| `--setting-sources` | Daftar sumber pengaturan yang dipisahkan koma untuk dimuat (`user`, `project`, `local`). Lihat [agent view](https://code.claude.com/docs/id/agent-view.md#what-carries-over-when-you-background) dan [tim agent](https://code.claude.com/docs/id/agent-teams.md#context-and-communication) untuk sesi yang Anda mulai dari sesi ini yang mewarisi daftar tersebut | `claude --setting-sources user,project` |129| `--setting-sources` | Daftar sumber pengaturan yang dipisahkan koma untuk dimuat (`user`, `project`, `local`). Lihat [agent view](https://code.claude.com/docs/id/agent-view.md#what-carries-over-when-you-background) dan [tim agent](https://code.claude.com/docs/id/agent-teams.md#context-and-communication) untuk sesi yang Anda mulai dari sesi ini yang mewarisi daftar tersebut | `claude --setting-sources user,project` |

130| `--settings` | Path ke file JSON pengaturan atau string JSON inline. Nilai yang Anda atur di sini menimpa kunci yang sama di file `settings.json` Anda untuk sesi ini. Kunci yang Anda hilangkan mempertahankan nilai berbasis filenya. File harus berupa file biasa yang tidak lebih besar dari 2 MiB. Lihat [prioritas pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence) | `claude --settings ./settings.json` |130| `--settings` | Path ke file JSON pengaturan atau string JSON inline. Nilai yang Anda atur di sini menimpa kunci yang sama di file `settings.json` Anda untuk sesi ini. Kunci yang Anda hilangkan mempertahankan nilai berbasis filenya. File harus berupa file biasa yang tidak lebih besar dari 2 MiB. Lihat [prioritas pengaturan](https://code.claude.com/docs/id/settings.md#settings-precedence) | `claude --settings ./settings.json` |

131| `--strict-mcp-config` | Hanya menggunakan server MCP dari `--mcp-config`, mengabaikan semua konfigurasi MCP lainnya. Lihat [Kontrol eksklusif dengan managed-mcp.json](https://code.claude.com/docs/id/managed-mcp.md#exclusive-control-with-managed-mcp-json) untuk apa yang dilakukan flag ini di bawah file MCP terkelola | `claude --strict-mcp-config --mcp-config ./mcp.json` |131| `--strict-mcp-config` | Melewati server MCP yang dikonfigurasi di tempat seperti `.mcp.json`, `~/.claude.json`, atau plugin, dan memuat server yang Anda teruskan dengan `--mcp-config`. Lihat [Kontrol eksklusif dengan managed-mcp.json](https://code.claude.com/docs/id/managed-mcp.md#exclusive-control-with-managed-mcp-json) untuk apa yang dilakukan flag ini di bawah file MCP terkelola | `claude --strict-mcp-config --mcp-config ./mcp.json` |

132| `--system-prompt` | Mengganti seluruh system prompt dengan teks kustom | `claude --system-prompt "You are a Python expert"` |132| `--system-prompt` | Mengganti seluruh system prompt dengan teks kustom | `claude --system-prompt "You are a Python expert"` |

133| `--system-prompt-file` | Memuat system prompt dari file, menggantikan prompt default | `claude --system-prompt-file ./custom-prompt.txt` |133| `--system-prompt-file` | Memuat system prompt dari file, menggantikan prompt default | `claude --system-prompt-file ./custom-prompt.txt` |

134| `--system-prompt-snapshot` | Teruskan `off` untuk membangun ulang system prompt pada setiap permintaan alih-alih menggunakan kembali prompt yang [direkam pada permintaan pertama percakapan](#system-prompt-flags-in-resumed-conversations), misalnya saat Anda melakukan iterasi pada teks `--append-system-prompt` di seluruh eksekusi `--continue`. Memerlukan Claude Code v2.1.257 atau yang lebih baru | `claude --system-prompt-snapshot off` |134| `--system-prompt-snapshot` | Teruskan `off` untuk membangun ulang system prompt pada setiap permintaan alih-alih menggunakan kembali prompt yang [direkam pada permintaan pertama percakapan](#system-prompt-flags-in-resumed-conversations), misalnya saat Anda melakukan iterasi pada teks `--append-system-prompt` di seluruh eksekusi `--continue`. Memerlukan Claude Code v2.1.257 atau yang lebih baru | `claude --system-prompt-snapshot off` |

desktop.md +2 −1

Details

2127 2127 

2128Untuk mencegah hal tersebut, deploy juga `forceLoginOrgUUID` dalam kebijakan Claude Desktop (di `HKLM` pada Windows), dengan ID organisasi claude.ai Anda. Kecuali kebijakan itu sendiri [memilih Claude API](https://claude.com/docs/third-party/claude-desktop/claude-api#choose-an-authentication-approach), Claude Desktop berhenti menggunakan kunci API atau akun Console milik seseorang pada peluncuran aplikasi berikutnya.2128Untuk mencegah hal tersebut, deploy juga `forceLoginOrgUUID` dalam kebijakan Claude Desktop (di `HKLM` pada Windows), dengan ID organisasi claude.ai Anda. Kecuali kebijakan itu sendiri [memilih Claude API](https://claude.com/docs/third-party/claude-desktop/claude-api#choose-an-authentication-approach), Claude Desktop berhenti menggunakan kunci API atau akun Console milik seseorang pada peluncuran aplikasi berikutnya.

2129 2129 

2130Periksa dua kasus berikut sebelum Anda men-deploy-nya:2130Periksa tiga kasus berikut sebelum Anda men-deploy-nya:

2131 2131 

2132* **Organisasi Claude Console**: jangan deploy `forceLoginOrgUUID` sendirian dengan ID organisasi Claude Console, karena hal itu akan mengunci orang-orang Anda dari Claude Desktop. Lihat [Which devices offer the Claude API account sign-in](https://claude.com/docs/third-party/claude-desktop/claude-api#which-devices-offer-the-claude-api-account-sign-in) sebagai gantinya.2132* **Organisasi Claude Console**: jangan deploy `forceLoginOrgUUID` sendirian dengan ID organisasi Claude Console, karena hal itu akan mengunci orang-orang Anda dari Claude Desktop. Lihat [Which devices offer the Claude API account sign-in](https://claude.com/docs/third-party/claude-desktop/claude-api#which-devices-offer-the-claude-api-account-sign-in) sebagai gantinya.

2133* **Enterprise Admin Console**: jika konsol tersebut mengirimkan konfigurasi Claude Desktop ke komputer Anda, perbarui komputer-komputer tersebut ke Claude Desktop v2.37337.0 atau lebih baru terlebih dahulu, karena versi sebelumnya mengabaikan konfigurasi tersebut setelah kunci ini diatur. Lihat [Keep a device on its managed profile](https://claude.com/docs/third-party/claude-desktop/admin-console#keep-a-device-on-its-managed-profile).2133* **Enterprise Admin Console**: jika konsol tersebut mengirimkan konfigurasi Claude Desktop ke komputer Anda, perbarui komputer-komputer tersebut ke Claude Desktop v2.37337.0 atau lebih baru terlebih dahulu, karena versi sebelumnya mengabaikan konfigurasi tersebut setelah kunci ini diatur. Lihat [Keep a device on its managed profile](https://claude.com/docs/third-party/claude-desktop/admin-console#keep-a-device-on-its-managed-profile).

2134* **Penyedia pihak ketiga**: jika orang-orang menyiapkan [konfigurasi inferensi pihak ketiga](https://claude.com/docs/third-party/claude-desktop/in-app-configuration) mereka sendiri di aplikasi, Claude Desktop mengabaikan konfigurasi tersebut mulai dari peluncuran berikutnya setelah Anda men-deploy kunci ini. Agar orang-orang tetap menggunakan Amazon Bedrock, Agent Platform dari Google Cloud, Microsoft Foundry, atau gateway LLM, [deploy konfigurasi](https://claude.com/docs/third-party/claude-desktop/configuration) ke komputer mereka dalam kebijakan Claude Desktop yang sama.

2134 2135 

2135### Persyaratan akses jaringan2136### Persyaratan akses jaringan

2136 2137 

Details

182* **Review allowed permissions**: lihat dan cabut persetujuan alat yang disimpan untuk tugas ini dari panel **Always allowed**182* **Review allowed permissions**: lihat dan cabut persetujuan alat yang disimpan untuk tugas ini dari panel **Always allowed**

183* **Delete**: hapus tugas. Sesi yang dibuat oleh tugas tersebut [diarsipkan](https://code.claude.com/docs/id/desktop.md#organize-and-find-sessions), bukan dihapus. Folder yang berisi file `SKILL.md` tugas tetap ada di disk di `~/.claude/scheduled-tasks/<task-name>/`, atau di `scheduled-tasks/<task-name>/` di bawah [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars) jika Anda mengatur variabel tersebut. Untuk menghapus folder tersebut, hapus sendiri.183* **Delete**: hapus tugas. Sesi yang dibuat oleh tugas tersebut [diarsipkan](https://code.claude.com/docs/id/desktop.md#organize-and-find-sessions), bukan dihapus. Folder yang berisi file `SKILL.md` tugas tetap ada di disk di `~/.claude/scheduled-tasks/<task-name>/`, atau di `scheduled-tasks/<task-name>/` di bawah [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars) jika Anda mengatur variabel tersebut. Untuk menghapus folder tersebut, hapus sendiri.

184 184 

185Anda juga dapat membuat daftar, membuat, mengedit, dan menjeda tugas dengan meminta Claude dalam sesi Desktop apa pun. Misalnya, "jeda tugas dependency-audit saya" atau "tampilkan tugas terjadwal saya." Untuk menghapus tugas, gunakan tombol **Delete** di halaman detailnya.185Anda juga dapat mengelola tugas dengan meminta Claude, membiarkan tugas memperbarui dirinya sendiri, atau mengedit prompt tugas di disk:

186 186 

187Untuk memungkinkan tugas mengubah jadwal atau prompt-nya sendiri dengan tool MCP `update_scheduled_task`, klik **Run now** dan setujui panggilan tersebut setiap kali.187* **Minta Claude**: buat daftar, buat, edit, dan jeda tugas dengan meminta Claude dalam sesi Desktop apa pun. Misalnya, "jeda tugas dependency-audit saya" atau "tampilkan tugas terjadwal saya." Untuk menghapus tugas, gunakan tombol **Delete** di halaman detailnya.

188 188* **Biarkan tugas memperbarui dirinya sendiri**: agar tugas dapat mengubah jadwal atau prompt-nya sendiri dengan tool MCP `update_scheduled_task`, klik **Run now** dan setujui panggilan tersebut setiap kali

189Untuk mengedit prompt tugas di disk, buka `~/.claude/scheduled-tasks/<task-name>/SKILL.md` (atau di bawah [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars) jika diatur). File menggunakan frontmatter YAML untuk `name` dan `description`, dengan prompt sebagai body. Perubahan berlaku pada run berikutnya. Schedule, folder, dan enabled state tidak ada dalam file ini: ubah melalui formulir Edit atau minta Claude.189* **Edit prompt di disk**: buka `~/.claude/scheduled-tasks/<task-name>/SKILL.md`, atau `scheduled-tasks/<task-name>/SKILL.md` di bawah [`CLAUDE_CONFIG_DIR`](https://code.claude.com/docs/id/env-vars) jika Anda mengatur variabel tersebut. File menggunakan frontmatter YAML untuk `name` dan `description`, dengan prompt sebagai body. Perubahan berlaku pada run berikutnya. Jadwal, folder, dan status aktif tidak ada dalam file ini: ubah melalui formulir Edit atau minta Claude.

190 190 

191## Sumber daya terkait191## Sumber daya terkait

192 192 

env-vars.md +1 −1

Details

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

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

358| `CLAUDE_CODE_PLUGIN_DIRS` | Direktori plugin yang dimuat untuk sesi, masing-masing dimuat dengan cara yang sama seperti flag [`--plugin-dir`](https://code.claude.com/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) memuatnya. Pisahkan beberapa path dengan `:` di Unix atau `;` di Windows. Berikan setiap path sebagai path absolut atau awali dengan `~`, karena Claude Code melewati path relatif. Memerlukan Claude Code v2.1.280 atau yang lebih baru. Lihat [Memuat plugin untuk satu sesi](https://code.claude.com/docs/id/plugins/create.md#load-a-directory-or-archive-for-one-session) |358| `CLAUDE_CODE_PLUGIN_DIRS` | Direktori plugin yang dimuat untuk sesi, masing-masing dimuat dengan cara yang sama seperti flag [`--plugin-dir`](https://code.claude.com/docs/id/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) memuatnya. Pisahkan beberapa path dengan `:` di Unix atau `;` di Windows. Berikan setiap path sebagai path absolut atau awali dengan `~`, karena Claude Code melewati path relatif. Memerlukan Claude Code v2.1.280 atau yang lebih baru. Lihat [Memuat plugin untuk satu sesi](https://code.claude.com/docs/id/plugins/create.md#load-a-directory-or-archive-for-one-session) |

359| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Mengontrol apakah Claude Code memuat ulang [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) ketika file mod berubah. Pemuatan ulang berlaku untuk mod yang Anda muat dari direktori dengan `--plugin-dir`, dan aktif secara default dalam sesi interaktif. Atur ke `1` untuk mengaktifkannya juga dalam sesi non-interaktif, atau `0` untuk mematikannya di setiap sesi. Memerlukan Claude Code v2.1.287 atau yang lebih baru. Lihat [pengaturan dan environment variable mod](https://code.claude.com/docs/id/plugins/mods/reference.md#settings-and-environment-variables) |359| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Mengontrol apakah [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) dimuat ulang ketika file-nya berubah. Secara default, mod di [direktori skills](https://code.claude.com/docs/id/plugins/org.md#keep-skills-directory-plugins-loading) dimuat ulang dalam sesi apa pun yang memerlukan lebih dari satu prompt, termasuk sesi [non-interaktif](https://code.claude.com/docs/id/headless.md). Mod di direktori `--plugin-dir` dimuat ulang hanya dalam sesi terminal interaktif. Atur ke `1` untuk memuatnya ulang seperti mod direktori skills, atau `0` untuk mematikan pemuatan ulang di mana pun. Memerlukan Claude Code v2.1.287 atau yang lebih baru |

360| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout dalam milidetik untuk melakukan clone atau menyegarkan marketplace plugin (default: 120000). Naikkan nilai ini untuk repositori besar atau koneksi jaringan yang lambat. Lihat [Git clone timed out](https://code.claude.com/docs/id/plugins/troubleshooting.md#git-clone-timed-out-after-120s) |360| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout dalam milidetik untuk melakukan clone atau menyegarkan marketplace plugin (default: 120000). Naikkan nilai ini untuk repositori besar atau koneksi jaringan yang lambat. Lihat [Git clone timed out](https://code.claude.com/docs/id/plugins/troubleshooting.md#git-clone-timed-out-after-120s) |

361| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Atur ke `1` untuk melewati upaya clone ulang dan tetap menggunakan checkout marketplace yang ada ketika penyegaran marketplace tidak dapat menjangkau atau melakukan autentikasi ke remote. Berguna di environment offline atau airgapped di mana clone ulang akan gagal dengan cara yang sama. Lihat [Pembaruan marketplace gagal di environment offline](https://code.claude.com/docs/id/plugins/troubleshooting.md#marketplace-updates-keep-failing-offline) |361| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Atur ke `1` untuk melewati upaya clone ulang dan tetap menggunakan checkout marketplace yang ada ketika penyegaran marketplace tidak dapat menjangkau atau melakukan autentikasi ke remote. Berguna di environment offline atau airgapped di mana clone ulang akan gagal dengan cara yang sama. Lihat [Pembaruan marketplace gagal di environment offline](https://code.claude.com/docs/id/plugins/troubleshooting.md#marketplace-updates-keep-failing-offline) |

362| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Atur ke `1` untuk melakukan clone sumber singkatan GitHub `owner/repo` melalui HTTPS alih-alih SSH. Berlaku untuk instalasi dan pembaruan plugin, serta untuk `/plugin marketplace add` dan `update`. Berguna di runner CI, container, atau environment apa pun tanpa kunci SSH yang dikonfigurasi untuk `github.com` |362| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Atur ke `1` untuk melakukan clone sumber singkatan GitHub `owner/repo` melalui HTTPS alih-alih SSH. Berlaku untuk instalasi dan pembaruan plugin, serta untuk `/plugin marketplace add` dan `update`. Berguna di runner CI, container, atau environment apa pun tanpa kunci SSH yang dikonfigurasi untuk `github.com` |

errors.md +4 −8

Details

5556 5556 

5557### Worktree has commits that are not pushed anywhere5557### Worktree has commits that are not pushed anywhere

5558 5558 

5559Anda mencoba menghapus [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md#what-deleting-a-session-removes) yang worktree-nya menyimpan commit yang tidak dapat dipastikan Claude Code tersimpan di tempat lain. Claude Code mempertahankan worktree dan baris sesi alih-alih menghancurkan commit tersebut tanpa terlihat. `claude rm` menyebutkan branch dan commit yang belum di-push, serta cara melanjutkan:5559Anda mencoba menghapus [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md#what-deleting-a-session-removes) yang worktree-nya menyimpan commit yang tidak dapat dipastikan Claude Code tersimpan di tempat lain. `claude rm` menyebutkan cara melanjutkan:

5560 5560 

5561```text theme={null}5561```text theme={null}

5562kept 7c5dcf5d — its worktree is still at “/home/you/project/.claude/worktrees/fix-login”5562kept 7c5dcf5d — its worktree is still at “/home/you/project/.claude/worktrees/fix-login”


5566 5566 

5567Ketika Claude Code tidak dapat meringkas commit-nya, baris detail justru berbunyi `The worktree has unpushed commits`. Di [agent view](https://code.claude.com/docs/id/agent-view.md), baris sesi menampilkan `not removed` dengan alasan yang sama.5567Ketika Claude Code tidak dapat meringkas commit-nya, baris detail justru berbunyi `The worktree has unpushed commits`. Di [agent view](https://code.claude.com/docs/id/agent-view.md), baris sesi menampilkan `not removed` dengan alasan yang sama.

5568 5568 

5569Commit yang ada di remote tidak memblokir penghapusan. Begitu pula commit pada salinan lokal branch default remote `origin` Anda, selama branch tersebut di-checkout di checkout utama Anda, yaitu direktori repositori itu sendiri, bukan worktree.

5570 

5571**Yang harus dilakukan:**5569**Yang harus dilakukan:**

5572 5570 

5573* Untuk mempertahankan commit, push branch worktree tersebut, atau merge ke branch default yang di-checkout di checkout utama Anda, lalu hapus sesi lagi5571* Untuk mempertahankan commit, push commit tersebut. Setelah push menempatkannya pada remote-tracking branch, seperti `origin/claude/fix-login`, coba hapus sesi lagi.

5574* Untuk membuang commit, jalankan perintah `claude rm <id> --discard-unpushed` yang dicetak pesan, atau tekan `Ctrl+X` dua kali lagi pada baris sesi di agent view. Ini menghapus sesi dan worktree beserta branch-nya, commit yang belum di-push, dan perubahan apa pun yang belum di-commit. Jika penghapusan ditolak lagi, ikuti pesan yang baru.5572* Jika pesan menawarkan untuk membuang commit, pastikan terlebih dahulu bahwa Anda tidak membutuhkan worktree, commit, maupun perubahan apa pun yang belum di-commit. Lalu ambil langkah yang diberikan pesan: tekan `Ctrl+X` dua kali pada baris sesi di agent view, atau jalankan perintah `claude rm <id> --discard-unpushed <commit>@<worktree-id>` yang dicetak oleh `claude rm`. Jika Claude Code menolak lagi, ikuti pesan yang baru.

5575* Ketika pesan menyebutkan bahwa worktree juga dicatat oleh sesi lain yang sudah selesai, menghapus lagi tidak membuangnya: push commit tersebut, lalu hapus sesi lagi5573* Ketika pesan menyebutkan bahwa worktree juga dicatat oleh sesi lain yang sudah selesai, menghapus lagi tidak membuangnya: push commit tersebut, lalu coba hapus sesi lagi

5576 5574 

5577Sebelum v2.1.268, `claude rm` menempatkan ringkasan commit pada baris `kept` itu sendiri. Ketika `claude rm` tidak dapat meringkas commit, baris `kept` berbunyi `worktree has commits that are not pushed anywhere` sebagai pengganti ringkasan.5575Sebelum v2.1.268, `claude rm` menempatkan ringkasan commit pada baris `kept` itu sendiri. Ketika `claude rm` tidak dapat meringkas commit, baris `kept` berbunyi `worktree has commits that are not pushed anywhere` sebagai pengganti ringkasan.

5578 5576 

5579Sebelum v2.1.260, pesan tidak menyebutkan branch atau commit, dan tidak ada cara untuk membuang. Anda tetap dapat menghapus sesi, dengan kehilangan perubahan yang belum di-commit tetapi mempertahankan branch dan commit. Jalankan `git worktree remove --force --force <path>` dengan path yang dicetak penolakan, lalu `claude rm <id>`. Git membutuhkan `--force` dua kali untuk worktree yang terkunci.5577Sebelum v2.1.260, pesan tidak menyebutkan branch atau commit, dan tidak ada cara untuk membuang. Anda tetap dapat menghapus sesi, dengan kehilangan perubahan yang belum di-commit tetapi mempertahankan branch dan commit. Jalankan `git worktree remove --force --force <path>` dengan path yang dicetak penolakan, lalu `claude rm <id>`. Git membutuhkan `--force` dua kali untuk worktree yang terkunci.

5580 5578 

5581Sebelum v2.1.248, branch default yang di-checkout di checkout utama Anda tidak dihitung: branch yang sudah Anda merge di sana tetap memicu penolakan ini hingga commit-nya mencapai remote.

5582 

5583### Terminal host process died5579### Terminal host process died

5584 5580 

5585Terminal setiap [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) berjalan dalam proses host di bawah layanan latar belakang, dan proses tersebut mati saat layanan masih memegang koneksinya, sehingga sesi tidak dapat dijangkau.5581Terminal setiap [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md) berjalan dalam proses host di bawah layanan latar belakang, dan proses tersebut mati saat layanan masih memegang koneksinya, sehingga sesi tidak dapat dijangkau.

Details

35Ini memiliki perbedaan khusus penyedia:35Ini memiliki perbedaan khusus penyedia:

36 36 

37* **Server MCP**: [konektor dari claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) dimuat hanya ketika langganan claude.ai Anda adalah metode autentikasi aktif. [Pencarian tool](https://code.claude.com/docs/id/mcp.md#configure-tool-search) tidak didukung pada [deployment Microsoft Foundry yang dihosting di Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options). Di Platform Agent Google Cloud, pencarian tool tidak didukung pada model yang lebih awal dari Claude Opus 4.5, Claude Sonnet 4.5, dan Claude Haiku 4.537* **Server MCP**: [konektor dari claude.ai](https://code.claude.com/docs/id/mcp.md#use-mcp-servers-from-claude-ai) dimuat hanya ketika langganan claude.ai Anda adalah metode autentikasi aktif. [Pencarian tool](https://code.claude.com/docs/id/mcp.md#configure-tool-search) tidak didukung pada [deployment Microsoft Foundry yang dihosting di Azure](https://platform.claude.com/docs/en/build-with-claude/claude-in-microsoft-foundry#hosting-options). Di Platform Agent Google Cloud, pencarian tool tidak didukung pada model yang lebih awal dari Claude Opus 4.5, Claude Sonnet 4.5, dan Claude Haiku 4.5

38* **Subagents**: ketika percakapan utama menjalankan Fable, [subagent Explore](https://code.claude.com/docs/id/sub-agents.md#built-in-subagents) bawaan berjalan di Opus dengan langganan Claude, akun Anthropic Console, atau [gateway LLM](https://code.claude.com/docs/id/llm-gateway) yang dijangkau melalui `ANTHROPIC_BASE_URL`. Di penyedia lain, termasuk Claude Platform di AWS, subagent tersebut berjalan di Fable38* **Subagent**: ketika percakapan induk menjalankan Fable, [subagent Explore](https://code.claude.com/docs/id/sub-agents.md#built-in-subagents) bawaan berjalan pada Opus dengan langganan Claude, akun Anthropic Console, atau [LLM gateway](https://code.claude.com/docs/id/llm-gateway) yang diakses melalui `ANTHROPIC_BASE_URL`. Pada penyedia lain, termasuk Claude Platform on AWS, subagent tersebut berjalan pada Fable

39* **[Commands](https://code.claude.com/docs/id/commands.md#all-commands)**:39* **[Commands](https://code.claude.com/docs/id/commands.md#all-commands)**:

40 * `/design-sync` dan `/import` dengan bentuk subperintah `claude import` tidak tersedia di Amazon Bedrock, Platform Agent Google Cloud, Microsoft Foundry, dan Claude Platform di AWS, dan melalui [gateway aplikasi Claude](https://code.claude.com/docs/id/claude-apps-gateway#availability-and-limitations)40 * `/design-sync` dan `/import` dengan bentuk subperintah `claude import` tidak tersedia di Amazon Bedrock, Platform Agent Google Cloud, Microsoft Foundry, dan Claude Platform di AWS, dan melalui [gateway aplikasi Claude](https://code.claude.com/docs/id/claude-apps-gateway#availability-and-limitations)

41 * `/voice` memerlukan akun claude.ai41 * `/voice` memerlukan akun claude.ai

Details

188>188>

189> **Letakkan guardrail di hook.** Instruksi seperti "jangan pernah edit `.env`" di CLAUDE.md atau skill adalah permintaan, bukan jaminan. Hook `PreToolUse` yang memblokir pengeditan adalah penegakan. Jika aturan harus berlaku setiap kali, buat hook daripada instruksi prompt.189> **Letakkan guardrail di hook.** Instruksi seperti "jangan pernah edit `.env`" di CLAUDE.md atau skill adalah permintaan, bukan jaminan. Hook `PreToolUse` yang memblokir pengeditan adalah penegakan. Jika aturan harus berlaku setiap kali, buat hook daripada instruksi prompt.

190>190>

191> **Output hook mendarat di konteks.** Hook `PostToolUse` yang menjalankan linter Anda memberi umpan balik hasil sebagai teks yang Claude baca; skill `/fix-lint` memberi tahu Claude cara menyelesaikannya.191> **Pasangkan hook dengan skill.** Gunakan hook `PostToolUse` untuk menjalankan linter Anda dan [mengirimkan error ke Claude](https://code.claude.com/docs/id/hooks.md#exit-code-2-behavior-per-event). Untuk memberi Claude aturan Anda sendiri dalam memperbaiki error tersebut, tulis skill seperti `/fix-lint`.

192 192 

193### Pahami bagaimana fitur berlapis193### Pahami bagaimana fitur berlapis

194 194 

glossary.md +1 −1

Details

283 283 

284### Sandboxing284### Sandboxing

285 285 

286Isolasi filesystem dan jaringan tingkat OS untuk tool Bash. Perintah berjalan di dalam batas yang Anda tentukan di muka, sehingga Claude dapat bekerja dengan bebas di dalamnya tanpa prompt persetujuan per-perintah. Sandboxing adalah lapisan terpisah dari [permission rules](#permission-rule).286Isolasi filesystem dan jaringan tingkat OS untuk tool Bash. Perintah berjalan di dalam batas yang Anda tentukan di muka. Sandboxing adalah lapisan terpisah dari [permission rules](#permission-rule).

287 287 

288Pelajari lebih lanjut: [Sandboxing](https://code.claude.com/docs/id/sandboxing.md)288Pelajari lebih lanjut: [Sandboxing](https://code.claude.com/docs/id/sandboxing.md)

289 289 

hooks-guide.md +5 −1

Details

242 242 

243### Blokir edit ke file yang dilindungi243### Blokir edit ke file yang dilindungi

244 244 

245Cegah Claude dari memodifikasi file sensitif seperti `.env`, `package-lock.json`, atau apa pun di `.git/`. Claude menerima umpan balik yang menjelaskan mengapa edit diblokir, sehingga dapat menyesuaikan pendekatannya.245Cegah tool `Edit` dan `Write` milik Claude memodifikasi file sensitif seperti `.env`, `package-lock.json`, atau apa pun di `.git/`. Claude menerima umpan balik yang menjelaskan mengapa edit diblokir, sehingga dapat menyesuaikan pendekatannya.

246 246 

247Contoh ini menggunakan file skrip terpisah yang dipanggil hook. Skrip memeriksa jalur file target terhadap daftar pola yang dilindungi dan keluar dengan kode 2 untuk memblokir edit.247Contoh ini menggunakan file skrip terpisah yang dipanggil hook. Skrip memeriksa jalur file target terhadap daftar pola yang dilindungi dan keluar dengan kode 2 untuk memblokir edit.

248 248 


306 306 

307Minta Claude untuk menambahkan komentar ke file `.env` Anda. Claude Code memblokir edit sebelum dijalankan dan meneruskan pesan `Blocked:` skrip ke Claude sebagai umpan balik.307Minta Claude untuk menambahkan komentar ke file `.env` Anda. Claude Code memblokir edit sebelum dijalankan dan meneruskan pesan `Blocked:` skrip ke Claude sebagai umpan balik.

308 308 

309Claude masih dapat mengubah file yang dilindungi dengan perintah shell. Untuk memblokir sebagian perintah tersebut, tambahkan [aturan deny `Edit`](https://code.claude.com/docs/id/permissions#what-read-and-edit-rules-cover) per jalur di bawah `permissions.deny` di `.claude/settings.json`, seperti `Edit(/.env)` untuk `.env` di root proyek.

310 

311Bahkan dengan aturan tersebut, Claude dapat mengubah `.env` dengan cara lain. Untuk membatasi file mana yang dapat ditulis oleh perintah, lihat [Mengonfigurasi sandboxing](https://code.claude.com/docs/id/sandboxing.md#configure-sandboxing).

312 

309### Re-inject konteks setelah compaction313### Re-inject konteks setelah compaction

310 314 

311Ketika jendela konteks Claude penuh, compaction merangkum percakapan untuk membebaskan ruang. Ini dapat kehilangan detail penting. Gunakan hook `SessionStart` dengan matcher `compact` untuk re-inject konteks kritis setelah setiap compaction.315Ketika jendela konteks Claude penuh, compaction merangkum percakapan untuk membebaskan ruang. Ini dapat kehilangan detail penting. Gunakan hook `SessionStart` dengan matcher `compact` untuk re-inject konteks kritis setelah setiap compaction.

Details

296* Field tingkat atas `output_config.effort`. [Retry otomatis dan penerusan kesalahan](#automatic-retry-and-error-forwarding) membahas upstream yang menolaknya296* Field tingkat atas `output_config.effort`. [Retry otomatis dan penerusan kesalahan](#automatic-retry-and-error-forwarding) membahas upstream yang menolaknya

297* Field `thinking` penalaran adaptif, yang tidak memiliki header beta297* Field `thinking` penalaran adaptif, yang tidak memiliki header beta

298* Entri `role: "system"` yang membawa [pesan sistem mid-conversation](#feature-pass-through)298* Entri `role: "system"` yang membawa [pesan sistem mid-conversation](#feature-pass-through)

299* Nilai `anthropic-beta` dan field `safeguards` untuk [tinjauan pengklasifikasi sisi server](https://code.claude.com/docs/id/permission-modes.md#server-side-classifier-review) auto mode, dalam sesi tempat tinjauan tersebut tetap aktif, seperti saat `/status` menampilkan **Auto mode server** sebagai `Enabled`. Untuk mematikan tinjauan tersebut, atur `CLAUDE_CODE_AUTO_MODE_SERVER=0` sebelum memulai sesi. Di terminal, `/status` kemudian menampilkan **Auto mode server** sebagai `Disabled`.

299* Nilai `anthropic-beta` OAuth yang diperlukan autentikasi langganan300* Nilai `anthropic-beta` OAuth yang diperlukan autentikasi langganan

300* Nilai header dan field body yang ditambahkan sendiri oleh pengembang melalui [`ANTHROPIC_BETAS`](https://code.claude.com/docs/id/env-vars) atau [`CLAUDE_CODE_EXTRA_BODY`](https://code.claude.com/docs/id/env-vars)301* Nilai header dan field body yang ditambahkan sendiri oleh pengembang melalui [`ANTHROPIC_BETAS`](https://code.claude.com/docs/id/env-vars) atau [`CLAUDE_CODE_EXTRA_BODY`](https://code.claude.com/docs/id/env-vars)

301 302 

managed-mcp.md +3 −2

Details

30| Pola | Apa yang dilakukan | Konfigurasi |30| Pola | Apa yang dilakukan | Konfigurasi |

31| :- | :- | :- |31| :- | :- | :- |

32| **Nonaktifkan MCP** | Tidak ada server yang dimuat kecuali beberapa yang [dimuat di bawah kontrol eksklusif](#exclusive-control-with-managed-mcp-json) | `managed-mcp.json` dengan peta server kosong |32| **Nonaktifkan MCP** | Tidak ada server yang dimuat kecuali beberapa yang [dimuat di bawah kontrol eksklusif](#exclusive-control-with-managed-mcp-json) | `managed-mcp.json` dengan peta server kosong |

33| **Penerapan tetap** | Setiap pengguna mendapatkan server yang sama dan tidak dapat menambah server lain | `managed-mcp.json` dengan server yang Anda inginkan |33| **Deployment tetap** | Setiap pengguna mendapatkan server yang Anda daftarkan, dan server yang mereka konfigurasikan tidak dimuat | `managed-mcp.json` dengan server yang Anda inginkan |

34| **Server yang disediakan** | Setiap pengguna mendapatkan server jarak jauh yang Anda daftarkan dan mempertahankan server mereka sendiri | `managedMcpServers` dalam pengaturan terkelola |34| **Server yang disediakan** | Setiap pengguna mendapatkan server jarak jauh yang Anda daftarkan dan mempertahankan server mereka sendiri | `managedMcpServers` dalam pengaturan terkelola |

35| **Katalog yang disetujui** | Publikasikan daftar server yang disetujui; pengguna menambahkan yang mereka inginkan, yang lain diblokir | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |35| **Katalog yang disetujui** | Publikasikan daftar server yang disetujui; pengguna menambahkan yang mereka inginkan, yang lain diblokir | `allowedMcpServers` + `allowManagedMcpServersOnly: true` |

36| **Hanya server plugin** | Pengguna tidak dapat menambah server melalui `~/.claude.json` atau `.mcp.json`; [plugin direktori skills](https://code.claude.com/docs/id/plugins/loading.md#skills-directory-plugins-blocked-by-managed-settings) berhenti dimuat sebagai plugin, dan server dari plugin lain masih dimuat | [`strictPluginOnlyCustomization`](https://code.claude.com/docs/id/settings-reference#strictpluginonlycustomization) dengan `mcp` dalam daftar |36| **Hanya server plugin** | Pengguna tidak dapat menambah server melalui `~/.claude.json` atau `.mcp.json`; [plugin direktori skills](https://code.claude.com/docs/id/plugins/loading.md#skills-directory-plugins-blocked-by-managed-settings) berhenti dimuat sebagai plugin, dan server dari plugin lain masih dimuat | [`strictPluginOnlyCustomization`](https://code.claude.com/docs/id/settings-reference#strictpluginonlycustomization) dengan `mcp` dalam daftar |


49* Server yang didefinisikan file49* Server yang didefinisikan file

50* Server yang Anda [sediakan melalui `managedMcpServers`](#provide-servers-through-managed-settings)50* Server yang Anda [sediakan melalui `managedMcpServers`](#provide-servers-through-managed-settings)

51* Server dalam proses yang aplikasi yang memulai sesi mendaftarkan, seperti server Claude Code sendiri dari ekstensi VS Code atau [konektor yang dikirimkan aplikasi desktop](https://code.claude.com/docs/id/mcp.md#how-connectors-reach-claude-code)51* Server dalam proses yang aplikasi yang memulai sesi mendaftarkan, seperti server Claude Code sendiri dari ekstensi VS Code atau [konektor yang dikirimkan aplikasi desktop](https://code.claude.com/docs/id/mcp.md#how-connectors-reach-claude-code)

52* Server yang dibuat Claude Code ketika sebuah [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) [menambahkan tool](https://code.claude.com/docs/id/plugins/mods/api.md#add-a-tool). Untuk memblokir tool yang ditambahkan oleh mod pengguna Anda, [hentikan pemuatan mod yang diinstal pengguna](https://code.claude.com/docs/id/plugins/mods/admin.md#stop-user-installed-mods-from-loading).

52* Server [Claude in Chrome](https://code.claude.com/docs/id/chrome.md) bawaan, jika Anda [mengizinkannya bersama set yang dikelola](#allow-claude-in-chrome-alongside-the-managed-set)53* Server [Claude in Chrome](https://code.claude.com/docs/id/chrome.md) bawaan, jika Anda [mengizinkannya bersama set yang dikelola](#allow-claude-in-chrome-alongside-the-managed-set)

53 54 

54Pengguna tidak dapat menambah, memodifikasi, atau menggunakan server MCP lainnya, termasuk server yang disediakan plugin dan server yang diteruskan dengan [flag CLI `--mcp-config`](https://code.claude.com/docs/id/cli-reference#cli-flags). File ini juga menekan konektor claude.ai yang Claude Code ambil sendiri kecuali Anda [mengizinkannya bersama set yang dikelola](#allow-claude-ai-connectors-alongside-the-managed-set).55Pengguna tidak dapat menambah, memodifikasi, atau menggunakan server MCP lainnya, termasuk server yang disediakan plugin dan server yang diteruskan dengan [flag CLI `--mcp-config`](https://code.claude.com/docs/id/cli-reference#cli-flags). File ini juga menekan konektor claude.ai yang Claude Code ambil sendiri kecuali Anda [mengizinkannya bersama set yang dikelola](#allow-claude-ai-connectors-alongside-the-managed-set).


137}138}

138```139```

139 140 

140`claude mcp add` gagal dengan kesalahan kebijakan perusahaan di atas. Server yang pengguna konfigurasi sebelumnya berhenti dimuat saat mereka memulai sesi berikutnya, tanpa peringatan bahwa kebijakan adalah alasannya. Server yang Anda sediakan melalui `managedMcpServers`, dan apa pun yang Anda izinkan bersama set yang dikelola, masih dimuat di bawah peta kosong, jadi biarkan kunci itu tidak diatur untuk menonaktifkan MCP sepenuhnya.141`claude mcp add` gagal dengan kesalahan kebijakan perusahaan di atas. Server yang pengguna konfigurasi sebelumnya berhenti dimuat saat mereka memulai sesi berikutnya, tanpa peringatan bahwa kebijakan adalah alasannya. Server yang Anda sediakan melalui `managedMcpServers`, dan apa pun yang Anda izinkan bersama set yang dikelola, [masih dimuat](#exclusive-control-with-managed-mcp-json) di bawah peta kosong, jadi biarkan kunci itu tidak diatur.

141 142 

142### Izinkan konektor claude.ai bersama set yang dikelola143### Izinkan konektor claude.ai bersama set yang dikelola

143 144 

mcp.md +1 −1

Details

806 806 

807* Tambahkan ke [`disabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#disabledmcpjsonservers), yang memblokir server di setiap mode izin.807* Tambahkan ke [`disabledMcpjsonServers`](https://code.claude.com/docs/id/settings-reference#disabledmcpjsonservers), yang memblokir server di setiap mode izin.

808* Kecualikan pengaturan proyek sepenuhnya dengan [`--setting-sources`](https://code.claude.com/docs/id/cli-reference#cli-flags) atau opsi `settingSources` SDK.808* Kecualikan pengaturan proyek sepenuhnya dengan [`--setting-sources`](https://code.claude.com/docs/id/cli-reference#cli-flags) atau opsi `settingSources` SDK.

809* Mulai sesi dengan [`--strict-mcp-config`](https://code.claude.com/docs/id/cli-reference#cli-flags). Claude Code kemudian hanya menggunakan server MCP yang Anda teruskan dengan `--mcp-config`. Melewati prompt persetujuan untuk server dengan cakupan proyek yang Claude Code tidak memuat memerlukan Claude Code v2.1.246 atau lebih baru; sebelum v2.1.246, sesi ketat masih menunggu persetujuan untuk mereka, yang membuat sesi latar belakang menunggu saat startup. Lihat [Kontrol eksklusif dengan managed-mcp.json](https://code.claude.com/docs/id/managed-mcp.md#exclusive-control-with-managed-mcp-json) untuk apa yang dilakukan flag di bawah file MCP terkelola.809* Mulai sesi dengan [`--strict-mcp-config`](https://code.claude.com/docs/id/cli-reference#cli-flags). Claude Code kemudian memuat server yang Anda teruskan dengan `--mcp-config` dan melewati server yang dikonfigurasi di tempat seperti `.mcp.json`. Melewati prompt persetujuan untuk server dengan cakupan proyek yang tidak dimuat oleh Claude Code memerlukan Claude Code v2.1.246 atau lebih baru. Lihat [Kontrol eksklusif dengan managed-mcp.json](https://code.claude.com/docs/id/managed-mcp.md#exclusive-control-with-managed-mcp-json) untuk apa yang dilakukan flag di bawah file MCP terkelola.

810 810 

811[Persetujuan server proyek dan kepercayaan workspace](#project-server-approvals-and-workspace-trust) mencakup bagaimana persetujuan yang dikomitkan ke repositori berinteraksi dengan kepercayaan workspace.811[Persetujuan server proyek dan kepercayaan workspace](#project-server-approvals-and-workspace-trust) mencakup bagaimana persetujuan yang dikomitkan ke repositori berinteraksi dengan kepercayaan workspace.

812 812 

model-config.md +2 −2

Details

273* **`/model`**: Claude Code menolak peralihan dengan error273* **`/model`**: Claude Code menolak peralihan dengan error

274* **Flag `--model`, `ANTHROPIC_MODEL`, atau pengaturan `model`**: Claude Code mengganti nilainya saat startup dengan peringatan yang menyebutkan model yang diminta maupun model pengganti, dan sesi dimulai pada model default274* **Flag `--model`, `ANTHROPIC_MODEL`, atau pengaturan `model`**: Claude Code mengganti nilainya saat startup dengan peringatan yang menyebutkan model yang diminta maupun model pengganti, dan sesi dimulai pada model default

275* **[`ANTHROPIC_DEFAULT_MODEL`](#set-a-default-model-for-new-sessions)**: Claude Code mengabaikan variabel tersebut275* **[`ANTHROPIC_DEFAULT_MODEL`](#set-a-default-model-for-new-sessions)**: Claude Code mengabaikan variabel tersebut

276* **Override subagent atau rekan tim**: Claude Code menjalankan subagent atau rekan tim pada model fallback alih-alih menggagalkan permintaan. Lihat [Memilih model](https://code.claude.com/docs/id/sub-agents.md#choose-a-model) untuk fallback subagent dan [Menentukan rekan tim dan model](https://code.claude.com/docs/id/agent-teams.md#specify-teammates-and-models) untuk fallback rekan tim.276* **Override subagent atau rekan tim**: Claude Code menjalankan subagent atau rekan tim pada model fallback alih-alih menggagalkan permintaan. Lihat [Ketika allowlist memblokir model subagent](https://code.claude.com/docs/id/sub-agents.md#when-an-allowlist-blocks-a-subagent-model) untuk fallback subagent dan [Menentukan rekan tim dan model](https://code.claude.com/docs/id/agent-teams.md#specify-teammates-and-models) untuk fallback rekan tim.

277 277 

278 Dalam sesi interaktif, Claude Code memperingatkan Anda ketika mengganti model subagent, baik melalui fallback ini maupun melalui penggantian versi terbaru yang diizinkan di atas, dengan menyebutkan model yang diminta dan model pengganti; Claude Code tidak melaporkan fallback rekan tim.278 Dalam sesi interaktif, Claude Code memperingatkan Anda ketika mengganti model subagent tingkat atas. Claude Code tidak melaporkan fallback rekan tim.

279 279 

280 Di mana penggantian versi terbaru yang diizinkan di atas berlaku, alias keluarga yang terblokir mengikuti penggantian tersebut sebagai gantinya. Sebelum v2.1.222, alias beralih ke fallback seperti nilai terblokir lainnya pada setiap penyedia280 Di mana penggantian versi terbaru yang diizinkan di atas berlaku, alias keluarga yang terblokir mengikuti penggantian tersebut sebagai gantinya. Sebelum v2.1.222, alias beralih ke fallback seperti nilai terblokir lainnya pada setiap penyedia

281* **Override skill atau perintah**: Claude Code mengabaikan override tersebut, termasuk alias keluarga yang terblokir, dan skill atau perintah berjalan pada model sesi. Skill atau perintah yang [berjalan dalam subagent](https://code.claude.com/docs/id/skills.md#run-skills-in-a-subagent) mengikuti perilaku subagent di atas sebagai gantinya281* **Override skill atau perintah**: Claude Code mengabaikan override tersebut, termasuk alias keluarga yang terblokir, dan skill atau perintah berjalan pada model sesi. Skill atau perintah yang [berjalan dalam subagent](https://code.claude.com/docs/id/skills.md#run-skills-in-a-subagent) mengikuti perilaku subagent di atas sebagai gantinya

Details

50| Anda ingin | Mulai dengan | Isolasi yang diperlukan | Catatan |50| Anda ingin | Mulai dengan | Isolasi yang diperlukan | Catatan |

51| :- | :- | :- | :- |51| :- | :- | :- | :- |

52| Tinjau setiap tindakan sendiri | Mode Manual: `claude --permission-mode default` | Tidak ada | Pekerjaan sensitif, kode yang tidak familiar |52| Tinjau setiap tindakan sendiri | Mode Manual: `claude --permission-mode default` | Tidak ada | Pekerjaan sensitif, kode yang tidak familiar |

53| Iterasi lokal dengan lebih sedikit prompt, tanpa pengklasifikasi | Mode Manual ditambah sandbox Bash dalam [mode auto-allow](https://code.claude.com/docs/id/sandboxing.md#sandbox-modes): `claude --permission-mode default`, kemudian jalankan `/sandbox` dan pilih auto-allow | Sandbox Bash bawaan, di macOS, Linux, dan WSL2 | Aturan deny masih berlaku, dan aturan ask yang menyebutkan perintah, seperti `Bash(git push *)`, masih meminta. [Mode auto-allow](https://code.claude.com/docs/id/sandboxing.md#auto-allow-mode) mencakup perintah lain yang dapat meminta. Untuk mengaktifkan sandbox dari file pengaturan sebagai gantinya, atur [`sandbox.enabled`](https://code.claude.com/docs/id/settings-reference#sandbox-enabled) ke `true` |53| Iterasi lokal dengan lebih sedikit prompt, tanpa pengklasifikasi | Mode Manual ditambah sandbox Bash dalam [mode auto-allow](https://code.claude.com/docs/id/sandboxing.md#sandbox-modes): `claude --permission-mode default`, kemudian jalankan `/sandbox` dan pilih auto-allow | Sandbox Bash bawaan, di macOS, Linux, dan WSL2 | Aturan deny masih berlaku, dan aturan ask yang menyebutkan perintah, seperti `Bash(git push *)`, masih meminta. [Mode auto-allow](https://code.claude.com/docs/id/sandboxing.md#auto-allow-mode) mencakup perintah lain yang dapat meminta. Untuk mengaktifkan sandbox dari file pengaturan sebagai gantinya, atur [`sandbox.enabled`](https://code.claude.com/docs/id/settings-reference#sandbox-enabled) dan [`sandbox.autoAllowBashIfSandboxed`](https://code.claude.com/docs/id/settings-reference#sandbox-autoallowbashifsandboxed) ke `true` |

54| Jelajahi sebelum mengubah apa pun | `claude --permission-mode plan` | Tidak ada | Claude Code memblokir pengeditan sampai Anda [menyetujui rencana](#review-and-approve-a-plan) |54| Jelajahi sebelum mengubah apa pun | `claude --permission-mode plan` | Tidak ada | Claude Code memblokir pengeditan sampai Anda [menyetujui rencana](#review-and-approve-a-plan) |

55| Bekerja hands-off dalam mode auto | `claude --permission-mode auto`, [mode izin awal bawaan](#which-mode-a-session-starts-in) dengan v2.1.283 atau lebih baru | Tidak ada; sandbox atau kontainer menambah pertahanan berlapis | Memerlukan [model yang didukung](#eliminate-prompts-with-auto-mode), dan organisasi Anda dapat [mematikan mode auto](#eliminate-prompts-with-auto-mode) |55| Bekerja hands-off dalam mode auto | `claude --permission-mode auto`, [mode izin awal bawaan](#which-mode-a-session-starts-in) dengan v2.1.283 atau lebih baru | Tidak ada; sandbox atau kontainer menambah pertahanan berlapis | Memerlukan [model yang didukung](#eliminate-prompts-with-auto-mode), dan organisasi Anda dapat [mematikan mode auto](#eliminate-prompts-with-auto-mode) |

56| Jalankan di CI dengan allowlist yang tepat | `claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"` | Tidak ada di luar apa yang disediakan runner CI Anda | [Cloud sessions](https://code.claude.com/docs/id/claude-code-on-the-web.md) mengabaikan `dontAsk` dari file pengaturan |56| Jalankan di CI dengan allowlist yang tepat | `claude -p "run the test suite" --permission-mode dontAsk --allowedTools "Bash(npm test)" "Read"` | Tidak ada di luar apa yang disediakan runner CI Anda | [Cloud sessions](https://code.claude.com/docs/id/claude-code-on-the-web.md) mengabaikan `dontAsk` dari file pengaturan |

permissions.md +1 −1

Details

743 743 

744Gunakan keduanya untuk pertahanan berlapis, karena pembatasan sandbox masih berlaku bahkan jika injeksi prompt melewati pengambilan keputusan Claude. Jalur dan domain dari pengaturan sandbox dan aturan izin [digabungkan ke dalam konfigurasi sandbox akhir](https://code.claude.com/docs/id/sandboxing.md#permission-rules).744Gunakan keduanya untuk pertahanan berlapis, karena pembatasan sandbox masih berlaku bahkan jika injeksi prompt melewati pengambilan keputusan Claude. Jalur dan domain dari pengaturan sandbox dan aturan izin [digabungkan ke dalam konfigurasi sandbox akhir](https://code.claude.com/docs/id/sandboxing.md#permission-rules).

745 745 

746Ketika Anda mengaktifkan sandboxing dan membiarkan `autoAllowBashIfSandboxed` pada default `true`, perintah Bash yang di-sandbox berjalan tanpa meminta bahkan jika izin Anda mencakup aturan ask `Bash` biasa, atau [bentuk setara `Bash(*)`](#match-all-uses-of-a-tool): batas sandbox menggantikan prompt seluruh alat tersebut.746Ketika Anda mengaktifkan sandboxing dan menyetel [`sandbox.autoAllowBashIfSandboxed`](https://code.claude.com/docs/id/settings-reference#sandbox-autoallowbashifsandboxed) ke `true`, perintah Bash yang di-sandbox berjalan tanpa meminta izin. Hal ini tetap berlaku bahkan dengan aturan ask `Bash` biasa atau [bentuk setara `Bash(*)`](#match-all-uses-of-a-tool): batas sandbox menggantikan permintaan izin untuk seluruh tool tersebut.

747 747 

748Dalam [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode), Claude Code melewati substitusi ini. Tanpa aturan ask, [perintah read-only bawaan](#read-only-commands) masih berjalan tanpa meminta izin, dan perintah shell lainnya melalui alur izin reguler sementara Anda masih merencanakan; lihat [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) untuk bagaimana Claude Code membatasi perintah di sana. Dengan aturan ask `Bash` biasa, setiap perintah Bash meminta izin, termasuk perintah read-only yang di-sandbox, sama seperti di luar sandboxing.748Dalam [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode), Claude Code melewati substitusi ini. Tanpa aturan ask, [perintah read-only bawaan](#read-only-commands) masih berjalan tanpa meminta izin, dan perintah shell lainnya melalui alur izin reguler sementara Anda masih merencanakan; lihat [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) untuk bagaimana Claude Code membatasi perintah di sana. Dengan aturan ask `Bash` biasa, setiap perintah Bash meminta izin, termasuk perintah read-only yang di-sandbox, sama seperti di luar sandboxing.

749 749 

Details

438 438 

439* **Field `backdrop`**: `scene` adalah [nama](https://code.claude.com/docs/id/plugins/mods/reference.md#limits) yang Anda pilih untuk latar belakang yang digambar oleh hook Anda. Untuk field lainnya dan `overrideColorScheme`, lihat [tipe untuk build Anda](https://code.claude.com/docs/id/plugins/mods/create.md#get-the-types-for-your-build).439* **Field `backdrop`**: `scene` adalah [nama](https://code.claude.com/docs/id/plugins/mods/reference.md#limits) yang Anda pilih untuk latar belakang yang digambar oleh hook Anda. Untuk field lainnya dan `overrideColorScheme`, lihat [tipe untuk build Anda](https://code.claude.com/docs/id/plugins/mods/create.md#get-the-types-for-your-build).

440* **Apakah latar belakang digambar**: `$.theme.set` di-resolve dengan `isDrawn: true` ketika aplikasi Desktop atau seluler yang terhubung ke sesi menyatakan bahwa aplikasi tersebut menggambar latar belakang. Jika tidak, `isDrawn` bernilai `false` dan `reason` menjelaskan alasannya.440* **Apakah latar belakang digambar**: `$.theme.set` di-resolve dengan `isDrawn: true` ketika aplikasi Desktop atau seluler yang terhubung ke sesi menyatakan bahwa aplikasi tersebut menggambar latar belakang. Jika tidak, `isDrawn` bernilai `false` dan `reason` menjelaskan alasannya.

441* **Satu latar belakang untuk setiap sesi**: panggilan `$.theme.set` menggantikan latar belakang sesi dan `$.theme.clear()` menghapus latar belakang tersebut, mod mana pun yang memasangnya. Panggil `$.theme.clear()` hanya ketika pengguna memintanya.441* **Satu tema untuk setiap sesi**: mod yang memanggil `$.theme.set` menggantikan latar belakang dan [warna](#change-the-colors-of-the-desktop-app) sesi, dan mod yang memanggil `$.theme.clear()` menghapusnya, mod mana pun yang memasangnya. Panggil `$.theme.clear()` hanya ketika pengguna memintanya.

442 

443### Mengubah warna aplikasi Desktop

444 

445Untuk mengubah warna tab Code di aplikasi Desktop dengan sebuah mod, [minta Claude membuatkannya](#ask-claude-for-a-colors-mod) atau [tulis sendiri](#write-a-colors-mod-yourself). Kedua cara tersebut memerlukan Claude Code v2.1.324 atau lebih baru di tab Code, jadi [periksa versinya di sana](https://code.claude.com/docs/id/desktop.md#claude-code-version-in-the-code-tab) terlebih dahulu. Claude Code di terminal tetap menggunakan warnanya sendiri.

446 

447#### Meminta Claude membuatkan mod warna

448 

449**1. Jelaskan warnanya**

450 

451Mulai sesi lokal di tab Code dan beri tahu Claude warna yang Anda inginkan. Misalnya, masukkan `make a mod that makes the app cream in light mode and dark brown in dark mode`. Claude menulis file-file mod tersebut.

452 

453**2. Setujui mod**

454 

455Jawab pertanyaan yang diajukan Claude Code tentang file-file mod dan hot reloading. Untuk fungsi setiap jawaban, lihat [Meminta Claude membuatkan mod](https://code.claude.com/docs/id/plugins/mods/create.md#ask-claude-for-a-mod).

456 

457**3. Periksa warnanya**

458 

459Tab Code berubah warna ketika mod dimuat. Untuk menyesuaikan sebuah warna, beri tahu Claude apa yang perlu diubah. Jika tidak ada yang berubah, lihat [Memperbaiki warna mod yang tidak muncul](#fix-missing-mod-colors-in-the-desktop-app).

460 

461#### Menulis mod warna sendiri

462 

463`makeColors` adalah fungsi yang membangun tema dari beberapa warna hex. Langkah-langkah berikut membuat mod bernama `paper` yang menggunakannya.

464 

465**1. Minta Claude menyalin makeColors**

466 

467Mulai sesi lokal di tab Code, dan masukkan `copy make-colors.js and make-colors.d.ts from your plugin-authoring skill into ~/.claude/skills/paper/hooks/`. Periksa bahwa kedua file tersebut ada di direktori itu.

468 

469**2. Simpan manifest dan hooks.json**

470 

471Dari [Menulis mod sendiri](https://code.claude.com/docs/id/plugins/mods/create.md#write-a-mod-yourself), simpan `.claude-plugin/plugin.json` dan `hooks/hooks.json` di `~/.claude/skills/paper/`, dan ubah `first-mod` menjadi `paper` di kedua file tersebut. Mod [di bawah `~/.claude/skills/`](https://code.claude.com/docs/id/plugins/create#scaffold-a-plugin-that-loads-every-session) dimuat saat Anda memulai sesi.

472 

473**3. Tulis kodenya**

474 

475Simpan file ini sebagai `~/.claude/skills/paper/hooks/register.js`. Saat sesi dimulai, kode ini memanggil `$.theme.set` dengan warna untuk mode terang dan mode gelap:

476 

477```javascript theme={null}

478import { makeColors } from './make-colors.js'

479 

480const { theme } = makeColors({

481 label: 'Paper',

482 // surface-0 is the background, text-primary is the main text, and text-muted is the faint text

483 light: {

484 gray: { anchors: { 'surface-0': '#efe6d3', 'text-primary': '#2a241d', 'text-muted': '#6a5f50' } },

485 },

486 dark: {

487 gray: { anchors: { 'surface-0': '#1f1a15', 'text-primary': '#f0e7d7', 'text-muted': '#aca08d' } },

488 },

489})

490 

491export function register(on) {

492 on('session.start', async ($, e, next) => {

493 await $.theme.set({ colors: theme })

494 return next(e)

495 })

496}

497```

498 

499Untuk menggunakan warna Anda sendiri, ganti nilai hex dengan warna hex enam digit lainnya.

500 

501**4. Periksa warnanya**

502 

503Mulai sesi lokal baru di tab Code. Dengan nilai dari contoh ini, latar belakangnya berwarna krem dalam mode terang dan cokelat tua dalam mode gelap. Jika tidak ada yang berubah, lihat [Memperbaiki warna mod yang tidak muncul](#fix-missing-mod-colors-in-the-desktop-app).

504 

505### Memperbaiki warna mod yang tidak muncul di aplikasi Desktop

506 

507Jika Anda menggunakan [penyedia pihak ketiga](https://code.claude.com/docs/id/third-party-integrations.md) alih-alih akun Claude di [Claude Desktop v5.11492.5 atau lebih lama](https://code.claude.com/docs/id/desktop.md#check-your-version), tab Code tetap menggunakan warnanya sendiri, jadi lewati pemeriksaan ini. Selain itu, jika warna sebuah mod tidak muncul di tab Code, atau jika warnanya menghilang, periksa penyebab berikut:

508 

509* **Versi lama**: [perbarui aplikasi Desktop](https://code.claude.com/docs/id/desktop.md#claude-code-version-in-the-code-tab), mulai ulang aplikasi, dan mulai sesi lokal baru di tab Code. Jika Claude yang menulis mod tersebut, minta lagi di sana.

510* **Mod tidak dimuat**: jika Claude yang menulis mod tersebut, lihat kapan mod dimuat di [Meminta Claude membuatkan mod](https://code.claude.com/docs/id/plugins/mods/create.md#ask-claude-for-a-mod). Jika Anda yang menulisnya, bandingkan file-file Anda dan path-nya dengan [Menulis mod warna sendiri](#write-a-colors-mod-yourself).

511* **Tema ditolak**: minta Claude menjalankan panggilan [`makeColors`](#write-a-colors-mod-yourself) milik mod. Jika panggilan tersebut memunculkan error, atau daftar `problems`-nya memiliki entri yang diawali dengan `Desktop won't paint this theme`, minta Claude memperbaiki tema tersebut. Jika Anda menginstal mod tersebut, kirimkan temuan Claude kepada pembuatnya.

512* **Panggilan `$.theme` lain**: ketika mod mana pun dalam sesi memanggil `$.theme.set` atau `$.theme.clear()`, warna dan [latar belakang](#put-a-backdrop-behind-the-conversation) dari panggilan sebelumnya menghilang. Dalam mod Anda sendiri, berikan `colors` dan `backdrop` dalam panggilan `$.theme.set` yang sama. Gunakan hanya satu mod yang menetapkan tema pada satu waktu.

513 

514### Menghapus warna mod dari aplikasi Desktop

515 

516Untuk melepas warna sebuah mod dari tab Code, matikan mod tersebut terlebih dahulu. Mod yang masih aktif dapat menetapkan warnanya lagi.

517 

518**1. Matikan mod**

519 

520* **Claude yang menulis mod tersebut**: pindahkan direktorinya keluar dari [folder mod](https://code.claude.com/docs/id/plugins/mods/create.md#ask-claude-for-a-mod) sesi tempat Claude menulisnya.

521* **Anda meletakkan mod di bawah `~/.claude/skills/`**: pindahkan direktorinya, seperti `~/.claude/skills/paper/`, ke tempat di luar `~/.claude/skills/`.

522* **Anda menginstal mod tersebut**: di aplikasi Desktop, [nonaktifkan atau hapus instalan plugin-nya](https://code.claude.com/docs/id/desktop.md#install-plugins) dari **Manage plugins**. Jika Anda tidak melihat **Manage plugins** dan Anda memiliki [CLI](https://code.claude.com/docs/id/quickstart.md), Anda dapat [menonaktifkan atau menghapus instalan plugin marketplace dari shell Anda](https://code.claude.com/docs/id/plugins/install.md#manage-plugins-from-your-shell).

523 

524**2. Mulai sesi baru**

525 

526Mulai sesi lokal baru di tab Code.

527 

528**3. Hapus warna yang tetap ada**

529 

530Jika warnanya masih ada, buka **Settings** dari tab Code, dan cari `code appearance` di sana. Buka hasilnya, lalu pilih **Remove colors**.

442 531 

443## Bangun pohon dari elemen532## Bangun pohon dari elemen

444 533 


677 766 

678Kunci yang sama, atau dalam rendering layar penuh sebuah klik pada baris tersebut, membentangkan pita kembali. Sampai saat itu, tidak ada yang menekan tombol di dalamnya: tidak ada pintasan keyboard, tidak ada digit yang diketik ke prompt kosong, dan tidak ada pintasan keyboard untuk [`action`](https://code.claude.com/docs/id/plugins/mods/reference#elements) sebuah tombol. Jika pita memiliki fokus keyboard saat pengguna menciutkannya, fokus kembali ke prompt, dan Ctrl+X kemudian Tab melewati pita selama pita diciutkan.767Kunci yang sama, atau dalam rendering layar penuh sebuah klik pada baris tersebut, membentangkan pita kembali. Sampai saat itu, tidak ada yang menekan tombol di dalamnya: tidak ada pintasan keyboard, tidak ada digit yang diketik ke prompt kosong, dan tidak ada pintasan keyboard untuk [`action`](https://code.claude.com/docs/id/plugins/mods/reference#elements) sebuah tombol. Jika pita memiliki fokus keyboard saat pengguna menciutkannya, fokus kembali ke prompt, dan Ctrl+X kemudian Tab melewati pita selama pita diciutkan.

679 768 

680Pita tetap diciutkan sampai pengguna membentangkannya, bahkan setelah `/clear`, dan dibentangkan kembali saat Claude Code dimulai berikutnya. Mod Anda tidak dapat membentangkannya atau mengetahui bahwa pita sedang diciutkan: hook `ui.render` tetap berjalan, dan tidak ada apa pun dalam `e.props` yang menunjukkannya. Jangan jadikan pita sebagai satu-satunya tempat mod Anda menampilkan sesuatu yang harus dijawab pengguna.769Pita tetap diciutkan sampai pengguna membentangkannya, bahkan setelah `/clear`, dan dibentangkan kembali saat Claude Code dimulai berikutnya. Mod Anda tidak dapat membentangkannya. Jangan jadikan pita sebagai satu-satunya tempat mod Anda menampilkan sesuatu yang harus dijawab pengguna. Untuk menampilkannya di tempat lain hanya selama pita diciutkan, baca `e.props.isCollapsed` dalam hook `ui.render` Anda, yang tetap berjalan. `isCollapsed` memerlukan Claude Code v2.1.321 atau yang lebih baru.

681 770 

682### Ambil input yang diketik dan gambar baris untuk setiap item771### Ambil input yang diketik dan gambar baris untuk setiap item

683 772 

Details

212 212 

213Beberapa event ini juga dipicu untuk tindakan Claude Code sendiri, jadi periksa apakah `next.origin.plugin` bernilai `engine` sebelum Anda menolak salah satunya.213Beberapa event ini juga dipicu untuk tindakan Claude Code sendiri, jadi periksa apakah `next.origin.plugin` bernilai `engine` sebelum Anda menolak salah satunya.

214 214 

215#### Field pada permintaan `http.fetch` milik Claude Code sendiri

216 

217Dalam hook `http.fetch`, [`next.origin`](#the-hook-function) bernilai `{ plugin: 'engine', tier: 'core' }` menandai salah satu permintaan milik Claude Code sendiri, seperti permintaan model, bukan panggilan `$.http.fetch` dari mod. Di tempat [penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#know-what-happens-by-default) dimuat, hook Anda tidak menerima event ini kecuali mod Anda [terhitung sebagai milik organisasi Anda](https://code.claude.com/docs/id/plugins/mods/admin.md#install-your-organizations-mods).

218 

219Pada event ini, `e.init` dan `value` yang menjadi hasil resolve `next(e)` dapat memuat field berikut, di antara field lainnya:

220 

221| Field | Artinya |

222| :- | :- |

223| `e.init.compress` | Diatur saat Claude Code mengompresi body setelah hook Anda. `e.init.body` memuat body yang belum dikompresi. Untuk mengirim body tanpa kompresi, panggil `next({ ...e, init: { ...e.init, compress: undefined } })`. |

224| `value.isStreaming` | Diatur ke `true` karena Claude Code membaca body respons sendiri, sehingga `value.text` kosong. Baca `value.status` dan `value.headers` sebagai gantinya. Untuk menjawab dengan `text` Anda sendiri, kembalikan `value` tanpa `isStreaming`. |

225 

226Event dan field ini memerlukan Claude Code v2.1.321 atau yang lebih baru.

227 

215## Metode API mod228## Metode API mod

216 229 

217API mod adalah argumen `$` yang diterima setiap hook. Metodenya dikelompokkan dalam namespace, seperti `$.ui`. Tabel ini mencantumkan metode setiap namespace berdasarkan nama, sehingga `open` pada baris `$.ui` adalah panggilan `$.ui.open(...)`. Panduan menunjukkan penggunaan metode yang umum, dan [types untuk build Anda](https://code.claude.com/docs/id/plugins/mods/create.md#get-the-types-for-your-build) mendokumentasikan setiap metode beserta contohnya.230API mod adalah argumen `$` yang diterima setiap hook. Metodenya dikelompokkan dalam namespace, seperti `$.ui`. Tabel ini mencantumkan metode setiap namespace berdasarkan nama, sehingga `open` pada baris `$.ui` adalah panggilan `$.ui.open(...)`. Panduan menunjukkan penggunaan metode yang umum, dan [types untuk build Anda](https://code.claude.com/docs/id/plugins/mods/create.md#get-the-types-for-your-build) mendokumentasikan setiap metode beserta contohnya.


222| [`$.ui`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, [`place`](https://code.claude.com/docs/id/plugins/mods/interface#place-a-row-in-the-transcript), `focus`, `scroll`, `toast`, `notify`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit`, `view`. `view` memerlukan Claude Code v2.1.300 atau yang lebih baru dan `place` memerlukan v2.1.314 atau yang lebih baru. |235| [`$.ui`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `resolve`, `invalidate`, `open`, `close`, `panes`, [`place`](https://code.claude.com/docs/id/plugins/mods/interface#place-a-row-in-the-transcript), `focus`, `scroll`, `toast`, `notify`, `status`, `log`, `notice`, `ask`, `copy`, `selection`, `blit`, `view`. `view` memerlukan Claude Code v2.1.300 atau yang lebih baru dan `place` memerlukan v2.1.314 atau yang lebih baru. |

223| [`$.theme`](https://code.claude.com/docs/id/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `set`, `clear`: mengatur latar belakang (backdrop) untuk digambar oleh aplikasi Desktop atau seluler, dan menghapus latar belakang tersebut. Memerlukan Claude Code v2.1.319 atau yang lebih baru. |236| [`$.theme`](https://code.claude.com/docs/id/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `set`, `clear`: mengatur latar belakang (backdrop) untuk digambar oleh aplikasi Desktop atau seluler, dan menghapus latar belakang tersebut. Memerlukan Claude Code v2.1.319 atau yang lebih baru. |

224| [`$.command`](https://code.claude.com/docs/id/plugins/mods/api#add-a-command) | `register`, `run`, `list` |237| [`$.command`](https://code.claude.com/docs/id/plugins/mods/api#add-a-command) | `register`, `run`, `list` |

225| [`$.tool`](https://code.claude.com/docs/id/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list` |238| [`$.tool`](https://code.claude.com/docs/id/plugins/mods/api#add-a-tool) | `register`, `call`, `check`, `list`. Saat sebuah `call` memerlukan persetujuan seseorang, seperti panggilan yang dijawab oleh hook atau organisasi Anda dengan `ask`, panggilan tersebut di-resolve dengan `{ deny: "<tool> wasn't run: this call needs a person's approval, and a mod's own call can't ask for it." }`, di mana `<tool>` adalah nama tool tersebut. |

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

227| [`$.model`](https://code.claude.com/docs/id/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |240| [`$.model`](https://code.claude.com/docs/id/plugins/mods/api#call-a-model) | `complete`, `fork`, `classify` |

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


250| Titik | `e.props` | `e.requestId` | Dirender di |263| Titik | `e.props` | `e.requestId` | Dirender di |

251| :- | :- | :- | :- |264| :- | :- | :- | :- |

252| [`Pane`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | `id` panel | Terminal, Desktop, VS Code |265| [`Pane`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `title`, `isFocused`, `bodyColumns`, `placement`, `scroll`, `view` | `id` panel | Terminal, Desktop, VS Code |

253| [`AbovePrompt`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Satu instans | Terminal, Desktop |266| [`AbovePrompt`](https://code.claude.com/docs/id/plugins/mods/interface#pick-where-to-draw) | `hasSurvey`, [`isCollapsed`](https://code.claude.com/docs/id/plugins/mods/interface#when-the-user-collapses-the-band), `isWorking`, `maxRows`, `bodyColumns`, `scroll`, `view` | Satu instans | Terminal, Desktop |

254| `AbovePromptList`, tumpukan baris `AbovePrompt` | `rows`, sebuah daftar dengan satu `{ plugin, tree }` untuk baris setiap mod, ditambah prop `AbovePrompt` | Satu instans | Terminal, Desktop. Memerlukan Claude Code v2.1.323 atau lebih baru. |267| `AbovePromptList`, tumpukan baris `AbovePrompt` | `rows`, sebuah daftar dengan satu `{ plugin, tree }` untuk baris setiap mod, ditambah prop `AbovePrompt` | Satu instans | Terminal, Desktop. Memerlukan Claude Code v2.1.323 atau lebih baru. |

255| [`Placed`](https://code.claude.com/docs/id/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | `requestId` yang dikembalikan oleh `$.ui.place` | Terminal |268| [`Placed`](https://code.claude.com/docs/id/plugins/mods/interface#place-a-row-in-the-transcript) | `id`, `plugin`, `onScreen` | `requestId` yang dikembalikan oleh `$.ui.place` | Terminal |

256| [`Backdrop`](https://code.claude.com/docs/id/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `scene`, `plugin`, `glass`, `overrideColorScheme`. Sebelum v2.1.323, `scene` adalah `id` dan `overrideColorScheme` adalah `colorScheme`. | `backdrop` | Surface `desktop` dan `mobile`. Hook Anda berjalan saat aplikasi Desktop atau aplikasi seluler meminta untuk menggambar backdrop. |269| [`Backdrop`](https://code.claude.com/docs/id/plugins/mods/interface#put-a-backdrop-behind-the-conversation) | `scene`, `plugin`, `glass`, `overrideColorScheme`. Sebelum v2.1.323, `scene` adalah `id` dan `overrideColorScheme` adalah `colorScheme`. | `backdrop` | Surface `desktop` dan `mobile`. Hook Anda berjalan saat aplikasi Desktop atau aplikasi seluler meminta untuk menggambar backdrop. |


426| Nama | Lokasi | Fungsinya |439| Nama | Lokasi | Fungsinya |

427| :- | :- | :- |440| :- | :- | :- |

428| `CLAUDE_CODE_PLUGIN_DIRS` | Environment, atau `env` di `~/.claude/settings.json` | Direktori plugin yang dimuat seperti `--plugin-dir`, untuk aplikasi yang tidak dapat Anda berikan flag. Path absolut yang dipisahkan oleh `:`, atau `;` di Windows. |441| `CLAUDE_CODE_PLUGIN_DIRS` | Environment, atau `env` di `~/.claude/settings.json` | Direktori plugin yang dimuat seperti `--plugin-dir`, untuk aplikasi yang tidak dapat Anda berikan flag. Path absolut yang dipisahkan oleh `:`, atau `;` di Windows. |

429| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Environment | `1` membuat sesi non-interaktif yang berjalan lama memuat ulang mod `--plugin-dir` saat disimpan |442| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Environment | Apakah mod dimuat ulang saat disimpan. Lihat [referensi environment variable](https://code.claude.com/docs/id/env-vars.md) untuk nilai default dan nilai yang tersedia |

430| `prependPlugins`, `appendPlugins` | Pengaturan terkelola. Pengaturan pengguna hanya pada mesin tanpa pengaturan terkelola atau file [`managed-mcp.json`](https://code.claude.com/docs/id/managed-mcp#deploy-managed-mcp-json), dalam sesi yang kredensialnya bukan `/login` Team atau Enterprise. | Daftar id plugin, seperti `acme-guard@acme-tools`. Mod di `prependPlugins` berjalan sebelum setiap mod yang diinstal pengguna, dan mod di `appendPlugins` berjalan setelahnya, sesuai urutan yang tercantum. Lihat [Urutan mod dijalankan](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in). |443| `prependPlugins`, `appendPlugins` | Pengaturan terkelola. Pengaturan pengguna hanya pada mesin tanpa pengaturan terkelola atau file [`managed-mcp.json`](https://code.claude.com/docs/id/managed-mcp#deploy-managed-mcp-json), dalam sesi yang kredensialnya bukan `/login` Team atau Enterprise. | Daftar id plugin, seperti `acme-guard@acme-tools`. Mod di `prependPlugins` berjalan sebelum setiap mod yang diinstal pengguna, dan mod di `appendPlugins` berjalan setelahnya, sesuai urutan yang tercantum. Lihat [Urutan mod dijalankan](https://code.claude.com/docs/id/plugins/mods/events.md#the-order-mods-run-in). |

431| `allowManagedModsOnly` | Pengaturan terkelola, sebagai [opsi pada penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Hanya mod yang [terhitung sebagai milik organisasi Anda](https://code.claude.com/docs/id/plugins/mods/admin.md#install-your-organizations-mods), dan mod bawaan Claude Code, yang menjalankan hook-nya. Hook pengaturan pengguna tetap berjalan. |444| `allowManagedModsOnly` | Pengaturan terkelola, sebagai [opsi pada penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Hanya mod yang [terhitung sebagai milik organisasi Anda](https://code.claude.com/docs/id/plugins/mods/admin.md#install-your-organizations-mods), dan mod bawaan Claude Code, yang menjalankan hook-nya. Hook pengaturan pengguna tetap berjalan. |

432| `allowModsToOverrideDenyRules` | Pengaturan terkelola, sebagai [opsi pada penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Mengizinkan mod yang diinstal pengguna menyetujui panggilan tool melewati sebagian besar [hasil yang tetap berlaku secara default](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods), termasuk aturan `deny` |445| `allowModsToOverrideDenyRules` | Pengaturan terkelola, sebagai [opsi pada penjaga bawaan](https://code.claude.com/docs/id/plugins/mods/admin.md#set-options-on-the-built-in-guard) | Mengizinkan mod yang diinstal pengguna menyetujui panggilan tool melewati sebagian besar [hasil yang tetap berlaku secara default](https://code.claude.com/docs/id/permissions.md#precedence-among-rules-hooks-and-mods), termasuk aturan `deny` |

Details

115 115 

116### Mengikuti aturan test kit116### Mengikuti aturan test kit

117 117 

118Test kit memiliki beberapa aturan tersendiri, dan melanggar salah satunya menghasilkan error yang pertama kali dijumpai oleh penulis pengujian baru:

119 

120* **Daftarkan setiap stub sebelum panggilan pertama pengujian pada `$`.** Memanggil `on` setelah itu akan melempar error seperti `on("ui.render") after the test first called $`.118* **Daftarkan setiap stub sebelum panggilan pertama pengujian pada `$`.** Memanggil `on` setelah itu akan melempar error seperti `on("ui.render") after the test first called $`.

121 119 

122* **[`session.start`](https://code.claude.com/docs/id/plugins/mods/reference#session) tidak berjalan dengan sendirinya.** Setiap pengujian dimulai dengan modul Anda yang baru dimuat dan belum ada hook-nya yang dipanggil, sehingga variabel tingkat modul menyimpan nilai awalnya. Jika sebuah hook bergantung pada apa yang disiapkan oleh `session.start`, picu terlebih dahulu:120* **[`session.start`](https://code.claude.com/docs/id/plugins/mods/reference#session) tidak berjalan dengan sendirinya.** Setiap pengujian dimulai dengan modul Anda yang baru dimuat dan belum ada hook-nya yang dipanggil, sehingga variabel tingkat modul menyimpan nilai awalnya. Jika sebuah hook bergantung pada apa yang disiapkan oleh `session.start`, picu terlebih dahulu:


132 130 

133 Stub kedua menjawab panggilan `$.command.register` yang dilakukan oleh hook `session.start` seperti milik [tutorial](https://code.claude.com/docs/id/plugins/mods/create.md#write-a-mod-yourself). Tanpanya, panggilan tersebut ditolak dengan `no implementation for command.register` dan kit melewati hook Anda, sehingga tidak ada apa pun setelah panggilan tersebut di dalam hook yang berjalan. Pengujian tidak gagal pada titik itu. Hook yang dilewati dicantumkan di bawah `the engine reported:` hanya jika pemeriksaan berikutnya gagal.131 Stub kedua menjawab panggilan `$.command.register` yang dilakukan oleh hook `session.start` seperti milik [tutorial](https://code.claude.com/docs/id/plugins/mods/create.md#write-a-mod-yourself). Tanpanya, panggilan tersebut ditolak dengan `no implementation for command.register` dan kit melewati hook Anda, sehingga tidak ada apa pun setelah panggilan tersebut di dalam hook yang berjalan. Pengujian tidak gagal pada titik itu. Hook yang dilewati dicantumkan di bawah `the engine reported:` hanya jika pemeriksaan berikutnya gagal.

134 132 

135* **Hook yang mengembalikan `next(e)` memerlukan stub untuk menjawab.** Ketika hook [`ui.render`](https://code.claude.com/docs/id/plugins/mods/reference#interface) Anda mengembalikan `next(e)`, misalnya untuk tidak menggambar apa pun saat Claude sedang idle, [memasangnya](#test-a-drawing) gagal dengan `no implementation for ui.render`. Daftarkan stub yang mengembalikan sebuah elemen sebagai data polos:133* **Daftarkan stub `ui.render` untuk memilih apa yang dikembalikan `next(e)`.** Ketika hook [`ui.render`](https://code.claude.com/docs/id/plugins/mods/reference#interface) Anda mengembalikan `next(e)`, misalnya untuk tidak menggambar apa pun saat Claude sedang idle, [pemasangan](#test-a-drawing) berhasil tanpa stub. Agar `next(e)` mengembalikan elemen yang Anda pilih, daftarkan stub yang mengembalikannya sebagai data polos:

136 134 

137 ```typescript theme={null}135 ```typescript theme={null}

138 // Stands for what Claude Code would draw at the site136 // Stands for what Claude Code would draw at the site

139 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))137 on('ui.render', () => ({ type: 'Text', props: {}, children: ['drawn by Claude Code'] }))

140 ```138 ```

141 139 

142 Dengan stub terdaftar, pemasangan berhasil, dan `ui.find({ type: 'Text' })` mengembalikan elemen tersebut setiap kali hook Anda mengembalikan `next(e)`. Pada v2.1.323 atau yang lebih baru, untuk band, berikan nama mod Anda sebagai argumen kedua untuk `on`, seperti dalam `{ plugin: 'my-mod' }`. Tanpanya, stub tidak menjawab `next(e)` Anda.140 Di tempat situs tersebut [dapat menggambar elemen itu](https://code.claude.com/docs/id/plugins/mods/interface.md#change-what-claude-code-already-draws), `ui.find({ type: 'Text' })` mengembalikannya ketika hook Anda mengembalikan `next(e)`. Pada v2.1.323 atau yang lebih baru, untuk band, berikan nama mod Anda sebagai argumen kedua untuk `on`, seperti dalam `{ plugin: 'my-mod' }`. Tanpanya, stub tidak menjawab `next(e)` Anda. Sebelum v2.1.321, pemasangan gagal dengan `no implementation for ui.render` kecuali Anda mendaftarkan stub tersebut.

143 141 

144* **Stub untuk `turn.step` adalah async generator**, dan pengujian membaca stream hingga akhir untuk mendapatkan hasilnya:142* **Stub untuk `turn.step` adalah async generator**, dan pengujian membaca stream hingga akhir untuk mendapatkan hasilnya:

145 143 


316| `press({ key: 'more' })` | Menekan `Button` dengan kunci itu |314| `press({ key: 'more' })` | Menekan `Button` dengan kunci itu |

317| `input({ key: 'new-note', text: 'buy milk' })` | Mengetik teks ke `Input` dengan kunci itu dan menekan Enter. Tambahkan `kind: 'change'` untuk mengetik tanpa mengirimkan. Untuk field dengan `rows`, teks dapat memuat `\n`. |315| `input({ key: 'new-note', text: 'buy milk' })` | Mengetik teks ke `Input` dengan kunci itu dan menekan Enter. Tambahkan `kind: 'change'` untuk mengetik tanpa mengirimkan. Untuk field dengan `rows`, teks dapat memuat `\n`. |

318| `select({ key: 'size', value: 'large' })` | Memilih opsi dengan nilai itu dalam `Select` dengan kunci itu |316| `select({ key: 'size', value: 'large' })` | Memilih opsi dengan nilai itu dalam `Select` dengan kunci itu |

317| `keepsBeneath()` | Dalam tes tanpa stub `ui.render`, metode ini di-resolve ke `true` ketika gambar menyertakan apa yang dikembalikan `next(e)`, dan `false` ketika hook Anda menghilangkannya. Dalam tes yang mendaftarkan stub tersebut, gunakan `find` untuk mencari apa yang digambar stub. Memerlukan Claude Code v2.1.321 atau yang lebih baru. |

319| `find({ key: 'more' })` atau `find({ type: 'Text', text: 'Count: 2' })` | Mengembalikan elemen pertama yang cocok sebagai `{ type, props, children }`, atau `undefined`. `text` dapat berupa string atau ekspresi reguler. |318| `find({ key: 'more' })` atau `find({ type: 'Text', text: 'Count: 2' })` | Mengembalikan elemen pertama yang cocok sebagai `{ type, props, children }`, atau `undefined`. `text` dapat berupa string atau ekspresi reguler. |

320| `unmount()` | Menghapus gambar |319| `unmount()` | Menghapus gambar |

321 320 

Details

41 41 

42| Anda ingin | Mulai dengan |42| Anda ingin | Mulai dengan |

43| :- | :- |43| :- | :- |

44| Mengurangi prompt izin selama pekerjaan sehari-hari di mesin Anda sendiri | [Sandboxed Bash tool](https://code.claude.com/docs/id/sandboxing.md), dikonfigurasi dengan `/sandbox` |44| Mengurangi permintaan izin selama pekerjaan sehari-hari di mesin Anda sendiri | [Sandboxed Bash tool](https://code.claude.com/docs/id/sandboxing.md) dalam mode auto-allow, dikonfigurasi dengan `/sandbox` |

45| Biarkan Claude bekerja tanpa pengawasan dengan `--dangerously-skip-permissions` atau mode otomatis | [Dev container](https://code.claude.com/docs/id/devcontainer.md) yang telah dikonfigurasi sebelumnya, container atau VM apa pun, atau [sandbox runtime](#sandbox-runtime) |45| Biarkan Claude bekerja tanpa pengawasan dengan `--dangerously-skip-permissions` atau mode otomatis | [Dev container](https://code.claude.com/docs/id/devcontainer.md) yang telah dikonfigurasi sebelumnya, container atau VM apa pun, atau [sandbox runtime](#sandbox-runtime) |

46| Isolasi server MCP dan hooks serta Bash, tanpa Docker | Runtime sandbox |46| Isolasi server MCP dan hooks serta Bash, tanpa Docker | Runtime sandbox |

47| Standardisasi lingkungan bersandbox di seluruh tim | [Dev container](https://code.claude.com/docs/id/devcontainer.md) yang telah dikonfigurasi sebelumnya, disalin ke repositori Anda |47| Standardisasi lingkungan bersandbox di seluruh tim | [Dev container](https://code.claude.com/docs/id/devcontainer.md) yang telah dikonfigurasi sebelumnya, disalin ke repositori Anda |

sandboxing.md +4 −7

Details

6 6 

7> Batasi file dan host jaringan yang dapat dijangkau oleh perintah shell Claude Code dengan sandbox bawaan. Aktifkan, tetapkan batasnya, dan perbaiki hal-hal yang terganggu olehnya.7> Batasi file dan host jaringan yang dapat dijangkau oleh perintah shell Claude Code dengan sandbox bawaan. Aktifkan, tetapkan batasnya, dan perbaiki hal-hal yang terganggu olehnya.

8 8 

9Sandbox Bash adalah batas yang diterapkan oleh sistem operasi di sekitar perintah shell yang dijalankan Claude di mesin Anda. Anda menetapkan file dan domain jaringan mana yang dapat dijangkau oleh perintah tersebut, dan batasan tersebut berlaku untuk perintah Bash, PowerShell, dan Monitor serta proses yang dimulainya. Karena sistem operasi menerapkan batasan tersebut saat perintah berjalan, Claude Code dapat [menjalankan perintah dalam sandbox tanpa meminta Anda](#sandbox-modes) untuk menyetujui setiap perintah.9Sandbox Bash adalah batas yang diterapkan oleh sistem operasi di sekitar perintah shell yang dijalankan Claude di mesin Anda. Anda menetapkan file dan domain jaringan mana yang dapat dijangkau oleh perintah tersebut, dan batasan tersebut berlaku untuk perintah Bash, PowerShell, dan Monitor serta proses yang dimulainya. Perintah dalam sandbox tetap melalui alur izin biasa kecuali jika Anda memilih [mode auto-allow](#sandbox-modes), yang dapat menjalankannya tanpa meminta persetujuan Anda.

10 10 

11Sandbox hanya mencakup perintah shell. Tool file Claude, server MCP, dan hook [berjalan di luarnya](#what-runs-outside-the-sandbox).11Sandbox hanya mencakup perintah shell. Tool file Claude, server MCP, dan hook [berjalan di luarnya](#what-runs-outside-the-sandbox).

12 12 


394| Entri `deny` dan `mask` `credentials.envVars` | Diberlakukan. Pembersihan environment variable tidak bergantung pada lapisan filesystem |394| Entri `deny` dan `mask` `credentials.envVars` | Diberlakukan. Pembersihan environment variable tidak bergantung pada lapisan filesystem |

395| [Entri `mask` `credentials.files`](#mask-credential-files) yang diterapkan sebagai mask | Diberlakukan: masking tidak bergantung pada lapisan filesystem. Entri yang [mengalami fallback ke `deny`](#mask-credential-files) tidak diberlakukan, seperti entri `deny` lainnya |395| [Entri `mask` `credentials.files`](#mask-credential-files) yang diterapkan sebagai mask | Diberlakukan: masking tidak bergantung pada lapisan filesystem. Entri yang [mengalami fallback ke `deny`](#mask-credential-files) tidak diberlakukan, seperti entri `deny` lainnya |

396 396 

397Dua hal lain berubah:397Perintah sandbox juga mewarisi `$TMPDIR` shell Anda alih-alih direktori temp per pengguna, karena setiap direktori temp dapat ditulis dan Claude Code tidak lagi mengarahkan perintah ke direktori per pengguna.

398 398 

399* Perintah sandbox mewarisi `$TMPDIR` shell Anda alih-alih direktori temp per pengguna, karena setiap direktori temp dapat ditulis dan Claude Code tidak lagi mengarahkan perintah ke direktori per pengguna.399Di Linux, variabel ini sering kali tidak diatur di shell induk. Panduan tool Bash memberi tahu Claude untuk membuat direktori sementara dengan `mktemp -d` alih-alih mengandalkan `$TMPDIR`.

400 

401 Di Linux, variabel ini sering kali tidak diatur di shell induk. Panduan tool Bash memberi tahu Claude untuk membuat direktori sementara dengan `mktemp -d` alih-alih mengandalkan `$TMPDIR`.

402* [`autoAllowBashIfSandboxed`](https://code.claude.com/docs/id/settings-reference#sandbox-autoallowbashifsandboxed) tetap default ke `true`, sehingga perintah sandbox tetap berjalan tanpa permintaan izin. Atur ke `false` untuk meminta izin bagi perintah sandbox.

403 400 

404### Melindungi kredensial401### Melindungi kredensial

405 402 


1095}1092}

1096```1093```

1097 1094 

1098Ini mengaktifkan [mode auto-allow](#sandbox-modes). Untuk mode izin reguler, atur juga [`sandbox.autoAllowBashIfSandboxed`](https://code.claude.com/docs/id/settings-reference#sandbox-autoallowbashifsandboxed) ke `false`. Perubahan berlaku di sesi Anda yang sedang berjalan pada perintah shell berikutnya yang dijalankan Claude, dan tab **Mode** di `/sandbox` kemudian menandai mode yang berlaku.1095Ini mengaktifkan [mode izin reguler](#sandbox-modes). Untuk mode auto-allow, atur juga [`sandbox.autoAllowBashIfSandboxed`](https://code.claude.com/docs/id/settings-reference#sandbox-autoallowbashifsandboxed) ke `true`. Perubahan berlaku di sesi Anda yang sedang berjalan pada perintah shell berikutnya yang dijalankan Claude, dan tab **Mode** di `/sandbox` kemudian menandai mode yang berlaku.

1099 1096 

1100## Keterbatasan1097## Keterbatasan

1101 1098 

security.md +2 −2

Details

25 25 

26Untuk memitigasi risiko dalam sistem agentik:26Untuk memitigasi risiko dalam sistem agentik:

27 27 

28* **Tool bash dalam sandbox**: Jalankan perintah bash dalam [sandbox](https://code.claude.com/docs/id/sandboxing.md) dengan isolasi sistem file dan jaringan, sehingga mengurangi permintaan izin sambil tetap menjaga keamanan. Konfigurasikan dengan `/sandbox` untuk menentukan batasan tempat Claude Code dapat bekerja secara otonom28* **Tool Bash dalam sandbox**: Jalankan perintah Bash dalam [sandbox](https://code.claude.com/docs/id/sandboxing.md) dengan isolasi sistem file dan jaringan. Konfigurasikan dengan `/sandbox`

29* **Batas direktori kerja**: Dalam mode Manual, Claude Code meminta persetujuan Anda sebelum tool file-nya membaca atau menulis di luar folder tempat Claude Code dimulai beserta subfoldernya. Batas ini berupa permintaan izin, sehingga perintah Bash yang Anda setujui tetap dapat menulis di mana pun yang dapat diakses oleh akun pengguna Anda29* **Batas direktori kerja**: Dalam mode Manual, Claude Code meminta persetujuan Anda sebelum tool file-nya membaca atau menulis di luar folder tempat Claude Code dimulai beserta subfoldernya. Batas ini berupa permintaan izin, sehingga perintah Bash yang Anda setujui tetap dapat menulis di mana pun yang dapat diakses oleh akun pengguna Anda

30 * Untuk membaca sebuah folder tanpa permintaan izin, tambahkan folder tersebut sebagai [direktori tambahan](https://code.claude.com/docs/id/permissions.md#working-directories)30 * Untuk membaca sebuah folder tanpa permintaan izin, tambahkan folder tersebut sebagai [direktori tambahan](https://code.claude.com/docs/id/permissions.md#working-directories)

31 * Untuk membatasi perintah Bash di tingkat sistem operasi, aktifkan [sandboxing](https://code.claude.com/docs/id/sandboxing.md#filesystem-isolation)31 * Untuk membatasi perintah Bash di tingkat sistem operasi, aktifkan [sandboxing](https://code.claude.com/docs/id/sandboxing.md#filesystem-isolation)


62* **Verifikasi kepercayaan**: Dalam sesi interaktif, Claude Code menampilkan dialog kepercayaan workspace saat Anda memulainya di folder yang belum Anda percayai. Server dalam `.mcp.json` milik proyek memiliki permintaan persetujuannya sendiri, dan [Cakupan proyek](https://code.claude.com/docs/id/mcp.md#project-scope) mencantumkan sesi yang melewatinya62* **Verifikasi kepercayaan**: Dalam sesi interaktif, Claude Code menampilkan dialog kepercayaan workspace saat Anda memulainya di folder yang belum Anda percayai. Server dalam `.mcp.json` milik proyek memiliki permintaan persetujuannya sendiri, dan [Cakupan proyek](https://code.claude.com/docs/id/mcp.md#project-scope) mencantumkan sesi yang melewatinya

63 * Catatan: Sesi `-p` tidak menampilkan kedua permintaan tersebut. [Apa yang berjalan sebelum Anda memercayai folder](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) mencantumkan apa yang dapat dijalankan oleh file repositori di sana63 * Catatan: Sesi `-p` tidak menampilkan kedua permintaan tersebut. [Apa yang berjalan sebelum Anda memercayai folder](https://code.claude.com/docs/id/permissions.md#what-runs-before-you-trust-a-folder) mencantumkan apa yang dapat dijalankan oleh file repositori di sana

64 * Catatan: Ketika Anda memulai Claude Code langsung di direktori home Anda, penerimaan kepercayaan disimpan untuk sesi saat ini saja dan tidak ditulis ke disk, jadi prompt muncul kembali pada setiap peluncuran. Tidak ada pengaturan untuk mempertahankannya. Mulai Claude Code dari subdirektori proyek sebagai gantinya, di mana penerimaan kepercayaan disimpan per direktori64 * Catatan: Ketika Anda memulai Claude Code langsung di direktori home Anda, penerimaan kepercayaan disimpan untuk sesi saat ini saja dan tidak ditulis ke disk, jadi prompt muncul kembali pada setiap peluncuran. Tidak ada pengaturan untuk mempertahankannya. Mulai Claude Code dari subdirektori proyek sebagai gantinya, di mana penerimaan kepercayaan disimpan per direktori

65* **Deteksi command injection**: Dalam Manual mode, Claude Code meminta persetujuan sebelum menjalankan perintah Bash yang tidak dapat dianalisisnya sepenuhnya. Aturan izin untuk sebagian perintah, seperti `Bash(git *)`, tidak melewati permintaan tersebut. [Perintah yang di-sandbox](https://code.claude.com/docs/id/permissions.md#how-permissions-interact-with-sandboxing) dapat berjalan tanpanya65* **Deteksi command injection**: Dalam Manual mode, Claude Code meminta persetujuan sebelum menjalankan perintah Bash yang tidak dapat dianalisisnya sepenuhnya. Aturan allow untuk sebagian perintah, seperti `Bash(git *)`, tidak melewati permintaan tersebut. [Perintah yang di-sandbox](https://code.claude.com/docs/id/permissions.md#how-permissions-interact-with-sandboxing) dalam [mode auto-allow](https://code.claude.com/docs/id/sandboxing.md#auto-allow-mode) dapat berjalan tanpanya

66* **Pencocokan fail-closed**: Dalam Manual mode, perintah yang tidak cocok memerlukan persetujuan secara default66* **Pencocokan fail-closed**: Dalam Manual mode, perintah yang tidak cocok memerlukan persetujuan secara default

67* **Penyimpanan kredensial aman**: Kunci API dan token disimpan di macOS Keychain jika tersedia. Di Linux, keduanya disimpan dalam file dengan mode `0600`, dan di Windows dalam file yang mewarisi kontrol akses direktori profil pengguna Anda. Lihat [Credential Management](https://code.claude.com/docs/id/authentication.md#credential-management)67* **Penyimpanan kredensial aman**: Kunci API dan token disimpan di macOS Keychain jika tersedia. Di Linux, keduanya disimpan dalam file dengan mode `0600`, dan di Windows dalam file yang mewarisi kontrol akses direktori profil pengguna Anda. Lihat [Credential Management](https://code.claude.com/docs/id/authentication.md#credential-management)

68 68 

Details

1355 1355 

1356### `sandbox.autoAllowBashIfSandboxed`1356### `sandbox.autoAllowBashIfSandboxed`

1357 1357 

1358Izinkan Claude Code menjalankan perintah Bash yang di-sandbox tanpa permintaan izin. Perintah yang tidak dapat berjalan di sandbox tetap melalui alur izin biasa, dan aturan `deny` serta aturan `ask` yang dibatasi pada konten seperti `Bash(git push *)` tetap berlaku; aturan ask `Bash` polos dilewati untuk perintah yang di-sandbox. Atur ke `false` untuk juga mengirim perintah yang di-sandbox melalui alur izin biasa, yang oleh tab **Mode** di `/sandbox` disebut mode izin reguler.1358Izinkan Claude Code menjalankan perintah Bash yang di-sandbox tanpa permintaan izin. Perintah yang tidak dapat berjalan di sandbox tetap melalui alur izin biasa. Aturan `deny` dan aturan `ask` yang dibatasi pada konten seperti `Bash(git push *)` tetap berlaku, tetapi aturan ask `Bash` tanpa konten dilewati untuk perintah yang di-sandbox. Untuk mengaturnya ke `true` di pengaturan terkelola, tambahkan ke blok `sandbox` dari [sumber terkelola dengan peringkat tertinggi](https://code.claude.com/docs/id/managed-settings.md#how-claude-code-combines-managed-sources) Anda.

1359 1359 

1360* **Cakupan**: [`Any file`](#scopes)1360* **Cakupan**: [`Any file`](#scopes)

1361* **Tipe**: Boolean1361* **Tipe**: Boolean

1362 * `true`: Claude Code menjalankan perintah Bash yang di-sandbox tanpa permintaan izin, kecuali dalam kasus yang dijelaskan di [Mode auto-allow](https://code.claude.com/docs/id/sandboxing.md#auto-allow-mode); `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` mematikan auto-allow1362 * `true`: Claude Code menjalankan perintah Bash yang di-sandbox tanpa permintaan izin, kecuali dalam kasus yang dijelaskan di [Mode auto-allow](https://code.claude.com/docs/id/sandboxing.md#auto-allow-mode); `CLAUDE_CODE_SUBPROCESS_ENV_SCRUB` mematikan auto-allow

1363 * `false`: perintah yang di-sandbox melalui alur izin biasa, sehingga aturan allow dan mode izin Anda yang menentukan. Tab **Mode** di `/sandbox` menyebut ini mode izin reguler1363 * `false`: perintah yang di-sandbox melalui alur izin biasa, sehingga aturan allow dan mode izin Anda yang menentukan. Tab **Mode** di `/sandbox` menyebut ini mode izin reguler

1364* **Default**: `true`1364* **Default**: `false`. Sebelum v2.1.324, defaultnya adalah `true`

1365 1365 

1366Ini mempertahankan sandbox tetap aktif dan mengirim perintah yang di-sandbox melalui alur izin biasa:1366Untuk menjaga sandbox tetap aktif dan menjalankan perintah yang di-sandbox tanpa permintaan izin, atur kedua kunci di blok `sandbox` Anda:

1367 1367 

1368```json settings.json theme={null}1368```json settings.json theme={null}

1369{1369{

1370 "sandbox": {1370 "sandbox": {

1371 "enabled": true,1371 "enabled": true,

1372 "autoAllowBashIfSandboxed": false1372 "autoAllowBashIfSandboxed": true

1373 }1373 }

1374}1374}

1375```1375```


1653}1653}

1654```1654```

1655 1655 

1656Dengan lapisan ini dimatikan, Claude Code tidak menegakkan entri `denyRead` maupun entri `deny` di `credentials.files`, sementara entri `credentials.envVars` dan entri `mask` yang diterapkan tetap berfungsi. [`autoAllowBashIfSandboxed`](#sandbox-autoallowbashifsandboxed) tetap bernilai default `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 dimatikan.1656Dengan lapisan ini dimatikan, Claude Code tidak memberlakukan entri `denyRead` atau entri `deny` di `credentials.files`, sementara entri `credentials.envVars` dan entri `mask` yang diterapkan tetap berfungsi. 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 dimatikan.

1657 1657 

1658### `sandbox.ignoreViolations`1658### `sandbox.ignoreViolations`

1659 1659 


4870 4870 

4871### `agentPushNotifEnabled`4871### `agentPushNotifEnabled`

4872 4872 

4873Izinkan Claude mengirimkan notifikasi push ke ponsel Anda ketika Claude memutuskan bahwa notifikasi tersebut layak dikirim, misalnya ketika tugas yang panjang selesai. Dalam sesi lokal, Claude dapat mengirimkannya saat [Remote Control](https://code.claude.com/docs/id/remote-control.md) terhubung. Muncul di `/config` sebagai **Push when Claude decides**. Ketika Anda mengubahnya di sana, Claude Code juga menyimpan nilainya ke akun Anda.4873Izinkan Claude mengirimkan notifikasi push ke ponsel Anda ketika Claude memutuskan bahwa notifikasi tersebut layak dikirim, misalnya ketika tugas yang panjang selesai. Dalam sesi lokal, Claude dapat mengirimkannya saat [Remote Control](https://code.claude.com/docs/id/remote-control.md) terhubung. Muncul di `/config` sebagai **Push when Claude decides**.

4874 4874 

4875* **Scope**: [`Any file`](#scopes). Claude Code juga membaca nilai yang ditinggalkan di `~/.claude.json` oleh versi yang lebih lama.4875* **Scope**: [`Any file`](#scopes). Claude Code juga membaca nilai yang ditinggalkan di `~/.claude.json` oleh versi yang lebih lama.

4876* **Type**: Boolean4876* **Type**: Boolean


4884}4884}

4885```4885```

4886 4886 

4887Jika Anda menjalankan sesi di bawah server [`claude remote-control`](https://code.claude.com/docs/id/remote-control#start-a-remote-control-session), sesi tersebut mengikuti nilai yang disimpan ke akun Anda, bukan kunci ini. Untuk mengubah nilai tersebut, jalankan `/config` dalam sesi Claude Code di terminal Anda dan aktifkan atau matikan **Push when Claude decides**. Jika toggle sudah menunjukkan nilai yang Anda inginkan, ubah lalu kembalikan agar Claude Code menyimpan nilai tersebut ke akun Anda.4887Anda tidak menerima notifikasi hanya dengan kunci ini. Untuk menyiapkannya, ikuti langkah-langkah di [Mobile push notifications](https://code.claude.com/docs/id/remote-control.md#mobile-push-notifications).

4888 4888 

4889Lihat [Mobile push notifications](https://code.claude.com/docs/id/remote-control.md#mobile-push-notifications).4889Jika Anda menjalankan sesi di bawah server [`claude remote-control`](https://code.claude.com/docs/id/remote-control#start-a-remote-control-session), sesi tersebut mengikuti nilai yang disimpan ke akun Anda, bukan kunci ini. Untuk mengubah nilai tersebut, jalankan `/config` dalam sesi Claude Code di terminal Anda dan aktifkan atau matikan **Push when Claude decides**. Jika toggle sudah menunjukkan nilai yang Anda inginkan, ubah lalu kembalikan agar Claude Code menyimpan nilai tersebut ke akun Anda.

4890 4890 

4891### `awaySummaryEnabled`4891### `awaySummaryEnabled`

4892 4892 


5043}5043}

5044```5044```

5045 5045 

5046Lihat [Mobile push notifications](https://code.claude.com/docs/id/remote-control.md#mobile-push-notifications).5046Anda tidak menerima notifikasi hanya dengan kunci ini. Untuk menyiapkannya, ikuti langkah-langkah di [Mobile push notifications](https://code.claude.com/docs/id/remote-control.md#mobile-push-notifications).

5047 5047 

5048### `preferredNotifChannel`5048### `preferredNotifChannel`

5049 5049 


5421 5421 

5422### `minimumVersion`5422### `minimumVersion`

5423 5423 

5424Cegah pembaruan otomatis latar belakang dan `claude update` dari menginstal versi apa pun di bawah yang ini, jadi berpindah ke saluran `"stable"` tidak menurunkan Anda dari build `"latest"` yang lebih baru. Claude Code menulis kunci ini untuk Anda ketika Anda memilih untuk tetap di versi saat ini Anda sambil beralih saluran di `/config`, dan menghapusnya ketika Anda beralih kembali ke `"latest"`.5424Cegah pembaruan otomatis latar belakang dan `claude update` menginstal versi apa pun di bawah versi yang Anda atur. Claude Code menulis kunci ini untuk Anda ketika Anda memilih untuk tetap di versi Anda saat ini sambil beralih saluran di `/config`. Claude Code menghapus kunci ini ketika Anda beralih kembali ke `"latest"` di `/config`.

5425 5425 

5426* **Scope**: [`Any file`](#scopes). Atur di managed settings untuk menetapkan minimum di seluruh organisasi yang tidak dapat diturunkan oleh pengaturan pengguna dan proyek.5426* **Scope**: [`Any file`](#scopes). Atur kunci ini di pengaturan terkelola untuk menetapkan minimum di seluruh organisasi yang tidak dapat ditimpa oleh pengaturan pengguna dan proyek.

5427* **Type**: string, nomor versi seperti `"2.1.100"`; nilai yang bukan versi valid diabaikan5427* **Type**: string, nomor versi seperti `"2.1.323"`; nilai yang bukan versi valid diabaikan

5428* **Default**: tidak diatur, jadi pembaruan dapat menginstal versi apa pun yang ditawarkan saluran5428* **Default**: tidak diatur, jadi pembaruan dapat menginstal versi apa pun yang ditawarkan saluran

5429 5429 

5430Contoh ini mengikuti saluran stable dan menolak untuk menginstal versi apa pun di bawah 2.1.100:5430Contoh ini mengikuti saluran stable dan menolak untuk menginstal versi apa pun di bawah 2.1.323:

5431 5431 

5432```json settings.json theme={null}5432```json settings.json theme={null}

5433{5433{

5434 "autoUpdatesChannel": "stable",5434 "autoUpdatesChannel": "stable",

5435 "minimumVersion": "2.1.100"5435 "minimumVersion": "2.1.323"

5436}5436}

5437```5437```

5438 5438 

setup.md +19 −10

Details

40>40>

41> **macOS, Linux, WSL:**41> **macOS, Linux, WSL:**

42>42>

43> ```bash theme={null}43> ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

44> curl -fsSL https://claude.ai/install.sh | bash44> curl -fsSL https://claude.ai/install.sh | bash

45> ```45> ```

46>46>


48>48>

49> **Windows PowerShell:**49> **Windows PowerShell:**

50>50>

51> ```powershell theme={null}51> ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

52> irm https://claude.ai/install.ps1 | iex52> irm https://claude.ai/install.ps1 | iex

53> ```53> ```

54>54>

55> **Windows CMD:**55> **Windows CMD:**

56>56>

57> ```batch theme={null}57> ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

58> curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd58> curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

59> ```59> ```

60>60>


72 72 

73> [tab] Homebrew73> [tab] Homebrew

74>74>

75> ```bash theme={null}75> ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

76> brew install --cask claude-code76> brew install --cask claude-code

77> ```77> ```

78>78>


84 84 

85> [tab] WinGet85> [tab] WinGet

86>86>

87> ```powershell theme={null}87> ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}

88> winget install Anthropic.ClaudeCode88> winget install Anthropic.ClaudeCode

89> ```89> ```

90>90>


220}220}

221```221```

222 222 

223Dengan pengaturan ini, instalasi asli diperbarui ke versi stable bahkan ketika versi tersebut lebih lama daripada versi Anda. Untuk menghindari downgrade, [tetapkan juga versi minimum](#pin-a-minimum-version).

224 

223Model yang baru diluncurkan dapat memerlukan versi Claude Code yang lebih baru daripada yang disediakan oleh saluran stable. Untuk menjalankan model tersebut sekarang, pindah ke saluran latest.225Model yang baru diluncurkan dapat memerlukan versi Claude Code yang lebih baru daripada yang disediakan oleh saluran stable. Untuk menjalankan model tersebut sekarang, pindah ke saluran latest.

224 226 

225Untuk penerapan enterprise, Anda dapat memberlakukan saluran rilis yang konsisten di seluruh organisasi Anda menggunakan [managed settings](https://code.claude.com/docs/id/managed-settings.md).227Untuk penerapan enterprise, Anda dapat memberlakukan saluran rilis yang konsisten di seluruh organisasi Anda menggunakan [managed settings](https://code.claude.com/docs/id/managed-settings.md).


230 232 

231### Tetapkan versi minimum233### Tetapkan versi minimum

232 234 

233Pengaturan `minimumVersion` menetapkan batas bawah. Pembaruan otomatis latar belakang dan `claude update` menolak untuk menginstal versi apa pun di bawah nilai ini, jadi beralih ke saluran `"stable"` tidak menurunkan Anda jika Anda sudah di build `"latest"` yang lebih baru.235Untuk memindahkan instalasi asli ke [saluran rilis](#configure-release-channel) `"stable"` tanpa downgrade, atur [`minimumVersion`](https://code.claude.com/docs/id/settings-reference#minimumversion) ke versi yang sedang Anda jalankan. Pembaruan otomatis latar belakang dan `claude update` menolak untuk menginstal versi apa pun di bawah minimum tersebut.

236 

237Atur minimum di `/config` agar Claude Code mengisi versi Anda saat ini, atau di file pengaturan Anda untuk mengetik nomornya sendiri:

234 238 

235Beralih dari `"latest"` ke `"stable"` melalui `/config` meminta Anda untuk tetap di versi saat ini atau memungkinkan downgrade. Memilih untuk tetap menetapkan `minimumVersion` ke versi itu. Beralih kembali ke `"latest"` menghapusnya.239* **Di `/config`**: ubah **Auto-update channel** ke stable, lalu pilih **Stay on current version**. Jika Anda beralih kembali ke latest di `/config`, Claude Code menghapus minimum tersebut.

240* **Di [file pengaturan](https://code.claude.com/docs/id/settings.md) Anda**: jalankan `claude --version` di shell Anda, dan atur `minimumVersion` ke nomor di awal output. Dalam pengeditan yang sama, atur `autoUpdatesChannel` ke `"stable"`.

236 241 

237Tambahkan ke [file settings.json](https://code.claude.com/docs/id/settings.md) Anda untuk menetapkan batas secara eksplisit:242`~/.claude/settings.json` berikut mengalihkan instalasi pada versi 2.1.323 ke stable:

238 243 

239```json theme={null}244```json theme={null}

240{245{

241 "autoUpdatesChannel": "stable",246 "autoUpdatesChannel": "stable",

242 "minimumVersion": "2.1.100"247 "minimumVersion": "2.1.323"

243}248}

244```249```

245 250 

246Dalam [managed settings](https://code.claude.com/docs/id/managed-settings.md), ini memberlakukan minimum di seluruh organisasi yang tidak dapat ditimpa oleh pengaturan pengguna dan proyek.251Instalasi tetap di 2.1.323 hingga saluran stable menyediakan versi yang lebih baru.

252 

253#### Tetapkan batas versi untuk organisasi Anda

254 

255Dalam [pengaturan terkelola](https://code.claude.com/docs/id/managed-settings.md), `minimumVersion` memberlakukan minimum di seluruh organisasi yang tidak dapat ditimpa oleh pengaturan pengguna dan proyek.

247 256 

248Pengaturan `minimumVersion` hanya membatasi pembaruan. Untuk membuat Claude Code menolak untuk memulai di luar rentang versi, gunakan pengaturan terkelola `requiredMinimumVersion` dan `requiredMaximumVersion` sebagai gantinya. Pembaruan juga menghormati batas `requiredMaximumVersion`. Lihat [`requiredMinimumVersion`](https://code.claude.com/docs/id/settings-reference#requiredminimumversion) dan [`requiredMaximumVersion`](https://code.claude.com/docs/id/settings-reference#requiredmaximumversion).257Pengaturan `minimumVersion` hanya membatasi pembaruan. Untuk membuat Claude Code menolak untuk memulai di luar rentang versi, gunakan pengaturan terkelola `requiredMinimumVersion` dan `requiredMaximumVersion` sebagai gantinya. Pembaruan juga menghormati batas `requiredMaximumVersion`. Lihat [`requiredMinimumVersion`](https://code.claude.com/docs/id/settings-reference#requiredminimumversion) dan [`requiredMaximumVersion`](https://code.claude.com/docs/id/settings-reference#requiredmaximumversion).

249 258 

skills.md +4 −2

Details

22 22 

23Claude Code menyertakan sekumpulan skill bawaan, seperti `/doctor`, `/code-review`, `/batch`, `/debug`, `/loop`, dan `/claude-api`. Skill bawaan berbasis prompt: skill tersebut memberi Claude instruksi terperinci dan membiarkannya mengatur pekerjaan menggunakan tool-toolnya. Sebaliknya, sebagian besar perintah bawaan menjalankan logika tetap secara langsung.23Claude Code menyertakan sekumpulan skill bawaan, seperti `/doctor`, `/code-review`, `/batch`, `/debug`, `/loop`, dan `/claude-api`. Skill bawaan berbasis prompt: skill tersebut memberi Claude instruksi terperinci dan membiarkannya mengatur pekerjaan menggunakan tool-toolnya. Sebaliknya, sebagian besar perintah bawaan menjalankan logika tetap secara langsung.

24 24 

25Anda memanggil skill bawaan dengan mengetik `/` diikuti nama skill. Claude memanggil beberapa skill bawaan secara otomatis saat relevan; skill lainnya, termasuk [`/verify`](#run-and-verify-your-app), hanya berjalan saat Anda memanggilnya.25Anda memanggil skill bawaan dengan mengetik `/` diikuti nama skill. Claude memanggil beberapa skill bawaan secara otomatis saat relevan.

26 26 

27Sebagian besar skill bawaan tersedia di setiap sesi. Beberapa bergantung pada fitur tertentu: `/workflow-authoring`, misalnya, hanya tersedia saat [dynamic workflows](https://code.claude.com/docs/id/workflows.md) diaktifkan.27Sebagian besar skill bawaan tersedia di setiap sesi. Beberapa bergantung pada fitur tertentu: `/workflow-authoring`, misalnya, hanya tersedia saat [dynamic workflows](https://code.claude.com/docs/id/workflows.md) diaktifkan.

28 28 


320 320 

321Jika Anda membuat direktori skill tingkat atas yang belum ada saat sesi dimulai, jalankan [`/reload-skills`](https://code.claude.com/docs/id/commands#all-commands) untuk mengambil skill yang Anda letakkan di sana. Claude Code belum memantau direktori tersebut, jadi jalankan `/reload-skills` lagi setelah setiap perubahan berikutnya di sana.321Jika Anda membuat direktori skill tingkat atas yang belum ada saat sesi dimulai, jalankan [`/reload-skills`](https://code.claude.com/docs/id/commands#all-commands) untuk mengambil skill yang Anda letakkan di sana. Claude Code belum memantau direktori tersebut, jadi jalankan `/reload-skills` lagi setelah setiap perubahan berikutnya di sana.

322 322 

323Deteksi perubahan langsung hanya mencakup teks `SKILL.md`. Untuk folder skill yang juga merupakan [plugin](https://code.claude.com/docs/id/plugins/loading.md#plugins-shared-through-a-repository), perubahan pada `hooks/`, `.mcp.json`, `agents/`, dan `output-styles/` memerlukan `/reload-plugins` agar berlaku.323> [!NOTE]

324>

325> Deteksi perubahan langsung mencakup teks `SKILL.md`. Untuk folder skill yang juga merupakan [plugin](https://code.claude.com/docs/id/plugins/loading.md#plugins-shared-through-a-repository), perubahan pada `.mcp.json`, `agents/`, dan `output-styles/` memerlukan `/reload-plugins` agar berlaku. Perubahan pada `hooks/` juga memerlukannya, kecuali file modul milik [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) ketika file tersebut [dimuat ulang dengan sendirinya](https://code.claude.com/docs/id/env-vars.md).

324 326 

325### Menghapus skill327### Menghapus skill

326 328 

sub-agents.md +62 −45

Details

36>36>

37> Agen cepat yang dioptimalkan hanya-baca untuk mencari dan menganalisis basis kode.37> Agen cepat yang dioptimalkan hanya-baca untuk mencari dan menganalisis basis kode.

38>38>

39> * **Model**: model percakapan utama. Ketika percakapan utama menjalankan Fable, model Explore bergantung pada cara Anda terhubung:39> * **Model**: model [percakapan induk](#which-model-a-nested-subagent-runs-on). Ketika percakapan induk menjalankan Fable, Explore berjalan pada Opus atau tetap pada Fable, bergantung pada cara Anda terhubung.

40> * Dengan langganan Claude, akun Anthropic Console, atau [LLM gateway](https://code.claude.com/docs/id/llm-gateway) yang dijangkau melalui `ANTHROPIC_BASE_URL`, Explore berjalan pada model Opus yang dirujuk oleh [alias `opus`](https://code.claude.com/docs/id/model-config#model-aliases).40> * Dengan langganan Claude, akun Anthropic Console, atau [LLM gateway](https://code.claude.com/docs/id/llm-gateway) yang dijangkau melalui `ANTHROPIC_BASE_URL`, Explore berjalan pada model Opus yang dirujuk oleh [alias `opus`](https://code.claude.com/docs/id/model-config#model-aliases).

41> * Di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), atau [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway), Explore tetap menggunakan model percakapan utama.41> * Di Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, [Claude Platform on AWS](https://code.claude.com/docs/id/claude-platform-on-aws.md), atau [Claude apps gateway](https://code.claude.com/docs/id/claude-apps-gateway), Explore tetap pada Fable.

42> * **Tools**: tool read-only; Write dan Edit ditolak42> * **Tools**: tool read-only; Write dan Edit ditolak

43> * **Purpose**: penemuan file, pencarian kode, eksplorasi codebase43> * **Purpose**: penemuan file, pencarian kode, eksplorasi codebase

44>44>


52>52>

53> Agen penelitian yang digunakan selama [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) untuk mengumpulkan konteks sebelum menyajikan rencana.53> Agen penelitian yang digunakan selama [plan mode](https://code.claude.com/docs/id/permission-modes.md#analyze-before-you-edit-with-plan-mode) untuk mengumpulkan konteks sebelum menyajikan rencana.

54>54>

55> * **Model**: mewarisi dari percakapan utama, kecuali Anda menetapkan `CLAUDE_CODE_SUBAGENT_MODEL` dan [memaksanya ke setiap subagent](#run-every-subagent-on-one-model)55> * **Model**: mewarisi dari [percakapan induk](#which-model-a-nested-subagent-runs-on), kecuali Anda menetapkan `CLAUDE_CODE_SUBAGENT_MODEL` dan [memaksanya ke setiap subagent](#run-every-subagent-on-one-model)

56> * **Tools**: alat hanya-baca; Write dan Edit ditolak56> * **Tools**: tool read-only; Write dan Edit ditolak

57> * **Purpose**: penelitian basis kode untuk perencanaan57> * **Purpose**: penelitian codebase untuk perencanaan

58>58>

59> Ketika Anda dalam plan mode dan Claude perlu memahami basis kode Anda, Claude mendelegasikan penelitian ke subagent Plan sehingga output eksplorasi tetap dalam jendela konteks terpisah sementara percakapan utama tetap hanya-baca.59> Ketika Anda dalam plan mode dan Claude perlu memahami basis kode Anda, Claude mendelegasikan penelitian ke subagent Plan sehingga output eksplorasi tetap dalam jendela konteks terpisah sementara percakapan utama tetap hanya-baca.

60 60 


62>62>

63> Agen yang mampu untuk tugas kompleks multi-langkah yang memerlukan eksplorasi dan tindakan.63> Agen yang mampu untuk tugas kompleks multi-langkah yang memerlukan eksplorasi dan tindakan.

64>64>

65> * **Model**: model [`CLAUDE_CODE_SUBAGENT_MODEL`](#choose-a-model) jika Anda menetapkan satu dan tidak ada yang menetapkan model dengan cara lain, jika tidak model percakapan utama; [Pilih model](#choose-a-model) menyatakan urutan lengkap, dan [Jalankan setiap subagent pada satu model](#run-every-subagent-on-one-model) menunjukkan cara membuat variabel menggantikan sumber-sumber tersebut65> * **Model**: model percakapan induk secara default, mengikuti [urutan model](#choose-a-model)

66> * **Tools**: setiap alat [tersedia untuk subagent](#available-tools)66> * **Tools**: setiap tool [yang tersedia untuk subagent](#available-tools)

67> * **Purpose**: penelitian kompleks, operasi multi-langkah, modifikasi kode67> * **Purpose**: penelitian kompleks, operasi multi-langkah, modifikasi kode

68>68>

69> Claude mendelegasikan ke general-purpose ketika tugas memerlukan eksplorasi dan modifikasi, penalaran kompleks untuk menafsirkan hasil, atau beberapa langkah yang saling bergantung.69> Claude mendelegasikan ke general-purpose ketika tugas memerlukan eksplorasi dan modifikasi, penalaran kompleks untuk menafsirkan hasil, atau beberapa langkah yang saling bergantung.


346 346 

347### Memilih model347### Memilih model

348 348 

349Field `model` mengontrol model mana yang digunakan subagent:349Secara default, subagent yang Anda definisikan berjalan pada model yang sama dengan percakapan yang memulainya. Untuk memilih modelnya sendiri, tetapkan field [`model`](#supported-frontmatter-fields) dalam definisinya ke salah satu nilai berikut:

350 

351* **Alias model**: gunakan salah satu alias yang tersedia: `sonnet`, `opus`, `haiku`, atau `fable`

352* **ID model lengkap**: gunakan ID model lengkap seperti `claude-opus-5-5` atau `claude-sonnet-5`. Menerima nilai yang sama dengan flag `--model`

353* **inherit**: gunakan model yang sama dengan percakapan utama

354 

355Ketika Claude memanggil subagent, Claude juga dapat memberikan parameter `model` untuk pemanggilan spesifik tersebut. Pada panggilan tool Agent, parameter tersebut menerima alias model: `sonnet`, `opus`, `haiku`, atau `fable`. Claude tidak dapat memberikan ID model lengkap atau `inherit` pada panggilan tersebut. Claude Code me-resolve model subagent dalam urutan ini:

356 350 

3571. Parameter `model` per pemanggilan351* **Alias model**: `sonnet`, `opus`, `haiku`, atau `fable`

3582. Frontmatter `model` dari definisi subagent, di mana `inherit` memilih model percakapan utama352* **ID model lengkap**: nilai yang diterima flag [`--model`](https://code.claude.com/docs/id/cli-reference#cli-flags), seperti `claude-opus-5-5` atau `claude-sonnet-5`

3593. Environment variable [`CLAUDE_CODE_SUBAGENT_MODEL`](https://code.claude.com/docs/id/model-config#environment-variables), ketika Anda menetapkannya ke alias model atau ID model353* **`inherit`**: model percakapan utama, atau model subagent yang memunculkannya untuk [subagent bertingkat](#which-model-a-nested-subagent-runs-on)

3604. Model percakapan utama

361 354 

362Jika [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang terinstal menetapkan model dalam hook [`agent.spawn`](https://code.claude.com/docs/id/plugins/mods/reference#subagents)-nya, Claude Code menggunakan model tersebut sebagai pengganti parameter per pemanggilan.355Ketika lebih dari satu sumber menetapkan model, Claude Code menggunakan yang pertama dalam urutan ini:

363 356 

364Dalam dua kasus, alias keluarga seperti `opus` dalam parameter per pemanggilan atau frontmatter di-resolve ke model percakapan utama alih-alih ke [versi yang dirujuk alias tersebut](https://code.claude.com/docs/id/model-config.md#model-aliases):3571. Parameter `model` per pemanggilan, yang dapat diberikan Claude saat memulai subagent. Pada panggilan tool Agent, parameter tersebut menerima alias model, bukan ID model lengkap atau `inherit`.

3582. Field `model` dalam definisi subagent, termasuk `inherit`

3593. Environment variable [`CLAUDE_CODE_SUBAGENT_MODEL`](https://code.claude.com/docs/id/model-config#environment-variables)

3604. Model percakapan utama, atau model subagent yang memunculkannya untuk subagent bertingkat

365 361 

366* **Model percakapan utama termasuk dalam keluarga tersebut**: subagent berjalan pada model yang persis sama dengan percakapan utama, termasuk sufiks `[1m]` apa pun, sehingga mendapatkan jendela [konteks yang diperluas](https://code.claude.com/docs/id/model-config.md#extended-context) yang sama dengan percakapan utama.362Jika Claude memberikan alias, subagent mempertahankan alias tersebut ketika [dilanjutkan atau menerima pesan lanjutan](#resume-subagents). Jika [mod](https://code.claude.com/docs/id/plugins/mods/overview.md) yang terinstal menetapkan model dalam hook [`agent.spawn`](https://code.claude.com/docs/id/plugins/mods/reference#subagents)-nya, Claude Code menggunakan model tersebut sebagai pengganti parameter per pemanggilan.

367* **Claude Code tidak dapat mengetahui keluarga model percakapan utama, pada [penyedia selain Anthropic API](https://code.claude.com/docs/id/third-party-integrations.md)**: ini dapat terjadi dengan [ARN application inference profile](https://code.claude.com/docs/id/amazon-bedrock.md#iam-configuration) di Amazon Bedrock yang belum di-resolve Claude Code ke model pendukungnya. Kasus ini hanya mencakup alias `opus`, dan tidak berlaku ketika Anda menetapkan [`ANTHROPIC_DEFAULT_OPUS_MODEL`](https://code.claude.com/docs/id/model-config#environment-variables), karena `opus` kemudian di-resolve ke model yang Anda tetapkan.

368 

369Alias dalam `CLAUDE_CODE_SUBAGENT_MODEL` selalu di-resolve ke versi yang dirujuk alias tersebut, bahkan ketika alias itu menyebutkan keluarga model percakapan utama. Menetapkan variabel ke `inherit` sama dengan membiarkannya tidak ditetapkan.

370 363 

371Menetapkan `CLAUDE_CODE_SUBAGENT_MODEL` saja tidak mengubah model yang digunakan subagent bawaan Explore dan Plan. Untuk mengubahnya, lihat [Menjalankan setiap subagent pada satu model](#run-every-subagent-on-one-model).364Menetapkan `CLAUDE_CODE_SUBAGENT_MODEL` saja tidak mengubah model yang digunakan subagent bawaan Explore dan Plan. Untuk mengubahnya, lihat [Menjalankan setiap subagent pada satu model](#run-every-subagent-on-one-model).

372 365 

373Sebelum v2.1.251, `CLAUDE_CODE_SUBAGENT_MODEL` berada di urutan pertama dan menimpa parameter per pemanggilan maupun frontmatter, termasuk `model: inherit`.366#### Model yang digunakan subagent bertingkat

374 367 

375Claude Code memeriksa nilai parameter per pemanggilan, frontmatter, dan environment variable terhadap allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) organisasi Anda. Untuk nilai yang diblokir, Claude Code menggantinya dengan model lain:368Secara default, [subagent bertingkat](#let-subagents-spawn-their-own-subagents) yang Anda definisikan berjalan pada model induknya, yaitu subagent yang memunculkannya. Untuk menjalankan subagent bertingkat pada model lain, tetapkan field `model`-nya ke model tersebut.

376 369 

377* Ketika nilai yang diblokir adalah alias keluarga seperti `opus`, Claude Code menjalankan subagent pada versi terbaru dari keluarga tersebut yang diizinkan allowlist, mengikuti [aturan substitusi dan cakupan penyedia](https://code.claude.com/docs/id/model-config.md#restrict-model-selection) yang sama dengan `/model`. Sebelum v2.1.222, Claude Code juga menjalankan subagent pada model yang diwarisi untuk alias keluarga yang diblokir.370Misalnya, anggaplah percakapan utama Anda berjalan pada Opus dan memulai subagent reviewer pada Haiku. Secara default, subagent berikut berjalan pada Haiku, bukan Opus, ketika reviewer memunculkannya:

378* Untuk nilai lain yang diblokir, pada penyedia tempat substitusi tersebut tidak beroperasi, atau ketika allowlist tidak mengizinkan versi apa pun dari keluarga tersebut, Claude Code menjalankan subagent pada model yang diwarisi. Jika Anda menetapkan `CLAUDE_CODE_SUBAGENT_MODEL`, Claude Code mencoba model tersebut terlebih dahulu, dengan aturan yang sama.

379 371 

380Dalam sesi interaktif, Claude Code menampilkan peringatan yang menyebutkan model yang diminta dan model yang digunakan subagent, untuk kedua jenis substitusi.372* Subagent dengan `model: inherit` atau tanpa field `model`

373* Subagent bawaan Explore, Plan, dan general-purpose

374* [Fork](#fork-the-current-conversation)

381 375 

382Untuk memeriksa model yang digunakan subagent, jalankan [`/tasks`](https://code.claude.com/docs/id/commands). Claude Code menyebutkan model pada baris subagent, dan menambahkan [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang ditetapkan untuk subagent tersebut, jika ada. Memerlukan Claude Code v2.1.242 atau yang lebih baru.376Dalam plan mode, subagent ini berjalan pada Opus jika Anda menetapkan model sesi Anda ke [`opusplan`](https://code.claude.com/docs/id/model-config#opusplan-model-setting), atau pada Sonnet jika Anda menetapkannya ke `haiku`.

383 377 

384Parameter `model` per pemanggilan juga berlaku ketika subagent [dilanjutkan atau dikirimi pesan lanjutan](#resume-subagents), sehingga subagent tetap menggunakan model tersebut.378#### Memeriksa model subagent

385 379 

386Sejak v2.1.198, subagent juga mewarisi konfigurasi [extended thinking](https://code.claude.com/docs/id/model-config.md#extended-thinking) percakapan utama: jika thinking aktif di sesi Anda, thinking juga aktif untuk subagent, dan jika nonaktif, tetap nonaktif. Tidak ada pengaturan thinking per subagent. Sebelum v2.1.198, subagent berjalan dengan extended thinking dinonaktifkan terlepas dari pengaturan percakapan utama.380Untuk memeriksa model yang digunakan subagent, jalankan [`/tasks`](https://code.claude.com/docs/id/commands). Claude Code menyebutkan model pada baris subagent, dan menambahkan [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level) yang ditetapkan untuk subagent tersebut, jika ada. Memerlukan Claude Code v2.1.242 atau yang lebih baru.

387 381 

388#### Menjalankan setiap subagent pada satu model382#### Menjalankan setiap subagent pada satu model

389 383 

390`CLAUDE_CODE_SUBAGENT_MODEL` adalah nilai default, sehingga definisi subagent atau model yang diberikan Claude tetap diutamakan daripadanya. Untuk menerapkan satu model ke setiap subagent, [teammate](https://code.claude.com/docs/id/agent-teams.md#specify-teammates-and-models), dan [agent workflow](https://code.claude.com/docs/id/workflows.md), tetapkan juga `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` ke `1`. Memerlukan Claude Code v2.1.257 atau yang lebih baru.384Untuk menerapkan satu model ke setiap subagent, [teammate](https://code.claude.com/docs/id/agent-teams.md#specify-teammates-and-models), dan [agent workflow](https://code.claude.com/docs/id/workflows.md), tetapkan `CLAUDE_CODE_SUBAGENT_MODEL` ke model tersebut dan `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` ke `1`. Memerlukan Claude Code v2.1.257 atau yang lebih baru.

391 

392* Jika Anda menetapkan kedua variabel, subagent berjalan pada model di `CLAUDE_CODE_SUBAGENT_MODEL`.

393* Jika Anda hanya menetapkan `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`, subagent berjalan pada model percakapan utama, kecuali subagent bawaan Explore yang berjalan pada [model yang tercantum untuknya di bawah Subagent bawaan](#built-in-subagents).

394 385 

395Misalnya, untuk menjalankan setiap subagent pada Haiku, tetapkan kedua variabel di blok `env` dari [file pengaturan](https://code.claude.com/docs/id/settings.md):386Misalnya, untuk menjalankan setiap subagent pada Haiku, tetapkan kedua variabel di blok `env` dari [file pengaturan](https://code.claude.com/docs/id/settings.md):

396 387 


405 396 

406Untuk memeriksa bahwa pengaturan sudah berlaku, jalankan [`/tasks`](https://code.claude.com/docs/id/commands) saat subagent sedang berjalan. Baris subagent menampilkan model yang digunakannya.397Untuk memeriksa bahwa pengaturan sudah berlaku, jalankan [`/tasks`](https://code.claude.com/docs/id/commands) saat subagent sedang berjalan. Baris subagent menampilkan model yang digunakannya.

407 398 

408Selama `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` [aktif](https://code.claude.com/docs/id/env-vars.md), Claude Code mengabaikan field `model` dalam definisi subagent, dan Claude tidak dapat memberikan model saat memulai subagent. Subagent berikut tetap berjalan pada model percakapan utama:399Selama `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` [aktif](https://code.claude.com/docs/id/env-vars.md), Claude Code mengabaikan field `model` dalam definisi subagent, dan Claude tidak dapat memberikan model saat memulai subagent. Subagent berikut tetap berjalan pada model percakapan induknya:

409 400 

410* [Fork](#fork-the-current-conversation)401* [Fork](#fork-the-current-conversation)

411* [Skill yang berjalan di subagent](https://code.claude.com/docs/id/skills.md#run-skills-in-a-subagent) dengan `model: inherit`402* [Skill yang berjalan di subagent](https://code.claude.com/docs/id/skills.md#run-skills-in-a-subagent) dengan `model: inherit`

412 403 

404Jika Anda hanya menetapkan `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`, subagent berjalan pada model percakapan utama, kecuali subagent bawaan Explore yang berjalan pada [model yang tercantum untuknya di bawah Subagent bawaan](#built-in-subagents).

405 

406#### Versi yang dipilih alias model

407 

408Secara default, subagent dengan alias model berjalan pada [versi yang dirujuk alias tersebut](https://code.claude.com/docs/id/model-config.md#model-aliases). Dengan alias keluarga seperti `opus` di field `model` atau parameter per pemanggilan, subagent berjalan pada model percakapan induknya dalam dua kasus:

409 

410* **Keluarga yang sama**: misalnya, jika percakapan utama Anda berjalan pada `claude-opus-4-7`, subagent dengan `model: opus` juga berjalan pada versi tersebut. Untuk menjalankan versi lain, tetapkan ID model lengkap di field `model`.

411* **Keluarga tidak diketahui**: Claude Code tidak dapat mengetahui keluarga model induk, misalnya dengan ARN Amazon Bedrock yang [tidak dapat dicarinya](https://code.claude.com/docs/id/amazon-bedrock.md#iam-configuration). Kasus ini hanya berlaku untuk alias `opus` pada [penyedia selain Anthropic API](https://code.claude.com/docs/id/third-party-integrations.md). Untuk memilih versi Opus, tetapkan [`ANTHROPIC_DEFAULT_OPUS_MODEL`](https://code.claude.com/docs/id/model-config#environment-variables).

412 

413#### Ketika allowlist memblokir model subagent

414 

415Jika allowlist [`availableModels`](https://code.claude.com/docs/id/model-config#restrict-model-selection) organisasi Anda memblokir model yang ditetapkan untuk subagent, subagent berjalan pada yang pertama berlaku dari berikut ini:

416 

4171. Untuk alias keluarga yang diblokir, versi terbaru yang diizinkan dalam keluarga tersebut, pada [penyedia yang mendukung substitusi ini](https://code.claude.com/docs/id/model-config.md#restrict-model-selection)

4182. Model di `CLAUDE_CODE_SUBAGENT_MODEL`, jika Anda menetapkannya, dengan aturan yang sama ini

4193. Model percakapan utama, atau model subagent yang memunculkannya untuk subagent bertingkat

420 

421Untuk subagent tingkat atas dalam sesi interaktif, sebuah peringatan menyebutkan model yang diminta dan penggantinya. Untuk menjalankan model tertentu, ubah nilai yang diblokir ke nilai yang diizinkan allowlist.

422 

423### Extended thinking di subagent

424 

425Subagent mewarisi konfigurasi [extended thinking](https://code.claude.com/docs/id/model-config.md#extended-thinking) percakapan utama Anda. Tidak ada pengaturan thinking per subagent.

426 

413### Memilih tingkat effort427### Memilih tingkat effort

414 428 

415Untuk menjalankan subagent pada [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level)-nya sendiri, tetapkan field [`effort`](#supported-frontmatter-fields) dalam definisinya.429Untuk menjalankan subagent pada [tingkat effort](https://code.claude.com/docs/id/model-config.md#adjust-effort-level)-nya sendiri, tetapkan field [`effort`](#supported-frontmatter-fields) dalam definisinya.


426 440 

427#### Tool yang tersedia441#### Tool yang tersedia

428 442 

429Subagent mewarisi [tool bawaan](https://code.claude.com/docs/id/tools-reference.md) dan tool MCP yang tersedia di percakapan utama, yang dipersempit oleh dua filter: filter pertama menghapus daftar pendek tool dari setiap subagent, dan filter kedua mengurangi kumpulan tool bawaan untuk subagent yang berjalan di [latar belakang](#run-subagents-in-foreground-or-background), yang merupakan default. Di macOS, Linux, dan WSL, subagent juga dapat menerima tool Glob dan Grep ketika percakapan utama tidak memilikinya, seperti dijelaskan di [Perilaku tool Glob](https://code.claude.com/docs/id/tools-reference.md#glob-tool-behavior). [Fork](#fork-the-current-conversation) melewati kedua filter dan menerima kumpulan tool yang persis sama dengan percakapan utama. Filter pertama menghapus tool berikut, bahkan ketika tercantum di field `tools`:443Subagent mewarisi [tool bawaan](https://code.claude.com/docs/id/tools-reference.md) dan tool MCP yang tersedia di percakapan utama, yang dipersempit oleh dua filter. Filter pertama menghapus daftar pendek tool dari setiap subagent. Filter kedua mengurangi kumpulan tool bawaan untuk subagent yang berjalan di [latar belakang](#run-subagents-in-foreground-or-background), yang merupakan default.

444 

445Di macOS, Linux, dan WSL, subagent juga dapat menerima tool Glob dan Grep ketika percakapan utama tidak memilikinya, seperti dijelaskan di [Perilaku tool Glob](https://code.claude.com/docs/id/tools-reference.md#glob-tool-behavior). [Fork](#fork-the-current-conversation) melewati kedua filter dan menerima kumpulan tool yang persis sama dengan percakapan induknya. Filter pertama menghapus tool berikut, bahkan ketika tercantum di field `tools`:

430 446 

431* `Agent`, ketika subagent berada pada [batas kedalaman](#let-subagents-spawn-their-own-subagents); dalam [fork](#fork-the-current-conversation) tool tetap tercantum tetapi mengembalikan error alih-alih memunculkan subagent447* `Agent`, ketika subagent berada pada [batas kedalaman](#let-subagents-spawn-their-own-subagents); dalam [fork](#fork-the-current-conversation) tool tetap tercantum tetapi mengembalikan error alih-alih memunculkan subagent

432* `AskUserQuestion`448* `AskUserQuestion`


1077 1093 

1078Dengan nilai ini, subagent Anda dapat mendelegasikan ke lapisan kedua mereka sendiri, dan lapisan kedua itu tidak dapat mendelegasikan lebih lanjut. Atur `1` untuk mematikan nesting.1094Dengan nilai ini, subagent Anda dapat mendelegasikan ke lapisan kedua mereka sendiri, dan lapisan kedua itu tidak dapat mendelegasikan lebih lanjut. Atur `1` untuk mematikan nesting.

1079 1095 

1080Subagent bersarang dikonfigurasi dengan cara yang sama seperti subagent tingkat atas dan diselesaikan dari [cakupan](#choose-the-subagent-scope) yang sama. Untuk menjaga satu subagent agar tidak menghasilkan sementara nesting aktif, seperti reviewer yang harus tetap read-only, hilangkan `Agent` dari daftar [`tools`](#available-tools) atau tambahkan ke `disallowedTools`.1096Definisikan subagent bersarang dalam [cakupan](#choose-the-subagent-scope) yang sama seperti subagent tingkat atas. Secara default, subagent bersarang yang Anda definisikan berjalan pada [model subagent yang menghasilkannya](#which-model-a-nested-subagent-runs-on). Untuk menjaga satu subagent agar tidak menghasilkan sementara nesting aktif, seperti reviewer yang harus tetap read-only, hilangkan `Agent` dari daftar [`tools`](#available-tools) atau tambahkan ke `disallowedTools`.

1081 1097 

1082Dalam 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`.1098Dalam 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`.

1083 1099 


1221>1237>

1222> Ketika [tampilan agent dimatikan](https://code.claude.com/docs/id/agent-view.md#turn-off-agent-view), `/subtask` tidak tersedia dan `/fork` memulai subagent yang di-fork sebagai gantinya; jika tidak, `/fork` menyalin seluruh sesi ke [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md#from-inside-a-session) baru.1238> Ketika [tampilan agent dimatikan](https://code.claude.com/docs/id/agent-view.md#turn-off-agent-view), `/subtask` tidak tersedia dan `/fork` memulai subagent yang di-fork sebagai gantinya; jika tidak, `/fork` menyalin seluruh sesi ke [sesi latar belakang](https://code.claude.com/docs/id/agent-view.md#from-inside-a-session) baru.

1223 1239 

1224Fork adalah subagent yang mewarisi seluruh percakapan sejauh ini daripada memulai segar. Ini menghilangkan isolasi input yang sebaliknya disediakan subagent: fork melihat prompt sistem yang sama, alat, model, dan riwayat pesan sebagai sesi utama, sehingga Anda dapat menyerahkan tugas sampingan tanpa menjelaskan situasinya lagi. Panggilan alat fork sendiri masih tetap keluar dari percakapan Anda dan hanya hasil akhirnya yang kembali, sehingga jendela konteks utama Anda tetap bersih. Gunakan fork ketika subagent lain mana pun memerlukan terlalu banyak latar belakang untuk berguna, atau ketika Anda ingin mencoba beberapa pendekatan secara paralel dari titik awal yang sama.1240Fork adalah subagent yang mewarisi seluruh percakapan sejauh ini daripada memulai dari awal. Gunakan fork ketika subagent lain mana pun memerlukan terlalu banyak latar belakang untuk berguna, atau ketika Anda ingin mencoba beberapa pendekatan secara paralel dari titik awal yang sama.

1241 

1242* **Input**: fork melihat system prompt, tool, [model](#which-model-a-nested-subagent-runs-on), dan riwayat pesan yang sama dengan percakapan induknya

1243* **Output**: panggilan tool milik fork sendiri tetap berada di luar percakapan induknya dan hanya hasil akhirnya yang kembali

1225 1244 

1226Claude dapat memulai fork sendiri selama mode fork aktif, sebagaimana halnya secara default. Untuk menghentikan fork, lihat [Nonaktifkan mode fork](#turn-fork-mode-on-or-off).1245Claude dapat memulai fork sendiri selama mode fork aktif, sebagaimana halnya secara default. Untuk menghentikan fork, lihat [Nonaktifkan mode fork](#turn-fork-mode-on-or-off).

1227 1246 


1257 1276 

1258### Bagaimana fork berbeda dari subagent lainnya1277### Bagaimana fork berbeda dari subagent lainnya

1259 1278 

1260Fork mewarisi segalanya yang dimiliki sesi utama pada saat spawn. Subagent lainnya dimulai segar dari definisinya.

1261 

1262| | Fork | Subagent non-fork |1279| | Fork | Subagent non-fork |

1263| :- | :- | :- |1280| :- | :- | :- |

1264| Konteks | Riwayat percakapan lengkap | Konteks segar dengan prompt yang Anda lewatkan |1281| Konteks | Riwayat percakapan lengkap | Konteks segar dengan prompt yang Anda lewatkan |

1265| Prompt sistem dan alat | Sama dengan sesi utama | Dari [file definisi](#write-subagent-files) subagent, [disaring untuk run latar belakang](#available-tools) |1282| System prompt dan tool | Sama dengan percakapan induk | Dari [file definisi](#write-subagent-files) subagent, [disaring untuk run latar belakang](#available-tools) |

1266| Model | Sama dengan sesi utama | Dari bidang `model` subagent |1283| Model | Sama dengan [percakapan induk](#which-model-a-nested-subagent-runs-on) | Mengikuti [urutan model subagent](#choose-a-model) |

1267| Prompt cache | Dibagikan dengan sesi utama | Cache terpisah |1284| Prompt cache | Dibagikan dengan percakapan induk | Cache terpisah |

1268 1285 

1269Karena system prompt fork dan definisi tool identik dengan induk, permintaan pertamanya menggunakan kembali [prompt cache](https://code.claude.com/docs/id/prompt-caching.md#subagents-and-the-cache) induk. Karena penggunaan kembali tersebut, fork lebih murah daripada subagent segar untuk tugas yang memerlukan konteks yang sama.1286Karena system prompt fork dan definisi tool identik dengan induk, permintaan pertamanya menggunakan kembali [prompt cache](https://code.claude.com/docs/id/prompt-caching.md#subagents-and-the-cache) induk. Karena penggunaan kembali tersebut, fork lebih murah daripada subagent segar untuk tugas yang memerlukan konteks yang sama.

1270 1287 

workflows.md +1 −1

Details

454* Periksa `/model` sebelum run besar jika Anda biasanya beralih ke model yang lebih kecil untuk pekerjaan rutin454* Periksa `/model` sebelum run besar jika Anda biasanya beralih ke model yang lebih kecil untuk pekerjaan rutin

455* Minta Claude untuk menggunakan model yang lebih kecil untuk tahap yang tidak memerlukan yang terkuat saat Anda menjelaskan tugas455* Minta Claude untuk menggunakan model yang lebih kecil untuk tahap yang tidak memerlukan yang terkuat saat Anda menjelaskan tugas

456 456 

457Ketika [`availableModels` allowlist](https://code.claude.com/docs/id/model-config#restrict-model-selection) organisasi Anda memblokir model yang diminta skrip untuk agent, agent itu berjalan pada model pengganti, mengikuti [aturan substitusi yang sama seperti subagent](https://code.claude.com/docs/id/sub-agents.md#choose-a-model).457Ketika [`availableModels` allowlist](https://code.claude.com/docs/id/model-config#restrict-model-selection) organisasi Anda memblokir model yang diminta skrip untuk agent, agent itu berjalan pada model pengganti, mengikuti [aturan substitusi yang sama seperti subagent](https://code.claude.com/docs/id/sub-agents.md#when-an-allowlist-blocks-a-subagent-model).

458 458 

459### Tetapkan panduan ukuran459### Tetapkan panduan ukuran

460 460 

worktrees.md +4 −1

Details

232 232 

233Dengan [basis](#choose-the-base-branch) default `"fresh"`, worktree yang dibuka kembali akan di-reset ke branch default repositori alih-alih melanjutkan dari ujung lamanya jika semua kondisi berikut terpenuhi:233Dengan [basis](#choose-the-base-branch) default `"fresh"`, worktree yang dibuka kembali akan di-reset ke branch default repositori alih-alih melanjutkan dari ujung lamanya jika semua kondisi berikut terpenuhi:

234 234 

235* [Sandbox](https://code.claude.com/docs/id/sandboxing.md#filesystem-isolation) tidak membatasi penulisan file di sesi Anda, dan tidak ada file pengaturan `.claude` milik worktree maupun milik checkout utama yang mengaktifkan sandbox.

235* Worktree tidak memiliki perubahan yang belum di-commit atau file yang tidak dilacak.236* Worktree tidak memiliki perubahan yang belum di-commit atau file yang tidak dilacak.

236* Worktree masih berada di branch yang dibuat Claude Code untuknya.237* Worktree masih berada di branch yang dibuat Claude Code untuknya.

237* Worktree tidak memiliki commit sendiri, atau pull request atau merge request-nya sudah di-merge dan branch remote-nya sudah dihapus.238* Worktree tidak memiliki commit sendiri, atau pull request atau merge request-nya sudah di-merge dan branch remote-nya sudah dihapus.


240 241 

241Dalam semua kasus lainnya, Claude Code membuka kembali worktree pada ujung lamanya:242Dalam semua kasus lainnya, Claude Code membuka kembali worktree pada ujung lamanya:

242 243 

243* Worktree tidak memenuhi salah satu kondisi tersebut.244* Worktree atau sesi tidak memenuhi salah satu kondisi tersebut.

244* Claude Code tidak dapat memverifikasi status worktree.245* Claude Code tidak dapat memverifikasi status worktree.

245* `worktree.baseRef` bernilai `"head"`.246* `worktree.baseRef` bernilai `"head"`.

246* Nama tersebut merupakan referensi pull request atau merge request.247* Nama tersebut merupakan referensi pull request atau merge request.

247 248 

249Jika Anda menggunakan sandbox dengan basis `"fresh"`, jalankan `git fetch origin`, lalu berikan nama baru ke `--worktree` untuk memulai dari branch default terbaru.

250 

248### Mengganti pembuatan worktree dengan hook251### Mengganti pembuatan worktree dengan hook

249 252 

250Konfigurasikan [hook `WorktreeCreate`](https://code.claude.com/docs/id/hooks#worktreecreate) untuk sepenuhnya mengganti logika `git worktree` default, termasuk menempatkan worktree di lokasi selain `.claude/worktrees/`. Untuk contoh lengkap, lihat [Kontrol versi non-git](#non-git-version-control).253Konfigurasikan [hook `WorktreeCreate`](https://code.claude.com/docs/id/hooks#worktreecreate) untuk sepenuhnya mengganti logika `git worktree` default, termasuk menempatkan worktree di lokasi selain `.claude/worktrees/`. Untuk contoh lengkap, lihat [Kontrol versi non-git](#non-git-version-control).